iUpdate 3rd party libs - clic - Clic is an command line interactive client for gopher written in Common LISP Err bitreich.org 70 hgit clone git://bitreich.org/clic/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/clic/ URL:git://bitreich.org/clic/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/clic/ bitreich.org 70 1Log /scm/clic/log.gph bitreich.org 70 1Files /scm/clic/files.gph bitreich.org 70 1Refs /scm/clic/refs.gph bitreich.org 70 1Tags /scm/clic/tag bitreich.org 70 1README /scm/clic/file/README.md.gph bitreich.org 70 1LICENSE /scm/clic/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 69ab9eb1f725de700f5a1b740c488a9692fd10e2 /scm/clic/commit/69ab9eb1f725de700f5a1b740c488a9692fd10e2.gph bitreich.org 70 1parent 38eb1e4a49bd594bd6108c0beec5fb3afa09e8fd /scm/clic/commit/38eb1e4a49bd594bd6108c0beec5fb3afa09e8fd.gph bitreich.org 70 hAuthor: Solene Rapenne URL:mailto:solene@perso.pw bitreich.org 70 iDate: Wed, 3 Jun 2020 10:36:53 +0200 Err bitreich.org 70 i Err bitreich.org 70 iUpdate 3rd party libs Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M 3rdparties/bundle-info.sexp | 14 +++++++------- Err bitreich.org 70 i D 3rdparties/software/alexandria-201… | 13 ------------- Err bitreich.org 70 i D 3rdparties/software/alexandria-201… | 4 ---- Err bitreich.org 70 i D 3rdparties/software/alexandria-201… | 10 ---------- Err bitreich.org 70 i D 3rdparties/software/alexandria-201… | 37 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/alexandria-201… | 52 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/alexandria-201… | 11 ----------- Err bitreich.org 70 i D 3rdparties/software/alexandria-201… | 62 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/alexandria-201… | 18 ------------------ Err bitreich.org 70 i D 3rdparties/software/alexandria-201… | 93 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/alexandria-201… | 92 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/alexandria-201… | 106 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/alexandria-201… | 37 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/alexandria-201… | 3 --- Err bitreich.org 70 i D 3rdparties/software/alexandria-201… | 28 ---------------------------- Err bitreich.org 70 i D 3rdparties/software/alexandria-201… | 277 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/alexandria-201… | 881 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/alexandria-201… | 14 -------------- Err bitreich.org 70 i D 3rdparties/software/alexandria-201… | 161 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/alexandria-201… | 101 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/alexandria-201… | 172 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/alexandria-201… | 367 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/alexandria-201… | 314 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/alexandria-201… | 260 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/alexandria-201… | 244 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/alexandria-201… | 555 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/alexandria-201… | 6 ------ Err bitreich.org 70 i D 3rdparties/software/alexandria-201… | 65 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/alexandria-201… | 2047 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/alexandria-201… | 137 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 31 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 20 -------------------- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 27 --------------------------- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 34 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 19 ------------------- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 38 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 42 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 59 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 31 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 105 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 20 -------------------- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 27 --------------------------- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 250 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 43 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 119 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 81 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 49 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 71 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 184 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 1087 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 767 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 577 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 881 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 503 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 88 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 2226 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 17637 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 115 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 82 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 436 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 353 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 212 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 212 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 43 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 2 -- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 212 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 37 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 45 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 911 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 0 Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 0 Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 212 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 0 Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 0 Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 212 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 212 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/babel-20171227… | 212 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/bordeaux-threa… | 46 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/bordeaux-threa… | 19 ------------------- Err bitreich.org 70 i D 3rdparties/software/bordeaux-threa… | 20 -------------------- Err bitreich.org 70 i D 3rdparties/software/bordeaux-threa… | 2 -- Err bitreich.org 70 i D 3rdparties/software/bordeaux-threa… | 74 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/bordeaux-threa… | 55 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/bordeaux-threa… | 86 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/bordeaux-threa… | 170 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/bordeaux-threa… | 38 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/bordeaux-threa… | 361 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/bordeaux-threa… | 150 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/bordeaux-threa… | 143 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/bordeaux-threa… | 105 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/bordeaux-threa… | 130 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/bordeaux-threa… | 161 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/bordeaux-threa… | 26 -------------------------- Err bitreich.org 70 i D 3rdparties/software/bordeaux-threa… | 111 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/bordeaux-threa… | 136 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/bordeaux-threa… | 144 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/bordeaux-threa… | 143 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/bordeaux-threa… | 68 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/bordeaux-threa… | 109 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/bordeaux-threa… | 3 --- Err bitreich.org 70 i D 3rdparties/software/bordeaux-threa… | 130 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/bordeaux-threa… | 103 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/bordeaux-threa… | 66 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/bordeaux-threa… | 251 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/bordeaux-threa… | 2 -- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/.g… | 28 ---------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/.t… | 38 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/CO… | 21 --------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/HE… | 28 ---------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/Ma… | 72 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/RE… | 19 ------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/TO… | 115 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/cf… | 37 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/cf… | 41 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/cf… | 48 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/cf… | 91 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/cf… | 48 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/cf… | 41 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/cf… | 101 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/do… | 46 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/do… | 132 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/do… | 7113 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/do… | 334 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/do… | 1058 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/do… | 313 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/do… | 259 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/do… | 75 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/do… | 44 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/do… | 48 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/ex… | 78 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/ex… | 51 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/ex… | 93 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/ex… | 20 -------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/ex… | 17 ----------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/ex… | 76 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/ex… | 30 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/ex… | 39 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/ex… | 88 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/ex… | 20 -------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/gr… | 152 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/gr… | 57 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/gr… | 913 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/gr… | 36 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/li… | 132 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/li… | 43 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/li… | 109 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/li… | 38 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/li… | 106 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/sc… | 248 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/sr… | 211 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/sr… | 194 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/sr… | 838 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/sr… | 54 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/sr… | 664 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/sr… | 446 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/sr… | 201 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/sr… | 432 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/sr… | 384 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/sr… | 331 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/sr… | 454 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/sr… | 313 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/sr… | 417 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/sr… | 396 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/sr… | 342 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/sr… | 314 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/sr… | 408 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/sr… | 322 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/sr… | 713 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/sr… | 369 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/sr… | 111 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/sr… | 90 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/sr… | 441 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/sr… | 457 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/sr… | 181 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/sr… | 305 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/sr… | 133 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/sr… | 1051 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/sr… | 84 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/te… | 98 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/te… | 2 -- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/te… | 71 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/te… | 148 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/te… | 526 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/te… | 9 --------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/te… | 536 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/te… | 231 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/te… | 309 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/te… | 199 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/te… | 245 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/te… | 96 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/te… | 179 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/te… | 985 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/te… | 50 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/te… | 657 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/te… | 296 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/te… | 132 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/te… | 33 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/te… | 246 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/te… | 44 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/te… | 150 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/te… | 705 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/te… | 42 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/te… | 9 --------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/te… | 52 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/to… | 565 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/to… | 392 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/to… | 46 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/to… | 95 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/uf… | 664 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cffi_0.20.0/uf… | 3 --- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 4 ---- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 50 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 31 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 3 --- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 4 ---- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 26 -------------------------- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 48 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 31 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 110 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 72 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 464 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 140 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 321 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 127 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 22 ---------------------- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 16 ---------------- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 53 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 26 -------------------------- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 825 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 66 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 33 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 77 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 480 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 109 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 224 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 166 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 409 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 46 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 0 Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 0 Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 0 Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 0 Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 0 Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 0 Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 0 Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 0 Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 11 ----------- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 12 ------------ Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 18 ------------------ Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 13 ------------- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 44 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 3 --- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 89 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 100 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 3 --- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 42 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 89 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/cl+ssl-2019020… | 31 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 297 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 13 ------------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 36 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 62 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 108 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 468 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 0 Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 1119 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 282 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 389 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 79 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 442 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 289 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 111 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 53 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 36 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 469 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 77 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 82 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 162 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 90 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 199 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 241 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 82 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 5 ----- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 2 -- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 68 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 68 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 2 -- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 68 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 68 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 2 -- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 11 ----------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 11 ----------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 2 -- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 11 ----------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 11 ----------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 2 -- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 11 ----------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 11 ----------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 41 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 2 -- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 6 ------ Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 6 ------ Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 2 -- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 6 ------ Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 6 ------ Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 737 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 2 -- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 96 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 96 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 2 -- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 96 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 96 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 0 Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 0 Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 0 Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 0 Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 0 Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 0 Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 0 Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 0 Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 0 Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 0 Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 0 Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 0 Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 2 -- Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 212 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 212 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/flexi-streams-… | 206 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/split-sequence… | 21 --------------------- Err bitreich.org 70 i D 3rdparties/software/split-sequence… | 109 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/split-sequence… | 23 ----------------------- Err bitreich.org 70 i D 3rdparties/software/split-sequence… | 172 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/split-sequence… | 38 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/split-sequence… | 2 -- Err bitreich.org 70 i D 3rdparties/software/trivial-featur… | 30 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/trivial-featur… | 21 --------------------- Err bitreich.org 70 i D 3rdparties/software/trivial-featur… | 32 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/trivial-featur… | 86 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/trivial-featur… | 247 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/trivial-featur… | 47 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/trivial-featur… | 49 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/trivial-featur… | 36 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/trivial-featur… | 72 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/trivial-featur… | 44 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/trivial-featur… | 39 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/trivial-featur… | 55 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/trivial-featur… | 58 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/trivial-featur… | 41 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/trivial-featur… | 49 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/trivial-featur… | 40 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/trivial-featur… | 47 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/trivial-featur… | 51 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/trivial-featur… | 47 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/trivial-featur… | 39 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/trivial-featur… | 34 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/trivial-featur… | 49 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/trivial-featur… | 130 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/trivial-featur… | 36 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/trivial-featur… | 50 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/trivial-featur… | 57 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/trivial-garbag… | 4 ---- Err bitreich.org 70 i D 3rdparties/software/trivial-garbag… | 26 -------------------------- Err bitreich.org 70 i D 3rdparties/software/trivial-garbag… | 12 ------------ Err bitreich.org 70 i D 3rdparties/software/trivial-garbag… | 1 - Err bitreich.org 70 i D 3rdparties/software/trivial-garbag… | 178 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/trivial-garbag… | 15 --------------- Err bitreich.org 70 i D 3rdparties/software/trivial-garbag… | 250 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/trivial-garbag… | 133 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/trivial-garbag… | 29 ----------------------------- Err bitreich.org 70 i D 3rdparties/software/trivial-garbag… | 404 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/uiop-3.3.2/REA… | 217 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/uiop-3.3.2/asd… | 2 -- Err bitreich.org 70 i D 3rdparties/software/uiop-3.3.2/bac… | 68 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/uiop-3.3.2/com… | 219 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/uiop-3.3.2/con… | 413 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/uiop-3.3.2/deb… | 118 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/uiop-3.3.2/dri… | 19 ------------------- Err bitreich.org 70 i D 3rdparties/software/uiop-3.3.2/fil… | 681 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/uiop-3.3.2/ima… | 483 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/uiop-3.3.2/lau… | 682 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/uiop-3.3.2/lis… | 800 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/uiop-3.3.2/os.… | 403 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/uiop-3.3.2/pac… | 742 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/uiop-3.3.2/pat… | 741 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/uiop-3.3.2/run… | 578 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/uiop-3.3.2/str… | 718 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/uiop-3.3.2/uio… | 50 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/uiop-3.3.2/uti… | 652 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/uiop-3.3.2/ver… | 181 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 1 - Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 187 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 35 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 25 ------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 144 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 5 ----- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 1 - Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 440 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 225 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 716 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 73 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 295 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 152 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 265 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 986 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 269 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 159 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 270 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 876 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 270 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 234 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 18 ------------------ Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 75 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 73 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 46 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 60 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 38 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 69 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 136 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 20 -------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 41 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 27 --------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 114 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 29 ----------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 347 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 103 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 111 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 10 ---------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 27 --------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 123 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 178 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 139 ------------------------------ Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 14 -------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 25 ------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 45 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 705 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 146 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 506 ------------------------------- Err bitreich.org 70 i D 3rdparties/software/usocket-0.7.1/… | 1 - Err bitreich.org 70 i M 3rdparties/system-index.txt | 50 ++++++++++++++++---------------- Err bitreich.org 70 i Err bitreich.org 70 i439 files changed, 32 insertions(+), 99869 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/3rdparties/bundle-info.sexp b/3rdparties/bundle-info.sexp /scm/clic/file/3rdparties/bundle-info.sexp.gph bitreich.org 70 i@@ -1,10 +1,10 @@ Err bitreich.org 70 i-(:CREATION-TIME "2019-03-01T11:39:38Z" :REQUESTED-SYSTEMS Err bitreich.org 70 i+(:CREATION-TIME "2020-06-03T07:34:37Z" :REQUESTED-SYSTEMS Err bitreich.org 70 i ("usocket" "cl+ssl" "asdf") :LISP-INFO Err bitreich.org 70 i- (:MACHINE-INSTANCE "solene.perso.local" :MACHINE-TYPE "amd64" :MACHINE-VERSION Err bitreich.org 70 i- NIL :LISP-IMPLEMENTATION-TYPE "ECL" :LISP-IMPLEMENTATION-VERSION "16.1.3") Err bitreich.org 70 i+ (:MACHINE-INSTANCE "t400.lan" :MACHINE-TYPE "amd64" :MACHINE-VERSION NIL Err bitreich.org 70 i+ :LISP-IMPLEMENTATION-TYPE "ECL" :LISP-IMPLEMENTATION-VERSION "20.4.24") Err bitreich.org 70 i :QUICKLISP-INFO Err bitreich.org 70 i- (:HOME "/home/solene/.eclquicklisp/" :LOCAL-PROJECT-DIRECTORIES Err bitreich.org 70 i- ("/home/solene/.eclquicklisp/local-projects/") :DISTS Err bitreich.org 70 i+ (:HOME "/home/solene/quicklisp/" :LOCAL-PROJECT-DIRECTORIES Err bitreich.org 70 i+ ("/home/solene/quicklisp/local-projects/") :DISTS Err bitreich.org 70 i ((:NAME "quicklisp" :DIST-URL Err bitreich.org 70 i- "http://beta.quicklisp.org/dist/quicklisp/2019-02-02/distinfo.txt" :VERSION Err bitreich.org 70 i- "2019-02-02")))) Err bitreich.org 70 i+ "http://beta.quicklisp.org/dist/quicklisp/2020-04-27/distinfo.txt" :VERSION Err bitreich.org 70 i+ "2020-04-27")))) Err bitreich.org 70 1diff --git a/3rdparties/software/alexandria-20181210-git/.boring b/3rdparties/software/alexandria-20181210-git/.boring /scm/clic/file/3rdparties/software/alexandria-20181210-git/.boring.gph bitreich.org 70 i@@ -1,13 +0,0 @@ Err bitreich.org 70 i-# Boring file regexps: Err bitreich.org 70 i-~$ Err bitreich.org 70 i-^_darcs Err bitreich.org 70 i-^\{arch\} Err bitreich.org 70 i-^.arch-ids Err bitreich.org 70 i-\# Err bitreich.org 70 i-\.dfsl$ Err bitreich.org 70 i-\.ppcf$ Err bitreich.org 70 i-\.fasl$ Err bitreich.org 70 i-\.x86f$ Err bitreich.org 70 i-\.fas$ Err bitreich.org 70 i-\.lib$ Err bitreich.org 70 i-^public_html Err bitreich.org 70 1diff --git a/3rdparties/software/alexandria-20181210-git/.gitignore b/3rdparties/software/alexandria-20181210-git/.gitignore /scm/clic/file/3rdparties/software/alexandria-20181210-git/.gitignore.gph bitreich.org 70 i@@ -1,4 +0,0 @@ Err bitreich.org 70 i-*.fasl Err bitreich.org 70 i-*~ Err bitreich.org 70 i-\#* Err bitreich.org 70 i-*.patch Err bitreich.org 70 1diff --git a/3rdparties/software/alexandria-20181210-git/AUTHORS b/3rdparties/software/alexandria-20181210-git/AUTHORS /scm/clic/file/3rdparties/software/alexandria-20181210-git/AUTHORS.gph bitreich.org 70 i@@ -1,9 +0,0 @@ Err bitreich.org 70 i- Err bitreich.org 70 i-ACTA EST FABULA PLAUDITE Err bitreich.org 70 i- Err bitreich.org 70 i-Nikodemus Siivola Err bitreich.org 70 i-Attila Lendvai Err bitreich.org 70 i-Marco Baringer Err bitreich.org 70 i-Robert Strandh Err bitreich.org 70 i-Luis Oliveira Err bitreich.org 70 i-Tobias C. Rittweiler Err bitreich.org 70 i-\ No newline at end of file Err bitreich.org 70 1diff --git a/3rdparties/software/alexandria-20181210-git/LICENCE b/3rdparties/software/alexandria-20181210-git/LICENCE /scm/clic/file/3rdparties/software/alexandria-20181210-git/LICENCE.gph bitreich.org 70 i@@ -1,37 +0,0 @@ Err bitreich.org 70 i-Alexandria software and associated documentation are in the public Err bitreich.org 70 i-domain: Err bitreich.org 70 i- Err bitreich.org 70 i- Authors dedicate this work to public domain, for the benefit of the Err bitreich.org 70 i- public at large and to the detriment of the authors' heirs and Err bitreich.org 70 i- successors. Authors intends this dedication to be an overt act of Err bitreich.org 70 i- relinquishment in perpetuity of all present and future rights under Err bitreich.org 70 i- copyright law, whether vested or contingent, in the work. Authors Err bitreich.org 70 i- understands that such relinquishment of all rights includes the Err bitreich.org 70 i- relinquishment of all rights to enforce (by lawsuit or otherwise) Err bitreich.org 70 i- those copyrights in the work. Err bitreich.org 70 i- Err bitreich.org 70 i- Authors recognize that, once placed in the public domain, the work Err bitreich.org 70 i- may be freely reproduced, distributed, transmitted, used, modified, Err bitreich.org 70 i- built upon, or otherwise exploited by anyone for any purpose, Err bitreich.org 70 i- commercial or non-commercial, and in any way, including by methods Err bitreich.org 70 i- that have not yet been invented or conceived. Err bitreich.org 70 i- Err bitreich.org 70 i-In those legislations where public domain dedications are not Err bitreich.org 70 i-recognized or possible, Alexandria is distributed under the following Err bitreich.org 70 i-terms and conditions: Err bitreich.org 70 i- Err bitreich.org 70 i- Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i- obtaining a copy of this software and associated documentation files Err bitreich.org 70 i- (the "Software"), to deal in the Software without restriction, Err bitreich.org 70 i- including without limitation the rights to use, copy, modify, merge, Err bitreich.org 70 i- publish, distribute, sublicense, and/or sell copies of the Software, Err bitreich.org 70 i- and to permit persons to whom the Software is furnished to do so, Err bitreich.org 70 i- subject to the following conditions: Err bitreich.org 70 i- Err bitreich.org 70 i- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. Err bitreich.org 70 i- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY Err bitreich.org 70 i- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, Err bitreich.org 70 i- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE Err bitreich.org 70 i- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Err bitreich.org 70 1diff --git a/3rdparties/software/alexandria-20181210-git/README b/3rdparties/software/alexandria-20181210-git/README /scm/clic/file/3rdparties/software/alexandria-20181210-git/README.gph bitreich.org 70 i@@ -1,52 +0,0 @@ Err bitreich.org 70 i-Alexandria is a collection of portable public domain utilities that Err bitreich.org 70 i-meet the following constraints: Err bitreich.org 70 i- Err bitreich.org 70 i- * Utilities, not extensions: Alexandria will not contain conceptual Err bitreich.org 70 i- extensions to Common Lisp, instead limiting itself to tools and Err bitreich.org 70 i- utilities that fit well within the framework of standard ANSI Err bitreich.org 70 i- Common Lisp. Test-frameworks, system definitions, logging Err bitreich.org 70 i- facilities, serialization layers, etc. are all outside the scope of Err bitreich.org 70 i- Alexandria as a library, though well within the scope of Alexandria Err bitreich.org 70 i- as a project. Err bitreich.org 70 i- Err bitreich.org 70 i- * Conservative: Alexandria limits itself to what project members Err bitreich.org 70 i- consider conservative utilities. Alexandria does not and will not Err bitreich.org 70 i- include anaphoric constructs, loop-like binding macros, etc. Err bitreich.org 70 i- Err bitreich.org 70 i- * Portable: Alexandria limits itself to portable parts of Common Err bitreich.org 70 i- Lisp. Even apparently conservative and useful functions remain Err bitreich.org 70 i- outside the scope of Alexandria if they cannot be implemented Err bitreich.org 70 i- portably. Portability is here defined as portable within a Err bitreich.org 70 i- conforming implementation: implementation bugs are not considered Err bitreich.org 70 i- portability issues. Err bitreich.org 70 i- Err bitreich.org 70 i-Homepage: Err bitreich.org 70 i- Err bitreich.org 70 i- http://common-lisp.net/project/alexandria/ Err bitreich.org 70 i- Err bitreich.org 70 i-Mailing lists: Err bitreich.org 70 i- Err bitreich.org 70 i- http://lists.common-lisp.net/mailman/listinfo/alexandria-devel Err bitreich.org 70 i- http://lists.common-lisp.net/mailman/listinfo/alexandria-cvs Err bitreich.org 70 i- Err bitreich.org 70 i-Repository: Err bitreich.org 70 i- Err bitreich.org 70 i- git://common-lisp.net/projects/alexandria/alexandria.git Err bitreich.org 70 i- Err bitreich.org 70 i-Documentation: Err bitreich.org 70 i- Err bitreich.org 70 i- http://common-lisp.net/project/alexandria/draft/alexandria.html Err bitreich.org 70 i- Err bitreich.org 70 i- (To build docs locally: cd doc && make html pdf info) Err bitreich.org 70 i- Err bitreich.org 70 i-Patches: Err bitreich.org 70 i- Err bitreich.org 70 i- Patches are always welcome! Please send them to the mailing list as Err bitreich.org 70 i- attachments, generated by "git format-patch -1". Err bitreich.org 70 i- Err bitreich.org 70 i- Patches should include a commit message that explains what's being Err bitreich.org 70 i- done and /why/, and when fixing a bug or adding a feature you should Err bitreich.org 70 i- also include a test-case. Err bitreich.org 70 i- Err bitreich.org 70 i- Be advised though that right now new features are unlikely to be Err bitreich.org 70 i- accepted until 1.0 is officially out of the door. Err bitreich.org 70 1diff --git a/3rdparties/software/alexandria-20181210-git/alexandria-tests.asd b/3rdparties/software/alexandria-20181210-git/alexandria-tests.asd /scm/clic/file/3rdparties/software/alexandria-20181210-git/alexandria-tests.asd.gph bitreich.org 70 i@@ -1,11 +0,0 @@ Err bitreich.org 70 i-(defsystem "alexandria-tests" Err bitreich.org 70 i- :licence "Public Domain / 0-clause MIT" Err bitreich.org 70 i- :description "Tests for Alexandria, which is a collection of portable public domain utilities." Err bitreich.org 70 i- :author "Nikodemus Siivola , and others." Err bitreich.org 70 i- :depends-on (:alexandria #+sbcl :sb-rt #-sbcl :rt) Err bitreich.org 70 i- :components ((:file "tests")) Err bitreich.org 70 i- :perform (test-op (o c) Err bitreich.org 70 i- (flet ((run-tests (&rest args) Err bitreich.org 70 i- (apply (intern (string '#:run-tests) '#:alexandria-tests) args))) Err bitreich.org 70 i- (run-tests :compiled nil) Err bitreich.org 70 i- (run-tests :compiled t)))) Err bitreich.org 70 1diff --git a/3rdparties/software/alexandria-20181210-git/alexandria.asd b/3rdparties/software/alexandria-20181210-git/alexandria.asd /scm/clic/file/3rdparties/software/alexandria-20181210-git/alexandria.asd.gph bitreich.org 70 i@@ -1,62 +0,0 @@ Err bitreich.org 70 i-(defsystem "alexandria" Err bitreich.org 70 i- :version "0.0.0" Err bitreich.org 70 i- :licence "Public Domain / 0-clause MIT" Err bitreich.org 70 i- :description "Alexandria is a collection of portable public domain utilities." Err bitreich.org 70 i- :author "Nikodemus Siivola , and others." Err bitreich.org 70 i- :long-description Err bitreich.org 70 i- "Alexandria is a project and a library. Err bitreich.org 70 i- Err bitreich.org 70 i-As a project Alexandria's goal is to reduce duplication of effort and improve Err bitreich.org 70 i-portability of Common Lisp code according to its own idiosyncratic and rather Err bitreich.org 70 i-conservative aesthetic. What this actually means is open to debate, but each Err bitreich.org 70 i-project member has a veto on all project activities, so a degree of Err bitreich.org 70 i-conservativism is inevitable. Err bitreich.org 70 i- Err bitreich.org 70 i-As a library Alexandria is one of the means by which the project strives for Err bitreich.org 70 i-its goals. Err bitreich.org 70 i- Err bitreich.org 70 i-Alexandria is a collection of portable public domain utilities that meet Err bitreich.org 70 i-the following constraints: Err bitreich.org 70 i- Err bitreich.org 70 i- * Utilities, not extensions: Alexandria will not contain conceptual Err bitreich.org 70 i- extensions to Common Lisp, instead limiting itself to tools and utilities Err bitreich.org 70 i- that fit well within the framework of standard ANSI Common Lisp. Err bitreich.org 70 i- Test-frameworks, system definitions, logging facilities, serialization Err bitreich.org 70 i- layers, etc. are all outside the scope of Alexandria as a library, though Err bitreich.org 70 i- well within the scope of Alexandria as a project. Err bitreich.org 70 i- Err bitreich.org 70 i- * Conservative: Alexandria limits itself to what project members consider Err bitreich.org 70 i- conservative utilities. Alexandria does not and will not include anaphoric Err bitreich.org 70 i- constructs, loop-like binding macros, etc. Err bitreich.org 70 i- Err bitreich.org 70 i- * Portable: Alexandria limits itself to portable parts of Common Lisp. Even Err bitreich.org 70 i- apparently conservative and useful functions remain outside the scope of Err bitreich.org 70 i- Alexandria if they cannot be implemented portably. Portability is here Err bitreich.org 70 i- defined as portable within a conforming implementation: implementation bugs Err bitreich.org 70 i- are not considered portability issues. Err bitreich.org 70 i- Err bitreich.org 70 i- * Team player: Alexandria will not (initially, at least) subsume or provide Err bitreich.org 70 i- functionality for which good-quality special-purpose packages exist, like Err bitreich.org 70 i- split-sequence. Instead, third party packages such as that may be Err bitreich.org 70 i- \"blessed\"." Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:static-file "LICENCE") Err bitreich.org 70 i- (:static-file "tests.lisp") Err bitreich.org 70 i- (:file "package") Err bitreich.org 70 i- (:file "definitions" :depends-on ("package")) Err bitreich.org 70 i- (:file "binding" :depends-on ("package")) Err bitreich.org 70 i- (:file "strings" :depends-on ("package")) Err bitreich.org 70 i- (:file "conditions" :depends-on ("package")) Err bitreich.org 70 i- (:file "io" :depends-on ("package" "macros" "lists" "types")) Err bitreich.org 70 i- (:file "macros" :depends-on ("package" "strings" "symbols")) Err bitreich.org 70 i- (:file "hash-tables" :depends-on ("package" "macros")) Err bitreich.org 70 i- (:file "control-flow" :depends-on ("package" "definitions" "macros")) Err bitreich.org 70 i- (:file "symbols" :depends-on ("package")) Err bitreich.org 70 i- (:file "functions" :depends-on ("package" "symbols" "macros")) Err bitreich.org 70 i- (:file "lists" :depends-on ("package" "functions")) Err bitreich.org 70 i- (:file "types" :depends-on ("package" "symbols" "lists")) Err bitreich.org 70 i- (:file "arrays" :depends-on ("package" "types")) Err bitreich.org 70 i- (:file "sequences" :depends-on ("package" "lists" "types")) Err bitreich.org 70 i- (:file "numbers" :depends-on ("package" "sequences")) Err bitreich.org 70 i- (:file "features" :depends-on ("package" "control-flow"))) Err bitreich.org 70 i- :in-order-to ((test-op (test-op "alexandria-tests")))) Err bitreich.org 70 1diff --git a/3rdparties/software/alexandria-20181210-git/arrays.lisp b/3rdparties/software/alexandria-20181210-git/arrays.lisp /scm/clic/file/3rdparties/software/alexandria-20181210-git/arrays.lisp.gph bitreich.org 70 i@@ -1,18 +0,0 @@ Err bitreich.org 70 i-(in-package :alexandria) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun copy-array (array &key (element-type (array-element-type array)) Err bitreich.org 70 i- (fill-pointer (and (array-has-fill-pointer-p array) Err bitreich.org 70 i- (fill-pointer array))) Err bitreich.org 70 i- (adjustable (adjustable-array-p array))) Err bitreich.org 70 i- "Returns an undisplaced copy of ARRAY, with same fill-pointer and Err bitreich.org 70 i-adjustability (if any) as the original, unless overridden by the keyword Err bitreich.org 70 i-arguments." Err bitreich.org 70 i- (let* ((dimensions (array-dimensions array)) Err bitreich.org 70 i- (new-array (make-array dimensions Err bitreich.org 70 i- :element-type element-type Err bitreich.org 70 i- :adjustable adjustable Err bitreich.org 70 i- :fill-pointer fill-pointer))) Err bitreich.org 70 i- (dotimes (i (array-total-size array)) Err bitreich.org 70 i- (setf (row-major-aref new-array i) Err bitreich.org 70 i- (row-major-aref array i))) Err bitreich.org 70 i- new-array)) Err bitreich.org 70 1diff --git a/3rdparties/software/alexandria-20181210-git/binding.lisp b/3rdparties/software/alexandria-20181210-git/binding.lisp /scm/clic/file/3rdparties/software/alexandria-20181210-git/binding.lisp.gph bitreich.org 70 i@@ -1,93 +0,0 @@ Err bitreich.org 70 i-(in-package :alexandria) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro if-let (bindings &body (then-form &optional else-form)) Err bitreich.org 70 i- "Creates new variable bindings, and conditionally executes either Err bitreich.org 70 i-THEN-FORM or ELSE-FORM. ELSE-FORM defaults to NIL. Err bitreich.org 70 i- Err bitreich.org 70 i-BINDINGS must be either single binding of the form: Err bitreich.org 70 i- Err bitreich.org 70 i- (variable initial-form) Err bitreich.org 70 i- Err bitreich.org 70 i-or a list of bindings of the form: Err bitreich.org 70 i- Err bitreich.org 70 i- ((variable-1 initial-form-1) Err bitreich.org 70 i- (variable-2 initial-form-2) Err bitreich.org 70 i- ... Err bitreich.org 70 i- (variable-n initial-form-n)) Err bitreich.org 70 i- Err bitreich.org 70 i-All initial-forms are executed sequentially in the specified order. Then all Err bitreich.org 70 i-the variables are bound to the corresponding values. Err bitreich.org 70 i- Err bitreich.org 70 i-If all variables were bound to true values, the THEN-FORM is executed with the Err bitreich.org 70 i-bindings in effect, otherwise the ELSE-FORM is executed with the bindings in Err bitreich.org 70 i-effect." Err bitreich.org 70 i- (let* ((binding-list (if (and (consp bindings) (symbolp (car bindings))) Err bitreich.org 70 i- (list bindings) Err bitreich.org 70 i- bindings)) Err bitreich.org 70 i- (variables (mapcar #'car binding-list))) Err bitreich.org 70 i- `(let ,binding-list Err bitreich.org 70 i- (if (and ,@variables) Err bitreich.org 70 i- ,then-form Err bitreich.org 70 i- ,else-form)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro when-let (bindings &body forms) Err bitreich.org 70 i- "Creates new variable bindings, and conditionally executes FORMS. Err bitreich.org 70 i- Err bitreich.org 70 i-BINDINGS must be either single binding of the form: Err bitreich.org 70 i- Err bitreich.org 70 i- (variable initial-form) Err bitreich.org 70 i- Err bitreich.org 70 i-or a list of bindings of the form: Err bitreich.org 70 i- Err bitreich.org 70 i- ((variable-1 initial-form-1) Err bitreich.org 70 i- (variable-2 initial-form-2) Err bitreich.org 70 i- ... Err bitreich.org 70 i- (variable-n initial-form-n)) Err bitreich.org 70 i- Err bitreich.org 70 i-All initial-forms are executed sequentially in the specified order. Then all Err bitreich.org 70 i-the variables are bound to the corresponding values. Err bitreich.org 70 i- Err bitreich.org 70 i-If all variables were bound to true values, then FORMS are executed as an Err bitreich.org 70 i-implicit PROGN." Err bitreich.org 70 i- (let* ((binding-list (if (and (consp bindings) (symbolp (car bindings))) Err bitreich.org 70 i- (list bindings) Err bitreich.org 70 i- bindings)) Err bitreich.org 70 i- (variables (mapcar #'car binding-list))) Err bitreich.org 70 i- `(let ,binding-list Err bitreich.org 70 i- (when (and ,@variables) Err bitreich.org 70 i- ,@forms)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro when-let* (bindings &body body) Err bitreich.org 70 i- "Creates new variable bindings, and conditionally executes BODY. Err bitreich.org 70 i- Err bitreich.org 70 i-BINDINGS must be either single binding of the form: Err bitreich.org 70 i- Err bitreich.org 70 i- (variable initial-form) Err bitreich.org 70 i- Err bitreich.org 70 i-or a list of bindings of the form: Err bitreich.org 70 i- Err bitreich.org 70 i- ((variable-1 initial-form-1) Err bitreich.org 70 i- (variable-2 initial-form-2) Err bitreich.org 70 i- ... Err bitreich.org 70 i- (variable-n initial-form-n)) Err bitreich.org 70 i- Err bitreich.org 70 i-Each INITIAL-FORM is executed in turn, and the variable bound to the Err bitreich.org 70 i-corresponding value. INITIAL-FORM expressions can refer to variables Err bitreich.org 70 i-previously bound by the WHEN-LET*. Err bitreich.org 70 i- Err bitreich.org 70 i-Execution of WHEN-LET* stops immediately if any INITIAL-FORM evaluates to NIL. Err bitreich.org 70 i-If all INITIAL-FORMs evaluate to true, then BODY is executed as an implicit Err bitreich.org 70 i-PROGN." Err bitreich.org 70 i- (let ((binding-list (if (and (consp bindings) (symbolp (car bindings))) Err bitreich.org 70 i- (list bindings) Err bitreich.org 70 i- bindings))) Err bitreich.org 70 i- (labels ((bind (bindings body) Err bitreich.org 70 i- (if bindings Err bitreich.org 70 i- `((let (,(car bindings)) Err bitreich.org 70 i- (when ,(caar bindings) Err bitreich.org 70 i- ,@(bind (cdr bindings) body)))) Err bitreich.org 70 i- body))) Err bitreich.org 70 i- `(let (,(car binding-list)) Err bitreich.org 70 i- (when ,(caar binding-list) Err bitreich.org 70 i- ,@(bind (cdr binding-list) body)))))) Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/alexandria-20181210-git/conditions.lisp b/3rdparties/software/alexandria-20181210-git/conditions.lisp /scm/clic/file/3rdparties/software/alexandria-20181210-git/conditions.lisp.gph bitreich.org 70 i@@ -1,91 +0,0 @@ Err bitreich.org 70 i-(in-package :alexandria) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun required-argument (&optional name) Err bitreich.org 70 i- "Signals an error for a missing argument of NAME. Intended for Err bitreich.org 70 i-use as an initialization form for structure and class-slots, and Err bitreich.org 70 i-a default value for required keyword arguments." Err bitreich.org 70 i- (error "Required argument ~@[~S ~]missing." name)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition simple-style-warning (simple-warning style-warning) Err bitreich.org 70 i- ()) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun simple-style-warning (message &rest args) Err bitreich.org 70 i- (warn 'simple-style-warning :format-control message :format-arguments args)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; We don't specify a :report for simple-reader-error to let the Err bitreich.org 70 i-;; underlying implementation report the line and column position for Err bitreich.org 70 i-;; us. Unfortunately this way the message from simple-error is not Err bitreich.org 70 i-;; displayed, unless there's special support for that in the Err bitreich.org 70 i-;; implementation. But even then it's still inspectable from the Err bitreich.org 70 i-;; debugger... Err bitreich.org 70 i-(define-condition simple-reader-error Err bitreich.org 70 i- #-sbcl(simple-error reader-error) Err bitreich.org 70 i- #+sbcl(sb-int:simple-reader-error) Err bitreich.org 70 i- ()) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun simple-reader-error (stream message &rest args) Err bitreich.org 70 i- (error 'simple-reader-error Err bitreich.org 70 i- :stream stream Err bitreich.org 70 i- :format-control message Err bitreich.org 70 i- :format-arguments args)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition simple-parse-error (simple-error parse-error) Err bitreich.org 70 i- ()) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun simple-parse-error (message &rest args) Err bitreich.org 70 i- (error 'simple-parse-error Err bitreich.org 70 i- :format-control message Err bitreich.org 70 i- :format-arguments args)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition simple-program-error (simple-error program-error) Err bitreich.org 70 i- ()) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun simple-program-error (message &rest args) Err bitreich.org 70 i- (error 'simple-program-error Err bitreich.org 70 i- :format-control message Err bitreich.org 70 i- :format-arguments args)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro ignore-some-conditions ((&rest conditions) &body body) Err bitreich.org 70 i- "Similar to CL:IGNORE-ERRORS but the (unevaluated) CONDITIONS Err bitreich.org 70 i-list determines which specific conditions are to be ignored." Err bitreich.org 70 i- `(handler-case Err bitreich.org 70 i- (progn ,@body) Err bitreich.org 70 i- ,@(loop for condition in conditions collect Err bitreich.org 70 i- `(,condition (c) (values nil c))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro unwind-protect-case ((&optional abort-flag) protected-form &body clauses) Err bitreich.org 70 i- "Like CL:UNWIND-PROTECT, but you can specify the circumstances that Err bitreich.org 70 i-the cleanup CLAUSES are run. Err bitreich.org 70 i- Err bitreich.org 70 i- clauses ::= (:NORMAL form*)* | (:ABORT form*)* | (:ALWAYS form*)* Err bitreich.org 70 i- Err bitreich.org 70 i-Clauses can be given in any order, and more than one clause can be Err bitreich.org 70 i-given for each circumstance. The clauses whose denoted circumstance Err bitreich.org 70 i-occured, are executed in the order the clauses appear. Err bitreich.org 70 i- Err bitreich.org 70 i-ABORT-FLAG is the name of a variable that will be bound to T in Err bitreich.org 70 i-CLAUSES if the PROTECTED-FORM aborted preemptively, and to NIL Err bitreich.org 70 i-otherwise. Err bitreich.org 70 i- Err bitreich.org 70 i-Examples: Err bitreich.org 70 i- Err bitreich.org 70 i- (unwind-protect-case () Err bitreich.org 70 i- (protected-form) Err bitreich.org 70 i- (:normal (format t \"This is only evaluated if PROTECTED-FORM executed normally.~%\")) Err bitreich.org 70 i- (:abort (format t \"This is only evaluated if PROTECTED-FORM aborted preemptively.~%\")) Err bitreich.org 70 i- (:always (format t \"This is evaluated in either case.~%\"))) Err bitreich.org 70 i- Err bitreich.org 70 i- (unwind-protect-case (aborted-p) Err bitreich.org 70 i- (protected-form) Err bitreich.org 70 i- (:always (perform-cleanup-if aborted-p))) Err bitreich.org 70 i-" Err bitreich.org 70 i- (check-type abort-flag (or null symbol)) Err bitreich.org 70 i- (let ((gflag (gensym "FLAG+"))) Err bitreich.org 70 i- `(let ((,gflag t)) Err bitreich.org 70 i- (unwind-protect (multiple-value-prog1 ,protected-form (setf ,gflag nil)) Err bitreich.org 70 i- (let ,(and abort-flag `((,abort-flag ,gflag))) Err bitreich.org 70 i- ,@(loop for (cleanup-kind . forms) in clauses Err bitreich.org 70 i- collect (ecase cleanup-kind Err bitreich.org 70 i- (:normal `(when (not ,gflag) ,@forms)) Err bitreich.org 70 i- (:abort `(when ,gflag ,@forms)) Err bitreich.org 70 i- (:always `(progn ,@forms))))))))) Err bitreich.org 70 i-\ No newline at end of file Err bitreich.org 70 1diff --git a/3rdparties/software/alexandria-20181210-git/control-flow.lisp b/3rdparties/software/alexandria-20181210-git/control-flow.lisp /scm/clic/file/3rdparties/software/alexandria-20181210-git/control-flow.lisp.gph bitreich.org 70 i@@ -1,106 +0,0 @@ Err bitreich.org 70 i-(in-package :alexandria) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun extract-function-name (spec) Err bitreich.org 70 i- "Useful for macros that want to mimic the functional interface for functions Err bitreich.org 70 i-like #'eq and 'eq." Err bitreich.org 70 i- (if (and (consp spec) Err bitreich.org 70 i- (member (first spec) '(quote function))) Err bitreich.org 70 i- (second spec) Err bitreich.org 70 i- spec)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun generate-switch-body (whole object clauses test key &optional default) Err bitreich.org 70 i- (with-gensyms (value) Err bitreich.org 70 i- (setf test (extract-function-name test)) Err bitreich.org 70 i- (setf key (extract-function-name key)) Err bitreich.org 70 i- (when (and (consp default) Err bitreich.org 70 i- (member (first default) '(error cerror))) Err bitreich.org 70 i- (setf default `(,@default "No keys match in SWITCH. Testing against ~S with ~S." Err bitreich.org 70 i- ,value ',test))) Err bitreich.org 70 i- `(let ((,value (,key ,object))) Err bitreich.org 70 i- (cond ,@(mapcar (lambda (clause) Err bitreich.org 70 i- (if (member (first clause) '(t otherwise)) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (when default Err bitreich.org 70 i- (error "Multiple default clauses or illegal use of a default clause in ~S." Err bitreich.org 70 i- whole)) Err bitreich.org 70 i- (setf default `(progn ,@(rest clause))) Err bitreich.org 70 i- '(())) Err bitreich.org 70 i- (destructuring-bind (key-form &body forms) clause Err bitreich.org 70 i- `((,test ,value ,key-form) Err bitreich.org 70 i- ,@forms)))) Err bitreich.org 70 i- clauses) Err bitreich.org 70 i- (t ,default))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro switch (&whole whole (object &key (test 'eql) (key 'identity)) Err bitreich.org 70 i- &body clauses) Err bitreich.org 70 i- "Evaluates first matching clause, returning its values, or evaluates and Err bitreich.org 70 i-returns the values of T or OTHERWISE if no keys match." Err bitreich.org 70 i- (generate-switch-body whole object clauses test key)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro eswitch (&whole whole (object &key (test 'eql) (key 'identity)) Err bitreich.org 70 i- &body clauses) Err bitreich.org 70 i- "Like SWITCH, but signals an error if no key matches." Err bitreich.org 70 i- (generate-switch-body whole object clauses test key '(error))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro cswitch (&whole whole (object &key (test 'eql) (key 'identity)) Err bitreich.org 70 i- &body clauses) Err bitreich.org 70 i- "Like SWITCH, but signals a continuable error if no key matches." Err bitreich.org 70 i- (generate-switch-body whole object clauses test key '(cerror "Return NIL from CSWITCH."))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro whichever (&rest possibilities &environment env) Err bitreich.org 70 i- "Evaluates exactly one of POSSIBILITIES, chosen at random." Err bitreich.org 70 i- (setf possibilities (mapcar (lambda (p) (macroexpand p env)) possibilities)) Err bitreich.org 70 i- (if (every (lambda (p) (constantp p)) possibilities) Err bitreich.org 70 i- `(svref (load-time-value (vector ,@possibilities)) (random ,(length possibilities))) Err bitreich.org 70 i- (labels ((expand (possibilities position random-number) Err bitreich.org 70 i- (if (null (cdr possibilities)) Err bitreich.org 70 i- (car possibilities) Err bitreich.org 70 i- (let* ((length (length possibilities)) Err bitreich.org 70 i- (half (truncate length 2)) Err bitreich.org 70 i- (second-half (nthcdr half possibilities)) Err bitreich.org 70 i- (first-half (butlast possibilities (- length half)))) Err bitreich.org 70 i- `(if (< ,random-number ,(+ position half)) Err bitreich.org 70 i- ,(expand first-half position random-number) Err bitreich.org 70 i- ,(expand second-half (+ position half) random-number)))))) Err bitreich.org 70 i- (with-gensyms (random-number) Err bitreich.org 70 i- (let ((length (length possibilities))) Err bitreich.org 70 i- `(let ((,random-number (random ,length))) Err bitreich.org 70 i- ,(expand possibilities 0 random-number))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro xor (&rest datums) Err bitreich.org 70 i- "Evaluates its arguments one at a time, from left to right. If more than one Err bitreich.org 70 i-argument evaluates to a true value no further DATUMS are evaluated, and NIL is Err bitreich.org 70 i-returned as both primary and secondary value. If exactly one argument Err bitreich.org 70 i-evaluates to true, its value is returned as the primary value after all the Err bitreich.org 70 i-arguments have been evaluated, and T is returned as the secondary value. If no Err bitreich.org 70 i-arguments evaluate to true NIL is retuned as primary, and T as secondary Err bitreich.org 70 i-value." Err bitreich.org 70 i- (with-gensyms (xor tmp true) Err bitreich.org 70 i- `(let (,tmp ,true) Err bitreich.org 70 i- (block ,xor Err bitreich.org 70 i- ,@(mapcar (lambda (datum) Err bitreich.org 70 i- `(if (setf ,tmp ,datum) Err bitreich.org 70 i- (if ,true Err bitreich.org 70 i- (return-from ,xor (values nil nil)) Err bitreich.org 70 i- (setf ,true ,tmp)))) Err bitreich.org 70 i- datums) Err bitreich.org 70 i- (return-from ,xor (values ,true t)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro nth-value-or (nth-value &body forms) Err bitreich.org 70 i- "Evaluates FORM arguments one at a time, until the NTH-VALUE returned by one Err bitreich.org 70 i-of the forms is true. It then returns all the values returned by evaluating Err bitreich.org 70 i-that form. If none of the forms return a true nth value, this form returns Err bitreich.org 70 i-NIL." Err bitreich.org 70 i- (once-only (nth-value) Err bitreich.org 70 i- (with-gensyms (values) Err bitreich.org 70 i- `(let ((,values (multiple-value-list ,(first forms)))) Err bitreich.org 70 i- (if (nth ,nth-value ,values) Err bitreich.org 70 i- (values-list ,values) Err bitreich.org 70 i- ,(if (rest forms) Err bitreich.org 70 i- `(nth-value-or ,nth-value ,@(rest forms)) Err bitreich.org 70 i- nil)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro multiple-value-prog2 (first-form second-form &body forms) Err bitreich.org 70 i- "Evaluates FIRST-FORM, then SECOND-FORM, and then FORMS. Yields as its value Err bitreich.org 70 i-all the value returned by SECOND-FORM." Err bitreich.org 70 i- `(progn ,first-form (multiple-value-prog1 ,second-form ,@forms))) Err bitreich.org 70 1diff --git a/3rdparties/software/alexandria-20181210-git/definitions.lisp b/3rdparties/software/alexandria-20181210-git/definitions.lisp /scm/clic/file/3rdparties/software/alexandria-20181210-git/definitions.lisp.gph bitreich.org 70 i@@ -1,37 +0,0 @@ Err bitreich.org 70 i-(in-package :alexandria) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %reevaluate-constant (name value test) Err bitreich.org 70 i- (if (not (boundp name)) Err bitreich.org 70 i- value Err bitreich.org 70 i- (let ((old (symbol-value name)) Err bitreich.org 70 i- (new value)) Err bitreich.org 70 i- (if (not (constantp name)) Err bitreich.org 70 i- (prog1 new Err bitreich.org 70 i- (cerror "Try to redefine the variable as a constant." Err bitreich.org 70 i- "~@<~S is an already bound non-constant variable ~ Err bitreich.org 70 i- whose value is ~S.~:@>" name old)) Err bitreich.org 70 i- (if (funcall test old new) Err bitreich.org 70 i- old Err bitreich.org 70 i- (restart-case Err bitreich.org 70 i- (error "~@<~S is an already defined constant whose value ~ Err bitreich.org 70 i- ~S is not equal to the provided initial value ~S ~ Err bitreich.org 70 i- under ~S.~:@>" name old new test) Err bitreich.org 70 i- (ignore () Err bitreich.org 70 i- :report "Retain the current value." Err bitreich.org 70 i- old) Err bitreich.org 70 i- (continue () Err bitreich.org 70 i- :report "Try to redefine the constant." Err bitreich.org 70 i- new))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro define-constant (name initial-value &key (test ''eql) documentation) Err bitreich.org 70 i- "Ensures that the global variable named by NAME is a constant with a value Err bitreich.org 70 i-that is equal under TEST to the result of evaluating INITIAL-VALUE. TEST is a Err bitreich.org 70 i-/function designator/ that defaults to EQL. If DOCUMENTATION is given, it Err bitreich.org 70 i-becomes the documentation string of the constant. Err bitreich.org 70 i- Err bitreich.org 70 i-Signals an error if NAME is already a bound non-constant variable. Err bitreich.org 70 i- Err bitreich.org 70 i-Signals an error if NAME is already a constant variable whose value is not Err bitreich.org 70 i-equal under TEST to result of evaluating INITIAL-VALUE." Err bitreich.org 70 i- `(defconstant ,name (%reevaluate-constant ',name ,initial-value ,test) Err bitreich.org 70 i- ,@(when documentation `(,documentation)))) Err bitreich.org 70 1diff --git a/3rdparties/software/alexandria-20181210-git/doc/.gitignore b/3rdparties/software/alexandria-20181210-git/doc/.gitignore /scm/clic/file/3rdparties/software/alexandria-20181210-git/doc/.gitignore.gph bitreich.org 70 i@@ -1,3 +0,0 @@ Err bitreich.org 70 i-alexandria Err bitreich.org 70 i-include Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/alexandria-20181210-git/doc/Makefile b/3rdparties/software/alexandria-20181210-git/doc/Makefile /scm/clic/file/3rdparties/software/alexandria-20181210-git/doc/Makefile.gph bitreich.org 70 i@@ -1,28 +0,0 @@ Err bitreich.org 70 i-.PHONY: clean html pdf include clean-include clean-crap info doc Err bitreich.org 70 i- Err bitreich.org 70 i-doc: pdf html info clean-crap Err bitreich.org 70 i- Err bitreich.org 70 i-clean-include: Err bitreich.org 70 i- rm -rf include Err bitreich.org 70 i- Err bitreich.org 70 i-clean-crap: Err bitreich.org 70 i- rm -f *.aux *.cp *.fn *.fns *.ky *.log *.pg *.toc *.tp *.tps *.vr Err bitreich.org 70 i- Err bitreich.org 70 i-clean: clean-include Err bitreich.org 70 i- rm -f *.pdf *.html *.info Err bitreich.org 70 i- Err bitreich.org 70 i-include: Err bitreich.org 70 i- sbcl --no-userinit --eval '(require :asdf)' \ Err bitreich.org 70 i- --eval '(let ((asdf:*central-registry* (list "../"))) (require :alexandria))' \ Err bitreich.org 70 i- --load docstrings.lisp \ Err bitreich.org 70 i- --eval '(sb-texinfo:generate-includes "include/" (list :alexandria) :base-package :alexandria)' \ Err bitreich.org 70 i- --eval '(quit)' Err bitreich.org 70 i- Err bitreich.org 70 i-pdf: include Err bitreich.org 70 i- texi2pdf alexandria.texinfo Err bitreich.org 70 i- Err bitreich.org 70 i-html: include Err bitreich.org 70 i- makeinfo --html --no-split alexandria.texinfo Err bitreich.org 70 i- Err bitreich.org 70 i-info: include Err bitreich.org 70 i- makeinfo alexandria.texinfo Err bitreich.org 70 1diff --git a/3rdparties/software/alexandria-20181210-git/doc/alexandria.texinfo b/3rdparties/software/alexandria-20181210-git/doc/alexandria.texinfo /scm/clic/file/3rdparties/software/alexandria-20181210-git/doc/alexandria.texinfo.gph bitreich.org 70 i@@ -1,277 +0,0 @@ Err bitreich.org 70 i-\input texinfo @c -*-texinfo-*- Err bitreich.org 70 i-@c %**start of header Err bitreich.org 70 i-@setfilename alexandria.info Err bitreich.org 70 i-@settitle Alexandria Manual Err bitreich.org 70 i-@c %**end of header Err bitreich.org 70 i- Err bitreich.org 70 i-@settitle Alexandria Manual -- draft version Err bitreich.org 70 i- Err bitreich.org 70 i-@c for install-info Err bitreich.org 70 i-@dircategory Software development Err bitreich.org 70 i-@direntry Err bitreich.org 70 i-* alexandria: Common Lisp utilities. Err bitreich.org 70 i-@end direntry Err bitreich.org 70 i- Err bitreich.org 70 i-@copying Err bitreich.org 70 i-Alexandria software and associated documentation are in the public Err bitreich.org 70 i-domain: Err bitreich.org 70 i- Err bitreich.org 70 i-@quotation Err bitreich.org 70 i- Authors dedicate this work to public domain, for the benefit of the Err bitreich.org 70 i- public at large and to the detriment of the authors' heirs and Err bitreich.org 70 i- successors. Authors intends this dedication to be an overt act of Err bitreich.org 70 i- relinquishment in perpetuity of all present and future rights under Err bitreich.org 70 i- copyright law, whether vested or contingent, in the work. Authors Err bitreich.org 70 i- understands that such relinquishment of all rights includes the Err bitreich.org 70 i- relinquishment of all rights to enforce (by lawsuit or otherwise) Err bitreich.org 70 i- those copyrights in the work. Err bitreich.org 70 i- Err bitreich.org 70 i- Authors recognize that, once placed in the public domain, the work Err bitreich.org 70 i- may be freely reproduced, distributed, transmitted, used, modified, Err bitreich.org 70 i- built upon, or otherwise exploited by anyone for any purpose, Err bitreich.org 70 i- commercial or non-commercial, and in any way, including by methods Err bitreich.org 70 i- that have not yet been invented or conceived. Err bitreich.org 70 i-@end quotation Err bitreich.org 70 i- Err bitreich.org 70 i-In those legislations where public domain dedications are not Err bitreich.org 70 i-recognized or possible, Alexandria is distributed under the following Err bitreich.org 70 i-terms and conditions: Err bitreich.org 70 i- Err bitreich.org 70 i-@quotation Err bitreich.org 70 i- Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i- obtaining a copy of this software and associated documentation files Err bitreich.org 70 i- (the "Software"), to deal in the Software without restriction, Err bitreich.org 70 i- including without limitation the rights to use, copy, modify, merge, Err bitreich.org 70 i- publish, distribute, sublicense, and/or sell copies of the Software, Err bitreich.org 70 i- and to permit persons to whom the Software is furnished to do so, Err bitreich.org 70 i- subject to the following conditions: Err bitreich.org 70 i- Err bitreich.org 70 i- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. Err bitreich.org 70 i- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY Err bitreich.org 70 i- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, Err bitreich.org 70 i- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE Err bitreich.org 70 i- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-@end quotation Err bitreich.org 70 i-@end copying Err bitreich.org 70 i- Err bitreich.org 70 i-@titlepage Err bitreich.org 70 i- Err bitreich.org 70 i-@title Alexandria Manual Err bitreich.org 70 i-@subtitle draft version Err bitreich.org 70 i- Err bitreich.org 70 i-@c The following two commands start the copyright page. Err bitreich.org 70 i-@page Err bitreich.org 70 i-@vskip 0pt plus 1filll Err bitreich.org 70 i-@insertcopying Err bitreich.org 70 i- Err bitreich.org 70 i-@end titlepage Err bitreich.org 70 i- Err bitreich.org 70 i-@contents Err bitreich.org 70 i- Err bitreich.org 70 i-@ifnottex Err bitreich.org 70 i- Err bitreich.org 70 i-@include include/ifnottex.texinfo Err bitreich.org 70 i- Err bitreich.org 70 i-@node Top Err bitreich.org 70 i-@comment node-name, next, previous, up Err bitreich.org 70 i-@top Alexandria Err bitreich.org 70 i- Err bitreich.org 70 i-@insertcopying Err bitreich.org 70 i- Err bitreich.org 70 i-@menu Err bitreich.org 70 i-* Hash Tables:: Err bitreich.org 70 i-* Data and Control Flow:: Err bitreich.org 70 i-* Conses:: Err bitreich.org 70 i-* Sequences:: Err bitreich.org 70 i-* IO:: Err bitreich.org 70 i-* Macro Writing:: Err bitreich.org 70 i-* Symbols:: Err bitreich.org 70 i-* Arrays:: Err bitreich.org 70 i-* Types:: Err bitreich.org 70 i-* Numbers:: Err bitreich.org 70 i-@end menu Err bitreich.org 70 i- Err bitreich.org 70 i-@end ifnottex Err bitreich.org 70 i- Err bitreich.org 70 i-@node Hash Tables Err bitreich.org 70 i-@comment node-name, next, previous, up Err bitreich.org 70 i-@chapter Hash Tables Err bitreich.org 70 i- Err bitreich.org 70 i-@include include/macro-alexandria-ensure-gethash.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-copy-hash-table.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-maphash-keys.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-maphash-values.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-hash-table-keys.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-hash-table-values.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-hash-table-alist.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-hash-table-plist.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-alist-hash-table.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-plist-hash-table.texinfo Err bitreich.org 70 i- Err bitreich.org 70 i-@node Data and Control Flow Err bitreich.org 70 i-@comment node-name, next, previous, up Err bitreich.org 70 i-@chapter Data and Control Flow Err bitreich.org 70 i- Err bitreich.org 70 i-@include include/macro-alexandria-define-constant.texinfo Err bitreich.org 70 i-@include include/macro-alexandria-destructuring-case.texinfo Err bitreich.org 70 i-@include include/macro-alexandria-ensure-functionf.texinfo Err bitreich.org 70 i-@include include/macro-alexandria-multiple-value-prog2.texinfo Err bitreich.org 70 i-@include include/macro-alexandria-named-lambda.texinfo Err bitreich.org 70 i-@include include/macro-alexandria-nth-value-or.texinfo Err bitreich.org 70 i-@include include/macro-alexandria-if-let.texinfo Err bitreich.org 70 i-@include include/macro-alexandria-when-let.texinfo Err bitreich.org 70 i-@include include/macro-alexandria-when-let-star.texinfo Err bitreich.org 70 i-@include include/macro-alexandria-switch.texinfo Err bitreich.org 70 i-@include include/macro-alexandria-cswitch.texinfo Err bitreich.org 70 i-@include include/macro-alexandria-eswitch.texinfo Err bitreich.org 70 i-@include include/macro-alexandria-whichever.texinfo Err bitreich.org 70 i-@include include/macro-alexandria-xor.texinfo Err bitreich.org 70 i- Err bitreich.org 70 i-@include include/fun-alexandria-disjoin.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-conjoin.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-compose.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-ensure-function.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-multiple-value-compose.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-curry.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-rcurry.texinfo Err bitreich.org 70 i- Err bitreich.org 70 i-@node Conses Err bitreich.org 70 i-@comment node-name, next, previous, up Err bitreich.org 70 i-@chapter Conses Err bitreich.org 70 i- Err bitreich.org 70 i-@include include/type-alexandria-proper-list.texinfo Err bitreich.org 70 i-@include include/type-alexandria-circular-list.texinfo Err bitreich.org 70 i- Err bitreich.org 70 i-@include include/macro-alexandria-appendf.texinfo Err bitreich.org 70 i-@include include/macro-alexandria-nconcf.texinfo Err bitreich.org 70 i-@include include/macro-alexandria-remove-from-plistf.texinfo Err bitreich.org 70 i-@include include/macro-alexandria-delete-from-plistf.texinfo Err bitreich.org 70 i-@include include/macro-alexandria-reversef.texinfo Err bitreich.org 70 i-@include include/macro-alexandria-nreversef.texinfo Err bitreich.org 70 i-@include include/macro-alexandria-unionf.texinfo Err bitreich.org 70 i-@include include/macro-alexandria-nunionf.texinfo Err bitreich.org 70 i- Err bitreich.org 70 i-@include include/macro-alexandria-doplist.texinfo Err bitreich.org 70 i- Err bitreich.org 70 i-@include include/fun-alexandria-circular-list-p.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-circular-tree-p.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-proper-list-p.texinfo Err bitreich.org 70 i- Err bitreich.org 70 i-@include include/fun-alexandria-alist-plist.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-plist-alist.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-circular-list.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-make-circular-list.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-ensure-car.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-ensure-cons.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-ensure-list.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-flatten.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-lastcar.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-setf-lastcar.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-proper-list-length.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-mappend.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-map-product.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-remove-from-plist.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-delete-from-plist.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-set-equal.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-setp.texinfo Err bitreich.org 70 i- Err bitreich.org 70 i-@node Sequences Err bitreich.org 70 i-@comment node-name, next, previous, up Err bitreich.org 70 i-@chapter Sequences Err bitreich.org 70 i- Err bitreich.org 70 i-@include include/type-alexandria-proper-sequence.texinfo Err bitreich.org 70 i- Err bitreich.org 70 i-@include include/macro-alexandria-deletef.texinfo Err bitreich.org 70 i-@include include/macro-alexandria-removef.texinfo Err bitreich.org 70 i- Err bitreich.org 70 i-@include include/fun-alexandria-rotate.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-shuffle.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-random-elt.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-emptyp.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-sequence-of-length-p.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-length-equals.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-copy-sequence.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-first-elt.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-setf-first-elt.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-last-elt.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-setf-last-elt.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-starts-with.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-starts-with-subseq.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-ends-with.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-ends-with-subseq.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-map-combinations.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-map-derangements.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-map-permutations.texinfo Err bitreich.org 70 i- Err bitreich.org 70 i-@node IO Err bitreich.org 70 i-@comment node-name, next, previous, up Err bitreich.org 70 i-@chapter IO Err bitreich.org 70 i- Err bitreich.org 70 i-@include include/fun-alexandria-read-stream-content-into-string.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-read-file-into-string.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-read-stream-content-into-byte-vector.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-read-file-into-byte-vector.texinfo Err bitreich.org 70 i- Err bitreich.org 70 i-@node Macro Writing Err bitreich.org 70 i-@comment node-name, next, previous, up Err bitreich.org 70 i-@chapter Macro Writing Err bitreich.org 70 i- Err bitreich.org 70 i-@include include/macro-alexandria-once-only.texinfo Err bitreich.org 70 i-@include include/macro-alexandria-with-gensyms.texinfo Err bitreich.org 70 i-@include include/macro-alexandria-with-unique-names.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-featurep.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-parse-body.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-parse-ordinary-lambda-list.texinfo Err bitreich.org 70 i- Err bitreich.org 70 i-@node Symbols Err bitreich.org 70 i-@comment node-name, next, previous, up Err bitreich.org 70 i-@chapter Symbols Err bitreich.org 70 i- Err bitreich.org 70 i-@include include/fun-alexandria-ensure-symbol.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-format-symbol.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-make-keyword.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-make-gensym.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-make-gensym-list.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-symbolicate.texinfo Err bitreich.org 70 i- Err bitreich.org 70 i-@node Arrays Err bitreich.org 70 i-@comment node-name, next, previous, up Err bitreich.org 70 i-@chapter Arrays Err bitreich.org 70 i- Err bitreich.org 70 i-@include include/type-alexandria-array-index.texinfo Err bitreich.org 70 i-@include include/type-alexandria-array-length.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-copy-array.texinfo Err bitreich.org 70 i- Err bitreich.org 70 i-@node Types Err bitreich.org 70 i-@comment node-name, next, previous, up Err bitreich.org 70 i-@chapter Types Err bitreich.org 70 i- Err bitreich.org 70 i-@include include/type-alexandria-string-designator.texinfo Err bitreich.org 70 i-@include include/macro-alexandria-coercef.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-of-type.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-type-equals.texinfo Err bitreich.org 70 i- Err bitreich.org 70 i-@node Numbers Err bitreich.org 70 i-@comment node-name, next, previous, up Err bitreich.org 70 i-@chapter Numbers Err bitreich.org 70 i- Err bitreich.org 70 i-@include include/macro-alexandria-maxf.texinfo Err bitreich.org 70 i-@include include/macro-alexandria-minf.texinfo Err bitreich.org 70 i- Err bitreich.org 70 i-@include include/fun-alexandria-binomial-coefficient.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-count-permutations.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-clamp.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-lerp.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-factorial.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-subfactorial.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-gaussian-random.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-iota.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-map-iota.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-mean.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-median.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-variance.texinfo Err bitreich.org 70 i-@include include/fun-alexandria-standard-deviation.texinfo Err bitreich.org 70 i- Err bitreich.org 70 i-@bye Err bitreich.org 70 1diff --git a/3rdparties/software/alexandria-20181210-git/doc/docstrings.lisp b/3rdparties/software/alexandria-20181210-git/doc/docstrings.lisp /scm/clic/file/3rdparties/software/alexandria-20181210-git/doc/docstrings.lisp.gph bitreich.org 70 i@@ -1,881 +0,0 @@ Err bitreich.org 70 i-;;; -*- lisp -*- Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; A docstring extractor for the sbcl manual. Creates Err bitreich.org 70 i-;;;; @include-ready documentation from the docstrings of exported Err bitreich.org 70 i-;;;; symbols of specified packages. Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; This software is part of the SBCL software system. SBCL is in the Err bitreich.org 70 i-;;;; public domain and is provided with absolutely no warranty. See Err bitreich.org 70 i-;;;; the COPYING file for more information. Err bitreich.org 70 i-;;;; Err bitreich.org 70 i-;;;; Written by Rudi Schlatte , mangled Err bitreich.org 70 i-;;;; by Nikodemus Siivola. Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; TODO Err bitreich.org 70 i-;;;; * Verbatim text Err bitreich.org 70 i-;;;; * Quotations Err bitreich.org 70 i-;;;; * Method documentation untested Err bitreich.org 70 i-;;;; * Method sorting, somehow Err bitreich.org 70 i-;;;; * Index for macros & constants? Err bitreich.org 70 i-;;;; * This is getting complicated enough that tests would be good Err bitreich.org 70 i-;;;; * Nesting (currently only nested itemizations work) Err bitreich.org 70 i-;;;; * doc -> internal form -> texinfo (so that non-texinfo format are also Err bitreich.org 70 i-;;;; easily generated) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; FIXME: The description below is no longer complete. This Err bitreich.org 70 i-;;;; should possibly be turned into a contrib with proper documentation. Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Formatting heuristics (tweaked to format SAVE-LISP-AND-DIE sanely): Err bitreich.org 70 i-;;;; Err bitreich.org 70 i-;;;; Formats SYMBOL as @code{symbol}, or @var{symbol} if symbol is in Err bitreich.org 70 i-;;;; the argument list of the defun / defmacro. Err bitreich.org 70 i-;;;; Err bitreich.org 70 i-;;;; Lines starting with * or - that are followed by intented lines Err bitreich.org 70 i-;;;; are marked up with @itemize. Err bitreich.org 70 i-;;;; Err bitreich.org 70 i-;;;; Lines containing only a SYMBOL that are followed by indented Err bitreich.org 70 i-;;;; lines are marked up as @table @code, with the SYMBOL as the item. Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (require 'sb-introspect)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage :sb-texinfo Err bitreich.org 70 i- (:use :cl :sb-mop) Err bitreich.org 70 i- (:shadow #:documentation) Err bitreich.org 70 i- (:export #:generate-includes #:document-package) Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "Tools to generate TexInfo documentation from docstrings.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :sb-texinfo) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; various specials and parameters Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *texinfo-output*) Err bitreich.org 70 i-(defvar *texinfo-variables*) Err bitreich.org 70 i-(defvar *documentation-package*) Err bitreich.org 70 i-(defvar *base-package*) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *undocumented-packages* '(sb-pcl sb-int sb-kernel sb-sys sb-c)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *documentation-types* Err bitreich.org 70 i- '(compiler-macro Err bitreich.org 70 i- function Err bitreich.org 70 i- method-combination Err bitreich.org 70 i- setf Err bitreich.org 70 i- ;;structure ; also handled by `type' Err bitreich.org 70 i- type Err bitreich.org 70 i- variable) Err bitreich.org 70 i- "A list of symbols accepted as second argument of `documentation'") Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *character-replacements* Err bitreich.org 70 i- '((#\* . "star") (#\/ . "slash") (#\+ . "plus") Err bitreich.org 70 i- (#\< . "lt") (#\> . "gt") Err bitreich.org 70 i- (#\= . "equals")) Err bitreich.org 70 i- "Characters and their replacement names that `alphanumize' uses. If Err bitreich.org 70 i-the replacements contain any of the chars they're supposed to replace, Err bitreich.org 70 i-you deserve to lose.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *characters-to-drop* '(#\\ #\` #\') Err bitreich.org 70 i- "Characters that should be removed by `alphanumize'.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *texinfo-escaped-chars* "@{}" Err bitreich.org 70 i- "Characters that must be escaped with #\@ for Texinfo.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *itemize-start-characters* '(#\* #\-) Err bitreich.org 70 i- "Characters that might start an itemization in docstrings when Err bitreich.org 70 i- at the start of a line.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *symbol-characters* "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890*:-+&#'" Err bitreich.org 70 i- "List of characters that make up symbols in a docstring.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *symbol-delimiters* " ,.!?;") Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *ordered-documentation-kinds* Err bitreich.org 70 i- '(package type structure condition class macro)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; utilities Err bitreich.org 70 i- Err bitreich.org 70 i-(defun flatten (list) Err bitreich.org 70 i- (cond ((null list) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- ((consp (car list)) Err bitreich.org 70 i- (nconc (flatten (car list)) (flatten (cdr list)))) Err bitreich.org 70 i- ((null (cdr list)) Err bitreich.org 70 i- (cons (car list) nil)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (cons (car list) (flatten (cdr list)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun whitespacep (char) Err bitreich.org 70 i- (find char #(#\tab #\space #\page))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun setf-name-p (name) Err bitreich.org 70 i- (or (symbolp name) Err bitreich.org 70 i- (and (listp name) (= 2 (length name)) (eq (car name) 'setf)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric specializer-name (specializer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod specializer-name ((specializer eql-specializer)) Err bitreich.org 70 i- (list 'eql (eql-specializer-object specializer))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod specializer-name ((specializer class)) Err bitreich.org 70 i- (class-name specializer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ensure-class-precedence-list (class) Err bitreich.org 70 i- (unless (class-finalized-p class) Err bitreich.org 70 i- (finalize-inheritance class)) Err bitreich.org 70 i- (class-precedence-list class)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun specialized-lambda-list (method) Err bitreich.org 70 i- ;; courtecy of AMOP p. 61 Err bitreich.org 70 i- (let* ((specializers (method-specializers method)) Err bitreich.org 70 i- (lambda-list (method-lambda-list method)) Err bitreich.org 70 i- (n-required (length specializers))) Err bitreich.org 70 i- (append (mapcar (lambda (arg specializer) Err bitreich.org 70 i- (if (eq specializer (find-class 't)) Err bitreich.org 70 i- arg Err bitreich.org 70 i- `(,arg ,(specializer-name specializer)))) Err bitreich.org 70 i- (subseq lambda-list 0 n-required) Err bitreich.org 70 i- specializers) Err bitreich.org 70 i- (subseq lambda-list n-required)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun string-lines (string) Err bitreich.org 70 i- "Lines in STRING as a vector." Err bitreich.org 70 i- (coerce (with-input-from-string (s string) Err bitreich.org 70 i- (loop for line = (read-line s nil nil) Err bitreich.org 70 i- while line collect line)) Err bitreich.org 70 i- 'vector)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun indentation (line) Err bitreich.org 70 i- "Position of first non-SPACE character in LINE." Err bitreich.org 70 i- (position-if-not (lambda (c) (char= c #\Space)) line)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun docstring (x doc-type) Err bitreich.org 70 i- (cl:documentation x doc-type)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun flatten-to-string (list) Err bitreich.org 70 i- (format nil "~{~A~^-~}" (flatten list))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun alphanumize (original) Err bitreich.org 70 i- "Construct a string without characters like *`' that will f-star-ck Err bitreich.org 70 i-up filename handling. See `*character-replacements*' and Err bitreich.org 70 i-`*characters-to-drop*' for customization." Err bitreich.org 70 i- (let ((name (remove-if (lambda (x) (member x *characters-to-drop*)) Err bitreich.org 70 i- (if (listp original) Err bitreich.org 70 i- (flatten-to-string original) Err bitreich.org 70 i- (string original)))) Err bitreich.org 70 i- (chars-to-replace (mapcar #'car *character-replacements*))) Err bitreich.org 70 i- (flet ((replacement-delimiter (index) Err bitreich.org 70 i- (cond ((or (< index 0) (>= index (length name))) "") Err bitreich.org 70 i- ((alphanumericp (char name index)) "-") Err bitreich.org 70 i- (t "")))) Err bitreich.org 70 i- (loop for index = (position-if #'(lambda (x) (member x chars-to-replace)) Err bitreich.org 70 i- name) Err bitreich.org 70 i- while index Err bitreich.org 70 i- do (setf name (concatenate 'string (subseq name 0 index) Err bitreich.org 70 i- (replacement-delimiter (1- index)) Err bitreich.org 70 i- (cdr (assoc (aref name index) Err bitreich.org 70 i- *character-replacements*)) Err bitreich.org 70 i- (replacement-delimiter (1+ index)) Err bitreich.org 70 i- (subseq name (1+ index)))))) Err bitreich.org 70 i- name)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; generating various names Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric name (thing) Err bitreich.org 70 i- (:documentation "Name for a documented thing. Names are either Err bitreich.org 70 i-symbols or lists of symbols.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod name ((symbol symbol)) Err bitreich.org 70 i- symbol) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod name ((cons cons)) Err bitreich.org 70 i- cons) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod name ((package package)) Err bitreich.org 70 i- (short-package-name package)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod name ((method method)) Err bitreich.org 70 i- (list Err bitreich.org 70 i- (generic-function-name (method-generic-function method)) Err bitreich.org 70 i- (method-qualifiers method) Err bitreich.org 70 i- (specialized-lambda-list method))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Node names for DOCUMENTATION instances Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric name-using-kind/name (kind name doc)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod name-using-kind/name (kind (name string) doc) Err bitreich.org 70 i- (declare (ignore kind doc)) Err bitreich.org 70 i- name) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod name-using-kind/name (kind (name symbol) doc) Err bitreich.org 70 i- (declare (ignore kind)) Err bitreich.org 70 i- (format nil "~@[~A:~]~A" (short-package-name (get-package doc)) name)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod name-using-kind/name (kind (name list) doc) Err bitreich.org 70 i- (declare (ignore kind)) Err bitreich.org 70 i- (assert (setf-name-p name)) Err bitreich.org 70 i- (format nil "(setf ~@[~A:~]~A)" (short-package-name (get-package doc)) (second name))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod name-using-kind/name ((kind (eql 'method)) name doc) Err bitreich.org 70 i- (format nil "~A~{ ~A~} ~A" Err bitreich.org 70 i- (name-using-kind/name nil (first name) doc) Err bitreich.org 70 i- (second name) Err bitreich.org 70 i- (third name))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun node-name (doc) Err bitreich.org 70 i- "Returns TexInfo node name as a string for a DOCUMENTATION instance." Err bitreich.org 70 i- (let ((kind (get-kind doc))) Err bitreich.org 70 i- (format nil "~:(~A~) ~(~A~)" kind (name-using-kind/name kind (get-name doc) doc)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun short-package-name (package) Err bitreich.org 70 i- (unless (eq package *base-package*) Err bitreich.org 70 i- (car (sort (copy-list (cons (package-name package) (package-nicknames package))) Err bitreich.org 70 i- #'< :key #'length)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Definition titles for DOCUMENTATION instances Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric title-using-kind/name (kind name doc)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod title-using-kind/name (kind (name string) doc) Err bitreich.org 70 i- (declare (ignore kind doc)) Err bitreich.org 70 i- name) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod title-using-kind/name (kind (name symbol) doc) Err bitreich.org 70 i- (declare (ignore kind)) Err bitreich.org 70 i- (format nil "~@[~A:~]~A" (short-package-name (get-package doc)) name)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod title-using-kind/name (kind (name list) doc) Err bitreich.org 70 i- (declare (ignore kind)) Err bitreich.org 70 i- (assert (setf-name-p name)) Err bitreich.org 70 i- (format nil "(setf ~@[~A:~]~A)" (short-package-name (get-package doc)) (second name))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod title-using-kind/name ((kind (eql 'method)) name doc) Err bitreich.org 70 i- (format nil "~{~A ~}~A" Err bitreich.org 70 i- (second name) Err bitreich.org 70 i- (title-using-kind/name nil (first name) doc))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun title-name (doc) Err bitreich.org 70 i- "Returns a string to be used as name of the definition." Err bitreich.org 70 i- (string-downcase (title-using-kind/name (get-kind doc) (get-name doc) doc))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun include-pathname (doc) Err bitreich.org 70 i- (let* ((kind (get-kind doc)) Err bitreich.org 70 i- (name (nstring-downcase Err bitreich.org 70 i- (if (eq 'package kind) Err bitreich.org 70 i- (format nil "package-~A" (alphanumize (get-name doc))) Err bitreich.org 70 i- (format nil "~A-~A-~A" Err bitreich.org 70 i- (case (get-kind doc) Err bitreich.org 70 i- ((function generic-function) "fun") Err bitreich.org 70 i- (structure "struct") Err bitreich.org 70 i- (variable "var") Err bitreich.org 70 i- (otherwise (symbol-name (get-kind doc)))) Err bitreich.org 70 i- (alphanumize (let ((*base-package* nil)) Err bitreich.org 70 i- (short-package-name (get-package doc)))) Err bitreich.org 70 i- (alphanumize (get-name doc))))))) Err bitreich.org 70 i- (make-pathname :name name :type "texinfo"))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; documentation class and related methods Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass documentation () Err bitreich.org 70 i- ((name :initarg :name :reader get-name) Err bitreich.org 70 i- (kind :initarg :kind :reader get-kind) Err bitreich.org 70 i- (string :initarg :string :reader get-string) Err bitreich.org 70 i- (children :initarg :children :initform nil :reader get-children) Err bitreich.org 70 i- (package :initform *documentation-package* :reader get-package))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod print-object ((documentation documentation) stream) Err bitreich.org 70 i- (print-unreadable-object (documentation stream :type t) Err bitreich.org 70 i- (princ (list (get-kind documentation) (get-name documentation)) stream))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric make-documentation (x doc-type string)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod make-documentation ((x package) doc-type string) Err bitreich.org 70 i- (declare (ignore doc-type)) Err bitreich.org 70 i- (make-instance 'documentation Err bitreich.org 70 i- :name (name x) Err bitreich.org 70 i- :kind 'package Err bitreich.org 70 i- :string string)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod make-documentation (x (doc-type (eql 'function)) string) Err bitreich.org 70 i- (declare (ignore doc-type)) Err bitreich.org 70 i- (let* ((fdef (and (fboundp x) (fdefinition x))) Err bitreich.org 70 i- (name x) Err bitreich.org 70 i- (kind (cond ((and (symbolp x) (special-operator-p x)) Err bitreich.org 70 i- 'special-operator) Err bitreich.org 70 i- ((and (symbolp x) (macro-function x)) Err bitreich.org 70 i- 'macro) Err bitreich.org 70 i- ((typep fdef 'generic-function) Err bitreich.org 70 i- (assert (or (symbolp name) (setf-name-p name))) Err bitreich.org 70 i- 'generic-function) Err bitreich.org 70 i- (fdef Err bitreich.org 70 i- (assert (or (symbolp name) (setf-name-p name))) Err bitreich.org 70 i- 'function))) Err bitreich.org 70 i- (children (when (eq kind 'generic-function) Err bitreich.org 70 i- (collect-gf-documentation fdef)))) Err bitreich.org 70 i- (make-instance 'documentation Err bitreich.org 70 i- :name (name x) Err bitreich.org 70 i- :string string Err bitreich.org 70 i- :kind kind Err bitreich.org 70 i- :children children))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod make-documentation ((x method) doc-type string) Err bitreich.org 70 i- (declare (ignore doc-type)) Err bitreich.org 70 i- (make-instance 'documentation Err bitreich.org 70 i- :name (name x) Err bitreich.org 70 i- :kind 'method Err bitreich.org 70 i- :string string)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod make-documentation (x (doc-type (eql 'type)) string) Err bitreich.org 70 i- (make-instance 'documentation Err bitreich.org 70 i- :name (name x) Err bitreich.org 70 i- :string string Err bitreich.org 70 i- :kind (etypecase (find-class x nil) Err bitreich.org 70 i- (structure-class 'structure) Err bitreich.org 70 i- (standard-class 'class) Err bitreich.org 70 i- (sb-pcl::condition-class 'condition) Err bitreich.org 70 i- ((or built-in-class null) 'type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod make-documentation (x (doc-type (eql 'variable)) string) Err bitreich.org 70 i- (make-instance 'documentation Err bitreich.org 70 i- :name (name x) Err bitreich.org 70 i- :string string Err bitreich.org 70 i- :kind (if (constantp x) Err bitreich.org 70 i- 'constant Err bitreich.org 70 i- 'variable))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod make-documentation (x (doc-type (eql 'setf)) string) Err bitreich.org 70 i- (declare (ignore doc-type)) Err bitreich.org 70 i- (make-instance 'documentation Err bitreich.org 70 i- :name (name x) Err bitreich.org 70 i- :kind 'setf-expander Err bitreich.org 70 i- :string string)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod make-documentation (x doc-type string) Err bitreich.org 70 i- (make-instance 'documentation Err bitreich.org 70 i- :name (name x) Err bitreich.org 70 i- :kind doc-type Err bitreich.org 70 i- :string string)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun maybe-documentation (x doc-type) Err bitreich.org 70 i- "Returns a DOCUMENTATION instance for X and DOC-TYPE, or NIL if Err bitreich.org 70 i-there is no corresponding docstring." Err bitreich.org 70 i- (let ((docstring (docstring x doc-type))) Err bitreich.org 70 i- (when docstring Err bitreich.org 70 i- (make-documentation x doc-type docstring)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun lambda-list (doc) Err bitreich.org 70 i- (case (get-kind doc) Err bitreich.org 70 i- ((package constant variable type structure class condition nil) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- (method Err bitreich.org 70 i- (third (get-name doc))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- ;; KLUDGE: Eugh. Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; believe it or not, the above comment was written before CSR Err bitreich.org 70 i- ;; came along and obfuscated this. (2005-07-04) Err bitreich.org 70 i- (when (symbolp (get-name doc)) Err bitreich.org 70 i- (labels ((clean (x &key optional key) Err bitreich.org 70 i- (typecase x Err bitreich.org 70 i- (atom x) Err bitreich.org 70 i- ((cons (member &optional)) Err bitreich.org 70 i- (cons (car x) (clean (cdr x) :optional t))) Err bitreich.org 70 i- ((cons (member &key)) Err bitreich.org 70 i- (cons (car x) (clean (cdr x) :key t))) Err bitreich.org 70 i- ((cons (member &whole &environment)) Err bitreich.org 70 i- ;; Skip these Err bitreich.org 70 i- (clean (cdr x) :optional optional :key key)) Err bitreich.org 70 i- ((cons cons) Err bitreich.org 70 i- (cons Err bitreich.org 70 i- (cond (key (if (consp (caar x)) Err bitreich.org 70 i- (caaar x) Err bitreich.org 70 i- (caar x))) Err bitreich.org 70 i- (optional (caar x)) Err bitreich.org 70 i- (t (clean (car x)))) Err bitreich.org 70 i- (clean (cdr x) :key key :optional optional))) Err bitreich.org 70 i- (cons Err bitreich.org 70 i- (cons Err bitreich.org 70 i- (cond ((or key optional) (car x)) Err bitreich.org 70 i- (t (clean (car x)))) Err bitreich.org 70 i- (clean (cdr x) :key key :optional optional)))))) Err bitreich.org 70 i- (clean (sb-introspect:function-lambda-list (get-name doc)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-string-name (x) Err bitreich.org 70 i- (let ((name (get-name x))) Err bitreich.org 70 i- (cond ((symbolp name) Err bitreich.org 70 i- (symbol-name name)) Err bitreich.org 70 i- ((and (consp name) (eq 'setf (car name))) Err bitreich.org 70 i- (symbol-name (second name))) Err bitreich.org 70 i- ((stringp name) Err bitreich.org 70 i- name) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (error "Don't know which symbol to use for name ~S" name))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun documentation< (x y) Err bitreich.org 70 i- (let ((p1 (position (get-kind x) *ordered-documentation-kinds*)) Err bitreich.org 70 i- (p2 (position (get-kind y) *ordered-documentation-kinds*))) Err bitreich.org 70 i- (if (or (not (and p1 p2)) (= p1 p2)) Err bitreich.org 70 i- (string< (get-string-name x) (get-string-name y)) Err bitreich.org 70 i- (< p1 p2)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; turning text into texinfo Err bitreich.org 70 i- Err bitreich.org 70 i-(defun escape-for-texinfo (string &optional downcasep) Err bitreich.org 70 i- "Return STRING with characters in *TEXINFO-ESCAPED-CHARS* escaped Err bitreich.org 70 i-with #\@. Optionally downcase the result." Err bitreich.org 70 i- (let ((result (with-output-to-string (s) Err bitreich.org 70 i- (loop for char across string Err bitreich.org 70 i- when (find char *texinfo-escaped-chars*) Err bitreich.org 70 i- do (write-char #\@ s) Err bitreich.org 70 i- do (write-char char s))))) Err bitreich.org 70 i- (if downcasep (nstring-downcase result) result))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun empty-p (line-number lines) Err bitreich.org 70 i- (and (< -1 line-number (length lines)) Err bitreich.org 70 i- (not (indentation (svref lines line-number))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; line markups Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *not-symbols* '("ANSI" "CLHS")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun locate-symbols (line) Err bitreich.org 70 i- "Return a list of index pairs of symbol-like parts of LINE." Err bitreich.org 70 i- ;; This would be a good application for a regex ... Err bitreich.org 70 i- (let (result) Err bitreich.org 70 i- (flet ((grab (start end) Err bitreich.org 70 i- (unless (member (subseq line start end) '("ANSI" "CLHS")) Err bitreich.org 70 i- (push (list start end) result)))) Err bitreich.org 70 i- (do ((begin nil) Err bitreich.org 70 i- (maybe-begin t) Err bitreich.org 70 i- (i 0 (1+ i))) Err bitreich.org 70 i- ((= i (length line)) Err bitreich.org 70 i- ;; symbol at end of line Err bitreich.org 70 i- (when (and begin (or (> i (1+ begin)) Err bitreich.org 70 i- (not (member (char line begin) '(#\A #\I))))) Err bitreich.org 70 i- (grab begin i)) Err bitreich.org 70 i- (nreverse result)) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((and begin (find (char line i) *symbol-delimiters*)) Err bitreich.org 70 i- ;; symbol end; remember it if it's not "A" or "I" Err bitreich.org 70 i- (when (or (> i (1+ begin)) (not (member (char line begin) '(#\A #\I)))) Err bitreich.org 70 i- (grab begin i)) Err bitreich.org 70 i- (setf begin nil Err bitreich.org 70 i- maybe-begin t)) Err bitreich.org 70 i- ((and begin (not (find (char line i) *symbol-characters*))) Err bitreich.org 70 i- ;; Not a symbol: abort Err bitreich.org 70 i- (setf begin nil)) Err bitreich.org 70 i- ((and maybe-begin (not begin) (find (char line i) *symbol-characters*)) Err bitreich.org 70 i- ;; potential symbol begin at this position Err bitreich.org 70 i- (setf begin i Err bitreich.org 70 i- maybe-begin nil)) Err bitreich.org 70 i- ((find (char line i) *symbol-delimiters*) Err bitreich.org 70 i- ;; potential symbol begin after this position Err bitreich.org 70 i- (setf maybe-begin t)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- ;; Not reading a symbol, not at potential start of symbol Err bitreich.org 70 i- (setf maybe-begin nil))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun texinfo-line (line) Err bitreich.org 70 i- "Format symbols in LINE texinfo-style: either as code or as Err bitreich.org 70 i-variables if the symbol in question is contained in symbols Err bitreich.org 70 i-*TEXINFO-VARIABLES*." Err bitreich.org 70 i- (with-output-to-string (result) Err bitreich.org 70 i- (let ((last 0)) Err bitreich.org 70 i- (dolist (symbol/index (locate-symbols line)) Err bitreich.org 70 i- (write-string (subseq line last (first symbol/index)) result) Err bitreich.org 70 i- (let ((symbol-name (apply #'subseq line symbol/index))) Err bitreich.org 70 i- (format result (if (member symbol-name *texinfo-variables* Err bitreich.org 70 i- :test #'string=) Err bitreich.org 70 i- "@var{~A}" Err bitreich.org 70 i- "@code{~A}") Err bitreich.org 70 i- (string-downcase symbol-name))) Err bitreich.org 70 i- (setf last (second symbol/index))) Err bitreich.org 70 i- (write-string (subseq line last) result)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; lisp sections Err bitreich.org 70 i- Err bitreich.org 70 i-(defun lisp-section-p (line line-number lines) Err bitreich.org 70 i- "Returns T if the given LINE looks like start of lisp code -- Err bitreich.org 70 i-ie. if it starts with whitespace followed by a paren or Err bitreich.org 70 i-semicolon, and the previous line is empty" Err bitreich.org 70 i- (let ((offset (indentation line))) Err bitreich.org 70 i- (and offset Err bitreich.org 70 i- (plusp offset) Err bitreich.org 70 i- (find (find-if-not #'whitespacep line) "(;") Err bitreich.org 70 i- (empty-p (1- line-number) lines)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun collect-lisp-section (lines line-number) Err bitreich.org 70 i- (let ((lisp (loop for index = line-number then (1+ index) Err bitreich.org 70 i- for line = (and (< index (length lines)) (svref lines index)) Err bitreich.org 70 i- while (indentation line) Err bitreich.org 70 i- collect line))) Err bitreich.org 70 i- (values (length lisp) `("@lisp" ,@lisp "@end lisp")))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; itemized sections Err bitreich.org 70 i- Err bitreich.org 70 i-(defun maybe-itemize-offset (line) Err bitreich.org 70 i- "Return NIL or the indentation offset if LINE looks like it starts Err bitreich.org 70 i-an item in an itemization." Err bitreich.org 70 i- (let* ((offset (indentation line)) Err bitreich.org 70 i- (char (when offset (char line offset)))) Err bitreich.org 70 i- (and offset Err bitreich.org 70 i- (member char *itemize-start-characters* :test #'char=) Err bitreich.org 70 i- (char= #\Space (find-if-not (lambda (c) (char= c char)) Err bitreich.org 70 i- line :start offset)) Err bitreich.org 70 i- offset))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun collect-maybe-itemized-section (lines starting-line) Err bitreich.org 70 i- ;; Return index of next line to be processed outside Err bitreich.org 70 i- (let ((this-offset (maybe-itemize-offset (svref lines starting-line))) Err bitreich.org 70 i- (result nil) Err bitreich.org 70 i- (lines-consumed 0)) Err bitreich.org 70 i- (loop for line-number from starting-line below (length lines) Err bitreich.org 70 i- for line = (svref lines line-number) Err bitreich.org 70 i- for indentation = (indentation line) Err bitreich.org 70 i- for offset = (maybe-itemize-offset line) Err bitreich.org 70 i- do (cond Err bitreich.org 70 i- ((not indentation) Err bitreich.org 70 i- ;; empty line -- inserts paragraph. Err bitreich.org 70 i- (push "" result) Err bitreich.org 70 i- (incf lines-consumed)) Err bitreich.org 70 i- ((and offset (> indentation this-offset)) Err bitreich.org 70 i- ;; nested itemization -- handle recursively Err bitreich.org 70 i- ;; FIXME: tables in itemizations go wrong Err bitreich.org 70 i- (multiple-value-bind (sub-lines-consumed sub-itemization) Err bitreich.org 70 i- (collect-maybe-itemized-section lines line-number) Err bitreich.org 70 i- (when sub-lines-consumed Err bitreich.org 70 i- (incf line-number (1- sub-lines-consumed)) ; +1 on next loop Err bitreich.org 70 i- (incf lines-consumed sub-lines-consumed) Err bitreich.org 70 i- (setf result (nconc (nreverse sub-itemization) result))))) Err bitreich.org 70 i- ((and offset (= indentation this-offset)) Err bitreich.org 70 i- ;; start of new item Err bitreich.org 70 i- (push (format nil "@item ~A" Err bitreich.org 70 i- (texinfo-line (subseq line (1+ offset)))) Err bitreich.org 70 i- result) Err bitreich.org 70 i- (incf lines-consumed)) Err bitreich.org 70 i- ((and (not offset) (> indentation this-offset)) Err bitreich.org 70 i- ;; continued item from previous line Err bitreich.org 70 i- (push (texinfo-line line) result) Err bitreich.org 70 i- (incf lines-consumed)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- ;; end of itemization Err bitreich.org 70 i- (loop-finish)))) Err bitreich.org 70 i- ;; a single-line itemization isn't. Err bitreich.org 70 i- (if (> (count-if (lambda (line) (> (length line) 0)) result) 1) Err bitreich.org 70 i- (values lines-consumed `("@itemize" ,@(reverse result) "@end itemize")) Err bitreich.org 70 i- nil))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; table sections Err bitreich.org 70 i- Err bitreich.org 70 i-(defun tabulation-body-p (offset line-number lines) Err bitreich.org 70 i- (when (< line-number (length lines)) Err bitreich.org 70 i- (let ((offset2 (indentation (svref lines line-number)))) Err bitreich.org 70 i- (and offset2 (< offset offset2))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun tabulation-p (offset line-number lines direction) Err bitreich.org 70 i- (let ((step (ecase direction Err bitreich.org 70 i- (:backwards (1- line-number)) Err bitreich.org 70 i- (:forwards (1+ line-number))))) Err bitreich.org 70 i- (when (and (plusp line-number) (< line-number (length lines))) Err bitreich.org 70 i- (and (eql offset (indentation (svref lines line-number))) Err bitreich.org 70 i- (or (when (eq direction :backwards) Err bitreich.org 70 i- (empty-p step lines)) Err bitreich.org 70 i- (tabulation-p offset step lines direction) Err bitreich.org 70 i- (tabulation-body-p offset step lines)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun maybe-table-offset (line-number lines) Err bitreich.org 70 i- "Return NIL or the indentation offset if LINE looks like it starts Err bitreich.org 70 i-an item in a tabulation. Ie, if it is (1) indented, (2) preceded by an Err bitreich.org 70 i-empty line, another tabulation label, or a tabulation body, (3) and Err bitreich.org 70 i-followed another tabulation label or a tabulation body." Err bitreich.org 70 i- (let* ((line (svref lines line-number)) Err bitreich.org 70 i- (offset (indentation line)) Err bitreich.org 70 i- (prev (1- line-number)) Err bitreich.org 70 i- (next (1+ line-number))) Err bitreich.org 70 i- (when (and offset (plusp offset)) Err bitreich.org 70 i- (and (or (empty-p prev lines) Err bitreich.org 70 i- (tabulation-body-p offset prev lines) Err bitreich.org 70 i- (tabulation-p offset prev lines :backwards)) Err bitreich.org 70 i- (or (tabulation-body-p offset next lines) Err bitreich.org 70 i- (tabulation-p offset next lines :forwards)) Err bitreich.org 70 i- offset)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; FIXME: This and itemization are very similar: could they share Err bitreich.org 70 i-;;; some code, mayhap? Err bitreich.org 70 i- Err bitreich.org 70 i-(defun collect-maybe-table-section (lines starting-line) Err bitreich.org 70 i- ;; Return index of next line to be processed outside Err bitreich.org 70 i- (let ((this-offset (maybe-table-offset starting-line lines)) Err bitreich.org 70 i- (result nil) Err bitreich.org 70 i- (lines-consumed 0)) Err bitreich.org 70 i- (loop for line-number from starting-line below (length lines) Err bitreich.org 70 i- for line = (svref lines line-number) Err bitreich.org 70 i- for indentation = (indentation line) Err bitreich.org 70 i- for offset = (maybe-table-offset line-number lines) Err bitreich.org 70 i- do (cond Err bitreich.org 70 i- ((not indentation) Err bitreich.org 70 i- ;; empty line -- inserts paragraph. Err bitreich.org 70 i- (push "" result) Err bitreich.org 70 i- (incf lines-consumed)) Err bitreich.org 70 i- ((and offset (= indentation this-offset)) Err bitreich.org 70 i- ;; start of new item, or continuation of previous item Err bitreich.org 70 i- (if (and result (search "@item" (car result) :test #'char=)) Err bitreich.org 70 i- (push (format nil "@itemx ~A" (texinfo-line line)) Err bitreich.org 70 i- result) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (push "" result) Err bitreich.org 70 i- (push (format nil "@item ~A" (texinfo-line line)) Err bitreich.org 70 i- result))) Err bitreich.org 70 i- (incf lines-consumed)) Err bitreich.org 70 i- ((> indentation this-offset) Err bitreich.org 70 i- ;; continued item from previous line Err bitreich.org 70 i- (push (texinfo-line line) result) Err bitreich.org 70 i- (incf lines-consumed)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- ;; end of itemization Err bitreich.org 70 i- (loop-finish)))) Err bitreich.org 70 i- ;; a single-line table isn't. Err bitreich.org 70 i- (if (> (count-if (lambda (line) (> (length line) 0)) result) 1) Err bitreich.org 70 i- (values lines-consumed Err bitreich.org 70 i- `("" "@table @emph" ,@(reverse result) "@end table" "")) Err bitreich.org 70 i- nil))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; section markup Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-maybe-section (index &rest forms) Err bitreich.org 70 i- `(multiple-value-bind (count collected) (progn ,@forms) Err bitreich.org 70 i- (when count Err bitreich.org 70 i- (dolist (line collected) Err bitreich.org 70 i- (write-line line *texinfo-output*)) Err bitreich.org 70 i- (incf ,index (1- count))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun write-texinfo-string (string &optional lambda-list) Err bitreich.org 70 i- "Try to guess as much formatting for a raw docstring as possible." Err bitreich.org 70 i- (let ((*texinfo-variables* (flatten lambda-list)) Err bitreich.org 70 i- (lines (string-lines (escape-for-texinfo string nil)))) Err bitreich.org 70 i- (loop for line-number from 0 below (length lines) Err bitreich.org 70 i- for line = (svref lines line-number) Err bitreich.org 70 i- do (cond Err bitreich.org 70 i- ((with-maybe-section line-number Err bitreich.org 70 i- (and (lisp-section-p line line-number lines) Err bitreich.org 70 i- (collect-lisp-section lines line-number)))) Err bitreich.org 70 i- ((with-maybe-section line-number Err bitreich.org 70 i- (and (maybe-itemize-offset line) Err bitreich.org 70 i- (collect-maybe-itemized-section lines line-number)))) Err bitreich.org 70 i- ((with-maybe-section line-number Err bitreich.org 70 i- (and (maybe-table-offset line-number lines) Err bitreich.org 70 i- (collect-maybe-table-section lines line-number)))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (write-line (texinfo-line line) *texinfo-output*)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; texinfo formatting tools Err bitreich.org 70 i- Err bitreich.org 70 i-(defun hide-superclass-p (class-name super-name) Err bitreich.org 70 i- (let ((super-package (symbol-package super-name))) Err bitreich.org 70 i- (or Err bitreich.org 70 i- ;; KLUDGE: We assume that we don't want to advertise internal Err bitreich.org 70 i- ;; classes in CP-lists, unless the symbol we're documenting is Err bitreich.org 70 i- ;; internal as well. Err bitreich.org 70 i- (and (member super-package #.'(mapcar #'find-package *undocumented-packages*)) Err bitreich.org 70 i- (not (eq super-package (symbol-package class-name)))) Err bitreich.org 70 i- ;; KLUDGE: We don't generally want to advertise SIMPLE-ERROR or Err bitreich.org 70 i- ;; SIMPLE-CONDITION in the CPLs of conditions that inherit them Err bitreich.org 70 i- ;; simply as a matter of convenience. The assumption here is that Err bitreich.org 70 i- ;; the inheritance is incidental unless the name of the condition Err bitreich.org 70 i- ;; begins with SIMPLE-. Err bitreich.org 70 i- (and (member super-name '(simple-error simple-condition)) Err bitreich.org 70 i- (let ((prefix "SIMPLE-")) Err bitreich.org 70 i- (mismatch prefix (string class-name) :end2 (length prefix))) Err bitreich.org 70 i- t ; don't return number from MISMATCH Err bitreich.org 70 i- )))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun hide-slot-p (symbol slot) Err bitreich.org 70 i- ;; FIXME: There is no pricipal reason to avoid the slot docs fo Err bitreich.org 70 i- ;; structures and conditions, but their DOCUMENTATION T doesn't Err bitreich.org 70 i- ;; currently work with them the way we'd like. Err bitreich.org 70 i- (not (and (typep (find-class symbol nil) 'standard-class) Err bitreich.org 70 i- (docstring slot t)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun texinfo-anchor (doc) Err bitreich.org 70 i- (format *texinfo-output* "@anchor{~A}~%" (node-name doc))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; KLUDGE: &AUX *PRINT-PRETTY* here means "no linebreaks please" Err bitreich.org 70 i-(defun texinfo-begin (doc &aux *print-pretty*) Err bitreich.org 70 i- (let ((kind (get-kind doc))) Err bitreich.org 70 i- (format *texinfo-output* "@~A {~:(~A~)} ~({~A}~@[ ~{~A~^ ~}~]~)~%" Err bitreich.org 70 i- (case kind Err bitreich.org 70 i- ((package constant variable) Err bitreich.org 70 i- "defvr") Err bitreich.org 70 i- ((structure class condition type) Err bitreich.org 70 i- "deftp") Err bitreich.org 70 i- (t Err bitreich.org 70 i- "deffn")) Err bitreich.org 70 i- (map 'string (lambda (char) (if (eql char #\-) #\Space char)) (string kind)) Err bitreich.org 70 i- (title-name doc) Err bitreich.org 70 i- ;; &foo would be amusingly bold in the pdf thanks to TeX/Texinfo Err bitreich.org 70 i- ;; interactions,so we escape the ampersand -- amusingly for TeX. Err bitreich.org 70 i- ;; sbcl.texinfo defines macros that expand @&key and friends to &key. Err bitreich.org 70 i- (mapcar (lambda (name) Err bitreich.org 70 i- (if (member name lambda-list-keywords) Err bitreich.org 70 i- (format nil "@~A" name) Err bitreich.org 70 i- name)) Err bitreich.org 70 i- (lambda-list doc))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun texinfo-index (doc) Err bitreich.org 70 i- (let ((title (title-name doc))) Err bitreich.org 70 i- (case (get-kind doc) Err bitreich.org 70 i- ((structure type class condition) Err bitreich.org 70 i- (format *texinfo-output* "@tindex ~A~%" title)) Err bitreich.org 70 i- ((variable constant) Err bitreich.org 70 i- (format *texinfo-output* "@vindex ~A~%" title)) Err bitreich.org 70 i- ((compiler-macro function method-combination macro generic-function) Err bitreich.org 70 i- (format *texinfo-output* "@findex ~A~%" title))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun texinfo-inferred-body (doc) Err bitreich.org 70 i- (when (member (get-kind doc) '(class structure condition)) Err bitreich.org 70 i- (let ((name (get-name doc))) Err bitreich.org 70 i- ;; class precedence list Err bitreich.org 70 i- (format *texinfo-output* "Class precedence list: @code{~(~{@lw{~A}~^, ~}~)}~%~%" Err bitreich.org 70 i- (remove-if (lambda (class) (hide-superclass-p name class)) Err bitreich.org 70 i- (mapcar #'class-name (ensure-class-precedence-list (find-class name))))) Err bitreich.org 70 i- ;; slots Err bitreich.org 70 i- (let ((slots (remove-if (lambda (slot) (hide-slot-p name slot)) Err bitreich.org 70 i- (class-direct-slots (find-class name))))) Err bitreich.org 70 i- (when slots Err bitreich.org 70 i- (format *texinfo-output* "Slots:~%@itemize~%") Err bitreich.org 70 i- (dolist (slot slots) Err bitreich.org 70 i- (format *texinfo-output* Err bitreich.org 70 i- "@item ~(@code{~A}~#[~:; --- ~]~ Err bitreich.org 70 i- ~:{~2*~@[~2:*~A~P: ~{@code{@w{~S}}~^, ~}~]~:^; ~}~)~%~%" Err bitreich.org 70 i- (slot-definition-name slot) Err bitreich.org 70 i- (remove Err bitreich.org 70 i- nil Err bitreich.org 70 i- (mapcar Err bitreich.org 70 i- (lambda (name things) Err bitreich.org 70 i- (if things Err bitreich.org 70 i- (list name (length things) things))) Err bitreich.org 70 i- '("initarg" "reader" "writer") Err bitreich.org 70 i- (list Err bitreich.org 70 i- (slot-definition-initargs slot) Err bitreich.org 70 i- (slot-definition-readers slot) Err bitreich.org 70 i- (slot-definition-writers slot))))) Err bitreich.org 70 i- ;; FIXME: Would be neater to handler as children Err bitreich.org 70 i- (write-texinfo-string (docstring slot t))) Err bitreich.org 70 i- (format *texinfo-output* "@end itemize~%~%")))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun texinfo-body (doc) Err bitreich.org 70 i- (write-texinfo-string (get-string doc))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun texinfo-end (doc) Err bitreich.org 70 i- (write-line (case (get-kind doc) Err bitreich.org 70 i- ((package variable constant) "@end defvr") Err bitreich.org 70 i- ((structure type class condition) "@end deftp") Err bitreich.org 70 i- (t "@end deffn")) Err bitreich.org 70 i- *texinfo-output*)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun write-texinfo (doc) Err bitreich.org 70 i- "Writes TexInfo for a DOCUMENTATION instance to *TEXINFO-OUTPUT*." Err bitreich.org 70 i- (texinfo-anchor doc) Err bitreich.org 70 i- (texinfo-begin doc) Err bitreich.org 70 i- (texinfo-index doc) Err bitreich.org 70 i- (texinfo-inferred-body doc) Err bitreich.org 70 i- (texinfo-body doc) Err bitreich.org 70 i- (texinfo-end doc) Err bitreich.org 70 i- ;; FIXME: Children should be sorted one way or another Err bitreich.org 70 i- (mapc #'write-texinfo (get-children doc))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; main logic Err bitreich.org 70 i- Err bitreich.org 70 i-(defun collect-gf-documentation (gf) Err bitreich.org 70 i- "Collects method documentation for the generic function GF" Err bitreich.org 70 i- (loop for method in (generic-function-methods gf) Err bitreich.org 70 i- for doc = (maybe-documentation method t) Err bitreich.org 70 i- when doc Err bitreich.org 70 i- collect doc)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun collect-name-documentation (name) Err bitreich.org 70 i- (loop for type in *documentation-types* Err bitreich.org 70 i- for doc = (maybe-documentation name type) Err bitreich.org 70 i- when doc Err bitreich.org 70 i- collect doc)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun collect-symbol-documentation (symbol) Err bitreich.org 70 i- "Collects all docs for a SYMBOL and (SETF SYMBOL), returns a list of Err bitreich.org 70 i-the form DOC instances. See `*documentation-types*' for the possible Err bitreich.org 70 i-values of doc-type." Err bitreich.org 70 i- (nconc (collect-name-documentation symbol) Err bitreich.org 70 i- (collect-name-documentation (list 'setf symbol)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun collect-documentation (package) Err bitreich.org 70 i- "Collects all documentation for all external symbols of the given Err bitreich.org 70 i-package, as well as for the package itself." Err bitreich.org 70 i- (let* ((*documentation-package* (find-package package)) Err bitreich.org 70 i- (docs nil)) Err bitreich.org 70 i- (check-type package package) Err bitreich.org 70 i- (do-external-symbols (symbol package) Err bitreich.org 70 i- (setf docs (nconc (collect-symbol-documentation symbol) docs))) Err bitreich.org 70 i- (let ((doc (maybe-documentation *documentation-package* t))) Err bitreich.org 70 i- (when doc Err bitreich.org 70 i- (push doc docs))) Err bitreich.org 70 i- docs)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-texinfo-file (pathname &body forms) Err bitreich.org 70 i- `(with-open-file (*texinfo-output* ,pathname Err bitreich.org 70 i- :direction :output Err bitreich.org 70 i- :if-does-not-exist :create Err bitreich.org 70 i- :if-exists :supersede) Err bitreich.org 70 i- ,@forms)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun write-ifnottex () Err bitreich.org 70 i- ;; We use @&key, etc to escape & from TeX in lambda lists -- so we need to Err bitreich.org 70 i- ;; define them for info as well. Err bitreich.org 70 i- (flet ((macro (name) Err bitreich.org 70 i- (let ((string (string-downcase name))) Err bitreich.org 70 i- (format *texinfo-output* "@macro ~A~%~A~%@end macro~%" string string)))) Err bitreich.org 70 i- (macro '&allow-other-keys) Err bitreich.org 70 i- (macro '&optional) Err bitreich.org 70 i- (macro '&rest) Err bitreich.org 70 i- (macro '&key) Err bitreich.org 70 i- (macro '&body))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun generate-includes (directory packages &key (base-package :cl-user)) Err bitreich.org 70 i- "Create files in `directory' containing Texinfo markup of all Err bitreich.org 70 i-docstrings of each exported symbol in `packages'. `directory' is Err bitreich.org 70 i-created if necessary. If you supply a namestring that doesn't end in a Err bitreich.org 70 i-slash, you lose. The generated files are of the form Err bitreich.org 70 i-\"__.texinfo\" and can be included Err bitreich.org 70 i-via @include statements. Texinfo syntax-significant characters are Err bitreich.org 70 i-escaped in symbol names, but if a docstring contains invalid Texinfo Err bitreich.org 70 i-markup, you lose." Err bitreich.org 70 i- (handler-bind ((warning #'muffle-warning)) Err bitreich.org 70 i- (let ((directory (merge-pathnames (pathname directory))) Err bitreich.org 70 i- (*base-package* (find-package base-package))) Err bitreich.org 70 i- (ensure-directories-exist directory) Err bitreich.org 70 i- (dolist (package packages) Err bitreich.org 70 i- (dolist (doc (collect-documentation (find-package package))) Err bitreich.org 70 i- (with-texinfo-file (merge-pathnames (include-pathname doc) directory) Err bitreich.org 70 i- (write-texinfo doc)))) Err bitreich.org 70 i- (with-texinfo-file (merge-pathnames "ifnottex.texinfo" directory) Err bitreich.org 70 i- (write-ifnottex)) Err bitreich.org 70 i- directory))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun document-package (package &optional filename) Err bitreich.org 70 i- "Create a file containing all available documentation for the Err bitreich.org 70 i-exported symbols of `package' in Texinfo format. If `filename' is not Err bitreich.org 70 i-supplied, a file \".texinfo\" is generated. Err bitreich.org 70 i- Err bitreich.org 70 i-The definitions can be referenced using Texinfo statements like Err bitreich.org 70 i-@ref{__.texinfo}. Texinfo Err bitreich.org 70 i-syntax-significant characters are escaped in symbol names, but if a Err bitreich.org 70 i-docstring contains invalid Texinfo markup, you lose." Err bitreich.org 70 i- (handler-bind ((warning #'muffle-warning)) Err bitreich.org 70 i- (let* ((package (find-package package)) Err bitreich.org 70 i- (filename (or filename (make-pathname Err bitreich.org 70 i- :name (string-downcase (short-package-name package)) Err bitreich.org 70 i- :type "texinfo"))) Err bitreich.org 70 i- (docs (sort (collect-documentation package) #'documentation<))) Err bitreich.org 70 i- (with-texinfo-file filename Err bitreich.org 70 i- (dolist (doc docs) Err bitreich.org 70 i- (write-texinfo doc))) Err bitreich.org 70 i- filename))) Err bitreich.org 70 1diff --git a/3rdparties/software/alexandria-20181210-git/features.lisp b/3rdparties/software/alexandria-20181210-git/features.lisp /scm/clic/file/3rdparties/software/alexandria-20181210-git/features.lisp.gph bitreich.org 70 i@@ -1,14 +0,0 @@ Err bitreich.org 70 i-(in-package :alexandria) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun featurep (feature-expression) Err bitreich.org 70 i- "Returns T if the argument matches the state of the *FEATURES* Err bitreich.org 70 i-list and NIL if it does not. FEATURE-EXPRESSION can be any atom Err bitreich.org 70 i-or list acceptable to the reader macros #+ and #-." Err bitreich.org 70 i- (etypecase feature-expression Err bitreich.org 70 i- (symbol (not (null (member feature-expression *features*)))) Err bitreich.org 70 i- (cons (check-type (first feature-expression) symbol) Err bitreich.org 70 i- (eswitch ((first feature-expression) :test 'string=) Err bitreich.org 70 i- (:and (every #'featurep (rest feature-expression))) Err bitreich.org 70 i- (:or (some #'featurep (rest feature-expression))) Err bitreich.org 70 i- (:not (assert (= 2 (length feature-expression))) Err bitreich.org 70 i- (not (featurep (second feature-expression)))))))) Err bitreich.org 70 1diff --git a/3rdparties/software/alexandria-20181210-git/functions.lisp b/3rdparties/software/alexandria-20181210-git/functions.lisp /scm/clic/file/3rdparties/software/alexandria-20181210-git/functions.lisp.gph bitreich.org 70 i@@ -1,161 +0,0 @@ Err bitreich.org 70 i-(in-package :alexandria) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; To propagate return type and allow the compiler to eliminate the IF when Err bitreich.org 70 i-;;; it is known if the argument is function or not. Err bitreich.org 70 i-(declaim (inline ensure-function)) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (ftype (function (t) (values function &optional)) Err bitreich.org 70 i- ensure-function)) Err bitreich.org 70 i-(defun ensure-function (function-designator) Err bitreich.org 70 i- "Returns the function designated by FUNCTION-DESIGNATOR: Err bitreich.org 70 i-if FUNCTION-DESIGNATOR is a function, it is returned, otherwise Err bitreich.org 70 i-it must be a function name and its FDEFINITION is returned." Err bitreich.org 70 i- (if (functionp function-designator) Err bitreich.org 70 i- function-designator Err bitreich.org 70 i- (fdefinition function-designator))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-modify-macro ensure-functionf/1 () ensure-function) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro ensure-functionf (&rest places) Err bitreich.org 70 i- "Multiple-place modify macro for ENSURE-FUNCTION: ensures that each of Err bitreich.org 70 i-PLACES contains a function." Err bitreich.org 70 i- `(progn ,@(mapcar (lambda (x) `(ensure-functionf/1 ,x)) places))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun disjoin (predicate &rest more-predicates) Err bitreich.org 70 i- "Returns a function that applies each of PREDICATE and MORE-PREDICATE Err bitreich.org 70 i-functions in turn to its arguments, returning the primary value of the first Err bitreich.org 70 i-predicate that returns true, without calling the remaining predicates. Err bitreich.org 70 i-If none of the predicates returns true, NIL is returned." Err bitreich.org 70 i- (declare (optimize (speed 3) (safety 1) (debug 1))) Err bitreich.org 70 i- (let ((predicate (ensure-function predicate)) Err bitreich.org 70 i- (more-predicates (mapcar #'ensure-function more-predicates))) Err bitreich.org 70 i- (lambda (&rest arguments) Err bitreich.org 70 i- (or (apply predicate arguments) Err bitreich.org 70 i- (some (lambda (p) Err bitreich.org 70 i- (declare (type function p)) Err bitreich.org 70 i- (apply p arguments)) Err bitreich.org 70 i- more-predicates))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun conjoin (predicate &rest more-predicates) Err bitreich.org 70 i- "Returns a function that applies each of PREDICATE and MORE-PREDICATE Err bitreich.org 70 i-functions in turn to its arguments, returning NIL if any of the predicates Err bitreich.org 70 i-returns false, without calling the remaining predicates. If none of the Err bitreich.org 70 i-predicates returns false, returns the primary value of the last predicate." Err bitreich.org 70 i- (if (null more-predicates) Err bitreich.org 70 i- predicate Err bitreich.org 70 i- (lambda (&rest arguments) Err bitreich.org 70 i- (and (apply predicate arguments) Err bitreich.org 70 i- ;; Cannot simply use CL:EVERY because we want to return the Err bitreich.org 70 i- ;; non-NIL value of the last predicate if all succeed. Err bitreich.org 70 i- (do ((tail (cdr more-predicates) (cdr tail)) Err bitreich.org 70 i- (head (car more-predicates) (car tail))) Err bitreich.org 70 i- ((not tail) Err bitreich.org 70 i- (apply head arguments)) Err bitreich.org 70 i- (unless (apply head arguments) Err bitreich.org 70 i- (return nil))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defun compose (function &rest more-functions) Err bitreich.org 70 i- "Returns a function composed of FUNCTION and MORE-FUNCTIONS that applies its Err bitreich.org 70 i-arguments to to each in turn, starting from the rightmost of MORE-FUNCTIONS, Err bitreich.org 70 i-and then calling the next one with the primary value of the last." Err bitreich.org 70 i- (declare (optimize (speed 3) (safety 1) (debug 1))) Err bitreich.org 70 i- (reduce (lambda (f g) Err bitreich.org 70 i- (let ((f (ensure-function f)) Err bitreich.org 70 i- (g (ensure-function g))) Err bitreich.org 70 i- (lambda (&rest arguments) Err bitreich.org 70 i- (declare (dynamic-extent arguments)) Err bitreich.org 70 i- (funcall f (apply g arguments))))) Err bitreich.org 70 i- more-functions Err bitreich.org 70 i- :initial-value function)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-compiler-macro compose (function &rest more-functions) Err bitreich.org 70 i- (labels ((compose-1 (funs) Err bitreich.org 70 i- (if (cdr funs) Err bitreich.org 70 i- `(funcall ,(car funs) ,(compose-1 (cdr funs))) Err bitreich.org 70 i- `(apply ,(car funs) arguments)))) Err bitreich.org 70 i- (let* ((args (cons function more-functions)) Err bitreich.org 70 i- (funs (make-gensym-list (length args) "COMPOSE"))) Err bitreich.org 70 i- `(let ,(loop for f in funs for arg in args Err bitreich.org 70 i- collect `(,f (ensure-function ,arg))) Err bitreich.org 70 i- (declare (optimize (speed 3) (safety 1) (debug 1))) Err bitreich.org 70 i- (lambda (&rest arguments) Err bitreich.org 70 i- (declare (dynamic-extent arguments)) Err bitreich.org 70 i- ,(compose-1 funs)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun multiple-value-compose (function &rest more-functions) Err bitreich.org 70 i- "Returns a function composed of FUNCTION and MORE-FUNCTIONS that applies Err bitreich.org 70 i-its arguments to each in turn, starting from the rightmost of Err bitreich.org 70 i-MORE-FUNCTIONS, and then calling the next one with all the return values of Err bitreich.org 70 i-the last." Err bitreich.org 70 i- (declare (optimize (speed 3) (safety 1) (debug 1))) Err bitreich.org 70 i- (reduce (lambda (f g) Err bitreich.org 70 i- (let ((f (ensure-function f)) Err bitreich.org 70 i- (g (ensure-function g))) Err bitreich.org 70 i- (lambda (&rest arguments) Err bitreich.org 70 i- (declare (dynamic-extent arguments)) Err bitreich.org 70 i- (multiple-value-call f (apply g arguments))))) Err bitreich.org 70 i- more-functions Err bitreich.org 70 i- :initial-value function)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-compiler-macro multiple-value-compose (function &rest more-functions) Err bitreich.org 70 i- (labels ((compose-1 (funs) Err bitreich.org 70 i- (if (cdr funs) Err bitreich.org 70 i- `(multiple-value-call ,(car funs) ,(compose-1 (cdr funs))) Err bitreich.org 70 i- `(apply ,(car funs) arguments)))) Err bitreich.org 70 i- (let* ((args (cons function more-functions)) Err bitreich.org 70 i- (funs (make-gensym-list (length args) "MV-COMPOSE"))) Err bitreich.org 70 i- `(let ,(mapcar #'list funs args) Err bitreich.org 70 i- (declare (optimize (speed 3) (safety 1) (debug 1))) Err bitreich.org 70 i- (lambda (&rest arguments) Err bitreich.org 70 i- (declare (dynamic-extent arguments)) Err bitreich.org 70 i- ,(compose-1 funs)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline curry rcurry)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun curry (function &rest arguments) Err bitreich.org 70 i- "Returns a function that applies ARGUMENTS and the arguments Err bitreich.org 70 i-it is called with to FUNCTION." Err bitreich.org 70 i- (declare (optimize (speed 3) (safety 1))) Err bitreich.org 70 i- (let ((fn (ensure-function function))) Err bitreich.org 70 i- (lambda (&rest more) Err bitreich.org 70 i- (declare (dynamic-extent more)) Err bitreich.org 70 i- ;; Using M-V-C we don't need to append the arguments. Err bitreich.org 70 i- (multiple-value-call fn (values-list arguments) (values-list more))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-compiler-macro curry (function &rest arguments) Err bitreich.org 70 i- (let ((curries (make-gensym-list (length arguments) "CURRY")) Err bitreich.org 70 i- (fun (gensym "FUN"))) Err bitreich.org 70 i- `(let ((,fun (ensure-function ,function)) Err bitreich.org 70 i- ,@(mapcar #'list curries arguments)) Err bitreich.org 70 i- (declare (optimize (speed 3) (safety 1))) Err bitreich.org 70 i- (lambda (&rest more) Err bitreich.org 70 i- (declare (dynamic-extent more)) Err bitreich.org 70 i- (apply ,fun ,@curries more))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun rcurry (function &rest arguments) Err bitreich.org 70 i- "Returns a function that applies the arguments it is called Err bitreich.org 70 i-with and ARGUMENTS to FUNCTION." Err bitreich.org 70 i- (declare (optimize (speed 3) (safety 1))) Err bitreich.org 70 i- (let ((fn (ensure-function function))) Err bitreich.org 70 i- (lambda (&rest more) Err bitreich.org 70 i- (declare (dynamic-extent more)) Err bitreich.org 70 i- (multiple-value-call fn (values-list more) (values-list arguments))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-compiler-macro rcurry (function &rest arguments) Err bitreich.org 70 i- (let ((rcurries (make-gensym-list (length arguments) "RCURRY")) Err bitreich.org 70 i- (fun (gensym "FUN"))) Err bitreich.org 70 i- `(let ((,fun (ensure-function ,function)) Err bitreich.org 70 i- ,@(mapcar #'list rcurries arguments)) Err bitreich.org 70 i- (declare (optimize (speed 3) (safety 1))) Err bitreich.org 70 i- (lambda (&rest more) Err bitreich.org 70 i- (declare (dynamic-extent more)) Err bitreich.org 70 i- (multiple-value-call ,fun (values-list more) ,@rcurries))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (notinline curry rcurry)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro named-lambda (name lambda-list &body body) Err bitreich.org 70 i- "Expands into a lambda-expression within whose BODY NAME denotes the Err bitreich.org 70 i-corresponding function." Err bitreich.org 70 i- `(labels ((,name ,lambda-list ,@body)) Err bitreich.org 70 i- #',name)) Err bitreich.org 70 1diff --git a/3rdparties/software/alexandria-20181210-git/hash-tables.lisp b/3rdparties/software/alexandria-20181210-git/hash-tables.lisp /scm/clic/file/3rdparties/software/alexandria-20181210-git/hash-tables.lisp.gph bitreich.org 70 i@@ -1,101 +0,0 @@ Err bitreich.org 70 i-(in-package :alexandria) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro ensure-gethash (key hash-table &optional default) Err bitreich.org 70 i- "Like GETHASH, but if KEY is not found in the HASH-TABLE saves the DEFAULT Err bitreich.org 70 i-under key before returning it. Secondary return value is true if key was Err bitreich.org 70 i-already in the table." Err bitreich.org 70 i- (once-only (key hash-table) Err bitreich.org 70 i- (with-unique-names (value presentp) Err bitreich.org 70 i- `(multiple-value-bind (,value ,presentp) (gethash ,key ,hash-table) Err bitreich.org 70 i- (if ,presentp Err bitreich.org 70 i- (values ,value ,presentp) Err bitreich.org 70 i- (values (setf (gethash ,key ,hash-table) ,default) nil)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun copy-hash-table (table &key key test size Err bitreich.org 70 i- rehash-size rehash-threshold) Err bitreich.org 70 i- "Returns a copy of hash table TABLE, with the same keys and values Err bitreich.org 70 i-as the TABLE. The copy has the same properties as the original, unless Err bitreich.org 70 i-overridden by the keyword arguments. Err bitreich.org 70 i- Err bitreich.org 70 i-Before each of the original values is set into the new hash-table, KEY Err bitreich.org 70 i-is invoked on the value. As KEY defaults to CL:IDENTITY, a shallow Err bitreich.org 70 i-copy is returned by default." Err bitreich.org 70 i- (setf key (or key 'identity)) Err bitreich.org 70 i- (setf test (or test (hash-table-test table))) Err bitreich.org 70 i- (setf size (or size (hash-table-size table))) Err bitreich.org 70 i- (setf rehash-size (or rehash-size (hash-table-rehash-size table))) Err bitreich.org 70 i- (setf rehash-threshold (or rehash-threshold (hash-table-rehash-threshold table))) Err bitreich.org 70 i- (let ((copy (make-hash-table :test test :size size Err bitreich.org 70 i- :rehash-size rehash-size Err bitreich.org 70 i- :rehash-threshold rehash-threshold))) Err bitreich.org 70 i- (maphash (lambda (k v) Err bitreich.org 70 i- (setf (gethash k copy) (funcall key v))) Err bitreich.org 70 i- table) Err bitreich.org 70 i- copy)) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline maphash-keys)) Err bitreich.org 70 i-(defun maphash-keys (function table) Err bitreich.org 70 i- "Like MAPHASH, but calls FUNCTION with each key in the hash table TABLE." Err bitreich.org 70 i- (maphash (lambda (k v) Err bitreich.org 70 i- (declare (ignore v)) Err bitreich.org 70 i- (funcall function k)) Err bitreich.org 70 i- table)) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline maphash-values)) Err bitreich.org 70 i-(defun maphash-values (function table) Err bitreich.org 70 i- "Like MAPHASH, but calls FUNCTION with each value in the hash table TABLE." Err bitreich.org 70 i- (maphash (lambda (k v) Err bitreich.org 70 i- (declare (ignore k)) Err bitreich.org 70 i- (funcall function v)) Err bitreich.org 70 i- table)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun hash-table-keys (table) Err bitreich.org 70 i- "Returns a list containing the keys of hash table TABLE." Err bitreich.org 70 i- (let ((keys nil)) Err bitreich.org 70 i- (maphash-keys (lambda (k) Err bitreich.org 70 i- (push k keys)) Err bitreich.org 70 i- table) Err bitreich.org 70 i- keys)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun hash-table-values (table) Err bitreich.org 70 i- "Returns a list containing the values of hash table TABLE." Err bitreich.org 70 i- (let ((values nil)) Err bitreich.org 70 i- (maphash-values (lambda (v) Err bitreich.org 70 i- (push v values)) Err bitreich.org 70 i- table) Err bitreich.org 70 i- values)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun hash-table-alist (table) Err bitreich.org 70 i- "Returns an association list containing the keys and values of hash table Err bitreich.org 70 i-TABLE." Err bitreich.org 70 i- (let ((alist nil)) Err bitreich.org 70 i- (maphash (lambda (k v) Err bitreich.org 70 i- (push (cons k v) alist)) Err bitreich.org 70 i- table) Err bitreich.org 70 i- alist)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun hash-table-plist (table) Err bitreich.org 70 i- "Returns a property list containing the keys and values of hash table Err bitreich.org 70 i-TABLE." Err bitreich.org 70 i- (let ((plist nil)) Err bitreich.org 70 i- (maphash (lambda (k v) Err bitreich.org 70 i- (setf plist (list* k v plist))) Err bitreich.org 70 i- table) Err bitreich.org 70 i- plist)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun alist-hash-table (alist &rest hash-table-initargs) Err bitreich.org 70 i- "Returns a hash table containing the keys and values of the association list Err bitreich.org 70 i-ALIST. Hash table is initialized using the HASH-TABLE-INITARGS." Err bitreich.org 70 i- (let ((table (apply #'make-hash-table hash-table-initargs))) Err bitreich.org 70 i- (dolist (cons alist) Err bitreich.org 70 i- (ensure-gethash (car cons) table (cdr cons))) Err bitreich.org 70 i- table)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun plist-hash-table (plist &rest hash-table-initargs) Err bitreich.org 70 i- "Returns a hash table containing the keys and values of the property list Err bitreich.org 70 i-PLIST. Hash table is initialized using the HASH-TABLE-INITARGS." Err bitreich.org 70 i- (let ((table (apply #'make-hash-table hash-table-initargs))) Err bitreich.org 70 i- (do ((tail plist (cddr tail))) Err bitreich.org 70 i- ((not tail)) Err bitreich.org 70 i- (ensure-gethash (car tail) table (cadr tail))) Err bitreich.org 70 i- table)) Err bitreich.org 70 1diff --git a/3rdparties/software/alexandria-20181210-git/io.lisp b/3rdparties/software/alexandria-20181210-git/io.lisp /scm/clic/file/3rdparties/software/alexandria-20181210-git/io.lisp.gph bitreich.org 70 i@@ -1,172 +0,0 @@ Err bitreich.org 70 i-;; Copyright (c) 2002-2006, Edward Marco Baringer Err bitreich.org 70 i-;; All rights reserved. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :alexandria) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-open-file* ((stream filespec &key direction element-type Err bitreich.org 70 i- if-exists if-does-not-exist external-format) Err bitreich.org 70 i- &body body) Err bitreich.org 70 i- "Just like WITH-OPEN-FILE, but NIL values in the keyword arguments mean to use Err bitreich.org 70 i-the default value specified for OPEN." Err bitreich.org 70 i- (once-only (direction element-type if-exists if-does-not-exist external-format) Err bitreich.org 70 i- `(with-open-stream Err bitreich.org 70 i- (,stream (apply #'open ,filespec Err bitreich.org 70 i- (append Err bitreich.org 70 i- (when ,direction Err bitreich.org 70 i- (list :direction ,direction)) Err bitreich.org 70 i- (when ,element-type Err bitreich.org 70 i- (list :element-type ,element-type)) Err bitreich.org 70 i- (when ,if-exists Err bitreich.org 70 i- (list :if-exists ,if-exists)) Err bitreich.org 70 i- (when ,if-does-not-exist Err bitreich.org 70 i- (list :if-does-not-exist ,if-does-not-exist)) Err bitreich.org 70 i- (when ,external-format Err bitreich.org 70 i- (list :external-format ,external-format))))) Err bitreich.org 70 i- ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-input-from-file ((stream-name file-name &rest args Err bitreich.org 70 i- &key (direction nil direction-p) Err bitreich.org 70 i- &allow-other-keys) Err bitreich.org 70 i- &body body) Err bitreich.org 70 i- "Evaluate BODY with STREAM-NAME to an input stream on the file Err bitreich.org 70 i-FILE-NAME. ARGS is sent as is to the call to OPEN except EXTERNAL-FORMAT, Err bitreich.org 70 i-which is only sent to WITH-OPEN-FILE when it's not NIL." Err bitreich.org 70 i- (declare (ignore direction)) Err bitreich.org 70 i- (when direction-p Err bitreich.org 70 i- (error "Can't specify :DIRECTION for WITH-INPUT-FROM-FILE.")) Err bitreich.org 70 i- `(with-open-file* (,stream-name ,file-name :direction :input ,@args) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-output-to-file ((stream-name file-name &rest args Err bitreich.org 70 i- &key (direction nil direction-p) Err bitreich.org 70 i- &allow-other-keys) Err bitreich.org 70 i- &body body) Err bitreich.org 70 i- "Evaluate BODY with STREAM-NAME to an output stream on the file Err bitreich.org 70 i-FILE-NAME. ARGS is sent as is to the call to OPEN except EXTERNAL-FORMAT, Err bitreich.org 70 i-which is only sent to WITH-OPEN-FILE when it's not NIL." Err bitreich.org 70 i- (declare (ignore direction)) Err bitreich.org 70 i- (when direction-p Err bitreich.org 70 i- (error "Can't specify :DIRECTION for WITH-OUTPUT-TO-FILE.")) Err bitreich.org 70 i- `(with-open-file* (,stream-name ,file-name :direction :output ,@args) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun read-stream-content-into-string (stream &key (buffer-size 4096)) Err bitreich.org 70 i- "Return the \"content\" of STREAM as a fresh string." Err bitreich.org 70 i- (check-type buffer-size positive-integer) Err bitreich.org 70 i- (let ((*print-pretty* nil)) Err bitreich.org 70 i- (with-output-to-string (datum) Err bitreich.org 70 i- (let ((buffer (make-array buffer-size :element-type 'character))) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- :for bytes-read = (read-sequence buffer stream) Err bitreich.org 70 i- :do (write-sequence buffer datum :start 0 :end bytes-read) Err bitreich.org 70 i- :while (= bytes-read buffer-size)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun read-file-into-string (pathname &key (buffer-size 4096) external-format) Err bitreich.org 70 i- "Return the contents of the file denoted by PATHNAME as a fresh string. Err bitreich.org 70 i- Err bitreich.org 70 i-The EXTERNAL-FORMAT parameter will be passed directly to WITH-OPEN-FILE Err bitreich.org 70 i-unless it's NIL, which means the system default." Err bitreich.org 70 i- (with-input-from-file Err bitreich.org 70 i- (file-stream pathname :external-format external-format) Err bitreich.org 70 i- (read-stream-content-into-string file-stream :buffer-size buffer-size))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun write-string-into-file (string pathname &key (if-exists :error) Err bitreich.org 70 i- if-does-not-exist Err bitreich.org 70 i- external-format) Err bitreich.org 70 i- "Write STRING to PATHNAME. Err bitreich.org 70 i- Err bitreich.org 70 i-The EXTERNAL-FORMAT parameter will be passed directly to WITH-OPEN-FILE Err bitreich.org 70 i-unless it's NIL, which means the system default." Err bitreich.org 70 i- (with-output-to-file (file-stream pathname :if-exists if-exists Err bitreich.org 70 i- :if-does-not-exist if-does-not-exist Err bitreich.org 70 i- :external-format external-format) Err bitreich.org 70 i- (write-sequence string file-stream))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun read-stream-content-into-byte-vector (stream &key ((%length length)) Err bitreich.org 70 i- (initial-size 4096)) Err bitreich.org 70 i- "Return \"content\" of STREAM as freshly allocated (unsigned-byte 8) vector." Err bitreich.org 70 i- (check-type length (or null non-negative-integer)) Err bitreich.org 70 i- (check-type initial-size positive-integer) Err bitreich.org 70 i- (do ((buffer (make-array (or length initial-size) Err bitreich.org 70 i- :element-type '(unsigned-byte 8))) Err bitreich.org 70 i- (offset 0) Err bitreich.org 70 i- (offset-wanted 0)) Err bitreich.org 70 i- ((or (/= offset-wanted offset) Err bitreich.org 70 i- (and length (>= offset length))) Err bitreich.org 70 i- (if (= offset (length buffer)) Err bitreich.org 70 i- buffer Err bitreich.org 70 i- (subseq buffer 0 offset))) Err bitreich.org 70 i- (unless (zerop offset) Err bitreich.org 70 i- (let ((new-buffer (make-array (* 2 (length buffer)) Err bitreich.org 70 i- :element-type '(unsigned-byte 8)))) Err bitreich.org 70 i- (replace new-buffer buffer) Err bitreich.org 70 i- (setf buffer new-buffer))) Err bitreich.org 70 i- (setf offset-wanted (length buffer) Err bitreich.org 70 i- offset (read-sequence buffer stream :start offset)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun read-file-into-byte-vector (pathname) Err bitreich.org 70 i- "Read PATHNAME into a freshly allocated (unsigned-byte 8) vector." Err bitreich.org 70 i- (with-input-from-file (stream pathname :element-type '(unsigned-byte 8)) Err bitreich.org 70 i- (read-stream-content-into-byte-vector stream '%length (file-length stream)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun write-byte-vector-into-file (bytes pathname &key (if-exists :error) Err bitreich.org 70 i- if-does-not-exist) Err bitreich.org 70 i- "Write BYTES to PATHNAME." Err bitreich.org 70 i- (check-type bytes (vector (unsigned-byte 8))) Err bitreich.org 70 i- (with-output-to-file (stream pathname :if-exists if-exists Err bitreich.org 70 i- :if-does-not-exist if-does-not-exist Err bitreich.org 70 i- :element-type '(unsigned-byte 8)) Err bitreich.org 70 i- (write-sequence bytes stream))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun copy-file (from to &key (if-to-exists :supersede) Err bitreich.org 70 i- (element-type '(unsigned-byte 8)) finish-output) Err bitreich.org 70 i- (with-input-from-file (input from :element-type element-type) Err bitreich.org 70 i- (with-output-to-file (output to :element-type element-type Err bitreich.org 70 i- :if-exists if-to-exists) Err bitreich.org 70 i- (copy-stream input output Err bitreich.org 70 i- :element-type element-type Err bitreich.org 70 i- :finish-output finish-output)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun copy-stream (input output &key (element-type (stream-element-type input)) Err bitreich.org 70 i- (buffer-size 4096) Err bitreich.org 70 i- (buffer (make-array buffer-size :element-type element-type)) Err bitreich.org 70 i- (start 0) end Err bitreich.org 70 i- finish-output) Err bitreich.org 70 i- "Reads data from INPUT and writes it to OUTPUT. Both INPUT and OUTPUT must Err bitreich.org 70 i-be streams, they will be passed to READ-SEQUENCE and WRITE-SEQUENCE and must have Err bitreich.org 70 i-compatible element-types." Err bitreich.org 70 i- (check-type start non-negative-integer) Err bitreich.org 70 i- (check-type end (or null non-negative-integer)) Err bitreich.org 70 i- (check-type buffer-size positive-integer) Err bitreich.org 70 i- (when (and end Err bitreich.org 70 i- (< end start)) Err bitreich.org 70 i- (error "END is smaller than START in ~S" 'copy-stream)) Err bitreich.org 70 i- (let ((output-position 0) Err bitreich.org 70 i- (input-position 0)) Err bitreich.org 70 i- (unless (zerop start) Err bitreich.org 70 i- ;; FIXME add platform specific optimization to skip seekable streams Err bitreich.org 70 i- (loop while (< input-position start) Err bitreich.org 70 i- do (let ((n (read-sequence buffer input Err bitreich.org 70 i- :end (min (length buffer) Err bitreich.org 70 i- (- start input-position))))) Err bitreich.org 70 i- (when (zerop n) Err bitreich.org 70 i- (error "~@" 'copy-stream start)) Err bitreich.org 70 i- (incf input-position n)))) Err bitreich.org 70 i- (assert (= input-position start)) Err bitreich.org 70 i- (loop while (or (null end) (< input-position end)) Err bitreich.org 70 i- do (let ((n (read-sequence buffer input Err bitreich.org 70 i- :end (when end Err bitreich.org 70 i- (min (length buffer) Err bitreich.org 70 i- (- end input-position)))))) Err bitreich.org 70 i- (when (zerop n) Err bitreich.org 70 i- (if end Err bitreich.org 70 i- (error "~@" 'copy-stream end) Err bitreich.org 70 i- (return))) Err bitreich.org 70 i- (incf input-position n) Err bitreich.org 70 i- (write-sequence buffer output :end n) Err bitreich.org 70 i- (incf output-position n))) Err bitreich.org 70 i- (when finish-output Err bitreich.org 70 i- (finish-output output)) Err bitreich.org 70 i- output-position)) Err bitreich.org 70 1diff --git a/3rdparties/software/alexandria-20181210-git/lists.lisp b/3rdparties/software/alexandria-20181210-git/lists.lisp /scm/clic/file/3rdparties/software/alexandria-20181210-git/lists.lisp.gph bitreich.org 70 i@@ -1,367 +0,0 @@ Err bitreich.org 70 i-(in-package :alexandria) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline safe-endp)) Err bitreich.org 70 i-(defun safe-endp (x) Err bitreich.org 70 i- (declare (optimize safety)) Err bitreich.org 70 i- (endp x)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun alist-plist (alist) Err bitreich.org 70 i- "Returns a property list containing the same keys and values as the Err bitreich.org 70 i-association list ALIST in the same order." Err bitreich.org 70 i- (let (plist) Err bitreich.org 70 i- (dolist (pair alist) Err bitreich.org 70 i- (push (car pair) plist) Err bitreich.org 70 i- (push (cdr pair) plist)) Err bitreich.org 70 i- (nreverse plist))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun plist-alist (plist) Err bitreich.org 70 i- "Returns an association list containing the same keys and values as the Err bitreich.org 70 i-property list PLIST in the same order." Err bitreich.org 70 i- (let (alist) Err bitreich.org 70 i- (do ((tail plist (cddr tail))) Err bitreich.org 70 i- ((safe-endp tail) (nreverse alist)) Err bitreich.org 70 i- (push (cons (car tail) (cadr tail)) alist)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline racons)) Err bitreich.org 70 i-(defun racons (key value ralist) Err bitreich.org 70 i- (acons value key ralist)) Err bitreich.org 70 i- Err bitreich.org 70 i-(macrolet Err bitreich.org 70 i- ((define-alist-get (name get-entry get-value-from-entry add doc) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (declaim (inline ,name)) Err bitreich.org 70 i- (defun ,name (alist key &key (test 'eql)) Err bitreich.org 70 i- ,doc Err bitreich.org 70 i- (let ((entry (,get-entry key alist :test test))) Err bitreich.org 70 i- (values (,get-value-from-entry entry) entry))) Err bitreich.org 70 i- (define-setf-expander ,name (place key &key (test ''eql) Err bitreich.org 70 i- &environment env) Err bitreich.org 70 i- (multiple-value-bind Err bitreich.org 70 i- (temporary-variables initforms newvals setter getter) Err bitreich.org 70 i- (get-setf-expansion place env) Err bitreich.org 70 i- (when (cdr newvals) Err bitreich.org 70 i- (error "~A cannot store multiple values in one place" ',name)) Err bitreich.org 70 i- (with-unique-names (new-value key-val test-val alist entry) Err bitreich.org 70 i- (values Err bitreich.org 70 i- (append temporary-variables Err bitreich.org 70 i- (list alist Err bitreich.org 70 i- key-val Err bitreich.org 70 i- test-val Err bitreich.org 70 i- entry)) Err bitreich.org 70 i- (append initforms Err bitreich.org 70 i- (list getter Err bitreich.org 70 i- key Err bitreich.org 70 i- test Err bitreich.org 70 i- `(,',get-entry ,key-val ,alist :test ,test-val))) Err bitreich.org 70 i- `(,new-value) Err bitreich.org 70 i- `(cond Err bitreich.org 70 i- (,entry Err bitreich.org 70 i- (setf (,',get-value-from-entry ,entry) ,new-value)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (let ,newvals Err bitreich.org 70 i- (setf ,(first newvals) (,',add ,key ,new-value ,alist)) Err bitreich.org 70 i- ,setter Err bitreich.org 70 i- ,new-value))) Err bitreich.org 70 i- `(,',get-value-from-entry ,entry)))))))) Err bitreich.org 70 i- (define-alist-get assoc-value assoc cdr acons Err bitreich.org 70 i-"ASSOC-VALUE is an alist accessor very much like ASSOC, but it can Err bitreich.org 70 i-be used with SETF.") Err bitreich.org 70 i- (define-alist-get rassoc-value rassoc car racons Err bitreich.org 70 i-"RASSOC-VALUE is an alist accessor very much like RASSOC, but it can Err bitreich.org 70 i-be used with SETF.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun malformed-plist (plist) Err bitreich.org 70 i- (error "Malformed plist: ~S" plist)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro doplist ((key val plist &optional values) &body body) Err bitreich.org 70 i- "Iterates over elements of PLIST. BODY can be preceded by Err bitreich.org 70 i-declarations, and is like a TAGBODY. RETURN may be used to terminate Err bitreich.org 70 i-the iteration early. If RETURN is not used, returns VALUES." Err bitreich.org 70 i- (multiple-value-bind (forms declarations) (parse-body body) Err bitreich.org 70 i- (with-gensyms (tail loop results) Err bitreich.org 70 i- `(block nil Err bitreich.org 70 i- (flet ((,results () Err bitreich.org 70 i- (let (,key ,val) Err bitreich.org 70 i- (declare (ignorable ,key ,val)) Err bitreich.org 70 i- (return ,values)))) Err bitreich.org 70 i- (let* ((,tail ,plist) Err bitreich.org 70 i- (,key (if ,tail Err bitreich.org 70 i- (pop ,tail) Err bitreich.org 70 i- (,results))) Err bitreich.org 70 i- (,val (if ,tail Err bitreich.org 70 i- (pop ,tail) Err bitreich.org 70 i- (malformed-plist ',plist)))) Err bitreich.org 70 i- (declare (ignorable ,key ,val)) Err bitreich.org 70 i- ,@declarations Err bitreich.org 70 i- (tagbody Err bitreich.org 70 i- ,loop Err bitreich.org 70 i- ,@forms Err bitreich.org 70 i- (setf ,key (if ,tail Err bitreich.org 70 i- (pop ,tail) Err bitreich.org 70 i- (,results)) Err bitreich.org 70 i- ,val (if ,tail Err bitreich.org 70 i- (pop ,tail) Err bitreich.org 70 i- (malformed-plist ',plist))) Err bitreich.org 70 i- (go ,loop)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-modify-macro appendf (&rest lists) append Err bitreich.org 70 i- "Modify-macro for APPEND. Appends LISTS to the place designated by the first Err bitreich.org 70 i-argument.") Err bitreich.org 70 i- Err bitreich.org 70 i-(define-modify-macro nconcf (&rest lists) nconc Err bitreich.org 70 i- "Modify-macro for NCONC. Concatenates LISTS to place designated by the first Err bitreich.org 70 i-argument.") Err bitreich.org 70 i- Err bitreich.org 70 i-(define-modify-macro unionf (list &rest args) union Err bitreich.org 70 i- "Modify-macro for UNION. Saves the union of LIST and the contents of the Err bitreich.org 70 i-place designated by the first argument to the designated place.") Err bitreich.org 70 i- Err bitreich.org 70 i-(define-modify-macro nunionf (list &rest args) nunion Err bitreich.org 70 i- "Modify-macro for NUNION. Saves the union of LIST and the contents of the Err bitreich.org 70 i-place designated by the first argument to the designated place. May modify Err bitreich.org 70 i-either argument.") Err bitreich.org 70 i- Err bitreich.org 70 i-(define-modify-macro reversef () reverse Err bitreich.org 70 i- "Modify-macro for REVERSE. Copies and reverses the list stored in the given Err bitreich.org 70 i-place and saves back the result into the place.") Err bitreich.org 70 i- Err bitreich.org 70 i-(define-modify-macro nreversef () nreverse Err bitreich.org 70 i- "Modify-macro for NREVERSE. Reverses the list stored in the given place by Err bitreich.org 70 i-destructively modifying it and saves back the result into the place.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun circular-list (&rest elements) Err bitreich.org 70 i- "Creates a circular list of ELEMENTS." Err bitreich.org 70 i- (let ((cycle (copy-list elements))) Err bitreich.org 70 i- (nconc cycle cycle))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun circular-list-p (object) Err bitreich.org 70 i- "Returns true if OBJECT is a circular list, NIL otherwise." Err bitreich.org 70 i- (and (listp object) Err bitreich.org 70 i- (do ((fast object (cddr fast)) Err bitreich.org 70 i- (slow (cons (car object) (cdr object)) (cdr slow))) Err bitreich.org 70 i- (nil) Err bitreich.org 70 i- (unless (and (consp fast) (listp (cdr fast))) Err bitreich.org 70 i- (return nil)) Err bitreich.org 70 i- (when (eq fast slow) Err bitreich.org 70 i- (return t))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun circular-tree-p (object) Err bitreich.org 70 i- "Returns true if OBJECT is a circular tree, NIL otherwise." Err bitreich.org 70 i- (labels ((circularp (object seen) Err bitreich.org 70 i- (and (consp object) Err bitreich.org 70 i- (do ((fast (cons (car object) (cdr object)) (cddr fast)) Err bitreich.org 70 i- (slow object (cdr slow))) Err bitreich.org 70 i- (nil) Err bitreich.org 70 i- (when (or (eq fast slow) (member slow seen)) Err bitreich.org 70 i- (return-from circular-tree-p t)) Err bitreich.org 70 i- (when (or (not (consp fast)) (not (consp (cdr slow)))) Err bitreich.org 70 i- (return Err bitreich.org 70 i- (do ((tail object (cdr tail))) Err bitreich.org 70 i- ((not (consp tail)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- (let ((elt (car tail))) Err bitreich.org 70 i- (circularp elt (cons object seen)))))))))) Err bitreich.org 70 i- (circularp object nil))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun proper-list-p (object) Err bitreich.org 70 i- "Returns true if OBJECT is a proper list." Err bitreich.org 70 i- (cond ((not object) Err bitreich.org 70 i- t) Err bitreich.org 70 i- ((consp object) Err bitreich.org 70 i- (do ((fast object (cddr fast)) Err bitreich.org 70 i- (slow (cons (car object) (cdr object)) (cdr slow))) Err bitreich.org 70 i- (nil) Err bitreich.org 70 i- (unless (and (listp fast) (consp (cdr fast))) Err bitreich.org 70 i- (return (and (listp fast) (not (cdr fast))))) Err bitreich.org 70 i- (when (eq fast slow) Err bitreich.org 70 i- (return nil)))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- nil))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype proper-list () Err bitreich.org 70 i- "Type designator for proper lists. Implemented as a SATISFIES type, hence Err bitreich.org 70 i-not recommended for performance intensive use. Main usefullness as a type Err bitreich.org 70 i-designator of the expected type in a TYPE-ERROR." Err bitreich.org 70 i- `(and list (satisfies proper-list-p))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun circular-list-error (list) Err bitreich.org 70 i- (error 'type-error Err bitreich.org 70 i- :datum list Err bitreich.org 70 i- :expected-type '(and list (not circular-list)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(macrolet ((def (name lambda-list doc step declare ret1 ret2) Err bitreich.org 70 i- (assert (member 'list lambda-list)) Err bitreich.org 70 i- `(defun ,name ,lambda-list Err bitreich.org 70 i- ,doc Err bitreich.org 70 i- (do ((last list fast) Err bitreich.org 70 i- (fast list (cddr fast)) Err bitreich.org 70 i- (slow (cons (car list) (cdr list)) (cdr slow)) Err bitreich.org 70 i- ,@(when step (list step))) Err bitreich.org 70 i- (nil) Err bitreich.org 70 i- (declare (dynamic-extent slow) ,@(when declare (list declare)) Err bitreich.org 70 i- (ignorable last)) Err bitreich.org 70 i- (when (safe-endp fast) Err bitreich.org 70 i- (return ,ret1)) Err bitreich.org 70 i- (when (safe-endp (cdr fast)) Err bitreich.org 70 i- (return ,ret2)) Err bitreich.org 70 i- (when (eq fast slow) Err bitreich.org 70 i- (circular-list-error list)))))) Err bitreich.org 70 i- (def proper-list-length (list) Err bitreich.org 70 i- "Returns length of LIST, signalling an error if it is not a proper list." Err bitreich.org 70 i- (n 1 (+ n 2)) Err bitreich.org 70 i- ;; KLUDGE: Most implementations don't actually support lists with bignum Err bitreich.org 70 i- ;; elements -- and this is WAY faster on most implementations then declaring Err bitreich.org 70 i- ;; N to be an UNSIGNED-BYTE. Err bitreich.org 70 i- (fixnum n) Err bitreich.org 70 i- (1- n) Err bitreich.org 70 i- n) Err bitreich.org 70 i- Err bitreich.org 70 i- (def lastcar (list) Err bitreich.org 70 i- "Returns the last element of LIST. Signals a type-error if LIST is not a Err bitreich.org 70 i-proper list." Err bitreich.org 70 i- nil Err bitreich.org 70 i- nil Err bitreich.org 70 i- (cadr last) Err bitreich.org 70 i- (car fast)) Err bitreich.org 70 i- Err bitreich.org 70 i- (def (setf lastcar) (object list) Err bitreich.org 70 i- "Sets the last element of LIST. Signals a type-error if LIST is not a proper Err bitreich.org 70 i-list." Err bitreich.org 70 i- nil Err bitreich.org 70 i- nil Err bitreich.org 70 i- (setf (cadr last) object) Err bitreich.org 70 i- (setf (car fast) object))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-circular-list (length &key initial-element) Err bitreich.org 70 i- "Creates a circular list of LENGTH with the given INITIAL-ELEMENT." Err bitreich.org 70 i- (let ((cycle (make-list length :initial-element initial-element))) Err bitreich.org 70 i- (nconc cycle cycle))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype circular-list () Err bitreich.org 70 i- "Type designator for circular lists. Implemented as a SATISFIES type, so not Err bitreich.org 70 i-recommended for performance intensive use. Main usefullness as the Err bitreich.org 70 i-expected-type designator of a TYPE-ERROR." Err bitreich.org 70 i- `(satisfies circular-list-p)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ensure-car (thing) Err bitreich.org 70 i- "If THING is a CONS, its CAR is returned. Otherwise THING is returned." Err bitreich.org 70 i- (if (consp thing) Err bitreich.org 70 i- (car thing) Err bitreich.org 70 i- thing)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ensure-cons (cons) Err bitreich.org 70 i- "If CONS is a cons, it is returned. Otherwise returns a fresh cons with CONS Err bitreich.org 70 i- in the car, and NIL in the cdr." Err bitreich.org 70 i- (if (consp cons) Err bitreich.org 70 i- cons Err bitreich.org 70 i- (cons cons nil))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ensure-list (list) Err bitreich.org 70 i- "If LIST is a list, it is returned. Otherwise returns the list designated by LIST." Err bitreich.org 70 i- (if (listp list) Err bitreich.org 70 i- list Err bitreich.org 70 i- (list list))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun remove-from-plist (plist &rest keys) Err bitreich.org 70 i- "Returns a propery-list with same keys and values as PLIST, except that keys Err bitreich.org 70 i-in the list designated by KEYS and values corresponding to them are removed. Err bitreich.org 70 i-The returned property-list may share structure with the PLIST, but PLIST is Err bitreich.org 70 i-not destructively modified. Keys are compared using EQ." Err bitreich.org 70 i- (declare (optimize (speed 3))) Err bitreich.org 70 i- ;; FIXME: possible optimization: (remove-from-plist '(:x 0 :a 1 :b 2) :a) Err bitreich.org 70 i- ;; could return the tail without consing up a new list. Err bitreich.org 70 i- (loop for (key . rest) on plist by #'cddr Err bitreich.org 70 i- do (assert rest () "Expected a proper plist, got ~S" plist) Err bitreich.org 70 i- unless (member key keys :test #'eq) Err bitreich.org 70 i- collect key and collect (first rest))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun delete-from-plist (plist &rest keys) Err bitreich.org 70 i- "Just like REMOVE-FROM-PLIST, but this version may destructively modify the Err bitreich.org 70 i-provided PLIST." Err bitreich.org 70 i- (declare (optimize speed)) Err bitreich.org 70 i- (loop with head = plist Err bitreich.org 70 i- with tail = nil ; a nil tail means an empty result so far Err bitreich.org 70 i- for (key . rest) on plist by #'cddr Err bitreich.org 70 i- do (assert rest () "Expected a proper plist, got ~S" plist) Err bitreich.org 70 i- (if (member key keys :test #'eq) Err bitreich.org 70 i- ;; skip over this pair Err bitreich.org 70 i- (let ((next (cdr rest))) Err bitreich.org 70 i- (if tail Err bitreich.org 70 i- (setf (cdr tail) next) Err bitreich.org 70 i- (setf head next))) Err bitreich.org 70 i- ;; keep this pair Err bitreich.org 70 i- (setf tail rest)) Err bitreich.org 70 i- finally (return head))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-modify-macro remove-from-plistf (&rest keys) remove-from-plist Err bitreich.org 70 i- "Modify macro for REMOVE-FROM-PLIST.") Err bitreich.org 70 i-(define-modify-macro delete-from-plistf (&rest keys) delete-from-plist Err bitreich.org 70 i- "Modify macro for DELETE-FROM-PLIST.") Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline sans)) Err bitreich.org 70 i-(defun sans (plist &rest keys) Err bitreich.org 70 i- "Alias of REMOVE-FROM-PLIST for backward compatibility." Err bitreich.org 70 i- (apply #'remove-from-plist plist keys)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun mappend (function &rest lists) Err bitreich.org 70 i- "Applies FUNCTION to respective element(s) of each LIST, appending all the Err bitreich.org 70 i-all the result list to a single list. FUNCTION must return a list." Err bitreich.org 70 i- (loop for results in (apply #'mapcar function lists) Err bitreich.org 70 i- append results)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun setp (object &key (test #'eql) (key #'identity)) Err bitreich.org 70 i- "Returns true if OBJECT is a list that denotes a set, NIL otherwise. A list Err bitreich.org 70 i-denotes a set if each element of the list is unique under KEY and TEST." Err bitreich.org 70 i- (and (listp object) Err bitreich.org 70 i- (let (seen) Err bitreich.org 70 i- (dolist (elt object t) Err bitreich.org 70 i- (let ((key (funcall key elt))) Err bitreich.org 70 i- (if (member key seen :test test) Err bitreich.org 70 i- (return nil) Err bitreich.org 70 i- (push key seen))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun set-equal (list1 list2 &key (test #'eql) (key nil keyp)) Err bitreich.org 70 i- "Returns true if every element of LIST1 matches some element of LIST2 and Err bitreich.org 70 i-every element of LIST2 matches some element of LIST1. Otherwise returns false." Err bitreich.org 70 i- (let ((keylist1 (if keyp (mapcar key list1) list1)) Err bitreich.org 70 i- (keylist2 (if keyp (mapcar key list2) list2))) Err bitreich.org 70 i- (and (dolist (elt keylist1 t) Err bitreich.org 70 i- (or (member elt keylist2 :test test) Err bitreich.org 70 i- (return nil))) Err bitreich.org 70 i- (dolist (elt keylist2 t) Err bitreich.org 70 i- (or (member elt keylist1 :test test) Err bitreich.org 70 i- (return nil)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun map-product (function list &rest more-lists) Err bitreich.org 70 i- "Returns a list containing the results of calling FUNCTION with one argument Err bitreich.org 70 i-from LIST, and one from each of MORE-LISTS for each combination of arguments. Err bitreich.org 70 i-In other words, returns the product of LIST and MORE-LISTS using FUNCTION. Err bitreich.org 70 i- Err bitreich.org 70 i-Example: Err bitreich.org 70 i- Err bitreich.org 70 i- (map-product 'list '(1 2) '(3 4) '(5 6)) Err bitreich.org 70 i- => ((1 3 5) (1 3 6) (1 4 5) (1 4 6) Err bitreich.org 70 i- (2 3 5) (2 3 6) (2 4 5) (2 4 6)) Err bitreich.org 70 i-" Err bitreich.org 70 i- (labels ((%map-product (f lists) Err bitreich.org 70 i- (let ((more (cdr lists)) Err bitreich.org 70 i- (one (car lists))) Err bitreich.org 70 i- (if (not more) Err bitreich.org 70 i- (mapcar f one) Err bitreich.org 70 i- (mappend (lambda (x) Err bitreich.org 70 i- (%map-product (curry f x) more)) Err bitreich.org 70 i- one))))) Err bitreich.org 70 i- (%map-product (ensure-function function) (cons list more-lists)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun flatten (tree) Err bitreich.org 70 i- "Traverses the tree in order, collecting non-null leaves into a list." Err bitreich.org 70 i- (let (list) Err bitreich.org 70 i- (labels ((traverse (subtree) Err bitreich.org 70 i- (when subtree Err bitreich.org 70 i- (if (consp subtree) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (traverse (car subtree)) Err bitreich.org 70 i- (traverse (cdr subtree))) Err bitreich.org 70 i- (push subtree list))))) Err bitreich.org 70 i- (traverse tree)) Err bitreich.org 70 i- (nreverse list))) Err bitreich.org 70 1diff --git a/3rdparties/software/alexandria-20181210-git/macros.lisp b/3rdparties/software/alexandria-20181210-git/macros.lisp /scm/clic/file/3rdparties/software/alexandria-20181210-git/macros.lisp.gph bitreich.org 70 i@@ -1,314 +0,0 @@ Err bitreich.org 70 i-(in-package :alexandria) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-gensyms (names &body forms) Err bitreich.org 70 i- "Binds each variable named by a symbol in NAMES to a unique symbol around Err bitreich.org 70 i-FORMS. Each of NAMES must either be either a symbol, or of the form: Err bitreich.org 70 i- Err bitreich.org 70 i- (symbol string-designator) Err bitreich.org 70 i- Err bitreich.org 70 i-Bare symbols appearing in NAMES are equivalent to: Err bitreich.org 70 i- Err bitreich.org 70 i- (symbol symbol) Err bitreich.org 70 i- Err bitreich.org 70 i-The string-designator is used as the argument to GENSYM when constructing the Err bitreich.org 70 i-unique symbol the named variable will be bound to." Err bitreich.org 70 i- `(let ,(mapcar (lambda (name) Err bitreich.org 70 i- (multiple-value-bind (symbol string) Err bitreich.org 70 i- (etypecase name Err bitreich.org 70 i- (symbol Err bitreich.org 70 i- (values name (symbol-name name))) Err bitreich.org 70 i- ((cons symbol (cons string-designator null)) Err bitreich.org 70 i- (values (first name) (string (second name))))) Err bitreich.org 70 i- `(,symbol (gensym ,string)))) Err bitreich.org 70 i- names) Err bitreich.org 70 i- ,@forms)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-unique-names (names &body forms) Err bitreich.org 70 i- "Alias for WITH-GENSYMS." Err bitreich.org 70 i- `(with-gensyms ,names ,@forms)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro once-only (specs &body forms) Err bitreich.org 70 i- "Evaluates FORMS with symbols specified in SPECS rebound to temporary Err bitreich.org 70 i-variables, ensuring that each initform is evaluated only once. Err bitreich.org 70 i- Err bitreich.org 70 i-Each of SPECS must either be a symbol naming the variable to be rebound, or of Err bitreich.org 70 i-the form: Err bitreich.org 70 i- Err bitreich.org 70 i- (symbol initform) Err bitreich.org 70 i- Err bitreich.org 70 i-Bare symbols in SPECS are equivalent to Err bitreich.org 70 i- Err bitreich.org 70 i- (symbol symbol) Err bitreich.org 70 i- Err bitreich.org 70 i-Example: Err bitreich.org 70 i- Err bitreich.org 70 i- (defmacro cons1 (x) (once-only (x) `(cons ,x ,x))) Err bitreich.org 70 i- (let ((y 0)) (cons1 (incf y))) => (1 . 1) Err bitreich.org 70 i-" Err bitreich.org 70 i- (let ((gensyms (make-gensym-list (length specs) "ONCE-ONLY")) Err bitreich.org 70 i- (names-and-forms (mapcar (lambda (spec) Err bitreich.org 70 i- (etypecase spec Err bitreich.org 70 i- (list Err bitreich.org 70 i- (destructuring-bind (name form) spec Err bitreich.org 70 i- (cons name form))) Err bitreich.org 70 i- (symbol Err bitreich.org 70 i- (cons spec spec)))) Err bitreich.org 70 i- specs))) Err bitreich.org 70 i- ;; bind in user-macro Err bitreich.org 70 i- `(let ,(mapcar (lambda (g n) (list g `(gensym ,(string (car n))))) Err bitreich.org 70 i- gensyms names-and-forms) Err bitreich.org 70 i- ;; bind in final expansion Err bitreich.org 70 i- `(let (,,@(mapcar (lambda (g n) Err bitreich.org 70 i- ``(,,g ,,(cdr n))) Err bitreich.org 70 i- gensyms names-and-forms)) Err bitreich.org 70 i- ;; bind in user-macro Err bitreich.org 70 i- ,(let ,(mapcar (lambda (n g) (list (car n) g)) Err bitreich.org 70 i- names-and-forms gensyms) Err bitreich.org 70 i- ,@forms))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun parse-body (body &key documentation whole) Err bitreich.org 70 i- "Parses BODY into (values remaining-forms declarations doc-string). Err bitreich.org 70 i-Documentation strings are recognized only if DOCUMENTATION is true. Err bitreich.org 70 i-Syntax errors in body are signalled and WHOLE is used in the signal Err bitreich.org 70 i-arguments when given." Err bitreich.org 70 i- (let ((doc nil) Err bitreich.org 70 i- (decls nil) Err bitreich.org 70 i- (current nil)) Err bitreich.org 70 i- (tagbody Err bitreich.org 70 i- :declarations Err bitreich.org 70 i- (setf current (car body)) Err bitreich.org 70 i- (when (and documentation (stringp current) (cdr body)) Err bitreich.org 70 i- (if doc Err bitreich.org 70 i- (error "Too many documentation strings in ~S." (or whole body)) Err bitreich.org 70 i- (setf doc (pop body))) Err bitreich.org 70 i- (go :declarations)) Err bitreich.org 70 i- (when (and (listp current) (eql (first current) 'declare)) Err bitreich.org 70 i- (push (pop body) decls) Err bitreich.org 70 i- (go :declarations))) Err bitreich.org 70 i- (values body (nreverse decls) doc))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun parse-ordinary-lambda-list (lambda-list &key (normalize t) Err bitreich.org 70 i- allow-specializers Err bitreich.org 70 i- (normalize-optional normalize) Err bitreich.org 70 i- (normalize-keyword normalize) Err bitreich.org 70 i- (normalize-auxilary normalize)) Err bitreich.org 70 i- "Parses an ordinary lambda-list, returning as multiple values: Err bitreich.org 70 i- Err bitreich.org 70 i-1. Required parameters. Err bitreich.org 70 i- Err bitreich.org 70 i-2. Optional parameter specifications, normalized into form: Err bitreich.org 70 i- Err bitreich.org 70 i- (name init suppliedp) Err bitreich.org 70 i- Err bitreich.org 70 i-3. Name of the rest parameter, or NIL. Err bitreich.org 70 i- Err bitreich.org 70 i-4. Keyword parameter specifications, normalized into form: Err bitreich.org 70 i- Err bitreich.org 70 i- ((keyword-name name) init suppliedp) Err bitreich.org 70 i- Err bitreich.org 70 i-5. Boolean indicating &ALLOW-OTHER-KEYS presence. Err bitreich.org 70 i- Err bitreich.org 70 i-6. &AUX parameter specifications, normalized into form Err bitreich.org 70 i- Err bitreich.org 70 i- (name init). Err bitreich.org 70 i- Err bitreich.org 70 i-7. Existence of &KEY in the lambda-list. Err bitreich.org 70 i- Err bitreich.org 70 i-Signals a PROGRAM-ERROR is the lambda-list is malformed." Err bitreich.org 70 i- (let ((state :required) Err bitreich.org 70 i- (allow-other-keys nil) Err bitreich.org 70 i- (auxp nil) Err bitreich.org 70 i- (required nil) Err bitreich.org 70 i- (optional nil) Err bitreich.org 70 i- (rest nil) Err bitreich.org 70 i- (keys nil) Err bitreich.org 70 i- (keyp nil) Err bitreich.org 70 i- (aux nil)) Err bitreich.org 70 i- (labels ((fail (elt) Err bitreich.org 70 i- (simple-program-error "Misplaced ~S in ordinary lambda-list:~% ~S" Err bitreich.org 70 i- elt lambda-list)) Err bitreich.org 70 i- (check-variable (elt what &optional (allow-specializers allow-specializers)) Err bitreich.org 70 i- (unless (and (or (symbolp elt) Err bitreich.org 70 i- (and allow-specializers Err bitreich.org 70 i- (consp elt) (= 2 (length elt)) (symbolp (first elt)))) Err bitreich.org 70 i- (not (constantp elt))) Err bitreich.org 70 i- (simple-program-error "Invalid ~A ~S in ordinary lambda-list:~% ~S" Err bitreich.org 70 i- what elt lambda-list))) Err bitreich.org 70 i- (check-spec (spec what) Err bitreich.org 70 i- (destructuring-bind (init suppliedp) spec Err bitreich.org 70 i- (declare (ignore init)) Err bitreich.org 70 i- (check-variable suppliedp what nil)))) Err bitreich.org 70 i- (dolist (elt lambda-list) Err bitreich.org 70 i- (case elt Err bitreich.org 70 i- (&optional Err bitreich.org 70 i- (if (eq state :required) Err bitreich.org 70 i- (setf state elt) Err bitreich.org 70 i- (fail elt))) Err bitreich.org 70 i- (&rest Err bitreich.org 70 i- (if (member state '(:required &optional)) Err bitreich.org 70 i- (setf state elt) Err bitreich.org 70 i- (fail elt))) Err bitreich.org 70 i- (&key Err bitreich.org 70 i- (if (member state '(:required &optional :after-rest)) Err bitreich.org 70 i- (setf state elt) Err bitreich.org 70 i- (fail elt)) Err bitreich.org 70 i- (setf keyp t)) Err bitreich.org 70 i- (&allow-other-keys Err bitreich.org 70 i- (if (eq state '&key) Err bitreich.org 70 i- (setf allow-other-keys t Err bitreich.org 70 i- state elt) Err bitreich.org 70 i- (fail elt))) Err bitreich.org 70 i- (&aux Err bitreich.org 70 i- (cond ((eq state '&rest) Err bitreich.org 70 i- (fail elt)) Err bitreich.org 70 i- (auxp Err bitreich.org 70 i- (simple-program-error "Multiple ~S in ordinary lambda-list:~% ~S" Err bitreich.org 70 i- elt lambda-list)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (setf auxp t Err bitreich.org 70 i- state elt)) Err bitreich.org 70 i- )) Err bitreich.org 70 i- (otherwise Err bitreich.org 70 i- (when (member elt '#.(set-difference lambda-list-keywords Err bitreich.org 70 i- '(&optional &rest &key &allow-other-keys &aux))) Err bitreich.org 70 i- (simple-program-error Err bitreich.org 70 i- "Bad lambda-list keyword ~S in ordinary lambda-list:~% ~S" Err bitreich.org 70 i- elt lambda-list)) Err bitreich.org 70 i- (case state Err bitreich.org 70 i- (:required Err bitreich.org 70 i- (check-variable elt "required parameter") Err bitreich.org 70 i- (push elt required)) Err bitreich.org 70 i- (&optional Err bitreich.org 70 i- (cond ((consp elt) Err bitreich.org 70 i- (destructuring-bind (name &rest tail) elt Err bitreich.org 70 i- (check-variable name "optional parameter") Err bitreich.org 70 i- (cond ((cdr tail) Err bitreich.org 70 i- (check-spec tail "optional-supplied-p parameter")) Err bitreich.org 70 i- ((and normalize-optional tail) Err bitreich.org 70 i- (setf elt (append elt '(nil)))) Err bitreich.org 70 i- (normalize-optional Err bitreich.org 70 i- (setf elt (append elt '(nil nil))))))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (check-variable elt "optional parameter") Err bitreich.org 70 i- (when normalize-optional Err bitreich.org 70 i- (setf elt (cons elt '(nil nil)))))) Err bitreich.org 70 i- (push (ensure-list elt) optional)) Err bitreich.org 70 i- (&rest Err bitreich.org 70 i- (check-variable elt "rest parameter") Err bitreich.org 70 i- (setf rest elt Err bitreich.org 70 i- state :after-rest)) Err bitreich.org 70 i- (&key Err bitreich.org 70 i- (cond ((consp elt) Err bitreich.org 70 i- (destructuring-bind (var-or-kv &rest tail) elt Err bitreich.org 70 i- (cond ((consp var-or-kv) Err bitreich.org 70 i- (destructuring-bind (keyword var) var-or-kv Err bitreich.org 70 i- (unless (symbolp keyword) Err bitreich.org 70 i- (simple-program-error "Invalid keyword name ~S in ordinary ~ Err bitreich.org 70 i- lambda-list:~% ~S" Err bitreich.org 70 i- keyword lambda-list)) Err bitreich.org 70 i- (check-variable var "keyword parameter"))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (check-variable var-or-kv "keyword parameter") Err bitreich.org 70 i- (when normalize-keyword Err bitreich.org 70 i- (setf var-or-kv (list (make-keyword var-or-kv) var-or-kv))))) Err bitreich.org 70 i- (cond ((cdr tail) Err bitreich.org 70 i- (check-spec tail "keyword-supplied-p parameter")) Err bitreich.org 70 i- ((and normalize-keyword tail) Err bitreich.org 70 i- (setf tail (append tail '(nil)))) Err bitreich.org 70 i- (normalize-keyword Err bitreich.org 70 i- (setf tail '(nil nil)))) Err bitreich.org 70 i- (setf elt (cons var-or-kv tail)))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (check-variable elt "keyword parameter") Err bitreich.org 70 i- (setf elt (if normalize-keyword Err bitreich.org 70 i- (list (list (make-keyword elt) elt) nil nil) Err bitreich.org 70 i- elt)))) Err bitreich.org 70 i- (push elt keys)) Err bitreich.org 70 i- (&aux Err bitreich.org 70 i- (if (consp elt) Err bitreich.org 70 i- (destructuring-bind (var &optional init) elt Err bitreich.org 70 i- (declare (ignore init)) Err bitreich.org 70 i- (check-variable var "&aux parameter")) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (check-variable elt "&aux parameter") Err bitreich.org 70 i- (setf elt (list* elt (when normalize-auxilary Err bitreich.org 70 i- '(nil)))))) Err bitreich.org 70 i- (push elt aux)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (simple-program-error "Invalid ordinary lambda-list:~% ~S" lambda-list))))))) Err bitreich.org 70 i- (values (nreverse required) (nreverse optional) rest (nreverse keys) Err bitreich.org 70 i- allow-other-keys (nreverse aux) keyp))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; DESTRUCTURING-*CASE Err bitreich.org 70 i- Err bitreich.org 70 i-(defun expand-destructuring-case (key clauses case) Err bitreich.org 70 i- (once-only (key) Err bitreich.org 70 i- `(if (typep ,key 'cons) Err bitreich.org 70 i- (,case (car ,key) Err bitreich.org 70 i- ,@(mapcar (lambda (clause) Err bitreich.org 70 i- (destructuring-bind ((keys . lambda-list) &body body) clause Err bitreich.org 70 i- `(,keys Err bitreich.org 70 i- (destructuring-bind ,lambda-list (cdr ,key) Err bitreich.org 70 i- ,@body)))) Err bitreich.org 70 i- clauses)) Err bitreich.org 70 i- (error "Invalid key to DESTRUCTURING-~S: ~S" ',case ,key)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro destructuring-case (keyform &body clauses) Err bitreich.org 70 i- "DESTRUCTURING-CASE, -CCASE, and -ECASE are a combination of CASE and DESTRUCTURING-BIND. Err bitreich.org 70 i-KEYFORM must evaluate to a CONS. Err bitreich.org 70 i- Err bitreich.org 70 i-Clauses are of the form: Err bitreich.org 70 i- Err bitreich.org 70 i- ((CASE-KEYS . DESTRUCTURING-LAMBDA-LIST) FORM*) Err bitreich.org 70 i- Err bitreich.org 70 i-The clause whose CASE-KEYS matches CAR of KEY, as if by CASE, CCASE, or ECASE, Err bitreich.org 70 i-is selected, and FORMs are then executed with CDR of KEY is destructured and Err bitreich.org 70 i-bound by the DESTRUCTURING-LAMBDA-LIST. Err bitreich.org 70 i- Err bitreich.org 70 i-Example: Err bitreich.org 70 i- Err bitreich.org 70 i- (defun dcase (x) Err bitreich.org 70 i- (destructuring-case x Err bitreich.org 70 i- ((:foo a b) Err bitreich.org 70 i- (format nil \"foo: ~S, ~S\" a b)) Err bitreich.org 70 i- ((:bar &key a b) Err bitreich.org 70 i- (format nil \"bar: ~S, ~S\" a b)) Err bitreich.org 70 i- (((:alt1 :alt2) a) Err bitreich.org 70 i- (format nil \"alt: ~S\" a)) Err bitreich.org 70 i- ((t &rest rest) Err bitreich.org 70 i- (format nil \"unknown: ~S\" rest)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (dcase (list :foo 1 2)) ; => \"foo: 1, 2\" Err bitreich.org 70 i- (dcase (list :bar :a 1 :b 2)) ; => \"bar: 1, 2\" Err bitreich.org 70 i- (dcase (list :alt1 1)) ; => \"alt: 1\" Err bitreich.org 70 i- (dcase (list :alt2 2)) ; => \"alt: 2\" Err bitreich.org 70 i- (dcase (list :quux 1 2 3)) ; => \"unknown: 1, 2, 3\" Err bitreich.org 70 i- Err bitreich.org 70 i- (defun decase (x) Err bitreich.org 70 i- (destructuring-case x Err bitreich.org 70 i- ((:foo a b) Err bitreich.org 70 i- (format nil \"foo: ~S, ~S\" a b)) Err bitreich.org 70 i- ((:bar &key a b) Err bitreich.org 70 i- (format nil \"bar: ~S, ~S\" a b)) Err bitreich.org 70 i- (((:alt1 :alt2) a) Err bitreich.org 70 i- (format nil \"alt: ~S\" a)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (decase (list :foo 1 2)) ; => \"foo: 1, 2\" Err bitreich.org 70 i- (decase (list :bar :a 1 :b 2)) ; => \"bar: 1, 2\" Err bitreich.org 70 i- (decase (list :alt1 1)) ; => \"alt: 1\" Err bitreich.org 70 i- (decase (list :alt2 2)) ; => \"alt: 2\" Err bitreich.org 70 i- (decase (list :quux 1 2 3)) ; =| error Err bitreich.org 70 i-" Err bitreich.org 70 i- (expand-destructuring-case keyform clauses 'case)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro destructuring-ccase (keyform &body clauses) Err bitreich.org 70 i- (expand-destructuring-case keyform clauses 'ccase)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro destructuring-ecase (keyform &body clauses) Err bitreich.org 70 i- (expand-destructuring-case keyform clauses 'ecase)) Err bitreich.org 70 i- Err bitreich.org 70 i-(dolist (name '(destructuring-ccase destructuring-ecase)) Err bitreich.org 70 i- (setf (documentation name 'function) (documentation 'destructuring-case 'function))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/alexandria-20181210-git/numbers.lisp b/3rdparties/software/alexandria-20181210-git/numbers.lisp /scm/clic/file/3rdparties/software/alexandria-20181210-git/numbers.lisp.gph bitreich.org 70 i@@ -1,260 +0,0 @@ Err bitreich.org 70 i-(in-package :alexandria) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline clamp)) Err bitreich.org 70 i-(defun clamp (number min max) Err bitreich.org 70 i- "Clamps the NUMBER into [min, max] range. Returns MIN if NUMBER is lesser then Err bitreich.org 70 i-MIN and MAX if NUMBER is greater then MAX, otherwise returns NUMBER." Err bitreich.org 70 i- (if (< number min) Err bitreich.org 70 i- min Err bitreich.org 70 i- (if (> number max) Err bitreich.org 70 i- max Err bitreich.org 70 i- number))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun gaussian-random (&optional min max) Err bitreich.org 70 i- "Returns two gaussian random double floats as the primary and secondary value, Err bitreich.org 70 i-optionally constrained by MIN and MAX. Gaussian random numbers form a standard Err bitreich.org 70 i-normal distribution around 0.0d0. Err bitreich.org 70 i- Err bitreich.org 70 i-Sufficiently positive MIN or negative MAX will cause the algorithm used to Err bitreich.org 70 i-take a very long time. If MIN is positive it should be close to zero, and Err bitreich.org 70 i-similarly if MAX is negative it should be close to zero." Err bitreich.org 70 i- (macrolet Err bitreich.org 70 i- ((valid (x) Err bitreich.org 70 i- `(<= (or min ,x) ,x (or max ,x)) )) Err bitreich.org 70 i- (labels Err bitreich.org 70 i- ((gauss () Err bitreich.org 70 i- (loop Err bitreich.org 70 i- for x1 = (- (random 2.0d0) 1.0d0) Err bitreich.org 70 i- for x2 = (- (random 2.0d0) 1.0d0) Err bitreich.org 70 i- for w = (+ (expt x1 2) (expt x2 2)) Err bitreich.org 70 i- when (< w 1.0d0) Err bitreich.org 70 i- do (let ((v (sqrt (/ (* -2.0d0 (log w)) w)))) Err bitreich.org 70 i- (return (values (* x1 v) (* x2 v)))))) Err bitreich.org 70 i- (guard (x) Err bitreich.org 70 i- (unless (valid x) Err bitreich.org 70 i- (tagbody Err bitreich.org 70 i- :retry Err bitreich.org 70 i- (multiple-value-bind (x1 x2) (gauss) Err bitreich.org 70 i- (when (valid x1) Err bitreich.org 70 i- (setf x x1) Err bitreich.org 70 i- (go :done)) Err bitreich.org 70 i- (when (valid x2) Err bitreich.org 70 i- (setf x x2) Err bitreich.org 70 i- (go :done)) Err bitreich.org 70 i- (go :retry)) Err bitreich.org 70 i- :done)) Err bitreich.org 70 i- x)) Err bitreich.org 70 i- (multiple-value-bind Err bitreich.org 70 i- (g1 g2) (gauss) Err bitreich.org 70 i- (values (guard g1) (guard g2)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline iota)) Err bitreich.org 70 i-(defun iota (n &key (start 0) (step 1)) Err bitreich.org 70 i- "Return a list of n numbers, starting from START (with numeric contagion Err bitreich.org 70 i-from STEP applied), each consequtive number being the sum of the previous one Err bitreich.org 70 i-and STEP. START defaults to 0 and STEP to 1. Err bitreich.org 70 i- Err bitreich.org 70 i-Examples: Err bitreich.org 70 i- Err bitreich.org 70 i- (iota 4) => (0 1 2 3) Err bitreich.org 70 i- (iota 3 :start 1 :step 1.0) => (1.0 2.0 3.0) Err bitreich.org 70 i- (iota 3 :start -1 :step -1/2) => (-1 -3/2 -2) Err bitreich.org 70 i-" Err bitreich.org 70 i- (declare (type (integer 0) n) (number start step)) Err bitreich.org 70 i- (loop repeat n Err bitreich.org 70 i- ;; KLUDGE: get numeric contagion right for the first element too Err bitreich.org 70 i- for i = (+ (- (+ start step) step)) then (+ i step) Err bitreich.org 70 i- collect i)) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline map-iota)) Err bitreich.org 70 i-(defun map-iota (function n &key (start 0) (step 1)) Err bitreich.org 70 i- "Calls FUNCTION with N numbers, starting from START (with numeric contagion Err bitreich.org 70 i-from STEP applied), each consequtive number being the sum of the previous one Err bitreich.org 70 i-and STEP. START defaults to 0 and STEP to 1. Returns N. Err bitreich.org 70 i- Err bitreich.org 70 i-Examples: Err bitreich.org 70 i- Err bitreich.org 70 i- (map-iota #'print 3 :start 1 :step 1.0) => 3 Err bitreich.org 70 i- ;;; 1.0 Err bitreich.org 70 i- ;;; 2.0 Err bitreich.org 70 i- ;;; 3.0 Err bitreich.org 70 i-" Err bitreich.org 70 i- (declare (type (integer 0) n) (number start step)) Err bitreich.org 70 i- (loop repeat n Err bitreich.org 70 i- ;; KLUDGE: get numeric contagion right for the first element too Err bitreich.org 70 i- for i = (+ start (- step step)) then (+ i step) Err bitreich.org 70 i- do (funcall function i)) Err bitreich.org 70 i- n) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline lerp)) Err bitreich.org 70 i-(defun lerp (v a b) Err bitreich.org 70 i- "Returns the result of linear interpolation between A and B, using the Err bitreich.org 70 i-interpolation coefficient V." Err bitreich.org 70 i- ;; The correct version is numerically stable, at the expense of an Err bitreich.org 70 i- ;; extra multiply. See (lerp 0.1 4 25) with (+ a (* v (- b a))). The Err bitreich.org 70 i- ;; unstable version can often be converted to a fast instruction on Err bitreich.org 70 i- ;; a lot of machines, though this is machine/implementation Err bitreich.org 70 i- ;; specific. As alexandria is more about correct code, than Err bitreich.org 70 i- ;; efficiency, and we're only talking about a single extra multiply, Err bitreich.org 70 i- ;; many would prefer the stable version Err bitreich.org 70 i- (+ (* (- 1.0 v) a) (* v b))) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline mean)) Err bitreich.org 70 i-(defun mean (sample) Err bitreich.org 70 i- "Returns the mean of SAMPLE. SAMPLE must be a sequence of numbers." Err bitreich.org 70 i- (/ (reduce #'+ sample) (length sample))) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline median)) Err bitreich.org 70 i-(defun median (sample) Err bitreich.org 70 i- "Returns median of SAMPLE. SAMPLE must be a sequence of real numbers." Err bitreich.org 70 i- (let* ((vector (sort (copy-sequence 'vector sample) #'<)) Err bitreich.org 70 i- (length (length vector)) Err bitreich.org 70 i- (middle (truncate length 2))) Err bitreich.org 70 i- (if (oddp length) Err bitreich.org 70 i- (aref vector middle) Err bitreich.org 70 i- (/ (+ (aref vector middle) (aref vector (1- middle))) 2)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline variance)) Err bitreich.org 70 i-(defun variance (sample &key (biased t)) Err bitreich.org 70 i- "Variance of SAMPLE. Returns the biased variance if BIASED is true (the default), Err bitreich.org 70 i-and the unbiased estimator of variance if BIASED is false. SAMPLE must be a Err bitreich.org 70 i-sequence of numbers." Err bitreich.org 70 i- (let ((mean (mean sample))) Err bitreich.org 70 i- (/ (reduce (lambda (a b) Err bitreich.org 70 i- (+ a (expt (- b mean) 2))) Err bitreich.org 70 i- sample Err bitreich.org 70 i- :initial-value 0) Err bitreich.org 70 i- (- (length sample) (if biased 0 1))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline standard-deviation)) Err bitreich.org 70 i-(defun standard-deviation (sample &key (biased t)) Err bitreich.org 70 i- "Standard deviation of SAMPLE. Returns the biased standard deviation if Err bitreich.org 70 i-BIASED is true (the default), and the square root of the unbiased estimator Err bitreich.org 70 i-for variance if BIASED is false (which is not the same as the unbiased Err bitreich.org 70 i-estimator for standard deviation). SAMPLE must be a sequence of numbers." Err bitreich.org 70 i- (sqrt (variance sample :biased biased))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-modify-macro maxf (&rest numbers) max Err bitreich.org 70 i- "Modify-macro for MAX. Sets place designated by the first argument to the Err bitreich.org 70 i-maximum of its original value and NUMBERS.") Err bitreich.org 70 i- Err bitreich.org 70 i-(define-modify-macro minf (&rest numbers) min Err bitreich.org 70 i- "Modify-macro for MIN. Sets place designated by the first argument to the Err bitreich.org 70 i-minimum of its original value and NUMBERS.") Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Factorial Err bitreich.org 70 i- Err bitreich.org 70 i-;;; KLUDGE: This is really dependant on the numbers in question: for Err bitreich.org 70 i-;;; small numbers this is larger, and vice versa. Ideally instead of a Err bitreich.org 70 i-;;; constant we would have RANGE-FAST-TO-MULTIPLY-DIRECTLY-P. Err bitreich.org 70 i-(defconstant +factorial-bisection-range-limit+ 8) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; KLUDGE: This is really platform dependant: ideally we would use Err bitreich.org 70 i-;;; (load-time-value (find-good-direct-multiplication-limit)) instead. Err bitreich.org 70 i-(defconstant +factorial-direct-multiplication-limit+ 13) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %multiply-range (i j) Err bitreich.org 70 i- ;; We use a a bit of cleverness here: Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; 1. For large factorials we bisect in order to avoid expensive bignum Err bitreich.org 70 i- ;; multiplications: 1 x 2 x 3 x ... runs into bignums pretty soon, Err bitreich.org 70 i- ;; and once it does that all further multiplications will be with bignums. Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; By instead doing the multiplication in a tree like Err bitreich.org 70 i- ;; ((1 x 2) x (3 x 4)) x ((5 x 6) x (7 x 8)) Err bitreich.org 70 i- ;; we manage to get less bignums. Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; 2. Division isn't exactly free either, however, so we don't bisect Err bitreich.org 70 i- ;; all the way down, but multiply ranges of integers close to each Err bitreich.org 70 i- ;; other directly. Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; For even better results it should be possible to use prime Err bitreich.org 70 i- ;; factorization magic, but Nikodemus ran out of steam. Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; KLUDGE: We support factorials of bignums, but it seems quite Err bitreich.org 70 i- ;; unlikely anyone would ever be able to use them on a modern lisp, Err bitreich.org 70 i- ;; since the resulting numbers are unlikely to fit in memory... but Err bitreich.org 70 i- ;; it would be extremely unelegant to define FACTORIAL only on Err bitreich.org 70 i- ;; fixnums, _and_ on lisps with 16 bit fixnums this can actually be Err bitreich.org 70 i- ;; needed. Err bitreich.org 70 i- (labels ((bisect (j k) Err bitreich.org 70 i- (declare (type (integer 1 #.most-positive-fixnum) j k)) Err bitreich.org 70 i- (if (< (- k j) +factorial-bisection-range-limit+) Err bitreich.org 70 i- (multiply-range j k) Err bitreich.org 70 i- (let ((middle (+ j (truncate (- k j) 2)))) Err bitreich.org 70 i- (* (bisect j middle) Err bitreich.org 70 i- (bisect (+ middle 1) k))))) Err bitreich.org 70 i- (bisect-big (j k) Err bitreich.org 70 i- (declare (type (integer 1) j k)) Err bitreich.org 70 i- (if (= j k) Err bitreich.org 70 i- j Err bitreich.org 70 i- (let ((middle (+ j (truncate (- k j) 2)))) Err bitreich.org 70 i- (* (if (<= middle most-positive-fixnum) Err bitreich.org 70 i- (bisect j middle) Err bitreich.org 70 i- (bisect-big j middle)) Err bitreich.org 70 i- (bisect-big (+ middle 1) k))))) Err bitreich.org 70 i- (multiply-range (j k) Err bitreich.org 70 i- (declare (type (integer 1 #.most-positive-fixnum) j k)) Err bitreich.org 70 i- (do ((f k (* f m)) Err bitreich.org 70 i- (m (1- k) (1- m))) Err bitreich.org 70 i- ((< m j) f) Err bitreich.org 70 i- (declare (type (integer 0 (#.most-positive-fixnum)) m) Err bitreich.org 70 i- (type unsigned-byte f))))) Err bitreich.org 70 i- (if (and (typep i 'fixnum) (typep j 'fixnum)) Err bitreich.org 70 i- (bisect i j) Err bitreich.org 70 i- (bisect-big i j)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline factorial)) Err bitreich.org 70 i-(defun %factorial (n) Err bitreich.org 70 i- (if (< n 2) Err bitreich.org 70 i- 1 Err bitreich.org 70 i- (%multiply-range 1 n))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun factorial (n) Err bitreich.org 70 i- "Factorial of non-negative integer N." Err bitreich.org 70 i- (check-type n (integer 0)) Err bitreich.org 70 i- (%factorial n)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Combinatorics Err bitreich.org 70 i- Err bitreich.org 70 i-(defun binomial-coefficient (n k) Err bitreich.org 70 i- "Binomial coefficient of N and K, also expressed as N choose K. This is the Err bitreich.org 70 i-number of K element combinations given N choises. N must be equal to or Err bitreich.org 70 i-greater then K." Err bitreich.org 70 i- (check-type n (integer 0)) Err bitreich.org 70 i- (check-type k (integer 0)) Err bitreich.org 70 i- (assert (>= n k)) Err bitreich.org 70 i- (if (or (zerop k) (= n k)) Err bitreich.org 70 i- 1 Err bitreich.org 70 i- (let ((n-k (- n k))) Err bitreich.org 70 i- ;; Swaps K and N-K if K < N-K because the algorithm Err bitreich.org 70 i- ;; below is faster for bigger K and smaller N-K Err bitreich.org 70 i- (when (< k n-k) Err bitreich.org 70 i- (rotatef k n-k)) Err bitreich.org 70 i- (if (= 1 n-k) Err bitreich.org 70 i- n Err bitreich.org 70 i- ;; General case, avoid computing the 1x...xK twice: Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; N! 1x...xN (K+1)x...xN Err bitreich.org 70 i- ;; -------- = ---------------- = ------------, N>1 Err bitreich.org 70 i- ;; K!(N-K)! 1x...xK x (N-K)! (N-K)! Err bitreich.org 70 i- (/ (%multiply-range (+ k 1) n) Err bitreich.org 70 i- (%factorial n-k)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun subfactorial (n) Err bitreich.org 70 i- "Subfactorial of the non-negative integer N." Err bitreich.org 70 i- (check-type n (integer 0)) Err bitreich.org 70 i- (if (zerop n) Err bitreich.org 70 i- 1 Err bitreich.org 70 i- (do ((x 1 (1+ x)) Err bitreich.org 70 i- (a 0 (* x (+ a b))) Err bitreich.org 70 i- (b 1 a)) Err bitreich.org 70 i- ((= n x) a)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun count-permutations (n &optional (k n)) Err bitreich.org 70 i- "Number of K element permutations for a sequence of N objects. Err bitreich.org 70 i-K defaults to N" Err bitreich.org 70 i- (check-type n (integer 0)) Err bitreich.org 70 i- (check-type k (integer 0)) Err bitreich.org 70 i- (assert (>= n k)) Err bitreich.org 70 i- (%multiply-range (1+ (- n k)) n)) Err bitreich.org 70 1diff --git a/3rdparties/software/alexandria-20181210-git/package.lisp b/3rdparties/software/alexandria-20181210-git/package.lisp /scm/clic/file/3rdparties/software/alexandria-20181210-git/package.lisp.gph bitreich.org 70 i@@ -1,244 +0,0 @@ Err bitreich.org 70 i-(defpackage :alexandria.0.dev Err bitreich.org 70 i- (:nicknames :alexandria) Err bitreich.org 70 i- (:use :cl) Err bitreich.org 70 i- #+sb-package-locks Err bitreich.org 70 i- (:lock t) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Err bitreich.org 70 i- ;; BLESSED Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; Binding constructs Err bitreich.org 70 i- #:if-let Err bitreich.org 70 i- #:when-let Err bitreich.org 70 i- #:when-let* Err bitreich.org 70 i- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Err bitreich.org 70 i- ;; REVIEW IN PROGRESS Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; Control flow Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; -- no clear consensus yet -- Err bitreich.org 70 i- #:cswitch Err bitreich.org 70 i- #:eswitch Err bitreich.org 70 i- #:switch Err bitreich.org 70 i- ;; -- problem free? -- Err bitreich.org 70 i- #:multiple-value-prog2 Err bitreich.org 70 i- #:nth-value-or Err bitreich.org 70 i- #:whichever Err bitreich.org 70 i- #:xor Err bitreich.org 70 i- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Err bitreich.org 70 i- ;; REVIEW PENDING Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; Definitions Err bitreich.org 70 i- #:define-constant Err bitreich.org 70 i- ;; Hash tables Err bitreich.org 70 i- #:alist-hash-table Err bitreich.org 70 i- #:copy-hash-table Err bitreich.org 70 i- #:ensure-gethash Err bitreich.org 70 i- #:hash-table-alist Err bitreich.org 70 i- #:hash-table-keys Err bitreich.org 70 i- #:hash-table-plist Err bitreich.org 70 i- #:hash-table-values Err bitreich.org 70 i- #:maphash-keys Err bitreich.org 70 i- #:maphash-values Err bitreich.org 70 i- #:plist-hash-table Err bitreich.org 70 i- ;; Functions Err bitreich.org 70 i- #:compose Err bitreich.org 70 i- #:conjoin Err bitreich.org 70 i- #:curry Err bitreich.org 70 i- #:disjoin Err bitreich.org 70 i- #:ensure-function Err bitreich.org 70 i- #:ensure-functionf Err bitreich.org 70 i- #:multiple-value-compose Err bitreich.org 70 i- #:named-lambda Err bitreich.org 70 i- #:rcurry Err bitreich.org 70 i- ;; Lists Err bitreich.org 70 i- #:alist-plist Err bitreich.org 70 i- #:appendf Err bitreich.org 70 i- #:nconcf Err bitreich.org 70 i- #:reversef Err bitreich.org 70 i- #:nreversef Err bitreich.org 70 i- #:circular-list Err bitreich.org 70 i- #:circular-list-p Err bitreich.org 70 i- #:circular-tree-p Err bitreich.org 70 i- #:doplist Err bitreich.org 70 i- #:ensure-car Err bitreich.org 70 i- #:ensure-cons Err bitreich.org 70 i- #:ensure-list Err bitreich.org 70 i- #:flatten Err bitreich.org 70 i- #:lastcar Err bitreich.org 70 i- #:make-circular-list Err bitreich.org 70 i- #:map-product Err bitreich.org 70 i- #:mappend Err bitreich.org 70 i- #:nunionf Err bitreich.org 70 i- #:plist-alist Err bitreich.org 70 i- #:proper-list Err bitreich.org 70 i- #:proper-list-length Err bitreich.org 70 i- #:proper-list-p Err bitreich.org 70 i- #:remove-from-plist Err bitreich.org 70 i- #:remove-from-plistf Err bitreich.org 70 i- #:delete-from-plist Err bitreich.org 70 i- #:delete-from-plistf Err bitreich.org 70 i- #:set-equal Err bitreich.org 70 i- #:setp Err bitreich.org 70 i- #:unionf Err bitreich.org 70 i- ;; Numbers Err bitreich.org 70 i- #:binomial-coefficient Err bitreich.org 70 i- #:clamp Err bitreich.org 70 i- #:count-permutations Err bitreich.org 70 i- #:factorial Err bitreich.org 70 i- #:gaussian-random Err bitreich.org 70 i- #:iota Err bitreich.org 70 i- #:lerp Err bitreich.org 70 i- #:map-iota Err bitreich.org 70 i- #:maxf Err bitreich.org 70 i- #:mean Err bitreich.org 70 i- #:median Err bitreich.org 70 i- #:minf Err bitreich.org 70 i- #:standard-deviation Err bitreich.org 70 i- #:subfactorial Err bitreich.org 70 i- #:variance Err bitreich.org 70 i- ;; Arrays Err bitreich.org 70 i- #:array-index Err bitreich.org 70 i- #:array-length Err bitreich.org 70 i- #:copy-array Err bitreich.org 70 i- ;; Sequences Err bitreich.org 70 i- #:copy-sequence Err bitreich.org 70 i- #:deletef Err bitreich.org 70 i- #:emptyp Err bitreich.org 70 i- #:ends-with Err bitreich.org 70 i- #:ends-with-subseq Err bitreich.org 70 i- #:extremum Err bitreich.org 70 i- #:first-elt Err bitreich.org 70 i- #:last-elt Err bitreich.org 70 i- #:length= Err bitreich.org 70 i- #:map-combinations Err bitreich.org 70 i- #:map-derangements Err bitreich.org 70 i- #:map-permutations Err bitreich.org 70 i- #:proper-sequence Err bitreich.org 70 i- #:random-elt Err bitreich.org 70 i- #:removef Err bitreich.org 70 i- #:rotate Err bitreich.org 70 i- #:sequence-of-length-p Err bitreich.org 70 i- #:shuffle Err bitreich.org 70 i- #:starts-with Err bitreich.org 70 i- #:starts-with-subseq Err bitreich.org 70 i- ;; Macros Err bitreich.org 70 i- #:once-only Err bitreich.org 70 i- #:parse-body Err bitreich.org 70 i- #:parse-ordinary-lambda-list Err bitreich.org 70 i- #:with-gensyms Err bitreich.org 70 i- #:with-unique-names Err bitreich.org 70 i- ;; Symbols Err bitreich.org 70 i- #:ensure-symbol Err bitreich.org 70 i- #:format-symbol Err bitreich.org 70 i- #:make-gensym Err bitreich.org 70 i- #:make-gensym-list Err bitreich.org 70 i- #:make-keyword Err bitreich.org 70 i- ;; Strings Err bitreich.org 70 i- #:string-designator Err bitreich.org 70 i- ;; Types Err bitreich.org 70 i- #:negative-double-float Err bitreich.org 70 i- #:negative-fixnum-p Err bitreich.org 70 i- #:negative-float Err bitreich.org 70 i- #:negative-float-p Err bitreich.org 70 i- #:negative-long-float Err bitreich.org 70 i- #:negative-long-float-p Err bitreich.org 70 i- #:negative-rational Err bitreich.org 70 i- #:negative-rational-p Err bitreich.org 70 i- #:negative-real Err bitreich.org 70 i- #:negative-single-float-p Err bitreich.org 70 i- #:non-negative-double-float Err bitreich.org 70 i- #:non-negative-double-float-p Err bitreich.org 70 i- #:non-negative-fixnum Err bitreich.org 70 i- #:non-negative-fixnum-p Err bitreich.org 70 i- #:non-negative-float Err bitreich.org 70 i- #:non-negative-float-p Err bitreich.org 70 i- #:non-negative-integer-p Err bitreich.org 70 i- #:non-negative-long-float Err bitreich.org 70 i- #:non-negative-rational Err bitreich.org 70 i- #:non-negative-real-p Err bitreich.org 70 i- #:non-negative-short-float-p Err bitreich.org 70 i- #:non-negative-single-float Err bitreich.org 70 i- #:non-negative-single-float-p Err bitreich.org 70 i- #:non-positive-double-float Err bitreich.org 70 i- #:non-positive-double-float-p Err bitreich.org 70 i- #:non-positive-fixnum Err bitreich.org 70 i- #:non-positive-fixnum-p Err bitreich.org 70 i- #:non-positive-float Err bitreich.org 70 i- #:non-positive-float-p Err bitreich.org 70 i- #:non-positive-integer Err bitreich.org 70 i- #:non-positive-rational Err bitreich.org 70 i- #:non-positive-real Err bitreich.org 70 i- #:non-positive-real-p Err bitreich.org 70 i- #:non-positive-short-float Err bitreich.org 70 i- #:non-positive-short-float-p Err bitreich.org 70 i- #:non-positive-single-float-p Err bitreich.org 70 i- #:ordinary-lambda-list-keywords Err bitreich.org 70 i- #:positive-double-float Err bitreich.org 70 i- #:positive-double-float-p Err bitreich.org 70 i- #:positive-fixnum Err bitreich.org 70 i- #:positive-fixnum-p Err bitreich.org 70 i- #:positive-float Err bitreich.org 70 i- #:positive-float-p Err bitreich.org 70 i- #:positive-integer Err bitreich.org 70 i- #:positive-rational Err bitreich.org 70 i- #:positive-real Err bitreich.org 70 i- #:positive-real-p Err bitreich.org 70 i- #:positive-short-float Err bitreich.org 70 i- #:positive-short-float-p Err bitreich.org 70 i- #:positive-single-float Err bitreich.org 70 i- #:positive-single-float-p Err bitreich.org 70 i- #:coercef Err bitreich.org 70 i- #:negative-double-float-p Err bitreich.org 70 i- #:negative-fixnum Err bitreich.org 70 i- #:negative-integer Err bitreich.org 70 i- #:negative-integer-p Err bitreich.org 70 i- #:negative-real-p Err bitreich.org 70 i- #:negative-short-float Err bitreich.org 70 i- #:negative-short-float-p Err bitreich.org 70 i- #:negative-single-float Err bitreich.org 70 i- #:non-negative-integer Err bitreich.org 70 i- #:non-negative-long-float-p Err bitreich.org 70 i- #:non-negative-rational-p Err bitreich.org 70 i- #:non-negative-real Err bitreich.org 70 i- #:non-negative-short-float Err bitreich.org 70 i- #:non-positive-integer-p Err bitreich.org 70 i- #:non-positive-long-float Err bitreich.org 70 i- #:non-positive-long-float-p Err bitreich.org 70 i- #:non-positive-rational-p Err bitreich.org 70 i- #:non-positive-single-float Err bitreich.org 70 i- #:of-type Err bitreich.org 70 i- #:positive-integer-p Err bitreich.org 70 i- #:positive-long-float Err bitreich.org 70 i- #:positive-long-float-p Err bitreich.org 70 i- #:positive-rational-p Err bitreich.org 70 i- #:type= Err bitreich.org 70 i- ;; Conditions Err bitreich.org 70 i- #:required-argument Err bitreich.org 70 i- #:ignore-some-conditions Err bitreich.org 70 i- #:simple-style-warning Err bitreich.org 70 i- #:simple-reader-error Err bitreich.org 70 i- #:simple-parse-error Err bitreich.org 70 i- #:simple-program-error Err bitreich.org 70 i- #:unwind-protect-case Err bitreich.org 70 i- ;; Features Err bitreich.org 70 i- #:featurep Err bitreich.org 70 i- ;; io Err bitreich.org 70 i- #:with-input-from-file Err bitreich.org 70 i- #:with-output-to-file Err bitreich.org 70 i- #:read-stream-content-into-string Err bitreich.org 70 i- #:read-file-into-string Err bitreich.org 70 i- #:write-string-into-file Err bitreich.org 70 i- #:read-stream-content-into-byte-vector Err bitreich.org 70 i- #:read-file-into-byte-vector Err bitreich.org 70 i- #:write-byte-vector-into-file Err bitreich.org 70 i- #:copy-stream Err bitreich.org 70 i- #:copy-file Err bitreich.org 70 i- ;; new additions collected at the end (subject to removal or further changes) Err bitreich.org 70 i- #:symbolicate Err bitreich.org 70 i- #:assoc-value Err bitreich.org 70 i- #:rassoc-value Err bitreich.org 70 i- #:destructuring-case Err bitreich.org 70 i- #:destructuring-ccase Err bitreich.org 70 i- #:destructuring-ecase Err bitreich.org 70 i- )) Err bitreich.org 70 1diff --git a/3rdparties/software/alexandria-20181210-git/sequences.lisp b/3rdparties/software/alexandria-20181210-git/sequences.lisp /scm/clic/file/3rdparties/software/alexandria-20181210-git/sequences.lisp.gph bitreich.org 70 i@@ -1,555 +0,0 @@ Err bitreich.org 70 i-(in-package :alexandria) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Make these inlinable by declaiming them INLINE here and some of them Err bitreich.org 70 i-;; NOTINLINE at the end of the file. Exclude functions that have a compiler Err bitreich.org 70 i-;; macro, because NOTINLINE is required to prevent compiler-macro expansion. Err bitreich.org 70 i-(declaim (inline copy-sequence sequence-of-length-p)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun sequence-of-length-p (sequence length) Err bitreich.org 70 i- "Return true if SEQUENCE is a sequence of length LENGTH. Signals an error if Err bitreich.org 70 i-SEQUENCE is not a sequence. Returns FALSE for circular lists." Err bitreich.org 70 i- (declare (type array-index length) Err bitreich.org 70 i- #-lispworks (inline length) Err bitreich.org 70 i- (optimize speed)) Err bitreich.org 70 i- (etypecase sequence Err bitreich.org 70 i- (null Err bitreich.org 70 i- (zerop length)) Err bitreich.org 70 i- (cons Err bitreich.org 70 i- (let ((n (1- length))) Err bitreich.org 70 i- (unless (minusp n) Err bitreich.org 70 i- (let ((tail (nthcdr n sequence))) Err bitreich.org 70 i- (and tail Err bitreich.org 70 i- (null (cdr tail))))))) Err bitreich.org 70 i- (vector Err bitreich.org 70 i- (= length (length sequence))) Err bitreich.org 70 i- (sequence Err bitreich.org 70 i- (= length (length sequence))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun rotate-tail-to-head (sequence n) Err bitreich.org 70 i- (declare (type (integer 1) n)) Err bitreich.org 70 i- (if (listp sequence) Err bitreich.org 70 i- (let ((m (mod n (proper-list-length sequence)))) Err bitreich.org 70 i- (if (null (cdr sequence)) Err bitreich.org 70 i- sequence Err bitreich.org 70 i- (let* ((tail (last sequence (+ m 1))) Err bitreich.org 70 i- (last (cdr tail))) Err bitreich.org 70 i- (setf (cdr tail) nil) Err bitreich.org 70 i- (nconc last sequence)))) Err bitreich.org 70 i- (let* ((len (length sequence)) Err bitreich.org 70 i- (m (mod n len)) Err bitreich.org 70 i- (tail (subseq sequence (- len m)))) Err bitreich.org 70 i- (replace sequence sequence :start1 m :start2 0) Err bitreich.org 70 i- (replace sequence tail) Err bitreich.org 70 i- sequence))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun rotate-head-to-tail (sequence n) Err bitreich.org 70 i- (declare (type (integer 1) n)) Err bitreich.org 70 i- (if (listp sequence) Err bitreich.org 70 i- (let ((m (mod (1- n) (proper-list-length sequence)))) Err bitreich.org 70 i- (if (null (cdr sequence)) Err bitreich.org 70 i- sequence Err bitreich.org 70 i- (let* ((headtail (nthcdr m sequence)) Err bitreich.org 70 i- (tail (cdr headtail))) Err bitreich.org 70 i- (setf (cdr headtail) nil) Err bitreich.org 70 i- (nconc tail sequence)))) Err bitreich.org 70 i- (let* ((len (length sequence)) Err bitreich.org 70 i- (m (mod n len)) Err bitreich.org 70 i- (head (subseq sequence 0 m))) Err bitreich.org 70 i- (replace sequence sequence :start1 0 :start2 m) Err bitreich.org 70 i- (replace sequence head :start1 (- len m)) Err bitreich.org 70 i- sequence))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun rotate (sequence &optional (n 1)) Err bitreich.org 70 i- "Returns a sequence of the same type as SEQUENCE, with the elements of Err bitreich.org 70 i-SEQUENCE rotated by N: N elements are moved from the end of the sequence to Err bitreich.org 70 i-the front if N is positive, and -N elements moved from the front to the end if Err bitreich.org 70 i-N is negative. SEQUENCE must be a proper sequence. N must be an integer, Err bitreich.org 70 i-defaulting to 1. Err bitreich.org 70 i- Err bitreich.org 70 i-If absolute value of N is greater then the length of the sequence, the results Err bitreich.org 70 i-are identical to calling ROTATE with Err bitreich.org 70 i- Err bitreich.org 70 i- (* (signum n) (mod n (length sequence))). Err bitreich.org 70 i- Err bitreich.org 70 i-Note: the original sequence may be destructively altered, and result sequence may Err bitreich.org 70 i-share structure with it." Err bitreich.org 70 i- (if (plusp n) Err bitreich.org 70 i- (rotate-tail-to-head sequence n) Err bitreich.org 70 i- (if (minusp n) Err bitreich.org 70 i- (rotate-head-to-tail sequence (- n)) Err bitreich.org 70 i- sequence))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun shuffle (sequence &key (start 0) end) Err bitreich.org 70 i- "Returns a random permutation of SEQUENCE bounded by START and END. Err bitreich.org 70 i-Original sequence may be destructively modified, and (if it contains Err bitreich.org 70 i-CONS or lists themselv) share storage with the original one. Err bitreich.org 70 i-Signals an error if SEQUENCE is not a proper sequence." Err bitreich.org 70 i- (declare (type fixnum start) Err bitreich.org 70 i- (type (or fixnum null) end)) Err bitreich.org 70 i- (etypecase sequence Err bitreich.org 70 i- (list Err bitreich.org 70 i- (let* ((end (or end (proper-list-length sequence))) Err bitreich.org 70 i- (n (- end start))) Err bitreich.org 70 i- (do ((tail (nthcdr start sequence) (cdr tail))) Err bitreich.org 70 i- ((zerop n)) Err bitreich.org 70 i- (rotatef (car tail) (car (nthcdr (random n) tail))) Err bitreich.org 70 i- (decf n)))) Err bitreich.org 70 i- (vector Err bitreich.org 70 i- (let ((end (or end (length sequence)))) Err bitreich.org 70 i- (loop for i from start below end Err bitreich.org 70 i- do (rotatef (aref sequence i) Err bitreich.org 70 i- (aref sequence (+ i (random (- end i)))))))) Err bitreich.org 70 i- (sequence Err bitreich.org 70 i- (let ((end (or end (length sequence)))) Err bitreich.org 70 i- (loop for i from (- end 1) downto start Err bitreich.org 70 i- do (rotatef (elt sequence i) Err bitreich.org 70 i- (elt sequence (+ i (random (- end i))))))))) Err bitreich.org 70 i- sequence) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun random-elt (sequence &key (start 0) end) Err bitreich.org 70 i- "Returns a random element from SEQUENCE bounded by START and END. Signals an Err bitreich.org 70 i-error if the SEQUENCE is not a proper non-empty sequence, or if END and START Err bitreich.org 70 i-are not proper bounding index designators for SEQUENCE." Err bitreich.org 70 i- (declare (sequence sequence) (fixnum start) (type (or fixnum null) end)) Err bitreich.org 70 i- (let* ((size (if (listp sequence) Err bitreich.org 70 i- (proper-list-length sequence) Err bitreich.org 70 i- (length sequence))) Err bitreich.org 70 i- (end2 (or end size))) Err bitreich.org 70 i- (cond ((zerop size) Err bitreich.org 70 i- (error 'type-error Err bitreich.org 70 i- :datum sequence Err bitreich.org 70 i- :expected-type `(and sequence (not (satisfies emptyp))))) Err bitreich.org 70 i- ((not (and (<= 0 start) (< start end2) (<= end2 size))) Err bitreich.org 70 i- (error 'simple-type-error Err bitreich.org 70 i- :datum (cons start end) Err bitreich.org 70 i- :expected-type `(cons (integer 0 (,end2)) Err bitreich.org 70 i- (or null (integer (,start) ,size))) Err bitreich.org 70 i- :format-control "~@<~S and ~S are not valid bounding index designators for ~ Err bitreich.org 70 i- a sequence of length ~S.~:@>" Err bitreich.org 70 i- :format-arguments (list start end size))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (let ((index (+ start (random (- end2 start))))) Err bitreich.org 70 i- (elt sequence index)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline remove/swapped-arguments)) Err bitreich.org 70 i-(defun remove/swapped-arguments (sequence item &rest keyword-arguments) Err bitreich.org 70 i- (apply #'remove item sequence keyword-arguments)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-modify-macro removef (item &rest keyword-arguments) Err bitreich.org 70 i- remove/swapped-arguments Err bitreich.org 70 i- "Modify-macro for REMOVE. Sets place designated by the first argument to Err bitreich.org 70 i-the result of calling REMOVE with ITEM, place, and the KEYWORD-ARGUMENTS.") Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline delete/swapped-arguments)) Err bitreich.org 70 i-(defun delete/swapped-arguments (sequence item &rest keyword-arguments) Err bitreich.org 70 i- (apply #'delete item sequence keyword-arguments)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-modify-macro deletef (item &rest keyword-arguments) Err bitreich.org 70 i- delete/swapped-arguments Err bitreich.org 70 i- "Modify-macro for DELETE. Sets place designated by the first argument to Err bitreich.org 70 i-the result of calling DELETE with ITEM, place, and the KEYWORD-ARGUMENTS.") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype proper-sequence () Err bitreich.org 70 i- "Type designator for proper sequences, that is proper lists and sequences Err bitreich.org 70 i-that are not lists." Err bitreich.org 70 i- `(or proper-list Err bitreich.org 70 i- (and (not list) sequence))) Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (when (and (find-package '#:sequence) Err bitreich.org 70 i- (find-symbol (string '#:emptyp) '#:sequence)) Err bitreich.org 70 i- (pushnew 'sequence-emptyp *features*))) Err bitreich.org 70 i- Err bitreich.org 70 i-#-alexandria::sequence-emptyp Err bitreich.org 70 i-(defun emptyp (sequence) Err bitreich.org 70 i- "Returns true if SEQUENCE is an empty sequence. Signals an error if SEQUENCE Err bitreich.org 70 i-is not a sequence." Err bitreich.org 70 i- (etypecase sequence Err bitreich.org 70 i- (list (null sequence)) Err bitreich.org 70 i- (sequence (zerop (length sequence))))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+alexandria::sequence-emptyp Err bitreich.org 70 i-(declaim (ftype (function (sequence) (values boolean &optional)) emptyp)) Err bitreich.org 70 i-#+alexandria::sequence-emptyp Err bitreich.org 70 i-(setf (symbol-function 'emptyp) (symbol-function 'sequence:emptyp)) Err bitreich.org 70 i-#+alexandria::sequence-emptyp Err bitreich.org 70 i-(define-compiler-macro emptyp (sequence) Err bitreich.org 70 i- `(sequence:emptyp ,sequence)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun length= (&rest sequences) Err bitreich.org 70 i- "Takes any number of sequences or integers in any order. Returns true iff Err bitreich.org 70 i-the length of all the sequences and the integers are equal. Hint: there's a Err bitreich.org 70 i-compiler macro that expands into more efficient code if the first argument Err bitreich.org 70 i-is a literal integer." Err bitreich.org 70 i- (declare (dynamic-extent sequences) Err bitreich.org 70 i- (inline sequence-of-length-p) Err bitreich.org 70 i- (optimize speed)) Err bitreich.org 70 i- (unless (cdr sequences) Err bitreich.org 70 i- (error "You must call LENGTH= with at least two arguments")) Err bitreich.org 70 i- ;; There's room for optimization here: multiple list arguments could be Err bitreich.org 70 i- ;; traversed in parallel. Err bitreich.org 70 i- (let* ((first (pop sequences)) Err bitreich.org 70 i- (current (if (integerp first) Err bitreich.org 70 i- first Err bitreich.org 70 i- (length first)))) Err bitreich.org 70 i- (declare (type array-index current)) Err bitreich.org 70 i- (dolist (el sequences) Err bitreich.org 70 i- (if (integerp el) Err bitreich.org 70 i- (unless (= el current) Err bitreich.org 70 i- (return-from length= nil)) Err bitreich.org 70 i- (unless (sequence-of-length-p el current) Err bitreich.org 70 i- (return-from length= nil))))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-compiler-macro length= (&whole form length &rest sequences) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((zerop (length sequences)) Err bitreich.org 70 i- form) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (let ((optimizedp (integerp length))) Err bitreich.org 70 i- (with-unique-names (tmp current) Err bitreich.org 70 i- (declare (ignorable current)) Err bitreich.org 70 i- `(locally Err bitreich.org 70 i- (declare (inline sequence-of-length-p)) Err bitreich.org 70 i- (let ((,tmp) Err bitreich.org 70 i- ,@(unless optimizedp Err bitreich.org 70 i- `((,current ,length)))) Err bitreich.org 70 i- ,@(unless optimizedp Err bitreich.org 70 i- `((unless (integerp ,current) Err bitreich.org 70 i- (setf ,current (length ,current))))) Err bitreich.org 70 i- (and Err bitreich.org 70 i- ,@(loop Err bitreich.org 70 i- :for sequence :in sequences Err bitreich.org 70 i- :collect `(progn Err bitreich.org 70 i- (setf ,tmp ,sequence) Err bitreich.org 70 i- (if (integerp ,tmp) Err bitreich.org 70 i- (= ,tmp ,(if optimizedp Err bitreich.org 70 i- length Err bitreich.org 70 i- current)) Err bitreich.org 70 i- (sequence-of-length-p ,tmp ,(if optimizedp Err bitreich.org 70 i- length Err bitreich.org 70 i- current))))))))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun copy-sequence (type sequence) Err bitreich.org 70 i- "Returns a fresh sequence of TYPE, which has the same elements as Err bitreich.org 70 i-SEQUENCE." Err bitreich.org 70 i- (if (typep sequence type) Err bitreich.org 70 i- (copy-seq sequence) Err bitreich.org 70 i- (coerce sequence type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun first-elt (sequence) Err bitreich.org 70 i- "Returns the first element of SEQUENCE. Signals a type-error if SEQUENCE is Err bitreich.org 70 i-not a sequence, or is an empty sequence." Err bitreich.org 70 i- ;; Can't just directly use ELT, as it is not guaranteed to signal the Err bitreich.org 70 i- ;; type-error. Err bitreich.org 70 i- (cond ((consp sequence) Err bitreich.org 70 i- (car sequence)) Err bitreich.org 70 i- ((and (typep sequence 'sequence) (not (emptyp sequence))) Err bitreich.org 70 i- (elt sequence 0)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (error 'type-error Err bitreich.org 70 i- :datum sequence Err bitreich.org 70 i- :expected-type '(and sequence (not (satisfies emptyp))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun (setf first-elt) (object sequence) Err bitreich.org 70 i- "Sets the first element of SEQUENCE. Signals a type-error if SEQUENCE is Err bitreich.org 70 i-not a sequence, is an empty sequence, or if OBJECT cannot be stored in SEQUENCE." Err bitreich.org 70 i- ;; Can't just directly use ELT, as it is not guaranteed to signal the Err bitreich.org 70 i- ;; type-error. Err bitreich.org 70 i- (cond ((consp sequence) Err bitreich.org 70 i- (setf (car sequence) object)) Err bitreich.org 70 i- ((and (typep sequence 'sequence) (not (emptyp sequence))) Err bitreich.org 70 i- (setf (elt sequence 0) object)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (error 'type-error Err bitreich.org 70 i- :datum sequence Err bitreich.org 70 i- :expected-type '(and sequence (not (satisfies emptyp))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun last-elt (sequence) Err bitreich.org 70 i- "Returns the last element of SEQUENCE. Signals a type-error if SEQUENCE is Err bitreich.org 70 i-not a proper sequence, or is an empty sequence." Err bitreich.org 70 i- ;; Can't just directly use ELT, as it is not guaranteed to signal the Err bitreich.org 70 i- ;; type-error. Err bitreich.org 70 i- (let ((len 0)) Err bitreich.org 70 i- (cond ((consp sequence) Err bitreich.org 70 i- (lastcar sequence)) Err bitreich.org 70 i- ((and (typep sequence '(and sequence (not list))) (plusp (setf len (length sequence)))) Err bitreich.org 70 i- (elt sequence (1- len))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (error 'type-error Err bitreich.org 70 i- :datum sequence Err bitreich.org 70 i- :expected-type '(and proper-sequence (not (satisfies emptyp)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun (setf last-elt) (object sequence) Err bitreich.org 70 i- "Sets the last element of SEQUENCE. Signals a type-error if SEQUENCE is not a proper Err bitreich.org 70 i-sequence, is an empty sequence, or if OBJECT cannot be stored in SEQUENCE." Err bitreich.org 70 i- (let ((len 0)) Err bitreich.org 70 i- (cond ((consp sequence) Err bitreich.org 70 i- (setf (lastcar sequence) object)) Err bitreich.org 70 i- ((and (typep sequence '(and sequence (not list))) (plusp (setf len (length sequence)))) Err bitreich.org 70 i- (setf (elt sequence (1- len)) object)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (error 'type-error Err bitreich.org 70 i- :datum sequence Err bitreich.org 70 i- :expected-type '(and proper-sequence (not (satisfies emptyp)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun starts-with-subseq (prefix sequence &rest args Err bitreich.org 70 i- &key Err bitreich.org 70 i- (return-suffix nil return-suffix-supplied-p) Err bitreich.org 70 i- &allow-other-keys) Err bitreich.org 70 i- "Test whether the first elements of SEQUENCE are the same (as per TEST) as the elements of PREFIX. Err bitreich.org 70 i- Err bitreich.org 70 i-If RETURN-SUFFIX is T the function returns, as a second value, a Err bitreich.org 70 i-sub-sequence or displaced array pointing to the sequence after PREFIX." Err bitreich.org 70 i- (declare (dynamic-extent args)) Err bitreich.org 70 i- (let ((sequence-length (length sequence)) Err bitreich.org 70 i- (prefix-length (length prefix))) Err bitreich.org 70 i- (when (< sequence-length prefix-length) Err bitreich.org 70 i- (return-from starts-with-subseq (values nil nil))) Err bitreich.org 70 i- (flet ((make-suffix (start) Err bitreich.org 70 i- (when return-suffix Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((not (arrayp sequence)) Err bitreich.org 70 i- (if start Err bitreich.org 70 i- (subseq sequence start) Err bitreich.org 70 i- (subseq sequence 0 0))) Err bitreich.org 70 i- ((not start) Err bitreich.org 70 i- (make-array 0 Err bitreich.org 70 i- :element-type (array-element-type sequence) Err bitreich.org 70 i- :adjustable nil)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (make-array (- sequence-length start) Err bitreich.org 70 i- :element-type (array-element-type sequence) Err bitreich.org 70 i- :displaced-to sequence Err bitreich.org 70 i- :displaced-index-offset start Err bitreich.org 70 i- :adjustable nil)))))) Err bitreich.org 70 i- (let ((mismatch (apply #'mismatch prefix sequence Err bitreich.org 70 i- (if return-suffix-supplied-p Err bitreich.org 70 i- (remove-from-plist args :return-suffix) Err bitreich.org 70 i- args)))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((not mismatch) Err bitreich.org 70 i- (values t (make-suffix nil))) Err bitreich.org 70 i- ((= mismatch prefix-length) Err bitreich.org 70 i- (values t (make-suffix mismatch))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (values nil nil))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ends-with-subseq (suffix sequence &key (test #'eql)) Err bitreich.org 70 i- "Test whether SEQUENCE ends with SUFFIX. In other words: return true if Err bitreich.org 70 i-the last (length SUFFIX) elements of SEQUENCE are equal to SUFFIX." Err bitreich.org 70 i- (let ((sequence-length (length sequence)) Err bitreich.org 70 i- (suffix-length (length suffix))) Err bitreich.org 70 i- (when (< sequence-length suffix-length) Err bitreich.org 70 i- ;; if SEQUENCE is shorter than SUFFIX, then SEQUENCE can't end with SUFFIX. Err bitreich.org 70 i- (return-from ends-with-subseq nil)) Err bitreich.org 70 i- (loop for sequence-index from (- sequence-length suffix-length) below sequence-length Err bitreich.org 70 i- for suffix-index from 0 below suffix-length Err bitreich.org 70 i- when (not (funcall test (elt sequence sequence-index) (elt suffix suffix-index))) Err bitreich.org 70 i- do (return-from ends-with-subseq nil) Err bitreich.org 70 i- finally (return t)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun starts-with (object sequence &key (test #'eql) (key #'identity)) Err bitreich.org 70 i- "Returns true if SEQUENCE is a sequence whose first element is EQL to OBJECT. Err bitreich.org 70 i-Returns NIL if the SEQUENCE is not a sequence or is an empty sequence." Err bitreich.org 70 i- (let ((first-elt (typecase sequence Err bitreich.org 70 i- (cons (car sequence)) Err bitreich.org 70 i- (sequence Err bitreich.org 70 i- (if (emptyp sequence) Err bitreich.org 70 i- (return-from starts-with nil) Err bitreich.org 70 i- (elt sequence 0))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (return-from starts-with nil))))) Err bitreich.org 70 i- (funcall test (funcall key first-elt) object))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ends-with (object sequence &key (test #'eql) (key #'identity)) Err bitreich.org 70 i- "Returns true if SEQUENCE is a sequence whose last element is EQL to OBJECT. Err bitreich.org 70 i-Returns NIL if the SEQUENCE is not a sequence or is an empty sequence. Signals Err bitreich.org 70 i-an error if SEQUENCE is an improper list." Err bitreich.org 70 i- (let ((last-elt (typecase sequence Err bitreich.org 70 i- (cons Err bitreich.org 70 i- (lastcar sequence)) ; signals for improper lists Err bitreich.org 70 i- (sequence Err bitreich.org 70 i- ;; Can't use last-elt, as that signals an error Err bitreich.org 70 i- ;; for empty sequences Err bitreich.org 70 i- (let ((len (length sequence))) Err bitreich.org 70 i- (if (plusp len) Err bitreich.org 70 i- (elt sequence (1- len)) Err bitreich.org 70 i- (return-from ends-with nil)))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (return-from ends-with nil))))) Err bitreich.org 70 i- (funcall test (funcall key last-elt) object))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun map-combinations (function sequence &key (start 0) end length (copy t)) Err bitreich.org 70 i- "Calls FUNCTION with each combination of LENGTH constructable from the Err bitreich.org 70 i-elements of the subsequence of SEQUENCE delimited by START and END. START Err bitreich.org 70 i-defaults to 0, END to length of SEQUENCE, and LENGTH to the length of the Err bitreich.org 70 i-delimited subsequence. (So unless LENGTH is specified there is only a single Err bitreich.org 70 i-combination, which has the same elements as the delimited subsequence.) If Err bitreich.org 70 i-COPY is true (the default) each combination is freshly allocated. If COPY is Err bitreich.org 70 i-false all combinations are EQ to each other, in which case consequences are Err bitreich.org 70 i-unspecified if a combination is modified by FUNCTION." Err bitreich.org 70 i- (let* ((end (or end (length sequence))) Err bitreich.org 70 i- (size (- end start)) Err bitreich.org 70 i- (length (or length size)) Err bitreich.org 70 i- (combination (subseq sequence 0 length)) Err bitreich.org 70 i- (function (ensure-function function))) Err bitreich.org 70 i- (if (= length size) Err bitreich.org 70 i- (funcall function combination) Err bitreich.org 70 i- (flet ((call () Err bitreich.org 70 i- (funcall function (if copy Err bitreich.org 70 i- (copy-seq combination) Err bitreich.org 70 i- combination)))) Err bitreich.org 70 i- (etypecase sequence Err bitreich.org 70 i- ;; When dealing with lists we prefer walking back and Err bitreich.org 70 i- ;; forth instead of using indexes. Err bitreich.org 70 i- (list Err bitreich.org 70 i- (labels ((combine-list (c-tail o-tail) Err bitreich.org 70 i- (if (not c-tail) Err bitreich.org 70 i- (call) Err bitreich.org 70 i- (do ((tail o-tail (cdr tail))) Err bitreich.org 70 i- ((not tail)) Err bitreich.org 70 i- (setf (car c-tail) (car tail)) Err bitreich.org 70 i- (combine-list (cdr c-tail) (cdr tail)))))) Err bitreich.org 70 i- (combine-list combination (nthcdr start sequence)))) Err bitreich.org 70 i- (vector Err bitreich.org 70 i- (labels ((combine (count start) Err bitreich.org 70 i- (if (zerop count) Err bitreich.org 70 i- (call) Err bitreich.org 70 i- (loop for i from start below end Err bitreich.org 70 i- do (let ((j (- count 1))) Err bitreich.org 70 i- (setf (aref combination j) (aref sequence i)) Err bitreich.org 70 i- (combine j (+ i 1))))))) Err bitreich.org 70 i- (combine length start))) Err bitreich.org 70 i- (sequence Err bitreich.org 70 i- (labels ((combine (count start) Err bitreich.org 70 i- (if (zerop count) Err bitreich.org 70 i- (call) Err bitreich.org 70 i- (loop for i from start below end Err bitreich.org 70 i- do (let ((j (- count 1))) Err bitreich.org 70 i- (setf (elt combination j) (elt sequence i)) Err bitreich.org 70 i- (combine j (+ i 1))))))) Err bitreich.org 70 i- (combine length start))))))) Err bitreich.org 70 i- sequence) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun map-permutations (function sequence &key (start 0) end length (copy t)) Err bitreich.org 70 i- "Calls function with each permutation of LENGTH constructable Err bitreich.org 70 i-from the subsequence of SEQUENCE delimited by START and END. START Err bitreich.org 70 i-defaults to 0, END to length of the sequence, and LENGTH to the Err bitreich.org 70 i-length of the delimited subsequence." Err bitreich.org 70 i- (let* ((end (or end (length sequence))) Err bitreich.org 70 i- (size (- end start)) Err bitreich.org 70 i- (length (or length size))) Err bitreich.org 70 i- (labels ((permute (seq n) Err bitreich.org 70 i- (let ((n-1 (- n 1))) Err bitreich.org 70 i- (if (zerop n-1) Err bitreich.org 70 i- (funcall function (if copy Err bitreich.org 70 i- (copy-seq seq) Err bitreich.org 70 i- seq)) Err bitreich.org 70 i- (loop for i from 0 upto n-1 Err bitreich.org 70 i- do (permute seq n-1) Err bitreich.org 70 i- (if (evenp n-1) Err bitreich.org 70 i- (rotatef (elt seq 0) (elt seq n-1)) Err bitreich.org 70 i- (rotatef (elt seq i) (elt seq n-1))))))) Err bitreich.org 70 i- (permute-sequence (seq) Err bitreich.org 70 i- (permute seq length))) Err bitreich.org 70 i- (if (= length size) Err bitreich.org 70 i- ;; Things are simple if we need to just permute the Err bitreich.org 70 i- ;; full START-END range. Err bitreich.org 70 i- (permute-sequence (subseq sequence start end)) Err bitreich.org 70 i- ;; Otherwise we need to generate all the combinations Err bitreich.org 70 i- ;; of LENGTH in the START-END range, and then permute Err bitreich.org 70 i- ;; a copy of the result: can't permute the combination Err bitreich.org 70 i- ;; directly, as they share structure with each other. Err bitreich.org 70 i- (let ((permutation (subseq sequence 0 length))) Err bitreich.org 70 i- (flet ((permute-combination (combination) Err bitreich.org 70 i- (permute-sequence (replace permutation combination)))) Err bitreich.org 70 i- (declare (dynamic-extent #'permute-combination)) Err bitreich.org 70 i- (map-combinations #'permute-combination sequence Err bitreich.org 70 i- :start start Err bitreich.org 70 i- :end end Err bitreich.org 70 i- :length length Err bitreich.org 70 i- :copy nil))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun map-derangements (function sequence &key (start 0) end (copy t)) Err bitreich.org 70 i- "Calls FUNCTION with each derangement of the subsequence of SEQUENCE denoted Err bitreich.org 70 i-by the bounding index designators START and END. Derangement is a permutation Err bitreich.org 70 i-of the sequence where no element remains in place. SEQUENCE is not modified, Err bitreich.org 70 i-but individual derangements are EQ to each other. Consequences are unspecified Err bitreich.org 70 i-if calling FUNCTION modifies either the derangement or SEQUENCE." Err bitreich.org 70 i- (let* ((end (or end (length sequence))) Err bitreich.org 70 i- (size (- end start)) Err bitreich.org 70 i- ;; We don't really care about the elements here. Err bitreich.org 70 i- (derangement (subseq sequence 0 size)) Err bitreich.org 70 i- ;; Bitvector that has 1 for elements that have been deranged. Err bitreich.org 70 i- (mask (make-array size :element-type 'bit :initial-element 0))) Err bitreich.org 70 i- (declare (dynamic-extent mask)) Err bitreich.org 70 i- ;; ad hoc algorith Err bitreich.org 70 i- (labels ((derange (place n) Err bitreich.org 70 i- ;; Perform one recursive step in deranging the Err bitreich.org 70 i- ;; sequence: PLACE is index of the original sequence Err bitreich.org 70 i- ;; to derange to another index, and N is the number of Err bitreich.org 70 i- ;; indexes not yet deranged. Err bitreich.org 70 i- (if (zerop n) Err bitreich.org 70 i- (funcall function (if copy Err bitreich.org 70 i- (copy-seq derangement) Err bitreich.org 70 i- derangement)) Err bitreich.org 70 i- ;; Itarate over the indexes I of the subsequence to Err bitreich.org 70 i- ;; derange: if I != PLACE and I has not yet been Err bitreich.org 70 i- ;; deranged by an earlier call put the element from Err bitreich.org 70 i- ;; PLACE to I, mark I as deranged, and recurse, Err bitreich.org 70 i- ;; finally removing the mark. Err bitreich.org 70 i- (loop for i from 0 below size Err bitreich.org 70 i- do Err bitreich.org 70 i- (unless (or (= place (+ i start)) (not (zerop (bit mask i)))) Err bitreich.org 70 i- (setf (elt derangement i) (elt sequence place) Err bitreich.org 70 i- (bit mask i) 1) Err bitreich.org 70 i- (derange (1+ place) (1- n)) Err bitreich.org 70 i- (setf (bit mask i) 0)))))) Err bitreich.org 70 i- (derange start size) Err bitreich.org 70 i- sequence))) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (notinline sequence-of-length-p)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun extremum (sequence predicate &key key (start 0) end) Err bitreich.org 70 i- "Returns the element of SEQUENCE that would appear first if the subsequence Err bitreich.org 70 i-bounded by START and END was sorted using PREDICATE and KEY. Err bitreich.org 70 i- Err bitreich.org 70 i-EXTREMUM determines the relationship between two elements of SEQUENCE by using Err bitreich.org 70 i-the PREDICATE function. PREDICATE should return true if and only if the first Err bitreich.org 70 i-argument is strictly less than the second one (in some appropriate sense). Two Err bitreich.org 70 i-arguments X and Y are considered to be equal if (FUNCALL PREDICATE X Y) Err bitreich.org 70 i-and (FUNCALL PREDICATE Y X) are both false. Err bitreich.org 70 i- Err bitreich.org 70 i-The arguments to the PREDICATE function are computed from elements of SEQUENCE Err bitreich.org 70 i-using the KEY function, if supplied. If KEY is not supplied or is NIL, the Err bitreich.org 70 i-sequence element itself is used. Err bitreich.org 70 i- Err bitreich.org 70 i-If SEQUENCE is empty, NIL is returned." Err bitreich.org 70 i- (let* ((pred-fun (ensure-function predicate)) Err bitreich.org 70 i- (key-fun (unless (or (not key) (eq key 'identity) (eq key #'identity)) Err bitreich.org 70 i- (ensure-function key))) Err bitreich.org 70 i- (real-end (or end (length sequence)))) Err bitreich.org 70 i- (cond ((> real-end start) Err bitreich.org 70 i- (if key-fun Err bitreich.org 70 i- (flet ((reduce-keys (a b) Err bitreich.org 70 i- (if (funcall pred-fun Err bitreich.org 70 i- (funcall key-fun a) Err bitreich.org 70 i- (funcall key-fun b)) Err bitreich.org 70 i- a Err bitreich.org 70 i- b))) Err bitreich.org 70 i- (declare (dynamic-extent #'reduce-keys)) Err bitreich.org 70 i- (reduce #'reduce-keys sequence :start start :end real-end)) Err bitreich.org 70 i- (flet ((reduce-elts (a b) Err bitreich.org 70 i- (if (funcall pred-fun a b) Err bitreich.org 70 i- a Err bitreich.org 70 i- b))) Err bitreich.org 70 i- (declare (dynamic-extent #'reduce-elts)) Err bitreich.org 70 i- (reduce #'reduce-elts sequence :start start :end real-end)))) Err bitreich.org 70 i- ((= real-end start) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (error "Invalid bounding indexes for sequence of length ~S: ~S ~S, ~S ~S" Err bitreich.org 70 i- (length sequence) Err bitreich.org 70 i- :start start Err bitreich.org 70 i- :end end))))) Err bitreich.org 70 1diff --git a/3rdparties/software/alexandria-20181210-git/strings.lisp b/3rdparties/software/alexandria-20181210-git/strings.lisp /scm/clic/file/3rdparties/software/alexandria-20181210-git/strings.lisp.gph bitreich.org 70 i@@ -1,6 +0,0 @@ Err bitreich.org 70 i-(in-package :alexandria) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype string-designator () Err bitreich.org 70 i- "A string designator type. A string designator is either a string, a symbol, Err bitreich.org 70 i-or a character." Err bitreich.org 70 i- `(or symbol string character)) Err bitreich.org 70 1diff --git a/3rdparties/software/alexandria-20181210-git/symbols.lisp b/3rdparties/software/alexandria-20181210-git/symbols.lisp /scm/clic/file/3rdparties/software/alexandria-20181210-git/symbols.lisp.gph bitreich.org 70 i@@ -1,65 +0,0 @@ Err bitreich.org 70 i-(in-package :alexandria) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline ensure-symbol)) Err bitreich.org 70 i-(defun ensure-symbol (name &optional (package *package*)) Err bitreich.org 70 i- "Returns a symbol with name designated by NAME, accessible in package Err bitreich.org 70 i-designated by PACKAGE. If symbol is not already accessible in PACKAGE, it is Err bitreich.org 70 i-interned there. Returns a secondary value reflecting the status of the symbol Err bitreich.org 70 i-in the package, which matches the secondary return value of INTERN. Err bitreich.org 70 i- Err bitreich.org 70 i-Example: Err bitreich.org 70 i- Err bitreich.org 70 i- (ensure-symbol :cons :cl) => cl:cons, :external Err bitreich.org 70 i-" Err bitreich.org 70 i- (intern (string name) package)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun maybe-intern (name package) Err bitreich.org 70 i- (values Err bitreich.org 70 i- (if package Err bitreich.org 70 i- (intern name (if (eq t package) *package* package)) Err bitreich.org 70 i- (make-symbol name)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline format-symbol)) Err bitreich.org 70 i-(defun format-symbol (package control &rest arguments) Err bitreich.org 70 i- "Constructs a string by applying ARGUMENTS to string designator CONTROL as Err bitreich.org 70 i-if by FORMAT within WITH-STANDARD-IO-SYNTAX, and then creates a symbol named Err bitreich.org 70 i-by that string. Err bitreich.org 70 i- Err bitreich.org 70 i-If PACKAGE is NIL, returns an uninterned symbol, if package is T, returns a Err bitreich.org 70 i-symbol interned in the current package, and otherwise returns a symbol Err bitreich.org 70 i-interned in the package designated by PACKAGE." Err bitreich.org 70 i- (maybe-intern (with-standard-io-syntax Err bitreich.org 70 i- (apply #'format nil (string control) arguments)) Err bitreich.org 70 i- package)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-keyword (name) Err bitreich.org 70 i- "Interns the string designated by NAME in the KEYWORD package." Err bitreich.org 70 i- (intern (string name) :keyword)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-gensym (name) Err bitreich.org 70 i- "If NAME is a non-negative integer, calls GENSYM using it. Otherwise NAME Err bitreich.org 70 i-must be a string designator, in which case calls GENSYM using the designated Err bitreich.org 70 i-string as the argument." Err bitreich.org 70 i- (gensym (if (typep name '(integer 0)) Err bitreich.org 70 i- name Err bitreich.org 70 i- (string name)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-gensym-list (length &optional (x "G")) Err bitreich.org 70 i- "Returns a list of LENGTH gensyms, each generated as if with a call to MAKE-GENSYM, Err bitreich.org 70 i-using the second (optional, defaulting to \"G\") argument." Err bitreich.org 70 i- (let ((g (if (typep x '(integer 0)) x (string x)))) Err bitreich.org 70 i- (loop repeat length Err bitreich.org 70 i- collect (gensym g)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun symbolicate (&rest things) Err bitreich.org 70 i- "Concatenate together the names of some strings and symbols, Err bitreich.org 70 i-producing a symbol in the current package." Err bitreich.org 70 i- (let* ((length (reduce #'+ things Err bitreich.org 70 i- :key (lambda (x) (length (string x))))) Err bitreich.org 70 i- (name (make-array length :element-type 'character))) Err bitreich.org 70 i- (let ((index 0)) Err bitreich.org 70 i- (dolist (thing things (values (intern name))) Err bitreich.org 70 i- (let* ((x (string thing)) Err bitreich.org 70 i- (len (length x))) Err bitreich.org 70 i- (replace name x :start1 index) Err bitreich.org 70 i- (incf index len)))))) Err bitreich.org 70 1diff --git a/3rdparties/software/alexandria-20181210-git/tests.lisp b/3rdparties/software/alexandria-20181210-git/tests.lisp /scm/clic/file/3rdparties/software/alexandria-20181210-git/tests.lisp.gph bitreich.org 70 i@@ -1,2047 +0,0 @@ Err bitreich.org 70 i-(in-package :cl-user) Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage :alexandria-tests Err bitreich.org 70 i- (:use :cl :alexandria #+sbcl :sb-rt #-sbcl :rtest) Err bitreich.org 70 i- (:import-from #+sbcl :sb-rt #-sbcl :rtest Err bitreich.org 70 i- #:*compile-tests* #:*expected-failures*)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :alexandria-tests) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun run-tests (&key ((:compiled *compile-tests*))) Err bitreich.org 70 i- (do-tests)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun hash-table-test-name (name) Err bitreich.org 70 i- ;; Workaround for Clisp calling EQL in a hash-table FASTHASH-EQL. Err bitreich.org 70 i- (hash-table-test (make-hash-table :test name))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Arrays Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest copy-array.1 Err bitreich.org 70 i- (let* ((orig (vector 1 2 3)) Err bitreich.org 70 i- (copy (copy-array orig))) Err bitreich.org 70 i- (values (eq orig copy) (equalp orig copy))) Err bitreich.org 70 i- nil t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest copy-array.2 Err bitreich.org 70 i- (let ((orig (make-array 1024 :fill-pointer 0))) Err bitreich.org 70 i- (vector-push-extend 1 orig) Err bitreich.org 70 i- (vector-push-extend 2 orig) Err bitreich.org 70 i- (vector-push-extend 3 orig) Err bitreich.org 70 i- (let ((copy (copy-array orig))) Err bitreich.org 70 i- (values (eq orig copy) (equalp orig copy) Err bitreich.org 70 i- (array-has-fill-pointer-p copy) Err bitreich.org 70 i- (eql (fill-pointer orig) (fill-pointer copy))))) Err bitreich.org 70 i- nil t t t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest copy-array.3 Err bitreich.org 70 i- (let* ((orig (vector 1 2 3)) Err bitreich.org 70 i- (copy (copy-array orig))) Err bitreich.org 70 i- (typep copy 'simple-array)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest copy-array.4 Err bitreich.org 70 i- (let ((orig (make-array 21 Err bitreich.org 70 i- :adjustable t Err bitreich.org 70 i- :fill-pointer 0))) Err bitreich.org 70 i- (dotimes (n 42) Err bitreich.org 70 i- (vector-push-extend n orig)) Err bitreich.org 70 i- (let ((copy (copy-array orig Err bitreich.org 70 i- :adjustable nil Err bitreich.org 70 i- :fill-pointer nil))) Err bitreich.org 70 i- (typep copy 'simple-array))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest array-index.1 Err bitreich.org 70 i- (typep 0 'array-index) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Conditions Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest unwind-protect-case.1 Err bitreich.org 70 i- (let (result) Err bitreich.org 70 i- (unwind-protect-case () Err bitreich.org 70 i- (random 10) Err bitreich.org 70 i- (:normal (push :normal result)) Err bitreich.org 70 i- (:abort (push :abort result)) Err bitreich.org 70 i- (:always (push :always result))) Err bitreich.org 70 i- result) Err bitreich.org 70 i- (:always :normal)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest unwind-protect-case.2 Err bitreich.org 70 i- (let (result) Err bitreich.org 70 i- (unwind-protect-case () Err bitreich.org 70 i- (random 10) Err bitreich.org 70 i- (:always (push :always result)) Err bitreich.org 70 i- (:normal (push :normal result)) Err bitreich.org 70 i- (:abort (push :abort result))) Err bitreich.org 70 i- result) Err bitreich.org 70 i- (:normal :always)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest unwind-protect-case.3 Err bitreich.org 70 i- (let (result1 result2 result3) Err bitreich.org 70 i- (ignore-errors Err bitreich.org 70 i- (unwind-protect-case () Err bitreich.org 70 i- (error "FOOF!") Err bitreich.org 70 i- (:normal (push :normal result1)) Err bitreich.org 70 i- (:abort (push :abort result1)) Err bitreich.org 70 i- (:always (push :always result1)))) Err bitreich.org 70 i- (catch 'foof Err bitreich.org 70 i- (unwind-protect-case () Err bitreich.org 70 i- (throw 'foof 42) Err bitreich.org 70 i- (:normal (push :normal result2)) Err bitreich.org 70 i- (:abort (push :abort result2)) Err bitreich.org 70 i- (:always (push :always result2)))) Err bitreich.org 70 i- (block foof Err bitreich.org 70 i- (unwind-protect-case () Err bitreich.org 70 i- (return-from foof 42) Err bitreich.org 70 i- (:normal (push :normal result3)) Err bitreich.org 70 i- (:abort (push :abort result3)) Err bitreich.org 70 i- (:always (push :always result3)))) Err bitreich.org 70 i- (values result1 result2 result3)) Err bitreich.org 70 i- (:always :abort) Err bitreich.org 70 i- (:always :abort) Err bitreich.org 70 i- (:always :abort)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest unwind-protect-case.4 Err bitreich.org 70 i- (let (result) Err bitreich.org 70 i- (unwind-protect-case (aborted-p) Err bitreich.org 70 i- (random 42) Err bitreich.org 70 i- (:always (setq result aborted-p))) Err bitreich.org 70 i- result) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest unwind-protect-case.5 Err bitreich.org 70 i- (let (result) Err bitreich.org 70 i- (block foof Err bitreich.org 70 i- (unwind-protect-case (aborted-p) Err bitreich.org 70 i- (return-from foof) Err bitreich.org 70 i- (:always (setq result aborted-p)))) Err bitreich.org 70 i- result) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Control flow Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest switch.1 Err bitreich.org 70 i- (switch (13 :test =) Err bitreich.org 70 i- (12 :oops) Err bitreich.org 70 i- (13.0 :yay)) Err bitreich.org 70 i- :yay) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest switch.2 Err bitreich.org 70 i- (switch (13) Err bitreich.org 70 i- ((+ 12 2) :oops) Err bitreich.org 70 i- ((- 13 1) :oops2) Err bitreich.org 70 i- (t :yay)) Err bitreich.org 70 i- :yay) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest eswitch.1 Err bitreich.org 70 i- (let ((x 13)) Err bitreich.org 70 i- (eswitch (x :test =) Err bitreich.org 70 i- (12 :oops) Err bitreich.org 70 i- (13.0 :yay))) Err bitreich.org 70 i- :yay) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest eswitch.2 Err bitreich.org 70 i- (let ((x 13)) Err bitreich.org 70 i- (eswitch (x :key 1+) Err bitreich.org 70 i- (11 :oops) Err bitreich.org 70 i- (14 :yay))) Err bitreich.org 70 i- :yay) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest cswitch.1 Err bitreich.org 70 i- (cswitch (13 :test =) Err bitreich.org 70 i- (12 :oops) Err bitreich.org 70 i- (13.0 :yay)) Err bitreich.org 70 i- :yay) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest cswitch.2 Err bitreich.org 70 i- (cswitch (13 :key 1-) Err bitreich.org 70 i- (12 :yay) Err bitreich.org 70 i- (13.0 :oops)) Err bitreich.org 70 i- :yay) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest multiple-value-prog2.1 Err bitreich.org 70 i- (multiple-value-prog2 Err bitreich.org 70 i- (values 1 1 1) Err bitreich.org 70 i- (values 2 20 200) Err bitreich.org 70 i- (values 3 3 3)) Err bitreich.org 70 i- 2 20 200) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest nth-value-or.1 Err bitreich.org 70 i- (multiple-value-bind (a b c) Err bitreich.org 70 i- (nth-value-or 1 Err bitreich.org 70 i- (values 1 nil 1) Err bitreich.org 70 i- (values 2 2 2)) Err bitreich.org 70 i- (= a b c 2)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest whichever.1 Err bitreich.org 70 i- (let ((x (whichever 1 2 3))) Err bitreich.org 70 i- (and (member x '(1 2 3)) t)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest whichever.2 Err bitreich.org 70 i- (let* ((a 1) Err bitreich.org 70 i- (b 2) Err bitreich.org 70 i- (c 3) Err bitreich.org 70 i- (x (whichever a b c))) Err bitreich.org 70 i- (and (member x '(1 2 3)) t)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest xor.1 Err bitreich.org 70 i- (xor nil nil 1 nil) Err bitreich.org 70 i- 1 Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest xor.2 Err bitreich.org 70 i- (xor nil nil 1 2) Err bitreich.org 70 i- nil Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest xor.3 Err bitreich.org 70 i- (xor nil nil nil) Err bitreich.org 70 i- nil Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Definitions Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest define-constant.1 Err bitreich.org 70 i- (let ((name (gensym))) Err bitreich.org 70 i- (eval `(define-constant ,name "FOO" :test 'equal)) Err bitreich.org 70 i- (eval `(define-constant ,name "FOO" :test 'equal)) Err bitreich.org 70 i- (values (equal "FOO" (symbol-value name)) Err bitreich.org 70 i- (constantp name))) Err bitreich.org 70 i- t Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest define-constant.2 Err bitreich.org 70 i- (let ((name (gensym))) Err bitreich.org 70 i- (eval `(define-constant ,name 13)) Err bitreich.org 70 i- (eval `(define-constant ,name 13)) Err bitreich.org 70 i- (values (eql 13 (symbol-value name)) Err bitreich.org 70 i- (constantp name))) Err bitreich.org 70 i- t Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Errors Err bitreich.org 70 i- Err bitreich.org 70 i-;;; TYPEP is specified to return a generalized boolean and, for Err bitreich.org 70 i-;;; example, ECL exploits this by returning the superclasses of ERROR Err bitreich.org 70 i-;;; in this case. Err bitreich.org 70 i-(defun errorp (x) Err bitreich.org 70 i- (not (null (typep x 'error)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest required-argument.1 Err bitreich.org 70 i- (multiple-value-bind (res err) Err bitreich.org 70 i- (ignore-errors (required-argument)) Err bitreich.org 70 i- (errorp err)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Hash tables Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest ensure-gethash.1 Err bitreich.org 70 i- (let ((table (make-hash-table)) Err bitreich.org 70 i- (x (list 1))) Err bitreich.org 70 i- (multiple-value-bind (value already-there) Err bitreich.org 70 i- (ensure-gethash x table 42) Err bitreich.org 70 i- (and (= value 42) Err bitreich.org 70 i- (not already-there) Err bitreich.org 70 i- (= 42 (gethash x table)) Err bitreich.org 70 i- (multiple-value-bind (value2 already-there2) Err bitreich.org 70 i- (ensure-gethash x table 13) Err bitreich.org 70 i- (and (= value2 42) Err bitreich.org 70 i- already-there2 Err bitreich.org 70 i- (= 42 (gethash x table))))))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest ensure-gethash.2 Err bitreich.org 70 i- (let ((table (make-hash-table)) Err bitreich.org 70 i- (count 0)) Err bitreich.org 70 i- (multiple-value-call #'values Err bitreich.org 70 i- (ensure-gethash (progn (incf count) :foo) Err bitreich.org 70 i- (progn (incf count) table) Err bitreich.org 70 i- (progn (incf count) :bar)) Err bitreich.org 70 i- (gethash :foo table) Err bitreich.org 70 i- count)) Err bitreich.org 70 i- :bar nil :bar t 3) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest copy-hash-table.1 Err bitreich.org 70 i- (let ((orig (make-hash-table :test 'eq :size 123)) Err bitreich.org 70 i- (foo "foo")) Err bitreich.org 70 i- (setf (gethash orig orig) t Err bitreich.org 70 i- (gethash foo orig) t) Err bitreich.org 70 i- (let ((eq-copy (copy-hash-table orig)) Err bitreich.org 70 i- (eql-copy (copy-hash-table orig :test 'eql)) Err bitreich.org 70 i- (equal-copy (copy-hash-table orig :test 'equal)) Err bitreich.org 70 i- (equalp-copy (copy-hash-table orig :test 'equalp))) Err bitreich.org 70 i- (list (eql (hash-table-size eq-copy) (hash-table-size orig)) Err bitreich.org 70 i- (eql (hash-table-rehash-size eq-copy) Err bitreich.org 70 i- (hash-table-rehash-size orig)) Err bitreich.org 70 i- (hash-table-count eql-copy) Err bitreich.org 70 i- (gethash orig eq-copy) Err bitreich.org 70 i- (gethash (copy-seq foo) eql-copy) Err bitreich.org 70 i- (gethash foo eql-copy) Err bitreich.org 70 i- (gethash (copy-seq foo) equal-copy) Err bitreich.org 70 i- (gethash "FOO" equal-copy) Err bitreich.org 70 i- (gethash "FOO" equalp-copy)))) Err bitreich.org 70 i- (t t 2 t nil t t nil t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest copy-hash-table.2 Err bitreich.org 70 i- (let ((ht (make-hash-table)) Err bitreich.org 70 i- (list (list :list (vector :A :B :C)))) Err bitreich.org 70 i- (setf (gethash 'list ht) list) Err bitreich.org 70 i- (let* ((shallow-copy (copy-hash-table ht)) Err bitreich.org 70 i- (deep1-copy (copy-hash-table ht :key 'copy-list)) Err bitreich.org 70 i- (list (gethash 'list ht)) Err bitreich.org 70 i- (shallow-list (gethash 'list shallow-copy)) Err bitreich.org 70 i- (deep1-list (gethash 'list deep1-copy))) Err bitreich.org 70 i- (list (eq ht shallow-copy) Err bitreich.org 70 i- (eq ht deep1-copy) Err bitreich.org 70 i- (eq list shallow-list) Err bitreich.org 70 i- (eq list deep1-list) ; outer list was copied. Err bitreich.org 70 i- (eq (second list) (second shallow-list)) Err bitreich.org 70 i- (eq (second list) (second deep1-list)) ; inner vector wasn't copied. Err bitreich.org 70 i- ))) Err bitreich.org 70 i- (nil nil t nil t t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest maphash-keys.1 Err bitreich.org 70 i- (let ((keys nil) Err bitreich.org 70 i- (table (make-hash-table))) Err bitreich.org 70 i- (declare (notinline maphash-keys)) Err bitreich.org 70 i- (dotimes (i 10) Err bitreich.org 70 i- (setf (gethash i table) t)) Err bitreich.org 70 i- (maphash-keys (lambda (k) (push k keys)) table) Err bitreich.org 70 i- (set-equal keys '(0 1 2 3 4 5 6 7 8 9))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest maphash-values.1 Err bitreich.org 70 i- (let ((vals nil) Err bitreich.org 70 i- (table (make-hash-table))) Err bitreich.org 70 i- (declare (notinline maphash-values)) Err bitreich.org 70 i- (dotimes (i 10) Err bitreich.org 70 i- (setf (gethash i table) (- i))) Err bitreich.org 70 i- (maphash-values (lambda (v) (push v vals)) table) Err bitreich.org 70 i- (set-equal vals '(0 -1 -2 -3 -4 -5 -6 -7 -8 -9))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest hash-table-keys.1 Err bitreich.org 70 i- (let ((table (make-hash-table))) Err bitreich.org 70 i- (dotimes (i 10) Err bitreich.org 70 i- (setf (gethash i table) t)) Err bitreich.org 70 i- (set-equal (hash-table-keys table) '(0 1 2 3 4 5 6 7 8 9))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest hash-table-values.1 Err bitreich.org 70 i- (let ((table (make-hash-table))) Err bitreich.org 70 i- (dotimes (i 10) Err bitreich.org 70 i- (setf (gethash (gensym) table) i)) Err bitreich.org 70 i- (set-equal (hash-table-values table) '(0 1 2 3 4 5 6 7 8 9))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest hash-table-alist.1 Err bitreich.org 70 i- (let ((table (make-hash-table))) Err bitreich.org 70 i- (dotimes (i 10) Err bitreich.org 70 i- (setf (gethash i table) (- i))) Err bitreich.org 70 i- (let ((alist (hash-table-alist table))) Err bitreich.org 70 i- (list (length alist) Err bitreich.org 70 i- (assoc 0 alist) Err bitreich.org 70 i- (assoc 3 alist) Err bitreich.org 70 i- (assoc 9 alist) Err bitreich.org 70 i- (assoc nil alist)))) Err bitreich.org 70 i- (10 (0 . 0) (3 . -3) (9 . -9) nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest hash-table-plist.1 Err bitreich.org 70 i- (let ((table (make-hash-table))) Err bitreich.org 70 i- (dotimes (i 10) Err bitreich.org 70 i- (setf (gethash i table) (- i))) Err bitreich.org 70 i- (let ((plist (hash-table-plist table))) Err bitreich.org 70 i- (list (length plist) Err bitreich.org 70 i- (getf plist 0) Err bitreich.org 70 i- (getf plist 2) Err bitreich.org 70 i- (getf plist 7) Err bitreich.org 70 i- (getf plist nil)))) Err bitreich.org 70 i- (20 0 -2 -7 nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest alist-hash-table.1 Err bitreich.org 70 i- (let* ((alist '((0 a) (1 b) (2 c))) Err bitreich.org 70 i- (table (alist-hash-table alist))) Err bitreich.org 70 i- (list (hash-table-count table) Err bitreich.org 70 i- (gethash 0 table) Err bitreich.org 70 i- (gethash 1 table) Err bitreich.org 70 i- (gethash 2 table) Err bitreich.org 70 i- (eq (hash-table-test-name 'eql) Err bitreich.org 70 i- (hash-table-test table)))) Err bitreich.org 70 i- (3 (a) (b) (c) t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest alist-hash-table.duplicate-keys Err bitreich.org 70 i- (let* ((alist '((0 a) (1 b) (0 c) (1 d) (2 e))) Err bitreich.org 70 i- (table (alist-hash-table alist))) Err bitreich.org 70 i- (list (hash-table-count table) Err bitreich.org 70 i- (gethash 0 table) Err bitreich.org 70 i- (gethash 1 table) Err bitreich.org 70 i- (gethash 2 table))) Err bitreich.org 70 i- (3 (a) (b) (e))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest plist-hash-table.1 Err bitreich.org 70 i- (let* ((plist '(:a 1 :b 2 :c 3)) Err bitreich.org 70 i- (table (plist-hash-table plist :test 'eq))) Err bitreich.org 70 i- (list (hash-table-count table) Err bitreich.org 70 i- (gethash :a table) Err bitreich.org 70 i- (gethash :b table) Err bitreich.org 70 i- (gethash :c table) Err bitreich.org 70 i- (gethash 2 table) Err bitreich.org 70 i- (gethash nil table) Err bitreich.org 70 i- (eq (hash-table-test-name 'eq) Err bitreich.org 70 i- (hash-table-test table)))) Err bitreich.org 70 i- (3 1 2 3 nil nil t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest plist-hash-table.duplicate-keys Err bitreich.org 70 i- (let* ((plist '(:a 1 :b 2 :a 3 :b 4 :c 5)) Err bitreich.org 70 i- (table (plist-hash-table plist))) Err bitreich.org 70 i- (list (hash-table-count table) Err bitreich.org 70 i- (gethash :a table) Err bitreich.org 70 i- (gethash :b table) Err bitreich.org 70 i- (gethash :c table))) Err bitreich.org 70 i- (3 1 2 5)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Functions Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest disjoin.1 Err bitreich.org 70 i- (let ((disjunction (disjoin (lambda (x) Err bitreich.org 70 i- (and (consp x) :cons)) Err bitreich.org 70 i- (lambda (x) Err bitreich.org 70 i- (and (stringp x) :string))))) Err bitreich.org 70 i- (list (funcall disjunction 'zot) Err bitreich.org 70 i- (funcall disjunction '(foo bar)) Err bitreich.org 70 i- (funcall disjunction "test"))) Err bitreich.org 70 i- (nil :cons :string)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest disjoin.2 Err bitreich.org 70 i- (let ((disjunction (disjoin #'zerop))) Err bitreich.org 70 i- (list (funcall disjunction 0) Err bitreich.org 70 i- (funcall disjunction 1))) Err bitreich.org 70 i- (t nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest conjoin.1 Err bitreich.org 70 i- (let ((conjunction (conjoin #'consp Err bitreich.org 70 i- (lambda (x) Err bitreich.org 70 i- (stringp (car x))) Err bitreich.org 70 i- (lambda (x) Err bitreich.org 70 i- (char (car x) 0))))) Err bitreich.org 70 i- (list (funcall conjunction 'zot) Err bitreich.org 70 i- (funcall conjunction '(foo)) Err bitreich.org 70 i- (funcall conjunction '("foo")))) Err bitreich.org 70 i- (nil nil #\f)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest conjoin.2 Err bitreich.org 70 i- (let ((conjunction (conjoin #'zerop))) Err bitreich.org 70 i- (list (funcall conjunction 0) Err bitreich.org 70 i- (funcall conjunction 1))) Err bitreich.org 70 i- (t nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest compose.1 Err bitreich.org 70 i- (let ((composite (compose '1+ Err bitreich.org 70 i- (lambda (x) Err bitreich.org 70 i- (* x 2)) Err bitreich.org 70 i- #'read-from-string))) Err bitreich.org 70 i- (funcall composite "1")) Err bitreich.org 70 i- 3) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest compose.2 Err bitreich.org 70 i- (let ((composite Err bitreich.org 70 i- (locally (declare (notinline compose)) Err bitreich.org 70 i- (compose '1+ Err bitreich.org 70 i- (lambda (x) Err bitreich.org 70 i- (* x 2)) Err bitreich.org 70 i- #'read-from-string)))) Err bitreich.org 70 i- (funcall composite "2")) Err bitreich.org 70 i- 5) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest compose.3 Err bitreich.org 70 i- (let ((compose-form (funcall (compiler-macro-function 'compose) Err bitreich.org 70 i- '(compose '1+ Err bitreich.org 70 i- (lambda (x) Err bitreich.org 70 i- (* x 2)) Err bitreich.org 70 i- #'read-from-string) Err bitreich.org 70 i- nil))) Err bitreich.org 70 i- (let ((fun (funcall (compile nil `(lambda () ,compose-form))))) Err bitreich.org 70 i- (funcall fun "3"))) Err bitreich.org 70 i- 7) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest compose.4 Err bitreich.org 70 i- (let ((composite (compose #'zerop))) Err bitreich.org 70 i- (list (funcall composite 0) Err bitreich.org 70 i- (funcall composite 1))) Err bitreich.org 70 i- (t nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest multiple-value-compose.1 Err bitreich.org 70 i- (let ((composite (multiple-value-compose Err bitreich.org 70 i- #'truncate Err bitreich.org 70 i- (lambda (x y) Err bitreich.org 70 i- (values y x)) Err bitreich.org 70 i- (lambda (x) Err bitreich.org 70 i- (with-input-from-string (s x) Err bitreich.org 70 i- (values (read s) (read s))))))) Err bitreich.org 70 i- (multiple-value-list (funcall composite "2 7"))) Err bitreich.org 70 i- (3 1)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest multiple-value-compose.2 Err bitreich.org 70 i- (let ((composite (locally (declare (notinline multiple-value-compose)) Err bitreich.org 70 i- (multiple-value-compose Err bitreich.org 70 i- #'truncate Err bitreich.org 70 i- (lambda (x y) Err bitreich.org 70 i- (values y x)) Err bitreich.org 70 i- (lambda (x) Err bitreich.org 70 i- (with-input-from-string (s x) Err bitreich.org 70 i- (values (read s) (read s)))))))) Err bitreich.org 70 i- (multiple-value-list (funcall composite "2 11"))) Err bitreich.org 70 i- (5 1)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest multiple-value-compose.3 Err bitreich.org 70 i- (let ((compose-form (funcall (compiler-macro-function 'multiple-value-compose) Err bitreich.org 70 i- '(multiple-value-compose Err bitreich.org 70 i- #'truncate Err bitreich.org 70 i- (lambda (x y) Err bitreich.org 70 i- (values y x)) Err bitreich.org 70 i- (lambda (x) Err bitreich.org 70 i- (with-input-from-string (s x) Err bitreich.org 70 i- (values (read s) (read s))))) Err bitreich.org 70 i- nil))) Err bitreich.org 70 i- (let ((fun (funcall (compile nil `(lambda () ,compose-form))))) Err bitreich.org 70 i- (multiple-value-list (funcall fun "2 9")))) Err bitreich.org 70 i- (4 1)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest multiple-value-compose.4 Err bitreich.org 70 i- (let ((composite (multiple-value-compose #'truncate))) Err bitreich.org 70 i- (multiple-value-list (funcall composite 9 2))) Err bitreich.org 70 i- (4 1)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest curry.1 Err bitreich.org 70 i- (let ((curried (curry '+ 3))) Err bitreich.org 70 i- (funcall curried 1 5)) Err bitreich.org 70 i- 9) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest curry.2 Err bitreich.org 70 i- (let ((curried (locally (declare (notinline curry)) Err bitreich.org 70 i- (curry '* 2 3)))) Err bitreich.org 70 i- (funcall curried 7)) Err bitreich.org 70 i- 42) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest curry.3 Err bitreich.org 70 i- (let ((curried-form (funcall (compiler-macro-function 'curry) Err bitreich.org 70 i- '(curry '/ 8) Err bitreich.org 70 i- nil))) Err bitreich.org 70 i- (let ((fun (funcall (compile nil `(lambda () ,curried-form))))) Err bitreich.org 70 i- (funcall fun 2))) Err bitreich.org 70 i- 4) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest curry.4 Err bitreich.org 70 i- (let* ((x 1) Err bitreich.org 70 i- (curried (curry (progn Err bitreich.org 70 i- (incf x) Err bitreich.org 70 i- (lambda (y z) (* x y z))) Err bitreich.org 70 i- 3))) Err bitreich.org 70 i- (list (funcall curried 7) Err bitreich.org 70 i- (funcall curried 7) Err bitreich.org 70 i- x)) Err bitreich.org 70 i- (42 42 2)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest rcurry.1 Err bitreich.org 70 i- (let ((r (rcurry '/ 2))) Err bitreich.org 70 i- (funcall r 8)) Err bitreich.org 70 i- 4) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest rcurry.2 Err bitreich.org 70 i- (let* ((x 1) Err bitreich.org 70 i- (curried (rcurry (progn Err bitreich.org 70 i- (incf x) Err bitreich.org 70 i- (lambda (y z) (* x y z))) Err bitreich.org 70 i- 3))) Err bitreich.org 70 i- (list (funcall curried 7) Err bitreich.org 70 i- (funcall curried 7) Err bitreich.org 70 i- x)) Err bitreich.org 70 i- (42 42 2)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest named-lambda.1 Err bitreich.org 70 i- (let ((fac (named-lambda fac (x) Err bitreich.org 70 i- (if (> x 1) Err bitreich.org 70 i- (* x (fac (- x 1))) Err bitreich.org 70 i- x)))) Err bitreich.org 70 i- (funcall fac 5)) Err bitreich.org 70 i- 120) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest named-lambda.2 Err bitreich.org 70 i- (let ((fac (named-lambda fac (&key x) Err bitreich.org 70 i- (if (> x 1) Err bitreich.org 70 i- (* x (fac :x (- x 1))) Err bitreich.org 70 i- x)))) Err bitreich.org 70 i- (funcall fac :x 5)) Err bitreich.org 70 i- 120) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Lists Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest alist-plist.1 Err bitreich.org 70 i- (alist-plist '((a . 1) (b . 2) (c . 3))) Err bitreich.org 70 i- (a 1 b 2 c 3)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest plist-alist.1 Err bitreich.org 70 i- (plist-alist '(a 1 b 2 c 3)) Err bitreich.org 70 i- ((a . 1) (b . 2) (c . 3))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest unionf.1 Err bitreich.org 70 i- (let* ((list (list 1 2 3)) Err bitreich.org 70 i- (orig list)) Err bitreich.org 70 i- (unionf list (list 1 2 4)) Err bitreich.org 70 i- (values (equal orig (list 1 2 3)) Err bitreich.org 70 i- (eql (length list) 4) Err bitreich.org 70 i- (set-difference list (list 1 2 3 4)) Err bitreich.org 70 i- (set-difference (list 1 2 3 4) list))) Err bitreich.org 70 i- t Err bitreich.org 70 i- t Err bitreich.org 70 i- nil Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest nunionf.1 Err bitreich.org 70 i- (let ((list (list 1 2 3))) Err bitreich.org 70 i- (nunionf list (list 1 2 4)) Err bitreich.org 70 i- (values (eql (length list) 4) Err bitreich.org 70 i- (set-difference (list 1 2 3 4) list) Err bitreich.org 70 i- (set-difference list (list 1 2 3 4)))) Err bitreich.org 70 i- t Err bitreich.org 70 i- nil Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest appendf.1 Err bitreich.org 70 i- (let* ((list (list 1 2 3)) Err bitreich.org 70 i- (orig list)) Err bitreich.org 70 i- (appendf list '(4 5 6) '(7 8)) Err bitreich.org 70 i- (list list (eq list orig))) Err bitreich.org 70 i- ((1 2 3 4 5 6 7 8) nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest nconcf.1 Err bitreich.org 70 i- (let ((list1 (list 1 2 3)) Err bitreich.org 70 i- (list2 (list 4 5 6))) Err bitreich.org 70 i- (nconcf list1 list2 (list 7 8 9)) Err bitreich.org 70 i- list1) Err bitreich.org 70 i- (1 2 3 4 5 6 7 8 9)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest circular-list.1 Err bitreich.org 70 i- (let ((circle (circular-list 1 2 3))) Err bitreich.org 70 i- (list (first circle) Err bitreich.org 70 i- (second circle) Err bitreich.org 70 i- (third circle) Err bitreich.org 70 i- (fourth circle) Err bitreich.org 70 i- (eq circle (nthcdr 3 circle)))) Err bitreich.org 70 i- (1 2 3 1 t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest circular-list-p.1 Err bitreich.org 70 i- (let* ((circle (circular-list 1 2 3 4)) Err bitreich.org 70 i- (tree (list circle circle)) Err bitreich.org 70 i- (dotted (cons circle t)) Err bitreich.org 70 i- (proper (list 1 2 3 circle)) Err bitreich.org 70 i- (tailcirc (list* 1 2 3 circle))) Err bitreich.org 70 i- (list (circular-list-p circle) Err bitreich.org 70 i- (circular-list-p tree) Err bitreich.org 70 i- (circular-list-p dotted) Err bitreich.org 70 i- (circular-list-p proper) Err bitreich.org 70 i- (circular-list-p tailcirc))) Err bitreich.org 70 i- (t nil nil nil t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest circular-list-p.2 Err bitreich.org 70 i- (circular-list-p 'foo) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest circular-tree-p.1 Err bitreich.org 70 i- (let* ((circle (circular-list 1 2 3 4)) Err bitreich.org 70 i- (tree1 (list circle circle)) Err bitreich.org 70 i- (tree2 (let* ((level2 (list 1 nil 2)) Err bitreich.org 70 i- (level1 (list level2))) Err bitreich.org 70 i- (setf (second level2) level1) Err bitreich.org 70 i- level1)) Err bitreich.org 70 i- (dotted (cons circle t)) Err bitreich.org 70 i- (proper (list 1 2 3 circle)) Err bitreich.org 70 i- (tailcirc (list* 1 2 3 circle)) Err bitreich.org 70 i- (quite-proper (list 1 2 3)) Err bitreich.org 70 i- (quite-dotted (list 1 (cons 2 3)))) Err bitreich.org 70 i- (list (circular-tree-p circle) Err bitreich.org 70 i- (circular-tree-p tree1) Err bitreich.org 70 i- (circular-tree-p tree2) Err bitreich.org 70 i- (circular-tree-p dotted) Err bitreich.org 70 i- (circular-tree-p proper) Err bitreich.org 70 i- (circular-tree-p tailcirc) Err bitreich.org 70 i- (circular-tree-p quite-proper) Err bitreich.org 70 i- (circular-tree-p quite-dotted))) Err bitreich.org 70 i- (t t t t t t nil nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest circular-tree-p.2 Err bitreich.org 70 i- (alexandria:circular-tree-p '#1=(#1#)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest proper-list-p.1 Err bitreich.org 70 i- (let ((l1 (list 1)) Err bitreich.org 70 i- (l2 (list 1 2)) Err bitreich.org 70 i- (l3 (cons 1 2)) Err bitreich.org 70 i- (l4 (list (cons 1 2) 3)) Err bitreich.org 70 i- (l5 (circular-list 1 2))) Err bitreich.org 70 i- (list (proper-list-p l1) Err bitreich.org 70 i- (proper-list-p l2) Err bitreich.org 70 i- (proper-list-p l3) Err bitreich.org 70 i- (proper-list-p l4) Err bitreich.org 70 i- (proper-list-p l5))) Err bitreich.org 70 i- (t t nil t nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest proper-list-p.2 Err bitreich.org 70 i- (proper-list-p '(1 2 . 3)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest proper-list.type.1 Err bitreich.org 70 i- (let ((l1 (list 1)) Err bitreich.org 70 i- (l2 (list 1 2)) Err bitreich.org 70 i- (l3 (cons 1 2)) Err bitreich.org 70 i- (l4 (list (cons 1 2) 3)) Err bitreich.org 70 i- (l5 (circular-list 1 2))) Err bitreich.org 70 i- (list (typep l1 'proper-list) Err bitreich.org 70 i- (typep l2 'proper-list) Err bitreich.org 70 i- (typep l3 'proper-list) Err bitreich.org 70 i- (typep l4 'proper-list) Err bitreich.org 70 i- (typep l5 'proper-list))) Err bitreich.org 70 i- (t t nil t nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest proper-list-length.1 Err bitreich.org 70 i- (values Err bitreich.org 70 i- (proper-list-length nil) Err bitreich.org 70 i- (proper-list-length (list 1)) Err bitreich.org 70 i- (proper-list-length (list 2 2)) Err bitreich.org 70 i- (proper-list-length (list 3 3 3)) Err bitreich.org 70 i- (proper-list-length (list 4 4 4 4)) Err bitreich.org 70 i- (proper-list-length (list 5 5 5 5 5)) Err bitreich.org 70 i- (proper-list-length (list 6 6 6 6 6 6)) Err bitreich.org 70 i- (proper-list-length (list 7 7 7 7 7 7 7)) Err bitreich.org 70 i- (proper-list-length (list 8 8 8 8 8 8 8 8)) Err bitreich.org 70 i- (proper-list-length (list 9 9 9 9 9 9 9 9 9))) Err bitreich.org 70 i- 0 1 2 3 4 5 6 7 8 9) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest proper-list-length.2 Err bitreich.org 70 i- (flet ((plength (x) Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (proper-list-length x) Err bitreich.org 70 i- (type-error () Err bitreich.org 70 i- :ok)))) Err bitreich.org 70 i- (values Err bitreich.org 70 i- (plength (list* 1)) Err bitreich.org 70 i- (plength (list* 2 2)) Err bitreich.org 70 i- (plength (list* 3 3 3)) Err bitreich.org 70 i- (plength (list* 4 4 4 4)) Err bitreich.org 70 i- (plength (list* 5 5 5 5 5)) Err bitreich.org 70 i- (plength (list* 6 6 6 6 6 6)) Err bitreich.org 70 i- (plength (list* 7 7 7 7 7 7 7)) Err bitreich.org 70 i- (plength (list* 8 8 8 8 8 8 8 8)) Err bitreich.org 70 i- (plength (list* 9 9 9 9 9 9 9 9 9)))) Err bitreich.org 70 i- :ok :ok :ok Err bitreich.org 70 i- :ok :ok :ok Err bitreich.org 70 i- :ok :ok :ok) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest lastcar.1 Err bitreich.org 70 i- (let ((l1 (list 1)) Err bitreich.org 70 i- (l2 (list 1 2))) Err bitreich.org 70 i- (list (lastcar l1) Err bitreich.org 70 i- (lastcar l2))) Err bitreich.org 70 i- (1 2)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest lastcar.error.2 Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (lastcar (circular-list 1 2 3)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- (error () Err bitreich.org 70 i- t)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest setf-lastcar.1 Err bitreich.org 70 i- (let ((l (list 1 2 3 4))) Err bitreich.org 70 i- (values (lastcar l) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (setf (lastcar l) 42) Err bitreich.org 70 i- (lastcar l)))) Err bitreich.org 70 i- 4 Err bitreich.org 70 i- 42) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest setf-lastcar.2 Err bitreich.org 70 i- (let ((l (circular-list 1 2 3))) Err bitreich.org 70 i- (multiple-value-bind (res err) Err bitreich.org 70 i- (ignore-errors (setf (lastcar l) 4)) Err bitreich.org 70 i- (typep err 'type-error))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest make-circular-list.1 Err bitreich.org 70 i- (let ((l (make-circular-list 3 :initial-element :x))) Err bitreich.org 70 i- (setf (car l) :y) Err bitreich.org 70 i- (list (eq l (nthcdr 3 l)) Err bitreich.org 70 i- (first l) Err bitreich.org 70 i- (second l) Err bitreich.org 70 i- (third l) Err bitreich.org 70 i- (fourth l))) Err bitreich.org 70 i- (t :y :x :x :y)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest circular-list.type.1 Err bitreich.org 70 i- (let* ((l1 (list 1 2 3)) Err bitreich.org 70 i- (l2 (circular-list 1 2 3)) Err bitreich.org 70 i- (l3 (list* 1 2 3 l2))) Err bitreich.org 70 i- (list (typep l1 'circular-list) Err bitreich.org 70 i- (typep l2 'circular-list) Err bitreich.org 70 i- (typep l3 'circular-list))) Err bitreich.org 70 i- (nil t t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest ensure-list.1 Err bitreich.org 70 i- (let ((x (list 1)) Err bitreich.org 70 i- (y 2)) Err bitreich.org 70 i- (list (ensure-list x) Err bitreich.org 70 i- (ensure-list y))) Err bitreich.org 70 i- ((1) (2))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest ensure-cons.1 Err bitreich.org 70 i- (let ((x (cons 1 2)) Err bitreich.org 70 i- (y nil) Err bitreich.org 70 i- (z "foo")) Err bitreich.org 70 i- (values (ensure-cons x) Err bitreich.org 70 i- (ensure-cons y) Err bitreich.org 70 i- (ensure-cons z))) Err bitreich.org 70 i- (1 . 2) Err bitreich.org 70 i- (nil) Err bitreich.org 70 i- ("foo")) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest setp.1 Err bitreich.org 70 i- (setp '(1)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest setp.2 Err bitreich.org 70 i- (setp nil) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest setp.3 Err bitreich.org 70 i- (setp "foo") Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest setp.4 Err bitreich.org 70 i- (setp '(1 2 3 1)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest setp.5 Err bitreich.org 70 i- (setp '(1 2 3)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest setp.6 Err bitreich.org 70 i- (setp '(a :a)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest setp.7 Err bitreich.org 70 i- (setp '(a :a) :key 'character) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest setp.8 Err bitreich.org 70 i- (setp '(a :a) :key 'character :test (constantly nil)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest set-equal.1 Err bitreich.org 70 i- (set-equal '(1 2 3) '(3 1 2)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest set-equal.2 Err bitreich.org 70 i- (set-equal '("Xa") '("Xb") Err bitreich.org 70 i- :test (lambda (a b) (eql (char a 0) (char b 0)))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest set-equal.3 Err bitreich.org 70 i- (set-equal '(1 2) '(4 2)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest set-equal.4 Err bitreich.org 70 i- (set-equal '(a b c) '(:a :b :c) :key 'string :test 'equal) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest set-equal.5 Err bitreich.org 70 i- (set-equal '(a d c) '(:a :b :c) :key 'string :test 'equal) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest set-equal.6 Err bitreich.org 70 i- (set-equal '(a b c) '(a b c d)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest map-product.1 Err bitreich.org 70 i- (map-product 'cons '(2 3) '(1 4)) Err bitreich.org 70 i- ((2 . 1) (2 . 4) (3 . 1) (3 . 4))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest map-product.2 Err bitreich.org 70 i- (map-product #'cons '(2 3) '(1 4)) Err bitreich.org 70 i- ((2 . 1) (2 . 4) (3 . 1) (3 . 4))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest flatten.1 Err bitreich.org 70 i- (flatten '((1) 2 (((3 4))) ((((5)) 6)) 7)) Err bitreich.org 70 i- (1 2 3 4 5 6 7)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest remove-from-plist.1 Err bitreich.org 70 i- (let ((orig '(a 1 b 2 c 3 d 4))) Err bitreich.org 70 i- (list (remove-from-plist orig 'a 'c) Err bitreich.org 70 i- (remove-from-plist orig 'b 'd) Err bitreich.org 70 i- (remove-from-plist orig 'b) Err bitreich.org 70 i- (remove-from-plist orig 'a) Err bitreich.org 70 i- (remove-from-plist orig 'd 42 "zot") Err bitreich.org 70 i- (remove-from-plist orig 'a 'b 'c 'd) Err bitreich.org 70 i- (remove-from-plist orig 'a 'b 'c 'd 'x) Err bitreich.org 70 i- (equal orig '(a 1 b 2 c 3 d 4)))) Err bitreich.org 70 i- ((b 2 d 4) Err bitreich.org 70 i- (a 1 c 3) Err bitreich.org 70 i- (a 1 c 3 d 4) Err bitreich.org 70 i- (b 2 c 3 d 4) Err bitreich.org 70 i- (a 1 b 2 c 3) Err bitreich.org 70 i- nil Err bitreich.org 70 i- nil Err bitreich.org 70 i- t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest delete-from-plist.1 Err bitreich.org 70 i- (let ((orig '(a 1 b 2 c 3 d 4 d 5))) Err bitreich.org 70 i- (list (delete-from-plist (copy-list orig) 'a 'c) Err bitreich.org 70 i- (delete-from-plist (copy-list orig) 'b 'd) Err bitreich.org 70 i- (delete-from-plist (copy-list orig) 'b) Err bitreich.org 70 i- (delete-from-plist (copy-list orig) 'a) Err bitreich.org 70 i- (delete-from-plist (copy-list orig) 'd 42 "zot") Err bitreich.org 70 i- (delete-from-plist (copy-list orig) 'a 'b 'c 'd) Err bitreich.org 70 i- (delete-from-plist (copy-list orig) 'a 'b 'c 'd 'x) Err bitreich.org 70 i- (equal orig (delete-from-plist orig)) Err bitreich.org 70 i- (eq orig (delete-from-plist orig)))) Err bitreich.org 70 i- ((b 2 d 4 d 5) Err bitreich.org 70 i- (a 1 c 3) Err bitreich.org 70 i- (a 1 c 3 d 4 d 5) Err bitreich.org 70 i- (b 2 c 3 d 4 d 5) Err bitreich.org 70 i- (a 1 b 2 c 3) Err bitreich.org 70 i- nil Err bitreich.org 70 i- nil Err bitreich.org 70 i- t Err bitreich.org 70 i- t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest mappend.1 Err bitreich.org 70 i- (mappend (compose 'list '*) '(1 2 3) '(1 2 3)) Err bitreich.org 70 i- (1 4 9)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest assoc-value.1 Err bitreich.org 70 i- (let ((key1 '(complex key)) Err bitreich.org 70 i- (key2 'simple-key) Err bitreich.org 70 i- (alist '()) Err bitreich.org 70 i- (result '())) Err bitreich.org 70 i- (push 1 (assoc-value alist key1 :test #'equal)) Err bitreich.org 70 i- (push 2 (assoc-value alist key1 :test 'equal)) Err bitreich.org 70 i- (push 42 (assoc-value alist key2)) Err bitreich.org 70 i- (push 43 (assoc-value alist key2 :test 'eq)) Err bitreich.org 70 i- (push (assoc-value alist key1 :test #'equal) result) Err bitreich.org 70 i- (push (assoc-value alist key2) result) Err bitreich.org 70 i- Err bitreich.org 70 i- (push 'very (rassoc-value alist (list 2 1) :test #'equal)) Err bitreich.org 70 i- (push (cdr (assoc '(very complex key) alist :test #'equal)) result) Err bitreich.org 70 i- result) Err bitreich.org 70 i- ((2 1) (43 42) (2 1))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Numbers Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest clamp.1 Err bitreich.org 70 i- (list (clamp 1.5 1 2) Err bitreich.org 70 i- (clamp 2.0 1 2) Err bitreich.org 70 i- (clamp 1.0 1 2) Err bitreich.org 70 i- (clamp 3 1 2) Err bitreich.org 70 i- (clamp 0 1 2)) Err bitreich.org 70 i- (1.5 2.0 1.0 2 1)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest gaussian-random.1 Err bitreich.org 70 i- (let ((min -0.2) Err bitreich.org 70 i- (max +0.2)) Err bitreich.org 70 i- (multiple-value-bind (g1 g2) Err bitreich.org 70 i- (gaussian-random min max) Err bitreich.org 70 i- (values (<= min g1 max) Err bitreich.org 70 i- (<= min g2 max) Err bitreich.org 70 i- (/= g1 g2) ;uh Err bitreich.org 70 i- ))) Err bitreich.org 70 i- t Err bitreich.org 70 i- t Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-#+sbcl Err bitreich.org 70 i-(deftest gaussian-random.2 Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (sb-ext:with-timeout 2 Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (loop Err bitreich.org 70 i- :repeat 10000 Err bitreich.org 70 i- :do (gaussian-random 0 nil)) Err bitreich.org 70 i- 'done)) Err bitreich.org 70 i- (sb-ext:timeout () Err bitreich.org 70 i- 'timed-out)) Err bitreich.org 70 i- done) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest iota.1 Err bitreich.org 70 i- (iota 3) Err bitreich.org 70 i- (0 1 2)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest iota.2 Err bitreich.org 70 i- (iota 3 :start 0.0d0) Err bitreich.org 70 i- (0.0d0 1.0d0 2.0d0)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest iota.3 Err bitreich.org 70 i- (iota 3 :start 2 :step 3.0) Err bitreich.org 70 i- (2.0 5.0 8.0)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest map-iota.1 Err bitreich.org 70 i- (let (all) Err bitreich.org 70 i- (declare (notinline map-iota)) Err bitreich.org 70 i- (values (map-iota (lambda (x) (push x all)) Err bitreich.org 70 i- 3 Err bitreich.org 70 i- :start 2 Err bitreich.org 70 i- :step 1.1d0) Err bitreich.org 70 i- all)) Err bitreich.org 70 i- 3 Err bitreich.org 70 i- (4.2d0 3.1d0 2.0d0)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest lerp.1 Err bitreich.org 70 i- (lerp 0.5 1 2) Err bitreich.org 70 i- 1.5) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest lerp.2 Err bitreich.org 70 i- (lerp 0.1 1 2) Err bitreich.org 70 i- 1.1) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest lerp.3 Err bitreich.org 70 i- (lerp 0.1 4 25) Err bitreich.org 70 i- 6.1) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest mean.1 Err bitreich.org 70 i- (mean '(1 2 3)) Err bitreich.org 70 i- 2) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest mean.2 Err bitreich.org 70 i- (mean '(1 2 3 4)) Err bitreich.org 70 i- 5/2) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest mean.3 Err bitreich.org 70 i- (mean '(1 2 10)) Err bitreich.org 70 i- 13/3) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest median.1 Err bitreich.org 70 i- (median '(100 0 99 1 98 2 97)) Err bitreich.org 70 i- 97) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest median.2 Err bitreich.org 70 i- (median '(100 0 99 1 98 2 97 96)) Err bitreich.org 70 i- 193/2) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest variance.1 Err bitreich.org 70 i- (variance (list 1 2 3)) Err bitreich.org 70 i- 2/3) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest standard-deviation.1 Err bitreich.org 70 i- (< 0 (standard-deviation (list 1 2 3)) 1) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest maxf.1 Err bitreich.org 70 i- (let ((x 1)) Err bitreich.org 70 i- (maxf x 2) Err bitreich.org 70 i- x) Err bitreich.org 70 i- 2) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest maxf.2 Err bitreich.org 70 i- (let ((x 1)) Err bitreich.org 70 i- (maxf x 0) Err bitreich.org 70 i- x) Err bitreich.org 70 i- 1) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest maxf.3 Err bitreich.org 70 i- (let ((x 1) Err bitreich.org 70 i- (c 0)) Err bitreich.org 70 i- (maxf x (incf c)) Err bitreich.org 70 i- (list x c)) Err bitreich.org 70 i- (1 1)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest maxf.4 Err bitreich.org 70 i- (let ((xv (vector 0 0 0)) Err bitreich.org 70 i- (p 0)) Err bitreich.org 70 i- (maxf (svref xv (incf p)) (incf p)) Err bitreich.org 70 i- (list p xv)) Err bitreich.org 70 i- (2 #(0 2 0))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest minf.1 Err bitreich.org 70 i- (let ((y 1)) Err bitreich.org 70 i- (minf y 0) Err bitreich.org 70 i- y) Err bitreich.org 70 i- 0) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest minf.2 Err bitreich.org 70 i- (let ((xv (vector 10 10 10)) Err bitreich.org 70 i- (p 0)) Err bitreich.org 70 i- (minf (svref xv (incf p)) (incf p)) Err bitreich.org 70 i- (list p xv)) Err bitreich.org 70 i- (2 #(10 2 10))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest subfactorial.1 Err bitreich.org 70 i- (mapcar #'subfactorial (iota 22)) Err bitreich.org 70 i- (1 Err bitreich.org 70 i- 0 Err bitreich.org 70 i- 1 Err bitreich.org 70 i- 2 Err bitreich.org 70 i- 9 Err bitreich.org 70 i- 44 Err bitreich.org 70 i- 265 Err bitreich.org 70 i- 1854 Err bitreich.org 70 i- 14833 Err bitreich.org 70 i- 133496 Err bitreich.org 70 i- 1334961 Err bitreich.org 70 i- 14684570 Err bitreich.org 70 i- 176214841 Err bitreich.org 70 i- 2290792932 Err bitreich.org 70 i- 32071101049 Err bitreich.org 70 i- 481066515734 Err bitreich.org 70 i- 7697064251745 Err bitreich.org 70 i- 130850092279664 Err bitreich.org 70 i- 2355301661033953 Err bitreich.org 70 i- 44750731559645106 Err bitreich.org 70 i- 895014631192902121 Err bitreich.org 70 i- 18795307255050944540)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Arrays Err bitreich.org 70 i- Err bitreich.org 70 i-#+nil Err bitreich.org 70 i-(deftest array-index.type) Err bitreich.org 70 i- Err bitreich.org 70 i-#+nil Err bitreich.org 70 i-(deftest copy-array) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Sequences Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest rotate.1 Err bitreich.org 70 i- (list (rotate (list 1 2 3) 0) Err bitreich.org 70 i- (rotate (list 1 2 3) 1) Err bitreich.org 70 i- (rotate (list 1 2 3) 2) Err bitreich.org 70 i- (rotate (list 1 2 3) 3) Err bitreich.org 70 i- (rotate (list 1 2 3) 4)) Err bitreich.org 70 i- ((1 2 3) Err bitreich.org 70 i- (3 1 2) Err bitreich.org 70 i- (2 3 1) Err bitreich.org 70 i- (1 2 3) Err bitreich.org 70 i- (3 1 2))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest rotate.2 Err bitreich.org 70 i- (list (rotate (vector 1 2 3 4) 0) Err bitreich.org 70 i- (rotate (vector 1 2 3 4)) Err bitreich.org 70 i- (rotate (vector 1 2 3 4) 2) Err bitreich.org 70 i- (rotate (vector 1 2 3 4) 3) Err bitreich.org 70 i- (rotate (vector 1 2 3 4) 4) Err bitreich.org 70 i- (rotate (vector 1 2 3 4) 5)) Err bitreich.org 70 i- (#(1 2 3 4) Err bitreich.org 70 i- #(4 1 2 3) Err bitreich.org 70 i- #(3 4 1 2) Err bitreich.org 70 i- #(2 3 4 1) Err bitreich.org 70 i- #(1 2 3 4) Err bitreich.org 70 i- #(4 1 2 3))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest rotate.3 Err bitreich.org 70 i- (list (rotate (list 1 2 3) 0) Err bitreich.org 70 i- (rotate (list 1 2 3) -1) Err bitreich.org 70 i- (rotate (list 1 2 3) -2) Err bitreich.org 70 i- (rotate (list 1 2 3) -3) Err bitreich.org 70 i- (rotate (list 1 2 3) -4)) Err bitreich.org 70 i- ((1 2 3) Err bitreich.org 70 i- (2 3 1) Err bitreich.org 70 i- (3 1 2) Err bitreich.org 70 i- (1 2 3) Err bitreich.org 70 i- (2 3 1))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest rotate.4 Err bitreich.org 70 i- (list (rotate (vector 1 2 3 4) 0) Err bitreich.org 70 i- (rotate (vector 1 2 3 4) -1) Err bitreich.org 70 i- (rotate (vector 1 2 3 4) -2) Err bitreich.org 70 i- (rotate (vector 1 2 3 4) -3) Err bitreich.org 70 i- (rotate (vector 1 2 3 4) -4) Err bitreich.org 70 i- (rotate (vector 1 2 3 4) -5)) Err bitreich.org 70 i- (#(1 2 3 4) Err bitreich.org 70 i- #(2 3 4 1) Err bitreich.org 70 i- #(3 4 1 2) Err bitreich.org 70 i- #(4 1 2 3) Err bitreich.org 70 i- #(1 2 3 4) Err bitreich.org 70 i- #(2 3 4 1))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest rotate.5 Err bitreich.org 70 i- (values (rotate (list 1) 17) Err bitreich.org 70 i- (rotate (list 1) -5)) Err bitreich.org 70 i- (1) Err bitreich.org 70 i- (1)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest shuffle.1 Err bitreich.org 70 i- (let ((s (shuffle (iota 100)))) Err bitreich.org 70 i- (list (equal s (iota 100)) Err bitreich.org 70 i- (every (lambda (x) Err bitreich.org 70 i- (member x s)) Err bitreich.org 70 i- (iota 100)) Err bitreich.org 70 i- (every (lambda (x) Err bitreich.org 70 i- (typep x '(integer 0 99))) Err bitreich.org 70 i- s))) Err bitreich.org 70 i- (nil t t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest shuffle.2 Err bitreich.org 70 i- (let ((s (shuffle (coerce (iota 100) 'vector)))) Err bitreich.org 70 i- (list (equal s (coerce (iota 100) 'vector)) Err bitreich.org 70 i- (every (lambda (x) Err bitreich.org 70 i- (find x s)) Err bitreich.org 70 i- (iota 100)) Err bitreich.org 70 i- (every (lambda (x) Err bitreich.org 70 i- (typep x '(integer 0 99))) Err bitreich.org 70 i- s))) Err bitreich.org 70 i- (nil t t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest shuffle.3 Err bitreich.org 70 i- (let* ((orig (coerce (iota 21) 'vector)) Err bitreich.org 70 i- (copy (copy-seq orig))) Err bitreich.org 70 i- (shuffle copy :start 10 :end 15) Err bitreich.org 70 i- (list (every #'eql (subseq copy 0 10) (subseq orig 0 10)) Err bitreich.org 70 i- (every #'eql (subseq copy 15) (subseq orig 15)))) Err bitreich.org 70 i- (t t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest random-elt.1 Err bitreich.org 70 i- (let ((s1 #(1 2 3 4)) Err bitreich.org 70 i- (s2 '(1 2 3 4))) Err bitreich.org 70 i- (list (dotimes (i 1000 nil) Err bitreich.org 70 i- (unless (member (random-elt s1) s2) Err bitreich.org 70 i- (return nil)) Err bitreich.org 70 i- (when (/= (random-elt s1) (random-elt s1)) Err bitreich.org 70 i- (return t))) Err bitreich.org 70 i- (dotimes (i 1000 nil) Err bitreich.org 70 i- (unless (member (random-elt s2) s2) Err bitreich.org 70 i- (return nil)) Err bitreich.org 70 i- (when (/= (random-elt s2) (random-elt s2)) Err bitreich.org 70 i- (return t))))) Err bitreich.org 70 i- (t t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest removef.1 Err bitreich.org 70 i- (let* ((x '(1 2 3)) Err bitreich.org 70 i- (x* x) Err bitreich.org 70 i- (y #(1 2 3)) Err bitreich.org 70 i- (y* y)) Err bitreich.org 70 i- (removef x 1) Err bitreich.org 70 i- (removef y 3) Err bitreich.org 70 i- (list x x* y y*)) Err bitreich.org 70 i- ((2 3) Err bitreich.org 70 i- (1 2 3) Err bitreich.org 70 i- #(1 2) Err bitreich.org 70 i- #(1 2 3))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deletef.1 Err bitreich.org 70 i- (let* ((x (list 1 2 3)) Err bitreich.org 70 i- (x* x) Err bitreich.org 70 i- (y (vector 1 2 3))) Err bitreich.org 70 i- (deletef x 2) Err bitreich.org 70 i- (deletef y 1) Err bitreich.org 70 i- (list x x* y)) Err bitreich.org 70 i- ((1 3) Err bitreich.org 70 i- (1 3) Err bitreich.org 70 i- #(2 3))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest map-permutations.1 Err bitreich.org 70 i- (let ((seq (list 1 2 3)) Err bitreich.org 70 i- (seen nil) Err bitreich.org 70 i- (ok t)) Err bitreich.org 70 i- (map-permutations (lambda (s) Err bitreich.org 70 i- (unless (set-equal s seq) Err bitreich.org 70 i- (setf ok nil)) Err bitreich.org 70 i- (when (member s seen :test 'equal) Err bitreich.org 70 i- (setf ok nil)) Err bitreich.org 70 i- (push s seen)) Err bitreich.org 70 i- seq Err bitreich.org 70 i- :copy t) Err bitreich.org 70 i- (values ok (length seen))) Err bitreich.org 70 i- t Err bitreich.org 70 i- 6) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest proper-sequence.type.1 Err bitreich.org 70 i- (mapcar (lambda (x) Err bitreich.org 70 i- (typep x 'proper-sequence)) Err bitreich.org 70 i- (list (list 1 2 3) Err bitreich.org 70 i- (vector 1 2 3) Err bitreich.org 70 i- #2a((1 2) (3 4)) Err bitreich.org 70 i- (circular-list 1 2 3 4))) Err bitreich.org 70 i- (t t nil nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest emptyp.1 Err bitreich.org 70 i- (mapcar #'emptyp Err bitreich.org 70 i- (list (list 1) Err bitreich.org 70 i- (circular-list 1) Err bitreich.org 70 i- nil Err bitreich.org 70 i- (vector) Err bitreich.org 70 i- (vector 1))) Err bitreich.org 70 i- (nil nil t t nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest sequence-of-length-p.1 Err bitreich.org 70 i- (mapcar #'sequence-of-length-p Err bitreich.org 70 i- (list nil Err bitreich.org 70 i- #() Err bitreich.org 70 i- (list 1) Err bitreich.org 70 i- (vector 1) Err bitreich.org 70 i- (list 1 2) Err bitreich.org 70 i- (vector 1 2) Err bitreich.org 70 i- (list 1 2) Err bitreich.org 70 i- (vector 1 2) Err bitreich.org 70 i- (list 1 2) Err bitreich.org 70 i- (vector 1 2)) Err bitreich.org 70 i- (list 0 Err bitreich.org 70 i- 0 Err bitreich.org 70 i- 1 Err bitreich.org 70 i- 1 Err bitreich.org 70 i- 2 Err bitreich.org 70 i- 2 Err bitreich.org 70 i- 1 Err bitreich.org 70 i- 1 Err bitreich.org 70 i- 4 Err bitreich.org 70 i- 4)) Err bitreich.org 70 i- (t t t t t t nil nil nil nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest length=.1 Err bitreich.org 70 i- (mapcar #'length= Err bitreich.org 70 i- (list nil Err bitreich.org 70 i- #() Err bitreich.org 70 i- (list 1) Err bitreich.org 70 i- (vector 1) Err bitreich.org 70 i- (list 1 2) Err bitreich.org 70 i- (vector 1 2) Err bitreich.org 70 i- (list 1 2) Err bitreich.org 70 i- (vector 1 2) Err bitreich.org 70 i- (list 1 2) Err bitreich.org 70 i- (vector 1 2)) Err bitreich.org 70 i- (list 0 Err bitreich.org 70 i- 0 Err bitreich.org 70 i- 1 Err bitreich.org 70 i- 1 Err bitreich.org 70 i- 2 Err bitreich.org 70 i- 2 Err bitreich.org 70 i- 1 Err bitreich.org 70 i- 1 Err bitreich.org 70 i- 4 Err bitreich.org 70 i- 4)) Err bitreich.org 70 i- (t t t t t t nil nil nil nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest length=.2 Err bitreich.org 70 i- ;; test the compiler macro Err bitreich.org 70 i- (macrolet ((x (&rest args) Err bitreich.org 70 i- (funcall Err bitreich.org 70 i- (compile nil Err bitreich.org 70 i- `(lambda () Err bitreich.org 70 i- (length= ,@args)))))) Err bitreich.org 70 i- (list (x 2 '(1 2)) Err bitreich.org 70 i- (x '(1 2) '(3 4)) Err bitreich.org 70 i- (x '(1 2) 2) Err bitreich.org 70 i- (x '(1 2) 2 '(3 4)) Err bitreich.org 70 i- (x 1 2 3))) Err bitreich.org 70 i- (t t t t nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest copy-sequence.1 Err bitreich.org 70 i- (let ((l (list 1 2 3)) Err bitreich.org 70 i- (v (vector #\a #\b #\c))) Err bitreich.org 70 i- (declare (notinline copy-sequence)) Err bitreich.org 70 i- (let ((l.list (copy-sequence 'list l)) Err bitreich.org 70 i- (l.vector (copy-sequence 'vector l)) Err bitreich.org 70 i- (l.spec-v (copy-sequence '(vector fixnum) l)) Err bitreich.org 70 i- (v.vector (copy-sequence 'vector v)) Err bitreich.org 70 i- (v.list (copy-sequence 'list v)) Err bitreich.org 70 i- (v.string (copy-sequence 'string v))) Err bitreich.org 70 i- (list (member l (list l.list l.vector l.spec-v)) Err bitreich.org 70 i- (member v (list v.vector v.list v.string)) Err bitreich.org 70 i- (equal l.list l) Err bitreich.org 70 i- (equalp l.vector #(1 2 3)) Err bitreich.org 70 i- (type= (upgraded-array-element-type 'fixnum) Err bitreich.org 70 i- (array-element-type l.spec-v)) Err bitreich.org 70 i- (equalp v.vector v) Err bitreich.org 70 i- (equal v.list '(#\a #\b #\c)) Err bitreich.org 70 i- (equal "abc" v.string)))) Err bitreich.org 70 i- (nil nil t t t t t t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest first-elt.1 Err bitreich.org 70 i- (mapcar #'first-elt Err bitreich.org 70 i- (list (list 1 2 3) Err bitreich.org 70 i- "abc" Err bitreich.org 70 i- (vector :a :b :c))) Err bitreich.org 70 i- (1 #\a :a)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest first-elt.error.1 Err bitreich.org 70 i- (mapcar (lambda (x) Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (first-elt x) Err bitreich.org 70 i- (type-error () Err bitreich.org 70 i- :type-error))) Err bitreich.org 70 i- (list nil Err bitreich.org 70 i- #() Err bitreich.org 70 i- 12 Err bitreich.org 70 i- :zot)) Err bitreich.org 70 i- (:type-error Err bitreich.org 70 i- :type-error Err bitreich.org 70 i- :type-error Err bitreich.org 70 i- :type-error)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest setf-first-elt.1 Err bitreich.org 70 i- (let ((l (list 1 2 3)) Err bitreich.org 70 i- (s (copy-seq "foobar")) Err bitreich.org 70 i- (v (vector :a :b :c))) Err bitreich.org 70 i- (setf (first-elt l) -1 Err bitreich.org 70 i- (first-elt s) #\x Err bitreich.org 70 i- (first-elt v) 'zot) Err bitreich.org 70 i- (values l s v)) Err bitreich.org 70 i- (-1 2 3) Err bitreich.org 70 i- "xoobar" Err bitreich.org 70 i- #(zot :b :c)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest setf-first-elt.error.1 Err bitreich.org 70 i- (let ((l 'foo)) Err bitreich.org 70 i- (multiple-value-bind (res err) Err bitreich.org 70 i- (ignore-errors (setf (first-elt l) 4)) Err bitreich.org 70 i- (typep err 'type-error))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest last-elt.1 Err bitreich.org 70 i- (mapcar #'last-elt Err bitreich.org 70 i- (list (list 1 2 3) Err bitreich.org 70 i- (vector :a :b :c) Err bitreich.org 70 i- "FOOBAR" Err bitreich.org 70 i- #*001 Err bitreich.org 70 i- #*010)) Err bitreich.org 70 i- (3 :c #\R 1 0)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest last-elt.error.1 Err bitreich.org 70 i- (mapcar (lambda (x) Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (last-elt x) Err bitreich.org 70 i- (type-error () Err bitreich.org 70 i- :type-error))) Err bitreich.org 70 i- (list nil Err bitreich.org 70 i- #() Err bitreich.org 70 i- 12 Err bitreich.org 70 i- :zot Err bitreich.org 70 i- (circular-list 1 2 3) Err bitreich.org 70 i- (list* 1 2 3 (circular-list 4 5)))) Err bitreich.org 70 i- (:type-error Err bitreich.org 70 i- :type-error Err bitreich.org 70 i- :type-error Err bitreich.org 70 i- :type-error Err bitreich.org 70 i- :type-error Err bitreich.org 70 i- :type-error)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest setf-last-elt.1 Err bitreich.org 70 i- (let ((l (list 1 2 3)) Err bitreich.org 70 i- (s (copy-seq "foobar")) Err bitreich.org 70 i- (b (copy-seq #*010101001))) Err bitreich.org 70 i- (setf (last-elt l) '??? Err bitreich.org 70 i- (last-elt s) #\? Err bitreich.org 70 i- (last-elt b) 0) Err bitreich.org 70 i- (values l s b)) Err bitreich.org 70 i- (1 2 ???) Err bitreich.org 70 i- "fooba?" Err bitreich.org 70 i- #*010101000) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest setf-last-elt.error.1 Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (setf (last-elt 'foo) 13) Err bitreich.org 70 i- (type-error () Err bitreich.org 70 i- :type-error)) Err bitreich.org 70 i- :type-error) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest starts-with.1 Err bitreich.org 70 i- (list (starts-with 1 '(1 2 3)) Err bitreich.org 70 i- (starts-with 1 #(1 2 3)) Err bitreich.org 70 i- (starts-with #\x "xyz") Err bitreich.org 70 i- (starts-with 2 '(1 2 3)) Err bitreich.org 70 i- (starts-with 3 #(1 2 3)) Err bitreich.org 70 i- (starts-with 1 1) Err bitreich.org 70 i- (starts-with nil nil)) Err bitreich.org 70 i- (t t t nil nil nil nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest starts-with.2 Err bitreich.org 70 i- (values (starts-with 1 '(-1 2 3) :key '-) Err bitreich.org 70 i- (starts-with "foo" '("foo" "bar") :test 'equal) Err bitreich.org 70 i- (starts-with "f" '(#\f) :key 'string :test 'equal) Err bitreich.org 70 i- (starts-with -1 '(0 1 2) :key #'1+) Err bitreich.org 70 i- (starts-with "zot" '("ZOT") :test 'equal)) Err bitreich.org 70 i- t Err bitreich.org 70 i- t Err bitreich.org 70 i- t Err bitreich.org 70 i- nil Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest ends-with.1 Err bitreich.org 70 i- (list (ends-with 3 '(1 2 3)) Err bitreich.org 70 i- (ends-with 3 #(1 2 3)) Err bitreich.org 70 i- (ends-with #\z "xyz") Err bitreich.org 70 i- (ends-with 2 '(1 2 3)) Err bitreich.org 70 i- (ends-with 1 #(1 2 3)) Err bitreich.org 70 i- (ends-with 1 1) Err bitreich.org 70 i- (ends-with nil nil)) Err bitreich.org 70 i- (t t t nil nil nil nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest ends-with.2 Err bitreich.org 70 i- (values (ends-with 2 '(0 13 1) :key '1+) Err bitreich.org 70 i- (ends-with "foo" (vector "bar" "foo") :test 'equal) Err bitreich.org 70 i- (ends-with "X" (vector 1 2 #\X) :key 'string :test 'equal) Err bitreich.org 70 i- (ends-with "foo" "foo" :test 'equal)) Err bitreich.org 70 i- t Err bitreich.org 70 i- t Err bitreich.org 70 i- t Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest ends-with.error.1 Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (ends-with 3 (circular-list 3 3 3 1 3 3)) Err bitreich.org 70 i- (type-error () Err bitreich.org 70 i- :type-error)) Err bitreich.org 70 i- :type-error) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest sequences.passing-improper-lists Err bitreich.org 70 i- (macrolet ((signals-error-p (form) Err bitreich.org 70 i- `(handler-case Err bitreich.org 70 i- (progn ,form nil) Err bitreich.org 70 i- (type-error (e) Err bitreich.org 70 i- t))) Err bitreich.org 70 i- (cut (fn &rest args) Err bitreich.org 70 i- (with-gensyms (arg) Err bitreich.org 70 i- (print`(lambda (,arg) Err bitreich.org 70 i- (apply ,fn (list ,@(substitute arg '_ args)))))))) Err bitreich.org 70 i- (let ((circular-list (make-circular-list 5 :initial-element :foo)) Err bitreich.org 70 i- (dotted-list (list* 'a 'b 'c 'd))) Err bitreich.org 70 i- (loop for nth from 0 Err bitreich.org 70 i- for fn in (list Err bitreich.org 70 i- (cut #'lastcar _) Err bitreich.org 70 i- (cut #'rotate _ 3) Err bitreich.org 70 i- (cut #'rotate _ -3) Err bitreich.org 70 i- (cut #'shuffle _) Err bitreich.org 70 i- (cut #'random-elt _) Err bitreich.org 70 i- (cut #'last-elt _) Err bitreich.org 70 i- (cut #'ends-with :foo _)) Err bitreich.org 70 i- nconcing Err bitreich.org 70 i- (let ((on-circular-p (signals-error-p (funcall fn circular-list))) Err bitreich.org 70 i- (on-dotted-p (signals-error-p (funcall fn dotted-list)))) Err bitreich.org 70 i- (when (or (not on-circular-p) (not on-dotted-p)) Err bitreich.org 70 i- (append Err bitreich.org 70 i- (unless on-circular-p Err bitreich.org 70 i- (let ((*print-circle* t)) Err bitreich.org 70 i- (list Err bitreich.org 70 i- (format nil Err bitreich.org 70 i- "No appropriate error signalled when passing ~S to ~Ath entry." Err bitreich.org 70 i- circular-list nth)))) Err bitreich.org 70 i- (unless on-dotted-p Err bitreich.org 70 i- (list Err bitreich.org 70 i- (format nil Err bitreich.org 70 i- "No appropriate error signalled when passing ~S to ~Ath entry." Err bitreich.org 70 i- dotted-list nth))))))))) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; IO Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest read-stream-content-into-string.1 Err bitreich.org 70 i- (values (with-input-from-string (stream "foo bar") Err bitreich.org 70 i- (read-stream-content-into-string stream)) Err bitreich.org 70 i- (with-input-from-string (stream "foo bar") Err bitreich.org 70 i- (read-stream-content-into-string stream :buffer-size 1)) Err bitreich.org 70 i- (with-input-from-string (stream "foo bar") Err bitreich.org 70 i- (read-stream-content-into-string stream :buffer-size 6)) Err bitreich.org 70 i- (with-input-from-string (stream "foo bar") Err bitreich.org 70 i- (read-stream-content-into-string stream :buffer-size 7))) Err bitreich.org 70 i- "foo bar" Err bitreich.org 70 i- "foo bar" Err bitreich.org 70 i- "foo bar" Err bitreich.org 70 i- "foo bar") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest read-stream-content-into-string.2 Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (let ((stream (make-broadcast-stream))) Err bitreich.org 70 i- (read-stream-content-into-string stream :buffer-size 0)) Err bitreich.org 70 i- (type-error () Err bitreich.org 70 i- :type-error)) Err bitreich.org 70 i- :type-error) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(or) Err bitreich.org 70 i-(defvar *octets* Err bitreich.org 70 i- (map '(simple-array (unsigned-byte 8) (7)) #'char-code "foo bar")) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(or) Err bitreich.org 70 i-(deftest read-stream-content-into-byte-vector.1 Err bitreich.org 70 i- (values (with-input-from-byte-vector (stream *octets*) Err bitreich.org 70 i- (read-stream-content-into-byte-vector stream)) Err bitreich.org 70 i- (with-input-from-byte-vector (stream *octets*) Err bitreich.org 70 i- (read-stream-content-into-byte-vector stream :initial-size 1)) Err bitreich.org 70 i- (with-input-from-byte-vector (stream *octets*) Err bitreich.org 70 i- (read-stream-content-into-byte-vector stream 'alexandria::%length 6)) Err bitreich.org 70 i- (with-input-from-byte-vector (stream *octets*) Err bitreich.org 70 i- (read-stream-content-into-byte-vector stream 'alexandria::%length 3))) Err bitreich.org 70 i- *octets* Err bitreich.org 70 i- *octets* Err bitreich.org 70 i- *octets* Err bitreich.org 70 i- (subseq *octets* 0 3)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest read-stream-content-into-byte-vector.2 Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (let ((stream (make-broadcast-stream))) Err bitreich.org 70 i- (read-stream-content-into-byte-vector stream :initial-size 0)) Err bitreich.org 70 i- (type-error () Err bitreich.org 70 i- :type-error)) Err bitreich.org 70 i- :type-error) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Macros Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest with-unique-names.1 Err bitreich.org 70 i- (let ((*gensym-counter* 0)) Err bitreich.org 70 i- (let ((syms (with-unique-names (foo bar quux) Err bitreich.org 70 i- (list foo bar quux)))) Err bitreich.org 70 i- (list (find-if #'symbol-package syms) Err bitreich.org 70 i- (equal '("FOO0" "BAR1" "QUUX2") Err bitreich.org 70 i- (mapcar #'symbol-name syms))))) Err bitreich.org 70 i- (nil t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest with-unique-names.2 Err bitreich.org 70 i- (let ((*gensym-counter* 0)) Err bitreich.org 70 i- (let ((syms (with-unique-names ((foo "_foo_") (bar -bar-) (quux #\q)) Err bitreich.org 70 i- (list foo bar quux)))) Err bitreich.org 70 i- (list (find-if #'symbol-package syms) Err bitreich.org 70 i- (equal '("_foo_0" "-BAR-1" "q2") Err bitreich.org 70 i- (mapcar #'symbol-name syms))))) Err bitreich.org 70 i- (nil t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest with-unique-names.3 Err bitreich.org 70 i- (let ((*gensym-counter* 0)) Err bitreich.org 70 i- (multiple-value-bind (res err) Err bitreich.org 70 i- (ignore-errors Err bitreich.org 70 i- (eval Err bitreich.org 70 i- '(let ((syms Err bitreich.org 70 i- (with-unique-names ((foo "_foo_") (bar -bar-) (quux 42)) Err bitreich.org 70 i- (list foo bar quux)))) Err bitreich.org 70 i- (list (find-if #'symbol-package syms) Err bitreich.org 70 i- (equal '("_foo_0" "-BAR-1" "q2") Err bitreich.org 70 i- (mapcar #'symbol-name syms)))))) Err bitreich.org 70 i- (errorp err))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest once-only.1 Err bitreich.org 70 i- (macrolet ((cons1.good (x) Err bitreich.org 70 i- (once-only (x) Err bitreich.org 70 i- `(cons ,x ,x))) Err bitreich.org 70 i- (cons1.bad (x) Err bitreich.org 70 i- `(cons ,x ,x))) Err bitreich.org 70 i- (let ((y 0)) Err bitreich.org 70 i- (list (cons1.good (incf y)) Err bitreich.org 70 i- y Err bitreich.org 70 i- (cons1.bad (incf y)) Err bitreich.org 70 i- y))) Err bitreich.org 70 i- ((1 . 1) 1 (2 . 3) 3)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest once-only.2 Err bitreich.org 70 i- (macrolet ((cons1 (x) Err bitreich.org 70 i- (once-only ((y x)) Err bitreich.org 70 i- `(cons ,y ,y)))) Err bitreich.org 70 i- (let ((z 0)) Err bitreich.org 70 i- (list (cons1 (incf z)) Err bitreich.org 70 i- z Err bitreich.org 70 i- (cons1 (incf z))))) Err bitreich.org 70 i- ((1 . 1) 1 (2 . 2))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest parse-body.1 Err bitreich.org 70 i- (parse-body '("doc" "body") :documentation t) Err bitreich.org 70 i- ("body") Err bitreich.org 70 i- nil Err bitreich.org 70 i- "doc") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest parse-body.2 Err bitreich.org 70 i- (parse-body '("body") :documentation t) Err bitreich.org 70 i- ("body") Err bitreich.org 70 i- nil Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest parse-body.3 Err bitreich.org 70 i- (parse-body '("doc" "body")) Err bitreich.org 70 i- ("doc" "body") Err bitreich.org 70 i- nil Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest parse-body.4 Err bitreich.org 70 i- (parse-body '((declare (foo)) "doc" (declare (bar)) body) :documentation t) Err bitreich.org 70 i- (body) Err bitreich.org 70 i- ((declare (foo)) (declare (bar))) Err bitreich.org 70 i- "doc") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest parse-body.5 Err bitreich.org 70 i- (parse-body '((declare (foo)) "doc" (declare (bar)) body)) Err bitreich.org 70 i- ("doc" (declare (bar)) body) Err bitreich.org 70 i- ((declare (foo))) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest parse-body.6 Err bitreich.org 70 i- (multiple-value-bind (res err) Err bitreich.org 70 i- (ignore-errors Err bitreich.org 70 i- (parse-body '("foo" "bar" "quux") Err bitreich.org 70 i- :documentation t)) Err bitreich.org 70 i- (errorp err)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Symbols Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest ensure-symbol.1 Err bitreich.org 70 i- (ensure-symbol :cons :cl) Err bitreich.org 70 i- cons Err bitreich.org 70 i- :external) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest ensure-symbol.2 Err bitreich.org 70 i- (ensure-symbol "CONS" :alexandria) Err bitreich.org 70 i- cons Err bitreich.org 70 i- :inherited) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest ensure-symbol.3 Err bitreich.org 70 i- (ensure-symbol 'foo :keyword) Err bitreich.org 70 i- :foo Err bitreich.org 70 i- :external) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest ensure-symbol.4 Err bitreich.org 70 i- (ensure-symbol #\* :alexandria) Err bitreich.org 70 i- * Err bitreich.org 70 i- :inherited) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest format-symbol.1 Err bitreich.org 70 i- (let ((s (format-symbol nil '#:x-~d 13))) Err bitreich.org 70 i- (list (symbol-package s) Err bitreich.org 70 i- (string= (string '#:x-13) (symbol-name s)))) Err bitreich.org 70 i- (nil t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest format-symbol.2 Err bitreich.org 70 i- (format-symbol :keyword '#:sym-~a (string :bolic)) Err bitreich.org 70 i- :sym-bolic) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest format-symbol.3 Err bitreich.org 70 i- (let ((*package* (find-package :cl))) Err bitreich.org 70 i- (format-symbol t '#:find-~a (string 'package))) Err bitreich.org 70 i- find-package) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest make-keyword.1 Err bitreich.org 70 i- (list (make-keyword 'zot) Err bitreich.org 70 i- (make-keyword "FOO") Err bitreich.org 70 i- (make-keyword #\Q)) Err bitreich.org 70 i- (:zot :foo :q)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest make-gensym-list.1 Err bitreich.org 70 i- (let ((*gensym-counter* 0)) Err bitreich.org 70 i- (let ((syms (make-gensym-list 3 "FOO"))) Err bitreich.org 70 i- (list (find-if 'symbol-package syms) Err bitreich.org 70 i- (equal '("FOO0" "FOO1" "FOO2") Err bitreich.org 70 i- (mapcar 'symbol-name syms))))) Err bitreich.org 70 i- (nil t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest make-gensym-list.2 Err bitreich.org 70 i- (let ((*gensym-counter* 0)) Err bitreich.org 70 i- (let ((syms (make-gensym-list 3))) Err bitreich.org 70 i- (list (find-if 'symbol-package syms) Err bitreich.org 70 i- (equal '("G0" "G1" "G2") Err bitreich.org 70 i- (mapcar 'symbol-name syms))))) Err bitreich.org 70 i- (nil t)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Type-system Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest of-type.1 Err bitreich.org 70 i- (locally Err bitreich.org 70 i- (declare (notinline of-type)) Err bitreich.org 70 i- (let ((f (of-type 'string))) Err bitreich.org 70 i- (list (funcall f "foo") Err bitreich.org 70 i- (funcall f 'bar)))) Err bitreich.org 70 i- (t nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest type=.1 Err bitreich.org 70 i- (type= 'string 'string) Err bitreich.org 70 i- t Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest type=.2 Err bitreich.org 70 i- (type= 'list '(or null cons)) Err bitreich.org 70 i- t Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest type=.3 Err bitreich.org 70 i- (type= 'null '(and symbol list)) Err bitreich.org 70 i- t Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest type=.4 Err bitreich.org 70 i- (type= 'string '(satisfies emptyp)) Err bitreich.org 70 i- nil Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest type=.5 Err bitreich.org 70 i- (type= 'string 'list) Err bitreich.org 70 i- nil Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(macrolet Err bitreich.org 70 i- ((test (type numbers) Err bitreich.org 70 i- `(deftest ,(format-symbol t '#:cdr5.~a (string type)) Err bitreich.org 70 i- (let ((numbers ,numbers)) Err bitreich.org 70 i- (values (mapcar (of-type ',(format-symbol t '#:negative-~a (string type))) numbers) Err bitreich.org 70 i- (mapcar (of-type ',(format-symbol t '#:non-positive-~a (string type))) numbers) Err bitreich.org 70 i- (mapcar (of-type ',(format-symbol t '#:non-negative-~a (string type))) numbers) Err bitreich.org 70 i- (mapcar (of-type ',(format-symbol t '#:positive-~a (string type))) numbers))) Err bitreich.org 70 i- (t t t nil nil nil nil) Err bitreich.org 70 i- (t t t t nil nil nil) Err bitreich.org 70 i- (nil nil nil t t t t) Err bitreich.org 70 i- (nil nil nil nil t t t)))) Err bitreich.org 70 i- (test fixnum (list most-negative-fixnum -42 -1 0 1 42 most-positive-fixnum)) Err bitreich.org 70 i- (test integer (list (1- most-negative-fixnum) -42 -1 0 1 42 (1+ most-positive-fixnum))) Err bitreich.org 70 i- (test rational (list (1- most-negative-fixnum) -42/13 -1 0 1 42/13 (1+ most-positive-fixnum))) Err bitreich.org 70 i- (test real (list most-negative-long-float -42/13 -1 0 1 42/13 most-positive-long-float)) Err bitreich.org 70 i- (test float (list most-negative-short-float -42.02 -1.0 0.0 1.0 42.02 most-positive-short-float)) Err bitreich.org 70 i- (test short-float (list most-negative-short-float -42.02s0 -1.0s0 0.0s0 1.0s0 42.02s0 most-positive-short-float)) Err bitreich.org 70 i- (test single-float (list most-negative-single-float -42.02f0 -1.0f0 0.0f0 1.0f0 42.02f0 most-positive-single-float)) Err bitreich.org 70 i- (test double-float (list most-negative-double-float -42.02d0 -1.0d0 0.0d0 1.0d0 42.02d0 most-positive-double-float)) Err bitreich.org 70 i- (test long-float (list most-negative-long-float -42.02l0 -1.0l0 0.0l0 1.0l0 42.02l0 most-positive-long-float))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Bindings Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (notinline opaque)) Err bitreich.org 70 i-(defun opaque (x) Err bitreich.org 70 i- x) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest if-let.1 Err bitreich.org 70 i- (if-let (x (opaque :ok)) Err bitreich.org 70 i- x Err bitreich.org 70 i- :bad) Err bitreich.org 70 i- :ok) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest if-let.2 Err bitreich.org 70 i- (if-let (x (opaque nil)) Err bitreich.org 70 i- :bad Err bitreich.org 70 i- (and (not x) :ok)) Err bitreich.org 70 i- :ok) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest if-let.3 Err bitreich.org 70 i- (let ((x 1)) Err bitreich.org 70 i- (if-let ((x 2) Err bitreich.org 70 i- (y x)) Err bitreich.org 70 i- (+ x y) Err bitreich.org 70 i- :oops)) Err bitreich.org 70 i- 3) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest if-let.4 Err bitreich.org 70 i- (if-let ((x 1) Err bitreich.org 70 i- (y nil)) Err bitreich.org 70 i- :oops Err bitreich.org 70 i- (and (not y) x)) Err bitreich.org 70 i- 1) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest if-let.5 Err bitreich.org 70 i- (if-let (x) Err bitreich.org 70 i- :oops Err bitreich.org 70 i- (not x)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest if-let.error.1 Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (eval '(if-let x Err bitreich.org 70 i- :oops Err bitreich.org 70 i- :oops)) Err bitreich.org 70 i- (type-error () Err bitreich.org 70 i- :type-error)) Err bitreich.org 70 i- :type-error) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest when-let.1 Err bitreich.org 70 i- (when-let (x (opaque :ok)) Err bitreich.org 70 i- (setf x (cons x x)) Err bitreich.org 70 i- x) Err bitreich.org 70 i- (:ok . :ok)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest when-let.2 Err bitreich.org 70 i- (when-let ((x 1) Err bitreich.org 70 i- (y nil) Err bitreich.org 70 i- (z 3)) Err bitreich.org 70 i- :oops) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest when-let.3 Err bitreich.org 70 i- (let ((x 1)) Err bitreich.org 70 i- (when-let ((x 2) Err bitreich.org 70 i- (y x)) Err bitreich.org 70 i- (+ x y))) Err bitreich.org 70 i- 3) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest when-let.error.1 Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (eval '(when-let x :oops)) Err bitreich.org 70 i- (type-error () Err bitreich.org 70 i- :type-error)) Err bitreich.org 70 i- :type-error) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest when-let*.1 Err bitreich.org 70 i- (let ((x 1)) Err bitreich.org 70 i- (when-let* ((x 2) Err bitreich.org 70 i- (y x)) Err bitreich.org 70 i- (+ x y))) Err bitreich.org 70 i- 4) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest when-let*.2 Err bitreich.org 70 i- (let ((y 1)) Err bitreich.org 70 i- (when-let* (x y) Err bitreich.org 70 i- (1+ x))) Err bitreich.org 70 i- 2) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest when-let*.3 Err bitreich.org 70 i- (when-let* ((x t) Err bitreich.org 70 i- (y (consp x)) Err bitreich.org 70 i- (z (error "OOPS"))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest when-let*.error.1 Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (eval '(when-let* x :oops)) Err bitreich.org 70 i- (type-error () Err bitreich.org 70 i- :type-error)) Err bitreich.org 70 i- :type-error) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest doplist.1 Err bitreich.org 70 i- (let (keys values) Err bitreich.org 70 i- (doplist (k v '(a 1 b 2 c 3) (values t (reverse keys) (reverse values) k v)) Err bitreich.org 70 i- (push k keys) Err bitreich.org 70 i- (push v values))) Err bitreich.org 70 i- t Err bitreich.org 70 i- (a b c) Err bitreich.org 70 i- (1 2 3) Err bitreich.org 70 i- nil Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest count-permutations.1 Err bitreich.org 70 i- (values (count-permutations 31 7) Err bitreich.org 70 i- (count-permutations 1 1) Err bitreich.org 70 i- (count-permutations 2 1) Err bitreich.org 70 i- (count-permutations 2 2) Err bitreich.org 70 i- (count-permutations 3 2) Err bitreich.org 70 i- (count-permutations 3 1)) Err bitreich.org 70 i- 13253058000 Err bitreich.org 70 i- 1 Err bitreich.org 70 i- 2 Err bitreich.org 70 i- 2 Err bitreich.org 70 i- 6 Err bitreich.org 70 i- 3) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest binomial-coefficient.1 Err bitreich.org 70 i- (alexandria:binomial-coefficient 1239 139) Err bitreich.org 70 i- 28794902202288970200771694600561826718847179309929858835480006683522184441358211423695124921058123706380656375919763349913245306834194782172712255592710204598527867804110129489943080460154) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Exercise bignum case (at least on x86). Err bitreich.org 70 i-(deftest binomial-coefficient.2 Err bitreich.org 70 i- (alexandria:binomial-coefficient 2000000000000 20) Err bitreich.org 70 i- 430998041177272843950422879590338454856322722740402365741730748431530623813012487773080486408378680853987520854296499536311275320016878730999689934464711239072435565454954447356845336730100919970769793030177499999999900000000000) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest copy-stream.1 Err bitreich.org 70 i- (let ((data "sdkfjhsakfh weior763495ewofhsdfk sdfadlkfjhsadf woif sdlkjfhslkdfh sdklfjh")) Err bitreich.org 70 i- (values (equal data Err bitreich.org 70 i- (with-input-from-string (in data) Err bitreich.org 70 i- (with-output-to-string (out) Err bitreich.org 70 i- (alexandria:copy-stream in out)))) Err bitreich.org 70 i- (equal (subseq data 10 20) Err bitreich.org 70 i- (with-input-from-string (in data) Err bitreich.org 70 i- (with-output-to-string (out) Err bitreich.org 70 i- (alexandria:copy-stream in out :start 10 :end 20)))) Err bitreich.org 70 i- (equal (subseq data 10) Err bitreich.org 70 i- (with-input-from-string (in data) Err bitreich.org 70 i- (with-output-to-string (out) Err bitreich.org 70 i- (alexandria:copy-stream in out :start 10)))) Err bitreich.org 70 i- (equal (subseq data 0 20) Err bitreich.org 70 i- (with-input-from-string (in data) Err bitreich.org 70 i- (with-output-to-string (out) Err bitreich.org 70 i- (alexandria:copy-stream in out :end 20)))))) Err bitreich.org 70 i- t Err bitreich.org 70 i- t Err bitreich.org 70 i- t Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest extremum.1 Err bitreich.org 70 i- (let ((n 0)) Err bitreich.org 70 i- (dotimes (i 10) Err bitreich.org 70 i- (let ((data (shuffle (coerce (iota 10000 :start i) 'vector))) Err bitreich.org 70 i- (ok t)) Err bitreich.org 70 i- (unless (eql i (extremum data #'<)) Err bitreich.org 70 i- (setf ok nil)) Err bitreich.org 70 i- (unless (eql i (extremum (coerce data 'list) #'<)) Err bitreich.org 70 i- (setf ok nil)) Err bitreich.org 70 i- (unless (eql (+ 9999 i) (extremum data #'>)) Err bitreich.org 70 i- (setf ok nil)) Err bitreich.org 70 i- (unless (eql (+ 9999 i) (extremum (coerce data 'list) #'>)) Err bitreich.org 70 i- (setf ok nil)) Err bitreich.org 70 i- (when ok Err bitreich.org 70 i- (incf n)))) Err bitreich.org 70 i- (when (eql 10 (extremum #(100 1 10 1000) #'> :start 1 :end 3)) Err bitreich.org 70 i- (incf n)) Err bitreich.org 70 i- (when (eql -1000 (extremum #(100 1 10 -1000) #'> :key 'abs)) Err bitreich.org 70 i- (incf n)) Err bitreich.org 70 i- (when (eq nil (extremum "" (lambda (a b) (error "wtf? ~S, ~S" a b)))) Err bitreich.org 70 i- (incf n)) Err bitreich.org 70 i- n) Err bitreich.org 70 i- 13) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest starts-with-subseq.string Err bitreich.org 70 i- (starts-with-subseq "f" "foo" :return-suffix t) Err bitreich.org 70 i- t Err bitreich.org 70 i- "oo") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest starts-with-subseq.vector Err bitreich.org 70 i- (starts-with-subseq #(1) #(1 2 3) :return-suffix t) Err bitreich.org 70 i- t Err bitreich.org 70 i- #(2 3)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest starts-with-subseq.list Err bitreich.org 70 i- (starts-with-subseq '(1) '(1 2 3) :return-suffix t) Err bitreich.org 70 i- t Err bitreich.org 70 i- (2 3)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest starts-with-subseq.start1 Err bitreich.org 70 i- (starts-with-subseq "foo" "oop" :start1 1) Err bitreich.org 70 i- t Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest starts-with-subseq.start2 Err bitreich.org 70 i- (starts-with-subseq "foo" "xfoop" :start2 1) Err bitreich.org 70 i- t Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest format-symbol.print-case-bound Err bitreich.org 70 i- (let ((upper (intern "FOO-BAR")) Err bitreich.org 70 i- (lower (intern "foo-bar")) Err bitreich.org 70 i- (*print-escape* nil)) Err bitreich.org 70 i- (values Err bitreich.org 70 i- (let ((*print-case* :downcase)) Err bitreich.org 70 i- (and (eq upper (format-symbol t "~A" upper)) Err bitreich.org 70 i- (eq lower (format-symbol t "~A" lower)))) Err bitreich.org 70 i- (let ((*print-case* :upcase)) Err bitreich.org 70 i- (and (eq upper (format-symbol t "~A" upper)) Err bitreich.org 70 i- (eq lower (format-symbol t "~A" lower)))) Err bitreich.org 70 i- (let ((*print-case* :capitalize)) Err bitreich.org 70 i- (and (eq upper (format-symbol t "~A" upper)) Err bitreich.org 70 i- (eq lower (format-symbol t "~A" lower)))))) Err bitreich.org 70 i- t Err bitreich.org 70 i- t Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest iota.fp-start-and-complex-integer-step Err bitreich.org 70 i- (equal '(#C(0.0 0.0) #C(0.0 2.0) #C(0.0 4.0)) Err bitreich.org 70 i- (iota 3 :start 0.0 :step #C(0 2))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest parse-ordinary-lambda-list.1 Err bitreich.org 70 i- (multiple-value-bind (req opt rest keys allowp aux keyp) Err bitreich.org 70 i- (parse-ordinary-lambda-list '(a b c Err bitreich.org 70 i- &optional o1 (o2 42) (o3 42 o3-supplied?) Err bitreich.org 70 i- &key (k1) ((:key k2)) (k3 42 k3-supplied?)) Err bitreich.org 70 i- :normalize t) Err bitreich.org 70 i- (and (equal '(a b c) req) Err bitreich.org 70 i- (equal '((o1 nil nil) Err bitreich.org 70 i- (o2 42 nil) Err bitreich.org 70 i- (o3 42 o3-supplied?)) Err bitreich.org 70 i- opt) Err bitreich.org 70 i- (equal '(((:k1 k1) nil nil) Err bitreich.org 70 i- ((:key k2) nil nil) Err bitreich.org 70 i- ((:k3 k3) 42 k3-supplied?)) Err bitreich.org 70 i- keys) Err bitreich.org 70 i- (not allowp) Err bitreich.org 70 i- (not aux) Err bitreich.org 70 i- (eq t keyp))) Err bitreich.org 70 i- t) Err bitreich.org 70 1diff --git a/3rdparties/software/alexandria-20181210-git/types.lisp b/3rdparties/software/alexandria-20181210-git/types.lisp /scm/clic/file/3rdparties/software/alexandria-20181210-git/types.lisp.gph bitreich.org 70 i@@ -1,137 +0,0 @@ Err bitreich.org 70 i-(in-package :alexandria) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype array-index (&optional (length (1- array-dimension-limit))) Err bitreich.org 70 i- "Type designator for an index into array of LENGTH: an integer between Err bitreich.org 70 i-0 (inclusive) and LENGTH (exclusive). LENGTH defaults to one less than Err bitreich.org 70 i-ARRAY-DIMENSION-LIMIT." Err bitreich.org 70 i- `(integer 0 (,length))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype array-length (&optional (length (1- array-dimension-limit))) Err bitreich.org 70 i- "Type designator for a dimension of an array of LENGTH: an integer between Err bitreich.org 70 i-0 (inclusive) and LENGTH (inclusive). LENGTH defaults to one less than Err bitreich.org 70 i-ARRAY-DIMENSION-LIMIT." Err bitreich.org 70 i- `(integer 0 ,length)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; This MACROLET will generate most of CDR5 (http://cdr.eurolisp.org/document/5/) Err bitreich.org 70 i-;; except the RATIO related definitions and ARRAY-INDEX. Err bitreich.org 70 i-(macrolet Err bitreich.org 70 i- ((frob (type &optional (base-type type)) Err bitreich.org 70 i- (let ((subtype-names (list)) Err bitreich.org 70 i- (predicate-names (list))) Err bitreich.org 70 i- (flet ((make-subtype-name (format-control) Err bitreich.org 70 i- (let ((result (format-symbol :alexandria format-control Err bitreich.org 70 i- (symbol-name type)))) Err bitreich.org 70 i- (push result subtype-names) Err bitreich.org 70 i- result)) Err bitreich.org 70 i- (make-predicate-name (sybtype-name) Err bitreich.org 70 i- (let ((result (format-symbol :alexandria '#:~A-p Err bitreich.org 70 i- (symbol-name sybtype-name)))) Err bitreich.org 70 i- (push result predicate-names) Err bitreich.org 70 i- result)) Err bitreich.org 70 i- (make-docstring (range-beg range-end range-type) Err bitreich.org 70 i- (let ((inf (ecase range-type (:negative "-inf") (:positive "+inf")))) Err bitreich.org 70 i- (format nil "Type specifier denoting the ~(~A~) range from ~A to ~A." Err bitreich.org 70 i- type Err bitreich.org 70 i- (if (equal range-beg ''*) inf (ensure-car range-beg)) Err bitreich.org 70 i- (if (equal range-end ''*) inf (ensure-car range-end)))))) Err bitreich.org 70 i- (let* ((negative-name (make-subtype-name '#:negative-~a)) Err bitreich.org 70 i- (non-positive-name (make-subtype-name '#:non-positive-~a)) Err bitreich.org 70 i- (non-negative-name (make-subtype-name '#:non-negative-~a)) Err bitreich.org 70 i- (positive-name (make-subtype-name '#:positive-~a)) Err bitreich.org 70 i- (negative-p-name (make-predicate-name negative-name)) Err bitreich.org 70 i- (non-positive-p-name (make-predicate-name non-positive-name)) Err bitreich.org 70 i- (non-negative-p-name (make-predicate-name non-negative-name)) Err bitreich.org 70 i- (positive-p-name (make-predicate-name positive-name)) Err bitreich.org 70 i- (negative-extremum) Err bitreich.org 70 i- (positive-extremum) Err bitreich.org 70 i- (below-zero) Err bitreich.org 70 i- (above-zero) Err bitreich.org 70 i- (zero)) Err bitreich.org 70 i- (setf (values negative-extremum below-zero Err bitreich.org 70 i- above-zero positive-extremum zero) Err bitreich.org 70 i- (ecase type Err bitreich.org 70 i- (fixnum (values 'most-negative-fixnum -1 1 'most-positive-fixnum 0)) Err bitreich.org 70 i- (integer (values ''* -1 1 ''* 0)) Err bitreich.org 70 i- (rational (values ''* '(0) '(0) ''* 0)) Err bitreich.org 70 i- (real (values ''* '(0) '(0) ''* 0)) Err bitreich.org 70 i- (float (values ''* '(0.0E0) '(0.0E0) ''* 0.0E0)) Err bitreich.org 70 i- (short-float (values ''* '(0.0S0) '(0.0S0) ''* 0.0S0)) Err bitreich.org 70 i- (single-float (values ''* '(0.0F0) '(0.0F0) ''* 0.0F0)) Err bitreich.org 70 i- (double-float (values ''* '(0.0D0) '(0.0D0) ''* 0.0D0)) Err bitreich.org 70 i- (long-float (values ''* '(0.0L0) '(0.0L0) ''* 0.0L0)))) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (deftype ,negative-name () Err bitreich.org 70 i- ,(make-docstring negative-extremum below-zero :negative) Err bitreich.org 70 i- `(,',base-type ,,negative-extremum ,',below-zero)) Err bitreich.org 70 i- Err bitreich.org 70 i- (deftype ,non-positive-name () Err bitreich.org 70 i- ,(make-docstring negative-extremum zero :negative) Err bitreich.org 70 i- `(,',base-type ,,negative-extremum ,',zero)) Err bitreich.org 70 i- Err bitreich.org 70 i- (deftype ,non-negative-name () Err bitreich.org 70 i- ,(make-docstring zero positive-extremum :positive) Err bitreich.org 70 i- `(,',base-type ,',zero ,,positive-extremum)) Err bitreich.org 70 i- Err bitreich.org 70 i- (deftype ,positive-name () Err bitreich.org 70 i- ,(make-docstring above-zero positive-extremum :positive) Err bitreich.org 70 i- `(,',base-type ,',above-zero ,,positive-extremum)) Err bitreich.org 70 i- Err bitreich.org 70 i- (declaim (inline ,@predicate-names)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun ,negative-p-name (n) Err bitreich.org 70 i- (and (typep n ',type) Err bitreich.org 70 i- (< n ,zero))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun ,non-positive-p-name (n) Err bitreich.org 70 i- (and (typep n ',type) Err bitreich.org 70 i- (<= n ,zero))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun ,non-negative-p-name (n) Err bitreich.org 70 i- (and (typep n ',type) Err bitreich.org 70 i- (<= ,zero n))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun ,positive-p-name (n) Err bitreich.org 70 i- (and (typep n ',type) Err bitreich.org 70 i- (< ,zero n))))))))) Err bitreich.org 70 i- (frob fixnum integer) Err bitreich.org 70 i- (frob integer) Err bitreich.org 70 i- (frob rational) Err bitreich.org 70 i- (frob real) Err bitreich.org 70 i- (frob float) Err bitreich.org 70 i- (frob short-float) Err bitreich.org 70 i- (frob single-float) Err bitreich.org 70 i- (frob double-float) Err bitreich.org 70 i- (frob long-float)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun of-type (type) Err bitreich.org 70 i- "Returns a function of one argument, which returns true when its argument is Err bitreich.org 70 i-of TYPE." Err bitreich.org 70 i- (lambda (thing) (typep thing type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-compiler-macro of-type (&whole form type &environment env) Err bitreich.org 70 i- ;; This can yeild a big benefit, but no point inlining the function Err bitreich.org 70 i- ;; all over the place if TYPE is not constant. Err bitreich.org 70 i- (if (constantp type env) Err bitreich.org 70 i- (with-gensyms (thing) Err bitreich.org 70 i- `(lambda (,thing) Err bitreich.org 70 i- (typep ,thing ,type))) Err bitreich.org 70 i- form)) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline type=)) Err bitreich.org 70 i-(defun type= (type1 type2) Err bitreich.org 70 i- "Returns a primary value of T is TYPE1 and TYPE2 are the same type, Err bitreich.org 70 i-and a secondary value that is true is the type equality could be reliably Err bitreich.org 70 i-determined: primary value of NIL and secondary value of T indicates that the Err bitreich.org 70 i-types are not equivalent." Err bitreich.org 70 i- (multiple-value-bind (sub ok) (subtypep type1 type2) Err bitreich.org 70 i- (cond ((and ok sub) Err bitreich.org 70 i- (subtypep type2 type1)) Err bitreich.org 70 i- (ok Err bitreich.org 70 i- (values nil ok)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (multiple-value-bind (sub ok) (subtypep type2 type1) Err bitreich.org 70 i- (declare (ignore sub)) Err bitreich.org 70 i- (values nil ok)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-modify-macro coercef (type-spec) coerce Err bitreich.org 70 i- "Modify-macro for COERCE.") Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/.travis.yml b/3rdparties/software/babel-20171227-git/.travis.yml /scm/clic/file/3rdparties/software/babel-20171227-git/.travis.yml.gph bitreich.org 70 i@@ -1,31 +0,0 @@ Err bitreich.org 70 i-language: lisp Err bitreich.org 70 i- Err bitreich.org 70 i-env: Err bitreich.org 70 i- matrix: Err bitreich.org 70 i- - LISP=abcl Err bitreich.org 70 i- - LISP=allegro Err bitreich.org 70 i- - LISP=sbcl Err bitreich.org 70 i- - LISP=sbcl32 Err bitreich.org 70 i- - LISP=ccl Err bitreich.org 70 i- - LISP=ccl32 Err bitreich.org 70 i- - LISP=clisp Err bitreich.org 70 i- - LISP=clisp32 Err bitreich.org 70 i- - LISP=cmucl Err bitreich.org 70 i- - LISP=ecl Err bitreich.org 70 i- Err bitreich.org 70 i-matrix: Err bitreich.org 70 i- allow_failures: Err bitreich.org 70 i- - env: LISP=cmucl Err bitreich.org 70 i- - env: LISP=ecl Err bitreich.org 70 i- Err bitreich.org 70 i-install: Err bitreich.org 70 i- - curl -L https://github.com/luismbo/cl-travis/raw/master/install.sh | sh Err bitreich.org 70 i- - git clone --depth=1 git://github.com/trivial-features/trivial-features.git ~/lisp/trivial-features Err bitreich.org 70 i- - git clone https://gitlab.common-lisp.net/alexandria/alexandria.git ~/lisp/alexandria Err bitreich.org 70 i- Err bitreich.org 70 i-script: Err bitreich.org 70 i- - cl -e '(ql:quickload :babel-tests) Err bitreich.org 70 i- (unless (babel-tests:run) Err bitreich.org 70 i- (uiop:quit 1))' Err bitreich.org 70 i- Err bitreich.org 70 i-sudo: required Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/COPYRIGHT b/3rdparties/software/babel-20171227-git/COPYRIGHT /scm/clic/file/3rdparties/software/babel-20171227-git/COPYRIGHT.gph bitreich.org 70 i@@ -1,20 +0,0 @@ Err bitreich.org 70 i-Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i- Err bitreich.org 70 i-Permission is hereby granted, free of charge, to any person obtaining Err bitreich.org 70 i-a copy of this software and associated documentation files (the Err bitreich.org 70 i-"Software"), to deal in the Software without restriction, including Err bitreich.org 70 i-without limitation the rights to use, copy, modify, merge, publish, Err bitreich.org 70 i-distribute, sublicense, and/or sell copies of the Software, and to Err bitreich.org 70 i-permit persons to whom the Software is furnished to do so, subject to Err bitreich.org 70 i-the following conditions: Err bitreich.org 70 i- Err bitreich.org 70 i-The above copyright notice and this permission notice shall be Err bitreich.org 70 i-included in all copies or substantial portions of the Software. Err bitreich.org 70 i- Err bitreich.org 70 i-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. Err bitreich.org 70 i-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY Err bitreich.org 70 i-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, Err bitreich.org 70 i-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE Err bitreich.org 70 i-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/HEADER b/3rdparties/software/babel-20171227-git/HEADER /scm/clic/file/3rdparties/software/babel-20171227-git/HEADER.gph bitreich.org 70 i@@ -1,27 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; filename --- description Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/NOTES b/3rdparties/software/babel-20171227-git/NOTES /scm/clic/file/3rdparties/software/babel-20171227-git/NOTES.gph bitreich.org 70 i@@ -1,34 +0,0 @@ Err bitreich.org 70 i-====================================== Err bitreich.org 70 i-LIST OF IDEAS AND TODO ITEMS FOR BABEL Err bitreich.org 70 i- Err bitreich.org 70 i- * VERY IMPORTANT: given that we steal a lot of code from OpenMCL we Err bitreich.org 70 i- probably to license those files under the LLGPL (or is it the Err bitreich.org 70 i- whole library?) Figure this out ASAP. Err bitreich.org 70 i- Err bitreich.org 70 i- * Many more tests needed. Err bitreich.org 70 i- - test invalid sequences. Err bitreich.org 70 i- - use more interesting test files. Err bitreich.org 70 i- - test with big strings that when converted would need a array Err bitreich.org 70 i- with more than array-index-limit elements. Err bitreich.org 70 i- Err bitreich.org 70 i- * Add support for ennforcing endiannes for multi-byte encodings like Err bitreich.org 70 i- UTF-16 and UTF-32. Err bitreich.org 70 i- Err bitreich.org 70 i- * Implement more encodings. (ISO-8859-*, windows, CJK encodings, etc) Err bitreich.org 70 i- Err bitreich.org 70 i- * null-termination, bom-markers. Add to string-to-octets. Err bitreich.org 70 i- Err bitreich.org 70 i- * Unicode normalization routines? Err bitreich.org 70 i- Err bitreich.org 70 i- * Allow for non-fixnum indexes? Err bitreich.org 70 i- Err bitreich.org 70 i- * Documentation. Err bitreich.org 70 i- Err bitreich.org 70 i- * Address the various XXX and TODO items in the source. Err bitreich.org 70 i- Err bitreich.org 70 i- * Should we start adding a lot of encodings, a load-on-demand scheme Err bitreich.org 70 i- might come in handy. It would also help with debugging. Err bitreich.org 70 i- Err bitreich.org 70 i- * Make the test suite reusable, very much like mappings are reusable. Err bitreich.org 70 i- Err bitreich.org 70 i- * Make the whole thing easier to debug. Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/README.md b/3rdparties/software/babel-20171227-git/README.md /scm/clic/file/3rdparties/software/babel-20171227-git/README.md.gph bitreich.org 70 i@@ -1,19 +0,0 @@ Err bitreich.org 70 i-[![Build Status](https://travis-ci.org/cl-babel/babel.svg?branch=master)](https://travis-ci.org/cl-babel/babel) Err bitreich.org 70 i- Err bitreich.org 70 i-Babel is a charset encoding/decoding library, not unlike GNU libiconv, Err bitreich.org 70 i-but completely written in Common Lisp. Err bitreich.org 70 i- Err bitreich.org 70 i-It strives to achieve decent performance. To that effect, we use Err bitreich.org 70 i-OpenMCL's approach of calculating the destination buffer size in Err bitreich.org 70 i-advance. Most of the encoding/decoding algorithms have been adapted Err bitreich.org 70 i-from OpenMCL's source. Err bitreich.org 70 i- Err bitreich.org 70 i-Another important goal is reusability. Similarly to SBCL, we define Err bitreich.org 70 i-an interface wherein the algorithms can be reused between a variety of Err bitreich.org 70 i-data types so long we're dealing with conversions between octets and Err bitreich.org 70 i-unicode code points. Err bitreich.org 70 i- Err bitreich.org 70 i-Babel comes with converters between strings and (unsigned-byte 8) Err bitreich.org 70 i-vectors but can be easily extended to deal with, e.g., strings and Err bitreich.org 70 i-foreign memory, vectors and Closure's runes, etc... Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/babel-streams.asd b/3rdparties/software/babel-20171227-git/babel-streams.asd /scm/clic/file/3rdparties/software/babel-20171227-git/babel-streams.asd.gph bitreich.org 70 i@@ -1,38 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; babel-streams.asd --- ASDF system definition for Babel streams. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2008, Attila Lendvai Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(defsystem :babel-streams Err bitreich.org 70 i- :description "Some useful streams based on Babel's encoding code" Err bitreich.org 70 i- :author ("Dr. Edmund Weitz" Err bitreich.org 70 i- "Attila Lendvai ") Err bitreich.org 70 i- :version "0.1.0" Err bitreich.org 70 i- :licence "MIT" Err bitreich.org 70 i- :depends-on (:babel :alexandria :trivial-gray-streams) Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:module "src" Err bitreich.org 70 i- :serial t Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:file "streams"))))) Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/babel-tests.asd b/3rdparties/software/babel-20171227-git/babel-tests.asd /scm/clic/file/3rdparties/software/babel-20171227-git/babel-tests.asd.gph bitreich.org 70 i@@ -1,42 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; babel-tests.asd --- ASDF system definition for Babel unit tests. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(defsystem babel-tests Err bitreich.org 70 i- :description "Unit tests for Babel." Err bitreich.org 70 i- :depends-on (babel hu.dwim.stefil) Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:module "tests" Err bitreich.org 70 i- :serial t Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:file "tests"))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod perform ((o test-op) (c (eql (find-system :babel-tests)))) Err bitreich.org 70 i- (funcall (intern (string '#:run) '#:babel-tests))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod operation-done-p ((o test-op) (c (eql (find-system :babel-tests)))) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; vim: ft=lisp et Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/babel.asd b/3rdparties/software/babel-20171227-git/babel.asd /scm/clic/file/3rdparties/software/babel-20171227-git/babel.asd.gph bitreich.org 70 i@@ -1,59 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; babel.asd --- ASDF system definition for Babel. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(defsystem babel Err bitreich.org 70 i- :description "Babel, a charset conversion library." Err bitreich.org 70 i- :author "Luis Oliveira " Err bitreich.org 70 i- :licence "MIT" Err bitreich.org 70 i- :depends-on (trivial-features alexandria) Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:module src Err bitreich.org 70 i- :serial t Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:file "packages") Err bitreich.org 70 i- (:file "encodings") Err bitreich.org 70 i- (:file "enc-ascii") Err bitreich.org 70 i- (:file "enc-ebcdic") Err bitreich.org 70 i- (:file "enc-ebcdic-int") Err bitreich.org 70 i- (:file "enc-iso-8859") Err bitreich.org 70 i- (:file "enc-unicode") Err bitreich.org 70 i- (:file "enc-cp1251") Err bitreich.org 70 i- (:file "enc-cp1252") Err bitreich.org 70 i- (:file "jpn-table") Err bitreich.org 70 i- (:file "enc-jpn") Err bitreich.org 70 i- (:file "enc-gbk") Err bitreich.org 70 i- (:file "enc-koi8") Err bitreich.org 70 i- (:file "external-format") Err bitreich.org 70 i- (:file "strings") Err bitreich.org 70 i- (:file "gbk-map") Err bitreich.org 70 i- (:file "sharp-backslash"))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod perform ((o test-op) (c (eql (find-system :babel)))) Err bitreich.org 70 i- (operate 'load-op :babel-tests) Err bitreich.org 70 i- (operate 'test-op :babel-tests)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod operation-done-p ((o test-op) (c (eql (find-system :babel)))) Err bitreich.org 70 i- nil) Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/doc/Makefile b/3rdparties/software/babel-20171227-git/doc/Makefile /scm/clic/file/3rdparties/software/babel-20171227-git/doc/Makefile.gph bitreich.org 70 i@@ -1,31 +0,0 @@ Err bitreich.org 70 i-# -*- Mode: Makefile; tab-width: 4; indent-tabs-mode: t -*- Err bitreich.org 70 i- Err bitreich.org 70 i-MANUAL := "babel" Err bitreich.org 70 i-SYSTEM := "babel" Err bitreich.org 70 i-PACKAGES := babel babel-encodings Err bitreich.org 70 i-TITLE := "Babel Manual" Err bitreich.org 70 i-CSS := "default" Err bitreich.org 70 i- Err bitreich.org 70 i-export LISP ?= sbcl Err bitreich.org 70 i-export SBCL_OPTIONS ?= --noinform Err bitreich.org 70 i- Err bitreich.org 70 i-.PHONY: all clean html pdf upload Err bitreich.org 70 i- Err bitreich.org 70 i-all: Err bitreich.org 70 i- texinfo-docstrings all $(SYSTEM) $(MANUAL) $(TITLE) $(CSS) $(PACKAGES) Err bitreich.org 70 i- Err bitreich.org 70 i-pdf: Err bitreich.org 70 i- texinfo-docstrings pdf $(SYSTEM) $(MANUAL) $(TITLE) $(CSS) $(PACKAGES) Err bitreich.org 70 i- Err bitreich.org 70 i-html: Err bitreich.org 70 i- texinfo-docstrings html $(SYSTEM) $(MANUAL) $(TITLE) $(CSS) $(PACKAGES) Err bitreich.org 70 i- Err bitreich.org 70 i-upload: Err bitreich.org 70 i-# rsync -av --delete -e ssh manual common-lisp.net:/project/FOO/public_html/ Err bitreich.org 70 i-# scp -r manual common-lisp.net:/project/cffi/public_html/ Err bitreich.org 70 i- Err bitreich.org 70 i-clean: Err bitreich.org 70 i- find . \( -name "*.pdf" -o -name "*.html" -o -name "*.info" -o -name "*.aux" -o -name "*.cp" -o -name "*.fn" -o -name "*.fns" -o -name "*.ky" -o -name "*.log" -o -name "*.pg" -o -name "*.toc" -o -name "*.tp" -o -name "*.vr" -o -name "*.dvi" -o -name "*.cps" -o -name "*.vrs" \) -exec rm {} \; Err bitreich.org 70 i- rm -rf include manual Err bitreich.org 70 i- Err bitreich.org 70 i-# vim: ft=make ts=4 noet Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/doc/babel.texinfo b/3rdparties/software/babel-20171227-git/doc/babel.texinfo /scm/clic/file/3rdparties/software/babel-20171227-git/doc/babel.texinfo.gph bitreich.org 70 i@@ -1,105 +0,0 @@ Err bitreich.org 70 i-\input texinfo @c -*-texinfo-*- Err bitreich.org 70 i-@c %**start of header Err bitreich.org 70 i-@setfilename babel.info Err bitreich.org 70 i-@settitle Babel Manual Err bitreich.org 70 i- Err bitreich.org 70 i-@c @exampleindent 2 Err bitreich.org 70 i-@c @documentencoding utf-8 Err bitreich.org 70 i- Err bitreich.org 70 i-@c %**end of header Err bitreich.org 70 i- Err bitreich.org 70 i-@c for install-info Err bitreich.org 70 i-@c @dircategory %%INFO-CATEGORY%% Err bitreich.org 70 i-@c @direntry Err bitreich.org 70 i-@c * babel: %%PROJECT-DESCRIPTION%% Err bitreich.org 70 i-@c @end direntry Err bitreich.org 70 i- Err bitreich.org 70 i-@include macros.texinfo Err bitreich.org 70 i- Err bitreich.org 70 i-@c Show types, functions, and concepts in the same index. Err bitreich.org 70 i-@syncodeindex tp cp Err bitreich.org 70 i-@syncodeindex fn cp Err bitreich.org 70 i- Err bitreich.org 70 i-@copying Err bitreich.org 70 i-@c Copyright @copyright{} 2084 John Doe Err bitreich.org 70 i- Err bitreich.org 70 i-@include license.texinfo Err bitreich.org 70 i-@end copying Err bitreich.org 70 i- Err bitreich.org 70 i-@titlepage Err bitreich.org 70 i-@title Babel Manual Err bitreich.org 70 i-@subtitle draft version Err bitreich.org 70 i-@c @author John Doe Err bitreich.org 70 i-@page Err bitreich.org 70 i-@vskip 0pt plus 1filll Err bitreich.org 70 i-@insertcopying Err bitreich.org 70 i-@end titlepage Err bitreich.org 70 i- Err bitreich.org 70 i-@contents Err bitreich.org 70 i- Err bitreich.org 70 i-@ifnottex Err bitreich.org 70 i-@node Top Err bitreich.org 70 i-@top babel Err bitreich.org 70 i-@insertcopying Err bitreich.org 70 i-@end ifnottex Err bitreich.org 70 i- Err bitreich.org 70 i-@c Top Menu Err bitreich.org 70 i-@menu Err bitreich.org 70 i-* First Chapter:: Err bitreich.org 70 i-* Comprehensive Index:: Err bitreich.org 70 i-@end menu Err bitreich.org 70 i- Err bitreich.org 70 i-@node First Chapter Err bitreich.org 70 i-@chapter First Chapter Err bitreich.org 70 i- Err bitreich.org 70 i-Bla bla bla, bla bla bla. Err bitreich.org 70 i- Err bitreich.org 70 i-@section Conditions Err bitreich.org 70 i- Err bitreich.org 70 i-@include include/condition-babel-character-out-of-range.texinfo Err bitreich.org 70 i-@include include/condition-babel-encodings-character-out-of-range.texinfo Err bitreich.org 70 i-@include include/condition-babel-encodings-end-of-input-in-character.texinfo Err bitreich.org 70 i-@include include/condition-babel-encodings-invalid-utf8-continuation-byte.texinfo Err bitreich.org 70 i-@include include/condition-babel-encodings-invalid-utf8-starter-byte.texinfo Err bitreich.org 70 i-@include include/condition-babel-encodings-overlong-utf8-sequence.texinfo Err bitreich.org 70 i-@include include/condition-babel-end-of-input-in-character.texinfo Err bitreich.org 70 i-@include include/condition-babel-invalid-utf8-continuation-byte.texinfo Err bitreich.org 70 i-@include include/condition-babel-invalid-utf8-starter-byte.texinfo Err bitreich.org 70 i-@include include/condition-babel-overlong-utf8-sequence.texinfo Err bitreich.org 70 i-@include include/constant-babel-unicode-char-code-limit.texinfo Err bitreich.org 70 i- Err bitreich.org 70 i-@section More stuff Err bitreich.org 70 i- Err bitreich.org 70 i-@include include/fun-babel-encodings-get-character-encoding.texinfo Err bitreich.org 70 i-@include include/fun-babel-encodings-list-character-encodings.texinfo Err bitreich.org 70 i-@include include/fun-babel-encodings-lookup-mapping.texinfo Err bitreich.org 70 i-@include include/fun-babel-list-character-encodings.texinfo Err bitreich.org 70 i-@include include/macro-babel-encodings-with-checked-simple-vector.texinfo Err bitreich.org 70 i-@include include/macro-babel-encodings-with-simple-vector.texinfo Err bitreich.org 70 i-@include include/type-babel-simple-unicode-string.texinfo Err bitreich.org 70 i-@include include/type-babel-unicode-char.texinfo Err bitreich.org 70 i-@include include/type-babel-unicode-string.texinfo Err bitreich.org 70 i-@include include/var-babel-encodings-star-default-character-encoding-star.texinfo Err bitreich.org 70 i-@include include/var-babel-encodings-star-suppress-character-coding-errors-star.texinfo Err bitreich.org 70 i-@include include/var-babel-star-default-character-encoding-star.texinfo Err bitreich.org 70 i-@include include/var-babel-star-default-eol-style-star.texinfo Err bitreich.org 70 i- Err bitreich.org 70 i-@c @include include/fun-somepackage-somefunction.texinfo Err bitreich.org 70 i-@c @include include/macro-somepackage-somemacro.texinfo Err bitreich.org 70 i- Err bitreich.org 70 i-@c @node First Section Err bitreich.org 70 i-@c @section First Section Err bitreich.org 70 i- Err bitreich.org 70 i-@c @include include/fun-somepackage-somefunction.texinfo Err bitreich.org 70 i-@c @include include/fun-somepackage-somefunction.texinfo Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c We call this node ``Comprehensive Index'' so that texinfo's HTML Err bitreich.org 70 i-@c output doesn't generate an index.html that'd overwrite the manual's Err bitreich.org 70 i-@c initial page. Err bitreich.org 70 i-@node Comprehensive Index Err bitreich.org 70 i-@unnumbered Index Err bitreich.org 70 i-@printindex cp Err bitreich.org 70 i- Err bitreich.org 70 i-@bye Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/doc/license.texinfo b/3rdparties/software/babel-20171227-git/doc/license.texinfo /scm/clic/file/3rdparties/software/babel-20171227-git/doc/license.texinfo.gph bitreich.org 70 i@@ -1,20 +0,0 @@ Err bitreich.org 70 i-@quotation Err bitreich.org 70 i-Permission is hereby granted, free of charge, to any person obtaining Err bitreich.org 70 i-a copy of this software and associated documentation files (the Err bitreich.org 70 i-``Software''), to deal in the Software without restriction, including Err bitreich.org 70 i-without limitation the rights to use, copy, modify, merge, publish, Err bitreich.org 70 i-distribute, sublicense, and/or sell copies of the Software, and to Err bitreich.org 70 i-permit persons to whom the Software is furnished to do so, subject to Err bitreich.org 70 i-the following conditions: Err bitreich.org 70 i- Err bitreich.org 70 i-The above copyright notice and this permission notice shall be Err bitreich.org 70 i-included in all copies or substantial portions of the Software. Err bitreich.org 70 i- Err bitreich.org 70 i-@sc{The software is provided ``as is'', without warranty of any kind, Err bitreich.org 70 i-express or implied, including but not limited to the warranties of Err bitreich.org 70 i-merchantability, fitness for a particular purpose and noninfringement. Err bitreich.org 70 i-In no event shall the authors or copyright holders be liable for any Err bitreich.org 70 i-claim, damages or other liability, whether in an action of contract, Err bitreich.org 70 i-tort or otherwise, arising from, out of or in connection with the Err bitreich.org 70 i-software or the use or other dealings in the software.} Err bitreich.org 70 i-@end quotation Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/doc/macros.texinfo b/3rdparties/software/babel-20171227-git/doc/macros.texinfo /scm/clic/file/3rdparties/software/babel-20171227-git/doc/macros.texinfo.gph bitreich.org 70 i@@ -1,27 +0,0 @@ Err bitreich.org 70 i-@c Some plain TeX macrology to wrap text in \hbox{} only if the text Err bitreich.org 70 i-@c contains no hyphens. Err bitreich.org 70 i-@iftex Err bitreich.org 70 i-@tex Err bitreich.org 70 i-\newif\ifdash Err bitreich.org 70 i-\long\def\dashp#1{\expandafter\setnext#1-\dashphelper} Err bitreich.org 70 i-\long\def\setnext#1-{\futurelet\next\dashphelper} Err bitreich.org 70 i-\long\def\dashphelper#1\dashphelper{ Err bitreich.org 70 i- \ifx\dashphelper\next\dashfalse\else\dashtrue\fi Err bitreich.org 70 i-} Err bitreich.org 70 i-\def\lw#1{\leavevmode\dashp{#1}\ifdash#1\else\hbox{#1}\fi} Err bitreich.org 70 i-@end tex Err bitreich.org 70 i-@end iftex Err bitreich.org 70 i- Err bitreich.org 70 i-@c A Texinfo binding for the plain TeX above. Analogous to Texinfo's Err bitreich.org 70 i-@c @w, but for Lisp symbols. AFAICT, the comment characters are Err bitreich.org 70 i-@c necessary to prevent treating the newline as a space. Err bitreich.org 70 i-@macro lw{word} Err bitreich.org 70 i-@iftex Err bitreich.org 70 i-@tex Err bitreich.org 70 i-\\lw{\word\}% Err bitreich.org 70 i-@end tex Err bitreich.org 70 i-@end iftex Err bitreich.org 70 i-@ifnottex Err bitreich.org 70 i-\word\@c Err bitreich.org 70 i-@end ifnottex Err bitreich.org 70 i-@end macro Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/scripts/release.lisp b/3rdparties/software/babel-20171227-git/scripts/release.lisp /scm/clic/file/3rdparties/software/babel-20171227-git/scripts/release.lisp.gph bitreich.org 70 i@@ -1,250 +0,0 @@ Err bitreich.org 70 i-#!/usr/bin/env clisp Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage :release-script (:use #:cl #:regexp)) Err bitreich.org 70 i-(in-package :release-script) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Configuration ------------------------------------------------------------ Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *project-name* "babel") Err bitreich.org 70 i-(defparameter *asdf-file* (format nil "~A.asd" *project-name*)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *host* "common-lisp.net") Err bitreich.org 70 i-(defparameter *release-dir* Err bitreich.org 70 i- (format nil "/project/~A/public_html/releases" *project-name*)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *version-file* "VERSION") Err bitreich.org 70 i-(defparameter *version-file-dir* Err bitreich.org 70 i- (format nil "/project/~A/public_html" *project-name*)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; -------------------------------------------------------------------------- Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Utilities Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ensure-list (x) Err bitreich.org 70 i- (if (listp x) x (list x))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro string-case (expression &body clauses) Err bitreich.org 70 i- `(let ((it ,expression)) ; yes, anaphoric, deal with it. Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ,@(loop for clause in clauses collect Err bitreich.org 70 i- `((or ,@(loop for alternative in (ensure-list (first clause)) Err bitreich.org 70 i- collect (or (eq t alternative) Err bitreich.org 70 i- `(string= it ,alternative)))) Err bitreich.org 70 i- ,@(rest clause)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *development-mode* nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun die (format-control &rest format-args) Err bitreich.org 70 i- (format *error-output* "~?" format-control format-args) Err bitreich.org 70 i- (if *development-mode* Err bitreich.org 70 i- (cerror "continue" "die") Err bitreich.org 70 i- (ext:quit 1))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun numeric-split (string) Err bitreich.org 70 i- (if (digit-char-p (char string 0)) Err bitreich.org 70 i- (multiple-value-bind (number next-position) Err bitreich.org 70 i- (parse-integer string :junk-allowed t) Err bitreich.org 70 i- (cons number (when (< next-position (length string)) Err bitreich.org 70 i- (numeric-split (subseq string next-position))))) Err bitreich.org 70 i- (let ((next-digit-position (position-if #'digit-char-p string))) Err bitreich.org 70 i- (if next-digit-position Err bitreich.org 70 i- (cons (subseq string 0 next-digit-position) Err bitreich.org 70 i- (numeric-split (subseq string next-digit-position))) Err bitreich.org 70 i- (list string))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun natural-string-< (s1 s2) Err bitreich.org 70 i- (labels ((aux< (l1 l2) Err bitreich.org 70 i- (cond ((null l1) (not (null l2))) Err bitreich.org 70 i- ((null l2) nil) Err bitreich.org 70 i- (t (destructuring-bind (x . xs) l1 Err bitreich.org 70 i- (destructuring-bind (y . ys) l2 Err bitreich.org 70 i- (cond ((and (numberp x) (stringp y)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- ((and (numberp y) (stringp x)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- ((and (numberp x) (numberp y)) Err bitreich.org 70 i- (or (< x y) (and (= x y) (aux< xs ys)))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (or (string-lessp x y) Err bitreich.org 70 i- (and (string-equal x y) Err bitreich.org 70 i- (aux< xs ys))))))))))) Err bitreich.org 70 i- (aux< (numeric-split s1) Err bitreich.org 70 i- (numeric-split s2)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Running commands Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *dry-run* nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun cmd? (format-control &rest format-args) Err bitreich.org 70 i- (let ((cmd (format nil "~?" format-control format-args))) Err bitreich.org 70 i- (with-open-stream (s1 (ext:run-shell-command cmd :output :stream)) Err bitreich.org 70 i- (loop for line = (read-line s1 nil nil) Err bitreich.org 70 i- while line Err bitreich.org 70 i- collect line)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; XXX: quote arguments. Err bitreich.org 70 i-(defun cmd (format-control &rest format-args) Err bitreich.org 70 i- (when *development-mode* Err bitreich.org 70 i- (format *debug-io* "CMD: ~?~%" format-control format-args)) Err bitreich.org 70 i- (let ((ret (ext:run-shell-command (format nil "~?" format-control format-args)))) Err bitreich.org 70 i- (or (null ret) Err bitreich.org 70 i- (zerop ret)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun cmd! (format-control &rest format-args) Err bitreich.org 70 i- (or (apply #'cmd format-control format-args) Err bitreich.org 70 i- (die "cmd '~?' failed." format-control format-args))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun maybe-cmd! (format-control &rest format-args) Err bitreich.org 70 i- (if *dry-run* Err bitreich.org 70 i- (format t "SUPPRESSING: ~?~%" format-control format-args) Err bitreich.org 70 i- (apply #'cmd! format-control format-args))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(defun find-current-version () Err bitreich.org 70 i- (subseq (reduce (lambda (x y) (if (natural-string-< x y) y x)) Err bitreich.org 70 i- (or (cmd? "git tag -l v\\*") Err bitreich.org 70 i- (die "no version tags found. Please specify initial version."))) Err bitreich.org 70 i- 1)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun parse-version (string) Err bitreich.org 70 i- (mapcar (lambda (x) Err bitreich.org 70 i- (parse-integer x :junk-allowed t)) Err bitreich.org 70 i- (loop repeat 3 ; XXX: parameterize Err bitreich.org 70 i- for el in (regexp-split "\\." (find-current-version)) Err bitreich.org 70 i- collect el))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun check-for-unrecorded-changes (&optional force) Err bitreich.org 70 i- (unless (cmd "git diff --exit-code") Err bitreich.org 70 i- (write-line "Unrecorded changes.") Err bitreich.org 70 i- (if force Err bitreich.org 70 i- (write-line "Continuing anyway.") Err bitreich.org 70 i- (die "Aborting.~@ Err bitreich.org 70 i- Use -f or --force if you want to make a release anyway.")))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun new-version-number-candidates (current-version) Err bitreich.org 70 i- (let ((current-version (parse-version current-version))) Err bitreich.org 70 i- (labels ((alternatives (before after) Err bitreich.org 70 i- (when after Err bitreich.org 70 i- (cons (append before (list (1+ (first after))) Err bitreich.org 70 i- (mapcar (constantly 0) (rest after))) Err bitreich.org 70 i- (alternatives (append before (list (first after))) Err bitreich.org 70 i- (rest after)))))) Err bitreich.org 70 i- (loop for alt in (alternatives nil current-version) Err bitreich.org 70 i- collect (reduce (lambda (acc next) Err bitreich.org 70 i- (format nil "~a.~a" acc next)) Err bitreich.org 70 i- alt))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ask-user-for-version (current-version next-versions) Err bitreich.org 70 i- (format *query-io* "Current version is ~A. Which will be the next one?~%" Err bitreich.org 70 i- current-version) Err bitreich.org 70 i- (loop for i from 1 and version in next-versions Err bitreich.org 70 i- do (format *query-io* "~T~A) ~A~%" i version)) Err bitreich.org 70 i- (format *query-io* "? ") Err bitreich.org 70 i- (finish-output *query-io*) Err bitreich.org 70 i- (nth (1- (parse-integer (read-line) :junk-allowed t)) Err bitreich.org 70 i- next-versions)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun git-tag-tree (version) Err bitreich.org 70 i- (write-line "Tagging the tree...") Err bitreich.org 70 i- (maybe-cmd! "git tag \"v~A\"" version)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun add-version-to-system-file (version path-in path-out) Err bitreich.org 70 i- (with-open-file (in path-in :direction :input) Err bitreich.org 70 i- (with-open-file (out path-out :direction :output) Err bitreich.org 70 i- (loop for line = (read-line in nil nil) while line Err bitreich.org 70 i- do (write-line line out) Err bitreich.org 70 i- when (string= #1="(defsystem " line Err bitreich.org 70 i- :end2 (min (length #1#) (length line))) Err bitreich.org 70 i- do (format out " :version ~s~%" version))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun create-dist (version distname) Err bitreich.org 70 i- (write-line "Creating distribution...") Err bitreich.org 70 i- (cmd! "mkdir \"~a\"" distname) Err bitreich.org 70 i- (cmd! "git archive master | tar xC \"~A\"" distname) Err bitreich.org 70 i- (format t "Updating ~A with new version: ~A~%" *asdf-file* version) Err bitreich.org 70 i- (let* ((asdf-file-path (format nil "~A/~A" distname *asdf-file*)) Err bitreich.org 70 i- (tmp-asdf-file-path (format nil "~a.tmp" asdf-file-path))) Err bitreich.org 70 i- (add-version-to-system-file version asdf-file-path tmp-asdf-file-path) Err bitreich.org 70 i- (cmd! "mv \"~a\" \"~a\"" tmp-asdf-file-path asdf-file-path))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun tar-and-sign (distname tarball) Err bitreich.org 70 i- (write-line "Creating and signing tarball...") Err bitreich.org 70 i- (cmd! "tar czf \"~a\" \"~a\"" tarball distname) Err bitreich.org 70 i- (cmd! "gpg -b -a \"~a\"" tarball)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *remote-directory* (format nil "~A:~A" *host* *release-dir*)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun upload-tarball (tarball signature remote-directory) Err bitreich.org 70 i- (write-line "Copying tarball to web server...") Err bitreich.org 70 i- (maybe-cmd! "scp \"~A\" \"~A\" \"~A\"" tarball signature remote-directory) Err bitreich.org 70 i- (format t "Uploaded ~A and ~A.~%" tarball signature)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun update-remote-links (tarball signature host release-dir project-name) Err bitreich.org 70 i- (format t "Updating ~A_latest links...~%" project-name) Err bitreich.org 70 i- (maybe-cmd! "ssh \"~A\" ln -sf \"~A\" \"~A/~A_latest.tar.gz\"" Err bitreich.org 70 i- host tarball release-dir project-name) Err bitreich.org 70 i- (maybe-cmd! "ssh \"~A\" ln -sf \"~A\" \"~A/~A_latest.tar.gz.asc\"" Err bitreich.org 70 i- host signature release-dir project-name)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun upload-version-file (version version-file host version-file-dir) Err bitreich.org 70 i- (format t "Uploading ~A...~%" version-file) Err bitreich.org 70 i- (with-open-file (out version-file :direction :output) Err bitreich.org 70 i- (write-string version out)) Err bitreich.org 70 i- (maybe-cmd! "scp \"~A\" \"~A\":\"~A\"" version-file host version-file-dir) Err bitreich.org 70 i- (maybe-cmd! "rm \"~A\"" version-file)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun maybe-clean-things-up (tarball signature) Err bitreich.org 70 i- (when (y-or-n-p "Clean local tarball and signature?") Err bitreich.org 70 i- (cmd! "rm \"~A\" \"~A\"" tarball signature))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun run (force version) Err bitreich.org 70 i- (check-for-unrecorded-changes force) Err bitreich.org 70 i- ;; figure out what version we'll be preparing. Err bitreich.org 70 i- (unless version Err bitreich.org 70 i- (let* ((current-version (find-current-version)) Err bitreich.org 70 i- (next-versions (new-version-number-candidates current-version))) Err bitreich.org 70 i- (setf version (or (ask-user-for-version current-version next-versions) Err bitreich.org 70 i- (die "invalid selection."))))) Err bitreich.org 70 i- (git-tag-tree version) Err bitreich.org 70 i- (let* ((distname (format nil "~A_~A" *project-name* version)) Err bitreich.org 70 i- (tarball (format nil "~A.tar.gz" distname)) Err bitreich.org 70 i- (signature (format nil "~A.asc" tarball))) Err bitreich.org 70 i- ;; package things up. Err bitreich.org 70 i- (create-dist version distname) Err bitreich.org 70 i- (tar-and-sign distname tarball) Err bitreich.org 70 i- ;; upload. Err bitreich.org 70 i- (upload-tarball tarball signature *remote-directory*) Err bitreich.org 70 i- (update-remote-links tarball signature *host* *release-dir* *project-name*) Err bitreich.org 70 i- (when *version-file* Err bitreich.org 70 i- (upload-version-file version *version-file* *host* *version-file-dir*)) Err bitreich.org 70 i- ;; clean up. Err bitreich.org 70 i- (maybe-clean-things-up tarball signature) Err bitreich.org 70 i- ;; documentation. Err bitreich.org 70 i- ;; (write-line "Building and uploading documentation...") Err bitreich.org 70 i- ;; (maybe-cmd! "make -C doc upload-docs") Err bitreich.org 70 i- ;; push tags and any outstanding changes. Err bitreich.org 70 i- (write-line "Pushing tags and changes...") Err bitreich.org 70 i- (maybe-cmd! "git push --tags origin master"))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Do it to it Err bitreich.org 70 i- Err bitreich.org 70 i-(let ((force nil) Err bitreich.org 70 i- (version nil) Err bitreich.org 70 i- (args ext:*args*)) Err bitreich.org 70 i- (loop while args Err bitreich.org 70 i- do (string-case (pop args) Err bitreich.org 70 i- (("-h" "--help") Err bitreich.org 70 i- (write-line "No help, sorry. Read the source.") Err bitreich.org 70 i- (ext:quit 0)) Err bitreich.org 70 i- (("-f" "--force") Err bitreich.org 70 i- (setf force t)) Err bitreich.org 70 i- (("-v" "--version") Err bitreich.org 70 i- (setf version (pop args))) Err bitreich.org 70 i- (("-n" "--dry-run") Err bitreich.org 70 i- (setf *dry-run* t)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (die "Unrecognized argument '~a'" it)))) Err bitreich.org 70 i- (run force version)) Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/src/enc-ascii.lisp b/3rdparties/software/babel-20171227-git/src/enc-ascii.lisp /scm/clic/file/3rdparties/software/babel-20171227-git/src/enc-ascii.lisp.gph bitreich.org 70 i@@ -1,43 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; enc-ascii.lisp --- Implementation of the ASCII character encoding. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:babel-encodings) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :ascii Err bitreich.org 70 i- "A 7-bit, fixed-width character encoding in which all Err bitreich.org 70 i-character codes map to their Unicode equivalents." Err bitreich.org 70 i- :aliases '(:us-ascii) Err bitreich.org 70 i- :literal-char-code-limit 128) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-encoder :ascii (code) Err bitreich.org 70 i- (if (>= code 128) Err bitreich.org 70 i- (handle-error) Err bitreich.org 70 i- code)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-decoder :ascii (octet) Err bitreich.org 70 i- (if (>= octet 128) Err bitreich.org 70 i- (handle-error) Err bitreich.org 70 i- octet)) Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/src/enc-cp1251.lisp b/3rdparties/software/babel-20171227-git/src/enc-cp1251.lisp /scm/clic/file/3rdparties/software/babel-20171227-git/src/enc-cp1251.lisp.gph bitreich.org 70 i@@ -1,119 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; enc-cp1251.lisp --- Implementation of the CP1251 character encoding. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2009, Andrey Moskvitin Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:babel-encodings) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :cp1251 Err bitreich.org 70 i- "An 8-bit, fixed-width character Russian encoding from Windows." Err bitreich.org 70 i- :aliases '(:windows-1251) Err bitreich.org 70 i- :literal-char-code-limit #x80) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +cp1251-to-unicode+ Err bitreich.org 70 i- #(;; #x80 Err bitreich.org 70 i- #x0402 #x0403 #x201a #x0453 #x201e #x2026 #x2020 #x2021 Err bitreich.org 70 i- #x20ac #x2030 #x0409 #x2039 #x040a #x040c #x040b #x040f Err bitreich.org 70 i- ;; #x90 Err bitreich.org 70 i- #x0452 #x2018 #x2019 #x201c #x201d #x2022 #x2013 #x2014 Err bitreich.org 70 i- #xfffd #x2122 #x0459 #x203a #x045a #x045c #x045b #x045f Err bitreich.org 70 i- ;; #xa0 Err bitreich.org 70 i- #x00a0 #x040e #x045e #x0408 #x00a4 #x0490 #x00a6 #x00a7 Err bitreich.org 70 i- #x0401 #x00a9 #x0404 #x00ab #x00ac #x00ad #x00ae #x0407 Err bitreich.org 70 i- ;; #xb0 Err bitreich.org 70 i- #x00b0 #x00b1 #x0406 #x0456 #x0491 #x00b5 #x00b6 #x00b7 Err bitreich.org 70 i- #x0451 #x2116 #x0454 #x00bb #x0458 #x0405 #x0455 #x0457 Err bitreich.org 70 i- ;; #xc0 Err bitreich.org 70 i- #x0410 #x0411 #x0412 #x0413 #x0414 #x0415 #x0416 #x0417 Err bitreich.org 70 i- #x0418 #x0419 #x041a #x041b #x041c #x041d #x041e #x041f Err bitreich.org 70 i- ;; #xd0 Err bitreich.org 70 i- #x0420 #x0421 #x0422 #x0423 #x0424 #x0425 #x0426 #x0427 Err bitreich.org 70 i- #x0428 #x0429 #x042a #x042b #x042c #x042d #x042e #x042f Err bitreich.org 70 i- ;; #xe0 Err bitreich.org 70 i- #x0430 #x0431 #x0432 #x0433 #x0434 #x0435 #x0436 #x0437 Err bitreich.org 70 i- #x0438 #x0439 #x043a #x043b #x043c #x043d #x043e #x043f Err bitreich.org 70 i- ;; #xf0 Err bitreich.org 70 i- #x0440 #x0441 #x0442 #x0443 #x0444 #x0445 #x0446 #x0447 Err bitreich.org 70 i- #x0448 #x0449 #x044a #x044b #x044c #x044d #x044e #x044f) Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-decoder :cp1251 (octet) Err bitreich.org 70 i- (if (< octet #x80) Err bitreich.org 70 i- octet Err bitreich.org 70 i- (svref +cp1251-to-unicode+ (the ub8 (- octet #x80))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-a0-bf-to-cp1251+ Err bitreich.org 70 i- #(#xa0 #x00 #x00 #x00 #xa4 #x00 #xa6 #xa7 ; #xa0-#xa7 Err bitreich.org 70 i- #x00 #xa9 #x00 #xab #xac #xad #xae #x00 ; #xa8-#xaf Err bitreich.org 70 i- #xb0 #xb1 #x00 #x00 #x00 #xb5 #xb6 #xb7 ; #xb0-#xb7 Err bitreich.org 70 i- #x00 #x00 #x00 #xbb #x00 #x00 #x00 #x00) ; #xb8-#xbf Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-0-97-to-cp1251+ Err bitreich.org 70 i- #(#x00 #xa8 #x80 #x81 #xaa #xbd #xb2 #xaf ; #x00-#x07 Err bitreich.org 70 i- #xa3 #x8a #x8c #x8e #x8d #x00 #xa1 #x8f ; #x08-#x0f Err bitreich.org 70 i- #xc0 #xc1 #xc2 #xc3 #xc4 #xc5 #xc6 #xc7 ; #x10-#x17 Err bitreich.org 70 i- #xc8 #xc9 #xca #xcb #xcc #xcd #xce #xcf ; #x18-#x1f Err bitreich.org 70 i- #xd0 #xd1 #xd2 #xd3 #xd4 #xd5 #xd6 #xd7 ; #x20-#x27 Err bitreich.org 70 i- #xd8 #xd9 #xda #xdb #xdc #xdd #xde #xdf ; #x28-#x2f Err bitreich.org 70 i- #xe0 #xe1 #xe2 #xe3 #xe4 #xe5 #xe6 #xe7 ; #x30-#x37 Err bitreich.org 70 i- #xe8 #xe9 #xea #xeb #xec #xed #xee #xef ; #x38-#x3f Err bitreich.org 70 i- #xf0 #xf1 #xf2 #xf3 #xf4 #xf5 #xf6 #xf7 ; #x40-#x47 Err bitreich.org 70 i- #xf8 #xf9 #xfa #xfb #xfc #xfd #xfe #xff ; #x48-#x4f Err bitreich.org 70 i- #x00 #xb8 #x90 #x83 #xba #xbe #xb3 #xbf ; #x50-#x57 Err bitreich.org 70 i- #xbc #x9a #x9c #x9e #x9d #x00 #xa2 #x9f ; #x58-#x5f Err bitreich.org 70 i- #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00 ; #x60-#x67 Err bitreich.org 70 i- #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00 ; #x68-#x6f Err bitreich.org 70 i- #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00 ; #x70-#x77 Err bitreich.org 70 i- #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00 ; #x78-#x7f Err bitreich.org 70 i- #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00 ; #x80-#x87 Err bitreich.org 70 i- #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00 ; #x88-#x8f Err bitreich.org 70 i- #xa5 #xb4 #x00 #x00 #x00 #x00 #x00 #x00) ; #x90-#x97 Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-10-3f-to-cp1251+ Err bitreich.org 70 i- #(#x00 #x00 #x00 #x96 #x97 #x00 #x00 #x00 ; #x10-#x17 Err bitreich.org 70 i- #x91 #x92 #x82 #x00 #x93 #x94 #x84 #x00 ; #x18-#x1f Err bitreich.org 70 i- #x86 #x87 #x95 #x00 #x00 #x00 #x85 #x00 ; #x20-#x27 Err bitreich.org 70 i- #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00 ; #x28-#x2f Err bitreich.org 70 i- #x89 #x00 #x00 #x00 #x00 #x00 #x00 #x00 ; #x30-#x37 Err bitreich.org 70 i- #x00 #x8b #x9b #x00 #x00 #x00 #x00 #x00) ; #x38-#x3f Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-encoder :cp1251 (code) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((< code #x80) code) Err bitreich.org 70 i- ((and (>= code #xa0) (< code #xc0)) Err bitreich.org 70 i- (svref +unicode-a0-bf-to-cp1251+ Err bitreich.org 70 i- (the ub8 (- code #xa0)))) Err bitreich.org 70 i- ((and (>= code #x400) (< code #x498)) Err bitreich.org 70 i- (svref +unicode-0-97-to-cp1251+ Err bitreich.org 70 i- (the ub8 (- code #x400)))) Err bitreich.org 70 i- ((and (>= code #x2010) (< code #x2040)) Err bitreich.org 70 i- (svref +unicode-10-3f-to-cp1251+ Err bitreich.org 70 i- (the ub8 (- code #x2010)))) Err bitreich.org 70 i- ((= code #x20ac) #x88) Err bitreich.org 70 i- ((= code #x2116) #xb9) Err bitreich.org 70 i- ((= code #x2122) #x99) Err bitreich.org 70 i- (t (handle-error)))) Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/src/enc-cp1252.lisp b/3rdparties/software/babel-20171227-git/src/enc-cp1252.lisp /scm/clic/file/3rdparties/software/babel-20171227-git/src/enc-cp1252.lisp.gph bitreich.org 70 i@@ -1,81 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; enc-cp1252.lisp --- Implementation of the CP1252 character encoding. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2011, Nicolas Martyanoff Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:babel-encodings) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :cp1252 Err bitreich.org 70 i- "A 8-bit, fixed-width character encoding used by Windows for Western Err bitreich.org 70 i- European languages." Err bitreich.org 70 i- :aliases '(:windows-1252) Err bitreich.org 70 i- :literal-char-code-limit 256) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +cp1252-to-unicode+ Err bitreich.org 70 i- #(#x20ac nil #x201a #x0192 #x201e #x2026 #x2020 #x2021 Err bitreich.org 70 i- #x02c6 #x2030 #x0160 #x2039 #x0152 nil #x017d nil Err bitreich.org 70 i- nil #x2018 #x2019 #x201c #x201d #x2022 #x2013 #x2014 Err bitreich.org 70 i- #x02dc #x2122 #x0161 #x203a #x0153 nil #x017e #x0178) Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-decoder :cp1252 (octet) Err bitreich.org 70 i- (if (and (>= octet #x80) (<= octet #x9f)) Err bitreich.org 70 i- (svref +cp1252-to-unicode+ Err bitreich.org 70 i- (the ub8 (- octet #x80))) Err bitreich.org 70 i- octet)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-0152-017e-cp1252+ Err bitreich.org 70 i- #(#x8c #x9c #x00 #x00 #x00 #x00 #x00 #x00 Err bitreich.org 70 i- #x00 #x00 #x00 #x00 #x00 #x00 #x8a #x9a Err bitreich.org 70 i- #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00 Err bitreich.org 70 i- #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00 Err bitreich.org 70 i- #x00 #x00 #x00 #x00 #x00 #x00 #x9f #x00 Err bitreich.org 70 i- #x00 #x00 #x00 #x8e #x9e) Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-2013-203a-cp1252+ Err bitreich.org 70 i- #(#x96 #x97 #x00 #x00 #x00 #x91 #x92 #x82 Err bitreich.org 70 i- #x00 #x93 #x94 #x84 #x00 #x86 #x87 #x95 Err bitreich.org 70 i- #x00 #x00 #x00 #x85 #x00 #x00 #x00 #x00 Err bitreich.org 70 i- #x00 #x00 #x00 #x00 #x00 #x89 #x00 #x00 Err bitreich.org 70 i- #x00 #x00 #x00 #x00 #x00 #x00 #x8b #x9b) Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-encoder :cp1252 (code) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((or (< code #x80) Err bitreich.org 70 i- (and (> code #xa0) (<= code #xff))) Err bitreich.org 70 i- code) Err bitreich.org 70 i- ((and (>= code #x0152) (<= code #x017e)) Err bitreich.org 70 i- (svref +unicode-0152-017e-cp1252+ Err bitreich.org 70 i- (the ub8 (- code #x0152)))) Err bitreich.org 70 i- ((= code #x0192) #x83) Err bitreich.org 70 i- ((= code #x02c6) #x88) Err bitreich.org 70 i- ((= code #x02dc) #x89) Err bitreich.org 70 i- ((and (>= code #x2013) (<= code #x203a)) Err bitreich.org 70 i- (svref +unicode-2013-203a-cp1252+ Err bitreich.org 70 i- (the ub8 (- code #x2013)))) Err bitreich.org 70 i- ((= code #x20ac) #x80) Err bitreich.org 70 i- ((= code #x2122) #x99) Err bitreich.org 70 i- (t (handle-error)))) Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/src/enc-ebcdic-int.lisp b/3rdparties/software/babel-20171227-git/src/enc-ebcdic-int.lisp /scm/clic/file/3rdparties/software/babel-20171227-git/src/enc-ebcdic-int.lisp.gph bitreich.org 70 i@@ -1,49 +0,0 @@ Err bitreich.org 70 i-(in-package #:babel-encodings) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :ebcdic-international Err bitreich.org 70 i- "An 8-bit, fixed-width character encoding from IBM.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter +ebcdic-int-to-unicode+ Err bitreich.org 70 i- #(0 1 2 3 156 9 134 127 151 141 142 11 12 13 14 15 16 17 18 19 157 133 8 135 Err bitreich.org 70 i- 24 25 146 143 28 29 30 31 128 129 130 65535 132 10 23 27 65535 65535 138 139 Err bitreich.org 70 i- 65535 5 6 7 65535 65535 22 65535 148 149 150 4 65535 65535 65535 155 20 21 Err bitreich.org 70 i- 65535 26 32 65535 65535 65535 65535 65535 65535 65535 65535 65535 91 46 60 Err bitreich.org 70 i- 40 43 33 38 65535 65535 65535 65535 65535 65535 65535 65535 65535 93 164 42 Err bitreich.org 70 i- 41 59 172 45 47 65535 65535 65535 65535 65535 65535 65535 65535 124 44 37 95 Err bitreich.org 70 i- 62 63 65535 65535 65535 65535 65535 65535 1102 1072 1073 96 58 35 64 39 61 Err bitreich.org 70 i- 34 1094 97 98 99 100 101 102 103 104 105 1076 1077 1092 1075 1093 1080 1081 Err bitreich.org 70 i- 106 107 108 109 110 111 112 113 114 1082 1083 1084 1085 1086 1087 1103 126 Err bitreich.org 70 i- 115 116 117 118 119 120 121 122 1088 1089 1090 1091 1078 1074 1100 1099 1079 Err bitreich.org 70 i- 1096 1101 1097 1095 1098 1070 1040 1041 1062 1044 1045 1060 1043 123 65 66 Err bitreich.org 70 i- 67 68 69 70 71 72 73 1061 1048 1049 1050 1051 1052 125 74 75 76 77 78 79 80 Err bitreich.org 70 i- 81 82 1053 1054 1055 1071 1056 1057 92 65535 83 84 85 86 87 88 89 90 1058 Err bitreich.org 70 i- 1059 1046 1042 1068 1067 48 49 50 51 52 53 54 55 56 57 1047 1064 1069 1065 Err bitreich.org 70 i- 1063 159)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter +unicode-upto-ac-ebcdic-int+ Err bitreich.org 70 i- #(0 1 2 3 55 45 46 47 22 5 37 11 12 13 14 15 16 17 18 19 60 61 50 38 24 25 63 Err bitreich.org 70 i- 39 28 29 30 31 64 79 127 123 0 108 80 125 77 93 92 78 107 96 75 97 240 241 Err bitreich.org 70 i- 242 243 244 245 246 247 248 249 122 94 76 126 110 111 124 193 194 195 196 Err bitreich.org 70 i- 197 198 199 200 201 209 210 211 212 213 214 215 216 217 226 227 228 229 230 Err bitreich.org 70 i- 231 232 233 74 224 90 0 109 121 129 130 131 132 133 134 135 136 137 145 146 Err bitreich.org 70 i- 147 148 149 150 151 152 153 162 163 164 165 166 167 168 169 192 106 208 161 Err bitreich.org 70 i- 7 32 33 34 0 36 21 6 23 0 0 42 43 0 9 10 27 0 0 26 0 52 53 54 8 0 0 0 59 4 Err bitreich.org 70 i- 20 0 255 0 0 0 0 91 0 0 0 0 0 0 0 95)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter +unicode-0410-0450-ebcdic-int+ Err bitreich.org 70 i- #(185 186 237 191 188 189 236 250 203 204 205 206 207 218 219 220 222 223 234 Err bitreich.org 70 i- 235 190 202 187 254 251 253 0 239 238 252 184 221 119 120 175 141 138 139 Err bitreich.org 70 i- 174 178 143 144 154 155 156 157 158 159 170 171 172 173 140 142 128 182 179 Err bitreich.org 70 i- 181 183 177 176 180 118 160)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-decoder :ebcdic-international (octet) Err bitreich.org 70 i- (svref +ebcdic-int-to-unicode+ (the ub8 octet))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-encoder :ebcdic-international (code) Err bitreich.org 70 i- (let ((result (cond Err bitreich.org 70 i- ((<= code 172) (svref +unicode-upto-ac-ebcdic-int+ code)) Err bitreich.org 70 i- ((<= #x0410 code #x0450) (svref +unicode-0410-0450-ebcdic-int+ Err bitreich.org 70 i- (- code #x0410)))))) Err bitreich.org 70 i- (prog1 result Err bitreich.org 70 i- (when (and (zerop result) (plusp code)) Err bitreich.org 70 i- (handle-error))))) Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/src/enc-ebcdic.lisp b/3rdparties/software/babel-20171227-git/src/enc-ebcdic.lisp /scm/clic/file/3rdparties/software/babel-20171227-git/src/enc-ebcdic.lisp.gph bitreich.org 70 i@@ -1,71 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; enc-ebcdic.lisp --- EBCDIC encodings. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:babel-encodings) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :ebcdic-us Err bitreich.org 70 i- "An alleged character set used on IBM dinosaurs." Err bitreich.org 70 i- :aliases '(:ibm-037)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +ebcdic-decode-table+ Err bitreich.org 70 i- (make-array Err bitreich.org 70 i- 256 :element-type 'ub8 :initial-contents Err bitreich.org 70 i- '(#x00 #x01 #x02 #x03 #x9c #x09 #x86 #x7f #x97 #x8d #x8e #x0b #x0c #x0d Err bitreich.org 70 i- #x0e #x0f #x10 #x11 #x12 #x13 #x9d #x85 #x08 #x87 #x18 #x19 #x92 #x8f Err bitreich.org 70 i- #x1c #x1d #x1e #x1f #x80 #x81 #x82 #x83 #x84 #x0a #x17 #x1b #x88 #x89 Err bitreich.org 70 i- #x8a #x8b #x8c #x05 #x06 #x07 #x90 #x91 #x16 #x93 #x94 #x95 #x96 #x04 Err bitreich.org 70 i- #x98 #x99 #x9a #x9b #x14 #x15 #x9e #x1a #x20 #xa0 #xe2 #xe4 #xe0 #xe1 Err bitreich.org 70 i- #xe3 #xe5 #xe7 #xf1 #xa2 #x2e #x3c #x28 #x2b #x7c #x26 #xe9 #xea #xeb Err bitreich.org 70 i- #xe8 #xed #xee #xef #xec #xdf #x21 #x24 #x2a #x29 #x3b #xac #x2d #x2f Err bitreich.org 70 i- #xc2 #xc4 #xc0 #xc1 #xc3 #xc5 #xc7 #xd1 #xa6 #x2c #x25 #x5f #x3e #x3f Err bitreich.org 70 i- #xf8 #xc9 #xca #xcb #xc8 #xcd #xce #xcf #xcc #x60 #x3a #x23 #x40 #x27 Err bitreich.org 70 i- #x3d #x22 #xd8 #x61 #x62 #x63 #x64 #x65 #x66 #x67 #x68 #x69 #xab #xbb Err bitreich.org 70 i- #xf0 #xfd #xfe #xb1 #xb0 #x6a #x6b #x6c #x6d #x6e #x6f #x70 #x71 #x72 Err bitreich.org 70 i- #xaa #xba #xe6 #xb8 #xc6 #xa4 #xb5 #x7e #x73 #x74 #x75 #x76 #x77 #x78 Err bitreich.org 70 i- #x79 #x7a #xa1 #xbf #xd0 #xdd #xde #xae #x5e #xa3 #xa5 #xb7 #xa9 #xa7 Err bitreich.org 70 i- #xb6 #xbc #xbd #xbe #x5b #x5d #xaf #xa8 #xb4 #xd7 #x7b #x41 #x42 #x43 Err bitreich.org 70 i- #x44 #x45 #x46 #x47 #x48 #x49 #xad #xf4 #xf6 #xf2 #xf3 #xf5 #x7d #x4a Err bitreich.org 70 i- #x4b #x4c #x4d #x4e #x4f #x50 #x51 #x52 #xb9 #xfb #xfc #xf9 #xfa #xff Err bitreich.org 70 i- #x5c #xf7 #x53 #x54 #x55 #x56 #x57 #x58 #x59 #x5a #xb2 #xd4 #xd6 #xd2 Err bitreich.org 70 i- #xd3 #xd5 #x30 #x31 #x32 #x33 #x34 #x35 #x36 #x37 #x38 #x39 #xb3 #xdb Err bitreich.org 70 i- #xdc #xd9 #xda #x9f)) Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +ebcdic-encode-table+ Err bitreich.org 70 i- (loop with rt = (make-array 256 :element-type 'ub8 :initial-element 0) Err bitreich.org 70 i- for code across +ebcdic-decode-table+ for i from 0 do Err bitreich.org 70 i- (assert (= 0 (aref rt code))) Err bitreich.org 70 i- (setf (aref rt code) i) Err bitreich.org 70 i- finally (return rt)) Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-encoder :ebcdic-us (code) Err bitreich.org 70 i- (if (>= code 256) Err bitreich.org 70 i- (handle-error) Err bitreich.org 70 i- (aref +ebcdic-encode-table+ code))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-decoder :ebcdic-us (octet) Err bitreich.org 70 i- (aref +ebcdic-decode-table+ octet)) Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/src/enc-gbk.lisp b/3rdparties/software/babel-20171227-git/src/enc-gbk.lisp /scm/clic/file/3rdparties/software/babel-20171227-git/src/enc-gbk.lisp.gph bitreich.org 70 i@@ -1,184 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; enc-gbk.lisp --- GBK encodings. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2011, Li Wenpeng Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:babel-encodings) Err bitreich.org 70 i- Err bitreich.org 70 i-;; populated in gbk-map.lisp Err bitreich.org 70 i-(defvar *gbk-unicode-mapping*) Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +gbk2-offset+ 0) Err bitreich.org 70 i-(defconstant +gbk3-offset+ 6763) Err bitreich.org 70 i-(defconstant +gbk4-offset+ (+ 6763 6080)) Err bitreich.org 70 i-(defconstant +gbk1-offset+ 20902) Err bitreich.org 70 i-(defconstant +gbk5-offset+ (+ 20902 846)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :gbk Err bitreich.org 70 i- "GBK is an extension of the GB2312 character set for simplified Err bitreich.org 70 i-Chinese characters, used in the People's Republic of China." Err bitreich.org 70 i- :max-units-per-char 4 Err bitreich.org 70 i- :literal-char-code-limit #x80) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition invalid-gbk-byte (character-decoding-error) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Signalled when an invalid GBK byte is found.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition invalid-gbk-character (character-encoding-error) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Signalled when an invalid GBK character is found.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-octet-counter :gbk (getter type) Err bitreich.org 70 i- `(lambda (seq start end max) Err bitreich.org 70 i- (declare (type ,type seq) (fixnum start end max)) Err bitreich.org 70 i- (let ((noctets 0)) Err bitreich.org 70 i- (loop for i from start below end Err bitreich.org 70 i- for u1 of-type code-point = (,getter seq i) Err bitreich.org 70 i- do (cond ((< u1 #x80) (incf noctets)) Err bitreich.org 70 i- (t (incf noctets 2))) Err bitreich.org 70 i- (when (and (plusp max) (= noctets max)) Err bitreich.org 70 i- (return (values noctets i))) Err bitreich.org 70 i- finally (return (values noctets i)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-code-point-counter :gbk (getter type) Err bitreich.org 70 i- `(lambda (seq start end max) Err bitreich.org 70 i- (declare (type ,type seq)) Err bitreich.org 70 i- (let (u1 (noctets 0)) Err bitreich.org 70 i- (loop with i = start Err bitreich.org 70 i- while (< i end) Err bitreich.org 70 i- do (setf u1 (,getter seq i)) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((eq 0 (logand u1 #x80)) (incf i)) Err bitreich.org 70 i- (t (incf i 2))) Err bitreich.org 70 i- (incf noctets) Err bitreich.org 70 i- (when (and (plusp max) (= noctets max)) Err bitreich.org 70 i- (return (values noctets i))) Err bitreich.org 70 i- finally (return (values noctets i)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-encoder :gbk (getter src-type setter dest-type) Err bitreich.org 70 i- `(lambda (src start end dest d-start) Err bitreich.org 70 i- (declare (type ,src-type src) Err bitreich.org 70 i- (type ,dest-type dest) Err bitreich.org 70 i- (fixnum start end d-start)) Err bitreich.org 70 i- (macrolet Err bitreich.org 70 i- ((do-encoding (index) Err bitreich.org 70 i- `(let ((u1 0) (u2 0)) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((<= +gbk2-offset+ ,index (- +gbk3-offset+ 1)) ; gbk/2 Err bitreich.org 70 i- (setf u1 (+ #xB0 (truncate (/ ,index 94)))) Err bitreich.org 70 i- (setf u2 (+ #xA1 (mod ,index 94)))) Err bitreich.org 70 i- ((<= +gbk3-offset+ ,index (- +gbk4-offset+ 1)) ; gbk/3 Err bitreich.org 70 i- (setf index (- ,index +gbk3-offset+)) Err bitreich.org 70 i- (setf u1 (+ #x81 (truncate (/ ,index 190)))) Err bitreich.org 70 i- (setf u2 (+ #x40 (mod ,index 190))) Err bitreich.org 70 i- (if (>= u2 #x7F) (incf u2))) Err bitreich.org 70 i- ((<= +gbk4-offset+ ,index (- +gbk1-offset+ 1)) ; gbk/4 Err bitreich.org 70 i- (setf index (- ,index +gbk4-offset+)) Err bitreich.org 70 i- (setf u1 (+ #xAA (truncate (/ ,index 96)))) Err bitreich.org 70 i- (setf u2 (+ #x40 (mod ,index 96))) Err bitreich.org 70 i- (if (>= u2 #x7F) (incf u2))) Err bitreich.org 70 i- ((<= +gbk1-offset+ ,index (- +gbk5-offset+ 1)) ; gbk/1 Err bitreich.org 70 i- (setf index (- ,index +gbk1-offset+)) Err bitreich.org 70 i- (setf u1 (+ #xA1 (truncate (/ ,index 94)))) Err bitreich.org 70 i- (setf u2 (+ #xA1 (mod ,index 94)))) Err bitreich.org 70 i- ((<= +gbk5-offset+ ,index (length *gbk-unicode-mapping*)) ; gbk/5 Err bitreich.org 70 i- (setf index (- ,index +gbk5-offset+)) Err bitreich.org 70 i- (setf u1 (+ #xA8 (truncate (/ ,index 96)))) Err bitreich.org 70 i- (setf u2 (+ #x40 (mod ,index 96))) Err bitreich.org 70 i- (if (>= u2 #x7F) (incf u2)))) Err bitreich.org 70 i- (values u1 u2)))) Err bitreich.org 70 i- (let ((c 0) index (noctets 0)) Err bitreich.org 70 i- (loop for i from start below end Err bitreich.org 70 i- for code of-type code-point = (,getter src i) Err bitreich.org 70 i- do (macrolet Err bitreich.org 70 i- ((handle-error (&optional (c 'character-encoding-error)) Err bitreich.org 70 i- `(encoding-error code :gbk src i +repl+ ',c))) Err bitreich.org 70 i- (setf c (code-char code)) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((< code #x80) ; ascii Err bitreich.org 70 i- (,setter code dest noctets) Err bitreich.org 70 i- (incf noctets)) Err bitreich.org 70 i- (t ; gbk Err bitreich.org 70 i- (setf index Err bitreich.org 70 i- (position c *gbk-unicode-mapping*)) Err bitreich.org 70 i- Err bitreich.org 70 i- (if (not index) Err bitreich.org 70 i- (handle-error invalid-gbk-character)) Err bitreich.org 70 i- (multiple-value-bind (uh ul) (do-encoding index) Err bitreich.org 70 i- (,setter uh dest noctets) Err bitreich.org 70 i- (,setter ul dest (+ 1 noctets)) Err bitreich.org 70 i- (incf noctets 2))))) Err bitreich.org 70 i- finally (return (the fixnum (- noctets d-start)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-decoder :gbk (getter src-type setter dest-type) Err bitreich.org 70 i- `(lambda (src start end dest d-start) Err bitreich.org 70 i- (declare (type ,src-type src) Err bitreich.org 70 i- (type ,dest-type dest)) Err bitreich.org 70 i- (let ((u1 0) (u2 0) (index 0) (tmp 0) (noctets 0)) Err bitreich.org 70 i- (loop with i = start Err bitreich.org 70 i- while (< i end) Err bitreich.org 70 i- do (macrolet Err bitreich.org 70 i- ((handle-error (&optional (c 'character-decoding-error)) Err bitreich.org 70 i- `(decoding-error #(u1 u2) :gbk src i +repl+ ',c))) Err bitreich.org 70 i- (setf u1 (,getter src i)) Err bitreich.org 70 i- (incf i) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((eq 0 (logand u1 #x80)) Err bitreich.org 70 i- (,setter u1 dest noctets)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (setf u2 (,getter src i)) Err bitreich.org 70 i- (incf i) Err bitreich.org 70 i- (setf index Err bitreich.org 70 i- (block setter-block Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((and (<= #xB0 u1 #xF7) (<= #xA1 u2 #xFE)) Err bitreich.org 70 i- (+ +gbk2-offset+ (+ (* 94 (- u1 #xB0)) (- u2 #xA1)))) Err bitreich.org 70 i- Err bitreich.org 70 i- ((and (<= #x81 u1 #xA0) (<= #x40 u2 #xFE)) Err bitreich.org 70 i- (cond ((> u2 #x7F) (setf tmp 1)) Err bitreich.org 70 i- (t (setf tmp 0))) Err bitreich.org 70 i- (+ +gbk3-offset+ (* 190 (- u1 #x81)) (- u2 #x40 tmp))) Err bitreich.org 70 i- Err bitreich.org 70 i- ((and (<= #xAA u1 #xFE) (<= #x40 #xA0)) Err bitreich.org 70 i- (cond ((> u2 #x7F) (setf tmp 1)) Err bitreich.org 70 i- (t (setf tmp 0))) Err bitreich.org 70 i- (+ +gbk4-offset+ (* 96 (- u1 #xAA)) (- u2 #x40 tmp))) Err bitreich.org 70 i- Err bitreich.org 70 i- ((and (<= #xA1 u1 #xA9) (<= #xA1 u2 #xFE)) Err bitreich.org 70 i- (+ +gbk1-offset+ (* 94 (- u1 #xA1)) (- u2 #xA1))) Err bitreich.org 70 i- Err bitreich.org 70 i- ((and (<= #xA8 u1 #xA9) (<= #x40 #xA0)) Err bitreich.org 70 i- (cond ((> u2 #x7F) (setf tmp 1)) Err bitreich.org 70 i- (t (setf tmp 0))) Err bitreich.org 70 i- (+ +gbk5-offset+ (* 96 (- u1 #xA8)) (- u2 #x40 tmp))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (handle-error invalid-gbk-byte))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (when (>= index (length *gbk-unicode-mapping*)) Err bitreich.org 70 i- (handle-error invalid-gbk-byte)) Err bitreich.org 70 i- (,setter (char-code Err bitreich.org 70 i- (elt *gbk-unicode-mapping* index)) Err bitreich.org 70 i- dest noctets))) Err bitreich.org 70 i- (incf noctets)) Err bitreich.org 70 i- finally (return (the fixnum (- noctets d-start))))))) Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/src/enc-iso-8859.lisp b/3rdparties/software/babel-20171227-git/src/enc-iso-8859.lisp /scm/clic/file/3rdparties/software/babel-20171227-git/src/enc-iso-8859.lisp.gph bitreich.org 70 i@@ -1,1087 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; enc-iso-8859.lisp --- ISO-8859-* encodings. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; This implementation is largely based on OpenMCL's l1-unicode.lisp Err bitreich.org 70 i-;;; Copyright (C) 2006 Clozure Associates and contributors. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:babel-encodings) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Typically, ISO-8859-* codes in the range #x00-#x9f map straight Err bitreich.org 70 i-;;; through, while codes #xa0-#xff select arbitrary Unicode characters Err bitreich.org 70 i-;;; that are commonly used in some locale. (Sometimes the break is at Err bitreich.org 70 i-;;; #x80 instead of #xa0). Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; (comment from OpenMCL's ccl/level-1/l1-unicode.lisp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :iso-8859-1 Err bitreich.org 70 i- "An 8-bit, fixed-width character encoding in which all Err bitreich.org 70 i-character codes map to their Unicode equivalents. Intended to Err bitreich.org 70 i-support most characters used in most Western European languages." Err bitreich.org 70 i- :aliases '(:latin-1 :latin1) Err bitreich.org 70 i- :literal-char-code-limit 256) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-encoder :iso-8859-1 (code) Err bitreich.org 70 i- (if (>= code 256) Err bitreich.org 70 i- (handle-error) Err bitreich.org 70 i- code)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-decoder :iso-8859-1 (octet) Err bitreich.org 70 i- octet) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :iso-8859-2 Err bitreich.org 70 i- "An 8-bit, fixed-width character encoding in which codes Err bitreich.org 70 i-#x00-#x9f map to their Unicode equivalents and other codes map to Err bitreich.org 70 i-other Unicode character values. Intended to provide most Err bitreich.org 70 i-characters found in most languages used in Central/Eastern Err bitreich.org 70 i-Europe." Err bitreich.org 70 i- :aliases '(:latin-2 :latin2) Err bitreich.org 70 i- :literal-char-code-limit #xa0) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-00a0-0180-to-iso-8859-2+ Err bitreich.org 70 i- #(#xa0 nil nil nil #xa4 nil nil #xa7 ; #xa0-#xa7 Err bitreich.org 70 i- #xa8 nil nil nil nil #xad nil nil ; #xa8-#xaf Err bitreich.org 70 i- #xb0 nil nil nil #xb4 nil nil nil ; #xb0-#xb7 Err bitreich.org 70 i- #xb8 nil nil nil nil nil nil nil ; #xb8-#xbf Err bitreich.org 70 i- nil #xc1 #xc2 nil #xc4 nil nil #xc7 ; #xc0-#xc7 Err bitreich.org 70 i- nil #xc9 nil #xcb nil #xcd #xce nil ; #xc8-#xcf Err bitreich.org 70 i- nil nil nil #xd3 #xd4 nil #xd6 #xd7 ; #xd0-#xd7 Err bitreich.org 70 i- nil nil #xda nil #xdc #xdd nil #xdf ; #xd8-#xdf Err bitreich.org 70 i- nil #xe1 #xe2 nil #xe4 nil nil #xe7 ; #xe0-#xe7 Err bitreich.org 70 i- nil #xe9 nil #xeb nil #xed #xee nil ; #xe8-#xef Err bitreich.org 70 i- nil nil nil #xf3 #xf4 nil #xf6 #xf7 ; #xf0-#xf7 Err bitreich.org 70 i- nil nil #xfa nil #xfc #xfd nil nil ; #xf8-#xff Err bitreich.org 70 i- ;; #x0100 Err bitreich.org 70 i- nil nil #xc3 #xe3 #xa1 #xb1 #xc6 #xe6 ; #x100-#x107 Err bitreich.org 70 i- nil nil nil nil #xc8 #xe8 #xcf #xef ; #x108-#x10f Err bitreich.org 70 i- #xd0 #xf0 nil nil nil nil nil nil ; #x110-#x117 Err bitreich.org 70 i- #xca #xea #xcc #xec nil nil nil nil ; #x118-#x11f Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x120-#x127 Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x128-#x12f Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x130-#x137 Err bitreich.org 70 i- nil #xc5 #xe5 nil nil #xa5 #xb5 nil ; #x138-#x13f Err bitreich.org 70 i- nil #xa3 #xb3 #xd1 #xf1 nil nil #xd2 ; #x140-#x147 Err bitreich.org 70 i- #xf2 nil nil nil nil nil nil nil ; #x148-#x14f Err bitreich.org 70 i- #xd5 #xf5 nil nil #xc0 #xe0 nil nil ; #x150-#x157 Err bitreich.org 70 i- #xd8 #xf8 #xa6 #xb6 nil nil #xaa #xba ; #x158-#x15f Err bitreich.org 70 i- #xa9 #xb9 #xde #xfe #xab #xbb nil nil ; #x160-#x167 Err bitreich.org 70 i- nil nil nil nil nil nil #xd9 #xf9 ; #x168-#x16f Err bitreich.org 70 i- #xdb #xfb nil nil nil nil nil nil ; #x170-#x177 Err bitreich.org 70 i- nil #xac #xbc #xaf #xbf #xae #xbe nil) ; #x178-#x17f Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-02c0-02e0-to-iso-8859-2+ Err bitreich.org 70 i- #(nil nil nil nil nil nil nil #xb7 ; #x2c0-#x2c7 Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x2c8-#x2cf Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x2d0-#x2d7 Err bitreich.org 70 i- #xa2 #xff nil #xb2 nil #xbd nil nil) ; #x2d8-#x2df Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-encoder :iso-8859-2 (code) Err bitreich.org 70 i- (or (cond ((< code #xa0) code) Err bitreich.org 70 i- ((< code #x180) Err bitreich.org 70 i- (svref +unicode-00a0-0180-to-iso-8859-2+ Err bitreich.org 70 i- (the ub8 (- code #xa0)))) Err bitreich.org 70 i- ((<= #x2c0 code #x2df) Err bitreich.org 70 i- (svref +unicode-02c0-02e0-to-iso-8859-2+ Err bitreich.org 70 i- (the ub8 (- code #x2c0))))) Err bitreich.org 70 i- (handle-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +iso-8859-2-to-unicode+ Err bitreich.org 70 i- #(;; #xa0 Err bitreich.org 70 i- #x00a0 #x0104 #x02d8 #x0141 #x00a4 #x013d #x015a #x00a7 Err bitreich.org 70 i- #x00a8 #x0160 #x015e #x0164 #x0179 #x00ad #x017d #x017b Err bitreich.org 70 i- ;; #xb0 Err bitreich.org 70 i- #x00b0 #x0105 #x02db #x0142 #x00b4 #x013e #x015b #x02c7 Err bitreich.org 70 i- #x00b8 #x0161 #x015f #x0165 #x017a #x02dd #x017e #x017c Err bitreich.org 70 i- ;; #xc0 Err bitreich.org 70 i- #x0154 #x00c1 #x00c2 #x0102 #x00c4 #x0139 #x0106 #x00c7 Err bitreich.org 70 i- #x010c #x00c9 #x0118 #x00cb #x011a #x00cd #x00ce #x010e Err bitreich.org 70 i- ;; #xd0 Err bitreich.org 70 i- #x0110 #x0143 #x0147 #x00d3 #x00d4 #x0150 #x00d6 #x00d7 Err bitreich.org 70 i- #x0158 #x016e #x00da #x0170 #x00dc #x00dd #x0162 #x00df Err bitreich.org 70 i- ;; #xe0 Err bitreich.org 70 i- #x0155 #x00e1 #x00e2 #x0103 #x00e4 #x013a #x0107 #x00e7 Err bitreich.org 70 i- #x010d #x00e9 #x0119 #x00eb #x011b #x00ed #x00ee #x010f Err bitreich.org 70 i- ;; #xf0 Err bitreich.org 70 i- #x0111 #x0144 #x0148 #x00f3 #x00f4 #x0151 #x00f6 #x00f7 Err bitreich.org 70 i- #x0159 #x016f #x00fa #x0171 #x00fc #x00fd #x0163 #x02d9) Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-decoder :iso-8859-2 (octet) Err bitreich.org 70 i- (if (< octet #xa0) Err bitreich.org 70 i- octet Err bitreich.org 70 i- (svref +iso-8859-2-to-unicode+ (the ub8 (- octet #xa0))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :iso-8859-3 Err bitreich.org 70 i- "An 8-bit, fixed-width character encoding in which codes Err bitreich.org 70 i-#x00-#x9f map to their Unicode equivalents and other codes map to Err bitreich.org 70 i-other Unicode character values. Intended to provide most Err bitreich.org 70 i-characters found in most languages used in Southern Europe." Err bitreich.org 70 i- :aliases '(:latin-3 :latin3) Err bitreich.org 70 i- :literal-char-code-limit #xa0) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-a0-100-to-iso-8859-3+ Err bitreich.org 70 i- #(#xa0 nil nil #xa3 #xa4 nil nil #xa7 ; #xa0-#xa7 Err bitreich.org 70 i- #xa8 nil nil nil nil #xad nil nil ; #xa8-#xaf Err bitreich.org 70 i- #xb0 nil #xb2 #xb3 #xb4 #xb5 nil #xb7 ; #xb0-#xb7 Err bitreich.org 70 i- #xb8 nil nil nil nil #xbd nil nil ; #xb8-#xbf Err bitreich.org 70 i- #xc0 #xc1 #xc2 nil #xc4 nil nil #xc7 ; #xc0-#xc7 Err bitreich.org 70 i- #xc8 #xc9 #xca #xcb #xcc #xcd #xce #xcf ; #xc8-#xcf Err bitreich.org 70 i- nil #xd1 #xd2 #xd3 #xd4 nil #xd6 #xd7 ; #xd0-#xd7 Err bitreich.org 70 i- nil #xd9 #xda #xdb #xdc nil nil #xdf ; #xd8-#xdf Err bitreich.org 70 i- #xe0 #xe1 #xe2 nil #xe4 nil nil #xe7 ; #xe0-#xe7 Err bitreich.org 70 i- #xe8 #xe9 #xea #xeb #xec #xed #xee #xef ; #xe8-#xef Err bitreich.org 70 i- nil #xf1 #xf2 #xf3 #xf4 nil #xf6 #xf7 ; #xf0-#xf7 Err bitreich.org 70 i- nil #xf9 #xfa #xfb #xfc nil nil nil) ; #xf8-#xff Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-108-180-to-iso-8859-3+ Err bitreich.org 70 i- #(#xc6 #xe6 #xc5 #xe5 #x00 #x00 #x00 #x00 ; #x108-#x10f Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x110-#x117 Err bitreich.org 70 i- nil nil nil nil #xd8 #xf8 #xab #xbb ; #x118-#x11f Err bitreich.org 70 i- #xd5 #xf5 nil nil #xa6 #xb6 #xa1 #xb1 ; #x120-#x127 Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x128-#x12f Err bitreich.org 70 i- #xa9 #xb9 nil nil #xac #xbc nil nil ; #x130-#x137 Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x138-#x13f Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x140-#x147 Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x148-#x14f Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x150-#x157 Err bitreich.org 70 i- nil nil nil nil #xde #xfe #xaa #xba ; #x158-#x15f Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x160-#x167 Err bitreich.org 70 i- nil nil nil nil #xdd #xfd nil nil ; #x168-#x16f Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x170-#x177 Err bitreich.org 70 i- nil nil nil #xaf #xbf nil nil nil) ; #x178-#x17f Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-2d8-2e0-to-iso-8859-3+ Err bitreich.org 70 i- #(#xa2 #xff nil nil nil nil nil nil) ; #x2d8-#x2df Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-encoder :iso-8859-3 (code) Err bitreich.org 70 i- (or (cond ((< code #xa0) code) Err bitreich.org 70 i- ((< code #x100) Err bitreich.org 70 i- (svref +unicode-a0-100-to-iso-8859-3+ Err bitreich.org 70 i- (the ub8 (- code #xa0)))) Err bitreich.org 70 i- ((<= #x108 code #x17f) Err bitreich.org 70 i- (svref +unicode-108-180-to-iso-8859-3+ Err bitreich.org 70 i- (the ub8 (- code #x108)))) Err bitreich.org 70 i- ((<= #x2d8 code #x2df) Err bitreich.org 70 i- (svref +unicode-2d8-2e0-to-iso-8859-3+ Err bitreich.org 70 i- (the ub8 (- code #x2d8))))) Err bitreich.org 70 i- (handle-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +iso-8859-3-to-unicode+ Err bitreich.org 70 i- #(;; #xa0 Err bitreich.org 70 i- #x00a0 #x0126 #x02d8 #x00a3 #x00a4 #xfffd #x0124 #x00a7 Err bitreich.org 70 i- #x00a8 #x0130 #x015e #x011e #x0134 #x00ad #xfffd #x017b Err bitreich.org 70 i- ;; #xb0 Err bitreich.org 70 i- #x00b0 #x0127 #x00b2 #x00b3 #x00b4 #x00b5 #x0125 #x00b7 Err bitreich.org 70 i- #x00b8 #x0131 #x015f #x011f #x0135 #x00bd #xfffd #x017c Err bitreich.org 70 i- ;; #xc0 Err bitreich.org 70 i- #x00c0 #x00c1 #x00c2 #xfffd #x00c4 #x010a #x0108 #x00c7 Err bitreich.org 70 i- #x00c8 #x00c9 #x00ca #x00cb #x00cc #x00cd #x00ce #x00cf Err bitreich.org 70 i- ;; #xd0 Err bitreich.org 70 i- #xfffd #x00d1 #x00d2 #x00d3 #x00d4 #x0120 #x00d6 #x00d7 Err bitreich.org 70 i- #x011c #x00d9 #x00da #x00db #x00dc #x016c #x015c #x00df Err bitreich.org 70 i- ;; #xe0 Err bitreich.org 70 i- #x00e0 #x00e1 #x00e2 #xfffd #x00e4 #x010b #x0109 #x00e7 Err bitreich.org 70 i- #x00e8 #x00e9 #x00ea #x00eb #x00ec #x00ed #x00ee #x00ef Err bitreich.org 70 i- ;; #xf0 Err bitreich.org 70 i- #xfffd #x00f1 #x00f2 #x00f3 #x00f4 #x0121 #x00f6 #x00f7 Err bitreich.org 70 i- #x011d #x00f9 #x00fa #x00fb #x00fc #x016d #x015d #x02d9) Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-decoder :iso-8859-3 (octet) Err bitreich.org 70 i- (if (< octet #xa0) Err bitreich.org 70 i- octet Err bitreich.org 70 i- (svref +iso-8859-3-to-unicode+ (the ub8 (- octet #xa0))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :iso-8859-4 Err bitreich.org 70 i- "An 8-bit, fixed-width character encoding in which codes Err bitreich.org 70 i-#x00-#x9f map to their Unicode equivalents and other codes map to Err bitreich.org 70 i-other Unicode character values. Intended to provide most Err bitreich.org 70 i-characters found in most languages used in Northern Europe." Err bitreich.org 70 i- :aliases '(:latin-4 :latin4) Err bitreich.org 70 i- :literal-char-code-limit #xa0) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-a0-180-to-iso-8859-4+ Err bitreich.org 70 i- #(#xa0 nil nil nil #xa4 nil nil #xa7 ; #xa0-#xa7 Err bitreich.org 70 i- #xa8 nil nil nil nil #xad nil #xaf ; #xa8-#xaf Err bitreich.org 70 i- #xb0 nil nil nil #xb4 nil nil nil ; #xb0-#xb7 Err bitreich.org 70 i- #xb8 nil nil nil nil nil nil nil ; #xb8-#xbf Err bitreich.org 70 i- nil #xc1 #xc2 #xc3 #xc4 #xc5 #xc6 nil ; #xc0-#xc7 Err bitreich.org 70 i- nil #xc9 nil #xcb nil #xcd #xce nil ; #xc8-#xcf Err bitreich.org 70 i- nil nil nil nil #xd4 #xd5 #xd6 #xd7 ; #xd0-#xd7 Err bitreich.org 70 i- #xd8 nil #xda #xdb #xdc nil nil #xdf ; #xd8-#xdf Err bitreich.org 70 i- nil #xe1 #xe2 #xe3 #xe4 #xe5 #xe6 nil ; #xe0-#xe7 Err bitreich.org 70 i- nil #xe9 nil #xeb nil #xed #xee nil ; #xe8-#xef Err bitreich.org 70 i- nil nil nil nil #xf4 #xf5 #xf6 #xf7 ; #xf0-#xf7 Err bitreich.org 70 i- #xf8 nil #xfa #xfb #xfc nil nil nil ; #xf8-#xff Err bitreich.org 70 i- #xc0 #xe0 nil nil #xa1 #xb1 nil nil ; #x100-#x107 Err bitreich.org 70 i- nil nil nil nil #xc8 #xe8 nil nil ; #x108-#x10f Err bitreich.org 70 i- #xd0 #xf0 #xaa #xba nil nil #xcc #xec ; #x110-#x117 Err bitreich.org 70 i- #xca #xea nil nil nil nil nil nil ; #x118-#x11f Err bitreich.org 70 i- nil nil #xab #xbb nil nil nil nil ; #x120-#x127 Err bitreich.org 70 i- #xa5 #xb5 #xcf #xef nil nil #xc7 #xe7 ; #x128-#x12f Err bitreich.org 70 i- nil nil nil nil nil nil #xd3 #xf3 ; #x130-#x137 Err bitreich.org 70 i- #xa2 nil nil #xa6 #xb6 nil nil nil ; #x138-#x13f Err bitreich.org 70 i- nil nil nil nil nil #xd1 #xf1 nil ; #x140-#x147 Err bitreich.org 70 i- nil nil #xbd #xbf #xd2 #xf2 nil nil ; #x148-#x14f Err bitreich.org 70 i- nil nil nil nil nil nil #xa3 #xb3 ; #x150-#x157 Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x158-#x15f Err bitreich.org 70 i- #xa9 #xb9 nil nil nil nil #xac #xbc ; #x160-#x167 Err bitreich.org 70 i- #xdd #xfd #xde #xfe nil nil nil nil ; #x168-#x16f Err bitreich.org 70 i- nil nil #xd9 #xf9 nil nil nil nil ; #x170-#x177 Err bitreich.org 70 i- nil nil nil nil nil #xae #xbe nil) ; #x178-#x17f Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-2c0-2e0-to-iso-8859-4+ Err bitreich.org 70 i- #(nil nil nil nil nil nil nil #xb7 ; #x2c0-#x2c7 Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x2c8-#x2cf Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x2d0-#x2d7 Err bitreich.org 70 i- nil #xff nil #xb2 nil nil nil nil) ; #x2d8-#x2df Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-encoder :iso-8859-4 (code) Err bitreich.org 70 i- (or (cond ((< code #xa0) code) Err bitreich.org 70 i- ((< code #x180) Err bitreich.org 70 i- (svref +unicode-a0-180-to-iso-8859-4+ Err bitreich.org 70 i- (the ub8 (- code #xa0)))) Err bitreich.org 70 i- ((<= #x2c0 code #x2df) Err bitreich.org 70 i- (svref +unicode-2c0-2e0-to-iso-8859-4+ Err bitreich.org 70 i- (the ub8 (- code #x2c0))))) Err bitreich.org 70 i- (handle-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +iso-8859-4-to-unicode+ Err bitreich.org 70 i- #(;; #xa0 Err bitreich.org 70 i- #x00a0 #x0104 #x0138 #x0156 #x00a4 #x0128 #x013b #x00a7 Err bitreich.org 70 i- #x00a8 #x0160 #x0112 #x0122 #x0166 #x00ad #x017d #x00af Err bitreich.org 70 i- ;; #xb0 Err bitreich.org 70 i- #x00b0 #x0105 #x02db #x0157 #x00b4 #x0129 #x013c #x02c7 Err bitreich.org 70 i- #x00b8 #x0161 #x0113 #x0123 #x0167 #x014a #x017e #x014b Err bitreich.org 70 i- ;; #xc0 Err bitreich.org 70 i- #x0100 #x00c1 #x00c2 #x00c3 #x00c4 #x00c5 #x00c6 #x012e Err bitreich.org 70 i- #x010c #x00c9 #x0118 #x00cb #x0116 #x00cd #x00ce #x012a Err bitreich.org 70 i- ;; #xd0 Err bitreich.org 70 i- #x0110 #x0145 #x014c #x0136 #x00d4 #x00d5 #x00d6 #x00d7 Err bitreich.org 70 i- #x00d8 #x0172 #x00da #x00db #x00dc #x0168 #x016a #x00df Err bitreich.org 70 i- ;; #xe0 Err bitreich.org 70 i- #x0101 #x00e1 #x00e2 #x00e3 #x00e4 #x00e5 #x00e6 #x012f Err bitreich.org 70 i- #x010d #x00e9 #x0119 #x00eb #x0117 #x00ed #x00ee #x012b Err bitreich.org 70 i- ;; #xf0 Err bitreich.org 70 i- #x0111 #x0146 #x014d #x0137 #x00f4 #x00f5 #x00f6 #x00f7 Err bitreich.org 70 i- #x00f8 #x0173 #x00fa #x00fb #x00fc #x0169 #x016b #x02d9) Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-decoder :iso-8859-4 (octet) Err bitreich.org 70 i- (if (< octet #xa0) Err bitreich.org 70 i- octet Err bitreich.org 70 i- (svref +iso-8859-4-to-unicode+ (the ub8 (- octet #xa0))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :iso-8859-5 Err bitreich.org 70 i- "An 8-bit, fixed-width character encoding in which codes Err bitreich.org 70 i-#x00-#x9f map to their Unicode equivalents and other codes map to Err bitreich.org 70 i-other Unicode character values. Intended to provide most Err bitreich.org 70 i-characters found in the Cyrillic alphabet." Err bitreich.org 70 i- :aliases '(:cyrillic) Err bitreich.org 70 i- :literal-char-code-limit #xa0) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-a0-b0-to-iso-8859-5+ Err bitreich.org 70 i- #(#xa0 nil nil nil nil nil nil #xfd ; #xa0-#xa7 Err bitreich.org 70 i- nil nil nil nil nil #xad nil nil) ; #xa8-#xaf Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-400-460-to-iso-8859-5+ Err bitreich.org 70 i- #(nil #xa1 #xa2 #xa3 #xa4 #xa5 #xa6 #xa7 ; #x400-#x407 Err bitreich.org 70 i- #xa8 #xa9 #xaa #xab #xac nil #xae #xaf ; #x408-#x40f Err bitreich.org 70 i- #xb0 #xb1 #xb2 #xb3 #xb4 #xb5 #xb6 #xb7 ; #x410-#x417 Err bitreich.org 70 i- #xb8 #xb9 #xba #xbb #xbc #xbd #xbe #xbf ; #x418-#x41f Err bitreich.org 70 i- #xc0 #xc1 #xc2 #xc3 #xc4 #xc5 #xc6 #xc7 ; #x420-#x427 Err bitreich.org 70 i- #xc8 #xc9 #xca #xcb #xcc #xcd #xce #xcf ; #x428-#x42f Err bitreich.org 70 i- #xd0 #xd1 #xd2 #xd3 #xd4 #xd5 #xd6 #xd7 ; #x430-#x437 Err bitreich.org 70 i- #xd8 #xd9 #xda #xdb #xdc #xdd #xde #xdf ; #x438-#x43f Err bitreich.org 70 i- #xe0 #xe1 #xe2 #xe3 #xe4 #xe5 #xe6 #xe7 ; #x440-#x447 Err bitreich.org 70 i- #xe8 #xe9 #xea #xeb #xec #xed #xee #xef ; #x448-#x44f Err bitreich.org 70 i- nil #xf1 #xf2 #xf3 #xf4 #xf5 #xf6 #xf7 ; #x450-#x457 Err bitreich.org 70 i- #xf8 #xf9 #xfa #xfb #xfc nil #xfe #xff) ; #x458-#x45f Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-encoder :iso-8859-5 (code) Err bitreich.org 70 i- (or (cond ((< code #xa0) code) Err bitreich.org 70 i- ((< code #xb0) Err bitreich.org 70 i- (svref +unicode-a0-b0-to-iso-8859-5+ Err bitreich.org 70 i- (the ub8 (- code #xa0)))) Err bitreich.org 70 i- ((<= #x400 code #x45f) Err bitreich.org 70 i- (svref +unicode-400-460-to-iso-8859-5+ Err bitreich.org 70 i- (the ub8 (- code #x400)))) Err bitreich.org 70 i- ;; the Numero sign Err bitreich.org 70 i- ((= code #x2116) #xf0)) Err bitreich.org 70 i- (handle-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +iso-8859-5-to-unicode+ Err bitreich.org 70 i- #(;; #xa0 Err bitreich.org 70 i- #x00a0 #x0401 #x0402 #x0403 #x0404 #x0405 #x0406 #x0407 Err bitreich.org 70 i- #x0408 #x0409 #x040a #x040b #x040c #x00ad #x040e #x040f Err bitreich.org 70 i- ;; #xb0 Err bitreich.org 70 i- #x0410 #x0411 #x0412 #x0413 #x0414 #x0415 #x0416 #x0417 Err bitreich.org 70 i- #x0418 #x0419 #x041a #x041b #x041c #x041d #x041e #x041f Err bitreich.org 70 i- ;; #xc0 Err bitreich.org 70 i- #x0420 #x0421 #x0422 #x0423 #x0424 #x0425 #x0426 #x0427 Err bitreich.org 70 i- #x0428 #x0429 #x042a #x042b #x042c #x042d #x042e #x042f Err bitreich.org 70 i- ;; #xd0 Err bitreich.org 70 i- #x0430 #x0431 #x0432 #x0433 #x0434 #x0435 #x0436 #x0437 Err bitreich.org 70 i- #x0438 #x0439 #x043a #x043b #x043c #x043d #x043e #x043f Err bitreich.org 70 i- ;; #xe0 Err bitreich.org 70 i- #x0440 #x0441 #x0442 #x0443 #x0444 #x0445 #x0446 #x0447 Err bitreich.org 70 i- #x0448 #x0449 #x044a #x044b #x044c #x044d #x044e #x044f Err bitreich.org 70 i- ;; #xf0 Err bitreich.org 70 i- #x2116 #x0451 #x0452 #x0453 #x0454 #x0455 #x0456 #x0457 Err bitreich.org 70 i- #x0458 #x0459 #x045a #x045b #x045c #x00a7 #x045e #x045f) Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-decoder :iso-8859-5 (octet) Err bitreich.org 70 i- (if (< octet #xa0) Err bitreich.org 70 i- octet Err bitreich.org 70 i- (svref +iso-8859-5-to-unicode+ (the ub8 (- octet #xa0))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :iso-8859-6 Err bitreich.org 70 i- "An 8-bit, fixed-width character encoding in which codes #x00-#x9f Err bitreich.org 70 i-map to their Unicode equivalents and other codes map to other Unicode Err bitreich.org 70 i-character values. Intended to provide most characters found in the Err bitreich.org 70 i-Arabic alphabet." Err bitreich.org 70 i- :aliases '(:arabic) Err bitreich.org 70 i- :literal-char-code-limit #xa0) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-a0-b0-to-iso-8859-6+ Err bitreich.org 70 i- #(#xa0 nil nil nil #xa4 nil nil nil ; #xa0-#xa7 Err bitreich.org 70 i- nil nil nil nil nil #xad nil nil) ; #xa8-#xaf Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-608-658-to-iso-8859-6+ Err bitreich.org 70 i- #(nil nil nil nil #xac nil nil nil ; #x608-#x60f Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x610-#x617 Err bitreich.org 70 i- nil nil nil #xbb nil nil nil #xbf ; #x618-#x61f Err bitreich.org 70 i- nil #xc1 #xc2 #xc3 #xc4 #xc5 #xc6 #xc7 ; #x620-#x627 Err bitreich.org 70 i- #xc8 #xc9 #xca #xcb #xcc #xcd #xce #xcf ; #x628-#x62f Err bitreich.org 70 i- #xd0 #xd1 #xd2 #xd3 #xd4 #xd5 #xd6 #xd7 ; #x630-#x637 Err bitreich.org 70 i- #xd8 #xd9 #xda nil nil nil nil nil ; #x638-#x63f Err bitreich.org 70 i- #xe0 #xe1 #xe2 #xe3 #xe4 #xe5 #xe6 #xe7 ; #x640-#x647 Err bitreich.org 70 i- #xe8 #xe9 #xea #xeb #xec #xed #xee #xef ; #x648-#x64f Err bitreich.org 70 i- #xf0 #xf1 #xf2 nil nil nil nil nil) ; #x650-#x657 Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-encoder :iso-8859-6 (code) Err bitreich.org 70 i- (or (cond ((< code #xa0) code) Err bitreich.org 70 i- ((< code #xb0) Err bitreich.org 70 i- (svref +unicode-a0-b0-to-iso-8859-6+ Err bitreich.org 70 i- (the ub8 (- code #xa0)))) Err bitreich.org 70 i- ((<= #x608 code #x657) Err bitreich.org 70 i- (svref +unicode-608-658-to-iso-8859-6+ Err bitreich.org 70 i- (the ub8 (- code #x608))))) Err bitreich.org 70 i- (handle-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +iso-8859-6-to-unicode+ Err bitreich.org 70 i- #(;; #xa0 Err bitreich.org 70 i- #x00a0 #xfffd #xfffd #xfffd #x00a4 #xfffd #xfffd #xfffd Err bitreich.org 70 i- #xfffd #xfffd #xfffd #xfffd #x060c #x00ad #xfffd #xfffd Err bitreich.org 70 i- ;; #xb0 Err bitreich.org 70 i- #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd Err bitreich.org 70 i- #xfffd #xfffd #xfffd #x061b #xfffd #xfffd #xfffd #x061f Err bitreich.org 70 i- ;; #xc0 Err bitreich.org 70 i- #xfffd #x0621 #x0622 #x0623 #x0624 #x0625 #x0626 #x0627 Err bitreich.org 70 i- #x0628 #x0629 #x062a #x062b #x062c #x062d #x062e #x062f Err bitreich.org 70 i- ;; #xd0 Err bitreich.org 70 i- #x0630 #x0631 #x0632 #x0633 #x0634 #x0635 #x0636 #x0637 Err bitreich.org 70 i- #x0638 #x0639 #x063a #xfffd #xfffd #xfffd #xfffd #xfffd Err bitreich.org 70 i- ;; #xe0 Err bitreich.org 70 i- #x0640 #x0641 #x0642 #x0643 #x0644 #x0645 #x0646 #x0647 Err bitreich.org 70 i- #x0648 #x0649 #x064a #x064b #x064c #x064d #x064e #x064f Err bitreich.org 70 i- ;; #xf0 Err bitreich.org 70 i- #x0650 #x0651 #x0652 #xfffd #xfffd #xfffd #xfffd #xfffd Err bitreich.org 70 i- #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd) Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-decoder :iso-8859-6 (octet) Err bitreich.org 70 i- (if (< octet #xa0) Err bitreich.org 70 i- octet Err bitreich.org 70 i- (svref +iso-8859-6-to-unicode+ (the ub8 (- octet #xa0))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :iso-8859-7 Err bitreich.org 70 i- "An 8-bit, fixed-width character encoding in which codes Err bitreich.org 70 i-#x00-#x9f map to their Unicode equivalents and other codes map to Err bitreich.org 70 i-other Unicode character values. Intended to provide most Err bitreich.org 70 i-characters found in the Greek alphabet." Err bitreich.org 70 i- :aliases '(:greek) Err bitreich.org 70 i- :literal-char-code-limit #xa0) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-a0-c0-to-iso-8859-7+ Err bitreich.org 70 i- #(#xa0 nil nil #xa3 nil nil #xa6 #xa7 ; #xa0-#xa7 Err bitreich.org 70 i- #xa8 #xa9 nil #xab #xac #xad nil nil ; #xa8-#xaf Err bitreich.org 70 i- #xb0 #xb1 #xb2 #xb3 nil nil nil #xb7 ; #xb0-#xb7 Err bitreich.org 70 i- nil nil nil #xbb nil #xbd nil nil) ; #xb8-#xbf Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-378-3d0-to-iso-8859-7+ Err bitreich.org 70 i- #(nil nil #xaa nil nil nil nil nil ; #x378-#x37f Err bitreich.org 70 i- nil nil nil nil #xb4 #xb5 #xb6 nil ; #x380-#x387 Err bitreich.org 70 i- #xb8 #xb9 #xba nil #xbc nil #xbe #xbf ; #x388-#x38f Err bitreich.org 70 i- #xc0 #xc1 #xc2 #xc3 #xc4 #xc5 #xc6 #xc7 ; #x390-#x397 Err bitreich.org 70 i- #xc8 #xc9 #xca #xcb #xcc #xcd #xce #xcf ; #x398-#x39f Err bitreich.org 70 i- #xd0 #xd1 nil #xd3 #xd4 #xd5 #xd6 #xd7 ; #x3a0-#x3a7 Err bitreich.org 70 i- #xd8 #xd9 #xda #xdb #xdc #xdd #xde #xdf ; #x3a8-#x3af Err bitreich.org 70 i- #xe0 #xe1 #xe2 #xe3 #xe4 #xe5 #xe6 #xe7 ; #x3b0-#x3b7 Err bitreich.org 70 i- #xe8 #xe9 #xea #xeb #xec #xed #xee #xef ; #x3b8-#x3bf Err bitreich.org 70 i- #xf0 #xf1 #xf2 #xf3 #xf4 #xf5 #xf6 #xf7 ; #x3c0-#x3c7 Err bitreich.org 70 i- #xf8 #xf9 #xfa #xfb #xfc #xfd #xfe nil) ; #x3c8-#x3cf Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-2010-2020-to-iso-8859-7+ Err bitreich.org 70 i- #(nil nil nil nil nil #xaf nil nil ; #x2010-#x2017 Err bitreich.org 70 i- #xa1 #xa2 nil nil nil nil nil nil) ; #x2018-#x201f Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-20ac-20b0-to-iso-8859-7+ Err bitreich.org 70 i- #(#xa4 nil nil #xa5) Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-encoder :iso-8859-7 (code) Err bitreich.org 70 i- (or (cond ((< code #xa0) code) Err bitreich.org 70 i- ((< code #xc0) Err bitreich.org 70 i- (svref +unicode-a0-c0-to-iso-8859-7+ Err bitreich.org 70 i- (the ub8 (- code #xa0)))) Err bitreich.org 70 i- ((<= #x378 code #x3cf) Err bitreich.org 70 i- (svref +unicode-378-3d0-to-iso-8859-7+ Err bitreich.org 70 i- (the ub8 (- code #x378)))) Err bitreich.org 70 i- ((<= #x2010 code #x201f) Err bitreich.org 70 i- (svref +unicode-2010-2020-to-iso-8859-7+ Err bitreich.org 70 i- (the ub8 (- code #x2010)))) Err bitreich.org 70 i- ((<= #x201c code #x20af) Err bitreich.org 70 i- (svref +unicode-20ac-20b0-to-iso-8859-7+ Err bitreich.org 70 i- (the ub8 (- code #x20ac))))) Err bitreich.org 70 i- (handle-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +iso-8859-7-to-unicode+ Err bitreich.org 70 i- #(;; #xa0 Err bitreich.org 70 i- #x00a0 #x2018 #x2019 #x00a3 #x20ac #x20af #x00a6 #x00a7 Err bitreich.org 70 i- #x00a8 #x00a9 #x037a #x00ab #x00ac #x00ad #xfffd #x2015 Err bitreich.org 70 i- ;; #xb0 Err bitreich.org 70 i- #x00b0 #x00b1 #x00b2 #x00b3 #x0384 #x0385 #x0386 #x00b7 Err bitreich.org 70 i- #x0388 #x0389 #x038a #x00bb #x038c #x00bd #x038e #x038f Err bitreich.org 70 i- ;; #xc0 Err bitreich.org 70 i- #x0390 #x0391 #x0392 #x0393 #x0394 #x0395 #x0396 #x0397 Err bitreich.org 70 i- #x0398 #x0399 #x039a #x039b #x039c #x039d #x039e #x039f Err bitreich.org 70 i- ;; #xd0 Err bitreich.org 70 i- #x03a0 #x03a1 #xfffd #x03a3 #x03a4 #x03a5 #x03a6 #x03a7 Err bitreich.org 70 i- #x03a8 #x03a9 #x03aa #x03ab #x03ac #x03ad #x03ae #x03af Err bitreich.org 70 i- ;; #xe0 Err bitreich.org 70 i- #x03b0 #x03b1 #x03b2 #x03b3 #x03b4 #x03b5 #x03b6 #x03b7 Err bitreich.org 70 i- #x03b8 #x03b9 #x03ba #x03bb #x03bc #x03bd #x03be #x03bf Err bitreich.org 70 i- ;; #xf0 Err bitreich.org 70 i- #x03c0 #x03c1 #x03c2 #x03c3 #x03c4 #x03c5 #x03c6 #x03c7 Err bitreich.org 70 i- #x03c8 #x03c9 #x03ca #x03cb #x03cc #x03cd #x03ce #xfffd) Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-decoder :iso-8859-7 (octet) Err bitreich.org 70 i- (if (< octet #xa0) Err bitreich.org 70 i- octet Err bitreich.org 70 i- (svref +iso-8859-7-to-unicode+ (the ub8 (- octet #xa0))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :iso-8859-8 Err bitreich.org 70 i- "An 8-bit, fixed-width character encoding in which codes #x00-#x9f Err bitreich.org 70 i-map to their Unicode equivalents and other codes map to other Unicode Err bitreich.org 70 i-character values. Intended to provide most characters found in the Err bitreich.org 70 i-Hebrew alphabet." Err bitreich.org 70 i- :aliases '(:hebrew) Err bitreich.org 70 i- :literal-char-code-limit #xa0) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-a0-f8-to-iso-8859-8+ Err bitreich.org 70 i- #(#xa0 nil #xa2 #xa3 #xa4 #xa5 #xa6 #xa7 ; #xa0-#xa7 Err bitreich.org 70 i- #xa8 #xa9 nil #xab #xac #xad #xae #xaf ; #xa8-#xaf Err bitreich.org 70 i- #xb0 #xb1 #xb2 #xb3 #xb4 #xb5 #xb6 #xb7 ; #xb0-#xb7 Err bitreich.org 70 i- #xb8 #xb9 nil #xbb #xbc #xbd #xbe nil ; #xb8-#xbf Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #xc0-#xc7 Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #xc8-#xcf Err bitreich.org 70 i- nil nil nil nil nil nil nil #xaa ; #xd0-#xd7 Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #xd8-#xdf Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #xe0-#xe7 Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #xe8-#xef Err bitreich.org 70 i- nil nil nil nil nil nil nil #xba) ; #xf0-#xf7 Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-5d0-5f0-to-iso-8859-8+ Err bitreich.org 70 i- #(#xe0 #xe1 #xe2 #xe3 #xe4 #xe5 #xe6 #xe7 ; #x5d0-#x5d7 Err bitreich.org 70 i- #xe8 #xe9 #xea #xeb #xec #xed #xee #xef ; #x5d8-#x5df Err bitreich.org 70 i- #xf0 #xf1 #xf2 #xf3 #xf4 #xf5 #xf6 #xf7 ; #x5e0-#x5e7 Err bitreich.org 70 i- #xf8 #xf9 #xfa nil nil nil nil nil) ; #x5e8-#x5ef Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-2008-2018-to-iso-8859-8+ Err bitreich.org 70 i- #(nil nil nil nil nil nil #xfd #xfe ; #x2008-#x200f Err bitreich.org 70 i- nil nil nil nil nil nil nil #xdf) ; #x2010-#x2017 Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-encoder :iso-8859-8 (code) Err bitreich.org 70 i- (or (cond ((< code #xa0) code) Err bitreich.org 70 i- ((< code #xf8) Err bitreich.org 70 i- (svref +unicode-a0-f8-to-iso-8859-8+ Err bitreich.org 70 i- (the ub8 (- code #xa0)))) Err bitreich.org 70 i- ((<= #x5d0 code #x5ef) Err bitreich.org 70 i- (svref +unicode-5d0-5f0-to-iso-8859-8+ Err bitreich.org 70 i- (the ub8 (- code #x5d0)))) Err bitreich.org 70 i- ((<= #x2008 code #x201f) Err bitreich.org 70 i- (svref +unicode-2008-2018-to-iso-8859-8+ Err bitreich.org 70 i- (the ub8 (- code #x2008))))) Err bitreich.org 70 i- (handle-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +iso-8859-8-to-unicode+ Err bitreich.org 70 i- #(;; #xa0 Err bitreich.org 70 i- #x00a0 #xfffd #x00a2 #x00a3 #x00a4 #x00a5 #x00a6 #x00a7 Err bitreich.org 70 i- #x00a8 #x00a9 #x00d7 #x00ab #x00ac #x00ad #x00ae #x00af Err bitreich.org 70 i- ;; #xb0 Err bitreich.org 70 i- #x00b0 #x00b1 #x00b2 #x00b3 #x00b4 #x00b5 #x00b6 #x00b7 Err bitreich.org 70 i- #x00b8 #x00b9 #x00f7 #x00bb #x00bc #x00bd #x00be #xfffd Err bitreich.org 70 i- ;; #xc0 Err bitreich.org 70 i- #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd Err bitreich.org 70 i- #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd Err bitreich.org 70 i- ;; #xd0 Err bitreich.org 70 i- #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd Err bitreich.org 70 i- #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #x2017 Err bitreich.org 70 i- ;; #xe0 Err bitreich.org 70 i- #x05d0 #x05d1 #x05d2 #x05d3 #x05d4 #x05d5 #x05d6 #x05d7 Err bitreich.org 70 i- #x05d8 #x05d9 #x05da #x05db #x05dc #x05dd #x05de #x05df Err bitreich.org 70 i- ;; #xf0 Err bitreich.org 70 i- #x05e0 #x05e1 #x05e2 #x05e3 #x05e4 #x05e5 #x05e6 #x05e7 Err bitreich.org 70 i- #x05e8 #x05e9 #x05ea #xfffd #xfffd #x200e #x200f #xfffd) Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-decoder :iso-8859-8 (octet) Err bitreich.org 70 i- (if (< octet #xa0) Err bitreich.org 70 i- octet Err bitreich.org 70 i- (svref +iso-8859-8-to-unicode+ (the ub8 (- octet #xa0))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :iso-8859-9 Err bitreich.org 70 i- "An 8-bit, fixed-width character encoding in which codes Err bitreich.org 70 i-#x00-#xcf map to their Unicode equivalents and other codes map to Err bitreich.org 70 i-other Unicode character values. Intended to provide most Err bitreich.org 70 i-characters found in the Turkish alphabet." Err bitreich.org 70 i- :aliases '(:latin-5 :latin5) Err bitreich.org 70 i- :decode-literal-code-unit-limit #xd0 Err bitreich.org 70 i- :encode-literal-code-unit-limit #xa0) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-d0-100-to-iso-8859-9+ Err bitreich.org 70 i- #(nil #xd1 #xd2 #xd3 #xd4 #xd5 #xd6 #xd7 ; #xd0-#xd7 Err bitreich.org 70 i- #xd8 #xd9 #xda #xdb #xdc nil nil #xdf ; #xd8-#xdf Err bitreich.org 70 i- #xe0 #xe1 #xe2 #xe3 #xe4 #xe5 #xe6 #xe7 ; #xe0-#xe7 Err bitreich.org 70 i- #xe8 #xe9 #xea #xeb #xec #xed #xee #xef ; #xe8-#xef Err bitreich.org 70 i- nil #xf1 #xf2 #xf3 #xf4 #xf5 #xf6 #xf7 ; #xf0-#xf7 Err bitreich.org 70 i- #xf8 #xf9 #xfa #xfb #xfc nil nil #xff) ; #xf8-#xff Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-118-160-to-iso-8859-9+ Err bitreich.org 70 i- #(nil nil nil nil nil nil #xd0 #xf0 ; #x118-#x11f Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x120-#x127 Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x128-#x12f Err bitreich.org 70 i- #xdd #xfd nil nil nil nil nil nil ; #x130-#x137 Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x138-#x13f Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x140-#x147 Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x148-#x14f Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x150-#x157 Err bitreich.org 70 i- nil nil nil nil nil nil #xde #xfe) ; #x158-#x15f Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-encoder :iso-8859-9 (code) Err bitreich.org 70 i- (or (cond ((< code #xd0) code) Err bitreich.org 70 i- ((< code #x100) Err bitreich.org 70 i- (svref +unicode-d0-100-to-iso-8859-9+ Err bitreich.org 70 i- (the ub8 (- code #xd0)))) Err bitreich.org 70 i- ((<= #x118 code #x15f) Err bitreich.org 70 i- (svref +unicode-118-160-to-iso-8859-9+ Err bitreich.org 70 i- (the ub8 (- code #x118))))) Err bitreich.org 70 i- (handle-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +iso-8859-9-to-unicode+ Err bitreich.org 70 i- #(;; #xd0 Err bitreich.org 70 i- #x011e #x00d1 #x00d2 #x00d3 #x00d4 #x00d5 #x00d6 #x00d7 Err bitreich.org 70 i- #x00d8 #x00d9 #x00da #x00db #x00dc #x0130 #x015e #x00df Err bitreich.org 70 i- ;; #xe0 Err bitreich.org 70 i- #x00e0 #x00e1 #x00e2 #x00e3 #x00e4 #x00e5 #x00e6 #x00e7 Err bitreich.org 70 i- #x00e8 #x00e9 #x00ea #x00eb #x00ec #x00ed #x00ee #x00ef Err bitreich.org 70 i- ;; #xf0 Err bitreich.org 70 i- #x011f #x00f1 #x00f2 #x00f3 #x00f4 #x00f5 #x00f6 #x00f7 Err bitreich.org 70 i- #x00f8 #x00f9 #x00fa #x00fb #x00fc #x0131 #x015f #x00ff) Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-decoder :iso-8859-9 (octet) Err bitreich.org 70 i- (if (< octet #xd0) Err bitreich.org 70 i- octet Err bitreich.org 70 i- (svref +iso-8859-9-to-unicode+ (the ub8 (- octet #xd0))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :iso-8859-10 Err bitreich.org 70 i- "An 8-bit, fixed-width character encoding in which codes Err bitreich.org 70 i-#x00-#x9f map to their Unicode equivalents and other codes map to Err bitreich.org 70 i-other Unicode character values. Intended to provide most Err bitreich.org 70 i-characters found in Nordic alphabets." Err bitreich.org 70 i- :aliases '(:latin-6 :latin6) Err bitreich.org 70 i- :literal-char-code-limit #xa0) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-a0-180-to-iso-8859-10+ Err bitreich.org 70 i- #(#xa0 nil nil nil nil nil nil #xa7 ; #xa0-#xa7 Err bitreich.org 70 i- nil nil nil nil nil #xad nil nil ; #xa8-#xaf Err bitreich.org 70 i- #xb0 nil nil nil nil nil nil #xb7 ; #xb0-#xb7 Err bitreich.org 70 i- nil nil nil nil nil #x2015 nil nil ; #xb8-#xbf Err bitreich.org 70 i- nil #xc1 #xc2 #xc3 #xc4 #xc5 #xc6 nil ; #xc0-#xc7 Err bitreich.org 70 i- nil #xc9 nil #xcb nil #xcd #xce #xcf ; #xc8-#xcf Err bitreich.org 70 i- #xd0 nil nil #xd3 #xd4 #xd5 #xd6 nil ; #xd0-#xd7 Err bitreich.org 70 i- #xd8 nil #xda #xdb #xdc #xdd #xde #xdf ; #xd8-#xdf Err bitreich.org 70 i- nil #xe1 #xe2 #xe3 #xe4 #xe5 #xe6 nil ; #xe0-#xe7 Err bitreich.org 70 i- nil #xe9 nil #xeb nil #xed #xee #xef ; #xe8-#xef Err bitreich.org 70 i- #xf0 nil nil #xf3 #xf4 #xf5 #xf6 nil ; #xf0-#xf7 Err bitreich.org 70 i- #xf8 nil #xfa #xfb #xfc #xfd #xfe nil ; #xf8-#xff Err bitreich.org 70 i- #xc0 #xe0 nil nil #xa1 #xb1 nil nil ; #x100-#x107 Err bitreich.org 70 i- nil nil nil nil #xc8 #xe8 nil nil ; #x108-#x10f Err bitreich.org 70 i- #xa9 #xb9 #xa2 #xb2 nil nil #xcc #xec ; #x110-#x117 Err bitreich.org 70 i- #xca #xea nil nil nil nil nil nil ; #x118-#x11f Err bitreich.org 70 i- nil nil #xa3 #xb3 nil nil nil nil ; #x120-#x127 Err bitreich.org 70 i- #xa5 #xb5 #xa4 #xb4 nil nil #xc7 #xe7 ; #x128-#x12f Err bitreich.org 70 i- nil nil nil nil nil nil #xa6 #xb6 ; #x130-#x137 Err bitreich.org 70 i- #xff nil nil #xa8 #xb8 nil nil nil ; #x138-#x13f Err bitreich.org 70 i- nil nil nil nil nil #xd1 #xf1 nil ; #x140-#x147 Err bitreich.org 70 i- nil nil #xaf #xbf #xd2 #xf2 nil nil ; #x148-#x14f Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x150-#x157 Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x158-#x15f Err bitreich.org 70 i- #xaa #xba nil nil nil nil #xab #xbb ; #x160-#x167 Err bitreich.org 70 i- #xd7 #xf7 #xae #xbe nil nil nil nil ; #x168-#x16f Err bitreich.org 70 i- nil nil #xd9 #xf9 nil nil nil nil ; #x170-#x177 Err bitreich.org 70 i- nil nil nil nil nil #xac #xbc nil) ; #x178-#x17f Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-encoder :iso-8859-10 (code) Err bitreich.org 70 i- (or (cond ((< code #xa0) code) Err bitreich.org 70 i- ((< code #x180) Err bitreich.org 70 i- (svref +unicode-a0-180-to-iso-8859-10+ Err bitreich.org 70 i- (the ub8 (- code #xa0)))) Err bitreich.org 70 i- ;; Horizontal bar Err bitreich.org 70 i- ((= code #x2015) #xbd)) Err bitreich.org 70 i- (handle-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +iso-8859-10-to-unicode+ Err bitreich.org 70 i- #(;; #xa0 Err bitreich.org 70 i- #x00a0 #x0104 #x0112 #x0122 #x012a #x0128 #x0136 #x00a7 Err bitreich.org 70 i- #x013b #x0110 #x0160 #x0166 #x017d #x00ad #x016a #x014a Err bitreich.org 70 i- ;; #xb0 Err bitreich.org 70 i- #x00b0 #x0105 #x0113 #x0123 #x012b #x0129 #x0137 #x00b7 Err bitreich.org 70 i- #x013c #x0111 #x0161 #x0167 #x017e #x2015 #x016b #x014b Err bitreich.org 70 i- ;; #xc0 Err bitreich.org 70 i- #x0100 #x00c1 #x00c2 #x00c3 #x00c4 #x00c5 #x00c6 #x012e Err bitreich.org 70 i- #x010c #x00c9 #x0118 #x00cb #x0116 #x00cd #x00ce #x00cf Err bitreich.org 70 i- ;; #xd0 Err bitreich.org 70 i- #x00d0 #x0145 #x014c #x00d3 #x00d4 #x00d5 #x00d6 #x0168 Err bitreich.org 70 i- #x00d8 #x0172 #x00da #x00db #x00dc #x00dd #x00de #x00df Err bitreich.org 70 i- ;; #xe0 Err bitreich.org 70 i- #x0101 #x00e1 #x00e2 #x00e3 #x00e4 #x00e5 #x00e6 #x012f Err bitreich.org 70 i- #x010d #x00e9 #x0119 #x00eb #x0117 #x00ed #x00ee #x00ef Err bitreich.org 70 i- ;; #xf0 Err bitreich.org 70 i- #x00f0 #x0146 #x014d #x00f3 #x00f4 #x00f5 #x00f6 #x0169 Err bitreich.org 70 i- #x00f8 #x0173 #x00fa #x00fb #x00fc #x00fd #x00fe #x0138) Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-decoder :iso-8859-10 (octet) Err bitreich.org 70 i- (if (< octet #xa0) Err bitreich.org 70 i- octet Err bitreich.org 70 i- (svref +iso-8859-10-to-unicode+ (the ub8 (- octet #xa0))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :iso-8859-11 Err bitreich.org 70 i- "An 8-bit, fixed-width character encoding in which codes Err bitreich.org 70 i-#x00-#x9f map to their Unicode equivalents and other codes map to Err bitreich.org 70 i-other Unicode character values. Intended to provide most Err bitreich.org 70 i-characters found the Thai alphabet." Err bitreich.org 70 i- :aliases '() Err bitreich.org 70 i- :literal-char-code-limit #xa0) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-encoder :iso-8859-11 (code) Err bitreich.org 70 i- (cond ((< code #xa1) code) Err bitreich.org 70 i- ((and (<= #xe01 code #xe5b) Err bitreich.org 70 i- (not (<= #xe3b code #xe3e)) Err bitreich.org 70 i- (not (<= #xe5c code #xe5f))) Err bitreich.org 70 i- (- code #xd60)) Err bitreich.org 70 i- (t (handle-error)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-decoder :iso-8859-11 (octet) Err bitreich.org 70 i- (cond ((<= octet #xa0) octet) Err bitreich.org 70 i- ((or (<= #xdb octet #xde) Err bitreich.org 70 i- (<= #xfc octet #xff)) Err bitreich.org 70 i- #xfffd) Err bitreich.org 70 i- ((<= octet #xfb) Err bitreich.org 70 i- (+ octet #x0d60)) Err bitreich.org 70 i- (t (handle-error)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; There is no iso-8859-12 encoding. Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :iso-8859-13 Err bitreich.org 70 i- "An 8-bit, fixed-width character encoding in which codes Err bitreich.org 70 i-#x00-#x9f map to their Unicode equivalents and other codes map to Err bitreich.org 70 i-other Unicode character values. Intended to provide most Err bitreich.org 70 i-characters found in Baltic alphabets." Err bitreich.org 70 i- :aliases '() Err bitreich.org 70 i- :literal-char-code-limit #xa0) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-a0-180-to-iso-8859-13+ Err bitreich.org 70 i- #(#xa0 nil #xa2 #xa3 #xa4 nil #xa6 #xa7 ; #xa0-#xa7 Err bitreich.org 70 i- nil #xa9 nil #xab #xac #xad #xae nil ; #xa8-#xaf Err bitreich.org 70 i- #xb0 #xb1 #xb2 #xb3 nil #xb5 #xb6 #xb7 ; #xb0-#xb7 Err bitreich.org 70 i- nil #xb9 nil #xbb #xbc #xbd #xbe nil ; #xb8-#xbf Err bitreich.org 70 i- nil nil nil nil #xc4 #xc5 #xaf nil ; #xc0-#xc7 Err bitreich.org 70 i- nil #xc9 nil nil nil nil nil nil ; #xc8-#xcf Err bitreich.org 70 i- nil nil nil #xd3 nil #xd5 #xd6 #xd7 ; #xd0-#xd7 Err bitreich.org 70 i- #xa8 nil nil nil #xdc nil nil #xdf ; #xd8-#xdf Err bitreich.org 70 i- nil nil nil nil #xe4 #xe5 #xbf nil ; #xe0-#xe7 Err bitreich.org 70 i- nil #xe9 nil nil nil nil nil nil ; #xe8-#xef Err bitreich.org 70 i- nil nil nil #xf3 nil #xf5 #xf6 #xf7 ; #xf0-#xf7 Err bitreich.org 70 i- #xb8 nil nil nil #xfc nil nil nil ; #xf8-#xff Err bitreich.org 70 i- #xc2 #xe2 nil nil #xc0 #xe0 #xc3 #xe3 ; #x100-#x107 Err bitreich.org 70 i- nil nil nil nil #xc8 #xe8 nil nil ; #x108-#x10f Err bitreich.org 70 i- nil nil #xc7 #xe7 nil nil #xcb #xeb ; #x110-#x117 Err bitreich.org 70 i- #xc6 #xe6 nil nil nil nil nil nil ; #x118-#x11f Err bitreich.org 70 i- nil nil #xcc #xec nil nil nil nil ; #x120-#x127 Err bitreich.org 70 i- nil nil #xce #xee nil nil #xc1 #xe1 ; #x128-#x12f Err bitreich.org 70 i- nil nil nil nil nil nil #xcd #xed ; #x130-#x137 Err bitreich.org 70 i- nil nil nil #xcf #xef nil nil nil ; #x138-#x13f Err bitreich.org 70 i- nil #xd9 #xf9 #xd1 #xf1 #xd2 #xf2 nil ; #x140-#x147 Err bitreich.org 70 i- nil nil nil nil #xd4 #xf4 nil nil ; #x148-#x14f Err bitreich.org 70 i- nil nil nil nil nil nil #xaa #xba ; #x150-#x157 Err bitreich.org 70 i- nil nil #xda #xfa nil nil nil nil ; #x158-#x15f Err bitreich.org 70 i- #xd0 #xf0 nil nil nil nil nil nil ; #x160-#x167 Err bitreich.org 70 i- nil nil #xdb #xfb nil nil nil nil ; #x168-#x16f Err bitreich.org 70 i- nil nil #xd8 #xf8 nil nil nil nil ; #x170-#x177 Err bitreich.org 70 i- nil #xca #xea #xdd #xfd #xde #xfe nil) ; #x178-#x17f Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-2018-2020-to-iso-8859-13+ Err bitreich.org 70 i- #(nil #xff nil nil #xb4 #xa1 #xa5 nil) ; #x2018-#x201f Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-encoder :iso-8859-13 (code) Err bitreich.org 70 i- (or (cond ((< code #xa0) code) Err bitreich.org 70 i- ((< code #x180) Err bitreich.org 70 i- (svref +unicode-a0-180-to-iso-8859-13+ Err bitreich.org 70 i- (the ub8 (- code #xa0)))) Err bitreich.org 70 i- ((<= #x2018 code #x201f) Err bitreich.org 70 i- (svref +unicode-2018-2020-to-iso-8859-13+ Err bitreich.org 70 i- (the ub8 (- code #x2018))))) Err bitreich.org 70 i- (handle-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +iso-8859-13-to-unicode+ Err bitreich.org 70 i- #(;; #xa0 Err bitreich.org 70 i- #x00a0 #x201d #x00a2 #x00a3 #x00a4 #x201e #x00a6 #x00a7 Err bitreich.org 70 i- #x00d8 #x00a9 #x0156 #x00ab #x00ac #x00ad #x00ae #x00c6 Err bitreich.org 70 i- ;; #xb0 Err bitreich.org 70 i- #x00b0 #x00b1 #x00b2 #x00b3 #x201c #x00b5 #x00b6 #x00b7 Err bitreich.org 70 i- #x00f8 #x00b9 #x0157 #x00bb #x00bc #x00bd #x00be #x00e6 Err bitreich.org 70 i- ;; #xc0 Err bitreich.org 70 i- #x0104 #x012e #x0100 #x0106 #x00c4 #x00c5 #x0118 #x0112 Err bitreich.org 70 i- #x010c #x00c9 #x0179 #x0116 #x0122 #x0136 #x012a #x013b Err bitreich.org 70 i- ;; #xd0 Err bitreich.org 70 i- #x0160 #x0143 #x0145 #x00d3 #x014c #x00d5 #x00d6 #x00d7 Err bitreich.org 70 i- #x0172 #x0141 #x015a #x016a #x00dc #x017b #x017d #x00df Err bitreich.org 70 i- ;; #xe0 Err bitreich.org 70 i- #x0105 #x012f #x0101 #x0107 #x00e4 #x00e5 #x0119 #x0113 Err bitreich.org 70 i- #x010d #x00e9 #x017a #x0117 #x0123 #x0137 #x012b #x013c Err bitreich.org 70 i- ;; #xf0 Err bitreich.org 70 i- #x0161 #x0144 #x0146 #x00f3 #x014d #x00f5 #x00f6 #x00f7 Err bitreich.org 70 i- #x0173 #x0142 #x015b #x016b #x00fc #x017c #x017e #x2019) Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-decoder :iso-8859-13 (octet) Err bitreich.org 70 i- (if (< octet #xa0) Err bitreich.org 70 i- octet Err bitreich.org 70 i- (svref +iso-8859-13-to-unicode+ (the ub8 (- octet #xa0))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :iso-8859-14 Err bitreich.org 70 i- "An 8-bit, fixed-width character encoding in which codes Err bitreich.org 70 i-#x00-#x9f map to their Unicode equivalents and other codes map to Err bitreich.org 70 i-other Unicode character values. Intended to provide most Err bitreich.org 70 i-characters found in Celtic languages." Err bitreich.org 70 i- :aliases '(:latin-8 :latin8) Err bitreich.org 70 i- :literal-char-code-limit #xa0) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-a0-100-to-iso-8859-14+ Err bitreich.org 70 i- #(#xa0 nil nil #xa3 nil nil nil #xa7 ; #xa0-#xa7 Err bitreich.org 70 i- nil #xa9 nil nil nil #xad #xae nil ; #xa8-#xaf Err bitreich.org 70 i- nil nil nil nil nil nil #xb6 nil ; #xb0-#xb7 Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #xb8-#xbf Err bitreich.org 70 i- #xc0 #xc1 #xc2 #xc3 #xc4 #xc5 #xc6 #xc7 ; #xc0-#xc7 Err bitreich.org 70 i- #xc8 #xc9 #xca #xcb #xcc #xcd #xce #xcf ; #xc8-#xcf Err bitreich.org 70 i- nil #xd1 #xd2 #xd3 #xd4 #xd5 #xd6 nil ; #xd0-#xd7 Err bitreich.org 70 i- #xd8 #xd9 #xda #xdb #xdc #xdd nil #xdf ; #xd8-#xdf Err bitreich.org 70 i- #xe0 #xe1 #xe2 #xe3 #xe4 #xe5 #xe6 #xe7 ; #xe0-#xe7 Err bitreich.org 70 i- #xe8 #xe9 #xea #xeb #xec #xed #xee #xef ; #xe8-#xef Err bitreich.org 70 i- nil #xf1 #xf2 #xf3 #xf4 #xf5 #xf6 nil ; #xf0-#xf7 Err bitreich.org 70 i- #xf8 #xf9 #xfa #xfb #xfc #xfd nil #xff) ; #xf8-#xff Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-108-128-to-iso-8859-14+ Err bitreich.org 70 i- #(nil nil #xa4 #xa5 nil nil nil nil ; #x108-#x10f Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x110-#x117 Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x118-#x11f Err bitreich.org 70 i- #xb2 #xb3 nil nil nil nil nil nil) ; #x120-#x127 Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-170-180-to-iso-8859-14+ Err bitreich.org 70 i- #(nil nil nil nil #xd0 #xf0 #xde #xfe ; #x170-#x177 Err bitreich.org 70 i- #xaf nil nil nil nil nil nil nil) ; #x178-#x17f Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-1e00-1e88-to-iso-8859-14+ Err bitreich.org 70 i- #(nil nil #xa1 #xa2 nil nil nil nil ; #x1e00-#x1e07 Err bitreich.org 70 i- nil nil #xa6 #xab nil nil nil nil ; #x1e08-#x1e0f Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x1e10-#x1e17 Err bitreich.org 70 i- nil nil nil nil nil nil #xb0 #xb1 ; #x1e18-#x1e1f Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x1e20-#x1e27 Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x1e28-#x1e2f Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x1e30-#x1e37 Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x1e38-#x1e3f Err bitreich.org 70 i- #xb4 #xb5 nil nil nil nil nil nil ; #x1e40-#x1e47 Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x1e48-#x1e4f Err bitreich.org 70 i- nil nil nil nil nil nil #xb7 #xb9 ; #x1e50-#x1e57 Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x1e58-#x1e5f Err bitreich.org 70 i- #xbb #xbf nil nil nil nil nil nil ; #x1e60-#x1e67 Err bitreich.org 70 i- nil nil #xd7 #xf7 nil nil nil nil ; #x1e68-#x1e6f Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x1e70-#x1e77 Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x1e78-#x1e7f Err bitreich.org 70 i- #xa8 #xb8 #xaa #xba #xbd #xbe nil nil) ; #x1e80-#x1e87 Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-1ef0-1ef8-to-iso-8859-14+ Err bitreich.org 70 i- #(nil nil #xac #xbc nil nil nil nil) ; #x1ef0-#x1ef7 Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-encoder :iso-8859-14 (code) Err bitreich.org 70 i- (or (cond ((< code #xa0) code) Err bitreich.org 70 i- ((< code #x100) Err bitreich.org 70 i- (svref +unicode-a0-100-to-iso-8859-14+ Err bitreich.org 70 i- (the ub8 (- code #xa0)))) Err bitreich.org 70 i- ((<= #x108 code #x127) Err bitreich.org 70 i- (svref +unicode-108-128-to-iso-8859-14+ Err bitreich.org 70 i- (the ub8 (- code #x108)))) Err bitreich.org 70 i- ((<= #x170 code #x17f) Err bitreich.org 70 i- (svref +unicode-170-180-to-iso-8859-14+ Err bitreich.org 70 i- (the ub8 (- code #x170)))) Err bitreich.org 70 i- ((<= #x1e00 code #x1e87) Err bitreich.org 70 i- (svref +unicode-1e00-1e88-to-iso-8859-14+ Err bitreich.org 70 i- (the ub8 (- code #x1e00)))) Err bitreich.org 70 i- ((<= #x1ef0 code #x1ef7) Err bitreich.org 70 i- (svref +unicode-1ef0-1ef8-to-iso-8859-14+ Err bitreich.org 70 i- (the ub8 (- code #x1ef0))))) Err bitreich.org 70 i- (handle-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +iso-8859-14-to-unicode+ Err bitreich.org 70 i- #(;; #xa0 Err bitreich.org 70 i- #x00a0 #x1e02 #x1e03 #x00a3 #x010a #x010b #x1e0a #x00a7 Err bitreich.org 70 i- #x1e80 #x00a9 #x1e82 #x1e0b #x1ef2 #x00ad #x00ae #x0178 Err bitreich.org 70 i- ;; #xb0 Err bitreich.org 70 i- #x1e1e #x1e1f #x0120 #x0121 #x1e40 #x1e41 #x00b6 #x1e56 Err bitreich.org 70 i- #x1e81 #x1e57 #x1e83 #x1e60 #x1ef3 #x1e84 #x1e85 #x1e61 Err bitreich.org 70 i- ;; #xc0 Err bitreich.org 70 i- #x00c0 #x00c1 #x00c2 #x00c3 #x00c4 #x00c5 #x00c6 #x00c7 Err bitreich.org 70 i- #x00c8 #x00c9 #x00ca #x00cb #x00cc #x00cd #x00ce #x00cf Err bitreich.org 70 i- ;; #xd0 Err bitreich.org 70 i- #x0174 #x00d1 #x00d2 #x00d3 #x00d4 #x00d5 #x00d6 #x1e6a Err bitreich.org 70 i- #x00d8 #x00d9 #x00da #x00db #x00dc #x00dd #x0176 #x00df Err bitreich.org 70 i- ;; #xe0 Err bitreich.org 70 i- #x00e0 #x00e1 #x00e2 #x00e3 #x00e4 #x00e5 #x00e6 #x00e7 Err bitreich.org 70 i- #x00e8 #x00e9 #x00ea #x00eb #x00ec #x00ed #x00ee #x00ef Err bitreich.org 70 i- ;; #xf0 Err bitreich.org 70 i- #x0175 #x00f1 #x00f2 #x00f3 #x00f4 #x00f5 #x00f6 #x1e6b Err bitreich.org 70 i- #x00f8 #x00f9 #x00fa #x00fb #x00fc #x00fd #x0177 #x00ff) Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-decoder :iso-8859-14 (octet) Err bitreich.org 70 i- (if (< octet #xa0) Err bitreich.org 70 i- octet Err bitreich.org 70 i- (svref +iso-8859-14-to-unicode+ (the ub8 (- octet #xa0))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :iso-8859-15 Err bitreich.org 70 i- "An 8-bit, fixed-width character encoding in which codes Err bitreich.org 70 i-#x00-#x9f map to their Unicode equivalents and other codes map to Err bitreich.org 70 i-other Unicode character values. Intended to provide most Err bitreich.org 70 i-characters found in Western European languages (including the Err bitreich.org 70 i-Euro sign and some other characters missing from ISO-8859-1." Err bitreich.org 70 i- :aliases '(:latin-9 :latin9) Err bitreich.org 70 i- :literal-char-code-limit #xa0) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-a0-100-to-iso-8859-15+ Err bitreich.org 70 i- #(#xa0 #xa1 #xa2 #xa3 nil #xa5 nil #xa7 ; #xa0-#xa7 Err bitreich.org 70 i- nil #xa9 #xaa #xab #xac #xad #xae #xaf ; #xa8-#xaf Err bitreich.org 70 i- #xb0 #xb1 #xb2 #xb3 nil #xb5 #xb6 #xb7 ; #xb0-#xb7 Err bitreich.org 70 i- nil #xb9 #xba #xbb nil nil nil #xbf ; #xb8-0xbf Err bitreich.org 70 i- #xc0 #xc1 #xc2 #xc3 #xc4 #xc5 #xc6 #xc7 ; #xc0-#xc7 Err bitreich.org 70 i- #xc8 #xc9 #xca #xcb #xcc #xcd #xce #xcf ; #xc8-#xcf Err bitreich.org 70 i- #xd0 #xd1 #xd2 #xd3 #xd4 #xd5 #xd6 #xd7 ; #xd0-#xd7 Err bitreich.org 70 i- #xd8 #xd9 #xda #xdb #xdc #xdd #xde #xdf ; #xd8-#xdf Err bitreich.org 70 i- #xe0 #xe1 #xe2 #xe3 #xe4 #xe5 #xe6 #xe7 ; #xe0-#xe7 Err bitreich.org 70 i- #xe8 #xe9 #xea #xeb #xec #xed #xee #xef ; #xe8-#xef Err bitreich.org 70 i- #xf0 #xf1 #xf2 #xf3 #xf4 #xf5 #xf6 #xf7 ; #xf0-#xf7 Err bitreich.org 70 i- #xf8 #xf9 #xfa #xfb #xfc #xfd #xfe #xff) ; #xf8-#xff Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-150-180-to-iso-8859-15+ Err bitreich.org 70 i- #(nil nil #xbc #xbd nil nil nil nil ; #x150-#x157 Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x158-#x15f Err bitreich.org 70 i- #xa6 #xa8 nil nil nil nil nil nil ; #x160-#x167 Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x168-#x16f Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x170-#x177 Err bitreich.org 70 i- #xbe nil nil nil nil #xb4 #xb8 nil) ; #x178-#x17f Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-encoder :iso-8859-15 (code) Err bitreich.org 70 i- (or (cond ((< code #xa0) code) Err bitreich.org 70 i- ((< code #x100) Err bitreich.org 70 i- (svref +unicode-a0-100-to-iso-8859-15+ Err bitreich.org 70 i- (the ub8 (- code #xa0)))) Err bitreich.org 70 i- ((<= #x150 code #x1f7) Err bitreich.org 70 i- (svref +unicode-150-180-to-iso-8859-15+ Err bitreich.org 70 i- (the ub8 (- code #x150)))) Err bitreich.org 70 i- ;; Euro sign Err bitreich.org 70 i- ((= code #x20ac) #xa4)) Err bitreich.org 70 i- (handle-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +iso-8859-15-to-unicode+ Err bitreich.org 70 i- #(;; #xa0 Err bitreich.org 70 i- #x00a0 #x00a1 #x00a2 #x00a3 #x20ac #x00a5 #x0160 #x00a7 Err bitreich.org 70 i- #x0161 #x00a9 #x00aa #x00ab #x00ac #x00ad #x00ae #x00af Err bitreich.org 70 i- ;; #xb0 Err bitreich.org 70 i- #x00b0 #x00b1 #x00b2 #x00b3 #x017d #x00b5 #x00b6 #x00b7 Err bitreich.org 70 i- #x017e #x00b9 #x00ba #x00bb #x0152 #x0153 #x0178 #x00bf Err bitreich.org 70 i- ;; #xc0 Err bitreich.org 70 i- #x00c0 #x00c1 #x00c2 #x00c3 #x00c4 #x00c5 #x00c6 #x00c7 Err bitreich.org 70 i- ;; #xc8 Err bitreich.org 70 i- #x00c8 #x00c9 #x00ca #x00cb #x00cc #x00cd #x00ce #x00cf Err bitreich.org 70 i- ;; #xd0 Err bitreich.org 70 i- #x00d0 #x00d1 #x00d2 #x00d3 #x00d4 #x00d5 #x00d6 #x00d7 Err bitreich.org 70 i- ;; #xd8 Err bitreich.org 70 i- #x00d8 #x00d9 #x00da #x00db #x00dc #x00dd #x00de #x00df Err bitreich.org 70 i- ;; #xe0 Err bitreich.org 70 i- #x00e0 #x00e1 #x00e2 #x00e3 #x00e4 #x00e5 #x00e6 #x00e7 Err bitreich.org 70 i- ;; #xe8 Err bitreich.org 70 i- #x00e8 #x00e9 #x00ea #x00eb #x00ec #x00ed #x00ee #x00ef Err bitreich.org 70 i- ;; #xf0 Err bitreich.org 70 i- #x00f0 #x00f1 #x00f2 #x00f3 #x00f4 #x00f5 #x00f6 #x00f7 Err bitreich.org 70 i- ;; #xf8 Err bitreich.org 70 i- #x00f8 #x00f9 #x00fa #x00fb #x00fc #x00fd #x00fe #x00ff) Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-decoder :iso-8859-15 (octet) Err bitreich.org 70 i- (if (< octet #xa0) Err bitreich.org 70 i- octet Err bitreich.org 70 i- (svref +iso-8859-15-to-unicode+ (the ub8 (- octet #xa0))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :iso-8859-16 Err bitreich.org 70 i- "An 8-bit, fixed-width character encoding in which codes Err bitreich.org 70 i-#x00-#x9f map to their Unicode equivalents and other codes map to Err bitreich.org 70 i-other Unicode character values. Intended to provide most Err bitreich.org 70 i-characters found in Southeast European languages." Err bitreich.org 70 i- :aliases '(:latin-10 :latin10) Err bitreich.org 70 i- :literal-char-code-limit #xa0) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-a0-180-to-iso-8859-16+ Err bitreich.org 70 i- #(#xa0 nil nil nil nil nil nil #xa7 ; #xa0-#xa7 Err bitreich.org 70 i- nil #xa9 nil #xab nil #xad nil nil ; #xa8-#xaf Err bitreich.org 70 i- #xb0 #xb1 nil nil nil nil #xb6 #xb7 ; #xb0-#xb7 Err bitreich.org 70 i- nil nil nil #xbb nil nil nil nil ; #xb8-#xbf Err bitreich.org 70 i- #xc0 #xc1 #xc2 nil #xc4 nil #xc6 #xc7 ; #xc0-#xc7 Err bitreich.org 70 i- #xc8 #xc9 #xca #xcb #xcc #xcd #xce #xcf ; #xc8-#xcf Err bitreich.org 70 i- nil nil #xd2 #xd3 #xd4 nil #xd6 nil ; #xd0-#xd7 Err bitreich.org 70 i- nil #xd9 #xda #xdb #xdc nil nil #xdf ; #xd8-#xdf Err bitreich.org 70 i- #xe0 #xe1 #xe2 nil #xe4 nil #xe6 #xe7 ; #xe0-#xe7 Err bitreich.org 70 i- #xe8 #xe9 #xea #xeb #xec #xed #xee #xef ; #xe8-#xef Err bitreich.org 70 i- nil nil #xf2 #xf3 #xf4 nil #xf6 nil ; #xf0-#xf7 Err bitreich.org 70 i- nil #xf9 #xfa #xfb #xfc nil nil #xff ; #xf8-#xff Err bitreich.org 70 i- nil nil #xc3 #xe3 #xa1 #xa2 #xc5 #xe5 ; #x100-#x107 Err bitreich.org 70 i- nil nil nil nil #xb2 #xb9 nil nil ; #x108-#x10f Err bitreich.org 70 i- #xd0 #xf0 nil nil nil nil nil nil ; #x110-#x117 Err bitreich.org 70 i- #xdd #xfd nil nil nil nil nil nil ; #x118-#x11f Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x120-#x127 Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x128-#x12f Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x130-#x137 Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x138-#x13f Err bitreich.org 70 i- nil #xa3 #xb3 #xd1 #xf1 nil nil nil ; #x140-#x147 Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x148-#x14f Err bitreich.org 70 i- #xd5 #xf5 #xbc #xbd nil nil nil nil ; #x150-#x157 Err bitreich.org 70 i- nil nil #xd7 #xf7 nil nil nil nil ; #x158-#x15f Err bitreich.org 70 i- #xa6 #xa8 nil nil nil nil nil nil ; #x160-#x167 Err bitreich.org 70 i- nil nil nil nil nil nil nil nil ; #x168-#x16f Err bitreich.org 70 i- #xd8 #xf8 nil nil nil nil nil nil ; #x170-#x177 Err bitreich.org 70 i- #xbe #xac #xae #xaf #xbf #xb4 #xb8 nil) ; #x178-#x17f Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-218-220-to-iso-8859-16+ Err bitreich.org 70 i- #(#xaa #xba #xde #xfe nil nil nil nil) ; #x218-#x21f Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-2018-2020-to-iso-8859-16+ Err bitreich.org 70 i- #(nil nil nil nil nil #xb5 #xa5 nil) ; #x2018-#x201f Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-encoder :iso-8859-16 (code) Err bitreich.org 70 i- (or (cond ((< code #xa0) code) Err bitreich.org 70 i- ((< code #x180) Err bitreich.org 70 i- (svref +unicode-a0-180-to-iso-8859-16+ Err bitreich.org 70 i- (the ub8 (- code #xa0)))) Err bitreich.org 70 i- ((<= #x218 code #x21f) Err bitreich.org 70 i- (svref +unicode-218-220-to-iso-8859-16+ Err bitreich.org 70 i- (the ub8 (- code #x218)))) Err bitreich.org 70 i- ((< #x2018 code #x201f) Err bitreich.org 70 i- (svref +unicode-2018-2020-to-iso-8859-16+ Err bitreich.org 70 i- (the ub8 (- code #x2018)))) Err bitreich.org 70 i- ;; Euro sign Err bitreich.org 70 i- ((= code #x20ac) #xa4)) Err bitreich.org 70 i- (handle-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +iso-8859-16-to-unicode+ Err bitreich.org 70 i- #(;; #xa0 Err bitreich.org 70 i- #x00a0 #x0104 #x0105 #x0141 #x20ac #x201e #x0160 #x00a7 Err bitreich.org 70 i- #x0161 #x00a9 #x0218 #x00ab #x0179 #x00ad #x017a #x017b Err bitreich.org 70 i- ;; #xb0 Err bitreich.org 70 i- #x00b0 #x00b1 #x010c #x0142 #x017d #x201d #x00b6 #x00b7 Err bitreich.org 70 i- #x017e #x010d #x0219 #x00bb #x0152 #x0153 #x0178 #x017c Err bitreich.org 70 i- ;; #xc0 Err bitreich.org 70 i- #x00c0 #x00c1 #x00c2 #x0102 #x00c4 #x0106 #x00c6 #x00c7 Err bitreich.org 70 i- #x00c8 #x00c9 #x00ca #x00cb #x00cc #x00cd #x00ce #x00cf Err bitreich.org 70 i- ;; #xd0 Err bitreich.org 70 i- #x0110 #x0143 #x00d2 #x00d3 #x00d4 #x0150 #x00d6 #x015a Err bitreich.org 70 i- #x0170 #x00d9 #x00da #x00db #x00dc #x0118 #x021a #x00df Err bitreich.org 70 i- ;; #xe0 Err bitreich.org 70 i- #x00e0 #x00e1 #x00e2 #x0103 #x00e4 #x0107 #x00e6 #x00e7 Err bitreich.org 70 i- #x00e8 #x00e9 #x00ea #x00eb #x00ec #x00ed #x00ee #x00ef Err bitreich.org 70 i- ;; #xf0 Err bitreich.org 70 i- #x0111 #x0144 #x00f2 #x00f3 #x00f4 #x0151 #x00f6 #x015b Err bitreich.org 70 i- #x0171 #x00f9 #x00fa #x00fb #x00fc #x0119 #x021b #x00ff) Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-decoder :iso-8859-16 (octet) Err bitreich.org 70 i- (if (< octet #xa0) Err bitreich.org 70 i- octet Err bitreich.org 70 i- (svref +iso-8859-16-to-unicode+ (the ub8 (- octet #xa0))))) Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/src/enc-jpn.lisp b/3rdparties/software/babel-20171227-git/src/enc-jpn.lisp /scm/clic/file/3rdparties/software/babel-20171227-git/src/enc-jpn.lisp.gph bitreich.org 70 i@@ -1,767 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; enc-jpn.lisp --- Japanese encodings. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:babel-encodings) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; helper functions Err bitreich.org 70 i-(defvar *eucjp-to-ucs-hash* (make-hash-table)) Err bitreich.org 70 i-(defvar *ucs-to-eucjp-hash* (make-hash-table)) Err bitreich.org 70 i-(defvar *cp932-to-ucs-hash* (make-hash-table)) Err bitreich.org 70 i-(defvar *ucs-to-cp932-hash* (make-hash-table)) Err bitreich.org 70 i- Err bitreich.org 70 i-(dolist (i `((,*cp932-only* Err bitreich.org 70 i- ,*cp932-to-ucs-hash* Err bitreich.org 70 i- ,*ucs-to-cp932-hash*) Err bitreich.org 70 i- (,*eucjp-only* Err bitreich.org 70 i- ,*eucjp-to-ucs-hash* Err bitreich.org 70 i- ,*ucs-to-eucjp-hash*) Err bitreich.org 70 i- (,*eucjp* Err bitreich.org 70 i- ,*eucjp-to-ucs-hash* Err bitreich.org 70 i- ,*ucs-to-eucjp-hash*))) Err bitreich.org 70 i- (dolist (j (first i)) Err bitreich.org 70 i- (setf (gethash (car j) (second i)) (cadr j)) Err bitreich.org 70 i- (setf (gethash (cadr j) (third i)) (car j)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(flet ((euc-cp932 (x) Err bitreich.org 70 i- (let ((high (ash x -16)) Err bitreich.org 70 i- (mid (logand (ash x -8) 255)) Err bitreich.org 70 i- (low (logand x 255))) Err bitreich.org 70 i- (cond ((not (zerop high)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- ((= mid #x8e) Err bitreich.org 70 i- (logand x 255)) Err bitreich.org 70 i- ((zerop mid) Err bitreich.org 70 i- x) Err bitreich.org 70 i- ((decf mid #xa1) Err bitreich.org 70 i- (decf low #x80) Err bitreich.org 70 i- (incf low (if (zerop (logand mid 1)) #x1f #x7e)) Err bitreich.org 70 i- (incf low (if (<= #x7f low #x9d) 1 0)) Err bitreich.org 70 i- (setq mid (ash mid -1)) Err bitreich.org 70 i- (incf mid (if (<= mid #x1e) #x81 #xc1)) Err bitreich.org 70 i- (+ (ash mid 8) low)))))) Err bitreich.org 70 i- (dolist (i *eucjp*) Err bitreich.org 70 i- (let ((cp932 (euc-cp932 (first i)))) Err bitreich.org 70 i- (when cp932 Err bitreich.org 70 i- (setf (gethash cp932 *cp932-to-ucs-hash*) (second i)) Err bitreich.org 70 i- (setf (gethash (second i) *ucs-to-cp932-hash*) cp932))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;ascii Err bitreich.org 70 i-(loop for i from #x00 to #x7f do Err bitreich.org 70 i- (setf (gethash i *cp932-to-ucs-hash*) i) Err bitreich.org 70 i- (setf (gethash i *eucjp-to-ucs-hash*) i) Err bitreich.org 70 i- (setf (gethash i *ucs-to-eucjp-hash*) i) Err bitreich.org 70 i- (setf (gethash i *ucs-to-cp932-hash*) i)) Err bitreich.org 70 i- Err bitreich.org 70 i-;half-width katakana Err bitreich.org 70 i-(loop for i from #xa1 to #xdf do Err bitreich.org 70 i- (setf (gethash i *cp932-to-ucs-hash*) (+ #xff61 #x-a1 i)) Err bitreich.org 70 i- (setf (gethash (+ #xff61 #x-a1 i) *ucs-to-cp932-hash*) i) Err bitreich.org 70 i- (setf (gethash (+ #x8e00 i) *eucjp-to-ucs-hash*) (+ #xff61 #x-a1 i)) Err bitreich.org 70 i- (setf (gethash (+ #xff61 #x-a1 i) *ucs-to-eucjp-hash*) (+ #x8e00 i))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; This is quoted from https://support.microsoft.com/en-us/kb/170559/en-us Err bitreich.org 70 i-(let ((kb170559 "0x8790 -> U+2252 -> 0x81e0 Approximately Equal To Or The Image Of Err bitreich.org 70 i-0x8791 -> U+2261 -> 0x81df Identical To Err bitreich.org 70 i-0x8792 -> U+222b -> 0x81e7 Integral Err bitreich.org 70 i-0x8795 -> U+221a -> 0x81e3 Square Root Err bitreich.org 70 i-0x8796 -> U+22a5 -> 0x81db Up Tack Err bitreich.org 70 i-0x8797 -> U+2220 -> 0x81da Angle Err bitreich.org 70 i-0x879a -> U+2235 -> 0x81e6 Because Err bitreich.org 70 i-0x879b -> U+2229 -> 0x81bf Intersection Err bitreich.org 70 i-0x879c -> U+222a -> 0x81be Union Err bitreich.org 70 i-0xed40 -> U+7e8a -> 0xfa5c CJK Unified Ideograph Err bitreich.org 70 i-0xed41 -> U+891c -> 0xfa5d CJK Unified Ideograph Err bitreich.org 70 i-0xed42 -> U+9348 -> 0xfa5e CJK Unified Ideograph Err bitreich.org 70 i-0xed43 -> U+9288 -> 0xfa5f CJK Unified Ideograph Err bitreich.org 70 i-0xed44 -> U+84dc -> 0xfa60 CJK Unified Ideograph Err bitreich.org 70 i-0xed45 -> U+4fc9 -> 0xfa61 CJK Unified Ideograph Err bitreich.org 70 i-0xed46 -> U+70bb -> 0xfa62 CJK Unified Ideograph Err bitreich.org 70 i-0xed47 -> U+6631 -> 0xfa63 CJK Unified Ideograph Err bitreich.org 70 i-0xed48 -> U+68c8 -> 0xfa64 CJK Unified Ideograph Err bitreich.org 70 i-0xed49 -> U+92f9 -> 0xfa65 CJK Unified Ideograph Err bitreich.org 70 i-0xed4a -> U+66fb -> 0xfa66 CJK Unified Ideograph Err bitreich.org 70 i-0xed4b -> U+5f45 -> 0xfa67 CJK Unified Ideograph Err bitreich.org 70 i-0xed4c -> U+4e28 -> 0xfa68 CJK Unified Ideograph Err bitreich.org 70 i-0xed4d -> U+4ee1 -> 0xfa69 CJK Unified Ideograph Err bitreich.org 70 i-0xed4e -> U+4efc -> 0xfa6a CJK Unified Ideograph Err bitreich.org 70 i-0xed4f -> U+4f00 -> 0xfa6b CJK Unified Ideograph Err bitreich.org 70 i-0xed50 -> U+4f03 -> 0xfa6c CJK Unified Ideograph Err bitreich.org 70 i-0xed51 -> U+4f39 -> 0xfa6d CJK Unified Ideograph Err bitreich.org 70 i-0xed52 -> U+4f56 -> 0xfa6e CJK Unified Ideograph Err bitreich.org 70 i-0xed53 -> U+4f92 -> 0xfa6f CJK Unified Ideograph Err bitreich.org 70 i-0xed54 -> U+4f8a -> 0xfa70 CJK Unified Ideograph Err bitreich.org 70 i-0xed55 -> U+4f9a -> 0xfa71 CJK Unified Ideograph Err bitreich.org 70 i-0xed56 -> U+4f94 -> 0xfa72 CJK Unified Ideograph Err bitreich.org 70 i-0xed57 -> U+4fcd -> 0xfa73 CJK Unified Ideograph Err bitreich.org 70 i-0xed58 -> U+5040 -> 0xfa74 CJK Unified Ideograph Err bitreich.org 70 i-0xed59 -> U+5022 -> 0xfa75 CJK Unified Ideograph Err bitreich.org 70 i-0xed5a -> U+4fff -> 0xfa76 CJK Unified Ideograph Err bitreich.org 70 i-0xed5b -> U+501e -> 0xfa77 CJK Unified Ideograph Err bitreich.org 70 i-0xed5c -> U+5046 -> 0xfa78 CJK Unified Ideograph Err bitreich.org 70 i-0xed5d -> U+5070 -> 0xfa79 CJK Unified Ideograph Err bitreich.org 70 i-0xed5e -> U+5042 -> 0xfa7a CJK Unified Ideograph Err bitreich.org 70 i-0xed5f -> U+5094 -> 0xfa7b CJK Unified Ideograph Err bitreich.org 70 i-0xed60 -> U+50f4 -> 0xfa7c CJK Unified Ideograph Err bitreich.org 70 i-0xed61 -> U+50d8 -> 0xfa7d CJK Unified Ideograph Err bitreich.org 70 i-0xed62 -> U+514a -> 0xfa7e CJK Unified Ideograph Err bitreich.org 70 i-0xed63 -> U+5164 -> 0xfa80 CJK Unified Ideograph Err bitreich.org 70 i-0xed64 -> U+519d -> 0xfa81 CJK Unified Ideograph Err bitreich.org 70 i-0xed65 -> U+51be -> 0xfa82 CJK Unified Ideograph Err bitreich.org 70 i-0xed66 -> U+51ec -> 0xfa83 CJK Unified Ideograph Err bitreich.org 70 i-0xed67 -> U+5215 -> 0xfa84 CJK Unified Ideograph Err bitreich.org 70 i-0xed68 -> U+529c -> 0xfa85 CJK Unified Ideograph Err bitreich.org 70 i-0xed69 -> U+52a6 -> 0xfa86 CJK Unified Ideograph Err bitreich.org 70 i-0xed6a -> U+52c0 -> 0xfa87 CJK Unified Ideograph Err bitreich.org 70 i-0xed6b -> U+52db -> 0xfa88 CJK Unified Ideograph Err bitreich.org 70 i-0xed6c -> U+5300 -> 0xfa89 CJK Unified Ideograph Err bitreich.org 70 i-0xed6d -> U+5307 -> 0xfa8a CJK Unified Ideograph Err bitreich.org 70 i-0xed6e -> U+5324 -> 0xfa8b CJK Unified Ideograph Err bitreich.org 70 i-0xed6f -> U+5372 -> 0xfa8c CJK Unified Ideograph Err bitreich.org 70 i-0xed70 -> U+5393 -> 0xfa8d CJK Unified Ideograph Err bitreich.org 70 i-0xed71 -> U+53b2 -> 0xfa8e CJK Unified Ideograph Err bitreich.org 70 i-0xed72 -> U+53dd -> 0xfa8f CJK Unified Ideograph Err bitreich.org 70 i-0xed73 -> U+fa0e -> 0xfa90 CJK compatibility Ideograph Err bitreich.org 70 i-0xed74 -> U+549c -> 0xfa91 CJK Unified Ideograph Err bitreich.org 70 i-0xed75 -> U+548a -> 0xfa92 CJK Unified Ideograph Err bitreich.org 70 i-0xed76 -> U+54a9 -> 0xfa93 CJK Unified Ideograph Err bitreich.org 70 i-0xed77 -> U+54ff -> 0xfa94 CJK Unified Ideograph Err bitreich.org 70 i-0xed78 -> U+5586 -> 0xfa95 CJK Unified Ideograph Err bitreich.org 70 i-0xed79 -> U+5759 -> 0xfa96 CJK Unified Ideograph Err bitreich.org 70 i-0xed7a -> U+5765 -> 0xfa97 CJK Unified Ideograph Err bitreich.org 70 i-0xed7b -> U+57ac -> 0xfa98 CJK Unified Ideograph Err bitreich.org 70 i-0xed7c -> U+57c8 -> 0xfa99 CJK Unified Ideograph Err bitreich.org 70 i-0xed7d -> U+57c7 -> 0xfa9a CJK Unified Ideograph Err bitreich.org 70 i-0xed7e -> U+fa0f -> 0xfa9b CJK compatibility Ideograph Err bitreich.org 70 i-0xed80 -> U+fa10 -> 0xfa9c CJK compatibility Ideograph Err bitreich.org 70 i-0xed81 -> U+589e -> 0xfa9d CJK Unified Ideograph Err bitreich.org 70 i-0xed82 -> U+58b2 -> 0xfa9e CJK Unified Ideograph Err bitreich.org 70 i-0xed83 -> U+590b -> 0xfa9f CJK Unified Ideograph Err bitreich.org 70 i-0xed84 -> U+5953 -> 0xfaa0 CJK Unified Ideograph Err bitreich.org 70 i-0xed85 -> U+595b -> 0xfaa1 CJK Unified Ideograph Err bitreich.org 70 i-0xed86 -> U+595d -> 0xfaa2 CJK Unified Ideograph Err bitreich.org 70 i-0xed87 -> U+5963 -> 0xfaa3 CJK Unified Ideograph Err bitreich.org 70 i-0xed88 -> U+59a4 -> 0xfaa4 CJK Unified Ideograph Err bitreich.org 70 i-0xed89 -> U+59ba -> 0xfaa5 CJK Unified Ideograph Err bitreich.org 70 i-0xed8a -> U+5b56 -> 0xfaa6 CJK Unified Ideograph Err bitreich.org 70 i-0xed8b -> U+5bc0 -> 0xfaa7 CJK Unified Ideograph Err bitreich.org 70 i-0xed8c -> U+752f -> 0xfaa8 CJK Unified Ideograph Err bitreich.org 70 i-0xed8d -> U+5bd8 -> 0xfaa9 CJK Unified Ideograph Err bitreich.org 70 i-0xed8e -> U+5bec -> 0xfaaa CJK Unified Ideograph Err bitreich.org 70 i-0xed8f -> U+5c1e -> 0xfaab CJK Unified Ideograph Err bitreich.org 70 i-0xed90 -> U+5ca6 -> 0xfaac CJK Unified Ideograph Err bitreich.org 70 i-0xed91 -> U+5cba -> 0xfaad CJK Unified Ideograph Err bitreich.org 70 i-0xed92 -> U+5cf5 -> 0xfaae CJK Unified Ideograph Err bitreich.org 70 i-0xed93 -> U+5d27 -> 0xfaaf CJK Unified Ideograph Err bitreich.org 70 i-0xed94 -> U+5d53 -> 0xfab0 CJK Unified Ideograph Err bitreich.org 70 i-0xed95 -> U+fa11 -> 0xfab1 CJK compatibility Ideograph Err bitreich.org 70 i-0xed96 -> U+5d42 -> 0xfab2 CJK Unified Ideograph Err bitreich.org 70 i-0xed97 -> U+5d6d -> 0xfab3 CJK Unified Ideograph Err bitreich.org 70 i-0xed98 -> U+5db8 -> 0xfab4 CJK Unified Ideograph Err bitreich.org 70 i-0xed99 -> U+5db9 -> 0xfab5 CJK Unified Ideograph Err bitreich.org 70 i-0xed9a -> U+5dd0 -> 0xfab6 CJK Unified Ideograph Err bitreich.org 70 i-0xed9b -> U+5f21 -> 0xfab7 CJK Unified Ideograph Err bitreich.org 70 i-0xed9c -> U+5f34 -> 0xfab8 CJK Unified Ideograph Err bitreich.org 70 i-0xed9d -> U+5f67 -> 0xfab9 CJK Unified Ideograph Err bitreich.org 70 i-0xed9e -> U+5fb7 -> 0xfaba CJK Unified Ideograph Err bitreich.org 70 i-0xed9f -> U+5fde -> 0xfabb CJK Unified Ideograph Err bitreich.org 70 i-0xeda0 -> U+605d -> 0xfabc CJK Unified Ideograph Err bitreich.org 70 i-0xeda1 -> U+6085 -> 0xfabd CJK Unified Ideograph Err bitreich.org 70 i-0xeda2 -> U+608a -> 0xfabe CJK Unified Ideograph Err bitreich.org 70 i-0xeda3 -> U+60de -> 0xfabf CJK Unified Ideograph Err bitreich.org 70 i-0xeda4 -> U+60d5 -> 0xfac0 CJK Unified Ideograph Err bitreich.org 70 i-0xeda5 -> U+6120 -> 0xfac1 CJK Unified Ideograph Err bitreich.org 70 i-0xeda6 -> U+60f2 -> 0xfac2 CJK Unified Ideograph Err bitreich.org 70 i-0xeda7 -> U+6111 -> 0xfac3 CJK Unified Ideograph Err bitreich.org 70 i-0xeda8 -> U+6137 -> 0xfac4 CJK Unified Ideograph Err bitreich.org 70 i-0xeda9 -> U+6130 -> 0xfac5 CJK Unified Ideograph Err bitreich.org 70 i-0xedaa -> U+6198 -> 0xfac6 CJK Unified Ideograph Err bitreich.org 70 i-0xedab -> U+6213 -> 0xfac7 CJK Unified Ideograph Err bitreich.org 70 i-0xedac -> U+62a6 -> 0xfac8 CJK Unified Ideograph Err bitreich.org 70 i-0xedad -> U+63f5 -> 0xfac9 CJK Unified Ideograph Err bitreich.org 70 i-0xedae -> U+6460 -> 0xfaca CJK Unified Ideograph Err bitreich.org 70 i-0xedaf -> U+649d -> 0xfacb CJK Unified Ideograph Err bitreich.org 70 i-0xedb0 -> U+64ce -> 0xfacc CJK Unified Ideograph Err bitreich.org 70 i-0xedb1 -> U+654e -> 0xfacd CJK Unified Ideograph Err bitreich.org 70 i-0xedb2 -> U+6600 -> 0xface CJK Unified Ideograph Err bitreich.org 70 i-0xedb3 -> U+6615 -> 0xfacf CJK Unified Ideograph Err bitreich.org 70 i-0xedb4 -> U+663b -> 0xfad0 CJK Unified Ideograph Err bitreich.org 70 i-0xedb5 -> U+6609 -> 0xfad1 CJK Unified Ideograph Err bitreich.org 70 i-0xedb6 -> U+662e -> 0xfad2 CJK Unified Ideograph Err bitreich.org 70 i-0xedb7 -> U+661e -> 0xfad3 CJK Unified Ideograph Err bitreich.org 70 i-0xedb8 -> U+6624 -> 0xfad4 CJK Unified Ideograph Err bitreich.org 70 i-0xedb9 -> U+6665 -> 0xfad5 CJK Unified Ideograph Err bitreich.org 70 i-0xedba -> U+6657 -> 0xfad6 CJK Unified Ideograph Err bitreich.org 70 i-0xedbb -> U+6659 -> 0xfad7 CJK Unified Ideograph Err bitreich.org 70 i-0xedbc -> U+fa12 -> 0xfad8 CJK compatibility Ideograph Err bitreich.org 70 i-0xedbd -> U+6673 -> 0xfad9 CJK Unified Ideograph Err bitreich.org 70 i-0xedbe -> U+6699 -> 0xfada CJK Unified Ideograph Err bitreich.org 70 i-0xedbf -> U+66a0 -> 0xfadb CJK Unified Ideograph Err bitreich.org 70 i-0xedc0 -> U+66b2 -> 0xfadc CJK Unified Ideograph Err bitreich.org 70 i-0xedc1 -> U+66bf -> 0xfadd CJK Unified Ideograph Err bitreich.org 70 i-0xedc2 -> U+66fa -> 0xfade CJK Unified Ideograph Err bitreich.org 70 i-0xedc3 -> U+670e -> 0xfadf CJK Unified Ideograph Err bitreich.org 70 i-0xedc4 -> U+f929 -> 0xfae0 CJK compatibility Ideograph Err bitreich.org 70 i-0xedc5 -> U+6766 -> 0xfae1 CJK Unified Ideograph Err bitreich.org 70 i-0xedc6 -> U+67bb -> 0xfae2 CJK Unified Ideograph Err bitreich.org 70 i-0xedc7 -> U+6852 -> 0xfae3 CJK Unified Ideograph Err bitreich.org 70 i-0xedc8 -> U+67c0 -> 0xfae4 CJK Unified Ideograph Err bitreich.org 70 i-0xedc9 -> U+6801 -> 0xfae5 CJK Unified Ideograph Err bitreich.org 70 i-0xedca -> U+6844 -> 0xfae6 CJK Unified Ideograph Err bitreich.org 70 i-0xedcb -> U+68cf -> 0xfae7 CJK Unified Ideograph Err bitreich.org 70 i-0xedcc -> U+fa13 -> 0xfae8 CJK compatibility Ideograph Err bitreich.org 70 i-0xedcd -> U+6968 -> 0xfae9 CJK Unified Ideograph Err bitreich.org 70 i-0xedce -> U+fa14 -> 0xfaea CJK compatibility Ideograph Err bitreich.org 70 i-0xedcf -> U+6998 -> 0xfaeb CJK Unified Ideograph Err bitreich.org 70 i-0xedd0 -> U+69e2 -> 0xfaec CJK Unified Ideograph Err bitreich.org 70 i-0xedd1 -> U+6a30 -> 0xfaed CJK Unified Ideograph Err bitreich.org 70 i-0xedd2 -> U+6a6b -> 0xfaee CJK Unified Ideograph Err bitreich.org 70 i-0xedd3 -> U+6a46 -> 0xfaef CJK Unified Ideograph Err bitreich.org 70 i-0xedd4 -> U+6a73 -> 0xfaf0 CJK Unified Ideograph Err bitreich.org 70 i-0xedd5 -> U+6a7e -> 0xfaf1 CJK Unified Ideograph Err bitreich.org 70 i-0xedd6 -> U+6ae2 -> 0xfaf2 CJK Unified Ideograph Err bitreich.org 70 i-0xedd7 -> U+6ae4 -> 0xfaf3 CJK Unified Ideograph Err bitreich.org 70 i-0xedd8 -> U+6bd6 -> 0xfaf4 CJK Unified Ideograph Err bitreich.org 70 i-0xedd9 -> U+6c3f -> 0xfaf5 CJK Unified Ideograph Err bitreich.org 70 i-0xedda -> U+6c5c -> 0xfaf6 CJK Unified Ideograph Err bitreich.org 70 i-0xeddb -> U+6c86 -> 0xfaf7 CJK Unified Ideograph Err bitreich.org 70 i-0xeddc -> U+6c6f -> 0xfaf8 CJK Unified Ideograph Err bitreich.org 70 i-0xeddd -> U+6cda -> 0xfaf9 CJK Unified Ideograph Err bitreich.org 70 i-0xedde -> U+6d04 -> 0xfafa CJK Unified Ideograph Err bitreich.org 70 i-0xeddf -> U+6d87 -> 0xfafb CJK Unified Ideograph Err bitreich.org 70 i-0xede0 -> U+6d6f -> 0xfafc CJK Unified Ideograph Err bitreich.org 70 i-0xede1 -> U+6d96 -> 0xfb40 CJK Unified Ideograph Err bitreich.org 70 i-0xede2 -> U+6dac -> 0xfb41 CJK Unified Ideograph Err bitreich.org 70 i-0xede3 -> U+6dcf -> 0xfb42 CJK Unified Ideograph Err bitreich.org 70 i-0xede4 -> U+6df8 -> 0xfb43 CJK Unified Ideograph Err bitreich.org 70 i-0xede5 -> U+6df2 -> 0xfb44 CJK Unified Ideograph Err bitreich.org 70 i-0xede6 -> U+6dfc -> 0xfb45 CJK Unified Ideograph Err bitreich.org 70 i-0xede7 -> U+6e39 -> 0xfb46 CJK Unified Ideograph Err bitreich.org 70 i-0xede8 -> U+6e5c -> 0xfb47 CJK Unified Ideograph Err bitreich.org 70 i-0xede9 -> U+6e27 -> 0xfb48 CJK Unified Ideograph Err bitreich.org 70 i-0xedea -> U+6e3c -> 0xfb49 CJK Unified Ideograph Err bitreich.org 70 i-0xedeb -> U+6ebf -> 0xfb4a CJK Unified Ideograph Err bitreich.org 70 i-0xedec -> U+6f88 -> 0xfb4b CJK Unified Ideograph Err bitreich.org 70 i-0xeded -> U+6fb5 -> 0xfb4c CJK Unified Ideograph Err bitreich.org 70 i-0xedee -> U+6ff5 -> 0xfb4d CJK Unified Ideograph Err bitreich.org 70 i-0xedef -> U+7005 -> 0xfb4e CJK Unified Ideograph Err bitreich.org 70 i-0xedf0 -> U+7007 -> 0xfb4f CJK Unified Ideograph Err bitreich.org 70 i-0xedf1 -> U+7028 -> 0xfb50 CJK Unified Ideograph Err bitreich.org 70 i-0xedf2 -> U+7085 -> 0xfb51 CJK Unified Ideograph Err bitreich.org 70 i-0xedf3 -> U+70ab -> 0xfb52 CJK Unified Ideograph Err bitreich.org 70 i-0xedf4 -> U+710f -> 0xfb53 CJK Unified Ideograph Err bitreich.org 70 i-0xedf5 -> U+7104 -> 0xfb54 CJK Unified Ideograph Err bitreich.org 70 i-0xedf6 -> U+715c -> 0xfb55 CJK Unified Ideograph Err bitreich.org 70 i-0xedf7 -> U+7146 -> 0xfb56 CJK Unified Ideograph Err bitreich.org 70 i-0xedf8 -> U+7147 -> 0xfb57 CJK Unified Ideograph Err bitreich.org 70 i-0xedf9 -> U+fa15 -> 0xfb58 CJK compatibility Ideograph Err bitreich.org 70 i-0xedfa -> U+71c1 -> 0xfb59 CJK Unified Ideograph Err bitreich.org 70 i-0xedfb -> U+71fe -> 0xfb5a CJK Unified Ideograph Err bitreich.org 70 i-0xedfc -> U+72b1 -> 0xfb5b CJK Unified Ideograph Err bitreich.org 70 i-0xee40 -> U+72be -> 0xfb5c CJK Unified Ideograph Err bitreich.org 70 i-0xee41 -> U+7324 -> 0xfb5d CJK Unified Ideograph Err bitreich.org 70 i-0xee42 -> U+fa16 -> 0xfb5e CJK compatibility Ideograph Err bitreich.org 70 i-0xee43 -> U+7377 -> 0xfb5f CJK Unified Ideograph Err bitreich.org 70 i-0xee44 -> U+73bd -> 0xfb60 CJK Unified Ideograph Err bitreich.org 70 i-0xee45 -> U+73c9 -> 0xfb61 CJK Unified Ideograph Err bitreich.org 70 i-0xee46 -> U+73d6 -> 0xfb62 CJK Unified Ideograph Err bitreich.org 70 i-0xee47 -> U+73e3 -> 0xfb63 CJK Unified Ideograph Err bitreich.org 70 i-0xee48 -> U+73d2 -> 0xfb64 CJK Unified Ideograph Err bitreich.org 70 i-0xee49 -> U+7407 -> 0xfb65 CJK Unified Ideograph Err bitreich.org 70 i-0xee4a -> U+73f5 -> 0xfb66 CJK Unified Ideograph Err bitreich.org 70 i-0xee4b -> U+7426 -> 0xfb67 CJK Unified Ideograph Err bitreich.org 70 i-0xee4c -> U+742a -> 0xfb68 CJK Unified Ideograph Err bitreich.org 70 i-0xee4d -> U+7429 -> 0xfb69 CJK Unified Ideograph Err bitreich.org 70 i-0xee4e -> U+742e -> 0xfb6a CJK Unified Ideograph Err bitreich.org 70 i-0xee4f -> U+7462 -> 0xfb6b CJK Unified Ideograph Err bitreich.org 70 i-0xee50 -> U+7489 -> 0xfb6c CJK Unified Ideograph Err bitreich.org 70 i-0xee51 -> U+749f -> 0xfb6d CJK Unified Ideograph Err bitreich.org 70 i-0xee52 -> U+7501 -> 0xfb6e CJK Unified Ideograph Err bitreich.org 70 i-0xee53 -> U+756f -> 0xfb6f CJK Unified Ideograph Err bitreich.org 70 i-0xee54 -> U+7682 -> 0xfb70 CJK Unified Ideograph Err bitreich.org 70 i-0xee55 -> U+769c -> 0xfb71 CJK Unified Ideograph Err bitreich.org 70 i-0xee56 -> U+769e -> 0xfb72 CJK Unified Ideograph Err bitreich.org 70 i-0xee57 -> U+769b -> 0xfb73 CJK Unified Ideograph Err bitreich.org 70 i-0xee58 -> U+76a6 -> 0xfb74 CJK Unified Ideograph Err bitreich.org 70 i-0xee59 -> U+fa17 -> 0xfb75 CJK compatibility Ideograph Err bitreich.org 70 i-0xee5a -> U+7746 -> 0xfb76 CJK Unified Ideograph Err bitreich.org 70 i-0xee5b -> U+52af -> 0xfb77 CJK Unified Ideograph Err bitreich.org 70 i-0xee5c -> U+7821 -> 0xfb78 CJK Unified Ideograph Err bitreich.org 70 i-0xee5d -> U+784e -> 0xfb79 CJK Unified Ideograph Err bitreich.org 70 i-0xee5e -> U+7864 -> 0xfb7a CJK Unified Ideograph Err bitreich.org 70 i-0xee5f -> U+787a -> 0xfb7b CJK Unified Ideograph Err bitreich.org 70 i-0xee60 -> U+7930 -> 0xfb7c CJK Unified Ideograph Err bitreich.org 70 i-0xee61 -> U+fa18 -> 0xfb7d CJK compatibility Ideograph Err bitreich.org 70 i-0xee62 -> U+fa19 -> 0xfb7e CJK compatibility Ideograph Err bitreich.org 70 i-0xee63 -> U+fa1a -> 0xfb80 CJK compatibility Ideograph Err bitreich.org 70 i-0xee64 -> U+7994 -> 0xfb81 CJK Unified Ideograph Err bitreich.org 70 i-0xee65 -> U+fa1b -> 0xfb82 CJK compatibility Ideograph Err bitreich.org 70 i-0xee66 -> U+799b -> 0xfb83 CJK Unified Ideograph Err bitreich.org 70 i-0xee67 -> U+7ad1 -> 0xfb84 CJK Unified Ideograph Err bitreich.org 70 i-0xee68 -> U+7ae7 -> 0xfb85 CJK Unified Ideograph Err bitreich.org 70 i-0xee69 -> U+fa1c -> 0xfb86 CJK compatibility Ideograph Err bitreich.org 70 i-0xee6a -> U+7aeb -> 0xfb87 CJK Unified Ideograph Err bitreich.org 70 i-0xee6b -> U+7b9e -> 0xfb88 CJK Unified Ideograph Err bitreich.org 70 i-0xee6c -> U+fa1d -> 0xfb89 CJK compatibility Ideograph Err bitreich.org 70 i-0xee6d -> U+7d48 -> 0xfb8a CJK Unified Ideograph Err bitreich.org 70 i-0xee6e -> U+7d5c -> 0xfb8b CJK Unified Ideograph Err bitreich.org 70 i-0xee6f -> U+7db7 -> 0xfb8c CJK Unified Ideograph Err bitreich.org 70 i-0xee70 -> U+7da0 -> 0xfb8d CJK Unified Ideograph Err bitreich.org 70 i-0xee71 -> U+7dd6 -> 0xfb8e CJK Unified Ideograph Err bitreich.org 70 i-0xee72 -> U+7e52 -> 0xfb8f CJK Unified Ideograph Err bitreich.org 70 i-0xee73 -> U+7f47 -> 0xfb90 CJK Unified Ideograph Err bitreich.org 70 i-0xee74 -> U+7fa1 -> 0xfb91 CJK Unified Ideograph Err bitreich.org 70 i-0xee75 -> U+fa1e -> 0xfb92 CJK compatibility Ideograph Err bitreich.org 70 i-0xee76 -> U+8301 -> 0xfb93 CJK Unified Ideograph Err bitreich.org 70 i-0xee77 -> U+8362 -> 0xfb94 CJK Unified Ideograph Err bitreich.org 70 i-0xee78 -> U+837f -> 0xfb95 CJK Unified Ideograph Err bitreich.org 70 i-0xee79 -> U+83c7 -> 0xfb96 CJK Unified Ideograph Err bitreich.org 70 i-0xee7a -> U+83f6 -> 0xfb97 CJK Unified Ideograph Err bitreich.org 70 i-0xee7b -> U+8448 -> 0xfb98 CJK Unified Ideograph Err bitreich.org 70 i-0xee7c -> U+84b4 -> 0xfb99 CJK Unified Ideograph Err bitreich.org 70 i-0xee7d -> U+8553 -> 0xfb9a CJK Unified Ideograph Err bitreich.org 70 i-0xee7e -> U+8559 -> 0xfb9b CJK Unified Ideograph Err bitreich.org 70 i-0xee80 -> U+856b -> 0xfb9c CJK Unified Ideograph Err bitreich.org 70 i-0xee81 -> U+fa1f -> 0xfb9d CJK compatibility Ideograph Err bitreich.org 70 i-0xee82 -> U+85b0 -> 0xfb9e CJK Unified Ideograph Err bitreich.org 70 i-0xee83 -> U+fa20 -> 0xfb9f CJK compatibility Ideograph Err bitreich.org 70 i-0xee84 -> U+fa21 -> 0xfba0 CJK compatibility Ideograph Err bitreich.org 70 i-0xee85 -> U+8807 -> 0xfba1 CJK Unified Ideograph Err bitreich.org 70 i-0xee86 -> U+88f5 -> 0xfba2 CJK Unified Ideograph Err bitreich.org 70 i-0xee87 -> U+8a12 -> 0xfba3 CJK Unified Ideograph Err bitreich.org 70 i-0xee88 -> U+8a37 -> 0xfba4 CJK Unified Ideograph Err bitreich.org 70 i-0xee89 -> U+8a79 -> 0xfba5 CJK Unified Ideograph Err bitreich.org 70 i-0xee8a -> U+8aa7 -> 0xfba6 CJK Unified Ideograph Err bitreich.org 70 i-0xee8b -> U+8abe -> 0xfba7 CJK Unified Ideograph Err bitreich.org 70 i-0xee8c -> U+8adf -> 0xfba8 CJK Unified Ideograph Err bitreich.org 70 i-0xee8d -> U+fa22 -> 0xfba9 CJK compatibility Ideograph Err bitreich.org 70 i-0xee8e -> U+8af6 -> 0xfbaa CJK Unified Ideograph Err bitreich.org 70 i-0xee8f -> U+8b53 -> 0xfbab CJK Unified Ideograph Err bitreich.org 70 i-0xee90 -> U+8b7f -> 0xfbac CJK Unified Ideograph Err bitreich.org 70 i-0xee91 -> U+8cf0 -> 0xfbad CJK Unified Ideograph Err bitreich.org 70 i-0xee92 -> U+8cf4 -> 0xfbae CJK Unified Ideograph Err bitreich.org 70 i-0xee93 -> U+8d12 -> 0xfbaf CJK Unified Ideograph Err bitreich.org 70 i-0xee94 -> U+8d76 -> 0xfbb0 CJK Unified Ideograph Err bitreich.org 70 i-0xee95 -> U+fa23 -> 0xfbb1 CJK compatibility Ideograph Err bitreich.org 70 i-0xee96 -> U+8ecf -> 0xfbb2 CJK Unified Ideograph Err bitreich.org 70 i-0xee97 -> U+fa24 -> 0xfbb3 CJK compatibility Ideograph Err bitreich.org 70 i-0xee98 -> U+fa25 -> 0xfbb4 CJK compatibility Ideograph Err bitreich.org 70 i-0xee99 -> U+9067 -> 0xfbb5 CJK Unified Ideograph Err bitreich.org 70 i-0xee9a -> U+90de -> 0xfbb6 CJK Unified Ideograph Err bitreich.org 70 i-0xee9b -> U+fa26 -> 0xfbb7 CJK compatibility Ideograph Err bitreich.org 70 i-0xee9c -> U+9115 -> 0xfbb8 CJK Unified Ideograph Err bitreich.org 70 i-0xee9d -> U+9127 -> 0xfbb9 CJK Unified Ideograph Err bitreich.org 70 i-0xee9e -> U+91da -> 0xfbba CJK Unified Ideograph Err bitreich.org 70 i-0xee9f -> U+91d7 -> 0xfbbb CJK Unified Ideograph Err bitreich.org 70 i-0xeea0 -> U+91de -> 0xfbbc CJK Unified Ideograph Err bitreich.org 70 i-0xeea1 -> U+91ed -> 0xfbbd CJK Unified Ideograph Err bitreich.org 70 i-0xeea2 -> U+91ee -> 0xfbbe CJK Unified Ideograph Err bitreich.org 70 i-0xeea3 -> U+91e4 -> 0xfbbf CJK Unified Ideograph Err bitreich.org 70 i-0xeea4 -> U+91e5 -> 0xfbc0 CJK Unified Ideograph Err bitreich.org 70 i-0xeea5 -> U+9206 -> 0xfbc1 CJK Unified Ideograph Err bitreich.org 70 i-0xeea6 -> U+9210 -> 0xfbc2 CJK Unified Ideograph Err bitreich.org 70 i-0xeea7 -> U+920a -> 0xfbc3 CJK Unified Ideograph Err bitreich.org 70 i-0xeea8 -> U+923a -> 0xfbc4 CJK Unified Ideograph Err bitreich.org 70 i-0xeea9 -> U+9240 -> 0xfbc5 CJK Unified Ideograph Err bitreich.org 70 i-0xeeaa -> U+923c -> 0xfbc6 CJK Unified Ideograph Err bitreich.org 70 i-0xeeab -> U+924e -> 0xfbc7 CJK Unified Ideograph Err bitreich.org 70 i-0xeeac -> U+9259 -> 0xfbc8 CJK Unified Ideograph Err bitreich.org 70 i-0xeead -> U+9251 -> 0xfbc9 CJK Unified Ideograph Err bitreich.org 70 i-0xeeae -> U+9239 -> 0xfbca CJK Unified Ideograph Err bitreich.org 70 i-0xeeaf -> U+9267 -> 0xfbcb CJK Unified Ideograph Err bitreich.org 70 i-0xeeb0 -> U+92a7 -> 0xfbcc CJK Unified Ideograph Err bitreich.org 70 i-0xeeb1 -> U+9277 -> 0xfbcd CJK Unified Ideograph Err bitreich.org 70 i-0xeeb2 -> U+9278 -> 0xfbce CJK Unified Ideograph Err bitreich.org 70 i-0xeeb3 -> U+92e7 -> 0xfbcf CJK Unified Ideograph Err bitreich.org 70 i-0xeeb4 -> U+92d7 -> 0xfbd0 CJK Unified Ideograph Err bitreich.org 70 i-0xeeb5 -> U+92d9 -> 0xfbd1 CJK Unified Ideograph Err bitreich.org 70 i-0xeeb6 -> U+92d0 -> 0xfbd2 CJK Unified Ideograph Err bitreich.org 70 i-0xeeb7 -> U+fa27 -> 0xfbd3 CJK compatibility Ideograph Err bitreich.org 70 i-0xeeb8 -> U+92d5 -> 0xfbd4 CJK Unified Ideograph Err bitreich.org 70 i-0xeeb9 -> U+92e0 -> 0xfbd5 CJK Unified Ideograph Err bitreich.org 70 i-0xeeba -> U+92d3 -> 0xfbd6 CJK Unified Ideograph Err bitreich.org 70 i-0xeebb -> U+9325 -> 0xfbd7 CJK Unified Ideograph Err bitreich.org 70 i-0xeebc -> U+9321 -> 0xfbd8 CJK Unified Ideograph Err bitreich.org 70 i-0xeebd -> U+92fb -> 0xfbd9 CJK Unified Ideograph Err bitreich.org 70 i-0xeebe -> U+fa28 -> 0xfbda CJK compatibility Ideograph Err bitreich.org 70 i-0xeebf -> U+931e -> 0xfbdb CJK Unified Ideograph Err bitreich.org 70 i-0xeec0 -> U+92ff -> 0xfbdc CJK Unified Ideograph Err bitreich.org 70 i-0xeec1 -> U+931d -> 0xfbdd CJK Unified Ideograph Err bitreich.org 70 i-0xeec2 -> U+9302 -> 0xfbde CJK Unified Ideograph Err bitreich.org 70 i-0xeec3 -> U+9370 -> 0xfbdf CJK Unified Ideograph Err bitreich.org 70 i-0xeec4 -> U+9357 -> 0xfbe0 CJK Unified Ideograph Err bitreich.org 70 i-0xeec5 -> U+93a4 -> 0xfbe1 CJK Unified Ideograph Err bitreich.org 70 i-0xeec6 -> U+93c6 -> 0xfbe2 CJK Unified Ideograph Err bitreich.org 70 i-0xeec7 -> U+93de -> 0xfbe3 CJK Unified Ideograph Err bitreich.org 70 i-0xeec8 -> U+93f8 -> 0xfbe4 CJK Unified Ideograph Err bitreich.org 70 i-0xeec9 -> U+9431 -> 0xfbe5 CJK Unified Ideograph Err bitreich.org 70 i-0xeeca -> U+9445 -> 0xfbe6 CJK Unified Ideograph Err bitreich.org 70 i-0xeecb -> U+9448 -> 0xfbe7 CJK Unified Ideograph Err bitreich.org 70 i-0xeecc -> U+9592 -> 0xfbe8 CJK Unified Ideograph Err bitreich.org 70 i-0xeecd -> U+f9dc -> 0xfbe9 CJK compatibility Ideograph Err bitreich.org 70 i-0xeece -> U+fa29 -> 0xfbea CJK compatibility Ideograph Err bitreich.org 70 i-0xeecf -> U+969d -> 0xfbeb CJK Unified Ideograph Err bitreich.org 70 i-0xeed0 -> U+96af -> 0xfbec CJK Unified Ideograph Err bitreich.org 70 i-0xeed1 -> U+9733 -> 0xfbed CJK Unified Ideograph Err bitreich.org 70 i-0xeed2 -> U+973b -> 0xfbee CJK Unified Ideograph Err bitreich.org 70 i-0xeed3 -> U+9743 -> 0xfbef CJK Unified Ideograph Err bitreich.org 70 i-0xeed4 -> U+974d -> 0xfbf0 CJK Unified Ideograph Err bitreich.org 70 i-0xeed5 -> U+974f -> 0xfbf1 CJK Unified Ideograph Err bitreich.org 70 i-0xeed6 -> U+9751 -> 0xfbf2 CJK Unified Ideograph Err bitreich.org 70 i-0xeed7 -> U+9755 -> 0xfbf3 CJK Unified Ideograph Err bitreich.org 70 i-0xeed8 -> U+9857 -> 0xfbf4 CJK Unified Ideograph Err bitreich.org 70 i-0xeed9 -> U+9865 -> 0xfbf5 CJK Unified Ideograph Err bitreich.org 70 i-0xeeda -> U+fa2a -> 0xfbf6 CJK compatibility Ideograph Err bitreich.org 70 i-0xeedb -> U+fa2b -> 0xfbf7 CJK compatibility Ideograph Err bitreich.org 70 i-0xeedc -> U+9927 -> 0xfbf8 CJK Unified Ideograph Err bitreich.org 70 i-0xeedd -> U+fa2c -> 0xfbf9 CJK compatibility Ideograph Err bitreich.org 70 i-0xeede -> U+999e -> 0xfbfa CJK Unified Ideograph Err bitreich.org 70 i-0xeedf -> U+9a4e -> 0xfbfb CJK Unified Ideograph Err bitreich.org 70 i-0xeee0 -> U+9ad9 -> 0xfbfc CJK Unified Ideograph Err bitreich.org 70 i-0xeee1 -> U+9adc -> 0xfc40 CJK Unified Ideograph Err bitreich.org 70 i-0xeee2 -> U+9b75 -> 0xfc41 CJK Unified Ideograph Err bitreich.org 70 i-0xeee3 -> U+9b72 -> 0xfc42 CJK Unified Ideograph Err bitreich.org 70 i-0xeee4 -> U+9b8f -> 0xfc43 CJK Unified Ideograph Err bitreich.org 70 i-0xeee5 -> U+9bb1 -> 0xfc44 CJK Unified Ideograph Err bitreich.org 70 i-0xeee6 -> U+9bbb -> 0xfc45 CJK Unified Ideograph Err bitreich.org 70 i-0xeee7 -> U+9c00 -> 0xfc46 CJK Unified Ideograph Err bitreich.org 70 i-0xeee8 -> U+9d70 -> 0xfc47 CJK Unified Ideograph Err bitreich.org 70 i-0xeee9 -> U+9d6b -> 0xfc48 CJK Unified Ideograph Err bitreich.org 70 i-0xeeea -> U+fa2d -> 0xfc49 CJK compatibility Ideograph Err bitreich.org 70 i-0xeeeb -> U+9e19 -> 0xfc4a CJK Unified Ideograph Err bitreich.org 70 i-0xeeec -> U+9ed1 -> 0xfc4b CJK Unified Ideograph Err bitreich.org 70 i-0xeeef -> U+2170 -> 0xfa40 Small Roman Numeral One Err bitreich.org 70 i-0xeef0 -> U+2171 -> 0xfa41 Small Roman Numeral Two Err bitreich.org 70 i-0xeef1 -> U+2172 -> 0xfa42 Small Roman Numeral Three Err bitreich.org 70 i-0xeef2 -> U+2173 -> 0xfa43 Small Roman Numeral Four Err bitreich.org 70 i-0xeef3 -> U+2174 -> 0xfa44 Small Roman Numeral Five Err bitreich.org 70 i-0xeef4 -> U+2175 -> 0xfa45 Small Roman Numeral Six Err bitreich.org 70 i-0xeef5 -> U+2176 -> 0xfa46 Small Roman Numeral Seven Err bitreich.org 70 i-0xeef6 -> U+2177 -> 0xfa47 Small Roman Numeral Eight Err bitreich.org 70 i-0xeef7 -> U+2178 -> 0xfa48 Small Roman Numeral Nine Err bitreich.org 70 i-0xeef8 -> U+2179 -> 0xfa49 Small Roman Numeral Ten Err bitreich.org 70 i-0xeef9 -> U+ffe2 -> 0x81ca Fullwidth Not Sign Err bitreich.org 70 i-0xeefa -> U+ffe4 -> 0xfa55 Fullwidth Broken Bar Err bitreich.org 70 i-0xeefb -> U+ff07 -> 0xfa56 Fullwidth Apostrophe Err bitreich.org 70 i-0xeefc -> U+ff02 -> 0xfa57 Fullwidth Quotation Mark Err bitreich.org 70 i-0xfa4a -> U+2160 -> 0x8754 Roman Numeral One Err bitreich.org 70 i-0xfa4b -> U+2161 -> 0x8755 Roman Numeral Two Err bitreich.org 70 i-0xfa4c -> U+2162 -> 0x8756 Roman Numeral Three Err bitreich.org 70 i-0xfa4d -> U+2163 -> 0x8757 Roman Numeral Four Err bitreich.org 70 i-0xfa4e -> U+2164 -> 0x8758 Roman Numeral Five Err bitreich.org 70 i-0xfa4f -> U+2165 -> 0x8759 Roman Numeral Six Err bitreich.org 70 i-0xfa50 -> U+2166 -> 0x875a Roman Numeral Seven Err bitreich.org 70 i-0xfa51 -> U+2167 -> 0x875b Roman Numeral Eight Err bitreich.org 70 i-0xfa52 -> U+2168 -> 0x875c Roman Numeral Nine Err bitreich.org 70 i-0xfa53 -> U+2169 -> 0x875d Roman Numeral Ten Err bitreich.org 70 i-0xfa54 -> U+ffe2 -> 0x81ca Fullwidth Not Sign Err bitreich.org 70 i-0xfa58 -> U+3231 -> 0x878a Parenthesized Ideograph Stock Err bitreich.org 70 i-0xfa59 -> U+2116 -> 0x8782 Numero Sign Err bitreich.org 70 i-0xfa5a -> U+2121 -> 0x8784 Telephone Sign Err bitreich.org 70 i-0xfa5b -> U+2235 -> 0x81e6 Because")) Err bitreich.org 70 i- (with-input-from-string (s kb170559) Err bitreich.org 70 i- (loop for line = (read-line s nil) until (null line) Err bitreich.org 70 i- do (let ((ucs (parse-integer (subseq line 14 18) :radix 16)) Err bitreich.org 70 i- (cp932 (parse-integer (subseq line 26 30) :radix 16))) Err bitreich.org 70 i- (setf (gethash ucs *ucs-to-cp932-hash*) cp932))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun eucjp-to-ucs (code) Err bitreich.org 70 i- (values (gethash code *eucjp-to-ucs-hash*))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ucs-to-eucjp (code) Err bitreich.org 70 i- (values (gethash code *ucs-to-eucjp-hash*))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun cp932-to-ucs (code) Err bitreich.org 70 i- (values (gethash code *cp932-to-ucs-hash*))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ucs-to-cp932 (code) Err bitreich.org 70 i- (values (gethash code *ucs-to-cp932-hash*))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; EUC-JP Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :eucjp Err bitreich.org 70 i- "An 8-bit, variable-length character encoding in which Err bitreich.org 70 i-character code points in the range #x00-#x7f can be encoded in a Err bitreich.org 70 i-single octet; characters with larger code values can be encoded Err bitreich.org 70 i-in 2 to 3 bytes." Err bitreich.org 70 i- :max-units-per-char 3 Err bitreich.org 70 i- :literal-char-code-limit #x80) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(define-octet-counter :eucjp (getter type) Err bitreich.org 70 i- `(named-lambda eucjp-octet-counter (seq start end max) Err bitreich.org 70 i- (declare (type ,type seq) (fixnum start end max)) Err bitreich.org 70 i- (loop with noctets fixnum = 0 Err bitreich.org 70 i- for i fixnum from start below end Err bitreich.org 70 i- for code of-type code-point = (,getter seq i) Err bitreich.org 70 i- do (let* ((c (ucs-to-eucjp code)) Err bitreich.org 70 i- (new (+ (cond ((< #xffff c) 3) Err bitreich.org 70 i- ((< #xff c) 2) Err bitreich.org 70 i- (t 1)) Err bitreich.org 70 i- noctets))) Err bitreich.org 70 i- (if (and (plusp max) (> new max)) Err bitreich.org 70 i- (loop-finish) Err bitreich.org 70 i- (setq noctets new))) Err bitreich.org 70 i- finally (return (values noctets i))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-code-point-counter :eucjp (getter type) Err bitreich.org 70 i- `(named-lambda eucjp-code-point-counter (seq start end max) Err bitreich.org 70 i- (declare (type ,type seq) (fixnum start end max)) Err bitreich.org 70 i- (loop with nchars fixnum = 0 Err bitreich.org 70 i- with i fixnum = start Err bitreich.org 70 i- while (< i end) do Err bitreich.org 70 i- (let* ((octet (,getter seq i)) Err bitreich.org 70 i- (next-i (+ i (cond ((= #x8f octet) 3) Err bitreich.org 70 i- ((or (< #xa0 octet #xff) Err bitreich.org 70 i- (= #x8e octet)) 2) Err bitreich.org 70 i- (t 1))))) Err bitreich.org 70 i- (declare (type ub8 octet) (fixnum next-i)) Err bitreich.org 70 i- (cond ((> next-i end) Err bitreich.org 70 i- ;; Should we add restarts to this error, we'll have Err bitreich.org 70 i- ;; to figure out a way to communicate with the Err bitreich.org 70 i- ;; decoder since we probably want to do something Err bitreich.org 70 i- ;; about it right here when we have a chance to Err bitreich.org 70 i- ;; change the count or something. (Like an Err bitreich.org 70 i- ;; alternative replacement character or perhaps the Err bitreich.org 70 i- ;; existence of this error so that the decoder Err bitreich.org 70 i- ;; doesn't have to check for it on every iteration Err bitreich.org 70 i- ;; like we do.) Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; FIXME: The data for this error is not right. Err bitreich.org 70 i- (decoding-error (vector octet) :eucjp seq i Err bitreich.org 70 i- nil 'end-of-input-in-character) Err bitreich.org 70 i- (return (values (1+ nchars) end))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (setq nchars (1+ nchars) Err bitreich.org 70 i- i next-i) Err bitreich.org 70 i- (when (and (plusp max) (= nchars max)) Err bitreich.org 70 i- (return (values nchars i)))))) Err bitreich.org 70 i- finally (progn (assert (= i end)) Err bitreich.org 70 i- (return (values nchars i)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-encoder :eucjp (getter src-type setter dest-type) Err bitreich.org 70 i- `(named-lambda eucjp-encoder (src start end dest d-start) Err bitreich.org 70 i- (declare (type ,src-type src) Err bitreich.org 70 i- (type ,dest-type dest) Err bitreich.org 70 i- (fixnum start end d-start)) Err bitreich.org 70 i- (loop with di fixnum = d-start Err bitreich.org 70 i- for i fixnum from start below end Err bitreich.org 70 i- for code of-type code-point = (,getter src i) Err bitreich.org 70 i- for eucjp of-type code-point Err bitreich.org 70 i- = (ucs-to-eucjp code) do Err bitreich.org 70 i- (macrolet ((set-octet (offset value) Err bitreich.org 70 i- `(,',setter ,value dest (the fixnum (+ di ,offset))))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ;; 1 octet Err bitreich.org 70 i- ((< eucjp #x100) Err bitreich.org 70 i- (set-octet 0 eucjp) Err bitreich.org 70 i- (incf di)) Err bitreich.org 70 i- ;; 2 octets Err bitreich.org 70 i- ((< eucjp #x10000) Err bitreich.org 70 i- (set-octet 0 (f-logand #xff (f-ash eucjp -8))) Err bitreich.org 70 i- (set-octet 1 (logand eucjp #xff)) Err bitreich.org 70 i- (incf di 2)) Err bitreich.org 70 i- ;; 3 octets Err bitreich.org 70 i- (t Err bitreich.org 70 i- (set-octet 0 (f-logand #xff (f-ash eucjp -16))) Err bitreich.org 70 i- (set-octet 1 (f-logand #xff (f-ash eucjp -8))) Err bitreich.org 70 i- (set-octet 2 (logand eucjp #xff)) Err bitreich.org 70 i- (incf di 3)) Err bitreich.org 70 i- )) Err bitreich.org 70 i- finally (return (the fixnum (- di d-start)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(define-decoder :eucjp (getter src-type setter dest-type) Err bitreich.org 70 i- `(named-lambda eucjp-decoder (src start end dest d-start) Err bitreich.org 70 i- (declare (type ,src-type src) Err bitreich.org 70 i- (type ,dest-type dest) Err bitreich.org 70 i- (fixnum start end d-start)) Err bitreich.org 70 i- (let ((u2 0)) Err bitreich.org 70 i- (declare (type ub8 u2)) Err bitreich.org 70 i- (loop for di fixnum from d-start Err bitreich.org 70 i- for i fixnum from start below end Err bitreich.org 70 i- for u1 of-type ub8 = (,getter src i) do Err bitreich.org 70 i- ;; Note: CONSUME-OCTET doesn't check if I is being Err bitreich.org 70 i- ;; incremented past END. We're assuming that END has Err bitreich.org 70 i- ;; been calculated with the CODE-POINT-POINTER above that Err bitreich.org 70 i- ;; checks this. Err bitreich.org 70 i- (macrolet Err bitreich.org 70 i- ((consume-octet () Err bitreich.org 70 i- `(let ((next-i (incf i))) Err bitreich.org 70 i- (if (= next-i end) Err bitreich.org 70 i- ;; FIXME: data for this error is incomplete. Err bitreich.org 70 i- ;; and signalling this error twice Err bitreich.org 70 i- (return-from setter-block Err bitreich.org 70 i- (decoding-error nil :eucjp src i +repl+ Err bitreich.org 70 i- 'end-of-input-in-character)) Err bitreich.org 70 i- (,',getter src next-i)))) Err bitreich.org 70 i- (handle-error (n &optional (c 'character-decoding-error)) Err bitreich.org 70 i- `(decoding-error Err bitreich.org 70 i- (vector ,@(subseq '(u1 u2) 0 n)) Err bitreich.org 70 i- :eucjp src (1+ (- i ,n)) +repl+ ',c)) Err bitreich.org 70 i- (handle-error-if-icb (var n) Err bitreich.org 70 i- `(when (not (< #x7f ,var #xc0)) Err bitreich.org 70 i- (decf i) Err bitreich.org 70 i- (return-from setter-block Err bitreich.org 70 i- (handle-error ,n invalid-utf8-continuation-byte))))) Err bitreich.org 70 i- (,setter Err bitreich.org 70 i- (block setter-block Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ;; 3 octets Err bitreich.org 70 i- ((= u1 #x8f) Err bitreich.org 70 i- (setq u2 (consume-octet)) Err bitreich.org 70 i- (eucjp-to-ucs (logior #x8f0000 Err bitreich.org 70 i- (f-ash u2 8) Err bitreich.org 70 i- (consume-octet)))) Err bitreich.org 70 i- ;; 2 octets Err bitreich.org 70 i- ((or (= u1 #x8e) Err bitreich.org 70 i- (< #xa0 u1 #xff)) Err bitreich.org 70 i- (eucjp-to-ucs (logior (f-ash u1 8) Err bitreich.org 70 i- (consume-octet)))) Err bitreich.org 70 i- ;; 1 octet Err bitreich.org 70 i- (t Err bitreich.org 70 i- (eucjp-to-ucs u1)))) Err bitreich.org 70 i- dest di)) Err bitreich.org 70 i- finally (return (the fixnum (- di d-start))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; CP932 Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :cp932 Err bitreich.org 70 i- "An 8-bit, variable-length character encoding in which Err bitreich.org 70 i-character code points in the range #x00-#x7f can be encoded in a Err bitreich.org 70 i-single octet; characters with larger code values can be encoded Err bitreich.org 70 i-in 2 bytes." Err bitreich.org 70 i- :max-units-per-char 2 Err bitreich.org 70 i- :literal-char-code-limit #x80) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(define-octet-counter :cp932 (getter type) Err bitreich.org 70 i- `(named-lambda cp932-octet-counter (seq start end max) Err bitreich.org 70 i- (declare (type ,type seq) (fixnum start end max)) Err bitreich.org 70 i- (loop with noctets fixnum = 0 Err bitreich.org 70 i- for i fixnum from start below end Err bitreich.org 70 i- for code of-type code-point = (,getter seq i) Err bitreich.org 70 i- do (let* ((c (ucs-to-cp932 code)) Err bitreich.org 70 i- (new (+ (cond ((< #xff c) 2) Err bitreich.org 70 i- (t 1)) Err bitreich.org 70 i- noctets))) Err bitreich.org 70 i- (if (and (plusp max) (> new max)) Err bitreich.org 70 i- (loop-finish) Err bitreich.org 70 i- (setq noctets new))) Err bitreich.org 70 i- finally (return (values noctets i))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-code-point-counter :cp932 (getter type) Err bitreich.org 70 i- `(named-lambda cp932-code-point-counter (seq start end max) Err bitreich.org 70 i- (declare (type ,type seq) (fixnum start end max)) Err bitreich.org 70 i- (loop with nchars fixnum = 0 Err bitreich.org 70 i- with i fixnum = start Err bitreich.org 70 i- while (< i end) do Err bitreich.org 70 i- (let* ((octet (,getter seq i)) Err bitreich.org 70 i- (next-i (+ i (cond ((or (<= #x81 octet #x9f) Err bitreich.org 70 i- (<= #xe0 octet #xfc)) Err bitreich.org 70 i- 2) Err bitreich.org 70 i- (t 1))))) Err bitreich.org 70 i- (declare (type ub8 octet) (fixnum next-i)) Err bitreich.org 70 i- (cond ((> next-i end) Err bitreich.org 70 i- ;; Should we add restarts to this error, we'll have Err bitreich.org 70 i- ;; to figure out a way to communicate with the Err bitreich.org 70 i- ;; decoder since we probably want to do something Err bitreich.org 70 i- ;; about it right here when we have a chance to Err bitreich.org 70 i- ;; change the count or something. (Like an Err bitreich.org 70 i- ;; alternative replacement character or perhaps the Err bitreich.org 70 i- ;; existence of this error so that the decoder Err bitreich.org 70 i- ;; doesn't have to check for it on every iteration Err bitreich.org 70 i- ;; like we do.) Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; FIXME: The data for this error is not right. Err bitreich.org 70 i- (decoding-error (vector octet) :cp932 seq i Err bitreich.org 70 i- nil 'end-of-input-in-character) Err bitreich.org 70 i- (return (values (1+ nchars) end))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (setq nchars (1+ nchars) Err bitreich.org 70 i- i next-i) Err bitreich.org 70 i- (when (and (plusp max) (= nchars max)) Err bitreich.org 70 i- (return (values nchars i)))))) Err bitreich.org 70 i- finally (progn (assert (= i end)) Err bitreich.org 70 i- (return (values nchars i)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-encoder :cp932 (getter src-type setter dest-type) Err bitreich.org 70 i- `(named-lambda cp932-encoder (src start end dest d-start) Err bitreich.org 70 i- (declare (type ,src-type src) Err bitreich.org 70 i- (type ,dest-type dest) Err bitreich.org 70 i- (fixnum start end d-start)) Err bitreich.org 70 i- (loop with di fixnum = d-start Err bitreich.org 70 i- for i fixnum from start below end Err bitreich.org 70 i- for code of-type code-point = (,getter src i) Err bitreich.org 70 i- for cp932 of-type code-point Err bitreich.org 70 i- = (ucs-to-cp932 code) do Err bitreich.org 70 i- (macrolet ((set-octet (offset value) Err bitreich.org 70 i- `(,',setter ,value dest (the fixnum (+ di ,offset))))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ;; 1 octet Err bitreich.org 70 i- ((< cp932 #x100) Err bitreich.org 70 i- (set-octet 0 cp932) Err bitreich.org 70 i- (incf di)) Err bitreich.org 70 i- ;; 2 octets Err bitreich.org 70 i- ((< cp932 #x10000) Err bitreich.org 70 i- (set-octet 0 (f-logand #xff (f-ash cp932 -8))) Err bitreich.org 70 i- (set-octet 1 (logand cp932 #xff)) Err bitreich.org 70 i- (incf di 2)) Err bitreich.org 70 i- ;; 3 octets Err bitreich.org 70 i- (t Err bitreich.org 70 i- (set-octet 0 (f-logand #xff (f-ash cp932 -16))) Err bitreich.org 70 i- (set-octet 1 (f-logand #xff (f-ash cp932 -8))) Err bitreich.org 70 i- (set-octet 2 (logand cp932 #xff)) Err bitreich.org 70 i- (incf di 3)) Err bitreich.org 70 i- )) Err bitreich.org 70 i- finally (return (the fixnum (- di d-start)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(define-decoder :cp932 (getter src-type setter dest-type) Err bitreich.org 70 i- `(named-lambda cp932-decoder (src start end dest d-start) Err bitreich.org 70 i- (declare (type ,src-type src) Err bitreich.org 70 i- (type ,dest-type dest) Err bitreich.org 70 i- (fixnum start end d-start)) Err bitreich.org 70 i- (let ((u2 0)) Err bitreich.org 70 i- (declare (type ub8 u2)) Err bitreich.org 70 i- (loop for di fixnum from d-start Err bitreich.org 70 i- for i fixnum from start below end Err bitreich.org 70 i- for u1 of-type ub8 = (,getter src i) do Err bitreich.org 70 i- ;; Note: CONSUME-OCTET doesn't check if I is being Err bitreich.org 70 i- ;; incremented past END. We're assuming that END has Err bitreich.org 70 i- ;; been calculated with the CODE-POINT-POINTER above that Err bitreich.org 70 i- ;; checks this. Err bitreich.org 70 i- (macrolet Err bitreich.org 70 i- ((consume-octet () Err bitreich.org 70 i- `(let ((next-i (incf i))) Err bitreich.org 70 i- (if (= next-i end) Err bitreich.org 70 i- ;; FIXME: data for this error is incomplete. Err bitreich.org 70 i- ;; and signalling this error twice Err bitreich.org 70 i- (return-from setter-block Err bitreich.org 70 i- (decoding-error nil :cp932 src i +repl+ Err bitreich.org 70 i- 'end-of-input-in-character)) Err bitreich.org 70 i- (,',getter src next-i)))) Err bitreich.org 70 i- (handle-error (n &optional (c 'character-decoding-error)) Err bitreich.org 70 i- `(decoding-error Err bitreich.org 70 i- (vector ,@(subseq '(u1 u2) 0 n)) Err bitreich.org 70 i- :cp932 src (1+ (- i ,n)) +repl+ ',c)) Err bitreich.org 70 i- (handle-error-if-icb (var n) Err bitreich.org 70 i- `(when (not (< #x7f ,var #xc0)) Err bitreich.org 70 i- (decf i) Err bitreich.org 70 i- (return-from setter-block Err bitreich.org 70 i- (handle-error ,n invalid-utf8-continuation-byte))))) Err bitreich.org 70 i- (,setter Err bitreich.org 70 i- (block setter-block Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ;; 2 octets Err bitreich.org 70 i- ((or (<= #x81 u1 #x9f) Err bitreich.org 70 i- (<= #xe0 u1 #xfc)) Err bitreich.org 70 i- (setq u2 (consume-octet)) Err bitreich.org 70 i- (cp932-to-ucs (logior (f-ash u1 8) Err bitreich.org 70 i- u2))) Err bitreich.org 70 i- ;; 1 octet Err bitreich.org 70 i- (t Err bitreich.org 70 i- (cp932-to-ucs u1)))) Err bitreich.org 70 i- dest di)) Err bitreich.org 70 i- finally (return (the fixnum (- di d-start))))))) Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/src/enc-koi8.lisp b/3rdparties/software/babel-20171227-git/src/enc-koi8.lisp /scm/clic/file/3rdparties/software/babel-20171227-git/src/enc-koi8.lisp.gph bitreich.org 70 i@@ -1,577 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; enc-cp1251.lisp --- Implementation of the CP1251 character encoding. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2009, Andrey Moskvitin Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:babel-encodings) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :koi8-ru Err bitreich.org 70 i- "An 8-bit, fixed-width character Russian encoding." Err bitreich.org 70 i- :literal-char-code-limit #x80) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +koi8-ru-to-unicode+ Err bitreich.org 70 i- #(#x2500 #x2502 #x250C #x2510 #x2514 #x2518 #x251C #x2524 Err bitreich.org 70 i- #x252C #x2534 #x253C #x2580 #x2584 #x2588 #x258C #x2590 Err bitreich.org 70 i- #x2591 #x2592 #x2593 #x2320 #x25A0 #x2219 #x221A #x2248 Err bitreich.org 70 i- #x2264 #x2265 #x00A0 #x2321 #x00B0 #x00B2 #x00B7 #x00F7 Err bitreich.org 70 i- #x2550 #x2551 #x2552 #x0451 #x0454 #x2554 #x0456 #x0457 Err bitreich.org 70 i- #x2557 #x2558 #x2559 #x255A #x255B #x0491 #x045E #x255E Err bitreich.org 70 i- #x255F #x2560 #x2561 #x0401 #x0404 #x2563 #x0406 #x0407 Err bitreich.org 70 i- #x2566 #x2567 #x2568 #x2569 #x256A #x0490 #x040E #x00A9 Err bitreich.org 70 i- #x044E #x0430 #x0431 #x0446 #x0434 #x0435 #x0444 #x0433 Err bitreich.org 70 i- #x0445 #x0438 #x0439 #x043A #x043B #x043C #x043D #x043E Err bitreich.org 70 i- #x043F #x044F #x0440 #x0441 #x0442 #x0443 #x0436 #x0432 Err bitreich.org 70 i- #x044C #x044B #x0437 #x0448 #x044D #x0449 #x0447 #x044A Err bitreich.org 70 i- #x042E #x0410 #x0411 #x0426 #x0414 #x0415 #x0424 #x0413 Err bitreich.org 70 i- #x0425 #x0418 #x0419 #x041A #x041B #x041C #x041D #x041E Err bitreich.org 70 i- #x041F #x042F #x0420 #x0421 #x0422 #x0423 #x0416 #x0412 Err bitreich.org 70 i- #x042C #x042B #x0417 #x0428 #x042D #x0429 #x0427 #x042A) Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-decoder :koi8-ru (octet) Err bitreich.org 70 i- (if (< octet #x80) Err bitreich.org 70 i- octet Err bitreich.org 70 i- (svref +koi8-ru-to-unicode+ (the ub8 (- octet #x80))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-04->koi8-ru+ Err bitreich.org 70 i- #(#x7f #x79 #x78 #x7c #x60 #x71 #x41 #x42 #x57 #x47 #x44 #x45 #x56 #x5a Err bitreich.org 70 i- #x49 #x4a #x4b #x4c #x4d #x4e #x4f #x50 #x52 #x53 #x54 #x55 #x46 #x48 Err bitreich.org 70 i- #x43 #x5e #x5b #x5d #x5f #x59 #x58 #x5c #x40 #x51 nil #x23 nil nil #x24 Err bitreich.org 70 i- nil #x26 #x27 nil nil nil nil nil nil #x2e nil nil nil nil nil nil nil Err bitreich.org 70 i- nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil Err bitreich.org 70 i- nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil Err bitreich.org 70 i- nil nil nil nil nil nil #x3d #x2d) Err bitreich.org 70 i- :test 'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-encoder :koi8-ru (code) Err bitreich.org 70 i- (or (and (< code #x80) code) Err bitreich.org 70 i- (let ((hi (ldb (byte 8 8) code)) Err bitreich.org 70 i- (lo (ldb (byte 8 0) code))) Err bitreich.org 70 i- (case hi Err bitreich.org 70 i- (#x4 Err bitreich.org 70 i- (case lo Err bitreich.org 70 i- (#x1 #xb3) Err bitreich.org 70 i- (#x4 #xb4) Err bitreich.org 70 i- (#x6 #xb6) Err bitreich.org 70 i- (#x7 #xb7) Err bitreich.org 70 i- (#xe #xbe) Err bitreich.org 70 i- (#x10 #xe1) Err bitreich.org 70 i- (#x11 #xe2) Err bitreich.org 70 i- (#x12 #xf7) Err bitreich.org 70 i- (#x13 #xe7) Err bitreich.org 70 i- (#x14 #xe4) Err bitreich.org 70 i- (#x15 #xe5) Err bitreich.org 70 i- (#x16 #xf6) Err bitreich.org 70 i- (#x17 #xfa) Err bitreich.org 70 i- (#x18 #xe9) Err bitreich.org 70 i- (#x19 #xea) Err bitreich.org 70 i- (#x1a #xeb) Err bitreich.org 70 i- (#x1b #xec) Err bitreich.org 70 i- (#x1c #xed) Err bitreich.org 70 i- (#x1d #xee) Err bitreich.org 70 i- (#x1e #xef) Err bitreich.org 70 i- (#x1f #xf0) Err bitreich.org 70 i- (#x20 #xf2) Err bitreich.org 70 i- (#x21 #xf3) Err bitreich.org 70 i- (#x22 #xf4) Err bitreich.org 70 i- (#x23 #xf5) Err bitreich.org 70 i- (#x24 #xe6) Err bitreich.org 70 i- (#x25 #xe8) Err bitreich.org 70 i- (#x26 #xe3) Err bitreich.org 70 i- (#x27 #xfe) Err bitreich.org 70 i- (#x28 #xfb) Err bitreich.org 70 i- (#x29 #xfd) Err bitreich.org 70 i- (#x2a #xff) Err bitreich.org 70 i- (#x2b #xf9) Err bitreich.org 70 i- (#x2c #xf8) Err bitreich.org 70 i- (#x2d #xfc) Err bitreich.org 70 i- (#x2e #xe0) Err bitreich.org 70 i- (#x2f #xf1) Err bitreich.org 70 i- (#x30 #xc1) Err bitreich.org 70 i- (#x31 #xc2) Err bitreich.org 70 i- (#x32 #xd7) Err bitreich.org 70 i- (#x33 #xc7) Err bitreich.org 70 i- (#x34 #xc4) Err bitreich.org 70 i- (#x35 #xc5) Err bitreich.org 70 i- (#x36 #xd6) Err bitreich.org 70 i- (#x37 #xda) Err bitreich.org 70 i- (#x38 #xc9) Err bitreich.org 70 i- (#x39 #xca) Err bitreich.org 70 i- (#x3a #xcb) Err bitreich.org 70 i- (#x3b #xcc) Err bitreich.org 70 i- (#x3c #xcd) Err bitreich.org 70 i- (#x3d #xce) Err bitreich.org 70 i- (#x3e #xcf) Err bitreich.org 70 i- (#x3f #xd0) Err bitreich.org 70 i- (#x40 #xd2) Err bitreich.org 70 i- (#x41 #xd3) Err bitreich.org 70 i- (#x42 #xd4) Err bitreich.org 70 i- (#x43 #xd5) Err bitreich.org 70 i- (#x44 #xc6) Err bitreich.org 70 i- (#x45 #xc8) Err bitreich.org 70 i- (#x46 #xc3) Err bitreich.org 70 i- (#x47 #xde) Err bitreich.org 70 i- (#x48 #xdb) Err bitreich.org 70 i- (#x49 #xdd) Err bitreich.org 70 i- (#x4a #xdf) Err bitreich.org 70 i- (#x4b #xd9) Err bitreich.org 70 i- (#x4c #xd8) Err bitreich.org 70 i- (#x4d #xdc) Err bitreich.org 70 i- (#x4e #xc0) Err bitreich.org 70 i- (#x4f #xd1) Err bitreich.org 70 i- (#x51 #xa3) Err bitreich.org 70 i- (#x54 #xa4) Err bitreich.org 70 i- (#x56 #xa6) Err bitreich.org 70 i- (#x57 #xa7) Err bitreich.org 70 i- (#x5e #xae) Err bitreich.org 70 i- (#x90 #xbd) Err bitreich.org 70 i- (#x91 #xad))) Err bitreich.org 70 i- (#x0 Err bitreich.org 70 i- (case lo Err bitreich.org 70 i- (#xa0 #x9a) Err bitreich.org 70 i- (#xa9 #xbf) Err bitreich.org 70 i- (#xb0 #x9c) Err bitreich.org 70 i- (#xb2 #x9d) Err bitreich.org 70 i- (#xb7 #x9e) Err bitreich.org 70 i- (#xf7 #x9f))) Err bitreich.org 70 i- (#x22 (case lo (#x19 #x95) (#x1a #x96) (#x48 #x97) (#x64 #x98) (#x65 #x99))) Err bitreich.org 70 i- (#x23 (case lo (#x20 #x93) (#x21 #x9b))) Err bitreich.org 70 i- (#x25 Err bitreich.org 70 i- (case lo Err bitreich.org 70 i- (#x0 #x80) Err bitreich.org 70 i- (#x2 #x81) Err bitreich.org 70 i- (#xc #x82) Err bitreich.org 70 i- (#x10 #x83) Err bitreich.org 70 i- (#x14 #x84) Err bitreich.org 70 i- (#x18 #x85) Err bitreich.org 70 i- (#x1c #x86) Err bitreich.org 70 i- (#x24 #x87) Err bitreich.org 70 i- (#x2c #x88) Err bitreich.org 70 i- (#x34 #x89) Err bitreich.org 70 i- (#x3c #x8a) Err bitreich.org 70 i- (#x50 #xa0) Err bitreich.org 70 i- (#x51 #xa1) Err bitreich.org 70 i- (#x52 #xa2) Err bitreich.org 70 i- (#x54 #xa5) Err bitreich.org 70 i- (#x57 #xa8) Err bitreich.org 70 i- (#x58 #xa9) Err bitreich.org 70 i- (#x59 #xaa) Err bitreich.org 70 i- (#x5a #xab) Err bitreich.org 70 i- (#x5b #xac) Err bitreich.org 70 i- (#x5e #xaf) Err bitreich.org 70 i- (#x5f #xb0) Err bitreich.org 70 i- (#x60 #xb1) Err bitreich.org 70 i- (#x61 #xb2) Err bitreich.org 70 i- (#x63 #xb5) Err bitreich.org 70 i- (#x66 #xb8) Err bitreich.org 70 i- (#x67 #xb9) Err bitreich.org 70 i- (#x68 #xba) Err bitreich.org 70 i- (#x69 #xbb) Err bitreich.org 70 i- (#x6a #xbc) Err bitreich.org 70 i- (#x80 #x8b) Err bitreich.org 70 i- (#x84 #x8c) Err bitreich.org 70 i- (#x88 #x8d) Err bitreich.org 70 i- (#x8c #x8e) Err bitreich.org 70 i- (#x90 #x8f) Err bitreich.org 70 i- (#x91 #x90) Err bitreich.org 70 i- (#x92 #x91) Err bitreich.org 70 i- (#x93 #x92) Err bitreich.org 70 i- (#xa0 #x94))))) Err bitreich.org 70 i- (handle-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :koi8-r Err bitreich.org 70 i- "An 8-bit, fixed-width character Russian encoding." Err bitreich.org 70 i- :literal-char-code-limit #x80) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +koi8-r-to-unicode+ Err bitreich.org 70 i- #(#x2500 #x2502 #x250C #x2510 #x2514 #x2518 #x251C #x2524 Err bitreich.org 70 i- #x252C #x2534 #x253C #x2580 #x2584 #x2588 #x258C #x2590 Err bitreich.org 70 i- #x2591 #x2592 #x2593 #x2320 #x25A0 #x2219 #x221A #x2248 Err bitreich.org 70 i- #x2264 #x2265 #x00A0 #x2321 #x00B0 #x00B2 #x00B7 #x00F7 Err bitreich.org 70 i- #x2550 #x2551 #x2552 #x0451 #x2553 #x2554 #x2555 #x2556 Err bitreich.org 70 i- #x2557 #x2558 #x2559 #x255A #x255B #x255C #x255D #x255E Err bitreich.org 70 i- #x255F #x2560 #x2561 #x0401 #x2562 #x2563 #x2564 #x2565 Err bitreich.org 70 i- #x2566 #x2567 #x2568 #x2569 #x256A #x256B #x256C #x00A9 Err bitreich.org 70 i- #x044E #x0430 #x0431 #x0446 #x0434 #x0435 #x0444 #x0433 Err bitreich.org 70 i- #x0445 #x0438 #x0439 #x043A #x043B #x043C #x043D #x043E Err bitreich.org 70 i- #x043F #x044F #x0440 #x0441 #x0442 #x0443 #x0436 #x0432 Err bitreich.org 70 i- #x044C #x044B #x0437 #x0448 #x044D #x0449 #x0447 #x044A Err bitreich.org 70 i- #x042E #x0410 #x0411 #x0426 #x0414 #x0415 #x0424 #x0413 Err bitreich.org 70 i- #x0425 #x0418 #x0419 #x041A #x041B #x041C #x041D #x041E Err bitreich.org 70 i- #x041F #x042F #x0420 #x0421 #x0422 #x0423 #x0416 #x0412 Err bitreich.org 70 i- #x042C #x042B #x0417 #x0428 #x042D #x0429 #x0427 #x042A) Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-decoder :koi8-r (octet) Err bitreich.org 70 i- (if (< octet #x80) Err bitreich.org 70 i- octet Err bitreich.org 70 i- (svref +koi8-r-to-unicode+ (the ub8 (- octet #x80))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-x04->koi8-r+ Err bitreich.org 70 i- #(nil #x33 nil nil nil nil nil nil nil nil nil nil nil nil nil nil #x61 Err bitreich.org 70 i- #x62 #x77 #x67 #x64 #x65 #x76 #x7a #x69 #x6a #x6b #x6c #x6d #x6e #x6f Err bitreich.org 70 i- #x70 #x72 #x73 #x74 #x75 #x66 #x68 #x63 #x7e #x7b #x7d #x7f #x79 #x78 Err bitreich.org 70 i- #x7c #x60 #x71 #x41 #x42 #x57 #x47 #x44 #x45 #x56 #x5a #x49 #x4a #x4b Err bitreich.org 70 i- #x4c #x4d #x4e #x4f #x50 #x52 #x53 #x54 #x55 #x46 #x48 #x43 #x5e #x5b Err bitreich.org 70 i- #x5d #x5f #x59 #x58 #x5c #x40 #x51 nil #x23) Err bitreich.org 70 i- :test 'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-x25->koi8-r+ Err bitreich.org 70 i- #(#x0 nil #x1 nil nil nil nil nil nil nil nil nil #x2 nil nil nil #x3 nil Err bitreich.org 70 i- nil nil #x4 nil nil nil #x5 nil nil nil #x6 nil nil nil nil nil nil nil Err bitreich.org 70 i- #x7 nil nil nil nil nil nil nil #x8 nil nil nil nil nil nil nil #x9 nil Err bitreich.org 70 i- nil nil nil nil nil nil #xa nil nil nil nil nil nil nil nil nil nil nil Err bitreich.org 70 i- nil nil nil nil nil nil nil nil #x20 #x21 #x22 #x24 #x25 #x26 #x27 #x28 Err bitreich.org 70 i- #x29 #x2a #x2b #x2c #x2d #x2e #x2f #x30 #x31 #x32 #x34 #x35 #x36 #x37 Err bitreich.org 70 i- #x38 #x39 #x3a #x3b #x3c #x3d #x3e nil nil nil nil nil nil nil nil nil Err bitreich.org 70 i- nil nil nil nil nil nil nil nil nil nil #xb nil nil nil #xc nil nil nil Err bitreich.org 70 i- #xd nil nil nil #xe nil nil nil #xf #x10 #x11 #x12 nil nil nil nil nil Err bitreich.org 70 i- nil nil nil nil nil nil nil #x14) Err bitreich.org 70 i- :test 'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-encoder :koi8-r (code) Err bitreich.org 70 i- (or (and (< code #x80) code) Err bitreich.org 70 i- (let ((hi (ldb (byte 8 8) code)) Err bitreich.org 70 i- (lo (ldb (byte 8 0) code))) Err bitreich.org 70 i- (case hi Err bitreich.org 70 i- (#x4 Err bitreich.org 70 i- (case lo Err bitreich.org 70 i- (#x1 #xb3) Err bitreich.org 70 i- (#x10 #xe1) Err bitreich.org 70 i- (#x11 #xe2) Err bitreich.org 70 i- (#x12 #xf7) Err bitreich.org 70 i- (#x13 #xe7) Err bitreich.org 70 i- (#x14 #xe4) Err bitreich.org 70 i- (#x15 #xe5) Err bitreich.org 70 i- (#x16 #xf6) Err bitreich.org 70 i- (#x17 #xfa) Err bitreich.org 70 i- (#x18 #xe9) Err bitreich.org 70 i- (#x19 #xea) Err bitreich.org 70 i- (#x1a #xeb) Err bitreich.org 70 i- (#x1b #xec) Err bitreich.org 70 i- (#x1c #xed) Err bitreich.org 70 i- (#x1d #xee) Err bitreich.org 70 i- (#x1e #xef) Err bitreich.org 70 i- (#x1f #xf0) Err bitreich.org 70 i- (#x20 #xf2) Err bitreich.org 70 i- (#x21 #xf3) Err bitreich.org 70 i- (#x22 #xf4) Err bitreich.org 70 i- (#x23 #xf5) Err bitreich.org 70 i- (#x24 #xe6) Err bitreich.org 70 i- (#x25 #xe8) Err bitreich.org 70 i- (#x26 #xe3) Err bitreich.org 70 i- (#x27 #xfe) Err bitreich.org 70 i- (#x28 #xfb) Err bitreich.org 70 i- (#x29 #xfd) Err bitreich.org 70 i- (#x2a #xff) Err bitreich.org 70 i- (#x2b #xf9) Err bitreich.org 70 i- (#x2c #xf8) Err bitreich.org 70 i- (#x2d #xfc) Err bitreich.org 70 i- (#x2e #xe0) Err bitreich.org 70 i- (#x2f #xf1) Err bitreich.org 70 i- (#x30 #xc1) Err bitreich.org 70 i- (#x31 #xc2) Err bitreich.org 70 i- (#x32 #xd7) Err bitreich.org 70 i- (#x33 #xc7) Err bitreich.org 70 i- (#x34 #xc4) Err bitreich.org 70 i- (#x35 #xc5) Err bitreich.org 70 i- (#x36 #xd6) Err bitreich.org 70 i- (#x37 #xda) Err bitreich.org 70 i- (#x38 #xc9) Err bitreich.org 70 i- (#x39 #xca) Err bitreich.org 70 i- (#x3a #xcb) Err bitreich.org 70 i- (#x3b #xcc) Err bitreich.org 70 i- (#x3c #xcd) Err bitreich.org 70 i- (#x3d #xce) Err bitreich.org 70 i- (#x3e #xcf) Err bitreich.org 70 i- (#x3f #xd0) Err bitreich.org 70 i- (#x40 #xd2) Err bitreich.org 70 i- (#x41 #xd3) Err bitreich.org 70 i- (#x42 #xd4) Err bitreich.org 70 i- (#x43 #xd5) Err bitreich.org 70 i- (#x44 #xc6) Err bitreich.org 70 i- (#x45 #xc8) Err bitreich.org 70 i- (#x46 #xc3) Err bitreich.org 70 i- (#x47 #xde) Err bitreich.org 70 i- (#x48 #xdb) Err bitreich.org 70 i- (#x49 #xdd) Err bitreich.org 70 i- (#x4a #xdf) Err bitreich.org 70 i- (#x4b #xd9) Err bitreich.org 70 i- (#x4c #xd8) Err bitreich.org 70 i- (#x4d #xdc) Err bitreich.org 70 i- (#x4e #xc0) Err bitreich.org 70 i- (#x4f #xd1) Err bitreich.org 70 i- (#x51 #xa3))) Err bitreich.org 70 i- (#x0 Err bitreich.org 70 i- (case lo Err bitreich.org 70 i- (#xa0 #x9a) Err bitreich.org 70 i- (#xa9 #xbf) Err bitreich.org 70 i- (#xb0 #x9c) Err bitreich.org 70 i- (#xb2 #x9d) Err bitreich.org 70 i- (#xb7 #x9e) Err bitreich.org 70 i- (#xf7 #x9f))) Err bitreich.org 70 i- (#x22 (case lo (#x19 #x95) (#x1a #x96) (#x48 #x97) (#x64 #x98) (#x65 #x99))) Err bitreich.org 70 i- (#x23 (case lo (#x20 #x93) (#x21 #x9b))) Err bitreich.org 70 i- (#x25 Err bitreich.org 70 i- (case lo Err bitreich.org 70 i- (#x0 #x80) Err bitreich.org 70 i- (#x2 #x81) Err bitreich.org 70 i- (#xc #x82) Err bitreich.org 70 i- (#x10 #x83) Err bitreich.org 70 i- (#x14 #x84) Err bitreich.org 70 i- (#x18 #x85) Err bitreich.org 70 i- (#x1c #x86) Err bitreich.org 70 i- (#x24 #x87) Err bitreich.org 70 i- (#x2c #x88) Err bitreich.org 70 i- (#x34 #x89) Err bitreich.org 70 i- (#x3c #x8a) Err bitreich.org 70 i- (#x50 #xa0) Err bitreich.org 70 i- (#x51 #xa1) Err bitreich.org 70 i- (#x52 #xa2) Err bitreich.org 70 i- (#x53 #xa4) Err bitreich.org 70 i- (#x54 #xa5) Err bitreich.org 70 i- (#x55 #xa6) Err bitreich.org 70 i- (#x56 #xa7) Err bitreich.org 70 i- (#x57 #xa8) Err bitreich.org 70 i- (#x58 #xa9) Err bitreich.org 70 i- (#x59 #xaa) Err bitreich.org 70 i- (#x5a #xab) Err bitreich.org 70 i- (#x5b #xac) Err bitreich.org 70 i- (#x5c #xad) Err bitreich.org 70 i- (#x5d #xae) Err bitreich.org 70 i- (#x5e #xaf) Err bitreich.org 70 i- (#x5f #xb0) Err bitreich.org 70 i- (#x60 #xb1) Err bitreich.org 70 i- (#x61 #xb2) Err bitreich.org 70 i- (#x62 #xb4) Err bitreich.org 70 i- (#x63 #xb5) Err bitreich.org 70 i- (#x64 #xb6) Err bitreich.org 70 i- (#x65 #xb7) Err bitreich.org 70 i- (#x66 #xb8) Err bitreich.org 70 i- (#x67 #xb9) Err bitreich.org 70 i- (#x68 #xba) Err bitreich.org 70 i- (#x69 #xbb) Err bitreich.org 70 i- (#x6a #xbc) Err bitreich.org 70 i- (#x6b #xbd) Err bitreich.org 70 i- (#x6c #xbe) Err bitreich.org 70 i- (#x80 #x8b) Err bitreich.org 70 i- (#x84 #x8c) Err bitreich.org 70 i- (#x88 #x8d) Err bitreich.org 70 i- (#x8c #x8e) Err bitreich.org 70 i- (#x90 #x8f) Err bitreich.org 70 i- (#x91 #x90) Err bitreich.org 70 i- (#x92 #x91) Err bitreich.org 70 i- (#x93 #x92) Err bitreich.org 70 i- (#xa0 #x94))))) Err bitreich.org 70 i- (handle-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :koi8-u Err bitreich.org 70 i- "An 8-bit, fixed-width character Ukranian encoding." Err bitreich.org 70 i- :literal-char-code-limit #x80) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +koi8-u-to-unicode+ Err bitreich.org 70 i- #(#x2500 #x2502 #x250C #x2510 #x2514 #x2518 #x251C #x2524 Err bitreich.org 70 i- #x252C #x2534 #x253C #x2580 #x2584 #x2588 #x258C #x2590 Err bitreich.org 70 i- #x2591 #x2592 #x2593 #x2320 #x25A0 #x2219 #x221A #x2248 Err bitreich.org 70 i- #x2264 #x2265 #x00A0 #x2321 #x00B0 #x00B2 #x00B7 #x00F7 Err bitreich.org 70 i- #x2550 #x2551 #x2552 #x0451 #x0454 #x2554 #x0456 #x0457 Err bitreich.org 70 i- #x2557 #x2558 #x2559 #x255A #x255B #x0491 #x255D #x255E Err bitreich.org 70 i- #x255F #x2560 #x2561 #x0401 #x0404 #x2563 #x0406 #x0407 Err bitreich.org 70 i- #x2566 #x2567 #x2568 #x2569 #x256A #x0490 #x256C #x00A9 Err bitreich.org 70 i- #x044E #x0430 #x0431 #x0446 #x0434 #x0435 #x0444 #x0433 Err bitreich.org 70 i- #x0445 #x0438 #x0439 #x043A #x043B #x043C #x043D #x043E Err bitreich.org 70 i- #x043F #x044F #x0440 #x0441 #x0442 #x0443 #x0436 #x0432 Err bitreich.org 70 i- #x044C #x044B #x0437 #x0448 #x044D #x0449 #x0447 #x044A Err bitreich.org 70 i- #x042E #x0410 #x0411 #x0426 #x0414 #x0415 #x0424 #x0413 Err bitreich.org 70 i- #x0425 #x0418 #x0419 #x041A #x041B #x041C #x041D #x041E Err bitreich.org 70 i- #x041F #x042F #x0420 #x0421 #x0422 #x0423 #x0416 #x0412 Err bitreich.org 70 i- #x042C #x042B #x0417 #x0428 #x042D #x0429 #x0427 #x042A ) Err bitreich.org 70 i- :test #'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-decoder :koi8-u (octet) Err bitreich.org 70 i- (if (< octet #x80) Err bitreich.org 70 i- octet Err bitreich.org 70 i- (svref +koi8-u-to-unicode+ (the ub8 (- octet #x80))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-x04->koi8-u+ Err bitreich.org 70 i- #(nil #x33 nil nil #x34 nil #x36 #x37 nil nil nil nil nil nil nil nil #x61 Err bitreich.org 70 i- #x62 #x77 #x67 #x64 #x65 #x76 #x7a #x69 #x6a #x6b #x6c #x6d #x6e #x6f Err bitreich.org 70 i- #x70 #x72 #x73 #x74 #x75 #x66 #x68 #x63 #x7e #x7b #x7d #x7f #x79 #x78 Err bitreich.org 70 i- #x7c #x60 #x71 #x41 #x42 #x57 #x47 #x44 #x45 #x56 #x5a #x49 #x4a #x4b Err bitreich.org 70 i- #x4c #x4d #x4e #x4f #x50 #x52 #x53 #x54 #x55 #x46 #x48 #x43 #x5e #x5b Err bitreich.org 70 i- #x5d #x5f #x59 #x58 #x5c #x40 #x51 nil #x23 nil nil #x24 nil #x26 #x27 Err bitreich.org 70 i- nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil Err bitreich.org 70 i- nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil Err bitreich.org 70 i- nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil Err bitreich.org 70 i- nil nil #x3d #x2d) Err bitreich.org 70 i- :test 'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +unicode-x25->koi8-u+ Err bitreich.org 70 i- #(#x0 nil #x1 nil nil nil nil nil nil nil nil nil #x2 nil nil nil #x3 nil Err bitreich.org 70 i- nil nil #x4 nil nil nil #x5 nil nil nil #x6 nil nil nil nil nil nil nil Err bitreich.org 70 i- #x7 nil nil nil nil nil nil nil #x8 nil nil nil nil nil nil nil #x9 nil Err bitreich.org 70 i- nil nil nil nil nil nil #xa nil nil nil nil nil nil nil nil nil nil nil Err bitreich.org 70 i- nil nil nil nil nil nil nil nil #x20 #x21 #x22 nil #x25 nil nil #x28 Err bitreich.org 70 i- #x29 #x2a #x2b #x2c nil #x2e #x2f #x30 #x31 #x32 nil #x35 nil nil #x38 Err bitreich.org 70 i- #x39 #x3a #x3b #x3c nil #x3e nil nil nil nil nil nil nil nil nil nil nil Err bitreich.org 70 i- nil nil nil nil nil nil nil nil #xb nil nil nil #xc nil nil nil #xd nil Err bitreich.org 70 i- nil nil #xe nil nil nil #xf #x10 #x11 #x12 nil nil nil nil nil nil nil Err bitreich.org 70 i- nil nil nil nil nil #x14) Err bitreich.org 70 i- :test 'equalp) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-unibyte-encoder :koi8-u (code) Err bitreich.org 70 i- (or (and (< code #x80) code) Err bitreich.org 70 i- (let ((hi (ldb (byte 8 8) code)) Err bitreich.org 70 i- (lo (ldb (byte 8 0) code))) Err bitreich.org 70 i- (case hi Err bitreich.org 70 i- (#x4 Err bitreich.org 70 i- (case lo Err bitreich.org 70 i- (#x1 #xb3) Err bitreich.org 70 i- (#x4 #xb4) Err bitreich.org 70 i- (#x6 #xb6) Err bitreich.org 70 i- (#x7 #xb7) Err bitreich.org 70 i- (#x10 #xe1) Err bitreich.org 70 i- (#x11 #xe2) Err bitreich.org 70 i- (#x12 #xf7) Err bitreich.org 70 i- (#x13 #xe7) Err bitreich.org 70 i- (#x14 #xe4) Err bitreich.org 70 i- (#x15 #xe5) Err bitreich.org 70 i- (#x16 #xf6) Err bitreich.org 70 i- (#x17 #xfa) Err bitreich.org 70 i- (#x18 #xe9) Err bitreich.org 70 i- (#x19 #xea) Err bitreich.org 70 i- (#x1a #xeb) Err bitreich.org 70 i- (#x1b #xec) Err bitreich.org 70 i- (#x1c #xed) Err bitreich.org 70 i- (#x1d #xee) Err bitreich.org 70 i- (#x1e #xef) Err bitreich.org 70 i- (#x1f #xf0) Err bitreich.org 70 i- (#x20 #xf2) Err bitreich.org 70 i- (#x21 #xf3) Err bitreich.org 70 i- (#x22 #xf4) Err bitreich.org 70 i- (#x23 #xf5) Err bitreich.org 70 i- (#x24 #xe6) Err bitreich.org 70 i- (#x25 #xe8) Err bitreich.org 70 i- (#x26 #xe3) Err bitreich.org 70 i- (#x27 #xfe) Err bitreich.org 70 i- (#x28 #xfb) Err bitreich.org 70 i- (#x29 #xfd) Err bitreich.org 70 i- (#x2a #xff) Err bitreich.org 70 i- (#x2b #xf9) Err bitreich.org 70 i- (#x2c #xf8) Err bitreich.org 70 i- (#x2d #xfc) Err bitreich.org 70 i- (#x2e #xe0) Err bitreich.org 70 i- (#x2f #xf1) Err bitreich.org 70 i- (#x30 #xc1) Err bitreich.org 70 i- (#x31 #xc2) Err bitreich.org 70 i- (#x32 #xd7) Err bitreich.org 70 i- (#x33 #xc7) Err bitreich.org 70 i- (#x34 #xc4) Err bitreich.org 70 i- (#x35 #xc5) Err bitreich.org 70 i- (#x36 #xd6) Err bitreich.org 70 i- (#x37 #xda) Err bitreich.org 70 i- (#x38 #xc9) Err bitreich.org 70 i- (#x39 #xca) Err bitreich.org 70 i- (#x3a #xcb) Err bitreich.org 70 i- (#x3b #xcc) Err bitreich.org 70 i- (#x3c #xcd) Err bitreich.org 70 i- (#x3d #xce) Err bitreich.org 70 i- (#x3e #xcf) Err bitreich.org 70 i- (#x3f #xd0) Err bitreich.org 70 i- (#x40 #xd2) Err bitreich.org 70 i- (#x41 #xd3) Err bitreich.org 70 i- (#x42 #xd4) Err bitreich.org 70 i- (#x43 #xd5) Err bitreich.org 70 i- (#x44 #xc6) Err bitreich.org 70 i- (#x45 #xc8) Err bitreich.org 70 i- (#x46 #xc3) Err bitreich.org 70 i- (#x47 #xde) Err bitreich.org 70 i- (#x48 #xdb) Err bitreich.org 70 i- (#x49 #xdd) Err bitreich.org 70 i- (#x4a #xdf) Err bitreich.org 70 i- (#x4b #xd9) Err bitreich.org 70 i- (#x4c #xd8) Err bitreich.org 70 i- (#x4d #xdc) Err bitreich.org 70 i- (#x4e #xc0) Err bitreich.org 70 i- (#x4f #xd1) Err bitreich.org 70 i- (#x51 #xa3) Err bitreich.org 70 i- (#x54 #xa4) Err bitreich.org 70 i- (#x56 #xa6) Err bitreich.org 70 i- (#x57 #xa7) Err bitreich.org 70 i- (#x90 #xbd) Err bitreich.org 70 i- (#x91 #xad))) Err bitreich.org 70 i- (#x0 Err bitreich.org 70 i- (case lo Err bitreich.org 70 i- (#xa0 #x9a) Err bitreich.org 70 i- (#xa9 #xbf) Err bitreich.org 70 i- (#xb0 #x9c) Err bitreich.org 70 i- (#xb2 #x9d) Err bitreich.org 70 i- (#xb7 #x9e) Err bitreich.org 70 i- (#xf7 #x9f))) Err bitreich.org 70 i- (#x22 (case lo (#x19 #x95) (#x1a #x96) (#x48 #x97) (#x64 #x98) (#x65 #x99))) Err bitreich.org 70 i- (#x23 (case lo (#x20 #x93) (#x21 #x9b))) Err bitreich.org 70 i- (#x25 Err bitreich.org 70 i- (case lo Err bitreich.org 70 i- (#x0 #x80) Err bitreich.org 70 i- (#x2 #x81) Err bitreich.org 70 i- (#xc #x82) Err bitreich.org 70 i- (#x10 #x83) Err bitreich.org 70 i- (#x14 #x84) Err bitreich.org 70 i- (#x18 #x85) Err bitreich.org 70 i- (#x1c #x86) Err bitreich.org 70 i- (#x24 #x87) Err bitreich.org 70 i- (#x2c #x88) Err bitreich.org 70 i- (#x34 #x89) Err bitreich.org 70 i- (#x3c #x8a) Err bitreich.org 70 i- (#x50 #xa0) Err bitreich.org 70 i- (#x51 #xa1) Err bitreich.org 70 i- (#x52 #xa2) Err bitreich.org 70 i- (#x54 #xa5) Err bitreich.org 70 i- (#x57 #xa8) Err bitreich.org 70 i- (#x58 #xa9) Err bitreich.org 70 i- (#x59 #xaa) Err bitreich.org 70 i- (#x5a #xab) Err bitreich.org 70 i- (#x5b #xac) Err bitreich.org 70 i- (#x5d #xae) Err bitreich.org 70 i- (#x5e #xaf) Err bitreich.org 70 i- (#x5f #xb0) Err bitreich.org 70 i- (#x60 #xb1) Err bitreich.org 70 i- (#x61 #xb2) Err bitreich.org 70 i- (#x63 #xb5) Err bitreich.org 70 i- (#x66 #xb8) Err bitreich.org 70 i- (#x67 #xb9) Err bitreich.org 70 i- (#x68 #xba) Err bitreich.org 70 i- (#x69 #xbb) Err bitreich.org 70 i- (#x6a #xbc) Err bitreich.org 70 i- (#x6c #xbe) Err bitreich.org 70 i- (#x80 #x8b) Err bitreich.org 70 i- (#x84 #x8c) Err bitreich.org 70 i- (#x88 #x8d) Err bitreich.org 70 i- (#x8c #x8e) Err bitreich.org 70 i- (#x90 #x8f) Err bitreich.org 70 i- (#x91 #x90) Err bitreich.org 70 i- (#x92 #x91) Err bitreich.org 70 i- (#x93 #x92) Err bitreich.org 70 i- (#xa0 #x94))))) Err bitreich.org 70 i- (handle-error))) Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/src/enc-unicode.lisp b/3rdparties/software/babel-20171227-git/src/enc-unicode.lisp /scm/clic/file/3rdparties/software/babel-20171227-git/src/enc-unicode.lisp.gph bitreich.org 70 i@@ -1,881 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; enc-unicode.lisp --- Unicode encodings. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; This implementation is largely based on OpenMCL's l1-unicode.lisp Err bitreich.org 70 i-;;; Copyright (C) 2006 Clozure Associates and contributors. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:babel-encodings) Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (defconstant +repl+ #xfffd "Unicode replacement character code point.") Err bitreich.org 70 i- (defconstant +byte-order-mark-code+ #xfeff) Err bitreich.org 70 i- (defconstant +swapped-byte-order-mark-code+ #xfffe) Err bitreich.org 70 i- (defconstant +swapped-byte-order-mark-code-32+ #xfffe0000)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Some convenience macros adding FIXNUM declarations. Err bitreich.org 70 i-(defmacro f-ash (integer count) `(the fixnum (ash ,integer ,count))) Err bitreich.org 70 i-(defmacro f-logior (&rest integers) `(the fixnum (logior ,@integers))) Err bitreich.org 70 i-(defmacro f-logand (&rest integers) `(the fixnum (logand ,@integers))) Err bitreich.org 70 i-(defmacro f-logxor (&rest integers) `(the fixnum (logxor ,@integers))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; UTF-8 Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :utf-8 Err bitreich.org 70 i- "An 8-bit, variable-length character encoding in which Err bitreich.org 70 i-character code points in the range #x00-#x7f can be encoded in a Err bitreich.org 70 i-single octet; characters with larger code values can be encoded Err bitreich.org 70 i-in 2 to 4 bytes." Err bitreich.org 70 i- :max-units-per-char 4 Err bitreich.org 70 i- :literal-char-code-limit #x80 Err bitreich.org 70 i- :bom-encoding #(#xef #xbb #xbf) Err bitreich.org 70 i- :default-replacement #xfffd) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition invalid-utf8-starter-byte (character-decoding-error) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Signalled when an invalid UTF-8 starter byte is found.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition invalid-utf8-continuation-byte (character-decoding-error) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "Signalled when an invalid UTF-8 continuation byte is found.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition overlong-utf8-sequence (character-decoding-error) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Signalled upon overlong UTF-8 sequences.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-octet-counter :utf-8 (getter type) Err bitreich.org 70 i- `(named-lambda utf-8-octet-counter (seq start end max) Err bitreich.org 70 i- (declare (type ,type seq) (fixnum start end max)) Err bitreich.org 70 i- (loop with noctets fixnum = 0 Err bitreich.org 70 i- for i fixnum from start below end Err bitreich.org 70 i- for code of-type code-point = (,getter seq i) do Err bitreich.org 70 i- (let ((new (+ (cond ((< code #x80) 1) Err bitreich.org 70 i- ((< code #x800) 2) Err bitreich.org 70 i- ((< code #x10000) 3) Err bitreich.org 70 i- (t 4)) Err bitreich.org 70 i- noctets))) Err bitreich.org 70 i- (if (and (plusp max) (> new max)) Err bitreich.org 70 i- (loop-finish) Err bitreich.org 70 i- (setq noctets new))) Err bitreich.org 70 i- finally (return (values noctets i))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-code-point-counter :utf-8 (getter type) Err bitreich.org 70 i- `(named-lambda utf-8-code-point-counter (seq start end max) Err bitreich.org 70 i- (declare (type ,type seq) (fixnum start end max)) Err bitreich.org 70 i- (loop with nchars fixnum = 0 Err bitreich.org 70 i- with i fixnum = start Err bitreich.org 70 i- while (< i end) do Err bitreich.org 70 i- ;; check for invalid continuation bytes Err bitreich.org 70 i- (macrolet ((invalid-cb-p (n) Err bitreich.org 70 i- `(and (< (+ i ,n) end) Err bitreich.org 70 i- (not (< #x7f (,',getter seq (+ i ,n)) #xc0))))) Err bitreich.org 70 i- ;; wrote this code with LET instead of FOR because CLISP's Err bitreich.org 70 i- ;; LOOP doesn't like WHILE clauses before FOR clauses. Err bitreich.org 70 i- (let* ((octet (,getter seq i)) Err bitreich.org 70 i- (next-i (+ i (cond ((or (< octet #xc0) (invalid-cb-p 1)) 1) Err bitreich.org 70 i- ((or (< octet #xe0) (invalid-cb-p 2)) 2) Err bitreich.org 70 i- ((or (< octet #xf0) (invalid-cb-p 3)) 3) Err bitreich.org 70 i- ((or (< octet #xf8) (invalid-cb-p 4)) 4) Err bitreich.org 70 i- ((or (< octet #xfc) (invalid-cb-p 5)) 5) Err bitreich.org 70 i- (t 6))))) Err bitreich.org 70 i- (declare (type ub8 octet) (fixnum next-i)) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((> next-i end) Err bitreich.org 70 i- ;; Should we add restarts to this error, we'll have Err bitreich.org 70 i- ;; to figure out a way to communicate with the Err bitreich.org 70 i- ;; decoder since we probably want to do something Err bitreich.org 70 i- ;; about it right here when we have a chance to Err bitreich.org 70 i- ;; change the count or something. (Like an Err bitreich.org 70 i- ;; alternative replacement character or perhaps the Err bitreich.org 70 i- ;; existence of this error so that the decoder Err bitreich.org 70 i- ;; doesn't have to check for it on every iteration Err bitreich.org 70 i- ;; like we do.) Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; FIXME: The data for this error is not right. Err bitreich.org 70 i- (decoding-error (vector octet) :utf-8 seq i Err bitreich.org 70 i- nil 'end-of-input-in-character) Err bitreich.org 70 i- (return (values (1+ nchars) end))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (setq nchars (1+ nchars) Err bitreich.org 70 i- i next-i) Err bitreich.org 70 i- (when (and (plusp max) (= nchars max)) Err bitreich.org 70 i- (return (values nchars i))))))) Err bitreich.org 70 i- finally (progn Err bitreich.org 70 i- (assert (= i end)) Err bitreich.org 70 i- (return (values nchars i)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-encoder :utf-8 (getter src-type setter dest-type) Err bitreich.org 70 i- `(named-lambda utf-8-encoder (src start end dest d-start) Err bitreich.org 70 i- (declare (type ,src-type src) Err bitreich.org 70 i- (type ,dest-type dest) Err bitreich.org 70 i- (fixnum start end d-start)) Err bitreich.org 70 i- (loop with di fixnum = d-start Err bitreich.org 70 i- for i fixnum from start below end Err bitreich.org 70 i- for code of-type code-point = (,getter src i) do Err bitreich.org 70 i- (macrolet ((set-octet (offset value) Err bitreich.org 70 i- `(,',setter ,value dest (the fixnum (+ di ,offset))))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ;; 1 octet Err bitreich.org 70 i- ((< code #x80) Err bitreich.org 70 i- (set-octet 0 code) Err bitreich.org 70 i- (incf di)) Err bitreich.org 70 i- ;; 2 octets Err bitreich.org 70 i- ((< code #x800) Err bitreich.org 70 i- (set-octet 0 (logior #xc0 (f-ash code -6))) Err bitreich.org 70 i- (set-octet 1 (logior #x80 (f-logand code #x3f))) Err bitreich.org 70 i- (incf di 2)) Err bitreich.org 70 i- ;; 3 octets Err bitreich.org 70 i- ((< code #x10000) Err bitreich.org 70 i- (set-octet 0 (logior #xe0 (f-ash code -12))) Err bitreich.org 70 i- (set-octet 1 (logior #x80 (f-logand #x3f (f-ash code -6)))) Err bitreich.org 70 i- (set-octet 2 (logior #x80 (f-logand code #x3f))) Err bitreich.org 70 i- (incf di 3)) Err bitreich.org 70 i- ;; 4 octets Err bitreich.org 70 i- (t Err bitreich.org 70 i- (set-octet 0 (logior #xf0 (f-logand #x07 (f-ash code -18)))) Err bitreich.org 70 i- (set-octet 1 (logior #x80 (f-logand #x3f (f-ash code -12)))) Err bitreich.org 70 i- (set-octet 2 (logior #x80 (f-logand #x3f (f-ash code -6)))) Err bitreich.org 70 i- (set-octet 3 (logior #x80 (logand code #x3f))) Err bitreich.org 70 i- (incf di 4)))) Err bitreich.org 70 i- finally (return (the fixnum (- di d-start)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-decoder :utf-8 (getter src-type setter dest-type) Err bitreich.org 70 i- `(named-lambda utf-8-decoder (src start end dest d-start) Err bitreich.org 70 i- (declare (type ,src-type src) Err bitreich.org 70 i- (type ,dest-type dest) Err bitreich.org 70 i- (fixnum start end d-start)) Err bitreich.org 70 i- (let ((u2 0) (u3 0) (u4 0) (u5 0) (u6 0)) Err bitreich.org 70 i- (declare (type ub8 u2 u3 u4 u5 u6)) Err bitreich.org 70 i- (loop for di fixnum from d-start Err bitreich.org 70 i- for i fixnum from start below end Err bitreich.org 70 i- for u1 of-type ub8 = (,getter src i) do Err bitreich.org 70 i- ;; Note: CONSUME-OCTET doesn't check if I is being Err bitreich.org 70 i- ;; incremented past END. We're assuming that END has Err bitreich.org 70 i- ;; been calculated with the CODE-POINT-POINTER above that Err bitreich.org 70 i- ;; checks this. Err bitreich.org 70 i- (macrolet Err bitreich.org 70 i- ((consume-octet () Err bitreich.org 70 i- `(let ((next-i (incf i))) Err bitreich.org 70 i- (if (= next-i end) Err bitreich.org 70 i- ;; FIXME: data for this error is incomplete. Err bitreich.org 70 i- ;; and signalling this error twice Err bitreich.org 70 i- (return-from setter-block Err bitreich.org 70 i- (decoding-error nil :utf-8 src i +repl+ Err bitreich.org 70 i- 'end-of-input-in-character)) Err bitreich.org 70 i- (,',getter src next-i)))) Err bitreich.org 70 i- (handle-error (n &optional (c 'character-decoding-error)) Err bitreich.org 70 i- `(decoding-error Err bitreich.org 70 i- (vector ,@(subseq '(u1 u2 u3 u4 u5 u6) 0 n)) Err bitreich.org 70 i- :utf-8 src (1+ (- i ,n)) +repl+ ',c)) Err bitreich.org 70 i- (handle-error-if-icb (var n) Err bitreich.org 70 i- `(when (not (< #x7f ,var #xc0)) Err bitreich.org 70 i- (decf i) Err bitreich.org 70 i- (return-from setter-block Err bitreich.org 70 i- (handle-error ,n invalid-utf8-continuation-byte))))) Err bitreich.org 70 i- (,setter Err bitreich.org 70 i- (block setter-block Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((< u1 #x80) u1) ; 1 octet Err bitreich.org 70 i- ((< u1 #xc0) Err bitreich.org 70 i- (handle-error 1 invalid-utf8-starter-byte)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (setq u2 (consume-octet)) Err bitreich.org 70 i- (handle-error-if-icb u2 1) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((< u1 #xc2) Err bitreich.org 70 i- (handle-error 2 overlong-utf8-sequence)) Err bitreich.org 70 i- ((< u1 #xe0) ; 2 octets Err bitreich.org 70 i- (logior (f-ash (f-logand #x1f u1) 6) Err bitreich.org 70 i- (f-logxor u2 #x80))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (setq u3 (consume-octet)) Err bitreich.org 70 i- (handle-error-if-icb u3 2) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((and (= u1 #xe0) (< u2 #xa0)) Err bitreich.org 70 i- (handle-error 3 overlong-utf8-sequence)) Err bitreich.org 70 i- ((< u1 #xf0) ; 3 octets Err bitreich.org 70 i- (let ((start (f-logior (f-ash (f-logand u1 #x0f) 12) Err bitreich.org 70 i- (f-ash (f-logand u2 #x3f) 6)))) Err bitreich.org 70 i- (if (<= #xd800 start #xdfc0) Err bitreich.org 70 i- (handle-error 3 character-out-of-range) Err bitreich.org 70 i- (logior start (f-logand u3 #x3f))))) Err bitreich.org 70 i- (t ; 4 octets Err bitreich.org 70 i- (setq u4 (consume-octet)) Err bitreich.org 70 i- (handle-error-if-icb u4 3) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((and (= u1 #xf0) (< u2 #x90)) Err bitreich.org 70 i- (handle-error 4 overlong-utf8-sequence)) Err bitreich.org 70 i- ((< u1 #xf8) Err bitreich.org 70 i- (if (or (> u1 #xf4) (and (= u1 #xf4) (> u2 #x8f))) Err bitreich.org 70 i- (handle-error 4 character-out-of-range) Err bitreich.org 70 i- (f-logior (f-ash (f-logand u1 7) 18) Err bitreich.org 70 i- (f-ash (f-logxor u2 #x80) 12) Err bitreich.org 70 i- (f-ash (f-logxor u3 #x80) 6) Err bitreich.org 70 i- (f-logxor u4 #x80)))) Err bitreich.org 70 i- ;; from here on we'll be getting either Err bitreich.org 70 i- ;; invalid continuation bytes or overlong Err bitreich.org 70 i- ;; 5-byte or 6-byte sequences. Err bitreich.org 70 i- (t Err bitreich.org 70 i- (setq u5 (consume-octet)) Err bitreich.org 70 i- (handle-error-if-icb u5 4) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((and (= u1 #xf8) (< u2 #x88)) Err bitreich.org 70 i- (handle-error 5 overlong-utf8-sequence)) Err bitreich.org 70 i- ((< u1 #xfc) Err bitreich.org 70 i- (handle-error 5 character-out-of-range)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (setq u6 (consume-octet)) Err bitreich.org 70 i- (handle-error-if-icb u6 5) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((and (= u1 #xfc) (< u2 #x84)) Err bitreich.org 70 i- (handle-error 6 overlong-utf8-sequence)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (handle-error 6 character-out-of-range) Err bitreich.org 70 i- ))))))))))))) Err bitreich.org 70 i- dest di)) Err bitreich.org 70 i- finally (return (the fixnum (- di d-start))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; UTF-8B Err bitreich.org 70 i- Err bitreich.org 70 i-;;; The following excerpt from a linux-utf8 message by Markus Kuhn is Err bitreich.org 70 i-;;; the closest thing to a UTF-8B specification: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; "D) Emit a malformed UTF-16 sequence for every byte in a malformed Err bitreich.org 70 i-;;; UTF-8 sequence Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; All the previous options for converting malformed UTF-8 sequences Err bitreich.org 70 i-;;; to UTF-16 destroy information. This can be highly undesirable in Err bitreich.org 70 i-;;; applications such as text file editors, where guaranteed binary Err bitreich.org 70 i-;;; transparency is a desireable feature. (E.g., I frequently edit Err bitreich.org 70 i-;;; executable code or graphic files with the Emacs text editor and I Err bitreich.org 70 i-;;; hate the idea that my editor might automatically make U+FFFD Err bitreich.org 70 i-;;; substitutions at locations that I haven't even edited when I save Err bitreich.org 70 i-;;; the file again.) Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; I therefore suggested 1999-11-02 on the unicode@xxxxxxxxxxx Err bitreich.org 70 i-;;; mailing list the following approach. Instead of using U+FFFD, Err bitreich.org 70 i-;;; simply encode malformed UTF-8 sequences as malformed UTF-16 Err bitreich.org 70 i-;;; sequences. Malformed UTF-8 sequences consist excludively of the Err bitreich.org 70 i-;;; bytes 0x80 - 0xff, and each of these bytes can be represented Err bitreich.org 70 i-;;; using a 16-bit value from the UTF-16 low-half surrogate zone Err bitreich.org 70 i-;;; U+DC80 to U+DCFF. Thus, the overlong "K" (U+004B) 0xc1 0x8b from Err bitreich.org 70 i-;;; the above example would be represented in UTF-16 as U+DCC1 Err bitreich.org 70 i-;;; U+DC8B. If we simply make sure that every UTF-8 encoded surrogate Err bitreich.org 70 i-;;; character is also treated like a malformed sequence, then there Err bitreich.org 70 i-;;; is no way that a single high-half surrogate could precede the Err bitreich.org 70 i-;;; encoded malformed sequence and cause a valid UTF-16 sequence to Err bitreich.org 70 i-;;; emerge. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; This way 100% binary transparent UTF-8 -> UTF-16 -> UTF-8 Err bitreich.org 70 i-;;; round-trip compatibility can be achieved quite easily. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; On an output device, a lonely low-half surrogate character should Err bitreich.org 70 i-;;; be treated just like a character outside the adopted subset of Err bitreich.org 70 i-;;; representable characters, that is for the end user, the display Err bitreich.org 70 i-;;; would look exactly like with semantics B), i.e. one symbol per Err bitreich.org 70 i-;;; byte of a malformed sequence. However in contrast to semantics Err bitreich.org 70 i-;;; B), no information is thrown away, and a cut&paste in an editor Err bitreich.org 70 i-;;; or terminal emulator will be guaranteed to reconstruct the Err bitreich.org 70 i-;;; original byte sequence. This should greatly reduce the incidence Err bitreich.org 70 i-;;; of accidental corruption of binary data by UTF-8 -> UTF-16 -> Err bitreich.org 70 i-;;; UTF-8 conversion round trips." Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :utf-8b Err bitreich.org 70 i- "An 8-bit, variable-length character encoding in which Err bitreich.org 70 i-character code points in the range #x00-#x7f can be encoded in a Err bitreich.org 70 i-single octet; characters with larger code values can be encoded Err bitreich.org 70 i-in 2 to 4 bytes. Invalid UTF-8 sequences are encoded with #xDCXX Err bitreich.org 70 i-code points for each invalid byte." Err bitreich.org 70 i- :max-units-per-char 4 Err bitreich.org 70 i- :literal-char-code-limit #x80 Err bitreich.org 70 i- :bom-encoding #(#xef #xbb #xbf) Err bitreich.org 70 i- :default-replacement nil) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; TODO: reuse the :UTF-8 octet counter through a simple macro. Err bitreich.org 70 i-(define-octet-counter :utf-8b (getter type) Err bitreich.org 70 i- `(named-lambda utf-8b-octet-counter (seq start end max) Err bitreich.org 70 i- (declare (type ,type seq) (fixnum start end max)) Err bitreich.org 70 i- (loop with noctets fixnum = 0 Err bitreich.org 70 i- for i fixnum from start below end Err bitreich.org 70 i- for code of-type code-point = (,getter seq i) do Err bitreich.org 70 i- (let ((new (+ (cond ((< code #x80) 1) Err bitreich.org 70 i- ((< code #x800) 2) Err bitreich.org 70 i- ((<= #xdc80 code #xdcff) 1) Err bitreich.org 70 i- ((< code #x10000) 3) Err bitreich.org 70 i- (t 4)) Err bitreich.org 70 i- noctets))) Err bitreich.org 70 i- (if (and (plusp max) (> new max)) Err bitreich.org 70 i- (loop-finish) Err bitreich.org 70 i- (setq noctets new))) Err bitreich.org 70 i- finally (return (values noctets i))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-code-point-counter :utf-8b (getter type) Err bitreich.org 70 i- `(named-lambda utf-8b-code-point-counter (seq start end max) Err bitreich.org 70 i- (declare (type ,type seq) (fixnum start end max)) Err bitreich.org 70 i- (loop with nchars fixnum = 0 Err bitreich.org 70 i- with i fixnum = start Err bitreich.org 70 i- while (< i end) do Err bitreich.org 70 i- ;; wrote this code with LET instead of FOR because CLISP's Err bitreich.org 70 i- ;; LOOP doesn't like WHILE clauses before FOR clauses. Err bitreich.org 70 i- (let* ((octet (,getter seq i)) Err bitreich.org 70 i- (noctets (cond ((< octet #x80) 1) Err bitreich.org 70 i- ((< octet #xe0) 2) Err bitreich.org 70 i- ((< octet #xf0) 3) Err bitreich.org 70 i- (t 4)))) Err bitreich.org 70 i- (declare (type ub8 octet) (fixnum noctets)) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((> (+ i noctets) end) Err bitreich.org 70 i- ;; If this error is suppressed these last few bytes Err bitreich.org 70 i- ;; will be encoded as raw bytes later. Err bitreich.org 70 i- (decoding-error (vector octet) :utf-8 seq i Err bitreich.org 70 i- nil 'end-of-input-in-character) Err bitreich.org 70 i- (return (values (+ nchars (- end i)) end))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- ;; FIXME: clean this mess up. Err bitreich.org 70 i- (let* ((u1 octet) Err bitreich.org 70 i- (u2 (if (>= noctets 2) (,getter seq (1+ i)) 0)) Err bitreich.org 70 i- (u3 (if (>= noctets 3) (,getter seq (+ i 2)) 0)) Err bitreich.org 70 i- (u4 (if (= noctets 4) (,getter seq (+ i 3)) 0)) Err bitreich.org 70 i- (inc (or (and (> noctets 1) Err bitreich.org 70 i- (< u1 #xc2)) Err bitreich.org 70 i- (and (= noctets 2) Err bitreich.org 70 i- (not (logior u2 #x40))) Err bitreich.org 70 i- (and (= noctets 3) Err bitreich.org 70 i- (not (and (< (f-logxor u2 #x80) #x40) Err bitreich.org 70 i- (< (f-logxor u3 #x80) #x40) Err bitreich.org 70 i- (or (>= u1 #xe1) (>= u2 #xa0)) Err bitreich.org 70 i- (or (/= u1 #xed) (< u2 #xa0) (> u2 #xbf))))) Err bitreich.org 70 i- (and (= noctets 4) Err bitreich.org 70 i- (not Err bitreich.org 70 i- (and (< (f-logxor u2 #x80) #x40) Err bitreich.org 70 i- (< (f-logxor u3 #x80) #x40) Err bitreich.org 70 i- (< (f-logxor u4 #x80) #x40) Err bitreich.org 70 i- (or (>= u1 #xf1) (>= u2 #x90)))))))) Err bitreich.org 70 i- (let ((new-nchars (if inc (+ nchars noctets) (1+ nchars)))) Err bitreich.org 70 i- (when (and (plusp max) (> new-nchars max)) Err bitreich.org 70 i- (return (values nchars i))) Err bitreich.org 70 i- (incf i noctets) Err bitreich.org 70 i- (setq nchars new-nchars)))))) Err bitreich.org 70 i- finally (progn Err bitreich.org 70 i- (assert (= i end)) Err bitreich.org 70 i- (return (values nchars i)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; TODO: reuse the :UTF-8 encoder with through a simple macro. Err bitreich.org 70 i-(define-encoder :utf-8b (getter src-type setter dest-type) Err bitreich.org 70 i- `(named-lambda utf-8b-encoder (src start end dest d-start) Err bitreich.org 70 i- (declare (type ,src-type src) Err bitreich.org 70 i- (type ,dest-type dest) Err bitreich.org 70 i- (fixnum start end d-start)) Err bitreich.org 70 i- (loop with di fixnum = d-start Err bitreich.org 70 i- for i fixnum from start below end Err bitreich.org 70 i- for code of-type code-point = (,getter src i) do Err bitreich.org 70 i- (macrolet ((set-octet (offset value) Err bitreich.org 70 i- `(,',setter ,value dest (the fixnum (+ di ,offset))))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ;; 1 octet Err bitreich.org 70 i- ((< code #x80) Err bitreich.org 70 i- (set-octet 0 code) Err bitreich.org 70 i- (incf di)) Err bitreich.org 70 i- ;; 2 octets Err bitreich.org 70 i- ((< code #x800) Err bitreich.org 70 i- (set-octet 0 (logior #xc0 (f-ash code -6))) Err bitreich.org 70 i- (set-octet 1 (logior #x80 (f-logand code #x3f))) Err bitreich.org 70 i- (incf di 2)) Err bitreich.org 70 i- ;; 1 octet (invalid octet) Err bitreich.org 70 i- ((<= #xdc80 code #xdcff) Err bitreich.org 70 i- (set-octet 0 (f-logand code #xff)) Err bitreich.org 70 i- (incf di)) Err bitreich.org 70 i- ;; 3 octets Err bitreich.org 70 i- ((< code #x10000) Err bitreich.org 70 i- (set-octet 0 (logior #xe0 (f-ash code -12))) Err bitreich.org 70 i- (set-octet 1 (logior #x80 (f-logand #x3f (f-ash code -6)))) Err bitreich.org 70 i- (set-octet 2 (logior #x80 (f-logand code #x3f))) Err bitreich.org 70 i- (incf di 3)) Err bitreich.org 70 i- ;; 4 octets Err bitreich.org 70 i- (t Err bitreich.org 70 i- (set-octet 0 (logior #xf0 (f-logand #x07 (f-ash code -18)))) Err bitreich.org 70 i- (set-octet 1 (logior #x80 (f-logand #x3f (f-ash code -12)))) Err bitreich.org 70 i- (set-octet 2 (logior #x80 (f-logand #x3f (f-ash code -6)))) Err bitreich.org 70 i- (set-octet 3 (logand #x3f code)) Err bitreich.org 70 i- (incf di 4)))) Err bitreich.org 70 i- finally (return (the fixnum (- di d-start)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-decoder :utf-8b (getter src-type setter dest-type) Err bitreich.org 70 i- `(named-lambda utf-8b-decoder (src start end dest d-start) Err bitreich.org 70 i- (declare (type ,src-type src) Err bitreich.org 70 i- (type ,dest-type dest) Err bitreich.org 70 i- (fixnum start end d-start)) Err bitreich.org 70 i- (let ((u2 0) (u3 0) (u4 0)) Err bitreich.org 70 i- (declare (type ub8 u2 u3 u4)) Err bitreich.org 70 i- (loop for di fixnum from d-start Err bitreich.org 70 i- for i fixnum from start below end Err bitreich.org 70 i- for u1 of-type ub8 = (,getter src i) do Err bitreich.org 70 i- ;; Unlike the UTF-8 version, this version of Err bitreich.org 70 i- ;; CONSUME-OCTET needs to check if I is being incremented Err bitreich.org 70 i- ;; past END because we might have trailing binary Err bitreich.org 70 i- ;; garbage. Err bitreich.org 70 i- (macrolet Err bitreich.org 70 i- ((consume-octet (n) Err bitreich.org 70 i- `(if (= i (1- end)) Err bitreich.org 70 i- (encode-raw-octets ,n) Err bitreich.org 70 i- (,',getter src (incf i)))) Err bitreich.org 70 i- (encode-raw-octets (n) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- ,@(loop for i below n and var in '(u1 u2 u3 u4) Err bitreich.org 70 i- collect `(,',setter (logior #xdc00 ,var) dest di) Err bitreich.org 70 i- unless (= i (1- n)) Err bitreich.org 70 i- collect '(incf di)) Err bitreich.org 70 i- (return-from set-body)))) Err bitreich.org 70 i- (block set-body Err bitreich.org 70 i- (,setter (cond Err bitreich.org 70 i- ((< u1 #x80) ; 1 octet Err bitreich.org 70 i- u1) Err bitreich.org 70 i- ((>= u1 #xc2) Err bitreich.org 70 i- (setq u2 (consume-octet 1)) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((< u1 #xe0) ; 2 octets Err bitreich.org 70 i- (if (< (f-logxor u2 #x80) #x40) Err bitreich.org 70 i- (logior (f-ash (f-logand #x1f u1) 6) Err bitreich.org 70 i- (f-logxor u2 #x80)) Err bitreich.org 70 i- (encode-raw-octets 2))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (setq u3 (consume-octet 2)) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((< u1 #xf0) ; 3 octets Err bitreich.org 70 i- (if (and (< (f-logxor u2 #x80) #x40) Err bitreich.org 70 i- (< (f-logxor u3 #x80) #x40) Err bitreich.org 70 i- (or (>= u1 #xe1) (>= u2 #xa0))) Err bitreich.org 70 i- (let ((start (f-logior (f-ash (f-logand u1 #x0f) 12) Err bitreich.org 70 i- (f-ash (f-logand u2 #x3f) 6)))) Err bitreich.org 70 i- (if (<= #xd800 start #xdfc0) Err bitreich.org 70 i- (encode-raw-octets 3) Err bitreich.org 70 i- (logior start (f-logand u3 #x3f)))) Err bitreich.org 70 i- (encode-raw-octets 3))) Err bitreich.org 70 i- (t ; 4 octets Err bitreich.org 70 i- (setq u4 (consume-octet 3)) Err bitreich.org 70 i- (if (and (< (f-logxor u2 #x80) #x40) Err bitreich.org 70 i- (< (f-logxor u3 #x80) #x40) Err bitreich.org 70 i- (< (f-logxor u4 #x80) #x40) Err bitreich.org 70 i- (or (>= u1 #xf1) (>= u2 #x90))) Err bitreich.org 70 i- (logior Err bitreich.org 70 i- (f-logior (f-ash (f-logand u1 7) 18) Err bitreich.org 70 i- (f-ash (f-logxor u2 #x80) 12)) Err bitreich.org 70 i- (f-logior (f-ash (f-logxor u3 #x80) 6) Err bitreich.org 70 i- (f-logxor u4 #x80))) Err bitreich.org 70 i- (encode-raw-octets 4))))))) Err bitreich.org 70 i- (t (encode-raw-octets 1))) Err bitreich.org 70 i- dest di))) Err bitreich.org 70 i- finally (return (the fixnum (- di d-start))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; UTF-16 Err bitreich.org 70 i- Err bitreich.org 70 i-;;; TODO: add a way to pass some info at compile-time telling us that, Err bitreich.org 70 i-;;; for example, the maximum code-point will always be < #x10000 in Err bitreich.org 70 i-;;; which case we could simply return (* 2 (- end start)). Err bitreich.org 70 i-(defmacro utf16-octet-counter (getter type) Err bitreich.org 70 i- `(named-lambda utf-16-octet-counter (seq start end max) Err bitreich.org 70 i- (declare (type ,type seq) (fixnum start end max)) Err bitreich.org 70 i- (loop with noctets fixnum = 0 Err bitreich.org 70 i- for i fixnum from start below end Err bitreich.org 70 i- for code of-type code-point = (,getter seq i) Err bitreich.org 70 i- do (let ((new (the fixnum (+ (if (< code #x10000) 2 4) noctets)))) Err bitreich.org 70 i- (if (and (plusp max) (> new max)) Err bitreich.org 70 i- (loop-finish) Err bitreich.org 70 i- (setq noctets new))) Err bitreich.org 70 i- finally (return (values noctets i))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro utf-16-combine-surrogate-pairs (u1 u2) Err bitreich.org 70 i- `(the (unsigned-byte 21) Err bitreich.org 70 i- (+ #x10000 Err bitreich.org 70 i- (the (unsigned-byte 20) Err bitreich.org 70 i- (logior Err bitreich.org 70 i- (the (unsigned-byte 20) Err bitreich.org 70 i- (ash (the (unsigned-byte 10) (- ,u1 #xd800)) 10)) Err bitreich.org 70 i- (the (unsigned-byte 10) Err bitreich.org 70 i- (- ,u2 #xdc00))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro define-utf-16 (name &optional endianness) Err bitreich.org 70 i- (check-type endianness (or null (eql :be) (eql :le))) Err bitreich.org 70 i- (check-type name keyword) Err bitreich.org 70 i- (let ((swap-var (gensym "SWAP")) Err bitreich.org 70 i- (code-point-counter-name Err bitreich.org 70 i- (format-symbol t '#:~a-code-point-counter (string name))) Err bitreich.org 70 i- (encoder-name (format-symbol t '#:~a-encoder (string name))) Err bitreich.org 70 i- (decoder-name (format-symbol t '#:~a-decoder (string name)))) Err bitreich.org 70 i- (labels ((make-bom-check-form (end start getter seq) Err bitreich.org 70 i- (if (null endianness) Err bitreich.org 70 i- ``((,',swap-var Err bitreich.org 70 i- (when (> ,,end ,,start) Err bitreich.org 70 i- (case (,,getter ,,seq ,,start 2 :ne) Err bitreich.org 70 i- (#.+byte-order-mark-code+ (incf ,,start 2) nil) Err bitreich.org 70 i- (#.+swapped-byte-order-mark-code+ (incf ,,start 2) t) Err bitreich.org 70 i- (t #+little-endian t))))) Err bitreich.org 70 i- '())) Err bitreich.org 70 i- (make-getter-form (getter src i) Err bitreich.org 70 i- (case endianness Err bitreich.org 70 i- (:le ``(,,getter ,,src ,,i 2 :le)) Err bitreich.org 70 i- (:be ``(,,getter ,,src ,,i 2 :be)) Err bitreich.org 70 i- (t ``(if ,',swap-var Err bitreich.org 70 i- (,,getter ,,src ,,i 2 :re) Err bitreich.org 70 i- (,,getter ,,src ,,i 2 :ne))))) Err bitreich.org 70 i- (make-setter-form (setter code dest di) Err bitreich.org 70 i- (case endianness Err bitreich.org 70 i- (:be ``(,,setter ,,code ,,dest ,,di 2 :be)) Err bitreich.org 70 i- (:le ``(,,setter ,,code ,,dest ,,di 2 :le)) Err bitreich.org 70 i- (t ``(,,setter ,,code ,,dest ,,di 2 :ne))))) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (define-octet-counter ,name (getter type) Err bitreich.org 70 i- `(utf16-octet-counter ,getter ,type)) Err bitreich.org 70 i- (define-code-point-counter ,name (getter type) Err bitreich.org 70 i- `(named-lambda ,',code-point-counter-name (seq start end max) Err bitreich.org 70 i- (declare (type ,type seq) (fixnum start end max)) Err bitreich.org 70 i- (let* ,,(make-bom-check-form ''end ''start 'getter ''seq) Err bitreich.org 70 i- (loop with count fixnum = 0 Err bitreich.org 70 i- with i fixnum = start Err bitreich.org 70 i- while (<= i (- end 2)) do Err bitreich.org 70 i- (let* ((code ,,(make-getter-form 'getter ''seq ''i)) Err bitreich.org 70 i- (next-i (+ i (if (or (< code #xd800) (>= code #xdc00)) Err bitreich.org 70 i- 2 Err bitreich.org 70 i- 4)))) Err bitreich.org 70 i- (declare (type (unsigned-byte 16) code) (fixnum next-i)) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((> next-i end) Err bitreich.org 70 i- (decoding-error Err bitreich.org 70 i- (vector (,getter seq i) (,getter seq (1+ i))) Err bitreich.org 70 i- ,',name seq i nil 'end-of-input-in-character) Err bitreich.org 70 i- (return (values count i))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (setq i next-i Err bitreich.org 70 i- count (1+ count)) Err bitreich.org 70 i- (when (and (plusp max) (= count max)) Err bitreich.org 70 i- (return (values count i)))))) Err bitreich.org 70 i- finally (progn Err bitreich.org 70 i- (assert (= i end)) Err bitreich.org 70 i- (return (values count i))))))) Err bitreich.org 70 i- (define-encoder ,name (getter src-type setter dest-type) Err bitreich.org 70 i- `(named-lambda ,',encoder-name (src start end dest d-start) Err bitreich.org 70 i- (declare (type ,src-type src) Err bitreich.org 70 i- (type ,dest-type dest) Err bitreich.org 70 i- (fixnum start end d-start)) Err bitreich.org 70 i- (loop with di fixnum = d-start Err bitreich.org 70 i- for i fixnum from start below end Err bitreich.org 70 i- for code of-type code-point = (,getter src i) Err bitreich.org 70 i- for high-bits fixnum = (- code #x10000) do Err bitreich.org 70 i- (cond ((< high-bits 0) Err bitreich.org 70 i- ,,(make-setter-form 'setter ''code ''dest ''di) Err bitreich.org 70 i- (incf di 2)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- ,,(make-setter-form Err bitreich.org 70 i- 'setter ''(logior #xd800 (f-ash high-bits -10)) Err bitreich.org 70 i- ''dest ''di) Err bitreich.org 70 i- ,,(make-setter-form Err bitreich.org 70 i- 'setter ''(logior #xdc00 (f-logand high-bits #x3ff)) Err bitreich.org 70 i- ''dest ''(+ di 2)) Err bitreich.org 70 i- (incf di 4))) Err bitreich.org 70 i- finally (return (the fixnum (- di d-start)))))) Err bitreich.org 70 i- (define-decoder ,name (getter src-type setter dest-type) Err bitreich.org 70 i- `(named-lambda ,',decoder-name (src start end dest d-start) Err bitreich.org 70 i- (declare (type ,src-type src) Err bitreich.org 70 i- (type ,dest-type dest) Err bitreich.org 70 i- (fixnum start end d-start)) Err bitreich.org 70 i- (let ,,(make-bom-check-form ''end ''start 'getter ''src) Err bitreich.org 70 i- (loop with i fixnum = start Err bitreich.org 70 i- for di fixnum from d-start Err bitreich.org 70 i- until (= i end) do Err bitreich.org 70 i- (let ((u1 ,,(make-getter-form 'getter ''src ''i))) Err bitreich.org 70 i- (declare (type (unsigned-byte 16) u1)) Err bitreich.org 70 i- (incf i 2) Err bitreich.org 70 i- (,setter (cond Err bitreich.org 70 i- ((or (< u1 #xd800) (>= u1 #xe000)) ; 2 octets Err bitreich.org 70 i- u1) Err bitreich.org 70 i- ((< u1 #xdc00) ; 4 octets Err bitreich.org 70 i- (let ((u2 ,,(make-getter-form 'getter ''src ''i))) Err bitreich.org 70 i- (declare (type (unsigned-byte 16) u2)) Err bitreich.org 70 i- (incf i 2) Err bitreich.org 70 i- (if (and (>= u2 #xdc00) (< u2 #xe000)) Err bitreich.org 70 i- (utf-16-combine-surrogate-pairs u1 u2) Err bitreich.org 70 i- (decoding-error Err bitreich.org 70 i- (vector (,getter src (- i 4)) Err bitreich.org 70 i- (,getter src (- i 3)) Err bitreich.org 70 i- (,getter src (- i 2)) Err bitreich.org 70 i- (,getter src (- i 1))) Err bitreich.org 70 i- ,',name src i +repl+)))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (decoding-error (vector (,getter src (- i 2)) Err bitreich.org 70 i- (,getter src (- i 1))) Err bitreich.org 70 i- ,',name src i +repl+))) Err bitreich.org 70 i- dest di)) Err bitreich.org 70 i- finally (return (the fixnum (- di d-start))))))) Err bitreich.org 70 i- ',name)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :utf-16 Err bitreich.org 70 i- "A 16-bit, variable-length encoding in which characters with Err bitreich.org 70 i-code points less than #x10000 can be encoded in a single 16-bit Err bitreich.org 70 i-word and characters with larger codes can be encoded in a pair of Err bitreich.org 70 i-16-bit words. The endianness of the encoded data is indicated by Err bitreich.org 70 i-the endianness of a byte-order-mark character (#\u+feff) Err bitreich.org 70 i-prepended to the data; in the absence of such a character on Err bitreich.org 70 i-input, the data is assumed to be in big-endian order. Output is Err bitreich.org 70 i-written in native byte-order with a leading byte-order mark." Err bitreich.org 70 i- :max-units-per-char 2 Err bitreich.org 70 i- :code-unit-size 16 Err bitreich.org 70 i- :native-endianness t ; not necessarily true when decoding Err bitreich.org 70 i- :decode-literal-code-unit-limit #xd800 Err bitreich.org 70 i- :encode-literal-code-unit-limit #x10000 Err bitreich.org 70 i- :use-bom #+big-endian :utf-16be #+little-endian :utf-16le Err bitreich.org 70 i- :bom-encoding #+big-endian #(#xfe #xff) #+little-endian #(#xff #xfe) Err bitreich.org 70 i- :nul-encoding #(0 0) Err bitreich.org 70 i- :default-replacement #xfffd Err bitreich.org 70 i- :ambiguous #+little-endian t #+big-endian nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-utf-16 :utf-16) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :utf-16le Err bitreich.org 70 i- "A 16-bit, variable-length encoding in which characters with Err bitreich.org 70 i-code points less than #x10000 can be encoded in a single 16-bit Err bitreich.org 70 i-word and characters with larger codes can be encoded in a pair of Err bitreich.org 70 i-16-bit words. The data is assumed to be in little-endian order. Output is Err bitreich.org 70 i-written in little-endian byte-order without a leading byte-order mark." Err bitreich.org 70 i- :aliases '(:utf-16/le) Err bitreich.org 70 i- :max-units-per-char 2 Err bitreich.org 70 i- :code-unit-size 16 Err bitreich.org 70 i- :native-endianness #+little-endian t #+big-endian nil Err bitreich.org 70 i- :decode-literal-code-unit-limit #xd800 Err bitreich.org 70 i- :encode-literal-code-unit-limit #x10000 Err bitreich.org 70 i- :nul-encoding #(0 0) Err bitreich.org 70 i- :default-replacement #xfffd) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-utf-16 :utf-16le :le) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :utf-16be Err bitreich.org 70 i- "A 16-bit, variable-length encoding in which characters with Err bitreich.org 70 i-code points less than #x10000 can be encoded in a single 16-bit Err bitreich.org 70 i-word and characters with larger codes can be encoded in a pair of Err bitreich.org 70 i-16-bit words. The data is assumed to be in big-endian order. Output is Err bitreich.org 70 i-written in big-endian byte-order without a leading byte-order mark." Err bitreich.org 70 i- :aliases '(:utf-16/be) Err bitreich.org 70 i- :max-units-per-char 2 Err bitreich.org 70 i- :code-unit-size 16 Err bitreich.org 70 i- :native-endianness #+little-endian nil #+big-endian t Err bitreich.org 70 i- :decode-literal-code-unit-limit #xd800 Err bitreich.org 70 i- :encode-literal-code-unit-limit #x10000 Err bitreich.org 70 i- :nul-encoding #(0 0) Err bitreich.org 70 i- :default-replacement #xfffd) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-utf-16 :utf-16be :be) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro define-ucs (name bytes &optional endianness (limit #x110000)) Err bitreich.org 70 i- (check-type name keyword) Err bitreich.org 70 i- (check-type bytes (or (eql 2) (eql 4))) Err bitreich.org 70 i- (check-type endianness (or null (eql :le) (eql :be))) Err bitreich.org 70 i- (let ((swap-var (gensym "SWAP")) Err bitreich.org 70 i- (code-point-counter-name Err bitreich.org 70 i- (format-symbol t '#:~a-code-point-counter (string name))) Err bitreich.org 70 i- (encoder-name Err bitreich.org 70 i- (format-symbol t '#:~a-encoder (string name))) Err bitreich.org 70 i- (decoder-name Err bitreich.org 70 i- (format-symbol t '#:~a-decoder (string name)))) Err bitreich.org 70 i- (labels ((make-bom-check-form (end start getter src) Err bitreich.org 70 i- (if (null endianness) Err bitreich.org 70 i- ``(when (not (zerop (- ,,end ,,start))) Err bitreich.org 70 i- (case (,,getter ,,src 0 ,',bytes :ne) Err bitreich.org 70 i- (#.+byte-order-mark-code+ Err bitreich.org 70 i- (incf ,,start ,',bytes) nil) Err bitreich.org 70 i- (#.+swapped-byte-order-mark-code-32+ Err bitreich.org 70 i- (incf ,,start ,',bytes) t) Err bitreich.org 70 i- (t #+little-endian t))) Err bitreich.org 70 i- '())) Err bitreich.org 70 i- (make-setter-form (setter code dest di) Err bitreich.org 70 i- ``(,,setter ,,code ,,dest ,,di ,',bytes Err bitreich.org 70 i- ,',(or endianness :ne))) Err bitreich.org 70 i- (make-getter-form (getter src i) Err bitreich.org 70 i- (if (null endianness) Err bitreich.org 70 i- ``(if ,',swap-var Err bitreich.org 70 i- (,,getter ,,src ,,i ,',bytes :re) Err bitreich.org 70 i- (,,getter ,,src ,,i ,',bytes :ne)) Err bitreich.org 70 i- ``(,,getter ,,src ,,i ,',bytes ,',endianness)))) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (define-code-point-counter ,name (getter type) Err bitreich.org 70 i- `(named-lambda ,',code-point-counter-name (seq start end max) Err bitreich.org 70 i- (declare (type ,type seq) (fixnum start end max)) Err bitreich.org 70 i- ;; check for bom Err bitreich.org 70 i- ,,(make-bom-check-form ''end ''start 'getter ''seq) Err bitreich.org 70 i- (multiple-value-bind (count rem) Err bitreich.org 70 i- (floor (- end start) ,',bytes) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((and (plusp max) (> count max)) Err bitreich.org 70 i- (values max (the fixnum (+ start (* ,',bytes max))))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- ;; check for incomplete last character Err bitreich.org 70 i- (unless (zerop rem) Err bitreich.org 70 i- (let ((vector (make-array ,',bytes :fill-pointer 0))) Err bitreich.org 70 i- (dotimes (i rem) Err bitreich.org 70 i- (vector-push (,getter seq (+ i (- end rem))) vector)) Err bitreich.org 70 i- (decoding-error vector ,',name seq (the fixnum (- end rem)) nil Err bitreich.org 70 i- 'end-of-input-in-character) Err bitreich.org 70 i- (decf end rem))) Err bitreich.org 70 i- (values count end)))))) Err bitreich.org 70 i- (define-encoder ,name (getter src-type setter dest-type) Err bitreich.org 70 i- `(named-lambda ,',encoder-name (src start end dest d-start) Err bitreich.org 70 i- (declare (type ,src-type src) Err bitreich.org 70 i- (type ,dest-type dest) Err bitreich.org 70 i- (fixnum start end d-start)) Err bitreich.org 70 i- (loop for i fixnum from start below end Err bitreich.org 70 i- and di fixnum from d-start by ,',bytes Err bitreich.org 70 i- for code of-type code-point = (,getter src i) Err bitreich.org 70 i- do (if (>= code ,',limit) Err bitreich.org 70 i- (encoding-error code ,',name src i +repl+) Err bitreich.org 70 i- ,,(make-setter-form 'setter ''code ''dest ''di)) Err bitreich.org 70 i- finally (return (the fixnum (- di d-start)))))) Err bitreich.org 70 i- (define-decoder ,name (getter src-type setter dest-type) Err bitreich.org 70 i- `(named-lambda ,',decoder-name (src start end dest d-start) Err bitreich.org 70 i- (declare (type ,src-type src) Err bitreich.org 70 i- (type ,dest-type dest) Err bitreich.org 70 i- (fixnum start end d-start)) Err bitreich.org 70 i- (let ((,',swap-var ,,(make-bom-check-form ''end ''start 'getter ''src))) Err bitreich.org 70 i- (declare (ignorable ,',swap-var)) Err bitreich.org 70 i- (loop for i fixnum from start below end by ,',bytes Err bitreich.org 70 i- and di from d-start Err bitreich.org 70 i- do (,setter (let ((unit ,,(make-getter-form 'getter ''src ''i))) Err bitreich.org 70 i- (if (>= unit ,',limit) Err bitreich.org 70 i- (decoding-error Err bitreich.org 70 i- (vector (,getter src i) Err bitreich.org 70 i- (,getter src (+ i 1)) Err bitreich.org 70 i- ,@,(if (= bytes 4) Err bitreich.org 70 i- ``((,getter src (+ i 2)) Err bitreich.org 70 i- (,getter src (+ i 3))))) Err bitreich.org 70 i- ,',name src i +repl+ Err bitreich.org 70 i- 'character-out-of-range) Err bitreich.org 70 i- unit)) Err bitreich.org 70 i- dest di) Err bitreich.org 70 i- finally (return (the fixnum (- di d-start))))))) Err bitreich.org 70 i- ',name)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; UTF-32 Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :utf-32 Err bitreich.org 70 i- "A 32-bit, fixed-length encoding in which all Unicode Err bitreich.org 70 i-characters can be encoded in a single 32-bit word. The Err bitreich.org 70 i-endianness of the encoded data is indicated by the endianness of Err bitreich.org 70 i-a byte-order-mark character (#\u+feff) prepended to the data; in Err bitreich.org 70 i-the absence of such a character on input, input data is assumed Err bitreich.org 70 i-to be in big-endian order. Output is written in native byte Err bitreich.org 70 i-order with a leading byte-order mark." Err bitreich.org 70 i- :aliases '(:ucs-4) Err bitreich.org 70 i- :max-units-per-char 1 Err bitreich.org 70 i- :code-unit-size 32 Err bitreich.org 70 i- :native-endianness t ; not necessarily true when decoding Err bitreich.org 70 i- :literal-char-code-limit #x110000 Err bitreich.org 70 i- :use-bom #+little-endian :utf-32le #+big-endian :utf-32be Err bitreich.org 70 i- :bom-encoding Err bitreich.org 70 i- #+big-endian #(#x00 #x00 #xfe #xff) Err bitreich.org 70 i- #+little-endian #(#xff #xfe #x00 #x00) Err bitreich.org 70 i- :nul-encoding #(0 0 0 0) Err bitreich.org 70 i- :ambiguous #+little-endian t #+big-endian nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-ucs :utf-32 4) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :utf-32le Err bitreich.org 70 i- "A 32-bit, fixed-length encoding in which all Unicode Err bitreich.org 70 i-characters can be encoded in a single 32-bit word. Input data is assumed Err bitreich.org 70 i-to be in little-endian order. Output is also written in little-endian byte Err bitreich.org 70 i-order without a leading byte-order mark." Err bitreich.org 70 i- :max-units-per-char 1 Err bitreich.org 70 i- :code-unit-size 32 Err bitreich.org 70 i- :aliases '(:utf-32/le :ucs-4le :ucs-4/le) Err bitreich.org 70 i- :native-endianness #+little-endian t #+big-endian nil Err bitreich.org 70 i- :literal-char-code-limit #x110000 Err bitreich.org 70 i- :nul-encoding #(0 0 0 0)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-ucs :utf-32le 4 :le) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :utf-32be Err bitreich.org 70 i- "A 32-bit, fixed-length encoding in which all Unicode Err bitreich.org 70 i-characters can be encoded in a single 32-bit word. Input data is assumed Err bitreich.org 70 i-to be in big-endian order. Output is also written in big-endian byte Err bitreich.org 70 i-order without a leading byte-order mark." Err bitreich.org 70 i- :max-units-per-char 1 Err bitreich.org 70 i- :code-unit-size 32 Err bitreich.org 70 i- :aliases '(:utf-32/be :ucs-4be :ucs-4/be) Err bitreich.org 70 i- :native-endianness #+little-endian nil #+big-endian t Err bitreich.org 70 i- :literal-char-code-limit #x110000 Err bitreich.org 70 i- :nul-encoding #(0 0 0 0)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-ucs :utf-32be 4 :be) Err bitreich.org 70 i- Err bitreich.org 70 i-;; UCS-2 Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :ucs-2 Err bitreich.org 70 i- "A 16-bit, fixed-length encoding in which all Unicode Err bitreich.org 70 i-characters can be encoded in a single 16-bit word. The Err bitreich.org 70 i-endianness of the encoded data is indicated by the endianness of Err bitreich.org 70 i-a byte-order-mark character (#\u+feff) prepended to the data; in Err bitreich.org 70 i-the absence of such a character on input, input data is assumed Err bitreich.org 70 i-to be in big-endian order. Output is written in native byte Err bitreich.org 70 i-order with a leading byte-order mark." Err bitreich.org 70 i- :aliases '(:ucs-2) Err bitreich.org 70 i- :max-units-per-char 1 Err bitreich.org 70 i- :code-unit-size 16 Err bitreich.org 70 i- :native-endianness t ; not necessarily true when decoding Err bitreich.org 70 i- :literal-char-code-limit #x10000 Err bitreich.org 70 i- :use-bom #+little-endian :ucs-2le #+big-endian :ucs-2be Err bitreich.org 70 i- :bom-encoding Err bitreich.org 70 i- #+big-endian #(#xfe #xff) Err bitreich.org 70 i- #+little-endian #(#xff #xfe) Err bitreich.org 70 i- :nul-encoding #(0 0) Err bitreich.org 70 i- :ambiguous #+little-endian t #+big-endian nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-ucs :ucs-2 2 nil #x10000) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :ucs-2le Err bitreich.org 70 i- "A 16-bit, fixed-length encoding in which all Unicode Err bitreich.org 70 i-characters can be encoded in a single 16-bit word. Input data is assumed Err bitreich.org 70 i-to be in little-endian order. Output is also written in little-endian byte Err bitreich.org 70 i-order without a leading byte-order mark." Err bitreich.org 70 i- :max-units-per-char 1 Err bitreich.org 70 i- :code-unit-size 16 Err bitreich.org 70 i- :aliases '(:ucs-2/le) Err bitreich.org 70 i- :native-endianness #+little-endian t #+big-endian nil Err bitreich.org 70 i- :literal-char-code-limit #x10000 Err bitreich.org 70 i- :nul-encoding #(0 0)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-ucs :ucs-2le 2 :le #x10000) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-character-encoding :ucs-2be Err bitreich.org 70 i- "A 16-bit, fixed-length encoding in which all Unicode Err bitreich.org 70 i-characters can be encoded in a single 16-bit word. Input data is assumed Err bitreich.org 70 i-to be in big-endian order. Output is also written in big-endian byte Err bitreich.org 70 i-order without a leading byte-order mark." Err bitreich.org 70 i- :max-units-per-char 1 Err bitreich.org 70 i- :code-unit-size 16 Err bitreich.org 70 i- :aliases '(:ucs-2/be) Err bitreich.org 70 i- :native-endianness #+little-endian nil #+big-endian t Err bitreich.org 70 i- :literal-char-code-limit #x10000 Err bitreich.org 70 i- :nul-encoding #(0 0)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-ucs :ucs-2be 2 :be #x10000) Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/src/encodings.lisp b/3rdparties/software/babel-20171227-git/src/encodings.lisp /scm/clic/file/3rdparties/software/babel-20171227-git/src/encodings.lisp.gph bitreich.org 70 i@@ -1,503 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; encodings.lisp --- Character encodings and mappings. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:babel-encodings) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Character Encodings Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass character-encoding () Err bitreich.org 70 i- ((name :initarg :name :reader enc-name Err bitreich.org 70 i- :initform (error "Must specify a NAME for this character encoding.")) Err bitreich.org 70 i- ;; Most of these documentation strings are taken from OpenMCL. Err bitreich.org 70 i- (documentation Err bitreich.org 70 i- :initarg :documentation :reader enc-documentation :initform nil) Err bitreich.org 70 i- ;; A non-exhaustive list of aliases for the encoding. Err bitreich.org 70 i- (aliases :initarg :aliases :initform nil :reader enc-aliases) Err bitreich.org 70 i- ;; Specified in bits. Usually 8, 16 or 32. Err bitreich.org 70 i- (code-unit-size Err bitreich.org 70 i- :initarg :code-unit-size :reader enc-code-unit-size :initform 8) Err bitreich.org 70 i- (max-units-per-char Err bitreich.org 70 i- :initarg :max-units-per-char :reader enc-max-units-per-char :initform 1) Err bitreich.org 70 i- ;; If NIL, it is necessary to swap 16- and 32-bit units. Err bitreich.org 70 i- (native-endianness Err bitreich.org 70 i- :initarg :native-endianness :reader enc-native-endianness :initform t) Err bitreich.org 70 i- ;; Code units less than this value map to themselves on input. Err bitreich.org 70 i- (decode-literal-code-unit-limit Err bitreich.org 70 i- :initarg :decode-literal-code-unit-limit :initform 0 Err bitreich.org 70 i- :reader enc-decode-literal-code-unit-limit) Err bitreich.org 70 i- ;; Code points less than this value map to themselves on output. Err bitreich.org 70 i- (encode-literal-code-unit-limit Err bitreich.org 70 i- :initarg :encode-literal-code-unit-limit :initform 0 Err bitreich.org 70 i- :reader enc-encode-literal-code-unit-limit) Err bitreich.org 70 i- ;; Defines whether it is necessary to prepend a byte-order-mark to Err bitreich.org 70 i- ;; determine the endianness. Err bitreich.org 70 i- (use-bom :initarg :use-bom :initform nil :reader enc-use-bom) Err bitreich.org 70 i- ;; How the byte-order-mark should be encoded, specified as a Err bitreich.org 70 i- ;; sequence of octets. NIL if it cannot be encoded. Err bitreich.org 70 i- (bom-encoding Err bitreich.org 70 i- :initarg :bom-encoding :reader enc-bom-encoding :initform nil) Err bitreich.org 70 i- ;; How should NUL be encoded, specified as sequence of octets. Err bitreich.org 70 i- (nul-encoding Err bitreich.org 70 i- :initarg :nul-encoding :reader enc-nul-encoding :initform #(0)) Err bitreich.org 70 i- ;; Preferred replacement character code point. Err bitreich.org 70 i- (default-replacement Err bitreich.org 70 i- :initarg :default-replacement :reader enc-default-replacement Err bitreich.org 70 i- :initform #x1a) Err bitreich.org 70 i- ;; Does VALID-STRING => OCTETS => STRING2 guarantee a valid Err bitreich.org 70 i- ;; STRING2? UTF-{16,32} on little-endian plaforms don't because Err bitreich.org 70 i- ;; they assume different endianness on each direction. Err bitreich.org 70 i- (ambiguous Err bitreich.org 70 i- :initarg :ambiguous :reader ambiguous-encoding-p :initform nil))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; I'm too lazy to write all the identical limits twice. Err bitreich.org 70 i-(defmethod initialize-instance :after ((enc character-encoding) Err bitreich.org 70 i- &key literal-char-code-limit) Err bitreich.org 70 i- (when literal-char-code-limit Err bitreich.org 70 i- (setf (slot-value enc 'encode-literal-code-unit-limit) Err bitreich.org 70 i- literal-char-code-limit) Err bitreich.org 70 i- (setf (slot-value enc 'decode-literal-code-unit-limit) Err bitreich.org 70 i- literal-char-code-limit))) Err bitreich.org 70 i- Err bitreich.org 70 i-#-(and) Err bitreich.org 70 i-(defmethod describe-object ((enc character-encoding) s) Err bitreich.org 70 i- "Prints out the name, aliases and documentation slots of a Err bitreich.org 70 i-character encoding object." Err bitreich.org 70 i- (with-slots (name aliases documentation) enc Err bitreich.org 70 i- (format s "~&~S" name) Err bitreich.org 70 i- (when aliases Err bitreich.org 70 i- (format s " [Aliases:~{ ~S~}]" aliases)) Err bitreich.org 70 i- (format s "~&~A~%~%" documentation)) Err bitreich.org 70 i- (call-next-method)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *supported-character-encodings* nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun list-character-encodings () Err bitreich.org 70 i- "List of keyword symbols denoting supported character Err bitreich.org 70 i-encodings. This list does not include aliases." Err bitreich.org 70 i- *supported-character-encodings*) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *character-encodings* (make-hash-table :test 'eq)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *default-character-encoding* :utf-8 Err bitreich.org 70 i- "Special variable used to determine the default character Err bitreich.org 70 i-encoding.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-character-encoding (name) Err bitreich.org 70 i- "Lookups the character encoding denoted by the keyword symbol Err bitreich.org 70 i-NAME. Signals an error if one is not found. If NAME is already Err bitreich.org 70 i-a CHARACTER-ENCONDING object, it is returned unmodified." Err bitreich.org 70 i- (when (typep name 'character-encoding) Err bitreich.org 70 i- (return-from get-character-encoding name)) Err bitreich.org 70 i- (when (eq name :default) Err bitreich.org 70 i- (setq name *default-character-encoding*)) Err bitreich.org 70 i- (or (gethash name *character-encodings*) Err bitreich.org 70 i- (error "Unknown character encoding: ~S" name))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod ambiguous-encoding-p ((encoding symbol)) Err bitreich.org 70 i- (ambiguous-encoding-p (get-character-encoding encoding))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun notice-character-encoding (enc) Err bitreich.org 70 i- (pushnew (enc-name enc) *supported-character-encodings*) Err bitreich.org 70 i- (dolist (kw (cons (enc-name enc) (enc-aliases enc))) Err bitreich.org 70 i- (setf (gethash kw *character-encodings*) enc)) Err bitreich.org 70 i- (enc-name enc)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro define-character-encoding (name docstring &body options) Err bitreich.org 70 i- `(notice-character-encoding Err bitreich.org 70 i- (make-instance 'character-encoding :name ,name ,@options Err bitreich.org 70 i- :documentation ,docstring))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Mappings Err bitreich.org 70 i- Err bitreich.org 70 i-;;; TODO: describe what mappings are Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-fixed-width-counter (getter type &optional (unit-size-in-bits 8)) Err bitreich.org 70 i- (declare (ignore getter type)) Err bitreich.org 70 i- (check-type unit-size-in-bits positive-fixnum) Err bitreich.org 70 i- (let ((unit-size-in-bytes (/ unit-size-in-bits 8))) Err bitreich.org 70 i- `(named-lambda fixed-width-counter (seq start end max) Err bitreich.org 70 i- (declare (ignore seq) (fixnum start end max)) Err bitreich.org 70 i- ;; XXX: the result can be bigger than a fixnum when (> unit-size Err bitreich.org 70 i- ;; 1) and we don't want that to happen. Possible solution: signal Err bitreich.org 70 i- ;; a warning (hmm, make that an actual error) and truncate. Err bitreich.org 70 i- (if (plusp max) Err bitreich.org 70 i- (let ((count (the fixnum (min (floor max ,unit-size-in-bytes) Err bitreich.org 70 i- (the fixnum (- end start)))))) Err bitreich.org 70 i- (values (the fixnum (* count ,unit-size-in-bytes)) Err bitreich.org 70 i- (the fixnum (+ start count)))) Err bitreich.org 70 i- (values (the fixnum (* (the fixnum (- end start)) Err bitreich.org 70 i- ,unit-size-in-bytes)) Err bitreich.org 70 i- (the fixnum end)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Useful to develop new encodings incrementally starting with octet Err bitreich.org 70 i-;;; and code-unit counters. Err bitreich.org 70 i-(defun make-dummy-coder (sg st ds dt) Err bitreich.org 70 i- (declare (ignore sg st ds dt)) Err bitreich.org 70 i- `(named-lambda dummy-coder (src s e dest i) Err bitreich.org 70 i- (declare (ignore src s e dest i)) Err bitreich.org 70 i- (error "this encoder/decoder hasn't been implemented yet"))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; TODO: document here Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; ENCODER -- (lambda (src-getter src-type dest-setter dest-type) ...) Err bitreich.org 70 i-;;; DECODER -- (lambda (src-getter src-type dest-setter dest-type) ...) Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; OCTET-COUNTER -- (lambda (getter type) ...) Err bitreich.org 70 i-;;; CODE-POINT-COUNTER -- (lambda (getter type) ...) Err bitreich.org 70 i-(defclass abstract-mapping () Err bitreich.org 70 i- ((encoder-factory :accessor encoder-factory :initform 'make-dummy-coder) Err bitreich.org 70 i- (decoder-factory :accessor decoder-factory :initform 'make-dummy-coder) Err bitreich.org 70 i- (octet-counter-factory :accessor octet-counter-factory Err bitreich.org 70 i- :initform 'make-fixed-width-counter) Err bitreich.org 70 i- (code-point-counter-factory :accessor code-point-counter-factory Err bitreich.org 70 i- :initform 'make-fixed-width-counter))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; TODO: document these Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; ENCODER -- (lambda (src start end dest d-start) ...) Err bitreich.org 70 i-;;; DECODER -- (lambda (src start end dest d-start) ...) Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; OCTET-COUNTER -- (lambda (seq start end max-octets) ...) Err bitreich.org 70 i-;;; CODE-POINT-COUNTER -- (lambda (seq start end max-chars) ...) Err bitreich.org 70 i-;;; => N-CHARS NEW-END Err bitreich.org 70 i-;;; (important: describe NEW-END) Err bitreich.org 70 i-(defclass concrete-mapping () Err bitreich.org 70 i- ((encoder :accessor encoder) Err bitreich.org 70 i- (decoder :accessor decoder) Err bitreich.org 70 i- (octet-counter :accessor octet-counter) Err bitreich.org 70 i- (code-point-counter :accessor code-point-counter))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *abstract-mappings* (make-hash-table :test 'eq)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-abstract-mapping (encoding) Err bitreich.org 70 i- (gethash encoding *abstract-mappings*)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun (setf get-abstract-mapping) (value encoding) Err bitreich.org 70 i- (setf (gethash encoding *abstract-mappings*) value)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %register-mapping-part (encoding slot-name fn) Err bitreich.org 70 i- (let ((mapping (get-abstract-mapping encoding))) Err bitreich.org 70 i- (unless mapping Err bitreich.org 70 i- (setq mapping (make-instance 'abstract-mapping)) Err bitreich.org 70 i- (setf (get-abstract-mapping encoding) mapping)) Err bitreich.org 70 i- (setf (slot-value mapping slot-name) fn))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; See enc-*.lisp for example usages of these 4 macros. Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro define-encoder (encoding (sa st da dt) &body body) Err bitreich.org 70 i- `(%register-mapping-part ,encoding 'encoder-factory Err bitreich.org 70 i- (named-lambda encoder (,sa ,st ,da ,dt) Err bitreich.org 70 i- ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro define-decoder (encoding (sa st da dt) &body body) Err bitreich.org 70 i- `(%register-mapping-part ,encoding 'decoder-factory Err bitreich.org 70 i- (named-lambda decoder (,sa ,st ,da ,dt) Err bitreich.org 70 i- ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro define-octet-counter (encoding (acc type) &body body) Err bitreich.org 70 i- `(%register-mapping-part ,encoding 'octet-counter-factory Err bitreich.org 70 i- (named-lambda octet-counter-factory (,acc ,type) Err bitreich.org 70 i- ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro define-code-point-counter (encoding (acc type) &body body) Err bitreich.org 70 i- `(%register-mapping-part ,encoding 'code-point-counter-factory Err bitreich.org 70 i- (named-lambda code-point-counter (,acc ,type) Err bitreich.org 70 i- ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun instantiate-encoder (encoding am octet-seq-getter octet-seq-type Err bitreich.org 70 i- code-point-seq-setter code-point-seq-type) Err bitreich.org 70 i- (declare (ignore encoding)) Err bitreich.org 70 i- (funcall (encoder-factory am) Err bitreich.org 70 i- octet-seq-getter Err bitreich.org 70 i- octet-seq-type Err bitreich.org 70 i- code-point-seq-setter Err bitreich.org 70 i- code-point-seq-type)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun instantiate-decoder (encoding am octet-seq-getter octet-seq-type Err bitreich.org 70 i- code-point-seq-setter code-point-seq-type) Err bitreich.org 70 i- (declare (ignore encoding)) Err bitreich.org 70 i- (funcall (decoder-factory am) Err bitreich.org 70 i- octet-seq-getter Err bitreich.org 70 i- octet-seq-type Err bitreich.org 70 i- code-point-seq-setter Err bitreich.org 70 i- code-point-seq-type)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun instantiate-code-point-counter (encoding am octet-seq-getter Err bitreich.org 70 i- octet-seq-type) Err bitreich.org 70 i- (declare (ignore encoding)) Err bitreich.org 70 i- (funcall (code-point-counter-factory am) Err bitreich.org 70 i- octet-seq-getter Err bitreich.org 70 i- octet-seq-type)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun instantiate-octet-counter (encoding am code-point-seq-getter Err bitreich.org 70 i- code-point-seq-type) Err bitreich.org 70 i- (if (= 1 (enc-max-units-per-char encoding)) Err bitreich.org 70 i- (make-fixed-width-counter code-point-seq-getter code-point-seq-type Err bitreich.org 70 i- (enc-code-unit-size encoding)) Err bitreich.org 70 i- (funcall (octet-counter-factory am) Err bitreich.org 70 i- code-point-seq-getter Err bitreich.org 70 i- code-point-seq-type))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Expands into code generated by the available abstract mappings Err bitreich.org 70 i-;;; that will be compiled into concrete mappings. This is used in Err bitreich.org 70 i-;;; e.g. strings.lisp to define mappings between strings and Err bitreich.org 70 i-;;; (unsigned-byte 8) vectors. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; For each encoding funcall the abstract mappings at macro-expansion Err bitreich.org 70 i-;;; time with the src/dest accessors and types to generate the Err bitreich.org 70 i-;;; appropriate code for the concrete mappings. These functions are Err bitreich.org 70 i-;;; then saved in their respective slots of the CONCRETE-MAPPING Err bitreich.org 70 i-;;; object. Err bitreich.org 70 i-(defmacro instantiate-concrete-mappings Err bitreich.org 70 i- (&key (encodings (hash-table-keys *abstract-mappings*)) Err bitreich.org 70 i- (optimize '((speed 3) (debug 0) (compilation-speed 0))) Err bitreich.org 70 i- octet-seq-getter octet-seq-setter octet-seq-type Err bitreich.org 70 i- code-point-seq-getter code-point-seq-setter code-point-seq-type Err bitreich.org 70 i- (instantiate-decoders t)) Err bitreich.org 70 i- `(let ((ht (make-hash-table :test 'eq))) Err bitreich.org 70 i- (declare (optimize ,@optimize) Err bitreich.org 70 i- #+sbcl (sb-ext:muffle-conditions sb-ext:compiler-note)) Err bitreich.org 70 i- (flet ((notice-mapping (encoding-name cm) Err bitreich.org 70 i- (let* ((encoding (get-character-encoding encoding-name)) Err bitreich.org 70 i- (aliases (enc-aliases encoding))) Err bitreich.org 70 i- (dolist (kw (cons (enc-name encoding) aliases)) Err bitreich.org 70 i- (setf (gethash kw ht) cm))))) Err bitreich.org 70 i- ,@(loop for encoding-name in encodings Err bitreich.org 70 i- for encoding = (get-character-encoding encoding-name) Err bitreich.org 70 i- for am = (gethash encoding-name *abstract-mappings*) Err bitreich.org 70 i- collect Err bitreich.org 70 i- `(let ((cm (make-instance 'concrete-mapping))) Err bitreich.org 70 i- (setf (encoder cm) Err bitreich.org 70 i- ,(instantiate-encoder encoding am Err bitreich.org 70 i- code-point-seq-getter Err bitreich.org 70 i- code-point-seq-type Err bitreich.org 70 i- octet-seq-setter Err bitreich.org 70 i- octet-seq-type)) Err bitreich.org 70 i- ,(when instantiate-decoders Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (setf (decoder cm) Err bitreich.org 70 i- ,(instantiate-decoder encoding am Err bitreich.org 70 i- octet-seq-getter Err bitreich.org 70 i- octet-seq-type Err bitreich.org 70 i- code-point-seq-setter Err bitreich.org 70 i- code-point-seq-type)) Err bitreich.org 70 i- (setf (code-point-counter cm) Err bitreich.org 70 i- ,(instantiate-code-point-counter Err bitreich.org 70 i- encoding am octet-seq-getter octet-seq-type)))) Err bitreich.org 70 i- (setf (octet-counter cm) Err bitreich.org 70 i- ,(instantiate-octet-counter encoding am Err bitreich.org 70 i- code-point-seq-getter Err bitreich.org 70 i- code-point-seq-type)) Err bitreich.org 70 i- (notice-mapping ,encoding-name cm)))) Err bitreich.org 70 i- ht)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; debugging stuff Err bitreich.org 70 i- Err bitreich.org 70 i-#-(and) Err bitreich.org 70 i-(defun pprint-instantiate-concrete-mappings Err bitreich.org 70 i- (&key (encodings (hash-table-keys *abstract-mappings*)) Err bitreich.org 70 i- (optimize '((debug 3) (safety 3))) Err bitreich.org 70 i- (octet-seq-setter 'ub-set) (octet-seq-getter 'ub-get) Err bitreich.org 70 i- (octet-seq-type '(simple-array (unsigned-byte 8) (*))) Err bitreich.org 70 i- (code-point-seq-setter 'string-set) Err bitreich.org 70 i- (code-point-seq-getter 'string-get) Err bitreich.org 70 i- (code-point-seq-type 'simple-unicode-string)) Err bitreich.org 70 i- (let ((encodings (ensure-list encodings)) Err bitreich.org 70 i- (*package* (find-package :babel-encodings)) Err bitreich.org 70 i- (*print-case* :downcase)) Err bitreich.org 70 i- (pprint Err bitreich.org 70 i- (macroexpand Err bitreich.org 70 i- `(instantiate-concrete-mappings Err bitreich.org 70 i- :encodings ,encodings Err bitreich.org 70 i- :optimize ,optimize Err bitreich.org 70 i- :octet-seq-getter ,octet-seq-getter Err bitreich.org 70 i- :octet-seq-setter ,octet-seq-setter Err bitreich.org 70 i- :octet-seq-type ,octet-seq-type Err bitreich.org 70 i- :code-point-seq-getter ,code-point-seq-getter Err bitreich.org 70 i- :code-point-seq-setter ,code-point-seq-setter Err bitreich.org 70 i- :code-point-seq-type ,code-point-seq-type)))) Err bitreich.org 70 i- (values)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Utilities used in enc-*.lisp Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +default-substitution-code-point+ #x1a Err bitreich.org 70 i- "Default ASCII substitution character code point used in case of an encoding/decoding error.") Err bitreich.org 70 i- Err bitreich.org 70 i-;;; We're converting between objects of the (UNSIGNED-BYTE 8) and Err bitreich.org 70 i-;;; (MOD #x110000) types which are aliased here to UB8 and CODE-POINT Err bitreich.org 70 i-;;; for convenience. Err bitreich.org 70 i-(deftype ub8 () '(unsigned-byte 8)) Err bitreich.org 70 i-(deftype code-point () '(mod #x110000)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Utility macro around DEFINE-ENCODER that takes care of most of the Err bitreich.org 70 i-;;; work need to deal with an 8-bit, fixed-width character encoding. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; BODY will be inside a loop and its return value will placed in the Err bitreich.org 70 i-;;; destination buffer. BODY will be surounded by lexical BLOCK which Err bitreich.org 70 i-;;; will have the ENCODING's name, usually a keyword. It handles all Err bitreich.org 70 i-;;; sorts of type declarations. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; See enc-ascii.lisp for a simple usage example. Err bitreich.org 70 i-(defmacro define-unibyte-encoder (encoding (code) &body body) Err bitreich.org 70 i- (with-unique-names (s-getter s-type d-setter d-type Err bitreich.org 70 i- src start end dest d-start i di) Err bitreich.org 70 i- `(define-encoder ,encoding (,s-getter ,s-type ,d-setter ,d-type) Err bitreich.org 70 i- `(named-lambda ,',(symbolicate encoding '#:-unibyte-encoder) Err bitreich.org 70 i- (,',src ,',start ,',end ,',dest ,',d-start) Err bitreich.org 70 i- (declare (type ,,s-type ,',src) Err bitreich.org 70 i- (type ,,d-type ,',dest) Err bitreich.org 70 i- (fixnum ,',start ,',end ,',d-start)) Err bitreich.org 70 i- (loop for ,',i fixnum from ,',start below ,',end Err bitreich.org 70 i- and ,',di fixnum from ,',d-start do Err bitreich.org 70 i- (,,d-setter Err bitreich.org 70 i- (macrolet Err bitreich.org 70 i- ;; this should probably be a function... Err bitreich.org 70 i- ((handle-error (&optional (c ''character-encoding-error)) Err bitreich.org 70 i- `(encoding-error Err bitreich.org 70 i- ,',',code ,',',encoding ,',',src ,',',i Err bitreich.org 70 i- +default-substitution-code-point+ ,c))) Err bitreich.org 70 i- (let ((,',code (,,s-getter ,',src ,',i))) Err bitreich.org 70 i- (declare (type code-point ,',code)) Err bitreich.org 70 i- (block ,',encoding ,@',body))) Err bitreich.org 70 i- ,',dest ,',di) Err bitreich.org 70 i- finally (return (the fixnum (- ,',di ,',d-start)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; The decoder version of the above macro. Err bitreich.org 70 i-(defmacro define-unibyte-decoder (encoding (octet) &body body) Err bitreich.org 70 i- (with-unique-names (s-getter s-type d-setter d-type Err bitreich.org 70 i- src start end dest d-start i di) Err bitreich.org 70 i- `(define-decoder ,encoding (,s-getter ,s-type ,d-setter ,d-type) Err bitreich.org 70 i- `(named-lambda ,',(symbolicate encoding '#:-unibyte-encoder) Err bitreich.org 70 i- (,',src ,',start ,',end ,',dest ,',d-start) Err bitreich.org 70 i- (declare (type ,,s-type ,',src) Err bitreich.org 70 i- (type ,,d-type ,',dest) Err bitreich.org 70 i- (fixnum ,',start ,',end ,',d-start)) Err bitreich.org 70 i- (loop for ,',i fixnum from ,',start below ,',end Err bitreich.org 70 i- and ,',di fixnum from ,',d-start do Err bitreich.org 70 i- (,,d-setter Err bitreich.org 70 i- (macrolet Err bitreich.org 70 i- ;; this should probably be a function... Err bitreich.org 70 i- ((handle-error (&optional (c ''character-decoding-error)) Err bitreich.org 70 i- `(decoding-error Err bitreich.org 70 i- (vector ,',',octet) ,',',encoding ,',',src ,',',i Err bitreich.org 70 i- +default-substitution-code-point+ ,c))) Err bitreich.org 70 i- (let ((,',octet (,,s-getter ,',src ,',i))) Err bitreich.org 70 i- (declare (type ub8 ,',octet)) Err bitreich.org 70 i- (block ,',encoding ,@',body))) Err bitreich.org 70 i- ,',dest ,',di) Err bitreich.org 70 i- finally (return (the fixnum (- ,',di ,',d-start)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Error Conditions Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; For now, we don't define any actual restarts. The only mechanism Err bitreich.org 70 i-;;; for "restarting" a coding error is the Err bitreich.org 70 i-;;; *SUPPRESS-CHARACTER-CODING-ERRORS* special variable which, when Err bitreich.org 70 i-;;; bound to T (the default), suppresses any error and uses a default Err bitreich.org 70 i-;;; replacement character instead. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; If it turns out that other more options are necessary, possible Err bitreich.org 70 i-;;; alternative approaches include: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; a) use a *REPLACEMENT-CHARACTER* special variable that lets us Err bitreich.org 70 i-;;; pick our own replacement character. The encoder must do Err bitreich.org 70 i-;;; additional work to check if this is character is encodable. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; b) offer a restart to pick a replacement character. Same Err bitreich.org 70 i-;;; problem as above. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Both approaches pose encoding problems when dealing with a Err bitreich.org 70 i-;;; variable-width encodings because different replacement characters Err bitreich.org 70 i-;;; will need different numbers of octets. This is not a problem for Err bitreich.org 70 i-;;; UTF but will be a problem for the CJK charsets. Approach (a) is Err bitreich.org 70 i-;;; nevertheless easier since the replacement character is known in Err bitreich.org 70 i-;;; advance and therefore the octet-counter can account for it. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; For more complex restarts like SBCL's -- that'll let you specify Err bitreich.org 70 i-;;; _several_ replacement characters for a single character error -- Err bitreich.org 70 i-;;; will probably need extra support code outside the encoder/decoder Err bitreich.org 70 i-;;; (i.e. in the string-to-octets function, for example) since the Err bitreich.org 70 i-;;; encoders/decoders deal with pre-allocated fixed-length buffers. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; SBCL has ASCII-specific (MALFORMED-ASCII) and UTF8-specific Err bitreich.org 70 i-;;; errors. Why? Do we want to add some of those too? Err bitreich.org 70 i- Err bitreich.org 70 i-;;; FIXME: We used to deal with this with an extra ERRORP argument for Err bitreich.org 70 i-;;; encoders, decoders, etc... Still undecided on the best way to do Err bitreich.org 70 i-;;; it. We could also use a simple restart instead of this... Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; In any case, this is not for the users to bind and it's not Err bitreich.org 70 i-;;; exported from the BABEL package. Err bitreich.org 70 i-(defvar *suppress-character-coding-errors* nil Err bitreich.org 70 i- "If non-NIL, encoding or decoding errors are suppressed and the Err bitreich.org 70 i-the current character encoding's default replacement character is Err bitreich.org 70 i-used.") Err bitreich.org 70 i- Err bitreich.org 70 i-;;; All of Babel's error conditions are subtypes of Err bitreich.org 70 i-;;; CHARACTER-CODING-ERROR. This error hierarchy is based on SBCL's. Err bitreich.org 70 i-(define-condition character-coding-error (error) Err bitreich.org 70 i- ((buffer :initarg :buffer :reader character-coding-error-buffer) Err bitreich.org 70 i- (position :initarg :position :reader character-coding-error-position) Err bitreich.org 70 i- (encoding :initarg :encoding :reader character-coding-error-encoding))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition character-encoding-error (character-coding-error) Err bitreich.org 70 i- ((code :initarg :code :reader character-encoding-error-code)) Err bitreich.org 70 i- (:report (lambda (c s) Err bitreich.org 70 i- (format s "Unable to encode character code point ~A as ~S." Err bitreich.org 70 i- (character-encoding-error-code c) Err bitreich.org 70 i- (character-coding-error-encoding c))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline encoding-error)) Err bitreich.org 70 i-(defun encoding-error (code enc buf pos &optional Err bitreich.org 70 i- (sub +default-substitution-code-point+) Err bitreich.org 70 i- (e 'character-encoding-error)) Err bitreich.org 70 i- (unless *suppress-character-coding-errors* Err bitreich.org 70 i- (error e :encoding enc :buffer buf :position pos :code code)) Err bitreich.org 70 i- sub) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition character-decoding-error (character-coding-error) Err bitreich.org 70 i- ((octets :initarg :octets :reader character-decoding-error-octets)) Err bitreich.org 70 i- (:report (lambda (c s) Err bitreich.org 70 i- (format s "Illegal ~S character starting at position ~D." Err bitreich.org 70 i- (character-coding-error-encoding c) Err bitreich.org 70 i- (character-coding-error-position c))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition end-of-input-in-character (character-decoding-error) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Signalled by DECODERs or CODE-POINT-COUNTERs Err bitreich.org 70 i-of variable-width character encodings.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition character-out-of-range (character-decoding-error) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "Signalled when the character being decoded is out of range.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline decoding-error)) Err bitreich.org 70 i-(defun decoding-error (octets enc buf pos &optional Err bitreich.org 70 i- (sub +default-substitution-code-point+) Err bitreich.org 70 i- (e 'character-decoding-error)) Err bitreich.org 70 i- (unless *suppress-character-coding-errors* Err bitreich.org 70 i- (error e :octets octets :encoding enc :buffer buf :position pos)) Err bitreich.org 70 i- sub) Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/src/external-format.lisp b/3rdparties/software/babel-20171227-git/src/external-format.lisp /scm/clic/file/3rdparties/software/babel-20171227-git/src/external-format.lisp.gph bitreich.org 70 i@@ -1,88 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; external-format.lisp --- External format classes and functions. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:babel) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *default-eol-style* Err bitreich.org 70 i- #+windows :crlf Err bitreich.org 70 i- #-windows :lf Err bitreich.org 70 i- "The end-of-line style used by external formats if none is Err bitreich.org 70 i-explicitly given. Depends on the OS the code is compiled on.") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype eol-style () Err bitreich.org 70 i- "Possible end-of-line styles." Err bitreich.org 70 i- '(member :cr :lf :crlf)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass external-format () Err bitreich.org 70 i- ((encoding :initarg :encoding :reader external-format-encoding Err bitreich.org 70 i- :type character-encoding) Err bitreich.org 70 i- (eol-style :initarg :eol-style :reader external-format-eol-style Err bitreich.org 70 i- :type eol-style :initform *default-eol-style*)) Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "An EXTERNAL-FORMAT consists in a combination of a Babel Err bitreich.org 70 i-CHARACTER-ENCODING and an end-of-line style.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod print-object ((ef external-format) stream) Err bitreich.org 70 i- (print-unreadable-object (ef stream :type t :identity t) Err bitreich.org 70 i- (format stream "~A ~A" Err bitreich.org 70 i- (enc-name (external-format-encoding ef)) Err bitreich.org 70 i- (external-format-eol-style ef)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; This interface is still somewhat sketchy. The rest of Babel Err bitreich.org 70 i-;;; doesn't really understand external formats, for instance. Err bitreich.org 70 i-(defun make-external-format (encoding &key (eol-style *default-eol-style*)) Err bitreich.org 70 i- (check-type eol-style eol-style) Err bitreich.org 70 i- (make-instance 'external-format Err bitreich.org 70 i- :encoding (get-character-encoding encoding) Err bitreich.org 70 i- :eol-style eol-style)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ensure-external-format (thing) Err bitreich.org 70 i- (etypecase thing Err bitreich.org 70 i- (external-format thing) Err bitreich.org 70 i- (character-encoding (make-instance 'external-format :encoding thing)) Err bitreich.org 70 i- (symbol (make-external-format thing)) Err bitreich.org 70 i- (list (apply #'make-external-format thing)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun external-format-equal (ef1 ef2) Err bitreich.org 70 i- (and (eq (external-format-encoding ef1) (external-format-encoding ef2)) Err bitreich.org 70 i- (eq (external-format-eol-style ef1) (external-format-eol-style ef2)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline lookup-mapping)) Err bitreich.org 70 i-(defun lookup-mapping (ht encoding) Err bitreich.org 70 i- "HT should be an hashtable created by Err bitreich.org 70 i-INSTANTIATE-CONCRETE-MAPPINGS. ENCODING should be either an Err bitreich.org 70 i-external format, an encoding object or a keyword symbol Err bitreich.org 70 i-denoting a character encoding name or one of its aliases." Err bitreich.org 70 i- (or (etypecase encoding Err bitreich.org 70 i- (keyword Err bitreich.org 70 i- (gethash encoding ht)) Err bitreich.org 70 i- (babel-encodings::concrete-mapping Err bitreich.org 70 i- encoding) Err bitreich.org 70 i- (character-encoding Err bitreich.org 70 i- (gethash (enc-name encoding) ht)) Err bitreich.org 70 i- (external-format Err bitreich.org 70 i- (gethash (enc-name (external-format-encoding encoding)) ht))) Err bitreich.org 70 i- (error "~S is not a valid encoding designator" encoding))) Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/src/gbk-map.lisp b/3rdparties/software/babel-20171227-git/src/gbk-map.lisp /scm/clic/file/3rdparties/software/babel-20171227-git/src/gbk-map.lisp.gph bitreich.org 70 i@@ -1,2226 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; gbk-map.lisp --- GBK encoding map. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2011, Li Wenpeng Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:babel-encodings) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *gbk-unicode-mapping* Err bitreich.org 70 i- (map 'babel:unicode-string Err bitreich.org 70 i- #'code-char Err bitreich.org 70 i- '(#x554A #x963F #x57C3 #x6328 #x54CE #x5509 #x54C0 #x7691 #x764C #x853C Err bitreich.org 70 i- #x77EE #x827E #x788D #x7231 #x9698 #x978D #x6C28 #x5B89 #x4FFA #x6309 Err bitreich.org 70 i- #x6697 #x5CB8 #x80FA #x6848 #x80AE #x6602 #x76CE #x51F9 #x6556 #x71AC Err bitreich.org 70 i- #x7FF1 #x8884 #x50B2 #x5965 #x61CA #x6FB3 #x82AD #x634C #x6252 #x53ED Err bitreich.org 70 i- #x5427 #x7B06 #x516B #x75A4 #x5DF4 #x62D4 #x8DCB #x9776 #x628A #x8019 Err bitreich.org 70 i- #x575D #x9738 #x7F62 #x7238 #x767D #x67CF #x767E #x6446 #x4F70 #x8D25 Err bitreich.org 70 i- #x62DC #x7A17 #x6591 #x73ED #x642C #x6273 #x822C #x9881 #x677F #x7248 Err bitreich.org 70 i- #x626E #x62CC #x4F34 #x74E3 #x534A #x529E #x7ECA #x90A6 #x5E2E #x6886 Err bitreich.org 70 i- #x699C #x8180 #x7ED1 #x68D2 #x78C5 #x868C #x9551 #x508D #x8C24 #x82DE Err bitreich.org 70 i- #x80DE #x5305 #x8912 #x5265 #x8584 #x96F9 #x4FDD #x5821 #x9971 #x5B9D Err bitreich.org 70 i- #x62B1 #x62A5 #x66B4 #x8C79 #x9C8D #x7206 #x676F #x7891 #x60B2 #x5351 Err bitreich.org 70 i- #x5317 #x8F88 #x80CC #x8D1D #x94A1 #x500D #x72C8 #x5907 #x60EB #x7119 Err bitreich.org 70 i- #x88AB #x5954 #x82EF #x672C #x7B28 #x5D29 #x7EF7 #x752D #x6CF5 #x8E66 Err bitreich.org 70 i- #x8FF8 #x903C #x9F3B #x6BD4 #x9119 #x7B14 #x5F7C #x78A7 #x84D6 #x853D Err bitreich.org 70 i- #x6BD5 #x6BD9 #x6BD6 #x5E01 #x5E87 #x75F9 #x95ED #x655D #x5F0A #x5FC5 Err bitreich.org 70 i- #x8F9F #x58C1 #x81C2 #x907F #x965B #x97AD #x8FB9 #x7F16 #x8D2C #x6241 Err bitreich.org 70 i- #x4FBF #x53D8 #x535E #x8FA8 #x8FA9 #x8FAB #x904D #x6807 #x5F6A #x8198 Err bitreich.org 70 i- #x8868 #x9CD6 #x618B #x522B #x762A #x5F6C #x658C #x6FD2 #x6EE8 #x5BBE Err bitreich.org 70 i- #x6448 #x5175 #x51B0 #x67C4 #x4E19 #x79C9 #x997C #x70B3 #x75C5 #x5E76 Err bitreich.org 70 i- #x73BB #x83E0 #x64AD #x62E8 #x94B5 #x6CE2 #x535A #x52C3 #x640F #x94C2 Err bitreich.org 70 i- #x7B94 #x4F2F #x5E1B #x8236 #x8116 #x818A #x6E24 #x6CCA #x9A73 #x6355 Err bitreich.org 70 i- #x535C #x54FA #x8865 #x57E0 #x4E0D #x5E03 #x6B65 #x7C3F #x90E8 #x6016 Err bitreich.org 70 i- #x64E6 #x731C #x88C1 #x6750 #x624D #x8D22 #x776C #x8E29 #x91C7 #x5F69 Err bitreich.org 70 i- #x83DC #x8521 #x9910 #x53C2 #x8695 #x6B8B #x60ED #x60E8 #x707F #x82CD Err bitreich.org 70 i- #x8231 #x4ED3 #x6CA7 #x85CF #x64CD #x7CD9 #x69FD #x66F9 #x8349 #x5395 Err bitreich.org 70 i- #x7B56 #x4FA7 #x518C #x6D4B #x5C42 #x8E6D #x63D2 #x53C9 #x832C #x8336 Err bitreich.org 70 i- #x67E5 #x78B4 #x643D #x5BDF #x5C94 #x5DEE #x8BE7 #x62C6 #x67F4 #x8C7A Err bitreich.org 70 i- #x6400 #x63BA #x8749 #x998B #x8C17 #x7F20 #x94F2 #x4EA7 #x9610 #x98A4 Err bitreich.org 70 i- #x660C #x7316 #x573A #x5C1D #x5E38 #x957F #x507F #x80A0 #x5382 #x655E Err bitreich.org 70 i- #x7545 #x5531 #x5021 #x8D85 #x6284 #x949E #x671D #x5632 #x6F6E #x5DE2 Err bitreich.org 70 i- #x5435 #x7092 #x8F66 #x626F #x64A4 #x63A3 #x5F7B #x6F88 #x90F4 #x81E3 Err bitreich.org 70 i- #x8FB0 #x5C18 #x6668 #x5FF1 #x6C89 #x9648 #x8D81 #x886C #x6491 #x79F0 Err bitreich.org 70 i- #x57CE #x6A59 #x6210 #x5448 #x4E58 #x7A0B #x60E9 #x6F84 #x8BDA #x627F Err bitreich.org 70 i- #x901E #x9A8B #x79E4 #x5403 #x75F4 #x6301 #x5319 #x6C60 #x8FDF #x5F1B Err bitreich.org 70 i- #x9A70 #x803B #x9F7F #x4F88 #x5C3A #x8D64 #x7FC5 #x65A5 #x70BD #x5145 Err bitreich.org 70 i- #x51B2 #x866B #x5D07 #x5BA0 #x62BD #x916C #x7574 #x8E0C #x7A20 #x6101 Err bitreich.org 70 i- #x7B79 #x4EC7 #x7EF8 #x7785 #x4E11 #x81ED #x521D #x51FA #x6A71 #x53A8 Err bitreich.org 70 i- #x8E87 #x9504 #x96CF #x6EC1 #x9664 #x695A #x7840 #x50A8 #x77D7 #x6410 Err bitreich.org 70 i- #x89E6 #x5904 #x63E3 #x5DDD #x7A7F #x693D #x4F20 #x8239 #x5598 #x4E32 Err bitreich.org 70 i- #x75AE #x7A97 #x5E62 #x5E8A #x95EF #x521B #x5439 #x708A #x6376 #x9524 Err bitreich.org 70 i- #x5782 #x6625 #x693F #x9187 #x5507 #x6DF3 #x7EAF #x8822 #x6233 #x7EF0 Err bitreich.org 70 i- #x75B5 #x8328 #x78C1 #x96CC #x8F9E #x6148 #x74F7 #x8BCD #x6B64 #x523A Err bitreich.org 70 i- #x8D50 #x6B21 #x806A #x8471 #x56F1 #x5306 #x4ECE #x4E1B #x51D1 #x7C97 Err bitreich.org 70 i- #x918B #x7C07 #x4FC3 #x8E7F #x7BE1 #x7A9C #x6467 #x5D14 #x50AC #x8106 Err bitreich.org 70 i- #x7601 #x7CB9 #x6DEC #x7FE0 #x6751 #x5B58 #x5BF8 #x78CB #x64AE #x6413 Err bitreich.org 70 i- #x63AA #x632B #x9519 #x642D #x8FBE #x7B54 #x7629 #x6253 #x5927 #x5446 Err bitreich.org 70 i- #x6B79 #x50A3 #x6234 #x5E26 #x6B86 #x4EE3 #x8D37 #x888B #x5F85 #x902E Err bitreich.org 70 i- #x6020 #x803D #x62C5 #x4E39 #x5355 #x90F8 #x63B8 #x80C6 #x65E6 #x6C2E Err bitreich.org 70 i- #x4F46 #x60EE #x6DE1 #x8BDE #x5F39 #x86CB #x5F53 #x6321 #x515A #x8361 Err bitreich.org 70 i- #x6863 #x5200 #x6363 #x8E48 #x5012 #x5C9B #x7977 #x5BFC #x5230 #x7A3B Err bitreich.org 70 i- #x60BC #x9053 #x76D7 #x5FB7 #x5F97 #x7684 #x8E6C #x706F #x767B #x7B49 Err bitreich.org 70 i- #x77AA #x51F3 #x9093 #x5824 #x4F4E #x6EF4 #x8FEA #x654C #x7B1B #x72C4 Err bitreich.org 70 i- #x6DA4 #x7FDF #x5AE1 #x62B5 #x5E95 #x5730 #x8482 #x7B2C #x5E1D #x5F1F Err bitreich.org 70 i- #x9012 #x7F14 #x98A0 #x6382 #x6EC7 #x7898 #x70B9 #x5178 #x975B #x57AB Err bitreich.org 70 i- #x7535 #x4F43 #x7538 #x5E97 #x60E6 #x5960 #x6DC0 #x6BBF #x7889 #x53FC Err bitreich.org 70 i- #x96D5 #x51CB #x5201 #x6389 #x540A #x9493 #x8C03 #x8DCC #x7239 #x789F Err bitreich.org 70 i- #x8776 #x8FED #x8C0D #x53E0 #x4E01 #x76EF #x53EE #x9489 #x9876 #x9F0E Err bitreich.org 70 i- #x952D #x5B9A #x8BA2 #x4E22 #x4E1C #x51AC #x8463 #x61C2 #x52A8 #x680B Err bitreich.org 70 i- #x4F97 #x606B #x51BB #x6D1E #x515C #x6296 #x6597 #x9661 #x8C46 #x9017 Err bitreich.org 70 i- #x75D8 #x90FD #x7763 #x6BD2 #x728A #x72EC #x8BFB #x5835 #x7779 #x8D4C Err bitreich.org 70 i- #x675C #x9540 #x809A #x5EA6 #x6E21 #x5992 #x7AEF #x77ED #x953B #x6BB5 Err bitreich.org 70 i- #x65AD #x7F0E #x5806 #x5151 #x961F #x5BF9 #x58A9 #x5428 #x8E72 #x6566 Err bitreich.org 70 i- #x987F #x56E4 #x949D #x76FE #x9041 #x6387 #x54C6 #x591A #x593A #x579B Err bitreich.org 70 i- #x8EB2 #x6735 #x8DFA #x8235 #x5241 #x60F0 #x5815 #x86FE #x5CE8 #x9E45 Err bitreich.org 70 i- #x4FC4 #x989D #x8BB9 #x5A25 #x6076 #x5384 #x627C #x904F #x9102 #x997F Err bitreich.org 70 i- #x6069 #x800C #x513F #x8033 #x5C14 #x9975 #x6D31 #x4E8C #x8D30 #x53D1 Err bitreich.org 70 i- #x7F5A #x7B4F #x4F10 #x4E4F #x9600 #x6CD5 #x73D0 #x85E9 #x5E06 #x756A Err bitreich.org 70 i- #x7FFB #x6A0A #x77FE #x9492 #x7E41 #x51E1 #x70E6 #x53CD #x8FD4 #x8303 Err bitreich.org 70 i- #x8D29 #x72AF #x996D #x6CDB #x574A #x82B3 #x65B9 #x80AA #x623F #x9632 Err bitreich.org 70 i- #x59A8 #x4EFF #x8BBF #x7EBA #x653E #x83F2 #x975E #x5561 #x98DE #x80A5 Err bitreich.org 70 i- #x532A #x8BFD #x5420 #x80BA #x5E9F #x6CB8 #x8D39 #x82AC #x915A #x5429 Err bitreich.org 70 i- #x6C1B #x5206 #x7EB7 #x575F #x711A #x6C7E #x7C89 #x594B #x4EFD #x5FFF Err bitreich.org 70 i- #x6124 #x7CAA #x4E30 #x5C01 #x67AB #x8702 #x5CF0 #x950B #x98CE #x75AF Err bitreich.org 70 i- #x70FD #x9022 #x51AF #x7F1D #x8BBD #x5949 #x51E4 #x4F5B #x5426 #x592B Err bitreich.org 70 i- #x6577 #x80A4 #x5B75 #x6276 #x62C2 #x8F90 #x5E45 #x6C1F #x7B26 #x4F0F Err bitreich.org 70 i- #x4FD8 #x670D #x6D6E #x6DAA #x798F #x88B1 #x5F17 #x752B #x629A #x8F85 Err bitreich.org 70 i- #x4FEF #x91DC #x65A7 #x812F #x8151 #x5E9C #x8150 #x8D74 #x526F #x8986 Err bitreich.org 70 i- #x8D4B #x590D #x5085 #x4ED8 #x961C #x7236 #x8179 #x8D1F #x5BCC #x8BA3 Err bitreich.org 70 i- #x9644 #x5987 #x7F1A #x5490 #x5676 #x560E #x8BE5 #x6539 #x6982 #x9499 Err bitreich.org 70 i- #x76D6 #x6E89 #x5E72 #x7518 #x6746 #x67D1 #x7AFF #x809D #x8D76 #x611F Err bitreich.org 70 i- #x79C6 #x6562 #x8D63 #x5188 #x521A #x94A2 #x7F38 #x809B #x7EB2 #x5C97 Err bitreich.org 70 i- #x6E2F #x6760 #x7BD9 #x768B #x9AD8 #x818F #x7F94 #x7CD5 #x641E #x9550 Err bitreich.org 70 i- #x7A3F #x544A #x54E5 #x6B4C #x6401 #x6208 #x9E3D #x80F3 #x7599 #x5272 Err bitreich.org 70 i- #x9769 #x845B #x683C #x86E4 #x9601 #x9694 #x94EC #x4E2A #x5404 #x7ED9 Err bitreich.org 70 i- #x6839 #x8DDF #x8015 #x66F4 #x5E9A #x7FB9 #x57C2 #x803F #x6897 #x5DE5 Err bitreich.org 70 i- #x653B #x529F #x606D #x9F9A #x4F9B #x8EAC #x516C #x5BAB #x5F13 #x5DE9 Err bitreich.org 70 i- #x6C5E #x62F1 #x8D21 #x5171 #x94A9 #x52FE #x6C9F #x82DF #x72D7 #x57A2 Err bitreich.org 70 i- #x6784 #x8D2D #x591F #x8F9C #x83C7 #x5495 #x7B8D #x4F30 #x6CBD #x5B64 Err bitreich.org 70 i- #x59D1 #x9F13 #x53E4 #x86CA #x9AA8 #x8C37 #x80A1 #x6545 #x987E #x56FA Err bitreich.org 70 i- #x96C7 #x522E #x74DC #x5250 #x5BE1 #x6302 #x8902 #x4E56 #x62D0 #x602A Err bitreich.org 70 i- #x68FA #x5173 #x5B98 #x51A0 #x89C2 #x7BA1 #x9986 #x7F50 #x60EF #x704C Err bitreich.org 70 i- #x8D2F #x5149 #x5E7F #x901B #x7470 #x89C4 #x572D #x7845 #x5F52 #x9F9F Err bitreich.org 70 i- #x95FA #x8F68 #x9B3C #x8BE1 #x7678 #x6842 #x67DC #x8DEA #x8D35 #x523D Err bitreich.org 70 i- #x8F8A #x6EDA #x68CD #x9505 #x90ED #x56FD #x679C #x88F9 #x8FC7 #x54C8 Err bitreich.org 70 i- #x9AB8 #x5B69 #x6D77 #x6C26 #x4EA5 #x5BB3 #x9A87 #x9163 #x61A8 #x90AF Err bitreich.org 70 i- #x97E9 #x542B #x6DB5 #x5BD2 #x51FD #x558A #x7F55 #x7FF0 #x64BC #x634D Err bitreich.org 70 i- #x65F1 #x61BE #x608D #x710A #x6C57 #x6C49 #x592F #x676D #x822A #x58D5 Err bitreich.org 70 i- #x568E #x8C6A #x6BEB #x90DD #x597D #x8017 #x53F7 #x6D69 #x5475 #x559D Err bitreich.org 70 i- #x8377 #x83CF #x6838 #x79BE #x548C #x4F55 #x5408 #x76D2 #x8C89 #x9602 Err bitreich.org 70 i- #x6CB3 #x6DB8 #x8D6B #x8910 #x9E64 #x8D3A #x563F #x9ED1 #x75D5 #x5F88 Err bitreich.org 70 i- #x72E0 #x6068 #x54FC #x4EA8 #x6A2A #x8861 #x6052 #x8F70 #x54C4 #x70D8 Err bitreich.org 70 i- #x8679 #x9E3F #x6D2A #x5B8F #x5F18 #x7EA2 #x5589 #x4FAF #x7334 #x543C Err bitreich.org 70 i- #x539A #x5019 #x540E #x547C #x4E4E #x5FFD #x745A #x58F6 #x846B #x80E1 Err bitreich.org 70 i- #x8774 #x72D0 #x7CCA #x6E56 #x5F27 #x864E #x552C #x62A4 #x4E92 #x6CAA Err bitreich.org 70 i- #x6237 #x82B1 #x54D7 #x534E #x733E #x6ED1 #x753B #x5212 #x5316 #x8BDD Err bitreich.org 70 i- #x69D0 #x5F8A #x6000 #x6DEE #x574F #x6B22 #x73AF #x6853 #x8FD8 #x7F13 Err bitreich.org 70 i- #x6362 #x60A3 #x5524 #x75EA #x8C62 #x7115 #x6DA3 #x5BA6 #x5E7B #x8352 Err bitreich.org 70 i- #x614C #x9EC4 #x78FA #x8757 #x7C27 #x7687 #x51F0 #x60F6 #x714C #x6643 Err bitreich.org 70 i- #x5E4C #x604D #x8C0E #x7070 #x6325 #x8F89 #x5FBD #x6062 #x86D4 #x56DE Err bitreich.org 70 i- #x6BC1 #x6094 #x6167 #x5349 #x60E0 #x6666 #x8D3F #x79FD #x4F1A #x70E9 Err bitreich.org 70 i- #x6C47 #x8BB3 #x8BF2 #x7ED8 #x8364 #x660F #x5A5A #x9B42 #x6D51 #x6DF7 Err bitreich.org 70 i- #x8C41 #x6D3B #x4F19 #x706B #x83B7 #x6216 #x60D1 #x970D #x8D27 #x7978 Err bitreich.org 70 i- #x51FB #x573E #x57FA #x673A #x7578 #x7A3D #x79EF #x7B95 #x808C #x9965 Err bitreich.org 70 i- #x8FF9 #x6FC0 #x8BA5 #x9E21 #x59EC #x7EE9 #x7F09 #x5409 #x6781 #x68D8 Err bitreich.org 70 i- #x8F91 #x7C4D #x96C6 #x53CA #x6025 #x75BE #x6C72 #x5373 #x5AC9 #x7EA7 Err bitreich.org 70 i- #x6324 #x51E0 #x810A #x5DF1 #x84DF #x6280 #x5180 #x5B63 #x4F0E #x796D Err bitreich.org 70 i- #x5242 #x60B8 #x6D4E #x5BC4 #x5BC2 #x8BA1 #x8BB0 #x65E2 #x5FCC #x9645 Err bitreich.org 70 i- #x5993 #x7EE7 #x7EAA #x5609 #x67B7 #x5939 #x4F73 #x5BB6 #x52A0 #x835A Err bitreich.org 70 i- #x988A #x8D3E #x7532 #x94BE #x5047 #x7A3C #x4EF7 #x67B6 #x9A7E #x5AC1 Err bitreich.org 70 i- #x6B7C #x76D1 #x575A #x5C16 #x7B3A #x95F4 #x714E #x517C #x80A9 #x8270 Err bitreich.org 70 i- #x5978 #x7F04 #x8327 #x68C0 #x67EC #x78B1 #x7877 #x62E3 #x6361 #x7B80 Err bitreich.org 70 i- #x4FED #x526A #x51CF #x8350 #x69DB #x9274 #x8DF5 #x8D31 #x89C1 #x952E Err bitreich.org 70 i- #x7BAD #x4EF6 #x5065 #x8230 #x5251 #x996F #x6E10 #x6E85 #x6DA7 #x5EFA Err bitreich.org 70 i- #x50F5 #x59DC #x5C06 #x6D46 #x6C5F #x7586 #x848B #x6868 #x5956 #x8BB2 Err bitreich.org 70 i- #x5320 #x9171 #x964D #x8549 #x6912 #x7901 #x7126 #x80F6 #x4EA4 #x90CA Err bitreich.org 70 i- #x6D47 #x9A84 #x5A07 #x56BC #x6405 #x94F0 #x77EB #x4FA5 #x811A #x72E1 Err bitreich.org 70 i- #x89D2 #x997A #x7F34 #x7EDE #x527F #x6559 #x9175 #x8F7F #x8F83 #x53EB Err bitreich.org 70 i- #x7A96 #x63ED #x63A5 #x7686 #x79F8 #x8857 #x9636 #x622A #x52AB #x8282 Err bitreich.org 70 i- #x6854 #x6770 #x6377 #x776B #x7AED #x6D01 #x7ED3 #x89E3 #x59D0 #x6212 Err bitreich.org 70 i- #x85C9 #x82A5 #x754C #x501F #x4ECB #x75A5 #x8BEB #x5C4A #x5DFE #x7B4B Err bitreich.org 70 i- #x65A4 #x91D1 #x4ECA #x6D25 #x895F #x7D27 #x9526 #x4EC5 #x8C28 #x8FDB Err bitreich.org 70 i- #x9773 #x664B #x7981 #x8FD1 #x70EC #x6D78 #x5C3D #x52B2 #x8346 #x5162 Err bitreich.org 70 i- #x830E #x775B #x6676 #x9CB8 #x4EAC #x60CA #x7CBE #x7CB3 #x7ECF #x4E95 Err bitreich.org 70 i- #x8B66 #x666F #x9888 #x9759 #x5883 #x656C #x955C #x5F84 #x75C9 #x9756 Err bitreich.org 70 i- #x7ADF #x7ADE #x51C0 #x70AF #x7A98 #x63EA #x7A76 #x7EA0 #x7396 #x97ED Err bitreich.org 70 i- #x4E45 #x7078 #x4E5D #x9152 #x53A9 #x6551 #x65E7 #x81FC #x8205 #x548E Err bitreich.org 70 i- #x5C31 #x759A #x97A0 #x62D8 #x72D9 #x75BD #x5C45 #x9A79 #x83CA #x5C40 Err bitreich.org 70 i- #x5480 #x77E9 #x4E3E #x6CAE #x805A #x62D2 #x636E #x5DE8 #x5177 #x8DDD Err bitreich.org 70 i- #x8E1E #x952F #x4FF1 #x53E5 #x60E7 #x70AC #x5267 #x6350 #x9E43 #x5A1F Err bitreich.org 70 i- #x5026 #x7737 #x5377 #x7EE2 #x6485 #x652B #x6289 #x6398 #x5014 #x7235 Err bitreich.org 70 i- #x89C9 #x51B3 #x8BC0 #x7EDD #x5747 #x83CC #x94A7 #x519B #x541B #x5CFB Err bitreich.org 70 i- #x4FCA #x7AE3 #x6D5A #x90E1 #x9A8F #x5580 #x5496 #x5361 #x54AF #x5F00 Err bitreich.org 70 i- #x63E9 #x6977 #x51EF #x6168 #x520A #x582A #x52D8 #x574E #x780D #x770B Err bitreich.org 70 i- #x5EB7 #x6177 #x7CE0 #x625B #x6297 #x4EA2 #x7095 #x8003 #x62F7 #x70E4 Err bitreich.org 70 i- #x9760 #x5777 #x82DB #x67EF #x68F5 #x78D5 #x9897 #x79D1 #x58F3 #x54B3 Err bitreich.org 70 i- #x53EF #x6E34 #x514B #x523B #x5BA2 #x8BFE #x80AF #x5543 #x57A6 #x6073 Err bitreich.org 70 i- #x5751 #x542D #x7A7A #x6050 #x5B54 #x63A7 #x62A0 #x53E3 #x6263 #x5BC7 Err bitreich.org 70 i- #x67AF #x54ED #x7A9F #x82E6 #x9177 #x5E93 #x88E4 #x5938 #x57AE #x630E Err bitreich.org 70 i- #x8DE8 #x80EF #x5757 #x7B77 #x4FA9 #x5FEB #x5BBD #x6B3E #x5321 #x7B50 Err bitreich.org 70 i- #x72C2 #x6846 #x77FF #x7736 #x65F7 #x51B5 #x4E8F #x76D4 #x5CBF #x7AA5 Err bitreich.org 70 i- #x8475 #x594E #x9B41 #x5080 #x9988 #x6127 #x6E83 #x5764 #x6606 #x6346 Err bitreich.org 70 i- #x56F0 #x62EC #x6269 #x5ED3 #x9614 #x5783 #x62C9 #x5587 #x8721 #x814A Err bitreich.org 70 i- #x8FA3 #x5566 #x83B1 #x6765 #x8D56 #x84DD #x5A6A #x680F #x62E6 #x7BEE Err bitreich.org 70 i- #x9611 #x5170 #x6F9C #x8C30 #x63FD #x89C8 #x61D2 #x7F06 #x70C2 #x6EE5 Err bitreich.org 70 i- #x7405 #x6994 #x72FC #x5ECA #x90CE #x6717 #x6D6A #x635E #x52B3 #x7262 Err bitreich.org 70 i- #x8001 #x4F6C #x59E5 #x916A #x70D9 #x6D9D #x52D2 #x4E50 #x96F7 #x956D Err bitreich.org 70 i- #x857E #x78CA #x7D2F #x5121 #x5792 #x64C2 #x808B #x7C7B #x6CEA #x68F1 Err bitreich.org 70 i- #x695E #x51B7 #x5398 #x68A8 #x7281 #x9ECE #x7BF1 #x72F8 #x79BB #x6F13 Err bitreich.org 70 i- #x7406 #x674E #x91CC #x9CA4 #x793C #x8389 #x8354 #x540F #x6817 #x4E3D Err bitreich.org 70 i- #x5389 #x52B1 #x783E #x5386 #x5229 #x5088 #x4F8B #x4FD0 #x75E2 #x7ACB Err bitreich.org 70 i- #x7C92 #x6CA5 #x96B6 #x529B #x7483 #x54E9 #x4FE9 #x8054 #x83B2 #x8FDE Err bitreich.org 70 i- #x9570 #x5EC9 #x601C #x6D9F #x5E18 #x655B #x8138 #x94FE #x604B #x70BC Err bitreich.org 70 i- #x7EC3 #x7CAE #x51C9 #x6881 #x7CB1 #x826F #x4E24 #x8F86 #x91CF #x667E Err bitreich.org 70 i- #x4EAE #x8C05 #x64A9 #x804A #x50DA #x7597 #x71CE #x5BE5 #x8FBD #x6F66 Err bitreich.org 70 i- #x4E86 #x6482 #x9563 #x5ED6 #x6599 #x5217 #x88C2 #x70C8 #x52A3 #x730E Err bitreich.org 70 i- #x7433 #x6797 #x78F7 #x9716 #x4E34 #x90BB #x9CDE #x6DCB #x51DB #x8D41 Err bitreich.org 70 i- #x541D #x62CE #x73B2 #x83F1 #x96F6 #x9F84 #x94C3 #x4F36 #x7F9A #x51CC Err bitreich.org 70 i- #x7075 #x9675 #x5CAD #x9886 #x53E6 #x4EE4 #x6E9C #x7409 #x69B4 #x786B Err bitreich.org 70 i- #x998F #x7559 #x5218 #x7624 #x6D41 #x67F3 #x516D #x9F99 #x804B #x5499 Err bitreich.org 70 i- #x7B3C #x7ABF #x9686 #x5784 #x62E2 #x9647 #x697C #x5A04 #x6402 #x7BD3 Err bitreich.org 70 i- #x6F0F #x964B #x82A6 #x5362 #x9885 #x5E90 #x7089 #x63B3 #x5364 #x864F Err bitreich.org 70 i- #x9C81 #x9E93 #x788C #x9732 #x8DEF #x8D42 #x9E7F #x6F5E #x7984 #x5F55 Err bitreich.org 70 i- #x9646 #x622E #x9A74 #x5415 #x94DD #x4FA3 #x65C5 #x5C65 #x5C61 #x7F15 Err bitreich.org 70 i- #x8651 #x6C2F #x5F8B #x7387 #x6EE4 #x7EFF #x5CE6 #x631B #x5B6A #x6EE6 Err bitreich.org 70 i- #x5375 #x4E71 #x63A0 #x7565 #x62A1 #x8F6E #x4F26 #x4ED1 #x6CA6 #x7EB6 Err bitreich.org 70 i- #x8BBA #x841D #x87BA #x7F57 #x903B #x9523 #x7BA9 #x9AA1 #x88F8 #x843D Err bitreich.org 70 i- #x6D1B #x9A86 #x7EDC #x5988 #x9EBB #x739B #x7801 #x8682 #x9A6C #x9A82 Err bitreich.org 70 i- #x561B #x5417 #x57CB #x4E70 #x9EA6 #x5356 #x8FC8 #x8109 #x7792 #x9992 Err bitreich.org 70 i- #x86EE #x6EE1 #x8513 #x66FC #x6162 #x6F2B #x8C29 #x8292 #x832B #x76F2 Err bitreich.org 70 i- #x6C13 #x5FD9 #x83BD #x732B #x8305 #x951A #x6BDB #x77DB #x94C6 #x536F Err bitreich.org 70 i- #x8302 #x5192 #x5E3D #x8C8C #x8D38 #x4E48 #x73AB #x679A #x6885 #x9176 Err bitreich.org 70 i- #x9709 #x7164 #x6CA1 #x7709 #x5A92 #x9541 #x6BCF #x7F8E #x6627 #x5BD0 Err bitreich.org 70 i- #x59B9 #x5A9A #x95E8 #x95F7 #x4EEC #x840C #x8499 #x6AAC #x76DF #x9530 Err bitreich.org 70 i- #x731B #x68A6 #x5B5F #x772F #x919A #x9761 #x7CDC #x8FF7 #x8C1C #x5F25 Err bitreich.org 70 i- #x7C73 #x79D8 #x89C5 #x6CCC #x871C #x5BC6 #x5E42 #x68C9 #x7720 #x7EF5 Err bitreich.org 70 i- #x5195 #x514D #x52C9 #x5A29 #x7F05 #x9762 #x82D7 #x63CF #x7784 #x85D0 Err bitreich.org 70 i- #x79D2 #x6E3A #x5E99 #x5999 #x8511 #x706D #x6C11 #x62BF #x76BF #x654F Err bitreich.org 70 i- #x60AF #x95FD #x660E #x879F #x9E23 #x94ED #x540D #x547D #x8C2C #x6478 Err bitreich.org 70 i- #x6479 #x8611 #x6A21 #x819C #x78E8 #x6469 #x9B54 #x62B9 #x672B #x83AB Err bitreich.org 70 i- #x58A8 #x9ED8 #x6CAB #x6F20 #x5BDE #x964C #x8C0B #x725F #x67D0 #x62C7 Err bitreich.org 70 i- #x7261 #x4EA9 #x59C6 #x6BCD #x5893 #x66AE #x5E55 #x52DF #x6155 #x6728 Err bitreich.org 70 i- #x76EE #x7766 #x7267 #x7A46 #x62FF #x54EA #x5450 #x94A0 #x90A3 #x5A1C Err bitreich.org 70 i- #x7EB3 #x6C16 #x4E43 #x5976 #x8010 #x5948 #x5357 #x7537 #x96BE #x56CA Err bitreich.org 70 i- #x6320 #x8111 #x607C #x95F9 #x6DD6 #x5462 #x9981 #x5185 #x5AE9 #x80FD Err bitreich.org 70 i- #x59AE #x9713 #x502A #x6CE5 #x5C3C #x62DF #x4F60 #x533F #x817B #x9006 Err bitreich.org 70 i- #x6EBA #x852B #x62C8 #x5E74 #x78BE #x64B5 #x637B #x5FF5 #x5A18 #x917F Err bitreich.org 70 i- #x9E1F #x5C3F #x634F #x8042 #x5B7D #x556E #x954A #x954D #x6D85 #x60A8 Err bitreich.org 70 i- #x67E0 #x72DE #x51DD #x5B81 #x62E7 #x6CDE #x725B #x626D #x94AE #x7EBD Err bitreich.org 70 i- #x8113 #x6D53 #x519C #x5F04 #x5974 #x52AA #x6012 #x5973 #x6696 #x8650 Err bitreich.org 70 i- #x759F #x632A #x61E6 #x7CEF #x8BFA #x54E6 #x6B27 #x9E25 #x6BB4 #x85D5 Err bitreich.org 70 i- #x5455 #x5076 #x6CA4 #x556A #x8DB4 #x722C #x5E15 #x6015 #x7436 #x62CD Err bitreich.org 70 i- #x6392 #x724C #x5F98 #x6E43 #x6D3E #x6500 #x6F58 #x76D8 #x78D0 #x76FC Err bitreich.org 70 i- #x7554 #x5224 #x53DB #x4E53 #x5E9E #x65C1 #x802A #x80D6 #x629B #x5486 Err bitreich.org 70 i- #x5228 #x70AE #x888D #x8DD1 #x6CE1 #x5478 #x80DA #x57F9 #x88F4 #x8D54 Err bitreich.org 70 i- #x966A #x914D #x4F69 #x6C9B #x55B7 #x76C6 #x7830 #x62A8 #x70F9 #x6F8E Err bitreich.org 70 i- #x5F6D #x84EC #x68DA #x787C #x7BF7 #x81A8 #x670B #x9E4F #x6367 #x78B0 Err bitreich.org 70 i- #x576F #x7812 #x9739 #x6279 #x62AB #x5288 #x7435 #x6BD7 #x5564 #x813E Err bitreich.org 70 i- #x75B2 #x76AE #x5339 #x75DE #x50FB #x5C41 #x8B6C #x7BC7 #x504F #x7247 Err bitreich.org 70 i- #x9A97 #x98D8 #x6F02 #x74E2 #x7968 #x6487 #x77A5 #x62FC #x9891 #x8D2B Err bitreich.org 70 i- #x54C1 #x8058 #x4E52 #x576A #x82F9 #x840D #x5E73 #x51ED #x74F6 #x8BC4 Err bitreich.org 70 i- #x5C4F #x5761 #x6CFC #x9887 #x5A46 #x7834 #x9B44 #x8FEB #x7C95 #x5256 Err bitreich.org 70 i- #x6251 #x94FA #x4EC6 #x8386 #x8461 #x83E9 #x84B2 #x57D4 #x6734 #x5703 Err bitreich.org 70 i- #x666E #x6D66 #x8C31 #x66DD #x7011 #x671F #x6B3A #x6816 #x621A #x59BB Err bitreich.org 70 i- #x4E03 #x51C4 #x6F06 #x67D2 #x6C8F #x5176 #x68CB #x5947 #x6B67 #x7566 Err bitreich.org 70 i- #x5D0E #x8110 #x9F50 #x65D7 #x7948 #x7941 #x9A91 #x8D77 #x5C82 #x4E5E Err bitreich.org 70 i- #x4F01 #x542F #x5951 #x780C #x5668 #x6C14 #x8FC4 #x5F03 #x6C7D #x6CE3 Err bitreich.org 70 i- #x8BAB #x6390 #x6070 #x6D3D #x7275 #x6266 #x948E #x94C5 #x5343 #x8FC1 Err bitreich.org 70 i- #x7B7E #x4EDF #x8C26 #x4E7E #x9ED4 #x94B1 #x94B3 #x524D #x6F5C #x9063 Err bitreich.org 70 i- #x6D45 #x8C34 #x5811 #x5D4C #x6B20 #x6B49 #x67AA #x545B #x8154 #x7F8C Err bitreich.org 70 i- #x5899 #x8537 #x5F3A #x62A2 #x6A47 #x9539 #x6572 #x6084 #x6865 #x77A7 Err bitreich.org 70 i- #x4E54 #x4FA8 #x5DE7 #x9798 #x64AC #x7FD8 #x5CED #x4FCF #x7A8D #x5207 Err bitreich.org 70 i- #x8304 #x4E14 #x602F #x7A83 #x94A6 #x4FB5 #x4EB2 #x79E6 #x7434 #x52E4 Err bitreich.org 70 i- #x82B9 #x64D2 #x79BD #x5BDD #x6C81 #x9752 #x8F7B #x6C22 #x503E #x537F Err bitreich.org 70 i- #x6E05 #x64CE #x6674 #x6C30 #x60C5 #x9877 #x8BF7 #x5E86 #x743C #x7A77 Err bitreich.org 70 i- #x79CB #x4E18 #x90B1 #x7403 #x6C42 #x56DA #x914B #x6CC5 #x8D8B #x533A Err bitreich.org 70 i- #x86C6 #x66F2 #x8EAF #x5C48 #x9A71 #x6E20 #x53D6 #x5A36 #x9F8B #x8DA3 Err bitreich.org 70 i- #x53BB #x5708 #x98A7 #x6743 #x919B #x6CC9 #x5168 #x75CA #x62F3 #x72AC Err bitreich.org 70 i- #x5238 #x529D #x7F3A #x7094 #x7638 #x5374 #x9E4A #x69B7 #x786E #x96C0 Err bitreich.org 70 i- #x88D9 #x7FA4 #x7136 #x71C3 #x5189 #x67D3 #x74E4 #x58E4 #x6518 #x56B7 Err bitreich.org 70 i- #x8BA9 #x9976 #x6270 #x7ED5 #x60F9 #x70ED #x58EC #x4EC1 #x4EBA #x5FCD Err bitreich.org 70 i- #x97E7 #x4EFB #x8BA4 #x5203 #x598A #x7EAB #x6254 #x4ECD #x65E5 #x620E Err bitreich.org 70 i- #x8338 #x84C9 #x8363 #x878D #x7194 #x6EB6 #x5BB9 #x7ED2 #x5197 #x63C9 Err bitreich.org 70 i- #x67D4 #x8089 #x8339 #x8815 #x5112 #x5B7A #x5982 #x8FB1 #x4E73 #x6C5D Err bitreich.org 70 i- #x5165 #x8925 #x8F6F #x962E #x854A #x745E #x9510 #x95F0 #x6DA6 #x82E5 Err bitreich.org 70 i- #x5F31 #x6492 #x6D12 #x8428 #x816E #x9CC3 #x585E #x8D5B #x4E09 #x53C1 Err bitreich.org 70 i- #x4F1E #x6563 #x6851 #x55D3 #x4E27 #x6414 #x9A9A #x626B #x5AC2 #x745F Err bitreich.org 70 i- #x8272 #x6DA9 #x68EE #x50E7 #x838E #x7802 #x6740 #x5239 #x6C99 #x7EB1 Err bitreich.org 70 i- #x50BB #x5565 #x715E #x7B5B #x6652 #x73CA #x82EB #x6749 #x5C71 #x5220 Err bitreich.org 70 i- #x717D #x886B #x95EA #x9655 #x64C5 #x8D61 #x81B3 #x5584 #x6C55 #x6247 Err bitreich.org 70 i- #x7F2E #x5892 #x4F24 #x5546 #x8D4F #x664C #x4E0A #x5C1A #x88F3 #x68A2 Err bitreich.org 70 i- #x634E #x7A0D #x70E7 #x828D #x52FA #x97F6 #x5C11 #x54E8 #x90B5 #x7ECD Err bitreich.org 70 i- #x5962 #x8D4A #x86C7 #x820C #x820D #x8D66 #x6444 #x5C04 #x6151 #x6D89 Err bitreich.org 70 i- #x793E #x8BBE #x7837 #x7533 #x547B #x4F38 #x8EAB #x6DF1 #x5A20 #x7EC5 Err bitreich.org 70 i- #x795E #x6C88 #x5BA1 #x5A76 #x751A #x80BE #x614E #x6E17 #x58F0 #x751F Err bitreich.org 70 i- #x7525 #x7272 #x5347 #x7EF3 #x7701 #x76DB #x5269 #x80DC #x5723 #x5E08 Err bitreich.org 70 i- #x5931 #x72EE #x65BD #x6E7F #x8BD7 #x5C38 #x8671 #x5341 #x77F3 #x62FE Err bitreich.org 70 i- #x65F6 #x4EC0 #x98DF #x8680 #x5B9E #x8BC6 #x53F2 #x77E2 #x4F7F #x5C4E Err bitreich.org 70 i- #x9A76 #x59CB #x5F0F #x793A #x58EB #x4E16 #x67FF #x4E8B #x62ED #x8A93 Err bitreich.org 70 i- #x901D #x52BF #x662F #x55DC #x566C #x9002 #x4ED5 #x4F8D #x91CA #x9970 Err bitreich.org 70 i- #x6C0F #x5E02 #x6043 #x5BA4 #x89C6 #x8BD5 #x6536 #x624B #x9996 #x5B88 Err bitreich.org 70 i- #x5BFF #x6388 #x552E #x53D7 #x7626 #x517D #x852C #x67A2 #x68B3 #x6B8A Err bitreich.org 70 i- #x6292 #x8F93 #x53D4 #x8212 #x6DD1 #x758F #x4E66 #x8D4E #x5B70 #x719F Err bitreich.org 70 i- #x85AF #x6691 #x66D9 #x7F72 #x8700 #x9ECD #x9F20 #x5C5E #x672F #x8FF0 Err bitreich.org 70 i- #x6811 #x675F #x620D #x7AD6 #x5885 #x5EB6 #x6570 #x6F31 #x6055 #x5237 Err bitreich.org 70 i- #x800D #x6454 #x8870 #x7529 #x5E05 #x6813 #x62F4 #x971C #x53CC #x723D Err bitreich.org 70 i- #x8C01 #x6C34 #x7761 #x7A0E #x542E #x77AC #x987A #x821C #x8BF4 #x7855 Err bitreich.org 70 i- #x6714 #x70C1 #x65AF #x6495 #x5636 #x601D #x79C1 #x53F8 #x4E1D #x6B7B Err bitreich.org 70 i- #x8086 #x5BFA #x55E3 #x56DB #x4F3A #x4F3C #x9972 #x5DF3 #x677E #x8038 Err bitreich.org 70 i- #x6002 #x9882 #x9001 #x5B8B #x8BBC #x8BF5 #x641C #x8258 #x64DE #x55FD Err bitreich.org 70 i- #x82CF #x9165 #x4FD7 #x7D20 #x901F #x7C9F #x50F3 #x5851 #x6EAF #x5BBF Err bitreich.org 70 i- #x8BC9 #x8083 #x9178 #x849C #x7B97 #x867D #x968B #x968F #x7EE5 #x9AD3 Err bitreich.org 70 i- #x788E #x5C81 #x7A57 #x9042 #x96A7 #x795F #x5B59 #x635F #x7B0B #x84D1 Err bitreich.org 70 i- #x68AD #x5506 #x7F29 #x7410 #x7D22 #x9501 #x6240 #x584C #x4ED6 #x5B83 Err bitreich.org 70 i- #x5979 #x5854 #x736D #x631E #x8E4B #x8E0F #x80CE #x82D4 #x62AC #x53F0 Err bitreich.org 70 i- #x6CF0 #x915E #x592A #x6001 #x6C70 #x574D #x644A #x8D2A #x762B #x6EE9 Err bitreich.org 70 i- #x575B #x6A80 #x75F0 #x6F6D #x8C2D #x8C08 #x5766 #x6BEF #x8892 #x78B3 Err bitreich.org 70 i- #x63A2 #x53F9 #x70AD #x6C64 #x5858 #x642A #x5802 #x68E0 #x819B #x5510 Err bitreich.org 70 i- #x7CD6 #x5018 #x8EBA #x6DCC #x8D9F #x70EB #x638F #x6D9B #x6ED4 #x7EE6 Err bitreich.org 70 i- #x8404 #x6843 #x9003 #x6DD8 #x9676 #x8BA8 #x5957 #x7279 #x85E4 #x817E Err bitreich.org 70 i- #x75BC #x8A8A #x68AF #x5254 #x8E22 #x9511 #x63D0 #x9898 #x8E44 #x557C Err bitreich.org 70 i- #x4F53 #x66FF #x568F #x60D5 #x6D95 #x5243 #x5C49 #x5929 #x6DFB #x586B Err bitreich.org 70 i- #x7530 #x751C #x606C #x8214 #x8146 #x6311 #x6761 #x8FE2 #x773A #x8DF3 Err bitreich.org 70 i- #x8D34 #x94C1 #x5E16 #x5385 #x542C #x70C3 #x6C40 #x5EF7 #x505C #x4EAD Err bitreich.org 70 i- #x5EAD #x633A #x8247 #x901A #x6850 #x916E #x77B3 #x540C #x94DC #x5F64 Err bitreich.org 70 i- #x7AE5 #x6876 #x6345 #x7B52 #x7EDF #x75DB #x5077 #x6295 #x5934 #x900F Err bitreich.org 70 i- #x51F8 #x79C3 #x7A81 #x56FE #x5F92 #x9014 #x6D82 #x5C60 #x571F #x5410 Err bitreich.org 70 i- #x5154 #x6E4D #x56E2 #x63A8 #x9893 #x817F #x8715 #x892A #x9000 #x541E Err bitreich.org 70 i- #x5C6F #x81C0 #x62D6 #x6258 #x8131 #x9E35 #x9640 #x9A6E #x9A7C #x692D Err bitreich.org 70 i- #x59A5 #x62D3 #x553E #x6316 #x54C7 #x86D9 #x6D3C #x5A03 #x74E6 #x889C Err bitreich.org 70 i- #x6B6A #x5916 #x8C4C #x5F2F #x6E7E #x73A9 #x987D #x4E38 #x70F7 #x5B8C Err bitreich.org 70 i- #x7897 #x633D #x665A #x7696 #x60CB #x5B9B #x5A49 #x4E07 #x8155 #x6C6A Err bitreich.org 70 i- #x738B #x4EA1 #x6789 #x7F51 #x5F80 #x65FA #x671B #x5FD8 #x5984 #x5A01 Err bitreich.org 70 i- #x5DCD #x5FAE #x5371 #x97E6 #x8FDD #x6845 #x56F4 #x552F #x60DF #x4E3A Err bitreich.org 70 i- #x6F4D #x7EF4 #x82C7 #x840E #x59D4 #x4F1F #x4F2A #x5C3E #x7EAC #x672A Err bitreich.org 70 i- #x851A #x5473 #x754F #x80C3 #x5582 #x9B4F #x4F4D #x6E2D #x8C13 #x5C09 Err bitreich.org 70 i- #x6170 #x536B #x761F #x6E29 #x868A #x6587 #x95FB #x7EB9 #x543B #x7A33 Err bitreich.org 70 i- #x7D0A #x95EE #x55E1 #x7FC1 #x74EE #x631D #x8717 #x6DA1 #x7A9D #x6211 Err bitreich.org 70 i- #x65A1 #x5367 #x63E1 #x6C83 #x5DEB #x545C #x94A8 #x4E4C #x6C61 #x8BEC Err bitreich.org 70 i- #x5C4B #x65E0 #x829C #x68A7 #x543E #x5434 #x6BCB #x6B66 #x4E94 #x6342 Err bitreich.org 70 i- #x5348 #x821E #x4F0D #x4FAE #x575E #x620A #x96FE #x6664 #x7269 #x52FF Err bitreich.org 70 i- #x52A1 #x609F #x8BEF #x6614 #x7199 #x6790 #x897F #x7852 #x77FD #x6670 Err bitreich.org 70 i- #x563B #x5438 #x9521 #x727A #x7A00 #x606F #x5E0C #x6089 #x819D #x5915 Err bitreich.org 70 i- #x60DC #x7184 #x70EF #x6EAA #x6C50 #x7280 #x6A84 #x88AD #x5E2D #x4E60 Err bitreich.org 70 i- #x5AB3 #x559C #x94E3 #x6D17 #x7CFB #x9699 #x620F #x7EC6 #x778E #x867E Err bitreich.org 70 i- #x5323 #x971E #x8F96 #x6687 #x5CE1 #x4FA0 #x72ED #x4E0B #x53A6 #x590F Err bitreich.org 70 i- #x5413 #x6380 #x9528 #x5148 #x4ED9 #x9C9C #x7EA4 #x54B8 #x8D24 #x8854 Err bitreich.org 70 i- #x8237 #x95F2 #x6D8E #x5F26 #x5ACC #x663E #x9669 #x73B0 #x732E #x53BF Err bitreich.org 70 i- #x817A #x9985 #x7FA1 #x5BAA #x9677 #x9650 #x7EBF #x76F8 #x53A2 #x9576 Err bitreich.org 70 i- #x9999 #x7BB1 #x8944 #x6E58 #x4E61 #x7FD4 #x7965 #x8BE6 #x60F3 #x54CD Err bitreich.org 70 i- #x4EAB #x9879 #x5DF7 #x6A61 #x50CF #x5411 #x8C61 #x8427 #x785D #x9704 Err bitreich.org 70 i- #x524A #x54EE #x56A3 #x9500 #x6D88 #x5BB5 #x6DC6 #x6653 #x5C0F #x5B5D Err bitreich.org 70 i- #x6821 #x8096 #x5578 #x7B11 #x6548 #x6954 #x4E9B #x6B47 #x874E #x978B Err bitreich.org 70 i- #x534F #x631F #x643A #x90AA #x659C #x80C1 #x8C10 #x5199 #x68B0 #x5378 Err bitreich.org 70 i- #x87F9 #x61C8 #x6CC4 #x6CFB #x8C22 #x5C51 #x85AA #x82AF #x950C #x6B23 Err bitreich.org 70 i- #x8F9B #x65B0 #x5FFB #x5FC3 #x4FE1 #x8845 #x661F #x8165 #x7329 #x60FA Err bitreich.org 70 i- #x5174 #x5211 #x578B #x5F62 #x90A2 #x884C #x9192 #x5E78 #x674F #x6027 Err bitreich.org 70 i- #x59D3 #x5144 #x51F6 #x80F8 #x5308 #x6C79 #x96C4 #x718A #x4F11 #x4FEE Err bitreich.org 70 i- #x7F9E #x673D #x55C5 #x9508 #x79C0 #x8896 #x7EE3 #x589F #x620C #x9700 Err bitreich.org 70 i- #x865A #x5618 #x987B #x5F90 #x8BB8 #x84C4 #x9157 #x53D9 #x65ED #x5E8F Err bitreich.org 70 i- #x755C #x6064 #x7D6E #x5A7F #x7EEA #x7EED #x8F69 #x55A7 #x5BA3 #x60AC Err bitreich.org 70 i- #x65CB #x7384 #x9009 #x7663 #x7729 #x7EDA #x9774 #x859B #x5B66 #x7A74 Err bitreich.org 70 i- #x96EA #x8840 #x52CB #x718F #x5FAA #x65EC #x8BE2 #x5BFB #x9A6F #x5DE1 Err bitreich.org 70 i- #x6B89 #x6C5B #x8BAD #x8BAF #x900A #x8FC5 #x538B #x62BC #x9E26 #x9E2D Err bitreich.org 70 i- #x5440 #x4E2B #x82BD #x7259 #x869C #x5D16 #x8859 #x6DAF #x96C5 #x54D1 Err bitreich.org 70 i- #x4E9A #x8BB6 #x7109 #x54BD #x9609 #x70DF #x6DF9 #x76D0 #x4E25 #x7814 Err bitreich.org 70 i- #x8712 #x5CA9 #x5EF6 #x8A00 #x989C #x960E #x708E #x6CBF #x5944 #x63A9 Err bitreich.org 70 i- #x773C #x884D #x6F14 #x8273 #x5830 #x71D5 #x538C #x781A #x96C1 #x5501 Err bitreich.org 70 i- #x5F66 #x7130 #x5BB4 #x8C1A #x9A8C #x6B83 #x592E #x9E2F #x79E7 #x6768 Err bitreich.org 70 i- #x626C #x4F6F #x75A1 #x7F8A #x6D0B #x9633 #x6C27 #x4EF0 #x75D2 #x517B Err bitreich.org 70 i- #x6837 #x6F3E #x9080 #x8170 #x5996 #x7476 #x6447 #x5C27 #x9065 #x7A91 Err bitreich.org 70 i- #x8C23 #x59DA #x54AC #x8200 #x836F #x8981 #x8000 #x6930 #x564E #x8036 Err bitreich.org 70 i- #x7237 #x91CE #x51B6 #x4E5F #x9875 #x6396 #x4E1A #x53F6 #x66F3 #x814B Err bitreich.org 70 i- #x591C #x6DB2 #x4E00 #x58F9 #x533B #x63D6 #x94F1 #x4F9D #x4F0A #x8863 Err bitreich.org 70 i- #x9890 #x5937 #x9057 #x79FB #x4EEA #x80F0 #x7591 #x6C82 #x5B9C #x59E8 Err bitreich.org 70 i- #x5F5D #x6905 #x8681 #x501A #x5DF2 #x4E59 #x77E3 #x4EE5 #x827A #x6291 Err bitreich.org 70 i- #x6613 #x9091 #x5C79 #x4EBF #x5F79 #x81C6 #x9038 #x8084 #x75AB #x4EA6 Err bitreich.org 70 i- #x88D4 #x610F #x6BC5 #x5FC6 #x4E49 #x76CA #x6EA2 #x8BE3 #x8BAE #x8C0A Err bitreich.org 70 i- #x8BD1 #x5F02 #x7FFC #x7FCC #x7ECE #x8335 #x836B #x56E0 #x6BB7 #x97F3 Err bitreich.org 70 i- #x9634 #x59FB #x541F #x94F6 #x6DEB #x5BC5 #x996E #x5C39 #x5F15 #x9690 Err bitreich.org 70 i- #x5370 #x82F1 #x6A31 #x5A74 #x9E70 #x5E94 #x7F28 #x83B9 #x8424 #x8425 Err bitreich.org 70 i- #x8367 #x8747 #x8FCE #x8D62 #x76C8 #x5F71 #x9896 #x786C #x6620 #x54DF Err bitreich.org 70 i- #x62E5 #x4F63 #x81C3 #x75C8 #x5EB8 #x96CD #x8E0A #x86F9 #x548F #x6CF3 Err bitreich.org 70 i- #x6D8C #x6C38 #x607F #x52C7 #x7528 #x5E7D #x4F18 #x60A0 #x5FE7 #x5C24 Err bitreich.org 70 i- #x7531 #x90AE #x94C0 #x72B9 #x6CB9 #x6E38 #x9149 #x6709 #x53CB #x53F3 Err bitreich.org 70 i- #x4F51 #x91C9 #x8BF1 #x53C8 #x5E7C #x8FC2 #x6DE4 #x4E8E #x76C2 #x6986 Err bitreich.org 70 i- #x865E #x611A #x8206 #x4F59 #x4FDE #x903E #x9C7C #x6109 #x6E1D #x6E14 Err bitreich.org 70 i- #x9685 #x4E88 #x5A31 #x96E8 #x4E0E #x5C7F #x79B9 #x5B87 #x8BED #x7FBD Err bitreich.org 70 i- #x7389 #x57DF #x828B #x90C1 #x5401 #x9047 #x55BB #x5CEA #x5FA1 #x6108 Err bitreich.org 70 i- #x6B32 #x72F1 #x80B2 #x8A89 #x6D74 #x5BD3 #x88D5 #x9884 #x8C6B #x9A6D Err bitreich.org 70 i- #x9E33 #x6E0A #x51A4 #x5143 #x57A3 #x8881 #x539F #x63F4 #x8F95 #x56ED Err bitreich.org 70 i- #x5458 #x5706 #x733F #x6E90 #x7F18 #x8FDC #x82D1 #x613F #x6028 #x9662 Err bitreich.org 70 i- #x66F0 #x7EA6 #x8D8A #x8DC3 #x94A5 #x5CB3 #x7CA4 #x6708 #x60A6 #x9605 Err bitreich.org 70 i- #x8018 #x4E91 #x90E7 #x5300 #x9668 #x5141 #x8FD0 #x8574 #x915D #x6655 Err bitreich.org 70 i- #x97F5 #x5B55 #x531D #x7838 #x6742 #x683D #x54C9 #x707E #x5BB0 #x8F7D Err bitreich.org 70 i- #x518D #x5728 #x54B1 #x6512 #x6682 #x8D5E #x8D43 #x810F #x846C #x906D Err bitreich.org 70 i- #x7CDF #x51FF #x85FB #x67A3 #x65E9 #x6FA1 #x86A4 #x8E81 #x566A #x9020 Err bitreich.org 70 i- #x7682 #x7076 #x71E5 #x8D23 #x62E9 #x5219 #x6CFD #x8D3C #x600E #x589E Err bitreich.org 70 i- #x618E #x66FE #x8D60 #x624E #x55B3 #x6E23 #x672D #x8F67 #x94E1 #x95F8 Err bitreich.org 70 i- #x7728 #x6805 #x69A8 #x548B #x4E4D #x70B8 #x8BC8 #x6458 #x658B #x5B85 Err bitreich.org 70 i- #x7A84 #x503A #x5BE8 #x77BB #x6BE1 #x8A79 #x7C98 #x6CBE #x76CF #x65A9 Err bitreich.org 70 i- #x8F97 #x5D2D #x5C55 #x8638 #x6808 #x5360 #x6218 #x7AD9 #x6E5B #x7EFD Err bitreich.org 70 i- #x6A1F #x7AE0 #x5F70 #x6F33 #x5F20 #x638C #x6DA8 #x6756 #x4E08 #x5E10 Err bitreich.org 70 i- #x8D26 #x4ED7 #x80C0 #x7634 #x969C #x62DB #x662D #x627E #x6CBC #x8D75 Err bitreich.org 70 i- #x7167 #x7F69 #x5146 #x8087 #x53EC #x906E #x6298 #x54F2 #x86F0 #x8F99 Err bitreich.org 70 i- #x8005 #x9517 #x8517 #x8FD9 #x6D59 #x73CD #x659F #x771F #x7504 #x7827 Err bitreich.org 70 i- #x81FB #x8D1E #x9488 #x4FA6 #x6795 #x75B9 #x8BCA #x9707 #x632F #x9547 Err bitreich.org 70 i- #x9635 #x84B8 #x6323 #x7741 #x5F81 #x72F0 #x4E89 #x6014 #x6574 #x62EF Err bitreich.org 70 i- #x6B63 #x653F #x5E27 #x75C7 #x90D1 #x8BC1 #x829D #x679D #x652F #x5431 Err bitreich.org 70 i- #x8718 #x77E5 #x80A2 #x8102 #x6C41 #x4E4B #x7EC7 #x804C #x76F4 #x690D Err bitreich.org 70 i- #x6B96 #x6267 #x503C #x4F84 #x5740 #x6307 #x6B62 #x8DBE #x53EA #x65E8 Err bitreich.org 70 i- #x7EB8 #x5FD7 #x631A #x63B7 #x81F3 #x81F4 #x7F6E #x5E1C #x5CD9 #x5236 Err bitreich.org 70 i- #x667A #x79E9 #x7A1A #x8D28 #x7099 #x75D4 #x6EDE #x6CBB #x7A92 #x4E2D Err bitreich.org 70 i- #x76C5 #x5FE0 #x949F #x8877 #x7EC8 #x79CD #x80BF #x91CD #x4EF2 #x4F17 Err bitreich.org 70 i- #x821F #x5468 #x5DDE #x6D32 #x8BCC #x7CA5 #x8F74 #x8098 #x5E1A #x5492 Err bitreich.org 70 i- #x76B1 #x5B99 #x663C #x9AA4 #x73E0 #x682A #x86DB #x6731 #x732A #x8BF8 Err bitreich.org 70 i- #x8BDB #x9010 #x7AF9 #x70DB #x716E #x62C4 #x77A9 #x5631 #x4E3B #x8457 Err bitreich.org 70 i- #x67F1 #x52A9 #x86C0 #x8D2E #x94F8 #x7B51 #x4F4F #x6CE8 #x795D #x9A7B Err bitreich.org 70 i- #x6293 #x722A #x62FD #x4E13 #x7816 #x8F6C #x64B0 #x8D5A #x7BC6 #x6869 Err bitreich.org 70 i- #x5E84 #x88C5 #x5986 #x649E #x58EE #x72B6 #x690E #x9525 #x8FFD #x8D58 Err bitreich.org 70 i- #x5760 #x7F00 #x8C06 #x51C6 #x6349 #x62D9 #x5353 #x684C #x7422 #x8301 Err bitreich.org 70 i- #x914C #x5544 #x7740 #x707C #x6D4A #x5179 #x54A8 #x8D44 #x59FF #x6ECB Err bitreich.org 70 i- #x6DC4 #x5B5C #x7D2B #x4ED4 #x7C7D #x6ED3 #x5B50 #x81EA #x6E0D #x5B57 Err bitreich.org 70 i- #x9B03 #x68D5 #x8E2A #x5B97 #x7EFC #x603B #x7EB5 #x90B9 #x8D70 #x594F Err bitreich.org 70 i- #x63CD #x79DF #x8DB3 #x5352 #x65CF #x7956 #x8BC5 #x963B #x7EC4 #x94BB Err bitreich.org 70 i- #x7E82 #x5634 #x9189 #x6700 #x7F6A #x5C0A #x9075 #x6628 #x5DE6 #x4F50 Err bitreich.org 70 i- #x67DE #x505A #x4F5C #x5750 #x5EA7 #x4E8D #x4E0C #x5140 #x4E10 #x5EFF Err bitreich.org 70 i- #x5345 #x4E15 #x4E98 #x4E1E #x9B32 #x5B6C #x5669 #x4E28 #x79BA #x4E3F Err bitreich.org 70 i- #x5315 #x4E47 #x592D #x723B #x536E #x6C10 #x56DF #x80E4 #x9997 #x6BD3 Err bitreich.org 70 i- #x777E #x9F17 #x4E36 #x4E9F #x9F10 #x4E5C #x4E69 #x4E93 #x8288 #x5B5B Err bitreich.org 70 i- #x556C #x560F #x4EC4 #x538D #x539D #x53A3 #x53A5 #x53AE #x9765 #x8D5D Err bitreich.org 70 i- #x531A #x53F5 #x5326 #x532E #x533E #x8D5C #x5366 #x5363 #x5202 #x5208 Err bitreich.org 70 i- #x520E #x522D #x5233 #x523F #x5240 #x524C #x525E #x5261 #x525C #x84AF Err bitreich.org 70 i- #x527D #x5282 #x5281 #x5290 #x5293 #x5182 #x7F54 #x4EBB #x4EC3 #x4EC9 Err bitreich.org 70 i- #x4EC2 #x4EE8 #x4EE1 #x4EEB #x4EDE #x4F1B #x4EF3 #x4F22 #x4F64 #x4EF5 Err bitreich.org 70 i- #x4F25 #x4F27 #x4F09 #x4F2B #x4F5E #x4F67 #x6538 #x4F5A #x4F5D #x4F5F Err bitreich.org 70 i- #x4F57 #x4F32 #x4F3D #x4F76 #x4F74 #x4F91 #x4F89 #x4F83 #x4F8F #x4F7E Err bitreich.org 70 i- #x4F7B #x4FAA #x4F7C #x4FAC #x4F94 #x4FE6 #x4FE8 #x4FEA #x4FC5 #x4FDA Err bitreich.org 70 i- #x4FE3 #x4FDC #x4FD1 #x4FDF #x4FF8 #x5029 #x504C #x4FF3 #x502C #x500F Err bitreich.org 70 i- #x502E #x502D #x4FFE #x501C #x500C #x5025 #x5028 #x507E #x5043 #x5055 Err bitreich.org 70 i- #x5048 #x504E #x506C #x507B #x50A5 #x50A7 #x50A9 #x50BA #x50D6 #x5106 Err bitreich.org 70 i- #x50ED #x50EC #x50E6 #x50EE #x5107 #x510B #x4EDD #x6C3D #x4F58 #x4F65 Err bitreich.org 70 i- #x4FCE #x9FA0 #x6C46 #x7C74 #x516E #x5DFD #x9EC9 #x9998 #x5181 #x5914 Err bitreich.org 70 i- #x52F9 #x530D #x8A07 #x5310 #x51EB #x5919 #x5155 #x4EA0 #x5156 #x4EB3 Err bitreich.org 70 i- #x886E #x88A4 #x4EB5 #x8114 #x88D2 #x7980 #x5B34 #x8803 #x7FB8 #x51AB Err bitreich.org 70 i- #x51B1 #x51BD #x51BC #x51C7 #x5196 #x51A2 #x51A5 #x8BA0 #x8BA6 #x8BA7 Err bitreich.org 70 i- #x8BAA #x8BB4 #x8BB5 #x8BB7 #x8BC2 #x8BC3 #x8BCB #x8BCF #x8BCE #x8BD2 Err bitreich.org 70 i- #x8BD3 #x8BD4 #x8BD6 #x8BD8 #x8BD9 #x8BDC #x8BDF #x8BE0 #x8BE4 #x8BE8 Err bitreich.org 70 i- #x8BE9 #x8BEE #x8BF0 #x8BF3 #x8BF6 #x8BF9 #x8BFC #x8BFF #x8C00 #x8C02 Err bitreich.org 70 i- #x8C04 #x8C07 #x8C0C #x8C0F #x8C11 #x8C12 #x8C14 #x8C15 #x8C16 #x8C19 Err bitreich.org 70 i- #x8C1B #x8C18 #x8C1D #x8C1F #x8C20 #x8C21 #x8C25 #x8C27 #x8C2A #x8C2B Err bitreich.org 70 i- #x8C2E #x8C2F #x8C32 #x8C33 #x8C35 #x8C36 #x5369 #x537A #x961D #x9622 Err bitreich.org 70 i- #x9621 #x9631 #x962A #x963D #x963C #x9642 #x9649 #x9654 #x965F #x9667 Err bitreich.org 70 i- #x966C #x9672 #x9674 #x9688 #x968D #x9697 #x96B0 #x9097 #x909B #x909D Err bitreich.org 70 i- #x9099 #x90AC #x90A1 #x90B4 #x90B3 #x90B6 #x90BA #x90B8 #x90B0 #x90CF Err bitreich.org 70 i- #x90C5 #x90BE #x90D0 #x90C4 #x90C7 #x90D3 #x90E6 #x90E2 #x90DC #x90D7 Err bitreich.org 70 i- #x90DB #x90EB #x90EF #x90FE #x9104 #x9122 #x911E #x9123 #x9131 #x912F Err bitreich.org 70 i- #x9139 #x9143 #x9146 #x520D #x5942 #x52A2 #x52AC #x52AD #x52BE #x54FF Err bitreich.org 70 i- #x52D0 #x52D6 #x52F0 #x53DF #x71EE #x77CD #x5EF4 #x51F5 #x51FC #x9B2F Err bitreich.org 70 i- #x53B6 #x5F01 #x755A #x5DEF #x574C #x57A9 #x57A1 #x587E #x58BC #x58C5 Err bitreich.org 70 i- #x58D1 #x5729 #x572C #x572A #x5733 #x5739 #x572E #x572F #x575C #x573B Err bitreich.org 70 i- #x5742 #x5769 #x5785 #x576B #x5786 #x577C #x577B #x5768 #x576D #x5776 Err bitreich.org 70 i- #x5773 #x57AD #x57A4 #x578C #x57B2 #x57CF #x57A7 #x57B4 #x5793 #x57A0 Err bitreich.org 70 i- #x57D5 #x57D8 #x57DA #x57D9 #x57D2 #x57B8 #x57F4 #x57EF #x57F8 #x57E4 Err bitreich.org 70 i- #x57DD #x580B #x580D #x57FD #x57ED #x5800 #x581E #x5819 #x5844 #x5820 Err bitreich.org 70 i- #x5865 #x586C #x5881 #x5889 #x589A #x5880 #x99A8 #x9F19 #x61FF #x8279 Err bitreich.org 70 i- #x827D #x827F #x828F #x828A #x82A8 #x8284 #x828E #x8291 #x8297 #x8299 Err bitreich.org 70 i- #x82AB #x82B8 #x82BE #x82B0 #x82C8 #x82CA #x82E3 #x8298 #x82B7 #x82AE Err bitreich.org 70 i- #x82CB #x82CC #x82C1 #x82A9 #x82B4 #x82A1 #x82AA #x829F #x82C4 #x82CE Err bitreich.org 70 i- #x82A4 #x82E1 #x8309 #x82F7 #x82E4 #x830F #x8307 #x82DC #x82F4 #x82D2 Err bitreich.org 70 i- #x82D8 #x830C #x82FB #x82D3 #x8311 #x831A #x8306 #x8314 #x8315 #x82E0 Err bitreich.org 70 i- #x82D5 #x831C #x8351 #x835B #x835C #x8308 #x8392 #x833C #x8334 #x8331 Err bitreich.org 70 i- #x839B #x835E #x832F #x834F #x8347 #x8343 #x835F #x8340 #x8317 #x8360 Err bitreich.org 70 i- #x832D #x833A #x8333 #x8366 #x8365 #x8368 #x831B #x8369 #x836C #x836A Err bitreich.org 70 i- #x836D #x836E #x83B0 #x8378 #x83B3 #x83B4 #x83A0 #x83AA #x8393 #x839C Err bitreich.org 70 i- #x8385 #x837C #x83B6 #x83A9 #x837D #x83B8 #x837B #x8398 #x839E #x83A8 Err bitreich.org 70 i- #x83BA #x83BC #x83C1 #x8401 #x83E5 #x83D8 #x5807 #x8418 #x840B #x83DD Err bitreich.org 70 i- #x83FD #x83D6 #x841C #x8438 #x8411 #x8406 #x83D4 #x83DF #x840F #x8403 Err bitreich.org 70 i- #x83F8 #x83F9 #x83EA #x83C5 #x83C0 #x8426 #x83F0 #x83E1 #x845C #x8451 Err bitreich.org 70 i- #x845A #x8459 #x8473 #x8487 #x8488 #x847A #x8489 #x8478 #x843C #x8446 Err bitreich.org 70 i- #x8469 #x8476 #x848C #x848E #x8431 #x846D #x84C1 #x84CD #x84D0 #x84E6 Err bitreich.org 70 i- #x84BD #x84D3 #x84CA #x84BF #x84BA #x84E0 #x84A1 #x84B9 #x84B4 #x8497 Err bitreich.org 70 i- #x84E5 #x84E3 #x850C #x750D #x8538 #x84F0 #x8539 #x851F #x853A #x8556 Err bitreich.org 70 i- #x853B #x84FF #x84FC #x8559 #x8548 #x8568 #x8564 #x855E #x857A #x77A2 Err bitreich.org 70 i- #x8543 #x8572 #x857B #x85A4 #x85A8 #x8587 #x858F #x8579 #x85AE #x859C Err bitreich.org 70 i- #x8585 #x85B9 #x85B7 #x85B0 #x85D3 #x85C1 #x85DC #x85FF #x8627 #x8605 Err bitreich.org 70 i- #x8629 #x8616 #x863C #x5EFE #x5F08 #x593C #x5941 #x8037 #x5955 #x595A Err bitreich.org 70 i- #x5958 #x530F #x5C22 #x5C25 #x5C2C #x5C34 #x624C #x626A #x629F #x62BB Err bitreich.org 70 i- #x62CA #x62DA #x62D7 #x62EE #x6322 #x62F6 #x6339 #x634B #x6343 #x63AD Err bitreich.org 70 i- #x63F6 #x6371 #x637A #x638E #x63B4 #x636D #x63AC #x638A #x6369 #x63AE Err bitreich.org 70 i- #x63BC #x63F2 #x63F8 #x63E0 #x63FF #x63C4 #x63DE #x63CE #x6452 #x63C6 Err bitreich.org 70 i- #x63BE #x6445 #x6441 #x640B #x641B #x6420 #x640C #x6426 #x6421 #x645E Err bitreich.org 70 i- #x6484 #x646D #x6496 #x647A #x64B7 #x64B8 #x6499 #x64BA #x64C0 #x64D0 Err bitreich.org 70 i- #x64D7 #x64E4 #x64E2 #x6509 #x6525 #x652E #x5F0B #x5FD2 #x7519 #x5F11 Err bitreich.org 70 i- #x535F #x53F1 #x53FD #x53E9 #x53E8 #x53FB #x5412 #x5416 #x5406 #x544B Err bitreich.org 70 i- #x5452 #x5453 #x5454 #x5456 #x5443 #x5421 #x5457 #x5459 #x5423 #x5432 Err bitreich.org 70 i- #x5482 #x5494 #x5477 #x5471 #x5464 #x549A #x549B #x5484 #x5476 #x5466 Err bitreich.org 70 i- #x549D #x54D0 #x54AD #x54C2 #x54B4 #x54D2 #x54A7 #x54A6 #x54D3 #x54D4 Err bitreich.org 70 i- #x5472 #x54A3 #x54D5 #x54BB #x54BF #x54CC #x54D9 #x54DA #x54DC #x54A9 Err bitreich.org 70 i- #x54AA #x54A4 #x54DD #x54CF #x54DE #x551B #x54E7 #x5520 #x54FD #x5514 Err bitreich.org 70 i- #x54F3 #x5522 #x5523 #x550F #x5511 #x5527 #x552A #x5567 #x558F #x55B5 Err bitreich.org 70 i- #x5549 #x556D #x5541 #x5555 #x553F #x5550 #x553C #x5537 #x5556 #x5575 Err bitreich.org 70 i- #x5576 #x5577 #x5533 #x5530 #x555C #x558B #x55D2 #x5583 #x55B1 #x55B9 Err bitreich.org 70 i- #x5588 #x5581 #x559F #x557E #x55D6 #x5591 #x557B #x55DF #x55BD #x55BE Err bitreich.org 70 i- #x5594 #x5599 #x55EA #x55F7 #x55C9 #x561F #x55D1 #x55EB #x55EC #x55D4 Err bitreich.org 70 i- #x55E6 #x55DD #x55C4 #x55EF #x55E5 #x55F2 #x55F3 #x55CC #x55CD #x55E8 Err bitreich.org 70 i- #x55F5 #x55E4 #x8F94 #x561E #x5608 #x560C #x5601 #x5624 #x5623 #x55FE Err bitreich.org 70 i- #x5600 #x5627 #x562D #x5658 #x5639 #x5657 #x562C #x564D #x5662 #x5659 Err bitreich.org 70 i- #x565C #x564C #x5654 #x5686 #x5664 #x5671 #x566B #x567B #x567C #x5685 Err bitreich.org 70 i- #x5693 #x56AF #x56D4 #x56D7 #x56DD #x56E1 #x56F5 #x56EB #x56F9 #x56FF Err bitreich.org 70 i- #x5704 #x570A #x5709 #x571C #x5E0F #x5E19 #x5E14 #x5E11 #x5E31 #x5E3B Err bitreich.org 70 i- #x5E3C #x5E37 #x5E44 #x5E54 #x5E5B #x5E5E #x5E61 #x5C8C #x5C7A #x5C8D Err bitreich.org 70 i- #x5C90 #x5C96 #x5C88 #x5C98 #x5C99 #x5C91 #x5C9A #x5C9C #x5CB5 #x5CA2 Err bitreich.org 70 i- #x5CBD #x5CAC #x5CAB #x5CB1 #x5CA3 #x5CC1 #x5CB7 #x5CC4 #x5CD2 #x5CE4 Err bitreich.org 70 i- #x5CCB #x5CE5 #x5D02 #x5D03 #x5D27 #x5D26 #x5D2E #x5D24 #x5D1E #x5D06 Err bitreich.org 70 i- #x5D1B #x5D58 #x5D3E #x5D34 #x5D3D #x5D6C #x5D5B #x5D6F #x5D5D #x5D6B Err bitreich.org 70 i- #x5D4B #x5D4A #x5D69 #x5D74 #x5D82 #x5D99 #x5D9D #x8C73 #x5DB7 #x5DC5 Err bitreich.org 70 i- #x5F73 #x5F77 #x5F82 #x5F87 #x5F89 #x5F8C #x5F95 #x5F99 #x5F9C #x5FA8 Err bitreich.org 70 i- #x5FAD #x5FB5 #x5FBC #x8862 #x5F61 #x72AD #x72B0 #x72B4 #x72B7 #x72B8 Err bitreich.org 70 i- #x72C3 #x72C1 #x72CE #x72CD #x72D2 #x72E8 #x72EF #x72E9 #x72F2 #x72F4 Err bitreich.org 70 i- #x72F7 #x7301 #x72F3 #x7303 #x72FA #x72FB #x7317 #x7313 #x7321 #x730A Err bitreich.org 70 i- #x731E #x731D #x7315 #x7322 #x7339 #x7325 #x732C #x7338 #x7331 #x7350 Err bitreich.org 70 i- #x734D #x7357 #x7360 #x736C #x736F #x737E #x821B #x5925 #x98E7 #x5924 Err bitreich.org 70 i- #x5902 #x9963 #x9967 #x9968 #x9969 #x996A #x996B #x996C #x9974 #x9977 Err bitreich.org 70 i- #x997D #x9980 #x9984 #x9987 #x998A #x998D #x9990 #x9991 #x9993 #x9994 Err bitreich.org 70 i- #x9995 #x5E80 #x5E91 #x5E8B #x5E96 #x5EA5 #x5EA0 #x5EB9 #x5EB5 #x5EBE Err bitreich.org 70 i- #x5EB3 #x8D53 #x5ED2 #x5ED1 #x5EDB #x5EE8 #x5EEA #x81BA #x5FC4 #x5FC9 Err bitreich.org 70 i- #x5FD6 #x5FCF #x6003 #x5FEE #x6004 #x5FE1 #x5FE4 #x5FFE #x6005 #x6006 Err bitreich.org 70 i- #x5FEA #x5FED #x5FF8 #x6019 #x6035 #x6026 #x601B #x600F #x600D #x6029 Err bitreich.org 70 i- #x602B #x600A #x603F #x6021 #x6078 #x6079 #x607B #x607A #x6042 #x606A Err bitreich.org 70 i- #x607D #x6096 #x609A #x60AD #x609D #x6083 #x6092 #x608C #x609B #x60EC Err bitreich.org 70 i- #x60BB #x60B1 #x60DD #x60D8 #x60C6 #x60DA #x60B4 #x6120 #x6126 #x6115 Err bitreich.org 70 i- #x6123 #x60F4 #x6100 #x610E #x612B #x614A #x6175 #x61AC #x6194 #x61A7 Err bitreich.org 70 i- #x61B7 #x61D4 #x61F5 #x5FDD #x96B3 #x95E9 #x95EB #x95F1 #x95F3 #x95F5 Err bitreich.org 70 i- #x95F6 #x95FC #x95FE #x9603 #x9604 #x9606 #x9608 #x960A #x960B #x960C Err bitreich.org 70 i- #x960D #x960F #x9612 #x9615 #x9616 #x9617 #x9619 #x961A #x4E2C #x723F Err bitreich.org 70 i- #x6215 #x6C35 #x6C54 #x6C5C #x6C4A #x6CA3 #x6C85 #x6C90 #x6C94 #x6C8C Err bitreich.org 70 i- #x6C68 #x6C69 #x6C74 #x6C76 #x6C86 #x6CA9 #x6CD0 #x6CD4 #x6CAD #x6CF7 Err bitreich.org 70 i- #x6CF8 #x6CF1 #x6CD7 #x6CB2 #x6CE0 #x6CD6 #x6CFA #x6CEB #x6CEE #x6CB1 Err bitreich.org 70 i- #x6CD3 #x6CEF #x6CFE #x6D39 #x6D27 #x6D0C #x6D43 #x6D48 #x6D07 #x6D04 Err bitreich.org 70 i- #x6D19 #x6D0E #x6D2B #x6D4D #x6D2E #x6D35 #x6D1A #x6D4F #x6D52 #x6D54 Err bitreich.org 70 i- #x6D33 #x6D91 #x6D6F #x6D9E #x6DA0 #x6D5E #x6D93 #x6D94 #x6D5C #x6D60 Err bitreich.org 70 i- #x6D7C #x6D63 #x6E1A #x6DC7 #x6DC5 #x6DDE #x6E0E #x6DBF #x6DE0 #x6E11 Err bitreich.org 70 i- #x6DE6 #x6DDD #x6DD9 #x6E16 #x6DAB #x6E0C #x6DAE #x6E2B #x6E6E #x6E4E Err bitreich.org 70 i- #x6E6B #x6EB2 #x6E5F #x6E86 #x6E53 #x6E54 #x6E32 #x6E25 #x6E44 #x6EDF Err bitreich.org 70 i- #x6EB1 #x6E98 #x6EE0 #x6F2D #x6EE2 #x6EA5 #x6EA7 #x6EBD #x6EBB #x6EB7 Err bitreich.org 70 i- #x6ED7 #x6EB4 #x6ECF #x6E8F #x6EC2 #x6E9F #x6F62 #x6F46 #x6F47 #x6F24 Err bitreich.org 70 i- #x6F15 #x6EF9 #x6F2F #x6F36 #x6F4B #x6F74 #x6F2A #x6F09 #x6F29 #x6F89 Err bitreich.org 70 i- #x6F8D #x6F8C #x6F78 #x6F72 #x6F7C #x6F7A #x6FD1 #x6FC9 #x6FA7 #x6FB9 Err bitreich.org 70 i- #x6FB6 #x6FC2 #x6FE1 #x6FEE #x6FDE #x6FE0 #x6FEF #x701A #x7023 #x701B Err bitreich.org 70 i- #x7039 #x7035 #x704F #x705E #x5B80 #x5B84 #x5B95 #x5B93 #x5BA5 #x5BB8 Err bitreich.org 70 i- #x752F #x9A9E #x6434 #x5BE4 #x5BEE #x8930 #x5BF0 #x8E47 #x8B07 #x8FB6 Err bitreich.org 70 i- #x8FD3 #x8FD5 #x8FE5 #x8FEE #x8FE4 #x8FE9 #x8FE6 #x8FF3 #x8FE8 #x9005 Err bitreich.org 70 i- #x9004 #x900B #x9026 #x9011 #x900D #x9016 #x9021 #x9035 #x9036 #x902D Err bitreich.org 70 i- #x902F #x9044 #x9051 #x9052 #x9050 #x9068 #x9058 #x9062 #x905B #x66B9 Err bitreich.org 70 i- #x9074 #x907D #x9082 #x9088 #x9083 #x908B #x5F50 #x5F57 #x5F56 #x5F58 Err bitreich.org 70 i- #x5C3B #x54AB #x5C50 #x5C59 #x5B71 #x5C63 #x5C66 #x7FBC #x5F2A #x5F29 Err bitreich.org 70 i- #x5F2D #x8274 #x5F3C #x9B3B #x5C6E #x5981 #x5983 #x598D #x59A9 #x59AA Err bitreich.org 70 i- #x59A3 #x5997 #x59CA #x59AB #x599E #x59A4 #x59D2 #x59B2 #x59AF #x59D7 Err bitreich.org 70 i- #x59BE #x5A05 #x5A06 #x59DD #x5A08 #x59E3 #x59D8 #x59F9 #x5A0C #x5A09 Err bitreich.org 70 i- #x5A32 #x5A34 #x5A11 #x5A23 #x5A13 #x5A40 #x5A67 #x5A4A #x5A55 #x5A3C Err bitreich.org 70 i- #x5A62 #x5A75 #x80EC #x5AAA #x5A9B #x5A77 #x5A7A #x5ABE #x5AEB #x5AB2 Err bitreich.org 70 i- #x5AD2 #x5AD4 #x5AB8 #x5AE0 #x5AE3 #x5AF1 #x5AD6 #x5AE6 #x5AD8 #x5ADC Err bitreich.org 70 i- #x5B09 #x5B17 #x5B16 #x5B32 #x5B37 #x5B40 #x5C15 #x5C1C #x5B5A #x5B65 Err bitreich.org 70 i- #x5B73 #x5B51 #x5B53 #x5B62 #x9A75 #x9A77 #x9A78 #x9A7A #x9A7F #x9A7D Err bitreich.org 70 i- #x9A80 #x9A81 #x9A85 #x9A88 #x9A8A #x9A90 #x9A92 #x9A93 #x9A96 #x9A98 Err bitreich.org 70 i- #x9A9B #x9A9C #x9A9D #x9A9F #x9AA0 #x9AA2 #x9AA3 #x9AA5 #x9AA7 #x7E9F Err bitreich.org 70 i- #x7EA1 #x7EA3 #x7EA5 #x7EA8 #x7EA9 #x7EAD #x7EB0 #x7EBE #x7EC0 #x7EC1 Err bitreich.org 70 i- #x7EC2 #x7EC9 #x7ECB #x7ECC #x7ED0 #x7ED4 #x7ED7 #x7EDB #x7EE0 #x7EE1 Err bitreich.org 70 i- #x7EE8 #x7EEB #x7EEE #x7EEF #x7EF1 #x7EF2 #x7F0D #x7EF6 #x7EFA #x7EFB Err bitreich.org 70 i- #x7EFE #x7F01 #x7F02 #x7F03 #x7F07 #x7F08 #x7F0B #x7F0C #x7F0F #x7F11 Err bitreich.org 70 i- #x7F12 #x7F17 #x7F19 #x7F1C #x7F1B #x7F1F #x7F21 #x7F22 #x7F23 #x7F24 Err bitreich.org 70 i- #x7F25 #x7F26 #x7F27 #x7F2A #x7F2B #x7F2C #x7F2D #x7F2F #x7F30 #x7F31 Err bitreich.org 70 i- #x7F32 #x7F33 #x7F35 #x5E7A #x757F #x5DDB #x753E #x9095 #x738E #x7391 Err bitreich.org 70 i- #x73AE #x73A2 #x739F #x73CF #x73C2 #x73D1 #x73B7 #x73B3 #x73C0 #x73C9 Err bitreich.org 70 i- #x73C8 #x73E5 #x73D9 #x987C #x740A #x73E9 #x73E7 #x73DE #x73BA #x73F2 Err bitreich.org 70 i- #x740F #x742A #x745B #x7426 #x7425 #x7428 #x7430 #x742E #x742C #x741B Err bitreich.org 70 i- #x741A #x7441 #x745C #x7457 #x7455 #x7459 #x7477 #x746D #x747E #x749C Err bitreich.org 70 i- #x748E #x7480 #x7481 #x7487 #x748B #x749E #x74A8 #x74A9 #x7490 #x74A7 Err bitreich.org 70 i- #x74D2 #x74BA #x97EA #x97EB #x97EC #x674C #x6753 #x675E #x6748 #x6769 Err bitreich.org 70 i- #x67A5 #x6787 #x676A #x6773 #x6798 #x67A7 #x6775 #x67A8 #x679E #x67AD Err bitreich.org 70 i- #x678B #x6777 #x677C #x67F0 #x6809 #x67D8 #x680A #x67E9 #x67B0 #x680C Err bitreich.org 70 i- #x67D9 #x67B5 #x67DA #x67B3 #x67DD #x6800 #x67C3 #x67B8 #x67E2 #x680E Err bitreich.org 70 i- #x67C1 #x67FD #x6832 #x6833 #x6860 #x6861 #x684E #x6862 #x6844 #x6864 Err bitreich.org 70 i- #x6883 #x681D #x6855 #x6866 #x6841 #x6867 #x6840 #x683E #x684A #x6849 Err bitreich.org 70 i- #x6829 #x68B5 #x688F #x6874 #x6877 #x6893 #x686B #x68C2 #x696E #x68FC Err bitreich.org 70 i- #x691F #x6920 #x68F9 #x6924 #x68F0 #x690B #x6901 #x6957 #x68E3 #x6910 Err bitreich.org 70 i- #x6971 #x6939 #x6960 #x6942 #x695D #x6984 #x696B #x6980 #x6998 #x6978 Err bitreich.org 70 i- #x6934 #x69CC #x6987 #x6988 #x69CE #x6989 #x6966 #x6963 #x6979 #x699B Err bitreich.org 70 i- #x69A7 #x69BB #x69AB #x69AD #x69D4 #x69B1 #x69C1 #x69CA #x69DF #x6995 Err bitreich.org 70 i- #x69E0 #x698D #x69FF #x6A2F #x69ED #x6A17 #x6A18 #x6A65 #x69F2 #x6A44 Err bitreich.org 70 i- #x6A3E #x6AA0 #x6A50 #x6A5B #x6A35 #x6A8E #x6A79 #x6A3D #x6A28 #x6A58 Err bitreich.org 70 i- #x6A7C #x6A91 #x6A90 #x6AA9 #x6A97 #x6AAB #x7337 #x7352 #x6B81 #x6B82 Err bitreich.org 70 i- #x6B87 #x6B84 #x6B92 #x6B93 #x6B8D #x6B9A #x6B9B #x6BA1 #x6BAA #x8F6B Err bitreich.org 70 i- #x8F6D #x8F71 #x8F72 #x8F73 #x8F75 #x8F76 #x8F78 #x8F77 #x8F79 #x8F7A Err bitreich.org 70 i- #x8F7C #x8F7E #x8F81 #x8F82 #x8F84 #x8F87 #x8F8B #x8F8D #x8F8E #x8F8F Err bitreich.org 70 i- #x8F98 #x8F9A #x8ECE #x620B #x6217 #x621B #x621F #x6222 #x6221 #x6225 Err bitreich.org 70 i- #x6224 #x622C #x81E7 #x74EF #x74F4 #x74FF #x750F #x7511 #x7513 #x6534 Err bitreich.org 70 i- #x65EE #x65EF #x65F0 #x660A #x6619 #x6772 #x6603 #x6615 #x6600 #x7085 Err bitreich.org 70 i- #x66F7 #x661D #x6634 #x6631 #x6636 #x6635 #x8006 #x665F #x6654 #x6641 Err bitreich.org 70 i- #x664F #x6656 #x6661 #x6657 #x6677 #x6684 #x668C #x66A7 #x669D #x66BE Err bitreich.org 70 i- #x66DB #x66DC #x66E6 #x66E9 #x8D32 #x8D33 #x8D36 #x8D3B #x8D3D #x8D40 Err bitreich.org 70 i- #x8D45 #x8D46 #x8D48 #x8D49 #x8D47 #x8D4D #x8D55 #x8D59 #x89C7 #x89CA Err bitreich.org 70 i- #x89CB #x89CC #x89CE #x89CF #x89D0 #x89D1 #x726E #x729F #x725D #x7266 Err bitreich.org 70 i- #x726F #x727E #x727F #x7284 #x728B #x728D #x728F #x7292 #x6308 #x6332 Err bitreich.org 70 i- #x63B0 #x643F #x64D8 #x8004 #x6BEA #x6BF3 #x6BFD #x6BF5 #x6BF9 #x6C05 Err bitreich.org 70 i- #x6C07 #x6C06 #x6C0D #x6C15 #x6C18 #x6C19 #x6C1A #x6C21 #x6C29 #x6C24 Err bitreich.org 70 i- #x6C2A #x6C32 #x6535 #x6555 #x656B #x724D #x7252 #x7256 #x7230 #x8662 Err bitreich.org 70 i- #x5216 #x809F #x809C #x8093 #x80BC #x670A #x80BD #x80B1 #x80AB #x80AD Err bitreich.org 70 i- #x80B4 #x80B7 #x80E7 #x80E8 #x80E9 #x80EA #x80DB #x80C2 #x80C4 #x80D9 Err bitreich.org 70 i- #x80CD #x80D7 #x6710 #x80DD #x80EB #x80F1 #x80F4 #x80ED #x810D #x810E Err bitreich.org 70 i- #x80F2 #x80FC #x6715 #x8112 #x8C5A #x8136 #x811E #x812C #x8118 #x8132 Err bitreich.org 70 i- #x8148 #x814C #x8153 #x8174 #x8159 #x815A #x8171 #x8160 #x8169 #x817C Err bitreich.org 70 i- #x817D #x816D #x8167 #x584D #x5AB5 #x8188 #x8182 #x8191 #x6ED5 #x81A3 Err bitreich.org 70 i- #x81AA #x81CC #x6726 #x81CA #x81BB #x81C1 #x81A6 #x6B24 #x6B37 #x6B39 Err bitreich.org 70 i- #x6B43 #x6B46 #x6B59 #x98D1 #x98D2 #x98D3 #x98D5 #x98D9 #x98DA #x6BB3 Err bitreich.org 70 i- #x5F40 #x6BC2 #x89F3 #x6590 #x9F51 #x6593 #x65BC #x65C6 #x65C4 #x65C3 Err bitreich.org 70 i- #x65CC #x65CE #x65D2 #x65D6 #x7080 #x709C #x7096 #x709D #x70BB #x70C0 Err bitreich.org 70 i- #x70B7 #x70AB #x70B1 #x70E8 #x70CA #x7110 #x7113 #x7116 #x712F #x7131 Err bitreich.org 70 i- #x7173 #x715C #x7168 #x7145 #x7172 #x714A #x7178 #x717A #x7198 #x71B3 Err bitreich.org 70 i- #x71B5 #x71A8 #x71A0 #x71E0 #x71D4 #x71E7 #x71F9 #x721D #x7228 #x706C Err bitreich.org 70 i- #x7118 #x7166 #x71B9 #x623E #x623D #x6243 #x6248 #x6249 #x793B #x7940 Err bitreich.org 70 i- #x7946 #x7949 #x795B #x795C #x7953 #x795A #x7962 #x7957 #x7960 #x796F Err bitreich.org 70 i- #x7967 #x797A #x7985 #x798A #x799A #x79A7 #x79B3 #x5FD1 #x5FD0 #x603C Err bitreich.org 70 i- #x605D #x605A #x6067 #x6041 #x6059 #x6063 #x60AB #x6106 #x610D #x615D Err bitreich.org 70 i- #x61A9 #x619D #x61CB #x61D1 #x6206 #x8080 #x807F #x6C93 #x6CF6 #x6DFC Err bitreich.org 70 i- #x77F6 #x77F8 #x7800 #x7809 #x7817 #x7818 #x7811 #x65AB #x782D #x781C Err bitreich.org 70 i- #x781D #x7839 #x783A #x783B #x781F #x783C #x7825 #x782C #x7823 #x7829 Err bitreich.org 70 i- #x784E #x786D #x7856 #x7857 #x7826 #x7850 #x7847 #x784C #x786A #x789B Err bitreich.org 70 i- #x7893 #x789A #x7887 #x789C #x78A1 #x78A3 #x78B2 #x78B9 #x78A5 #x78D4 Err bitreich.org 70 i- #x78D9 #x78C9 #x78EC #x78F2 #x7905 #x78F4 #x7913 #x7924 #x791E #x7934 Err bitreich.org 70 i- #x9F9B #x9EF9 #x9EFB #x9EFC #x76F1 #x7704 #x770D #x76F9 #x7707 #x7708 Err bitreich.org 70 i- #x771A #x7722 #x7719 #x772D #x7726 #x7735 #x7738 #x7750 #x7751 #x7747 Err bitreich.org 70 i- #x7743 #x775A #x7768 #x7762 #x7765 #x777F #x778D #x777D #x7780 #x778C Err bitreich.org 70 i- #x7791 #x779F #x77A0 #x77B0 #x77B5 #x77BD #x753A #x7540 #x754E #x754B Err bitreich.org 70 i- #x7548 #x755B #x7572 #x7579 #x7583 #x7F58 #x7F61 #x7F5F #x8A48 #x7F68 Err bitreich.org 70 i- #x7F74 #x7F71 #x7F79 #x7F81 #x7F7E #x76CD #x76E5 #x8832 #x9485 #x9486 Err bitreich.org 70 i- #x9487 #x948B #x948A #x948C #x948D #x948F #x9490 #x9494 #x9497 #x9495 Err bitreich.org 70 i- #x949A #x949B #x949C #x94A3 #x94A4 #x94AB #x94AA #x94AD #x94AC #x94AF Err bitreich.org 70 i- #x94B0 #x94B2 #x94B4 #x94B6 #x94B7 #x94B8 #x94B9 #x94BA #x94BC #x94BD Err bitreich.org 70 i- #x94BF #x94C4 #x94C8 #x94C9 #x94CA #x94CB #x94CC #x94CD #x94CE #x94D0 Err bitreich.org 70 i- #x94D1 #x94D2 #x94D5 #x94D6 #x94D7 #x94D9 #x94D8 #x94DB #x94DE #x94DF Err bitreich.org 70 i- #x94E0 #x94E2 #x94E4 #x94E5 #x94E7 #x94E8 #x94EA #x94E9 #x94EB #x94EE Err bitreich.org 70 i- #x94EF #x94F3 #x94F4 #x94F5 #x94F7 #x94F9 #x94FC #x94FD #x94FF #x9503 Err bitreich.org 70 i- #x9502 #x9506 #x9507 #x9509 #x950A #x950D #x950E #x950F #x9512 #x9513 Err bitreich.org 70 i- #x9514 #x9515 #x9516 #x9518 #x951B #x951D #x951E #x951F #x9522 #x952A Err bitreich.org 70 i- #x952B #x9529 #x952C #x9531 #x9532 #x9534 #x9536 #x9537 #x9538 #x953C Err bitreich.org 70 i- #x953E #x953F #x9542 #x9535 #x9544 #x9545 #x9546 #x9549 #x954C #x954E Err bitreich.org 70 i- #x954F #x9552 #x9553 #x9554 #x9556 #x9557 #x9558 #x9559 #x955B #x955E Err bitreich.org 70 i- #x955F #x955D #x9561 #x9562 #x9564 #x9565 #x9566 #x9567 #x9568 #x9569 Err bitreich.org 70 i- #x956A #x956B #x956C #x956F #x9571 #x9572 #x9573 #x953A #x77E7 #x77EC Err bitreich.org 70 i- #x96C9 #x79D5 #x79ED #x79E3 #x79EB #x7A06 #x5D47 #x7A03 #x7A02 #x7A1E Err bitreich.org 70 i- #x7A14 #x7A39 #x7A37 #x7A51 #x9ECF #x99A5 #x7A70 #x7688 #x768E #x7693 Err bitreich.org 70 i- #x7699 #x76A4 #x74DE #x74E0 #x752C #x9E20 #x9E22 #x9E28 #x9E29 #x9E2A Err bitreich.org 70 i- #x9E2B #x9E2C #x9E32 #x9E31 #x9E36 #x9E38 #x9E37 #x9E39 #x9E3A #x9E3E Err bitreich.org 70 i- #x9E41 #x9E42 #x9E44 #x9E46 #x9E47 #x9E48 #x9E49 #x9E4B #x9E4C #x9E4E Err bitreich.org 70 i- #x9E51 #x9E55 #x9E57 #x9E5A #x9E5B #x9E5C #x9E5E #x9E63 #x9E66 #x9E67 Err bitreich.org 70 i- #x9E68 #x9E69 #x9E6A #x9E6B #x9E6C #x9E71 #x9E6D #x9E73 #x7592 #x7594 Err bitreich.org 70 i- #x7596 #x75A0 #x759D #x75AC #x75A3 #x75B3 #x75B4 #x75B8 #x75C4 #x75B1 Err bitreich.org 70 i- #x75B0 #x75C3 #x75C2 #x75D6 #x75CD #x75E3 #x75E8 #x75E6 #x75E4 #x75EB Err bitreich.org 70 i- #x75E7 #x7603 #x75F1 #x75FC #x75FF #x7610 #x7600 #x7605 #x760C #x7617 Err bitreich.org 70 i- #x760A #x7625 #x7618 #x7615 #x7619 #x761B #x763C #x7622 #x7620 #x7640 Err bitreich.org 70 i- #x762D #x7630 #x763F #x7635 #x7643 #x763E #x7633 #x764D #x765E #x7654 Err bitreich.org 70 i- #x765C #x7656 #x766B #x766F #x7FCA #x7AE6 #x7A78 #x7A79 #x7A80 #x7A86 Err bitreich.org 70 i- #x7A88 #x7A95 #x7AA6 #x7AA0 #x7AAC #x7AA8 #x7AAD #x7AB3 #x8864 #x8869 Err bitreich.org 70 i- #x8872 #x887D #x887F #x8882 #x88A2 #x88C6 #x88B7 #x88BC #x88C9 #x88E2 Err bitreich.org 70 i- #x88CE #x88E3 #x88E5 #x88F1 #x891A #x88FC #x88E8 #x88FE #x88F0 #x8921 Err bitreich.org 70 i- #x8919 #x8913 #x891B #x890A #x8934 #x892B #x8936 #x8941 #x8966 #x897B Err bitreich.org 70 i- #x758B #x80E5 #x76B2 #x76B4 #x77DC #x8012 #x8014 #x8016 #x801C #x8020 Err bitreich.org 70 i- #x8022 #x8025 #x8026 #x8027 #x8029 #x8028 #x8031 #x800B #x8035 #x8043 Err bitreich.org 70 i- #x8046 #x804D #x8052 #x8069 #x8071 #x8983 #x9878 #x9880 #x9883 #x9889 Err bitreich.org 70 i- #x988C #x988D #x988F #x9894 #x989A #x989B #x989E #x989F #x98A1 #x98A2 Err bitreich.org 70 i- #x98A5 #x98A6 #x864D #x8654 #x866C #x866E #x867F #x867A #x867C #x867B Err bitreich.org 70 i- #x86A8 #x868D #x868B #x86AC #x869D #x86A7 #x86A3 #x86AA #x8693 #x86A9 Err bitreich.org 70 i- #x86B6 #x86C4 #x86B5 #x86CE #x86B0 #x86BA #x86B1 #x86AF #x86C9 #x86CF Err bitreich.org 70 i- #x86B4 #x86E9 #x86F1 #x86F2 #x86ED #x86F3 #x86D0 #x8713 #x86DE #x86F4 Err bitreich.org 70 i- #x86DF #x86D8 #x86D1 #x8703 #x8707 #x86F8 #x8708 #x870A #x870D #x8709 Err bitreich.org 70 i- #x8723 #x873B #x871E #x8725 #x872E #x871A #x873E #x8748 #x8734 #x8731 Err bitreich.org 70 i- #x8729 #x8737 #x873F #x8782 #x8722 #x877D #x877E #x877B #x8760 #x8770 Err bitreich.org 70 i- #x874C #x876E #x878B #x8753 #x8763 #x877C #x8764 #x8759 #x8765 #x8793 Err bitreich.org 70 i- #x87AF #x87A8 #x87D2 #x87C6 #x8788 #x8785 #x87AD #x8797 #x8783 #x87AB Err bitreich.org 70 i- #x87E5 #x87AC #x87B5 #x87B3 #x87CB #x87D3 #x87BD #x87D1 #x87C0 #x87CA Err bitreich.org 70 i- #x87DB #x87EA #x87E0 #x87EE #x8816 #x8813 #x87FE #x880A #x881B #x8821 Err bitreich.org 70 i- #x8839 #x883C #x7F36 #x7F42 #x7F44 #x7F45 #x8210 #x7AFA #x7AFD #x7B08 Err bitreich.org 70 i- #x7B03 #x7B04 #x7B15 #x7B0A #x7B2B #x7B0F #x7B47 #x7B38 #x7B2A #x7B19 Err bitreich.org 70 i- #x7B2E #x7B31 #x7B20 #x7B25 #x7B24 #x7B33 #x7B3E #x7B1E #x7B58 #x7B5A Err bitreich.org 70 i- #x7B45 #x7B75 #x7B4C #x7B5D #x7B60 #x7B6E #x7B7B #x7B62 #x7B72 #x7B71 Err bitreich.org 70 i- #x7B90 #x7BA6 #x7BA7 #x7BB8 #x7BAC #x7B9D #x7BA8 #x7B85 #x7BAA #x7B9C Err bitreich.org 70 i- #x7BA2 #x7BAB #x7BB4 #x7BD1 #x7BC1 #x7BCC #x7BDD #x7BDA #x7BE5 #x7BE6 Err bitreich.org 70 i- #x7BEA #x7C0C #x7BFE #x7BFC #x7C0F #x7C16 #x7C0B #x7C1F #x7C2A #x7C26 Err bitreich.org 70 i- #x7C38 #x7C41 #x7C40 #x81FE #x8201 #x8202 #x8204 #x81EC #x8844 #x8221 Err bitreich.org 70 i- #x8222 #x8223 #x822D #x822F #x8228 #x822B #x8238 #x823B #x8233 #x8234 Err bitreich.org 70 i- #x823E #x8244 #x8249 #x824B #x824F #x825A #x825F #x8268 #x887E #x8885 Err bitreich.org 70 i- #x8888 #x88D8 #x88DF #x895E #x7F9D #x7F9F #x7FA7 #x7FAF #x7FB0 #x7FB2 Err bitreich.org 70 i- #x7C7C #x6549 #x7C91 #x7C9D #x7C9C #x7C9E #x7CA2 #x7CB2 #x7CBC #x7CBD Err bitreich.org 70 i- #x7CC1 #x7CC7 #x7CCC #x7CCD #x7CC8 #x7CC5 #x7CD7 #x7CE8 #x826E #x66A8 Err bitreich.org 70 i- #x7FBF #x7FCE #x7FD5 #x7FE5 #x7FE1 #x7FE6 #x7FE9 #x7FEE #x7FF3 #x7CF8 Err bitreich.org 70 i- #x7D77 #x7DA6 #x7DAE #x7E47 #x7E9B #x9EB8 #x9EB4 #x8D73 #x8D84 #x8D94 Err bitreich.org 70 i- #x8D91 #x8DB1 #x8D67 #x8D6D #x8C47 #x8C49 #x914A #x9150 #x914E #x914F Err bitreich.org 70 i- #x9164 #x9162 #x9161 #x9170 #x9169 #x916F #x917D #x917E #x9172 #x9174 Err bitreich.org 70 i- #x9179 #x918C #x9185 #x9190 #x918D #x9191 #x91A2 #x91A3 #x91AA #x91AD Err bitreich.org 70 i- #x91AE #x91AF #x91B5 #x91B4 #x91BA #x8C55 #x9E7E #x8DB8 #x8DEB #x8E05 Err bitreich.org 70 i- #x8E59 #x8E69 #x8DB5 #x8DBF #x8DBC #x8DBA #x8DC4 #x8DD6 #x8DD7 #x8DDA Err bitreich.org 70 i- #x8DDE #x8DCE #x8DCF #x8DDB #x8DC6 #x8DEC #x8DF7 #x8DF8 #x8DE3 #x8DF9 Err bitreich.org 70 i- #x8DFB #x8DE4 #x8E09 #x8DFD #x8E14 #x8E1D #x8E1F #x8E2C #x8E2E #x8E23 Err bitreich.org 70 i- #x8E2F #x8E3A #x8E40 #x8E39 #x8E35 #x8E3D #x8E31 #x8E49 #x8E41 #x8E42 Err bitreich.org 70 i- #x8E51 #x8E52 #x8E4A #x8E70 #x8E76 #x8E7C #x8E6F #x8E74 #x8E85 #x8E8F Err bitreich.org 70 i- #x8E94 #x8E90 #x8E9C #x8E9E #x8C78 #x8C82 #x8C8A #x8C85 #x8C98 #x8C94 Err bitreich.org 70 i- #x659B #x89D6 #x89DE #x89DA #x89DC #x89E5 #x89EB #x89EF #x8A3E #x8B26 Err bitreich.org 70 i- #x9753 #x96E9 #x96F3 #x96EF #x9706 #x9701 #x9708 #x970F #x970E #x972A Err bitreich.org 70 i- #x972D #x9730 #x973E #x9F80 #x9F83 #x9F85 #x9F86 #x9F87 #x9F88 #x9F89 Err bitreich.org 70 i- #x9F8A #x9F8C #x9EFE #x9F0B #x9F0D #x96B9 #x96BC #x96BD #x96CE #x96D2 Err bitreich.org 70 i- #x77BF #x96E0 #x928E #x92AE #x92C8 #x933E #x936A #x93CA #x938F #x943E Err bitreich.org 70 i- #x946B #x9C7F #x9C82 #x9C85 #x9C86 #x9C87 #x9C88 #x7A23 #x9C8B #x9C8E Err bitreich.org 70 i- #x9C90 #x9C91 #x9C92 #x9C94 #x9C95 #x9C9A #x9C9B #x9C9E #x9C9F #x9CA0 Err bitreich.org 70 i- #x9CA1 #x9CA2 #x9CA3 #x9CA5 #x9CA6 #x9CA7 #x9CA8 #x9CA9 #x9CAB #x9CAD Err bitreich.org 70 i- #x9CAE #x9CB0 #x9CB1 #x9CB2 #x9CB3 #x9CB4 #x9CB5 #x9CB6 #x9CB7 #x9CBA Err bitreich.org 70 i- #x9CBB #x9CBC #x9CBD #x9CC4 #x9CC5 #x9CC6 #x9CC7 #x9CCA #x9CCB #x9CCC Err bitreich.org 70 i- #x9CCD #x9CCE #x9CCF #x9CD0 #x9CD3 #x9CD4 #x9CD5 #x9CD7 #x9CD8 #x9CD9 Err bitreich.org 70 i- #x9CDC #x9CDD #x9CDF #x9CE2 #x977C #x9785 #x9791 #x9792 #x9794 #x97AF Err bitreich.org 70 i- #x97AB #x97A3 #x97B2 #x97B4 #x9AB1 #x9AB0 #x9AB7 #x9E58 #x9AB6 #x9ABA Err bitreich.org 70 i- #x9ABC #x9AC1 #x9AC0 #x9AC5 #x9AC2 #x9ACB #x9ACC #x9AD1 #x9B45 #x9B43 Err bitreich.org 70 i- #x9B47 #x9B49 #x9B48 #x9B4D #x9B51 #x98E8 #x990D #x992E #x9955 #x9954 Err bitreich.org 70 i- #x9ADF #x9AE1 #x9AE6 #x9AEF #x9AEB #x9AFB #x9AED #x9AF9 #x9B08 #x9B0F Err bitreich.org 70 i- #x9B13 #x9B1F #x9B23 #x9EBD #x9EBE #x7E3B #x9E82 #x9E87 #x9E88 #x9E8B Err bitreich.org 70 i- #x9E92 #x93D6 #x9E9D #x9E9F #x9EDB #x9EDC #x9EDD #x9EE0 #x9EDF #x9EE2 Err bitreich.org 70 i- #x9EE9 #x9EE7 #x9EE5 #x9EEA #x9EEF #x9F22 #x9F2C #x9F2F #x9F39 #x9F37 Err bitreich.org 70 i- #x9F3D #x9F3E #x9F44 #x4E02 #x4E04 #x4E05 #x4E06 #x4E0F #x4E12 #x4E17 Err bitreich.org 70 i- #x4E1F #x4E20 #x4E21 #x4E23 #x4E26 #x4E29 #x4E2E #x4E2F #x4E31 #x4E33 Err bitreich.org 70 i- #x4E35 #x4E37 #x4E3C #x4E40 #x4E41 #x4E42 #x4E44 #x4E46 #x4E4A #x4E51 Err bitreich.org 70 i- #x4E55 #x4E57 #x4E5A #x4E5B #x4E62 #x4E63 #x4E64 #x4E65 #x4E67 #x4E68 Err bitreich.org 70 i- #x4E6A #x4E6B #x4E6C #x4E6D #x4E6E #x4E6F #x4E72 #x4E74 #x4E75 #x4E76 Err bitreich.org 70 i- #x4E77 #x4E78 #x4E79 #x4E7A #x4E7B #x4E7C #x4E7D #x4E7F #x4E80 #x4E81 Err bitreich.org 70 i- #x4E82 #x4E83 #x4E84 #x4E85 #x4E87 #x4E8A #x4E90 #x4E96 #x4E97 #x4E99 Err bitreich.org 70 i- #x4E9C #x4E9D #x4E9E #x4EA3 #x4EAA #x4EAF #x4EB0 #x4EB1 #x4EB4 #x4EB6 Err bitreich.org 70 i- #x4EB7 #x4EB8 #x4EB9 #x4EBC #x4EBD #x4EBE #x4EC8 #x4ECC #x4ECF #x4ED0 Err bitreich.org 70 i- #x4ED2 #x4EDA #x4EDB #x4EDC #x4EE0 #x4EE2 #x4EE6 #x4EE7 #x4EE9 #x4EED Err bitreich.org 70 i- #x4EEE #x4EEF #x4EF1 #x4EF4 #x4EF8 #x4EF9 #x4EFA #x4EFC #x4EFE #x4F00 Err bitreich.org 70 i- #x4F02 #x4F03 #x4F04 #x4F05 #x4F06 #x4F07 #x4F08 #x4F0B #x4F0C #x4F12 Err bitreich.org 70 i- #x4F13 #x4F14 #x4F15 #x4F16 #x4F1C #x4F1D #x4F21 #x4F23 #x4F28 #x4F29 Err bitreich.org 70 i- #x4F2C #x4F2D #x4F2E #x4F31 #x4F33 #x4F35 #x4F37 #x4F39 #x4F3B #x4F3E Err bitreich.org 70 i- #x4F3F #x4F40 #x4F41 #x4F42 #x4F44 #x4F45 #x4F47 #x4F48 #x4F49 #x4F4A Err bitreich.org 70 i- #x4F4B #x4F4C #x4F52 #x4F54 #x4F56 #x4F61 #x4F62 #x4F66 #x4F68 #x4F6A Err bitreich.org 70 i- #x4F6B #x4F6D #x4F6E #x4F71 #x4F72 #x4F75 #x4F77 #x4F78 #x4F79 #x4F7A Err bitreich.org 70 i- #x4F7D #x4F80 #x4F81 #x4F82 #x4F85 #x4F86 #x4F87 #x4F8A #x4F8C #x4F8E Err bitreich.org 70 i- #x4F90 #x4F92 #x4F93 #x4F95 #x4F96 #x4F98 #x4F99 #x4F9A #x4F9C #x4F9E Err bitreich.org 70 i- #x4F9F #x4FA1 #x4FA2 #x4FA4 #x4FAB #x4FAD #x4FB0 #x4FB1 #x4FB2 #x4FB3 Err bitreich.org 70 i- #x4FB4 #x4FB6 #x4FB7 #x4FB8 #x4FB9 #x4FBA #x4FBB #x4FBC #x4FBD #x4FBE Err bitreich.org 70 i- #x4FC0 #x4FC1 #x4FC2 #x4FC6 #x4FC7 #x4FC8 #x4FC9 #x4FCB #x4FCC #x4FCD Err bitreich.org 70 i- #x4FD2 #x4FD3 #x4FD4 #x4FD5 #x4FD6 #x4FD9 #x4FDB #x4FE0 #x4FE2 #x4FE4 Err bitreich.org 70 i- #x4FE5 #x4FE7 #x4FEB #x4FEC #x4FF0 #x4FF2 #x4FF4 #x4FF5 #x4FF6 #x4FF7 Err bitreich.org 70 i- #x4FF9 #x4FFB #x4FFC #x4FFD #x4FFF #x5000 #x5001 #x5002 #x5003 #x5004 Err bitreich.org 70 i- #x5005 #x5006 #x5007 #x5008 #x5009 #x500A #x500B #x500E #x5010 #x5011 Err bitreich.org 70 i- #x5013 #x5015 #x5016 #x5017 #x501B #x501D #x501E #x5020 #x5022 #x5023 Err bitreich.org 70 i- #x5024 #x5027 #x502B #x502F #x5030 #x5031 #x5032 #x5033 #x5034 #x5035 Err bitreich.org 70 i- #x5036 #x5037 #x5038 #x5039 #x503B #x503D #x503F #x5040 #x5041 #x5042 Err bitreich.org 70 i- #x5044 #x5045 #x5046 #x5049 #x504A #x504B #x504D #x5050 #x5051 #x5052 Err bitreich.org 70 i- #x5053 #x5054 #x5056 #x5057 #x5058 #x5059 #x505B #x505D #x505E #x505F Err bitreich.org 70 i- #x5060 #x5061 #x5062 #x5063 #x5064 #x5066 #x5067 #x5068 #x5069 #x506A Err bitreich.org 70 i- #x506B #x506D #x506E #x506F #x5070 #x5071 #x5072 #x5073 #x5074 #x5075 Err bitreich.org 70 i- #x5078 #x5079 #x507A #x507C #x507D #x5081 #x5082 #x5083 #x5084 #x5086 Err bitreich.org 70 i- #x5087 #x5089 #x508A #x508B #x508C #x508E #x508F #x5090 #x5091 #x5092 Err bitreich.org 70 i- #x5093 #x5094 #x5095 #x5096 #x5097 #x5098 #x5099 #x509A #x509B #x509C Err bitreich.org 70 i- #x509D #x509E #x509F #x50A0 #x50A1 #x50A2 #x50A4 #x50A6 #x50AA #x50AB Err bitreich.org 70 i- #x50AD #x50AE #x50AF #x50B0 #x50B1 #x50B3 #x50B4 #x50B5 #x50B6 #x50B7 Err bitreich.org 70 i- #x50B8 #x50B9 #x50BC #x50BD #x50BE #x50BF #x50C0 #x50C1 #x50C2 #x50C3 Err bitreich.org 70 i- #x50C4 #x50C5 #x50C6 #x50C7 #x50C8 #x50C9 #x50CA #x50CB #x50CC #x50CD Err bitreich.org 70 i- #x50CE #x50D0 #x50D1 #x50D2 #x50D3 #x50D4 #x50D5 #x50D7 #x50D8 #x50D9 Err bitreich.org 70 i- #x50DB #x50DC #x50DD #x50DE #x50DF #x50E0 #x50E1 #x50E2 #x50E3 #x50E4 Err bitreich.org 70 i- #x50E5 #x50E8 #x50E9 #x50EA #x50EB #x50EF #x50F0 #x50F1 #x50F2 #x50F4 Err bitreich.org 70 i- #x50F6 #x50F7 #x50F8 #x50F9 #x50FA #x50FC #x50FD #x50FE #x50FF #x5100 Err bitreich.org 70 i- #x5101 #x5102 #x5103 #x5104 #x5105 #x5108 #x5109 #x510A #x510C #x510D Err bitreich.org 70 i- #x510E #x510F #x5110 #x5111 #x5113 #x5114 #x5115 #x5116 #x5117 #x5118 Err bitreich.org 70 i- #x5119 #x511A #x511B #x511C #x511D #x511E #x511F #x5120 #x5122 #x5123 Err bitreich.org 70 i- #x5124 #x5125 #x5126 #x5127 #x5128 #x5129 #x512A #x512B #x512C #x512D Err bitreich.org 70 i- #x512E #x512F #x5130 #x5131 #x5132 #x5133 #x5134 #x5135 #x5136 #x5137 Err bitreich.org 70 i- #x5138 #x5139 #x513A #x513B #x513C #x513D #x513E #x5142 #x5147 #x514A Err bitreich.org 70 i- #x514C #x514E #x514F #x5150 #x5152 #x5153 #x5157 #x5158 #x5159 #x515B Err bitreich.org 70 i- #x515D #x515E #x515F #x5160 #x5161 #x5163 #x5164 #x5166 #x5167 #x5169 Err bitreich.org 70 i- #x516A #x516F #x5172 #x517A #x517E #x517F #x5183 #x5184 #x5186 #x5187 Err bitreich.org 70 i- #x518A #x518B #x518E #x518F #x5190 #x5191 #x5193 #x5194 #x5198 #x519A Err bitreich.org 70 i- #x519D #x519E #x519F #x51A1 #x51A3 #x51A6 #x51A7 #x51A8 #x51A9 #x51AA Err bitreich.org 70 i- #x51AD #x51AE #x51B4 #x51B8 #x51B9 #x51BA #x51BE #x51BF #x51C1 #x51C2 Err bitreich.org 70 i- #x51C3 #x51C5 #x51C8 #x51CA #x51CD #x51CE #x51D0 #x51D2 #x51D3 #x51D4 Err bitreich.org 70 i- #x51D5 #x51D6 #x51D7 #x51D8 #x51D9 #x51DA #x51DC #x51DE #x51DF #x51E2 Err bitreich.org 70 i- #x51E3 #x51E5 #x51E6 #x51E7 #x51E8 #x51E9 #x51EA #x51EC #x51EE #x51F1 Err bitreich.org 70 i- #x51F2 #x51F4 #x51F7 #x51FE #x5204 #x5205 #x5209 #x520B #x520C #x520F Err bitreich.org 70 i- #x5210 #x5213 #x5214 #x5215 #x521C #x521E #x521F #x5221 #x5222 #x5223 Err bitreich.org 70 i- #x5225 #x5226 #x5227 #x522A #x522C #x522F #x5231 #x5232 #x5234 #x5235 Err bitreich.org 70 i- #x523C #x523E #x5244 #x5245 #x5246 #x5247 #x5248 #x5249 #x524B #x524E Err bitreich.org 70 i- #x524F #x5252 #x5253 #x5255 #x5257 #x5258 #x5259 #x525A #x525B #x525D Err bitreich.org 70 i- #x525F #x5260 #x5262 #x5263 #x5264 #x5266 #x5268 #x526B #x526C #x526D Err bitreich.org 70 i- #x526E #x5270 #x5271 #x5273 #x5274 #x5275 #x5276 #x5277 #x5278 #x5279 Err bitreich.org 70 i- #x527A #x527B #x527C #x527E #x5280 #x5283 #x5284 #x5285 #x5286 #x5287 Err bitreich.org 70 i- #x5289 #x528A #x528B #x528C #x528D #x528E #x528F #x5291 #x5292 #x5294 Err bitreich.org 70 i- #x5295 #x5296 #x5297 #x5298 #x5299 #x529A #x529C #x52A4 #x52A5 #x52A6 Err bitreich.org 70 i- #x52A7 #x52AE #x52AF #x52B0 #x52B4 #x52B5 #x52B6 #x52B7 #x52B8 #x52B9 Err bitreich.org 70 i- #x52BA #x52BB #x52BC #x52BD #x52C0 #x52C1 #x52C2 #x52C4 #x52C5 #x52C6 Err bitreich.org 70 i- #x52C8 #x52CA #x52CC #x52CD #x52CE #x52CF #x52D1 #x52D3 #x52D4 #x52D5 Err bitreich.org 70 i- #x52D7 #x52D9 #x52DA #x52DB #x52DC #x52DD #x52DE #x52E0 #x52E1 #x52E2 Err bitreich.org 70 i- #x52E3 #x52E5 #x52E6 #x52E7 #x52E8 #x52E9 #x52EA #x52EB #x52EC #x52ED Err bitreich.org 70 i- #x52EE #x52EF #x52F1 #x52F2 #x52F3 #x52F4 #x52F5 #x52F6 #x52F7 #x52F8 Err bitreich.org 70 i- #x52FB #x52FC #x52FD #x5301 #x5302 #x5303 #x5304 #x5307 #x5309 #x530A Err bitreich.org 70 i- #x530B #x530C #x530E #x5311 #x5312 #x5313 #x5314 #x5318 #x531B #x531C Err bitreich.org 70 i- #x531E #x531F #x5322 #x5324 #x5325 #x5327 #x5328 #x5329 #x532B #x532C Err bitreich.org 70 i- #x532D #x532F #x5330 #x5331 #x5332 #x5333 #x5334 #x5335 #x5336 #x5337 Err bitreich.org 70 i- #x5338 #x533C #x533D #x5340 #x5342 #x5344 #x5346 #x534B #x534C #x534D Err bitreich.org 70 i- #x5350 #x5354 #x5358 #x5359 #x535B #x535D #x5365 #x5368 #x536A #x536C Err bitreich.org 70 i- #x536D #x5372 #x5376 #x5379 #x537B #x537C #x537D #x537E #x5380 #x5381 Err bitreich.org 70 i- #x5383 #x5387 #x5388 #x538A #x538E #x538F #x5390 #x5391 #x5392 #x5393 Err bitreich.org 70 i- #x5394 #x5396 #x5397 #x5399 #x539B #x539C #x539E #x53A0 #x53A1 #x53A4 Err bitreich.org 70 i- #x53A7 #x53AA #x53AB #x53AC #x53AD #x53AF #x53B0 #x53B1 #x53B2 #x53B3 Err bitreich.org 70 i- #x53B4 #x53B5 #x53B7 #x53B8 #x53B9 #x53BA #x53BC #x53BD #x53BE #x53C0 Err bitreich.org 70 i- #x53C3 #x53C4 #x53C5 #x53C6 #x53C7 #x53CE #x53CF #x53D0 #x53D2 #x53D3 Err bitreich.org 70 i- #x53D5 #x53DA #x53DC #x53DD #x53DE #x53E1 #x53E2 #x53E7 #x53F4 #x53FA Err bitreich.org 70 i- #x53FE #x53FF #x5400 #x5402 #x5405 #x5407 #x540B #x5414 #x5418 #x5419 Err bitreich.org 70 i- #x541A #x541C #x5422 #x5424 #x5425 #x542A #x5430 #x5433 #x5436 #x5437 Err bitreich.org 70 i- #x543A #x543D #x543F #x5441 #x5442 #x5444 #x5445 #x5447 #x5449 #x544C Err bitreich.org 70 i- #x544D #x544E #x544F #x5451 #x545A #x545D #x545E #x545F #x5460 #x5461 Err bitreich.org 70 i- #x5463 #x5465 #x5467 #x5469 #x546A #x546B #x546C #x546D #x546E #x546F Err bitreich.org 70 i- #x5470 #x5474 #x5479 #x547A #x547E #x547F #x5481 #x5483 #x5485 #x5487 Err bitreich.org 70 i- #x5488 #x5489 #x548A #x548D #x5491 #x5493 #x5497 #x5498 #x549C #x549E Err bitreich.org 70 i- #x549F #x54A0 #x54A1 #x54A2 #x54A5 #x54AE #x54B0 #x54B2 #x54B5 #x54B6 Err bitreich.org 70 i- #x54B7 #x54B9 #x54BA #x54BC #x54BE #x54C3 #x54C5 #x54CA #x54CB #x54D6 Err bitreich.org 70 i- #x54D8 #x54DB #x54E0 #x54E1 #x54E2 #x54E3 #x54E4 #x54EB #x54EC #x54EF Err bitreich.org 70 i- #x54F0 #x54F1 #x54F4 #x54F5 #x54F6 #x54F7 #x54F8 #x54F9 #x54FB #x54FE Err bitreich.org 70 i- #x5500 #x5502 #x5503 #x5504 #x5505 #x5508 #x550A #x550B #x550C #x550D Err bitreich.org 70 i- #x550E #x5512 #x5513 #x5515 #x5516 #x5517 #x5518 #x5519 #x551A #x551C Err bitreich.org 70 i- #x551D #x551E #x551F #x5521 #x5525 #x5526 #x5528 #x5529 #x552B #x552D Err bitreich.org 70 i- #x5532 #x5534 #x5535 #x5536 #x5538 #x5539 #x553A #x553B #x553D #x5540 Err bitreich.org 70 i- #x5542 #x5545 #x5547 #x5548 #x554B #x554C #x554D #x554E #x554F #x5551 Err bitreich.org 70 i- #x5552 #x5553 #x5554 #x5557 #x5558 #x5559 #x555A #x555B #x555D #x555E Err bitreich.org 70 i- #x555F #x5560 #x5562 #x5563 #x5568 #x5569 #x556B #x556F #x5570 #x5571 Err bitreich.org 70 i- #x5572 #x5573 #x5574 #x5579 #x557A #x557D #x557F #x5585 #x5586 #x558C Err bitreich.org 70 i- #x558D #x558E #x5590 #x5592 #x5593 #x5595 #x5596 #x5597 #x559A #x559B Err bitreich.org 70 i- #x559E #x55A0 #x55A1 #x55A2 #x55A3 #x55A4 #x55A5 #x55A6 #x55A8 #x55A9 Err bitreich.org 70 i- #x55AA #x55AB #x55AC #x55AD #x55AE #x55AF #x55B0 #x55B2 #x55B4 #x55B6 Err bitreich.org 70 i- #x55B8 #x55BA #x55BC #x55BF #x55C0 #x55C1 #x55C2 #x55C3 #x55C6 #x55C7 Err bitreich.org 70 i- #x55C8 #x55CA #x55CB #x55CE #x55CF #x55D0 #x55D5 #x55D7 #x55D8 #x55D9 Err bitreich.org 70 i- #x55DA #x55DB #x55DE #x55E0 #x55E2 #x55E7 #x55E9 #x55ED #x55EE #x55F0 Err bitreich.org 70 i- #x55F1 #x55F4 #x55F6 #x55F8 #x55F9 #x55FA #x55FB #x55FC #x55FF #x5602 Err bitreich.org 70 i- #x5603 #x5604 #x5605 #x5606 #x5607 #x560A #x560B #x560D #x5610 #x5611 Err bitreich.org 70 i- #x5612 #x5613 #x5614 #x5615 #x5616 #x5617 #x5619 #x561A #x561C #x561D Err bitreich.org 70 i- #x5620 #x5621 #x5622 #x5625 #x5626 #x5628 #x5629 #x562A #x562B #x562E Err bitreich.org 70 i- #x562F #x5630 #x5633 #x5635 #x5637 #x5638 #x563A #x563C #x563D #x563E Err bitreich.org 70 i- #x5640 #x5641 #x5642 #x5643 #x5644 #x5645 #x5646 #x5647 #x5648 #x5649 Err bitreich.org 70 i- #x564A #x564B #x564F #x5650 #x5651 #x5652 #x5653 #x5655 #x5656 #x565A Err bitreich.org 70 i- #x565B #x565D #x565E #x565F #x5660 #x5661 #x5663 #x5665 #x5666 #x5667 Err bitreich.org 70 i- #x566D #x566E #x566F #x5670 #x5672 #x5673 #x5674 #x5675 #x5677 #x5678 Err bitreich.org 70 i- #x5679 #x567A #x567D #x567E #x567F #x5680 #x5681 #x5682 #x5683 #x5684 Err bitreich.org 70 i- #x5687 #x5688 #x5689 #x568A #x568B #x568C #x568D #x5690 #x5691 #x5692 Err bitreich.org 70 i- #x5694 #x5695 #x5696 #x5697 #x5698 #x5699 #x569A #x569B #x569C #x569D Err bitreich.org 70 i- #x569E #x569F #x56A0 #x56A1 #x56A2 #x56A4 #x56A5 #x56A6 #x56A7 #x56A8 Err bitreich.org 70 i- #x56A9 #x56AA #x56AB #x56AC #x56AD #x56AE #x56B0 #x56B1 #x56B2 #x56B3 Err bitreich.org 70 i- #x56B4 #x56B5 #x56B6 #x56B8 #x56B9 #x56BA #x56BB #x56BD #x56BE #x56BF Err bitreich.org 70 i- #x56C0 #x56C1 #x56C2 #x56C3 #x56C4 #x56C5 #x56C6 #x56C7 #x56C8 #x56C9 Err bitreich.org 70 i- #x56CB #x56CC #x56CD #x56CE #x56CF #x56D0 #x56D1 #x56D2 #x56D3 #x56D5 Err bitreich.org 70 i- #x56D6 #x56D8 #x56D9 #x56DC #x56E3 #x56E5 #x56E6 #x56E7 #x56E8 #x56E9 Err bitreich.org 70 i- #x56EA #x56EC #x56EE #x56EF #x56F2 #x56F3 #x56F6 #x56F7 #x56F8 #x56FB Err bitreich.org 70 i- #x56FC #x5700 #x5701 #x5702 #x5705 #x5707 #x570B #x570C #x570D #x570E Err bitreich.org 70 i- #x570F #x5710 #x5711 #x5712 #x5713 #x5714 #x5715 #x5716 #x5717 #x5718 Err bitreich.org 70 i- #x5719 #x571A #x571B #x571D #x571E #x5720 #x5721 #x5722 #x5724 #x5725 Err bitreich.org 70 i- #x5726 #x5727 #x572B #x5731 #x5732 #x5734 #x5735 #x5736 #x5737 #x5738 Err bitreich.org 70 i- #x573C #x573D #x573F #x5741 #x5743 #x5744 #x5745 #x5746 #x5748 #x5749 Err bitreich.org 70 i- #x574B #x5752 #x5753 #x5754 #x5755 #x5756 #x5758 #x5759 #x5762 #x5763 Err bitreich.org 70 i- #x5765 #x5767 #x576C #x576E #x5770 #x5771 #x5772 #x5774 #x5775 #x5778 Err bitreich.org 70 i- #x5779 #x577A #x577D #x577E #x577F #x5780 #x5781 #x5787 #x5788 #x5789 Err bitreich.org 70 i- #x578A #x578D #x578E #x578F #x5790 #x5791 #x5794 #x5795 #x5796 #x5797 Err bitreich.org 70 i- #x5798 #x5799 #x579A #x579C #x579D #x579E #x579F #x57A5 #x57A8 #x57AA Err bitreich.org 70 i- #x57AC #x57AF #x57B0 #x57B1 #x57B3 #x57B5 #x57B6 #x57B7 #x57B9 #x57BA Err bitreich.org 70 i- #x57BB #x57BC #x57BD #x57BE #x57BF #x57C0 #x57C1 #x57C4 #x57C5 #x57C6 Err bitreich.org 70 i- #x57C7 #x57C8 #x57C9 #x57CA #x57CC #x57CD #x57D0 #x57D1 #x57D3 #x57D6 Err bitreich.org 70 i- #x57D7 #x57DB #x57DC #x57DE #x57E1 #x57E2 #x57E3 #x57E5 #x57E6 #x57E7 Err bitreich.org 70 i- #x57E8 #x57E9 #x57EA #x57EB #x57EC #x57EE #x57F0 #x57F1 #x57F2 #x57F3 Err bitreich.org 70 i- #x57F5 #x57F6 #x57F7 #x57FB #x57FC #x57FE #x57FF #x5801 #x5803 #x5804 Err bitreich.org 70 i- #x5805 #x5808 #x5809 #x580A #x580C #x580E #x580F #x5810 #x5812 #x5813 Err bitreich.org 70 i- #x5814 #x5816 #x5817 #x5818 #x581A #x581B #x581C #x581D #x581F #x5822 Err bitreich.org 70 i- #x5823 #x5825 #x5826 #x5827 #x5828 #x5829 #x582B #x582C #x582D #x582E Err bitreich.org 70 i- #x582F #x5831 #x5832 #x5833 #x5834 #x5836 #x5837 #x5838 #x5839 #x583A Err bitreich.org 70 i- #x583B #x583C #x583D #x583E #x583F #x5840 #x5841 #x5842 #x5843 #x5845 Err bitreich.org 70 i- #x5846 #x5847 #x5848 #x5849 #x584A #x584B #x584E #x584F #x5850 #x5852 Err bitreich.org 70 i- #x5853 #x5855 #x5856 #x5857 #x5859 #x585A #x585B #x585C #x585D #x585F Err bitreich.org 70 i- #x5860 #x5861 #x5862 #x5863 #x5864 #x5866 #x5867 #x5868 #x5869 #x586A Err bitreich.org 70 i- #x586D #x586E #x586F #x5870 #x5871 #x5872 #x5873 #x5874 #x5875 #x5876 Err bitreich.org 70 i- #x5877 #x5878 #x5879 #x587A #x587B #x587C #x587D #x587F #x5882 #x5884 Err bitreich.org 70 i- #x5886 #x5887 #x5888 #x588A #x588B #x588C #x588D #x588E #x588F #x5890 Err bitreich.org 70 i- #x5891 #x5894 #x5895 #x5896 #x5897 #x5898 #x589B #x589C #x589D #x58A0 Err bitreich.org 70 i- #x58A1 #x58A2 #x58A3 #x58A4 #x58A5 #x58A6 #x58A7 #x58AA #x58AB #x58AC Err bitreich.org 70 i- #x58AD #x58AE #x58AF #x58B0 #x58B1 #x58B2 #x58B3 #x58B4 #x58B5 #x58B6 Err bitreich.org 70 i- #x58B7 #x58B8 #x58B9 #x58BA #x58BB #x58BD #x58BE #x58BF #x58C0 #x58C2 Err bitreich.org 70 i- #x58C3 #x58C4 #x58C6 #x58C7 #x58C8 #x58C9 #x58CA #x58CB #x58CC #x58CD Err bitreich.org 70 i- #x58CE #x58CF #x58D0 #x58D2 #x58D3 #x58D4 #x58D6 #x58D7 #x58D8 #x58D9 Err bitreich.org 70 i- #x58DA #x58DB #x58DC #x58DD #x58DE #x58DF #x58E0 #x58E1 #x58E2 #x58E3 Err bitreich.org 70 i- #x58E5 #x58E6 #x58E7 #x58E8 #x58E9 #x58EA #x58ED #x58EF #x58F1 #x58F2 Err bitreich.org 70 i- #x58F4 #x58F5 #x58F7 #x58F8 #x58FA #x58FB #x58FC #x58FD #x58FE #x58FF Err bitreich.org 70 i- #x5900 #x5901 #x5903 #x5905 #x5906 #x5908 #x5909 #x590A #x590B #x590C Err bitreich.org 70 i- #x590E #x5910 #x5911 #x5912 #x5913 #x5917 #x5918 #x591B #x591D #x591E Err bitreich.org 70 i- #x5920 #x5921 #x5922 #x5923 #x5926 #x5928 #x592C #x5930 #x5932 #x5933 Err bitreich.org 70 i- #x5935 #x5936 #x593B #x593D #x593E #x593F #x5940 #x5943 #x5945 #x5946 Err bitreich.org 70 i- #x594A #x594C #x594D #x5950 #x5952 #x5953 #x5959 #x595B #x595C #x595D Err bitreich.org 70 i- #x595E #x595F #x5961 #x5963 #x5964 #x5966 #x5967 #x5968 #x5969 #x596A Err bitreich.org 70 i- #x596B #x596C #x596D #x596E #x596F #x5970 #x5971 #x5972 #x5975 #x5977 Err bitreich.org 70 i- #x597A #x597B #x597C #x597E #x597F #x5980 #x5985 #x5989 #x598B #x598C Err bitreich.org 70 i- #x598E #x598F #x5990 #x5991 #x5994 #x5995 #x5998 #x599A #x599B #x599C Err bitreich.org 70 i- #x599D #x599F #x59A0 #x59A1 #x59A2 #x59A6 #x59A7 #x59AC #x59AD #x59B0 Err bitreich.org 70 i- #x59B1 #x59B3 #x59B4 #x59B5 #x59B6 #x59B7 #x59B8 #x59BA #x59BC #x59BD Err bitreich.org 70 i- #x59BF #x59C0 #x59C1 #x59C2 #x59C3 #x59C4 #x59C5 #x59C7 #x59C8 #x59C9 Err bitreich.org 70 i- #x59CC #x59CD #x59CE #x59CF #x59D5 #x59D6 #x59D9 #x59DB #x59DE #x59DF Err bitreich.org 70 i- #x59E0 #x59E1 #x59E2 #x59E4 #x59E6 #x59E7 #x59E9 #x59EA #x59EB #x59ED Err bitreich.org 70 i- #x59EE #x59EF #x59F0 #x59F1 #x59F2 #x59F3 #x59F4 #x59F5 #x59F6 #x59F7 Err bitreich.org 70 i- #x59F8 #x59FA #x59FC #x59FD #x59FE #x5A00 #x5A02 #x5A0A #x5A0B #x5A0D Err bitreich.org 70 i- #x5A0E #x5A0F #x5A10 #x5A12 #x5A14 #x5A15 #x5A16 #x5A17 #x5A19 #x5A1A Err bitreich.org 70 i- #x5A1B #x5A1D #x5A1E #x5A21 #x5A22 #x5A24 #x5A26 #x5A27 #x5A28 #x5A2A Err bitreich.org 70 i- #x5A2B #x5A2C #x5A2D #x5A2E #x5A2F #x5A30 #x5A33 #x5A35 #x5A37 #x5A38 Err bitreich.org 70 i- #x5A39 #x5A3A #x5A3B #x5A3D #x5A3E #x5A3F #x5A41 #x5A42 #x5A43 #x5A44 Err bitreich.org 70 i- #x5A45 #x5A47 #x5A48 #x5A4B #x5A4C #x5A4D #x5A4E #x5A4F #x5A50 #x5A51 Err bitreich.org 70 i- #x5A52 #x5A53 #x5A54 #x5A56 #x5A57 #x5A58 #x5A59 #x5A5B #x5A5C #x5A5D Err bitreich.org 70 i- #x5A5E #x5A5F #x5A60 #x5A61 #x5A63 #x5A64 #x5A65 #x5A66 #x5A68 #x5A69 Err bitreich.org 70 i- #x5A6B #x5A6C #x5A6D #x5A6E #x5A6F #x5A70 #x5A71 #x5A72 #x5A73 #x5A78 Err bitreich.org 70 i- #x5A79 #x5A7B #x5A7C #x5A7D #x5A7E #x5A80 #x5A81 #x5A82 #x5A83 #x5A84 Err bitreich.org 70 i- #x5A85 #x5A86 #x5A87 #x5A88 #x5A89 #x5A8A #x5A8B #x5A8C #x5A8D #x5A8E Err bitreich.org 70 i- #x5A8F #x5A90 #x5A91 #x5A93 #x5A94 #x5A95 #x5A96 #x5A97 #x5A98 #x5A99 Err bitreich.org 70 i- #x5A9C #x5A9D #x5A9E #x5A9F #x5AA0 #x5AA1 #x5AA2 #x5AA3 #x5AA4 #x5AA5 Err bitreich.org 70 i- #x5AA6 #x5AA7 #x5AA8 #x5AA9 #x5AAB #x5AAC #x5AAD #x5AAE #x5AAF #x5AB0 Err bitreich.org 70 i- #x5AB1 #x5AB4 #x5AB6 #x5AB7 #x5AB9 #x5ABA #x5ABB #x5ABC #x5ABD #x5ABF Err bitreich.org 70 i- #x5AC0 #x5AC3 #x5AC4 #x5AC5 #x5AC6 #x5AC7 #x5AC8 #x5ACA #x5ACB #x5ACD Err bitreich.org 70 i- #x5ACE #x5ACF #x5AD0 #x5AD1 #x5AD3 #x5AD5 #x5AD7 #x5AD9 #x5ADA #x5ADB Err bitreich.org 70 i- #x5ADD #x5ADE #x5ADF #x5AE2 #x5AE4 #x5AE5 #x5AE7 #x5AE8 #x5AEA #x5AEC Err bitreich.org 70 i- #x5AED #x5AEE #x5AEF #x5AF0 #x5AF2 #x5AF3 #x5AF4 #x5AF5 #x5AF6 #x5AF7 Err bitreich.org 70 i- #x5AF8 #x5AF9 #x5AFA #x5AFB #x5AFC #x5AFD #x5AFE #x5AFF #x5B00 #x5B01 Err bitreich.org 70 i- #x5B02 #x5B03 #x5B04 #x5B05 #x5B06 #x5B07 #x5B08 #x5B0A #x5B0B #x5B0C Err bitreich.org 70 i- #x5B0D #x5B0E #x5B0F #x5B10 #x5B11 #x5B12 #x5B13 #x5B14 #x5B15 #x5B18 Err bitreich.org 70 i- #x5B19 #x5B1A #x5B1B #x5B1C #x5B1D #x5B1E #x5B1F #x5B20 #x5B21 #x5B22 Err bitreich.org 70 i- #x5B23 #x5B24 #x5B25 #x5B26 #x5B27 #x5B28 #x5B29 #x5B2A #x5B2B #x5B2C Err bitreich.org 70 i- #x5B2D #x5B2E #x5B2F #x5B30 #x5B31 #x5B33 #x5B35 #x5B36 #x5B38 #x5B39 Err bitreich.org 70 i- #x5B3A #x5B3B #x5B3C #x5B3D #x5B3E #x5B3F #x5B41 #x5B42 #x5B43 #x5B44 Err bitreich.org 70 i- #x5B45 #x5B46 #x5B47 #x5B48 #x5B49 #x5B4A #x5B4B #x5B4C #x5B4D #x5B4E Err bitreich.org 70 i- #x5B4F #x5B52 #x5B56 #x5B5E #x5B60 #x5B61 #x5B67 #x5B68 #x5B6B #x5B6D Err bitreich.org 70 i- #x5B6E #x5B6F #x5B72 #x5B74 #x5B76 #x5B77 #x5B78 #x5B79 #x5B7B #x5B7C Err bitreich.org 70 i- #x5B7E #x5B7F #x5B82 #x5B86 #x5B8A #x5B8D #x5B8E #x5B90 #x5B91 #x5B92 Err bitreich.org 70 i- #x5B94 #x5B96 #x5B9F #x5BA7 #x5BA8 #x5BA9 #x5BAC #x5BAD #x5BAE #x5BAF Err bitreich.org 70 i- #x5BB1 #x5BB2 #x5BB7 #x5BBA #x5BBB #x5BBC #x5BC0 #x5BC1 #x5BC3 #x5BC8 Err bitreich.org 70 i- #x5BC9 #x5BCA #x5BCB #x5BCD #x5BCE #x5BCF #x5BD1 #x5BD4 #x5BD5 #x5BD6 Err bitreich.org 70 i- #x5BD7 #x5BD8 #x5BD9 #x5BDA #x5BDB #x5BDC #x5BE0 #x5BE2 #x5BE3 #x5BE6 Err bitreich.org 70 i- #x5BE7 #x5BE9 #x5BEA #x5BEB #x5BEC #x5BED #x5BEF #x5BF1 #x5BF2 #x5BF3 Err bitreich.org 70 i- #x5BF4 #x5BF5 #x5BF6 #x5BF7 #x5BFD #x5BFE #x5C00 #x5C02 #x5C03 #x5C05 Err bitreich.org 70 i- #x5C07 #x5C08 #x5C0B #x5C0C #x5C0D #x5C0E #x5C10 #x5C12 #x5C13 #x5C17 Err bitreich.org 70 i- #x5C19 #x5C1B #x5C1E #x5C1F #x5C20 #x5C21 #x5C23 #x5C26 #x5C28 #x5C29 Err bitreich.org 70 i- #x5C2A #x5C2B #x5C2D #x5C2E #x5C2F #x5C30 #x5C32 #x5C33 #x5C35 #x5C36 Err bitreich.org 70 i- #x5C37 #x5C43 #x5C44 #x5C46 #x5C47 #x5C4C #x5C4D #x5C52 #x5C53 #x5C54 Err bitreich.org 70 i- #x5C56 #x5C57 #x5C58 #x5C5A #x5C5B #x5C5C #x5C5D #x5C5F #x5C62 #x5C64 Err bitreich.org 70 i- #x5C67 #x5C68 #x5C69 #x5C6A #x5C6B #x5C6C #x5C6D #x5C70 #x5C72 #x5C73 Err bitreich.org 70 i- #x5C74 #x5C75 #x5C76 #x5C77 #x5C78 #x5C7B #x5C7C #x5C7D #x5C7E #x5C80 Err bitreich.org 70 i- #x5C83 #x5C84 #x5C85 #x5C86 #x5C87 #x5C89 #x5C8A #x5C8B #x5C8E #x5C8F Err bitreich.org 70 i- #x5C92 #x5C93 #x5C95 #x5C9D #x5C9E #x5C9F #x5CA0 #x5CA1 #x5CA4 #x5CA5 Err bitreich.org 70 i- #x5CA6 #x5CA7 #x5CA8 #x5CAA #x5CAE #x5CAF #x5CB0 #x5CB2 #x5CB4 #x5CB6 Err bitreich.org 70 i- #x5CB9 #x5CBA #x5CBB #x5CBC #x5CBE #x5CC0 #x5CC2 #x5CC3 #x5CC5 #x5CC6 Err bitreich.org 70 i- #x5CC7 #x5CC8 #x5CC9 #x5CCA #x5CCC #x5CCD #x5CCE #x5CCF #x5CD0 #x5CD1 Err bitreich.org 70 i- #x5CD3 #x5CD4 #x5CD5 #x5CD6 #x5CD7 #x5CD8 #x5CDA #x5CDB #x5CDC #x5CDD Err bitreich.org 70 i- #x5CDE #x5CDF #x5CE0 #x5CE2 #x5CE3 #x5CE7 #x5CE9 #x5CEB #x5CEC #x5CEE Err bitreich.org 70 i- #x5CEF #x5CF1 #x5CF2 #x5CF3 #x5CF4 #x5CF5 #x5CF6 #x5CF7 #x5CF8 #x5CF9 Err bitreich.org 70 i- #x5CFA #x5CFC #x5CFD #x5CFE #x5CFF #x5D00 #x5D01 #x5D04 #x5D05 #x5D08 Err bitreich.org 70 i- #x5D09 #x5D0A #x5D0B #x5D0C #x5D0D #x5D0F #x5D10 #x5D11 #x5D12 #x5D13 Err bitreich.org 70 i- #x5D15 #x5D17 #x5D18 #x5D19 #x5D1A #x5D1C #x5D1D #x5D1F #x5D20 #x5D21 Err bitreich.org 70 i- #x5D22 #x5D23 #x5D25 #x5D28 #x5D2A #x5D2B #x5D2C #x5D2F #x5D30 #x5D31 Err bitreich.org 70 i- #x5D32 #x5D33 #x5D35 #x5D36 #x5D37 #x5D38 #x5D39 #x5D3A #x5D3B #x5D3C Err bitreich.org 70 i- #x5D3F #x5D40 #x5D41 #x5D42 #x5D43 #x5D44 #x5D45 #x5D46 #x5D48 #x5D49 Err bitreich.org 70 i- #x5D4D #x5D4E #x5D4F #x5D50 #x5D51 #x5D52 #x5D53 #x5D54 #x5D55 #x5D56 Err bitreich.org 70 i- #x5D57 #x5D59 #x5D5A #x5D5C #x5D5E #x5D5F #x5D60 #x5D61 #x5D62 #x5D63 Err bitreich.org 70 i- #x5D64 #x5D65 #x5D66 #x5D67 #x5D68 #x5D6A #x5D6D #x5D6E #x5D70 #x5D71 Err bitreich.org 70 i- #x5D72 #x5D73 #x5D75 #x5D76 #x5D77 #x5D78 #x5D79 #x5D7A #x5D7B #x5D7C Err bitreich.org 70 i- #x5D7D #x5D7E #x5D7F #x5D80 #x5D81 #x5D83 #x5D84 #x5D85 #x5D86 #x5D87 Err bitreich.org 70 i- #x5D88 #x5D89 #x5D8A #x5D8B #x5D8C #x5D8D #x5D8E #x5D8F #x5D90 #x5D91 Err bitreich.org 70 i- #x5D92 #x5D93 #x5D94 #x5D95 #x5D96 #x5D97 #x5D98 #x5D9A #x5D9B #x5D9C Err bitreich.org 70 i- #x5D9E #x5D9F #x5DA0 #x5DA1 #x5DA2 #x5DA3 #x5DA4 #x5DA5 #x5DA6 #x5DA7 Err bitreich.org 70 i- #x5DA8 #x5DA9 #x5DAA #x5DAB #x5DAC #x5DAD #x5DAE #x5DAF #x5DB0 #x5DB1 Err bitreich.org 70 i- #x5DB2 #x5DB3 #x5DB4 #x5DB5 #x5DB6 #x5DB8 #x5DB9 #x5DBA #x5DBB #x5DBC Err bitreich.org 70 i- #x5DBD #x5DBE #x5DBF #x5DC0 #x5DC1 #x5DC2 #x5DC3 #x5DC4 #x5DC6 #x5DC7 Err bitreich.org 70 i- #x5DC8 #x5DC9 #x5DCA #x5DCB #x5DCC #x5DCE #x5DCF #x5DD0 #x5DD1 #x5DD2 Err bitreich.org 70 i- #x5DD3 #x5DD4 #x5DD5 #x5DD6 #x5DD7 #x5DD8 #x5DD9 #x5DDA #x5DDC #x5DDF Err bitreich.org 70 i- #x5DE0 #x5DE3 #x5DE4 #x5DEA #x5DEC #x5DED #x5DF0 #x5DF5 #x5DF6 #x5DF8 Err bitreich.org 70 i- #x5DF9 #x5DFA #x5DFB #x5DFC #x5DFF #x5E00 #x5E04 #x5E07 #x5E09 #x5E0A Err bitreich.org 70 i- #x5E0B #x5E0D #x5E0E #x5E12 #x5E13 #x5E17 #x5E1E #x5E1F #x5E20 #x5E21 Err bitreich.org 70 i- #x5E22 #x5E23 #x5E24 #x5E25 #x5E28 #x5E29 #x5E2A #x5E2B #x5E2C #x5E2F Err bitreich.org 70 i- #x5E30 #x5E32 #x5E33 #x5E34 #x5E35 #x5E36 #x5E39 #x5E3A #x5E3E #x5E3F Err bitreich.org 70 i- #x5E40 #x5E41 #x5E43 #x5E46 #x5E47 #x5E48 #x5E49 #x5E4A #x5E4B #x5E4D Err bitreich.org 70 i- #x5E4E #x5E4F #x5E50 #x5E51 #x5E52 #x5E53 #x5E56 #x5E57 #x5E58 #x5E59 Err bitreich.org 70 i- #x5E5A #x5E5C #x5E5D #x5E5F #x5E60 #x5E63 #x5E64 #x5E65 #x5E66 #x5E67 Err bitreich.org 70 i- #x5E68 #x5E69 #x5E6A #x5E6B #x5E6C #x5E6D #x5E6E #x5E6F #x5E70 #x5E71 Err bitreich.org 70 i- #x5E75 #x5E77 #x5E79 #x5E7E #x5E81 #x5E82 #x5E83 #x5E85 #x5E88 #x5E89 Err bitreich.org 70 i- #x5E8C #x5E8D #x5E8E #x5E92 #x5E98 #x5E9B #x5E9D #x5EA1 #x5EA2 #x5EA3 Err bitreich.org 70 i- #x5EA4 #x5EA8 #x5EA9 #x5EAA #x5EAB #x5EAC #x5EAE #x5EAF #x5EB0 #x5EB1 Err bitreich.org 70 i- #x5EB2 #x5EB4 #x5EBA #x5EBB #x5EBC #x5EBD #x5EBF #x5EC0 #x5EC1 #x5EC2 Err bitreich.org 70 i- #x5EC3 #x5EC4 #x5EC5 #x5EC6 #x5EC7 #x5EC8 #x5ECB #x5ECC #x5ECD #x5ECE Err bitreich.org 70 i- #x5ECF #x5ED0 #x5ED4 #x5ED5 #x5ED7 #x5ED8 #x5ED9 #x5EDA #x5EDC #x5EDD Err bitreich.org 70 i- #x5EDE #x5EDF #x5EE0 #x5EE1 #x5EE2 #x5EE3 #x5EE4 #x5EE5 #x5EE6 #x5EE7 Err bitreich.org 70 i- #x5EE9 #x5EEB #x5EEC #x5EED #x5EEE #x5EEF #x5EF0 #x5EF1 #x5EF2 #x5EF3 Err bitreich.org 70 i- #x5EF5 #x5EF8 #x5EF9 #x5EFB #x5EFC #x5EFD #x5F05 #x5F06 #x5F07 #x5F09 Err bitreich.org 70 i- #x5F0C #x5F0D #x5F0E #x5F10 #x5F12 #x5F14 #x5F16 #x5F19 #x5F1A #x5F1C Err bitreich.org 70 i- #x5F1D #x5F1E #x5F21 #x5F22 #x5F23 #x5F24 #x5F28 #x5F2B #x5F2C #x5F2E Err bitreich.org 70 i- #x5F30 #x5F32 #x5F33 #x5F34 #x5F35 #x5F36 #x5F37 #x5F38 #x5F3B #x5F3D Err bitreich.org 70 i- #x5F3E #x5F3F #x5F41 #x5F42 #x5F43 #x5F44 #x5F45 #x5F46 #x5F47 #x5F48 Err bitreich.org 70 i- #x5F49 #x5F4A #x5F4B #x5F4C #x5F4D #x5F4E #x5F4F #x5F51 #x5F54 #x5F59 Err bitreich.org 70 i- #x5F5A #x5F5B #x5F5C #x5F5E #x5F5F #x5F60 #x5F63 #x5F65 #x5F67 #x5F68 Err bitreich.org 70 i- #x5F6B #x5F6E #x5F6F #x5F72 #x5F74 #x5F75 #x5F76 #x5F78 #x5F7A #x5F7D Err bitreich.org 70 i- #x5F7E #x5F7F #x5F83 #x5F86 #x5F8D #x5F8E #x5F8F #x5F91 #x5F93 #x5F94 Err bitreich.org 70 i- #x5F96 #x5F9A #x5F9B #x5F9D #x5F9E #x5F9F #x5FA0 #x5FA2 #x5FA3 #x5FA4 Err bitreich.org 70 i- #x5FA5 #x5FA6 #x5FA7 #x5FA9 #x5FAB #x5FAC #x5FAF #x5FB0 #x5FB1 #x5FB2 Err bitreich.org 70 i- #x5FB3 #x5FB4 #x5FB6 #x5FB8 #x5FB9 #x5FBA #x5FBB #x5FBE #x5FBF #x5FC0 Err bitreich.org 70 i- #x5FC1 #x5FC2 #x5FC7 #x5FC8 #x5FCA #x5FCB #x5FCE #x5FD3 #x5FD4 #x5FD5 Err bitreich.org 70 i- #x5FDA #x5FDB #x5FDC #x5FDE #x5FDF #x5FE2 #x5FE3 #x5FE5 #x5FE6 #x5FE8 Err bitreich.org 70 i- #x5FE9 #x5FEC #x5FEF #x5FF0 #x5FF2 #x5FF3 #x5FF4 #x5FF6 #x5FF7 #x5FF9 Err bitreich.org 70 i- #x5FFA #x5FFC #x6007 #x6008 #x6009 #x600B #x600C #x6010 #x6011 #x6013 Err bitreich.org 70 i- #x6017 #x6018 #x601A #x601E #x601F #x6022 #x6023 #x6024 #x602C #x602D Err bitreich.org 70 i- #x602E #x6030 #x6031 #x6032 #x6033 #x6034 #x6036 #x6037 #x6038 #x6039 Err bitreich.org 70 i- #x603A #x603D #x603E #x6040 #x6044 #x6045 #x6046 #x6047 #x6048 #x6049 Err bitreich.org 70 i- #x604A #x604C #x604E #x604F #x6051 #x6053 #x6054 #x6056 #x6057 #x6058 Err bitreich.org 70 i- #x605B #x605C #x605E #x605F #x6060 #x6061 #x6065 #x6066 #x606E #x6071 Err bitreich.org 70 i- #x6072 #x6074 #x6075 #x6077 #x607E #x6080 #x6081 #x6082 #x6085 #x6086 Err bitreich.org 70 i- #x6087 #x6088 #x608A #x608B #x608E #x608F #x6090 #x6091 #x6093 #x6095 Err bitreich.org 70 i- #x6097 #x6098 #x6099 #x609C #x609E #x60A1 #x60A2 #x60A4 #x60A5 #x60A7 Err bitreich.org 70 i- #x60A9 #x60AA #x60AE #x60B0 #x60B3 #x60B5 #x60B6 #x60B7 #x60B9 #x60BA Err bitreich.org 70 i- #x60BD #x60BE #x60BF #x60C0 #x60C1 #x60C2 #x60C3 #x60C4 #x60C7 #x60C8 Err bitreich.org 70 i- #x60C9 #x60CC #x60CD #x60CE #x60CF #x60D0 #x60D2 #x60D3 #x60D4 #x60D6 Err bitreich.org 70 i- #x60D7 #x60D9 #x60DB #x60DE #x60E1 #x60E2 #x60E3 #x60E4 #x60E5 #x60EA Err bitreich.org 70 i- #x60F1 #x60F2 #x60F5 #x60F7 #x60F8 #x60FB #x60FC #x60FD #x60FE #x60FF Err bitreich.org 70 i- #x6102 #x6103 #x6104 #x6105 #x6107 #x610A #x610B #x610C #x6110 #x6111 Err bitreich.org 70 i- #x6112 #x6113 #x6114 #x6116 #x6117 #x6118 #x6119 #x611B #x611C #x611D Err bitreich.org 70 i- #x611E #x6121 #x6122 #x6125 #x6128 #x6129 #x612A #x612C #x612D #x612E Err bitreich.org 70 i- #x612F #x6130 #x6131 #x6132 #x6133 #x6134 #x6135 #x6136 #x6137 #x6138 Err bitreich.org 70 i- #x6139 #x613A #x613B #x613C #x613D #x613E #x6140 #x6141 #x6142 #x6143 Err bitreich.org 70 i- #x6144 #x6145 #x6146 #x6147 #x6149 #x614B #x614D #x614F #x6150 #x6152 Err bitreich.org 70 i- #x6153 #x6154 #x6156 #x6157 #x6158 #x6159 #x615A #x615B #x615C #x615E Err bitreich.org 70 i- #x615F #x6160 #x6161 #x6163 #x6164 #x6165 #x6166 #x6169 #x616A #x616B Err bitreich.org 70 i- #x616C #x616D #x616E #x616F #x6171 #x6172 #x6173 #x6174 #x6176 #x6178 Err bitreich.org 70 i- #x6179 #x617A #x617B #x617C #x617D #x617E #x617F #x6180 #x6181 #x6182 Err bitreich.org 70 i- #x6183 #x6184 #x6185 #x6186 #x6187 #x6188 #x6189 #x618A #x618C #x618D Err bitreich.org 70 i- #x618F #x6190 #x6191 #x6192 #x6193 #x6195 #x6196 #x6197 #x6198 #x6199 Err bitreich.org 70 i- #x619A #x619B #x619C #x619E #x619F #x61A0 #x61A1 #x61A2 #x61A3 #x61A4 Err bitreich.org 70 i- #x61A5 #x61A6 #x61AA #x61AB #x61AD #x61AE #x61AF #x61B0 #x61B1 #x61B2 Err bitreich.org 70 i- #x61B3 #x61B4 #x61B5 #x61B6 #x61B8 #x61B9 #x61BA #x61BB #x61BC #x61BD Err bitreich.org 70 i- #x61BF #x61C0 #x61C1 #x61C3 #x61C4 #x61C5 #x61C6 #x61C7 #x61C9 #x61CC Err bitreich.org 70 i- #x61CD #x61CE #x61CF #x61D0 #x61D3 #x61D5 #x61D6 #x61D7 #x61D8 #x61D9 Err bitreich.org 70 i- #x61DA #x61DB #x61DC #x61DD #x61DE #x61DF #x61E0 #x61E1 #x61E2 #x61E3 Err bitreich.org 70 i- #x61E4 #x61E5 #x61E7 #x61E8 #x61E9 #x61EA #x61EB #x61EC #x61ED #x61EE Err bitreich.org 70 i- #x61EF #x61F0 #x61F1 #x61F2 #x61F3 #x61F4 #x61F6 #x61F7 #x61F8 #x61F9 Err bitreich.org 70 i- #x61FA #x61FB #x61FC #x61FD #x61FE #x6200 #x6201 #x6202 #x6203 #x6204 Err bitreich.org 70 i- #x6205 #x6207 #x6209 #x6213 #x6214 #x6219 #x621C #x621D #x621E #x6220 Err bitreich.org 70 i- #x6223 #x6226 #x6227 #x6228 #x6229 #x622B #x622D #x622F #x6230 #x6231 Err bitreich.org 70 i- #x6232 #x6235 #x6236 #x6238 #x6239 #x623A #x623B #x623C #x6242 #x6244 Err bitreich.org 70 i- #x6245 #x6246 #x624A #x624F #x6250 #x6255 #x6256 #x6257 #x6259 #x625A Err bitreich.org 70 i- #x625C #x625D #x625E #x625F #x6260 #x6261 #x6262 #x6264 #x6265 #x6268 Err bitreich.org 70 i- #x6271 #x6272 #x6274 #x6275 #x6277 #x6278 #x627A #x627B #x627D #x6281 Err bitreich.org 70 i- #x6282 #x6283 #x6285 #x6286 #x6287 #x6288 #x628B #x628C #x628D #x628E Err bitreich.org 70 i- #x628F #x6290 #x6294 #x6299 #x629C #x629D #x629E #x62A3 #x62A6 #x62A7 Err bitreich.org 70 i- #x62A9 #x62AA #x62AD #x62AE #x62AF #x62B0 #x62B2 #x62B3 #x62B4 #x62B6 Err bitreich.org 70 i- #x62B7 #x62B8 #x62BA #x62BE #x62C0 #x62C1 #x62C3 #x62CB #x62CF #x62D1 Err bitreich.org 70 i- #x62D5 #x62DD #x62DE #x62E0 #x62E1 #x62E4 #x62EA #x62EB #x62F0 #x62F2 Err bitreich.org 70 i- #x62F5 #x62F8 #x62F9 #x62FA #x62FB #x6300 #x6303 #x6304 #x6305 #x6306 Err bitreich.org 70 i- #x630A #x630B #x630C #x630D #x630F #x6310 #x6312 #x6313 #x6314 #x6315 Err bitreich.org 70 i- #x6317 #x6318 #x6319 #x631C #x6326 #x6327 #x6329 #x632C #x632D #x632E Err bitreich.org 70 i- #x6330 #x6331 #x6333 #x6334 #x6335 #x6336 #x6337 #x6338 #x633B #x633C Err bitreich.org 70 i- #x633E #x633F #x6340 #x6341 #x6344 #x6347 #x6348 #x634A #x6351 #x6352 Err bitreich.org 70 i- #x6353 #x6354 #x6356 #x6357 #x6358 #x6359 #x635A #x635B #x635C #x635D Err bitreich.org 70 i- #x6360 #x6364 #x6365 #x6366 #x6368 #x636A #x636B #x636C #x636F #x6370 Err bitreich.org 70 i- #x6372 #x6373 #x6374 #x6375 #x6378 #x6379 #x637C #x637D #x637E #x637F Err bitreich.org 70 i- #x6381 #x6383 #x6384 #x6385 #x6386 #x638B #x638D #x6391 #x6393 #x6394 Err bitreich.org 70 i- #x6395 #x6397 #x6399 #x639A #x639B #x639C #x639D #x639E #x639F #x63A1 Err bitreich.org 70 i- #x63A4 #x63A6 #x63AB #x63AF #x63B1 #x63B2 #x63B5 #x63B6 #x63B9 #x63BB Err bitreich.org 70 i- #x63BD #x63BF #x63C0 #x63C1 #x63C2 #x63C3 #x63C5 #x63C7 #x63C8 #x63CA Err bitreich.org 70 i- #x63CB #x63CC #x63D1 #x63D3 #x63D4 #x63D5 #x63D7 #x63D8 #x63D9 #x63DA Err bitreich.org 70 i- #x63DB #x63DC #x63DD #x63DF #x63E2 #x63E4 #x63E5 #x63E6 #x63E7 #x63E8 Err bitreich.org 70 i- #x63EB #x63EC #x63EE #x63EF #x63F0 #x63F1 #x63F3 #x63F5 #x63F7 #x63F9 Err bitreich.org 70 i- #x63FA #x63FB #x63FC #x63FE #x6403 #x6404 #x6406 #x6407 #x6408 #x6409 Err bitreich.org 70 i- #x640A #x640D #x640E #x6411 #x6412 #x6415 #x6416 #x6417 #x6418 #x6419 Err bitreich.org 70 i- #x641A #x641D #x641F #x6422 #x6423 #x6424 #x6425 #x6427 #x6428 #x6429 Err bitreich.org 70 i- #x642B #x642E #x642F #x6430 #x6431 #x6432 #x6433 #x6435 #x6436 #x6437 Err bitreich.org 70 i- #x6438 #x6439 #x643B #x643C #x643E #x6440 #x6442 #x6443 #x6449 #x644B Err bitreich.org 70 i- #x644C #x644D #x644E #x644F #x6450 #x6451 #x6453 #x6455 #x6456 #x6457 Err bitreich.org 70 i- #x6459 #x645A #x645B #x645C #x645D #x645F #x6460 #x6461 #x6462 #x6463 Err bitreich.org 70 i- #x6464 #x6465 #x6466 #x6468 #x646A #x646B #x646C #x646E #x646F #x6470 Err bitreich.org 70 i- #x6471 #x6472 #x6473 #x6474 #x6475 #x6476 #x6477 #x647B #x647C #x647D Err bitreich.org 70 i- #x647E #x647F #x6480 #x6481 #x6483 #x6486 #x6488 #x6489 #x648A #x648B Err bitreich.org 70 i- #x648C #x648D #x648E #x648F #x6490 #x6493 #x6494 #x6497 #x6498 #x649A Err bitreich.org 70 i- #x649B #x649C #x649D #x649F #x64A0 #x64A1 #x64A2 #x64A3 #x64A5 #x64A6 Err bitreich.org 70 i- #x64A7 #x64A8 #x64AA #x64AB #x64AF #x64B1 #x64B2 #x64B3 #x64B4 #x64B6 Err bitreich.org 70 i- #x64B9 #x64BB #x64BD #x64BE #x64BF #x64C1 #x64C3 #x64C4 #x64C6 #x64C7 Err bitreich.org 70 i- #x64C8 #x64C9 #x64CA #x64CB #x64CC #x64CF #x64D1 #x64D3 #x64D4 #x64D5 Err bitreich.org 70 i- #x64D6 #x64D9 #x64DA #x64DB #x64DC #x64DD #x64DF #x64E0 #x64E1 #x64E3 Err bitreich.org 70 i- #x64E5 #x64E7 #x64E8 #x64E9 #x64EA #x64EB #x64EC #x64ED #x64EE #x64EF Err bitreich.org 70 i- #x64F0 #x64F1 #x64F2 #x64F3 #x64F4 #x64F5 #x64F6 #x64F7 #x64F8 #x64F9 Err bitreich.org 70 i- #x64FA #x64FB #x64FC #x64FD #x64FE #x64FF #x6501 #x6502 #x6503 #x6504 Err bitreich.org 70 i- #x6505 #x6506 #x6507 #x6508 #x650A #x650B #x650C #x650D #x650E #x650F Err bitreich.org 70 i- #x6510 #x6511 #x6513 #x6514 #x6515 #x6516 #x6517 #x6519 #x651A #x651B Err bitreich.org 70 i- #x651C #x651D #x651E #x651F #x6520 #x6521 #x6522 #x6523 #x6524 #x6526 Err bitreich.org 70 i- #x6527 #x6528 #x6529 #x652A #x652C #x652D #x6530 #x6531 #x6532 #x6533 Err bitreich.org 70 i- #x6537 #x653A #x653C #x653D #x6540 #x6541 #x6542 #x6543 #x6544 #x6546 Err bitreich.org 70 i- #x6547 #x654A #x654B #x654D #x654E #x6550 #x6552 #x6553 #x6554 #x6557 Err bitreich.org 70 i- #x6558 #x655A #x655C #x655F #x6560 #x6561 #x6564 #x6565 #x6567 #x6568 Err bitreich.org 70 i- #x6569 #x656A #x656D #x656E #x656F #x6571 #x6573 #x6575 #x6576 #x6578 Err bitreich.org 70 i- #x6579 #x657A #x657B #x657C #x657D #x657E #x657F #x6580 #x6581 #x6582 Err bitreich.org 70 i- #x6583 #x6584 #x6585 #x6586 #x6588 #x6589 #x658A #x658D #x658E #x658F Err bitreich.org 70 i- #x6592 #x6594 #x6595 #x6596 #x6598 #x659A #x659D #x659E #x65A0 #x65A2 Err bitreich.org 70 i- #x65A3 #x65A6 #x65A8 #x65AA #x65AC #x65AE #x65B1 #x65B2 #x65B3 #x65B4 Err bitreich.org 70 i- #x65B5 #x65B6 #x65B7 #x65B8 #x65BA #x65BB #x65BE #x65BF #x65C0 #x65C2 Err bitreich.org 70 i- #x65C7 #x65C8 #x65C9 #x65CA #x65CD #x65D0 #x65D1 #x65D3 #x65D4 #x65D5 Err bitreich.org 70 i- #x65D8 #x65D9 #x65DA #x65DB #x65DC #x65DD #x65DE #x65DF #x65E1 #x65E3 Err bitreich.org 70 i- #x65E4 #x65EA #x65EB #x65F2 #x65F3 #x65F4 #x65F5 #x65F8 #x65F9 #x65FB Err bitreich.org 70 i- #x65FC #x65FD #x65FE #x65FF #x6601 #x6604 #x6605 #x6607 #x6608 #x6609 Err bitreich.org 70 i- #x660B #x660D #x6610 #x6611 #x6612 #x6616 #x6617 #x6618 #x661A #x661B Err bitreich.org 70 i- #x661C #x661E #x6621 #x6622 #x6623 #x6624 #x6626 #x6629 #x662A #x662B Err bitreich.org 70 i- #x662C #x662E #x6630 #x6632 #x6633 #x6637 #x6638 #x6639 #x663A #x663B Err bitreich.org 70 i- #x663D #x663F #x6640 #x6642 #x6644 #x6645 #x6646 #x6647 #x6648 #x6649 Err bitreich.org 70 i- #x664A #x664D #x664E #x6650 #x6651 #x6658 #x6659 #x665B #x665C #x665D Err bitreich.org 70 i- #x665E #x6660 #x6662 #x6663 #x6665 #x6667 #x6669 #x666A #x666B #x666C Err bitreich.org 70 i- #x666D #x6671 #x6672 #x6673 #x6675 #x6678 #x6679 #x667B #x667C #x667D Err bitreich.org 70 i- #x667F #x6680 #x6681 #x6683 #x6685 #x6686 #x6688 #x6689 #x668A #x668B Err bitreich.org 70 i- #x668D #x668E #x668F #x6690 #x6692 #x6693 #x6694 #x6695 #x6698 #x6699 Err bitreich.org 70 i- #x669A #x669B #x669C #x669E #x669F #x66A0 #x66A1 #x66A2 #x66A3 #x66A4 Err bitreich.org 70 i- #x66A5 #x66A6 #x66A9 #x66AA #x66AB #x66AC #x66AD #x66AF #x66B0 #x66B1 Err bitreich.org 70 i- #x66B2 #x66B3 #x66B5 #x66B6 #x66B7 #x66B8 #x66BA #x66BB #x66BC #x66BD Err bitreich.org 70 i- #x66BF #x66C0 #x66C1 #x66C2 #x66C3 #x66C4 #x66C5 #x66C6 #x66C7 #x66C8 Err bitreich.org 70 i- #x66C9 #x66CA #x66CB #x66CC #x66CD #x66CE #x66CF #x66D0 #x66D1 #x66D2 Err bitreich.org 70 i- #x66D3 #x66D4 #x66D5 #x66D6 #x66D7 #x66D8 #x66DA #x66DE #x66DF #x66E0 Err bitreich.org 70 i- #x66E1 #x66E2 #x66E3 #x66E4 #x66E5 #x66E7 #x66E8 #x66EA #x66EB #x66EC Err bitreich.org 70 i- #x66ED #x66EE #x66EF #x66F1 #x66F5 #x66F6 #x66F8 #x66FA #x66FB #x66FD Err bitreich.org 70 i- #x6701 #x6702 #x6703 #x6704 #x6705 #x6706 #x6707 #x670C #x670E #x670F Err bitreich.org 70 i- #x6711 #x6712 #x6713 #x6716 #x6718 #x6719 #x671A #x671C #x671E #x6720 Err bitreich.org 70 i- #x6721 #x6722 #x6723 #x6724 #x6725 #x6727 #x6729 #x672E #x6730 #x6732 Err bitreich.org 70 i- #x6733 #x6736 #x6737 #x6738 #x6739 #x673B #x673C #x673E #x673F #x6741 Err bitreich.org 70 i- #x6744 #x6745 #x6747 #x674A #x674B #x674D #x6752 #x6754 #x6755 #x6757 Err bitreich.org 70 i- #x6758 #x6759 #x675A #x675B #x675D #x6762 #x6763 #x6764 #x6766 #x6767 Err bitreich.org 70 i- #x676B #x676C #x676E #x6771 #x6774 #x6776 #x6778 #x6779 #x677A #x677B Err bitreich.org 70 i- #x677D #x6780 #x6782 #x6783 #x6785 #x6786 #x6788 #x678A #x678C #x678D Err bitreich.org 70 i- #x678E #x678F #x6791 #x6792 #x6793 #x6794 #x6796 #x6799 #x679B #x679F Err bitreich.org 70 i- #x67A0 #x67A1 #x67A4 #x67A6 #x67A9 #x67AC #x67AE #x67B1 #x67B2 #x67B4 Err bitreich.org 70 i- #x67B9 #x67BA #x67BB #x67BC #x67BD #x67BE #x67BF #x67C0 #x67C2 #x67C5 Err bitreich.org 70 i- #x67C6 #x67C7 #x67C8 #x67C9 #x67CA #x67CB #x67CC #x67CD #x67CE #x67D5 Err bitreich.org 70 i- #x67D6 #x67D7 #x67DB #x67DF #x67E1 #x67E3 #x67E4 #x67E6 #x67E7 #x67E8 Err bitreich.org 70 i- #x67EA #x67EB #x67ED #x67EE #x67F2 #x67F5 #x67F6 #x67F7 #x67F8 #x67F9 Err bitreich.org 70 i- #x67FA #x67FB #x67FC #x67FE #x6801 #x6802 #x6803 #x6804 #x6806 #x680D Err bitreich.org 70 i- #x6810 #x6812 #x6814 #x6815 #x6818 #x6819 #x681A #x681B #x681C #x681E Err bitreich.org 70 i- #x681F #x6820 #x6822 #x6823 #x6824 #x6825 #x6826 #x6827 #x6828 #x682B Err bitreich.org 70 i- #x682C #x682D #x682E #x682F #x6830 #x6831 #x6834 #x6835 #x6836 #x683A Err bitreich.org 70 i- #x683B #x683F #x6847 #x684B #x684D #x684F #x6852 #x6856 #x6857 #x6858 Err bitreich.org 70 i- #x6859 #x685A #x685B #x685C #x685D #x685E #x685F #x686A #x686C #x686D Err bitreich.org 70 i- #x686E #x686F #x6870 #x6871 #x6872 #x6873 #x6875 #x6878 #x6879 #x687A Err bitreich.org 70 i- #x687B #x687C #x687D #x687E #x687F #x6880 #x6882 #x6884 #x6887 #x6888 Err bitreich.org 70 i- #x6889 #x688A #x688B #x688C #x688D #x688E #x6890 #x6891 #x6892 #x6894 Err bitreich.org 70 i- #x6895 #x6896 #x6898 #x6899 #x689A #x689B #x689C #x689D #x689E #x689F Err bitreich.org 70 i- #x68A0 #x68A1 #x68A3 #x68A4 #x68A5 #x68A9 #x68AA #x68AB #x68AC #x68AE Err bitreich.org 70 i- #x68B1 #x68B2 #x68B4 #x68B6 #x68B7 #x68B8 #x68B9 #x68BA #x68BB #x68BC Err bitreich.org 70 i- #x68BD #x68BE #x68BF #x68C1 #x68C3 #x68C4 #x68C5 #x68C6 #x68C7 #x68C8 Err bitreich.org 70 i- #x68CA #x68CC #x68CE #x68CF #x68D0 #x68D1 #x68D3 #x68D4 #x68D6 #x68D7 Err bitreich.org 70 i- #x68D9 #x68DB #x68DC #x68DD #x68DE #x68DF #x68E1 #x68E2 #x68E4 #x68E5 Err bitreich.org 70 i- #x68E6 #x68E7 #x68E8 #x68E9 #x68EA #x68EB #x68EC #x68ED #x68EF #x68F2 Err bitreich.org 70 i- #x68F3 #x68F4 #x68F6 #x68F7 #x68F8 #x68FB #x68FD #x68FE #x68FF #x6900 Err bitreich.org 70 i- #x6902 #x6903 #x6904 #x6906 #x6907 #x6908 #x6909 #x690A #x690C #x690F Err bitreich.org 70 i- #x6911 #x6913 #x6914 #x6915 #x6916 #x6917 #x6918 #x6919 #x691A #x691B Err bitreich.org 70 i- #x691C #x691D #x691E #x6921 #x6922 #x6923 #x6925 #x6926 #x6927 #x6928 Err bitreich.org 70 i- #x6929 #x692A #x692B #x692C #x692E #x692F #x6931 #x6932 #x6933 #x6935 Err bitreich.org 70 i- #x6936 #x6937 #x6938 #x693A #x693B #x693C #x693E #x6940 #x6941 #x6943 Err bitreich.org 70 i- #x6944 #x6945 #x6946 #x6947 #x6948 #x6949 #x694A #x694B #x694C #x694D Err bitreich.org 70 i- #x694E #x694F #x6950 #x6951 #x6952 #x6953 #x6955 #x6956 #x6958 #x6959 Err bitreich.org 70 i- #x695B #x695C #x695F #x6961 #x6962 #x6964 #x6965 #x6967 #x6968 #x6969 Err bitreich.org 70 i- #x696A #x696C #x696D #x696F #x6970 #x6972 #x6973 #x6974 #x6975 #x6976 Err bitreich.org 70 i- #x697A #x697B #x697D #x697E #x697F #x6981 #x6983 #x6985 #x698A #x698B Err bitreich.org 70 i- #x698C #x698E #x698F #x6990 #x6991 #x6992 #x6993 #x6996 #x6997 #x6999 Err bitreich.org 70 i- #x699A #x699D #x699E #x699F #x69A0 #x69A1 #x69A2 #x69A3 #x69A4 #x69A5 Err bitreich.org 70 i- #x69A6 #x69A9 #x69AA #x69AC #x69AE #x69AF #x69B0 #x69B2 #x69B3 #x69B5 Err bitreich.org 70 i- #x69B6 #x69B8 #x69B9 #x69BA #x69BC #x69BD #x69BE #x69BF #x69C0 #x69C2 Err bitreich.org 70 i- #x69C3 #x69C4 #x69C5 #x69C6 #x69C7 #x69C8 #x69C9 #x69CB #x69CD #x69CF Err bitreich.org 70 i- #x69D1 #x69D2 #x69D3 #x69D5 #x69D6 #x69D7 #x69D8 #x69D9 #x69DA #x69DC Err bitreich.org 70 i- #x69DD #x69DE #x69E1 #x69E2 #x69E3 #x69E4 #x69E5 #x69E6 #x69E7 #x69E8 Err bitreich.org 70 i- #x69E9 #x69EA #x69EB #x69EC #x69EE #x69EF #x69F0 #x69F1 #x69F3 #x69F4 Err bitreich.org 70 i- #x69F5 #x69F6 #x69F7 #x69F8 #x69F9 #x69FA #x69FB #x69FC #x69FE #x6A00 Err bitreich.org 70 i- #x6A01 #x6A02 #x6A03 #x6A04 #x6A05 #x6A06 #x6A07 #x6A08 #x6A09 #x6A0B Err bitreich.org 70 i- #x6A0C #x6A0D #x6A0E #x6A0F #x6A10 #x6A11 #x6A12 #x6A13 #x6A14 #x6A15 Err bitreich.org 70 i- #x6A16 #x6A19 #x6A1A #x6A1B #x6A1C #x6A1D #x6A1E #x6A20 #x6A22 #x6A23 Err bitreich.org 70 i- #x6A24 #x6A25 #x6A26 #x6A27 #x6A29 #x6A2B #x6A2C #x6A2D #x6A2E #x6A30 Err bitreich.org 70 i- #x6A32 #x6A33 #x6A34 #x6A36 #x6A37 #x6A38 #x6A39 #x6A3A #x6A3B #x6A3C Err bitreich.org 70 i- #x6A3F #x6A40 #x6A41 #x6A42 #x6A43 #x6A45 #x6A46 #x6A48 #x6A49 #x6A4A Err bitreich.org 70 i- #x6A4B #x6A4C #x6A4D #x6A4E #x6A4F #x6A51 #x6A52 #x6A53 #x6A54 #x6A55 Err bitreich.org 70 i- #x6A56 #x6A57 #x6A5A #x6A5C #x6A5D #x6A5E #x6A5F #x6A60 #x6A62 #x6A63 Err bitreich.org 70 i- #x6A64 #x6A66 #x6A67 #x6A68 #x6A69 #x6A6A #x6A6B #x6A6C #x6A6D #x6A6E Err bitreich.org 70 i- #x6A6F #x6A70 #x6A72 #x6A73 #x6A74 #x6A75 #x6A76 #x6A77 #x6A78 #x6A7A Err bitreich.org 70 i- #x6A7B #x6A7D #x6A7E #x6A7F #x6A81 #x6A82 #x6A83 #x6A85 #x6A86 #x6A87 Err bitreich.org 70 i- #x6A88 #x6A89 #x6A8A #x6A8B #x6A8C #x6A8D #x6A8F #x6A92 #x6A93 #x6A94 Err bitreich.org 70 i- #x6A95 #x6A96 #x6A98 #x6A99 #x6A9A #x6A9B #x6A9C #x6A9D #x6A9E #x6A9F Err bitreich.org 70 i- #x6AA1 #x6AA2 #x6AA3 #x6AA4 #x6AA5 #x6AA6 #x6AA7 #x6AA8 #x6AAA #x6AAD Err bitreich.org 70 i- #x6AAE #x6AAF #x6AB0 #x6AB1 #x6AB2 #x6AB3 #x6AB4 #x6AB5 #x6AB6 #x6AB7 Err bitreich.org 70 i- #x6AB8 #x6AB9 #x6ABA #x6ABB #x6ABC #x6ABD #x6ABE #x6ABF #x6AC0 #x6AC1 Err bitreich.org 70 i- #x6AC2 #x6AC3 #x6AC4 #x6AC5 #x6AC6 #x6AC7 #x6AC8 #x6AC9 #x6ACA #x6ACB Err bitreich.org 70 i- #x6ACC #x6ACD #x6ACE #x6ACF #x6AD0 #x6AD1 #x6AD2 #x6AD3 #x6AD4 #x6AD5 Err bitreich.org 70 i- #x6AD6 #x6AD7 #x6AD8 #x6AD9 #x6ADA #x6ADB #x6ADC #x6ADD #x6ADE #x6ADF Err bitreich.org 70 i- #x6AE0 #x6AE1 #x6AE2 #x6AE3 #x6AE4 #x6AE5 #x6AE6 #x6AE7 #x6AE8 #x6AE9 Err bitreich.org 70 i- #x6AEA #x6AEB #x6AEC #x6AED #x6AEE #x6AEF #x6AF0 #x6AF1 #x6AF2 #x6AF3 Err bitreich.org 70 i- #x6AF4 #x6AF5 #x6AF6 #x6AF7 #x6AF8 #x6AF9 #x6AFA #x6AFB #x6AFC #x6AFD Err bitreich.org 70 i- #x6AFE #x6AFF #x6B00 #x6B01 #x6B02 #x6B03 #x6B04 #x6B05 #x6B06 #x6B07 Err bitreich.org 70 i- #x6B08 #x6B09 #x6B0A #x6B0B #x6B0C #x6B0D #x6B0E #x6B0F #x6B10 #x6B11 Err bitreich.org 70 i- #x6B12 #x6B13 #x6B14 #x6B15 #x6B16 #x6B17 #x6B18 #x6B19 #x6B1A #x6B1B Err bitreich.org 70 i- #x6B1C #x6B1D #x6B1E #x6B1F #x6B25 #x6B26 #x6B28 #x6B29 #x6B2A #x6B2B Err bitreich.org 70 i- #x6B2C #x6B2D #x6B2E #x6B2F #x6B30 #x6B31 #x6B33 #x6B34 #x6B35 #x6B36 Err bitreich.org 70 i- #x6B38 #x6B3B #x6B3C #x6B3D #x6B3F #x6B40 #x6B41 #x6B42 #x6B44 #x6B45 Err bitreich.org 70 i- #x6B48 #x6B4A #x6B4B #x6B4D #x6B4E #x6B4F #x6B50 #x6B51 #x6B52 #x6B53 Err bitreich.org 70 i- #x6B54 #x6B55 #x6B56 #x6B57 #x6B58 #x6B5A #x6B5B #x6B5C #x6B5D #x6B5E Err bitreich.org 70 i- #x6B5F #x6B60 #x6B61 #x6B68 #x6B69 #x6B6B #x6B6C #x6B6D #x6B6E #x6B6F Err bitreich.org 70 i- #x6B70 #x6B71 #x6B72 #x6B73 #x6B74 #x6B75 #x6B76 #x6B77 #x6B78 #x6B7A Err bitreich.org 70 i- #x6B7D #x6B7E #x6B7F #x6B80 #x6B85 #x6B88 #x6B8C #x6B8E #x6B8F #x6B90 Err bitreich.org 70 i- #x6B91 #x6B94 #x6B95 #x6B97 #x6B98 #x6B99 #x6B9C #x6B9D #x6B9E #x6B9F Err bitreich.org 70 i- #x6BA0 #x6BA2 #x6BA3 #x6BA4 #x6BA5 #x6BA6 #x6BA7 #x6BA8 #x6BA9 #x6BAB Err bitreich.org 70 i- #x6BAC #x6BAD #x6BAE #x6BAF #x6BB0 #x6BB1 #x6BB2 #x6BB6 #x6BB8 #x6BB9 Err bitreich.org 70 i- #x6BBA #x6BBB #x6BBC #x6BBD #x6BBE #x6BC0 #x6BC3 #x6BC4 #x6BC6 #x6BC7 Err bitreich.org 70 i- #x6BC8 #x6BC9 #x6BCA #x6BCC #x6BCE #x6BD0 #x6BD1 #x6BD8 #x6BDA #x6BDC Err bitreich.org 70 i- #x6BDD #x6BDE #x6BDF #x6BE0 #x6BE2 #x6BE3 #x6BE4 #x6BE5 #x6BE6 #x6BE7 Err bitreich.org 70 i- #x6BE8 #x6BE9 #x6BEC #x6BED #x6BEE #x6BF0 #x6BF1 #x6BF2 #x6BF4 #x6BF6 Err bitreich.org 70 i- #x6BF7 #x6BF8 #x6BFA #x6BFB #x6BFC #x6BFE #x6BFF #x6C00 #x6C01 #x6C02 Err bitreich.org 70 i- #x6C03 #x6C04 #x6C08 #x6C09 #x6C0A #x6C0B #x6C0C #x6C0E #x6C12 #x6C17 Err bitreich.org 70 i- #x6C1C #x6C1D #x6C1E #x6C20 #x6C23 #x6C25 #x6C2B #x6C2C #x6C2D #x6C31 Err bitreich.org 70 i- #x6C33 #x6C36 #x6C37 #x6C39 #x6C3A #x6C3B #x6C3C #x6C3E #x6C3F #x6C43 Err bitreich.org 70 i- #x6C44 #x6C45 #x6C48 #x6C4B #x6C4C #x6C4D #x6C4E #x6C4F #x6C51 #x6C52 Err bitreich.org 70 i- #x6C53 #x6C56 #x6C58 #x6C59 #x6C5A #x6C62 #x6C63 #x6C65 #x6C66 #x6C67 Err bitreich.org 70 i- #x6C6B #x6C6C #x6C6D #x6C6E #x6C6F #x6C71 #x6C73 #x6C75 #x6C77 #x6C78 Err bitreich.org 70 i- #x6C7A #x6C7B #x6C7C #x6C7F #x6C80 #x6C84 #x6C87 #x6C8A #x6C8B #x6C8D Err bitreich.org 70 i- #x6C8E #x6C91 #x6C92 #x6C95 #x6C96 #x6C97 #x6C98 #x6C9A #x6C9C #x6C9D Err bitreich.org 70 i- #x6C9E #x6CA0 #x6CA2 #x6CA8 #x6CAC #x6CAF #x6CB0 #x6CB4 #x6CB5 #x6CB6 Err bitreich.org 70 i- #x6CB7 #x6CBA #x6CC0 #x6CC1 #x6CC2 #x6CC3 #x6CC6 #x6CC7 #x6CC8 #x6CCB Err bitreich.org 70 i- #x6CCD #x6CCE #x6CCF #x6CD1 #x6CD2 #x6CD8 #x6CD9 #x6CDA #x6CDC #x6CDD Err bitreich.org 70 i- #x6CDF #x6CE4 #x6CE6 #x6CE7 #x6CE9 #x6CEC #x6CED #x6CF2 #x6CF4 #x6CF9 Err bitreich.org 70 i- #x6CFF #x6D00 #x6D02 #x6D03 #x6D05 #x6D06 #x6D08 #x6D09 #x6D0A #x6D0D Err bitreich.org 70 i- #x6D0F #x6D10 #x6D11 #x6D13 #x6D14 #x6D15 #x6D16 #x6D18 #x6D1C #x6D1D Err bitreich.org 70 i- #x6D1F #x6D20 #x6D21 #x6D22 #x6D23 #x6D24 #x6D26 #x6D28 #x6D29 #x6D2C Err bitreich.org 70 i- #x6D2D #x6D2F #x6D30 #x6D34 #x6D36 #x6D37 #x6D38 #x6D3A #x6D3F #x6D40 Err bitreich.org 70 i- #x6D42 #x6D44 #x6D49 #x6D4C #x6D50 #x6D55 #x6D56 #x6D57 #x6D58 #x6D5B Err bitreich.org 70 i- #x6D5D #x6D5F #x6D61 #x6D62 #x6D64 #x6D65 #x6D67 #x6D68 #x6D6B #x6D6C Err bitreich.org 70 i- #x6D6D #x6D70 #x6D71 #x6D72 #x6D73 #x6D75 #x6D76 #x6D79 #x6D7A #x6D7B Err bitreich.org 70 i- #x6D7D #x6D7E #x6D7F #x6D80 #x6D81 #x6D83 #x6D84 #x6D86 #x6D87 #x6D8A Err bitreich.org 70 i- #x6D8B #x6D8D #x6D8F #x6D90 #x6D92 #x6D96 #x6D97 #x6D98 #x6D99 #x6D9A Err bitreich.org 70 i- #x6D9C #x6DA2 #x6DA5 #x6DAC #x6DAD #x6DB0 #x6DB1 #x6DB3 #x6DB4 #x6DB6 Err bitreich.org 70 i- #x6DB7 #x6DB9 #x6DBA #x6DBB #x6DBC #x6DBD #x6DBE #x6DC1 #x6DC2 #x6DC3 Err bitreich.org 70 i- #x6DC8 #x6DC9 #x6DCA #x6DCD #x6DCE #x6DCF #x6DD0 #x6DD2 #x6DD3 #x6DD4 Err bitreich.org 70 i- #x6DD5 #x6DD7 #x6DDA #x6DDB #x6DDC #x6DDF #x6DE2 #x6DE3 #x6DE5 #x6DE7 Err bitreich.org 70 i- #x6DE8 #x6DE9 #x6DEA #x6DED #x6DEF #x6DF0 #x6DF2 #x6DF4 #x6DF5 #x6DF6 Err bitreich.org 70 i- #x6DF8 #x6DFA #x6DFD #x6DFE #x6DFF #x6E00 #x6E01 #x6E02 #x6E03 #x6E04 Err bitreich.org 70 i- #x6E06 #x6E07 #x6E08 #x6E09 #x6E0B #x6E0F #x6E12 #x6E13 #x6E15 #x6E18 Err bitreich.org 70 i- #x6E19 #x6E1B #x6E1C #x6E1E #x6E1F #x6E22 #x6E26 #x6E27 #x6E28 #x6E2A Err bitreich.org 70 i- #x6E2C #x6E2E #x6E30 #x6E31 #x6E33 #x6E35 #x6E36 #x6E37 #x6E39 #x6E3B Err bitreich.org 70 i- #x6E3C #x6E3D #x6E3E #x6E3F #x6E40 #x6E41 #x6E42 #x6E45 #x6E46 #x6E47 Err bitreich.org 70 i- #x6E48 #x6E49 #x6E4A #x6E4B #x6E4C #x6E4F #x6E50 #x6E51 #x6E52 #x6E55 Err bitreich.org 70 i- #x6E57 #x6E59 #x6E5A #x6E5C #x6E5D #x6E5E #x6E60 #x6E61 #x6E62 #x6E63 Err bitreich.org 70 i- #x6E64 #x6E65 #x6E66 #x6E67 #x6E68 #x6E69 #x6E6A #x6E6C #x6E6D #x6E6F Err bitreich.org 70 i- #x6E70 #x6E71 #x6E72 #x6E73 #x6E74 #x6E75 #x6E76 #x6E77 #x6E78 #x6E79 Err bitreich.org 70 i- #x6E7A #x6E7B #x6E7C #x6E7D #x6E80 #x6E81 #x6E82 #x6E84 #x6E87 #x6E88 Err bitreich.org 70 i- #x6E8A #x6E8B #x6E8C #x6E8D #x6E8E #x6E91 #x6E92 #x6E93 #x6E94 #x6E95 Err bitreich.org 70 i- #x6E96 #x6E97 #x6E99 #x6E9A #x6E9B #x6E9D #x6E9E #x6EA0 #x6EA1 #x6EA3 Err bitreich.org 70 i- #x6EA4 #x6EA6 #x6EA8 #x6EA9 #x6EAB #x6EAC #x6EAD #x6EAE #x6EB0 #x6EB3 Err bitreich.org 70 i- #x6EB5 #x6EB8 #x6EB9 #x6EBC #x6EBE #x6EBF #x6EC0 #x6EC3 #x6EC4 #x6EC5 Err bitreich.org 70 i- #x6EC6 #x6EC8 #x6EC9 #x6ECA #x6ECC #x6ECD #x6ECE #x6ED0 #x6ED2 #x6ED6 Err bitreich.org 70 i- #x6ED8 #x6ED9 #x6EDB #x6EDC #x6EDD #x6EE3 #x6EE7 #x6EEA #x6EEB #x6EEC Err bitreich.org 70 i- #x6EED #x6EEE #x6EEF #x6EF0 #x6EF1 #x6EF2 #x6EF3 #x6EF5 #x6EF6 #x6EF7 Err bitreich.org 70 i- #x6EF8 #x6EFA #x6EFB #x6EFC #x6EFD #x6EFE #x6EFF #x6F00 #x6F01 #x6F03 Err bitreich.org 70 i- #x6F04 #x6F05 #x6F07 #x6F08 #x6F0A #x6F0B #x6F0C #x6F0D #x6F0E #x6F10 Err bitreich.org 70 i- #x6F11 #x6F12 #x6F16 #x6F17 #x6F18 #x6F19 #x6F1A #x6F1B #x6F1C #x6F1D Err bitreich.org 70 i- #x6F1E #x6F1F #x6F21 #x6F22 #x6F23 #x6F25 #x6F26 #x6F27 #x6F28 #x6F2C Err bitreich.org 70 i- #x6F2E #x6F30 #x6F32 #x6F34 #x6F35 #x6F37 #x6F38 #x6F39 #x6F3A #x6F3B Err bitreich.org 70 i- #x6F3C #x6F3D #x6F3F #x6F40 #x6F41 #x6F42 #x6F43 #x6F44 #x6F45 #x6F48 Err bitreich.org 70 i- #x6F49 #x6F4A #x6F4C #x6F4E #x6F4F #x6F50 #x6F51 #x6F52 #x6F53 #x6F54 Err bitreich.org 70 i- #x6F55 #x6F56 #x6F57 #x6F59 #x6F5A #x6F5B #x6F5D #x6F5F #x6F60 #x6F61 Err bitreich.org 70 i- #x6F63 #x6F64 #x6F65 #x6F67 #x6F68 #x6F69 #x6F6A #x6F6B #x6F6C #x6F6F Err bitreich.org 70 i- #x6F70 #x6F71 #x6F73 #x6F75 #x6F76 #x6F77 #x6F79 #x6F7B #x6F7D #x6F7E Err bitreich.org 70 i- #x6F7F #x6F80 #x6F81 #x6F82 #x6F83 #x6F85 #x6F86 #x6F87 #x6F8A #x6F8B Err bitreich.org 70 i- #x6F8F #x6F90 #x6F91 #x6F92 #x6F93 #x6F94 #x6F95 #x6F96 #x6F97 #x6F98 Err bitreich.org 70 i- #x6F99 #x6F9A #x6F9B #x6F9D #x6F9E #x6F9F #x6FA0 #x6FA2 #x6FA3 #x6FA4 Err bitreich.org 70 i- #x6FA5 #x6FA6 #x6FA8 #x6FA9 #x6FAA #x6FAB #x6FAC #x6FAD #x6FAE #x6FAF Err bitreich.org 70 i- #x6FB0 #x6FB1 #x6FB2 #x6FB4 #x6FB5 #x6FB7 #x6FB8 #x6FBA #x6FBB #x6FBC Err bitreich.org 70 i- #x6FBD #x6FBE #x6FBF #x6FC1 #x6FC3 #x6FC4 #x6FC5 #x6FC6 #x6FC7 #x6FC8 Err bitreich.org 70 i- #x6FCA #x6FCB #x6FCC #x6FCD #x6FCE #x6FCF #x6FD0 #x6FD3 #x6FD4 #x6FD5 Err bitreich.org 70 i- #x6FD6 #x6FD7 #x6FD8 #x6FD9 #x6FDA #x6FDB #x6FDC #x6FDD #x6FDF #x6FE2 Err bitreich.org 70 i- #x6FE3 #x6FE4 #x6FE5 #x6FE6 #x6FE7 #x6FE8 #x6FE9 #x6FEA #x6FEB #x6FEC Err bitreich.org 70 i- #x6FED #x6FF0 #x6FF1 #x6FF2 #x6FF3 #x6FF4 #x6FF5 #x6FF6 #x6FF7 #x6FF8 Err bitreich.org 70 i- #x6FF9 #x6FFA #x6FFB #x6FFC #x6FFD #x6FFE #x6FFF #x7000 #x7001 #x7002 Err bitreich.org 70 i- #x7003 #x7004 #x7005 #x7006 #x7007 #x7008 #x7009 #x700A #x700B #x700C Err bitreich.org 70 i- #x700D #x700E #x700F #x7010 #x7012 #x7013 #x7014 #x7015 #x7016 #x7017 Err bitreich.org 70 i- #x7018 #x7019 #x701C #x701D #x701E #x701F #x7020 #x7021 #x7022 #x7024 Err bitreich.org 70 i- #x7025 #x7026 #x7027 #x7028 #x7029 #x702A #x702B #x702C #x702D #x702E Err bitreich.org 70 i- #x702F #x7030 #x7031 #x7032 #x7033 #x7034 #x7036 #x7037 #x7038 #x703A Err bitreich.org 70 i- #x703B #x703C #x703D #x703E #x703F #x7040 #x7041 #x7042 #x7043 #x7044 Err bitreich.org 70 i- #x7045 #x7046 #x7047 #x7048 #x7049 #x704A #x704B #x704D #x704E #x7050 Err bitreich.org 70 i- #x7051 #x7052 #x7053 #x7054 #x7055 #x7056 #x7057 #x7058 #x7059 #x705A Err bitreich.org 70 i- #x705B #x705C #x705D #x705F #x7060 #x7061 #x7062 #x7063 #x7064 #x7065 Err bitreich.org 70 i- #x7066 #x7067 #x7068 #x7069 #x706A #x706E #x7071 #x7072 #x7073 #x7074 Err bitreich.org 70 i- #x7077 #x7079 #x707A #x707B #x707D #x7081 #x7082 #x7083 #x7084 #x7086 Err bitreich.org 70 i- #x7087 #x7088 #x708B #x708C #x708D #x708F #x7090 #x7091 #x7093 #x7097 Err bitreich.org 70 i- #x7098 #x709A #x709B #x709E #x709F #x70A0 #x70A1 #x70A2 #x70A3 #x70A4 Err bitreich.org 70 i- #x70A5 #x70A6 #x70A7 #x70A8 #x70A9 #x70AA #x70B0 #x70B2 #x70B4 #x70B5 Err bitreich.org 70 i- #x70B6 #x70BA #x70BE #x70BF #x70C4 #x70C5 #x70C6 #x70C7 #x70C9 #x70CB Err bitreich.org 70 i- #x70CC #x70CD #x70CE #x70CF #x70D0 #x70D1 #x70D2 #x70D3 #x70D4 #x70D5 Err bitreich.org 70 i- #x70D6 #x70D7 #x70DA #x70DC #x70DD #x70DE #x70E0 #x70E1 #x70E2 #x70E3 Err bitreich.org 70 i- #x70E5 #x70EA #x70EE #x70F0 #x70F1 #x70F2 #x70F3 #x70F4 #x70F5 #x70F6 Err bitreich.org 70 i- #x70F8 #x70FA #x70FB #x70FC #x70FE #x70FF #x7100 #x7101 #x7102 #x7103 Err bitreich.org 70 i- #x7104 #x7105 #x7106 #x7107 #x7108 #x710B #x710C #x710D #x710E #x710F Err bitreich.org 70 i- #x7111 #x7112 #x7114 #x7117 #x711B #x711C #x711D #x711E #x711F #x7120 Err bitreich.org 70 i- #x7121 #x7122 #x7123 #x7124 #x7125 #x7127 #x7128 #x7129 #x712A #x712B Err bitreich.org 70 i- #x712C #x712D #x712E #x7132 #x7133 #x7134 #x7135 #x7137 #x7138 #x7139 Err bitreich.org 70 i- #x713A #x713B #x713C #x713D #x713E #x713F #x7140 #x7141 #x7142 #x7143 Err bitreich.org 70 i- #x7144 #x7146 #x7147 #x7148 #x7149 #x714B #x714D #x714F #x7150 #x7151 Err bitreich.org 70 i- #x7152 #x7153 #x7154 #x7155 #x7156 #x7157 #x7158 #x7159 #x715A #x715B Err bitreich.org 70 i- #x715D #x715F #x7160 #x7161 #x7162 #x7163 #x7165 #x7169 #x716A #x716B Err bitreich.org 70 i- #x716C #x716D #x716F #x7170 #x7171 #x7174 #x7175 #x7176 #x7177 #x7179 Err bitreich.org 70 i- #x717B #x717C #x717E #x717F #x7180 #x7181 #x7182 #x7183 #x7185 #x7186 Err bitreich.org 70 i- #x7187 #x7188 #x7189 #x718B #x718C #x718D #x718E #x7190 #x7191 #x7192 Err bitreich.org 70 i- #x7193 #x7195 #x7196 #x7197 #x719A #x719B #x719C #x719D #x719E #x71A1 Err bitreich.org 70 i- #x71A2 #x71A3 #x71A4 #x71A5 #x71A6 #x71A7 #x71A9 #x71AA #x71AB #x71AD Err bitreich.org 70 i- #x71AE #x71AF #x71B0 #x71B1 #x71B2 #x71B4 #x71B6 #x71B7 #x71B8 #x71BA Err bitreich.org 70 i- #x71BB #x71BC #x71BD #x71BE #x71BF #x71C0 #x71C1 #x71C2 #x71C4 #x71C5 Err bitreich.org 70 i- #x71C6 #x71C7 #x71C8 #x71C9 #x71CA #x71CB #x71CC #x71CD #x71CF #x71D0 Err bitreich.org 70 i- #x71D1 #x71D2 #x71D3 #x71D6 #x71D7 #x71D8 #x71D9 #x71DA #x71DB #x71DC Err bitreich.org 70 i- #x71DD #x71DE #x71DF #x71E1 #x71E2 #x71E3 #x71E4 #x71E6 #x71E8 #x71E9 Err bitreich.org 70 i- #x71EA #x71EB #x71EC #x71ED #x71EF #x71F0 #x71F1 #x71F2 #x71F3 #x71F4 Err bitreich.org 70 i- #x71F5 #x71F6 #x71F7 #x71F8 #x71FA #x71FB #x71FC #x71FD #x71FE #x71FF Err bitreich.org 70 i- #x7200 #x7201 #x7202 #x7203 #x7204 #x7205 #x7207 #x7208 #x7209 #x720A Err bitreich.org 70 i- #x720B #x720C #x720D #x720E #x720F #x7210 #x7211 #x7212 #x7213 #x7214 Err bitreich.org 70 i- #x7215 #x7216 #x7217 #x7218 #x7219 #x721A #x721B #x721C #x721E #x721F Err bitreich.org 70 i- #x7220 #x7221 #x7222 #x7223 #x7224 #x7225 #x7226 #x7227 #x7229 #x722B Err bitreich.org 70 i- #x722D #x722E #x722F #x7232 #x7233 #x7234 #x723A #x723C #x723E #x7240 Err bitreich.org 70 i- #x7241 #x7242 #x7243 #x7244 #x7245 #x7246 #x7249 #x724A #x724B #x724E Err bitreich.org 70 i- #x724F #x7250 #x7251 #x7253 #x7254 #x7255 #x7257 #x7258 #x725A #x725C Err bitreich.org 70 i- #x725E #x7260 #x7263 #x7264 #x7265 #x7268 #x726A #x726B #x726C #x726D Err bitreich.org 70 i- #x7270 #x7271 #x7273 #x7274 #x7276 #x7277 #x7278 #x727B #x727C #x727D Err bitreich.org 70 i- #x7282 #x7283 #x7285 #x7286 #x7287 #x7288 #x7289 #x728C #x728E #x7290 Err bitreich.org 70 i- #x7291 #x7293 #x7294 #x7295 #x7296 #x7297 #x7298 #x7299 #x729A #x729B Err bitreich.org 70 i- #x729C #x729D #x729E #x72A0 #x72A1 #x72A2 #x72A3 #x72A4 #x72A5 #x72A6 Err bitreich.org 70 i- #x72A7 #x72A8 #x72A9 #x72AA #x72AB #x72AE #x72B1 #x72B2 #x72B3 #x72B5 Err bitreich.org 70 i- #x72BA #x72BB #x72BC #x72BD #x72BE #x72BF #x72C0 #x72C5 #x72C6 #x72C7 Err bitreich.org 70 i- #x72C9 #x72CA #x72CB #x72CC #x72CF #x72D1 #x72D3 #x72D4 #x72D5 #x72D6 Err bitreich.org 70 i- #x72D8 #x72DA #x72DB #x72DC #x72DD #x72DF #x72E2 #x72E3 #x72E4 #x72E5 Err bitreich.org 70 i- #x72E6 #x72E7 #x72EA #x72EB #x72F5 #x72F6 #x72F9 #x72FD #x72FE #x72FF Err bitreich.org 70 i- #x7300 #x7302 #x7304 #x7305 #x7306 #x7307 #x7308 #x7309 #x730B #x730C Err bitreich.org 70 i- #x730D #x730F #x7310 #x7311 #x7312 #x7314 #x7318 #x7319 #x731A #x731F Err bitreich.org 70 i- #x7320 #x7323 #x7324 #x7326 #x7327 #x7328 #x732D #x732F #x7330 #x7332 Err bitreich.org 70 i- #x7333 #x7335 #x7336 #x733A #x733B #x733C #x733D #x7340 #x7341 #x7342 Err bitreich.org 70 i- #x7343 #x7344 #x7345 #x7346 #x7347 #x7348 #x7349 #x734A #x734B #x734C Err bitreich.org 70 i- #x734E #x734F #x7351 #x7353 #x7354 #x7355 #x7356 #x7358 #x7359 #x735A Err bitreich.org 70 i- #x735B #x735C #x735D #x735E #x735F #x7361 #x7362 #x7363 #x7364 #x7365 Err bitreich.org 70 i- #x7366 #x7367 #x7368 #x7369 #x736A #x736B #x736E #x7370 #x7371 #x7372 Err bitreich.org 70 i- #x7373 #x7374 #x7375 #x7376 #x7377 #x7378 #x7379 #x737A #x737B #x737C Err bitreich.org 70 i- #x737D #x737F #x7380 #x7381 #x7382 #x7383 #x7385 #x7386 #x7388 #x738A Err bitreich.org 70 i- #x738C #x738D #x738F #x7390 #x7392 #x7393 #x7394 #x7395 #x7397 #x7398 Err bitreich.org 70 i- #x7399 #x739A #x739C #x739D #x739E #x73A0 #x73A1 #x73A3 #x73A4 #x73A5 Err bitreich.org 70 i- #x73A6 #x73A7 #x73A8 #x73AA #x73AC #x73AD #x73B1 #x73B4 #x73B5 #x73B6 Err bitreich.org 70 i- #x73B8 #x73B9 #x73BC #x73BD #x73BE #x73BF #x73C1 #x73C3 #x73C4 #x73C5 Err bitreich.org 70 i- #x73C6 #x73C7 #x73CB #x73CC #x73CE #x73D2 #x73D3 #x73D4 #x73D5 #x73D6 Err bitreich.org 70 i- #x73D7 #x73D8 #x73DA #x73DB #x73DC #x73DD #x73DF #x73E1 #x73E2 #x73E3 Err bitreich.org 70 i- #x73E4 #x73E6 #x73E8 #x73EA #x73EB #x73EC #x73EE #x73EF #x73F0 #x73F1 Err bitreich.org 70 i- #x73F3 #x73F4 #x73F5 #x73F6 #x73F7 #x73F8 #x73F9 #x73FA #x73FB #x73FC Err bitreich.org 70 i- #x73FD #x73FE #x73FF #x7400 #x7401 #x7402 #x7404 #x7407 #x7408 #x740B Err bitreich.org 70 i- #x740C #x740D #x740E #x7411 #x7412 #x7413 #x7414 #x7415 #x7416 #x7417 Err bitreich.org 70 i- #x7418 #x7419 #x741C #x741D #x741E #x741F #x7420 #x7421 #x7423 #x7424 Err bitreich.org 70 i- #x7427 #x7429 #x742B #x742D #x742F #x7431 #x7432 #x7437 #x7438 #x7439 Err bitreich.org 70 i- #x743A #x743B #x743D #x743E #x743F #x7440 #x7442 #x7443 #x7444 #x7445 Err bitreich.org 70 i- #x7446 #x7447 #x7448 #x7449 #x744A #x744B #x744C #x744D #x744E #x744F Err bitreich.org 70 i- #x7450 #x7451 #x7452 #x7453 #x7454 #x7456 #x7458 #x745D #x7460 #x7461 Err bitreich.org 70 i- #x7462 #x7463 #x7464 #x7465 #x7466 #x7467 #x7468 #x7469 #x746A #x746B Err bitreich.org 70 i- #x746C #x746E #x746F #x7471 #x7472 #x7473 #x7474 #x7475 #x7478 #x7479 Err bitreich.org 70 i- #x747A #x747B #x747C #x747D #x747F #x7482 #x7484 #x7485 #x7486 #x7488 Err bitreich.org 70 i- #x7489 #x748A #x748C #x748D #x748F #x7491 #x7492 #x7493 #x7494 #x7495 Err bitreich.org 70 i- #x7496 #x7497 #x7498 #x7499 #x749A #x749B #x749D #x749F #x74A0 #x74A1 Err bitreich.org 70 i- #x74A2 #x74A3 #x74A4 #x74A5 #x74A6 #x74AA #x74AB #x74AC #x74AD #x74AE Err bitreich.org 70 i- #x74AF #x74B0 #x74B1 #x74B2 #x74B3 #x74B4 #x74B5 #x74B6 #x74B7 #x74B8 Err bitreich.org 70 i- #x74B9 #x74BB #x74BC #x74BD #x74BE #x74BF #x74C0 #x74C1 #x74C2 #x74C3 Err bitreich.org 70 i- #x74C4 #x74C5 #x74C6 #x74C7 #x74C8 #x74C9 #x74CA #x74CB #x74CC #x74CD Err bitreich.org 70 i- #x74CE #x74CF #x74D0 #x74D1 #x74D3 #x74D4 #x74D5 #x74D6 #x74D7 #x74D8 Err bitreich.org 70 i- #x74D9 #x74DA #x74DB #x74DD #x74DF #x74E1 #x74E5 #x74E7 #x74E8 #x74E9 Err bitreich.org 70 i- #x74EA #x74EB #x74EC #x74ED #x74F0 #x74F1 #x74F2 #x74F3 #x74F5 #x74F8 Err bitreich.org 70 i- #x74F9 #x74FA #x74FB #x74FC #x74FD #x74FE #x7500 #x7501 #x7502 #x7503 Err bitreich.org 70 i- #x7505 #x7506 #x7507 #x7508 #x7509 #x750A #x750B #x750C #x750E #x7510 Err bitreich.org 70 i- #x7512 #x7514 #x7515 #x7516 #x7517 #x751B #x751D #x751E #x7520 #x7521 Err bitreich.org 70 i- #x7522 #x7523 #x7524 #x7526 #x7527 #x752A #x752E #x7534 #x7536 #x7539 Err bitreich.org 70 i- #x753C #x753D #x753F #x7541 #x7542 #x7543 #x7544 #x7546 #x7547 #x7549 Err bitreich.org 70 i- #x754A #x754D #x7550 #x7551 #x7552 #x7553 #x7555 #x7556 #x7557 #x7558 Err bitreich.org 70 i- #x755D #x755E #x755F #x7560 #x7561 #x7562 #x7563 #x7564 #x7567 #x7568 Err bitreich.org 70 i- #x7569 #x756B #x756C #x756D #x756E #x756F #x7570 #x7571 #x7573 #x7575 Err bitreich.org 70 i- #x7576 #x7577 #x757A #x757B #x757C #x757D #x757E #x7580 #x7581 #x7582 Err bitreich.org 70 i- #x7584 #x7585 #x7587 #x7588 #x7589 #x758A #x758C #x758D #x758E #x7590 Err bitreich.org 70 i- #x7593 #x7595 #x7598 #x759B #x759C #x759E #x75A2 #x75A6 #x75A7 #x75A8 Err bitreich.org 70 i- #x75A9 #x75AA #x75AD #x75B6 #x75B7 #x75BA #x75BB #x75BF #x75C0 #x75C1 Err bitreich.org 70 i- #x75C6 #x75CB #x75CC #x75CE #x75CF #x75D0 #x75D1 #x75D3 #x75D7 #x75D9 Err bitreich.org 70 i- #x75DA #x75DC #x75DD #x75DF #x75E0 #x75E1 #x75E5 #x75E9 #x75EC #x75ED Err bitreich.org 70 i- #x75EE #x75EF #x75F2 #x75F3 #x75F5 #x75F6 #x75F7 #x75F8 #x75FA #x75FB Err bitreich.org 70 i- #x75FD #x75FE #x7602 #x7604 #x7606 #x7607 #x7608 #x7609 #x760B #x760D Err bitreich.org 70 i- #x760E #x760F #x7611 #x7612 #x7613 #x7614 #x7616 #x761A #x761C #x761D Err bitreich.org 70 i- #x761E #x7621 #x7623 #x7627 #x7628 #x762C #x762E #x762F #x7631 #x7632 Err bitreich.org 70 i- #x7636 #x7637 #x7639 #x763A #x763B #x763D #x7641 #x7642 #x7644 #x7645 Err bitreich.org 70 i- #x7646 #x7647 #x7648 #x7649 #x764A #x764B #x764E #x764F #x7650 #x7651 Err bitreich.org 70 i- #x7652 #x7653 #x7655 #x7657 #x7658 #x7659 #x765A #x765B #x765D #x765F Err bitreich.org 70 i- #x7660 #x7661 #x7662 #x7664 #x7665 #x7666 #x7667 #x7668 #x7669 #x766A Err bitreich.org 70 i- #x766C #x766D #x766E #x7670 #x7671 #x7672 #x7673 #x7674 #x7675 #x7676 Err bitreich.org 70 i- #x7677 #x7679 #x767A #x767C #x767F #x7680 #x7681 #x7683 #x7685 #x7689 Err bitreich.org 70 i- #x768A #x768C #x768D #x768F #x7690 #x7692 #x7694 #x7695 #x7697 #x7698 Err bitreich.org 70 i- #x769A #x769B #x769C #x769D #x769E #x769F #x76A0 #x76A1 #x76A2 #x76A3 Err bitreich.org 70 i- #x76A5 #x76A6 #x76A7 #x76A8 #x76A9 #x76AA #x76AB #x76AC #x76AD #x76AF Err bitreich.org 70 i- #x76B0 #x76B3 #x76B5 #x76B6 #x76B7 #x76B8 #x76B9 #x76BA #x76BB #x76BC Err bitreich.org 70 i- #x76BD #x76BE #x76C0 #x76C1 #x76C3 #x76C4 #x76C7 #x76C9 #x76CB #x76CC Err bitreich.org 70 i- #x76D3 #x76D5 #x76D9 #x76DA #x76DC #x76DD #x76DE #x76E0 #x76E1 #x76E2 Err bitreich.org 70 i- #x76E3 #x76E4 #x76E6 #x76E7 #x76E8 #x76E9 #x76EA #x76EB #x76EC #x76ED Err bitreich.org 70 i- #x76F0 #x76F3 #x76F5 #x76F6 #x76F7 #x76FA #x76FB #x76FD #x76FF #x7700 Err bitreich.org 70 i- #x7702 #x7703 #x7705 #x7706 #x770A #x770C #x770E #x770F #x7710 #x7711 Err bitreich.org 70 i- #x7712 #x7713 #x7714 #x7715 #x7716 #x7717 #x7718 #x771B #x771C #x771D Err bitreich.org 70 i- #x771E #x7721 #x7723 #x7724 #x7725 #x7727 #x772A #x772B #x772C #x772E Err bitreich.org 70 i- #x7730 #x7731 #x7732 #x7733 #x7734 #x7739 #x773B #x773D #x773E #x773F Err bitreich.org 70 i- #x7742 #x7744 #x7745 #x7746 #x7748 #x7749 #x774A #x774B #x774C #x774D Err bitreich.org 70 i- #x774E #x774F #x7752 #x7753 #x7754 #x7755 #x7756 #x7757 #x7758 #x7759 Err bitreich.org 70 i- #x775C #x775D #x775E #x775F #x7760 #x7764 #x7767 #x7769 #x776A #x776D Err bitreich.org 70 i- #x776E #x776F #x7770 #x7771 #x7772 #x7773 #x7774 #x7775 #x7776 #x7777 Err bitreich.org 70 i- #x7778 #x777A #x777B #x777C #x7781 #x7782 #x7783 #x7786 #x7787 #x7788 Err bitreich.org 70 i- #x7789 #x778A #x778B #x778F #x7790 #x7793 #x7794 #x7795 #x7796 #x7797 Err bitreich.org 70 i- #x7798 #x7799 #x779A #x779B #x779C #x779D #x779E #x77A1 #x77A3 #x77A4 Err bitreich.org 70 i- #x77A6 #x77A8 #x77AB #x77AD #x77AE #x77AF #x77B1 #x77B2 #x77B4 #x77B6 Err bitreich.org 70 i- #x77B7 #x77B8 #x77B9 #x77BA #x77BC #x77BE #x77C0 #x77C1 #x77C2 #x77C3 Err bitreich.org 70 i- #x77C4 #x77C5 #x77C6 #x77C7 #x77C8 #x77C9 #x77CA #x77CB #x77CC #x77CE Err bitreich.org 70 i- #x77CF #x77D0 #x77D1 #x77D2 #x77D3 #x77D4 #x77D5 #x77D6 #x77D8 #x77D9 Err bitreich.org 70 i- #x77DA #x77DD #x77DE #x77DF #x77E0 #x77E1 #x77E4 #x77E6 #x77E8 #x77EA Err bitreich.org 70 i- #x77EF #x77F0 #x77F1 #x77F2 #x77F4 #x77F5 #x77F7 #x77F9 #x77FA #x77FB Err bitreich.org 70 i- #x77FC #x7803 #x7804 #x7805 #x7806 #x7807 #x7808 #x780A #x780B #x780E Err bitreich.org 70 i- #x780F #x7810 #x7813 #x7815 #x7819 #x781B #x781E #x7820 #x7821 #x7822 Err bitreich.org 70 i- #x7824 #x7828 #x782A #x782B #x782E #x782F #x7831 #x7832 #x7833 #x7835 Err bitreich.org 70 i- #x7836 #x783D #x783F #x7841 #x7842 #x7843 #x7844 #x7846 #x7848 #x7849 Err bitreich.org 70 i- #x784A #x784B #x784D #x784F #x7851 #x7853 #x7854 #x7858 #x7859 #x785A Err bitreich.org 70 i- #x785B #x785C #x785E #x785F #x7860 #x7861 #x7862 #x7863 #x7864 #x7865 Err bitreich.org 70 i- #x7866 #x7867 #x7868 #x7869 #x786F #x7870 #x7871 #x7872 #x7873 #x7874 Err bitreich.org 70 i- #x7875 #x7876 #x7878 #x7879 #x787A #x787B #x787D #x787E #x787F #x7880 Err bitreich.org 70 i- #x7881 #x7882 #x7883 #x7884 #x7885 #x7886 #x7888 #x788A #x788B #x788F Err bitreich.org 70 i- #x7890 #x7892 #x7894 #x7895 #x7896 #x7899 #x789D #x789E #x78A0 #x78A2 Err bitreich.org 70 i- #x78A4 #x78A6 #x78A8 #x78A9 #x78AA #x78AB #x78AC #x78AD #x78AE #x78AF Err bitreich.org 70 i- #x78B5 #x78B6 #x78B7 #x78B8 #x78BA #x78BB #x78BC #x78BD #x78BF #x78C0 Err bitreich.org 70 i- #x78C2 #x78C3 #x78C4 #x78C6 #x78C7 #x78C8 #x78CC #x78CD #x78CE #x78CF Err bitreich.org 70 i- #x78D1 #x78D2 #x78D3 #x78D6 #x78D7 #x78D8 #x78DA #x78DB #x78DC #x78DD Err bitreich.org 70 i- #x78DE #x78DF #x78E0 #x78E1 #x78E2 #x78E3 #x78E4 #x78E5 #x78E6 #x78E7 Err bitreich.org 70 i- #x78E9 #x78EA #x78EB #x78ED #x78EE #x78EF #x78F0 #x78F1 #x78F3 #x78F5 Err bitreich.org 70 i- #x78F6 #x78F8 #x78F9 #x78FB #x78FC #x78FD #x78FE #x78FF #x7900 #x7902 Err bitreich.org 70 i- #x7903 #x7904 #x7906 #x7907 #x7908 #x7909 #x790A #x790B #x790C #x790D Err bitreich.org 70 i- #x790E #x790F #x7910 #x7911 #x7912 #x7914 #x7915 #x7916 #x7917 #x7918 Err bitreich.org 70 i- #x7919 #x791A #x791B #x791C #x791D #x791F #x7920 #x7921 #x7922 #x7923 Err bitreich.org 70 i- #x7925 #x7926 #x7927 #x7928 #x7929 #x792A #x792B #x792C #x792D #x792E Err bitreich.org 70 i- #x792F #x7930 #x7931 #x7932 #x7933 #x7935 #x7936 #x7937 #x7938 #x7939 Err bitreich.org 70 i- #x793D #x793F #x7942 #x7943 #x7944 #x7945 #x7947 #x794A #x794B #x794C Err bitreich.org 70 i- #x794D #x794E #x794F #x7950 #x7951 #x7952 #x7954 #x7955 #x7958 #x7959 Err bitreich.org 70 i- #x7961 #x7963 #x7964 #x7966 #x7969 #x796A #x796B #x796C #x796E #x7970 Err bitreich.org 70 i- #x7971 #x7972 #x7973 #x7974 #x7975 #x7976 #x7979 #x797B #x797C #x797D Err bitreich.org 70 i- #x797E #x797F #x7982 #x7983 #x7986 #x7987 #x7988 #x7989 #x798B #x798C Err bitreich.org 70 i- #x798D #x798E #x7990 #x7991 #x7992 #x7993 #x7994 #x7995 #x7996 #x7997 Err bitreich.org 70 i- #x7998 #x7999 #x799B #x799C #x799D #x799E #x799F #x79A0 #x79A1 #x79A2 Err bitreich.org 70 i- #x79A3 #x79A4 #x79A5 #x79A6 #x79A8 #x79A9 #x79AA #x79AB #x79AC #x79AD Err bitreich.org 70 i- #x79AE #x79AF #x79B0 #x79B1 #x79B2 #x79B4 #x79B5 #x79B6 #x79B7 #x79B8 Err bitreich.org 70 i- #x79BC #x79BF #x79C2 #x79C4 #x79C5 #x79C7 #x79C8 #x79CA #x79CC #x79CE Err bitreich.org 70 i- #x79CF #x79D0 #x79D3 #x79D4 #x79D6 #x79D7 #x79D9 #x79DA #x79DB #x79DC Err bitreich.org 70 i- #x79DD #x79DE #x79E0 #x79E1 #x79E2 #x79E5 #x79E8 #x79EA #x79EC #x79EE Err bitreich.org 70 i- #x79F1 #x79F2 #x79F3 #x79F4 #x79F5 #x79F6 #x79F7 #x79F9 #x79FA #x79FC Err bitreich.org 70 i- #x79FE #x79FF #x7A01 #x7A04 #x7A05 #x7A07 #x7A08 #x7A09 #x7A0A #x7A0C Err bitreich.org 70 i- #x7A0F #x7A10 #x7A11 #x7A12 #x7A13 #x7A15 #x7A16 #x7A18 #x7A19 #x7A1B Err bitreich.org 70 i- #x7A1C #x7A1D #x7A1F #x7A21 #x7A22 #x7A24 #x7A25 #x7A26 #x7A27 #x7A28 Err bitreich.org 70 i- #x7A29 #x7A2A #x7A2B #x7A2C #x7A2D #x7A2E #x7A2F #x7A30 #x7A31 #x7A32 Err bitreich.org 70 i- #x7A34 #x7A35 #x7A36 #x7A38 #x7A3A #x7A3E #x7A40 #x7A41 #x7A42 #x7A43 Err bitreich.org 70 i- #x7A44 #x7A45 #x7A47 #x7A48 #x7A49 #x7A4A #x7A4B #x7A4C #x7A4D #x7A4E Err bitreich.org 70 i- #x7A4F #x7A50 #x7A52 #x7A53 #x7A54 #x7A55 #x7A56 #x7A58 #x7A59 #x7A5A Err bitreich.org 70 i- #x7A5B #x7A5C #x7A5D #x7A5E #x7A5F #x7A60 #x7A61 #x7A62 #x7A63 #x7A64 Err bitreich.org 70 i- #x7A65 #x7A66 #x7A67 #x7A68 #x7A69 #x7A6A #x7A6B #x7A6C #x7A6D #x7A6E Err bitreich.org 70 i- #x7A6F #x7A71 #x7A72 #x7A73 #x7A75 #x7A7B #x7A7C #x7A7D #x7A7E #x7A82 Err bitreich.org 70 i- #x7A85 #x7A87 #x7A89 #x7A8A #x7A8B #x7A8C #x7A8E #x7A8F #x7A90 #x7A93 Err bitreich.org 70 i- #x7A94 #x7A99 #x7A9A #x7A9B #x7A9E #x7AA1 #x7AA2 #x7AA3 #x7AA4 #x7AA7 Err bitreich.org 70 i- #x7AA9 #x7AAA #x7AAB #x7AAE #x7AAF #x7AB0 #x7AB1 #x7AB2 #x7AB4 #x7AB5 Err bitreich.org 70 i- #x7AB6 #x7AB7 #x7AB8 #x7AB9 #x7ABA #x7ABB #x7ABC #x7ABD #x7ABE #x7AC0 Err bitreich.org 70 i- #x7AC1 #x7AC2 #x7AC3 #x7AC4 #x7AC5 #x7AC6 #x7AC7 #x7AC8 #x7AC9 #x7ACA Err bitreich.org 70 i- #x7ACC #x7ACD #x7ACE #x7ACF #x7AD0 #x7AD1 #x7AD2 #x7AD3 #x7AD4 #x7AD5 Err bitreich.org 70 i- #x7AD7 #x7AD8 #x7ADA #x7ADB #x7ADC #x7ADD #x7AE1 #x7AE2 #x7AE4 #x7AE7 Err bitreich.org 70 i- #x7AE8 #x7AE9 #x7AEA #x7AEB #x7AEC #x7AEE #x7AF0 #x7AF1 #x7AF2 #x7AF3 Err bitreich.org 70 i- #x7AF4 #x7AF5 #x7AF6 #x7AF7 #x7AF8 #x7AFB #x7AFC #x7AFE #x7B00 #x7B01 Err bitreich.org 70 i- #x7B02 #x7B05 #x7B07 #x7B09 #x7B0C #x7B0D #x7B0E #x7B10 #x7B12 #x7B13 Err bitreich.org 70 i- #x7B16 #x7B17 #x7B18 #x7B1A #x7B1C #x7B1D #x7B1F #x7B21 #x7B22 #x7B23 Err bitreich.org 70 i- #x7B27 #x7B29 #x7B2D #x7B2F #x7B30 #x7B32 #x7B34 #x7B35 #x7B36 #x7B37 Err bitreich.org 70 i- #x7B39 #x7B3B #x7B3D #x7B3F #x7B40 #x7B41 #x7B42 #x7B43 #x7B44 #x7B46 Err bitreich.org 70 i- #x7B48 #x7B4A #x7B4D #x7B4E #x7B53 #x7B55 #x7B57 #x7B59 #x7B5C #x7B5E Err bitreich.org 70 i- #x7B5F #x7B61 #x7B63 #x7B64 #x7B65 #x7B66 #x7B67 #x7B68 #x7B69 #x7B6A Err bitreich.org 70 i- #x7B6B #x7B6C #x7B6D #x7B6F #x7B70 #x7B73 #x7B74 #x7B76 #x7B78 #x7B7A Err bitreich.org 70 i- #x7B7C #x7B7D #x7B7F #x7B81 #x7B82 #x7B83 #x7B84 #x7B86 #x7B87 #x7B88 Err bitreich.org 70 i- #x7B89 #x7B8A #x7B8B #x7B8C #x7B8E #x7B8F #x7B91 #x7B92 #x7B93 #x7B96 Err bitreich.org 70 i- #x7B98 #x7B99 #x7B9A #x7B9B #x7B9E #x7B9F #x7BA0 #x7BA3 #x7BA4 #x7BA5 Err bitreich.org 70 i- #x7BAE #x7BAF #x7BB0 #x7BB2 #x7BB3 #x7BB5 #x7BB6 #x7BB7 #x7BB9 #x7BBA Err bitreich.org 70 i- #x7BBB #x7BBC #x7BBD #x7BBE #x7BBF #x7BC0 #x7BC2 #x7BC3 #x7BC4 #x7BC5 Err bitreich.org 70 i- #x7BC8 #x7BC9 #x7BCA #x7BCB #x7BCD #x7BCE #x7BCF #x7BD0 #x7BD2 #x7BD4 Err bitreich.org 70 i- #x7BD5 #x7BD6 #x7BD7 #x7BD8 #x7BDB #x7BDC #x7BDE #x7BDF #x7BE0 #x7BE2 Err bitreich.org 70 i- #x7BE3 #x7BE4 #x7BE7 #x7BE8 #x7BE9 #x7BEB #x7BEC #x7BED #x7BEF #x7BF0 Err bitreich.org 70 i- #x7BF2 #x7BF3 #x7BF4 #x7BF5 #x7BF6 #x7BF8 #x7BF9 #x7BFA #x7BFB #x7BFD Err bitreich.org 70 i- #x7BFF #x7C00 #x7C01 #x7C02 #x7C03 #x7C04 #x7C05 #x7C06 #x7C08 #x7C09 Err bitreich.org 70 i- #x7C0A #x7C0D #x7C0E #x7C10 #x7C11 #x7C12 #x7C13 #x7C14 #x7C15 #x7C17 Err bitreich.org 70 i- #x7C18 #x7C19 #x7C1A #x7C1B #x7C1C #x7C1D #x7C1E #x7C20 #x7C21 #x7C22 Err bitreich.org 70 i- #x7C23 #x7C24 #x7C25 #x7C28 #x7C29 #x7C2B #x7C2C #x7C2D #x7C2E #x7C2F Err bitreich.org 70 i- #x7C30 #x7C31 #x7C32 #x7C33 #x7C34 #x7C35 #x7C36 #x7C37 #x7C39 #x7C3A Err bitreich.org 70 i- #x7C3B #x7C3C #x7C3D #x7C3E #x7C42 #x7C43 #x7C44 #x7C45 #x7C46 #x7C47 Err bitreich.org 70 i- #x7C48 #x7C49 #x7C4A #x7C4B #x7C4C #x7C4E #x7C4F #x7C50 #x7C51 #x7C52 Err bitreich.org 70 i- #x7C53 #x7C54 #x7C55 #x7C56 #x7C57 #x7C58 #x7C59 #x7C5A #x7C5B #x7C5C Err bitreich.org 70 i- #x7C5D #x7C5E #x7C5F #x7C60 #x7C61 #x7C62 #x7C63 #x7C64 #x7C65 #x7C66 Err bitreich.org 70 i- #x7C67 #x7C68 #x7C69 #x7C6A #x7C6B #x7C6C #x7C6D #x7C6E #x7C6F #x7C70 Err bitreich.org 70 i- #x7C71 #x7C72 #x7C75 #x7C76 #x7C77 #x7C78 #x7C79 #x7C7A #x7C7E #x7C7F Err bitreich.org 70 i- #x7C80 #x7C81 #x7C82 #x7C83 #x7C84 #x7C85 #x7C86 #x7C87 #x7C88 #x7C8A Err bitreich.org 70 i- #x7C8B #x7C8C #x7C8D #x7C8E #x7C8F #x7C90 #x7C93 #x7C94 #x7C96 #x7C99 Err bitreich.org 70 i- #x7C9A #x7C9B #x7CA0 #x7CA1 #x7CA3 #x7CA6 #x7CA7 #x7CA8 #x7CA9 #x7CAB Err bitreich.org 70 i- #x7CAC #x7CAD #x7CAF #x7CB0 #x7CB4 #x7CB5 #x7CB6 #x7CB7 #x7CB8 #x7CBA Err bitreich.org 70 i- #x7CBB #x7CBF #x7CC0 #x7CC2 #x7CC3 #x7CC4 #x7CC6 #x7CC9 #x7CCB #x7CCE Err bitreich.org 70 i- #x7CCF #x7CD0 #x7CD1 #x7CD2 #x7CD3 #x7CD4 #x7CD8 #x7CDA #x7CDB #x7CDD Err bitreich.org 70 i- #x7CDE #x7CE1 #x7CE2 #x7CE3 #x7CE4 #x7CE5 #x7CE6 #x7CE7 #x7CE9 #x7CEA Err bitreich.org 70 i- #x7CEB #x7CEC #x7CED #x7CEE #x7CF0 #x7CF1 #x7CF2 #x7CF3 #x7CF4 #x7CF5 Err bitreich.org 70 i- #x7CF6 #x7CF7 #x7CF9 #x7CFA #x7CFC #x7CFD #x7CFE #x7CFF #x7D00 #x7D01 Err bitreich.org 70 i- #x7D02 #x7D03 #x7D04 #x7D05 #x7D06 #x7D07 #x7D08 #x7D09 #x7D0B #x7D0C Err bitreich.org 70 i- #x7D0D #x7D0E #x7D0F #x7D10 #x7D11 #x7D12 #x7D13 #x7D14 #x7D15 #x7D16 Err bitreich.org 70 i- #x7D17 #x7D18 #x7D19 #x7D1A #x7D1B #x7D1C #x7D1D #x7D1E #x7D1F #x7D21 Err bitreich.org 70 i- #x7D23 #x7D24 #x7D25 #x7D26 #x7D28 #x7D29 #x7D2A #x7D2C #x7D2D #x7D2E Err bitreich.org 70 i- #x7D30 #x7D31 #x7D32 #x7D33 #x7D34 #x7D35 #x7D36 #x7D37 #x7D38 #x7D39 Err bitreich.org 70 i- #x7D3A #x7D3B #x7D3C #x7D3D #x7D3E #x7D3F #x7D40 #x7D41 #x7D42 #x7D43 Err bitreich.org 70 i- #x7D44 #x7D45 #x7D46 #x7D47 #x7D48 #x7D49 #x7D4A #x7D4B #x7D4C #x7D4D Err bitreich.org 70 i- #x7D4E #x7D4F #x7D50 #x7D51 #x7D52 #x7D53 #x7D54 #x7D55 #x7D56 #x7D57 Err bitreich.org 70 i- #x7D58 #x7D59 #x7D5A #x7D5B #x7D5C #x7D5D #x7D5E #x7D5F #x7D60 #x7D61 Err bitreich.org 70 i- #x7D62 #x7D63 #x7D64 #x7D65 #x7D66 #x7D67 #x7D68 #x7D69 #x7D6A #x7D6B Err bitreich.org 70 i- #x7D6C #x7D6D #x7D6F #x7D70 #x7D71 #x7D72 #x7D73 #x7D74 #x7D75 #x7D76 Err bitreich.org 70 i- #x7D78 #x7D79 #x7D7A #x7D7B #x7D7C #x7D7D #x7D7E #x7D7F #x7D80 #x7D81 Err bitreich.org 70 i- #x7D82 #x7D83 #x7D84 #x7D85 #x7D86 #x7D87 #x7D88 #x7D89 #x7D8A #x7D8B Err bitreich.org 70 i- #x7D8C #x7D8D #x7D8E #x7D8F #x7D90 #x7D91 #x7D92 #x7D93 #x7D94 #x7D95 Err bitreich.org 70 i- #x7D96 #x7D97 #x7D98 #x7D99 #x7D9A #x7D9B #x7D9C #x7D9D #x7D9E #x7D9F Err bitreich.org 70 i- #x7DA0 #x7DA1 #x7DA2 #x7DA3 #x7DA4 #x7DA5 #x7DA7 #x7DA8 #x7DA9 #x7DAA Err bitreich.org 70 i- #x7DAB #x7DAC #x7DAD #x7DAF #x7DB0 #x7DB1 #x7DB2 #x7DB3 #x7DB4 #x7DB5 Err bitreich.org 70 i- #x7DB6 #x7DB7 #x7DB8 #x7DB9 #x7DBA #x7DBB #x7DBC #x7DBD #x7DBE #x7DBF Err bitreich.org 70 i- #x7DC0 #x7DC1 #x7DC2 #x7DC3 #x7DC4 #x7DC5 #x7DC6 #x7DC7 #x7DC8 #x7DC9 Err bitreich.org 70 i- #x7DCA #x7DCB #x7DCC #x7DCD #x7DCE #x7DCF #x7DD0 #x7DD1 #x7DD2 #x7DD3 Err bitreich.org 70 i- #x7DD4 #x7DD5 #x7DD6 #x7DD7 #x7DD8 #x7DD9 #x7DDA #x7DDB #x7DDC #x7DDD Err bitreich.org 70 i- #x7DDE #x7DDF #x7DE0 #x7DE1 #x7DE2 #x7DE3 #x7DE4 #x7DE5 #x7DE6 #x7DE7 Err bitreich.org 70 i- #x7DE8 #x7DE9 #x7DEA #x7DEB #x7DEC #x7DED #x7DEE #x7DEF #x7DF0 #x7DF1 Err bitreich.org 70 i- #x7DF2 #x7DF3 #x7DF4 #x7DF5 #x7DF6 #x7DF7 #x7DF8 #x7DF9 #x7DFA #x7DFB Err bitreich.org 70 i- #x7DFC #x7DFD #x7DFE #x7DFF #x7E00 #x7E01 #x7E02 #x7E03 #x7E04 #x7E05 Err bitreich.org 70 i- #x7E06 #x7E07 #x7E08 #x7E09 #x7E0A #x7E0B #x7E0C #x7E0D #x7E0E #x7E0F Err bitreich.org 70 i- #x7E10 #x7E11 #x7E12 #x7E13 #x7E14 #x7E15 #x7E16 #x7E17 #x7E18 #x7E19 Err bitreich.org 70 i- #x7E1A #x7E1B #x7E1C #x7E1D #x7E1E #x7E1F #x7E20 #x7E21 #x7E22 #x7E23 Err bitreich.org 70 i- #x7E24 #x7E25 #x7E26 #x7E27 #x7E28 #x7E29 #x7E2A #x7E2B #x7E2C #x7E2D Err bitreich.org 70 i- #x7E2E #x7E2F #x7E30 #x7E31 #x7E32 #x7E33 #x7E34 #x7E35 #x7E36 #x7E37 Err bitreich.org 70 i- #x7E38 #x7E39 #x7E3A #x7E3C #x7E3D #x7E3E #x7E3F #x7E40 #x7E42 #x7E43 Err bitreich.org 70 i- #x7E44 #x7E45 #x7E46 #x7E48 #x7E49 #x7E4A #x7E4B #x7E4C #x7E4D #x7E4E Err bitreich.org 70 i- #x7E4F #x7E50 #x7E51 #x7E52 #x7E53 #x7E54 #x7E55 #x7E56 #x7E57 #x7E58 Err bitreich.org 70 i- #x7E59 #x7E5A #x7E5B #x7E5C #x7E5D #x7E5E #x7E5F #x7E60 #x7E61 #x7E62 Err bitreich.org 70 i- #x7E63 #x7E64 #x7E65 #x7E66 #x7E67 #x7E68 #x7E69 #x7E6A #x7E6B #x7E6C Err bitreich.org 70 i- #x7E6D #x7E6E #x7E6F #x7E70 #x7E71 #x7E72 #x7E73 #x7E74 #x7E75 #x7E76 Err bitreich.org 70 i- #x7E77 #x7E78 #x7E79 #x7E7A #x7E7B #x7E7C #x7E7D #x7E7E #x7E7F #x7E80 Err bitreich.org 70 i- #x7E81 #x7E83 #x7E84 #x7E85 #x7E86 #x7E87 #x7E88 #x7E89 #x7E8A #x7E8B Err bitreich.org 70 i- #x7E8C #x7E8D #x7E8E #x7E8F #x7E90 #x7E91 #x7E92 #x7E93 #x7E94 #x7E95 Err bitreich.org 70 i- #x7E96 #x7E97 #x7E98 #x7E99 #x7E9A #x7E9C #x7E9D #x7E9E #x7EAE #x7EB4 Err bitreich.org 70 i- #x7EBB #x7EBC #x7ED6 #x7EE4 #x7EEC #x7EF9 #x7F0A #x7F10 #x7F1E #x7F37 Err bitreich.org 70 i- #x7F39 #x7F3B #x7F3C #x7F3D #x7F3E #x7F3F #x7F40 #x7F41 #x7F43 #x7F46 Err bitreich.org 70 i- #x7F47 #x7F48 #x7F49 #x7F4A #x7F4B #x7F4C #x7F4D #x7F4E #x7F4F #x7F52 Err bitreich.org 70 i- #x7F53 #x7F56 #x7F59 #x7F5B #x7F5C #x7F5D #x7F5E #x7F60 #x7F63 #x7F64 Err bitreich.org 70 i- #x7F65 #x7F66 #x7F67 #x7F6B #x7F6C #x7F6D #x7F6F #x7F70 #x7F73 #x7F75 Err bitreich.org 70 i- #x7F76 #x7F77 #x7F78 #x7F7A #x7F7B #x7F7C #x7F7D #x7F7F #x7F80 #x7F82 Err bitreich.org 70 i- #x7F83 #x7F84 #x7F85 #x7F86 #x7F87 #x7F88 #x7F89 #x7F8B #x7F8D #x7F8F Err bitreich.org 70 i- #x7F90 #x7F91 #x7F92 #x7F93 #x7F95 #x7F96 #x7F97 #x7F98 #x7F99 #x7F9B Err bitreich.org 70 i- #x7F9C #x7FA0 #x7FA2 #x7FA3 #x7FA5 #x7FA6 #x7FA8 #x7FA9 #x7FAA #x7FAB Err bitreich.org 70 i- #x7FAC #x7FAD #x7FAE #x7FB1 #x7FB3 #x7FB4 #x7FB5 #x7FB6 #x7FB7 #x7FBA Err bitreich.org 70 i- #x7FBB #x7FBE #x7FC0 #x7FC2 #x7FC3 #x7FC4 #x7FC6 #x7FC7 #x7FC8 #x7FC9 Err bitreich.org 70 i- #x7FCB #x7FCD #x7FCF #x7FD0 #x7FD1 #x7FD2 #x7FD3 #x7FD6 #x7FD7 #x7FD9 Err bitreich.org 70 i- #x7FDA #x7FDB #x7FDC #x7FDD #x7FDE #x7FE2 #x7FE3 #x7FE4 #x7FE7 #x7FE8 Err bitreich.org 70 i- #x7FEA #x7FEB #x7FEC #x7FED #x7FEF #x7FF2 #x7FF4 #x7FF5 #x7FF6 #x7FF7 Err bitreich.org 70 i- #x7FF8 #x7FF9 #x7FFA #x7FFD #x7FFE #x7FFF #x8002 #x8007 #x8008 #x8009 Err bitreich.org 70 i- #x800A #x800E #x800F #x8011 #x8013 #x801A #x801B #x801D #x801E #x801F Err bitreich.org 70 i- #x8021 #x8023 #x8024 #x802B #x802C #x802D #x802E #x802F #x8030 #x8032 Err bitreich.org 70 i- #x8034 #x8039 #x803A #x803C #x803E #x8040 #x8041 #x8044 #x8045 #x8047 Err bitreich.org 70 i- #x8048 #x8049 #x804E #x804F #x8050 #x8051 #x8053 #x8055 #x8056 #x8057 Err bitreich.org 70 i- #x8059 #x805B #x805C #x805D #x805E #x805F #x8060 #x8061 #x8062 #x8063 Err bitreich.org 70 i- #x8064 #x8065 #x8066 #x8067 #x8068 #x806B #x806C #x806D #x806E #x806F Err bitreich.org 70 i- #x8070 #x8072 #x8073 #x8074 #x8075 #x8076 #x8077 #x8078 #x8079 #x807A Err bitreich.org 70 i- #x807B #x807C #x807D #x807E #x8081 #x8082 #x8085 #x8088 #x808A #x808D Err bitreich.org 70 i- #x808E #x808F #x8090 #x8091 #x8092 #x8094 #x8095 #x8097 #x8099 #x809E Err bitreich.org 70 i- #x80A3 #x80A6 #x80A7 #x80A8 #x80AC #x80B0 #x80B3 #x80B5 #x80B6 #x80B8 Err bitreich.org 70 i- #x80B9 #x80BB #x80C5 #x80C7 #x80C8 #x80C9 #x80CA #x80CB #x80CF #x80D0 Err bitreich.org 70 i- #x80D1 #x80D2 #x80D3 #x80D4 #x80D5 #x80D8 #x80DF #x80E0 #x80E2 #x80E3 Err bitreich.org 70 i- #x80E6 #x80EE #x80F5 #x80F7 #x80F9 #x80FB #x80FE #x80FF #x8100 #x8101 Err bitreich.org 70 i- #x8103 #x8104 #x8105 #x8107 #x8108 #x810B #x810C #x8115 #x8117 #x8119 Err bitreich.org 70 i- #x811B #x811C #x811D #x811F #x8120 #x8121 #x8122 #x8123 #x8124 #x8125 Err bitreich.org 70 i- #x8126 #x8127 #x8128 #x8129 #x812A #x812B #x812D #x812E #x8130 #x8133 Err bitreich.org 70 i- #x8134 #x8135 #x8137 #x8139 #x813A #x813B #x813C #x813D #x813F #x8140 Err bitreich.org 70 i- #x8141 #x8142 #x8143 #x8144 #x8145 #x8147 #x8149 #x814D #x814E #x814F Err bitreich.org 70 i- #x8152 #x8156 #x8157 #x8158 #x815B #x815C #x815D #x815E #x815F #x8161 Err bitreich.org 70 i- #x8162 #x8163 #x8164 #x8166 #x8168 #x816A #x816B #x816C #x816F #x8172 Err bitreich.org 70 i- #x8173 #x8175 #x8176 #x8177 #x8178 #x8181 #x8183 #x8184 #x8185 #x8186 Err bitreich.org 70 i- #x8187 #x8189 #x818B #x818C #x818D #x818E #x8190 #x8192 #x8193 #x8194 Err bitreich.org 70 i- #x8195 #x8196 #x8197 #x8199 #x819A #x819E #x819F #x81A0 #x81A1 #x81A2 Err bitreich.org 70 i- #x81A4 #x81A5 #x81A7 #x81A9 #x81AB #x81AC #x81AD #x81AE #x81AF #x81B0 Err bitreich.org 70 i- #x81B1 #x81B2 #x81B4 #x81B5 #x81B6 #x81B7 #x81B8 #x81B9 #x81BC #x81BD Err bitreich.org 70 i- #x81BE #x81BF #x81C4 #x81C5 #x81C7 #x81C8 #x81C9 #x81CB #x81CD #x81CE Err bitreich.org 70 i- #x81CF #x81D0 #x81D1 #x81D2 #x81D3 #x81D4 #x81D5 #x81D6 #x81D7 #x81D8 Err bitreich.org 70 i- #x81D9 #x81DA #x81DB #x81DC #x81DD #x81DE #x81DF #x81E0 #x81E1 #x81E2 Err bitreich.org 70 i- #x81E4 #x81E5 #x81E6 #x81E8 #x81E9 #x81EB #x81EE #x81EF #x81F0 #x81F1 Err bitreich.org 70 i- #x81F2 #x81F5 #x81F6 #x81F7 #x81F8 #x81F9 #x81FA #x81FD #x81FF #x8203 Err bitreich.org 70 i- #x8207 #x8208 #x8209 #x820A #x820B #x820E #x820F #x8211 #x8213 #x8215 Err bitreich.org 70 i- #x8216 #x8217 #x8218 #x8219 #x821A #x821D #x8220 #x8224 #x8225 #x8226 Err bitreich.org 70 i- #x8227 #x8229 #x822E #x8232 #x823A #x823C #x823D #x823F #x8240 #x8241 Err bitreich.org 70 i- #x8242 #x8243 #x8245 #x8246 #x8248 #x824A #x824C #x824D #x824E #x8250 Err bitreich.org 70 i- #x8251 #x8252 #x8253 #x8254 #x8255 #x8256 #x8257 #x8259 #x825B #x825C Err bitreich.org 70 i- #x825D #x825E #x8260 #x8261 #x8262 #x8263 #x8264 #x8265 #x8266 #x8267 Err bitreich.org 70 i- #x8269 #x826A #x826B #x826C #x826D #x8271 #x8275 #x8276 #x8277 #x8278 Err bitreich.org 70 i- #x827B #x827C #x8280 #x8281 #x8283 #x8285 #x8286 #x8287 #x8289 #x828C Err bitreich.org 70 i- #x8290 #x8293 #x8294 #x8295 #x8296 #x829A #x829B #x829E #x82A0 #x82A2 Err bitreich.org 70 i- #x82A3 #x82A7 #x82B2 #x82B5 #x82B6 #x82BA #x82BB #x82BC #x82BF #x82C0 Err bitreich.org 70 i- #x82C2 #x82C3 #x82C5 #x82C6 #x82C9 #x82D0 #x82D6 #x82D9 #x82DA #x82DD Err bitreich.org 70 i- #x82E2 #x82E7 #x82E8 #x82E9 #x82EA #x82EC #x82ED #x82EE #x82F0 #x82F2 Err bitreich.org 70 i- #x82F3 #x82F5 #x82F6 #x82F8 #x82FA #x82FC #x82FD #x82FE #x82FF #x8300 Err bitreich.org 70 i- #x830A #x830B #x830D #x8310 #x8312 #x8313 #x8316 #x8318 #x8319 #x831D Err bitreich.org 70 i- #x831E #x831F #x8320 #x8321 #x8322 #x8323 #x8324 #x8325 #x8326 #x8329 Err bitreich.org 70 i- #x832A #x832E #x8330 #x8332 #x8337 #x833B #x833D #x833E #x833F #x8341 Err bitreich.org 70 i- #x8342 #x8344 #x8345 #x8348 #x834A #x834B #x834C #x834D #x834E #x8353 Err bitreich.org 70 i- #x8355 #x8356 #x8357 #x8358 #x8359 #x835D #x8362 #x8370 #x8371 #x8372 Err bitreich.org 70 i- #x8373 #x8374 #x8375 #x8376 #x8379 #x837A #x837E #x837F #x8380 #x8381 Err bitreich.org 70 i- #x8382 #x8383 #x8384 #x8387 #x8388 #x838A #x838B #x838C #x838D #x838F Err bitreich.org 70 i- #x8390 #x8391 #x8394 #x8395 #x8396 #x8397 #x8399 #x839A #x839D #x839F Err bitreich.org 70 i- #x83A1 #x83A2 #x83A3 #x83A4 #x83A5 #x83A6 #x83A7 #x83AC #x83AD #x83AE Err bitreich.org 70 i- #x83AF #x83B5 #x83BB #x83BE #x83BF #x83C2 #x83C3 #x83C4 #x83C6 #x83C8 Err bitreich.org 70 i- #x83C9 #x83CB #x83CD #x83CE #x83D0 #x83D1 #x83D2 #x83D3 #x83D5 #x83D7 Err bitreich.org 70 i- #x83D9 #x83DA #x83DB #x83DE #x83E2 #x83E3 #x83E4 #x83E6 #x83E7 #x83E8 Err bitreich.org 70 i- #x83EB #x83EC #x83ED #x83EE #x83EF #x83F3 #x83F4 #x83F5 #x83F6 #x83F7 Err bitreich.org 70 i- #x83FA #x83FB #x83FC #x83FE #x83FF #x8400 #x8402 #x8405 #x8407 #x8408 Err bitreich.org 70 i- #x8409 #x840A #x8410 #x8412 #x8413 #x8414 #x8415 #x8416 #x8417 #x8419 Err bitreich.org 70 i- #x841A #x841B #x841E #x841F #x8420 #x8421 #x8422 #x8423 #x8429 #x842A Err bitreich.org 70 i- #x842B #x842C #x842D #x842E #x842F #x8430 #x8432 #x8433 #x8434 #x8435 Err bitreich.org 70 i- #x8436 #x8437 #x8439 #x843A #x843B #x843E #x843F #x8440 #x8441 #x8442 Err bitreich.org 70 i- #x8443 #x8444 #x8445 #x8447 #x8448 #x8449 #x844A #x844B #x844C #x844D Err bitreich.org 70 i- #x844E #x844F #x8450 #x8452 #x8453 #x8454 #x8455 #x8456 #x8458 #x845D Err bitreich.org 70 i- #x845E #x845F #x8460 #x8462 #x8464 #x8465 #x8466 #x8467 #x8468 #x846A Err bitreich.org 70 i- #x846E #x846F #x8470 #x8472 #x8474 #x8477 #x8479 #x847B #x847C #x847D Err bitreich.org 70 i- #x847E #x847F #x8480 #x8481 #x8483 #x8484 #x8485 #x8486 #x848A #x848D Err bitreich.org 70 i- #x848F #x8490 #x8491 #x8492 #x8493 #x8494 #x8495 #x8496 #x8498 #x849A Err bitreich.org 70 i- #x849B #x849D #x849E #x849F #x84A0 #x84A2 #x84A3 #x84A4 #x84A5 #x84A6 Err bitreich.org 70 i- #x84A7 #x84A8 #x84A9 #x84AA #x84AB #x84AC #x84AD #x84AE #x84B0 #x84B1 Err bitreich.org 70 i- #x84B3 #x84B5 #x84B6 #x84B7 #x84BB #x84BC #x84BE #x84C0 #x84C2 #x84C3 Err bitreich.org 70 i- #x84C5 #x84C6 #x84C7 #x84C8 #x84CB #x84CC #x84CE #x84CF #x84D2 #x84D4 Err bitreich.org 70 i- #x84D5 #x84D7 #x84D8 #x84D9 #x84DA #x84DB #x84DC #x84DE #x84E1 #x84E2 Err bitreich.org 70 i- #x84E4 #x84E7 #x84E8 #x84E9 #x84EA #x84EB #x84ED #x84EE #x84EF #x84F1 Err bitreich.org 70 i- #x84F2 #x84F3 #x84F4 #x84F5 #x84F6 #x84F7 #x84F8 #x84F9 #x84FA #x84FB Err bitreich.org 70 i- #x84FD #x84FE #x8500 #x8501 #x8502 #x8503 #x8504 #x8505 #x8506 #x8507 Err bitreich.org 70 i- #x8508 #x8509 #x850A #x850B #x850D #x850E #x850F #x8510 #x8512 #x8514 Err bitreich.org 70 i- #x8515 #x8516 #x8518 #x8519 #x851B #x851C #x851D #x851E #x8520 #x8522 Err bitreich.org 70 i- #x8523 #x8524 #x8525 #x8526 #x8527 #x8528 #x8529 #x852A #x852D #x852E Err bitreich.org 70 i- #x852F #x8530 #x8531 #x8532 #x8533 #x8534 #x8535 #x8536 #x853E #x853F Err bitreich.org 70 i- #x8540 #x8541 #x8542 #x8544 #x8545 #x8546 #x8547 #x854B #x854C #x854D Err bitreich.org 70 i- #x854E #x854F #x8550 #x8551 #x8552 #x8553 #x8554 #x8555 #x8557 #x8558 Err bitreich.org 70 i- #x855A #x855B #x855C #x855D #x855F #x8560 #x8561 #x8562 #x8563 #x8565 Err bitreich.org 70 i- #x8566 #x8567 #x8569 #x856A #x856B #x856C #x856D #x856E #x856F #x8570 Err bitreich.org 70 i- #x8571 #x8573 #x8575 #x8576 #x8577 #x8578 #x857C #x857D #x857F #x8580 Err bitreich.org 70 i- #x8581 #x8582 #x8583 #x8586 #x8588 #x8589 #x858A #x858B #x858C #x858D Err bitreich.org 70 i- #x858E #x8590 #x8591 #x8592 #x8593 #x8594 #x8595 #x8596 #x8597 #x8598 Err bitreich.org 70 i- #x8599 #x859A #x859D #x859E #x859F #x85A0 #x85A1 #x85A2 #x85A3 #x85A5 Err bitreich.org 70 i- #x85A6 #x85A7 #x85A9 #x85AB #x85AC #x85AD #x85B1 #x85B2 #x85B3 #x85B4 Err bitreich.org 70 i- #x85B5 #x85B6 #x85B8 #x85BA #x85BB #x85BC #x85BD #x85BE #x85BF #x85C0 Err bitreich.org 70 i- #x85C2 #x85C3 #x85C4 #x85C5 #x85C6 #x85C7 #x85C8 #x85CA #x85CB #x85CC Err bitreich.org 70 i- #x85CD #x85CE #x85D1 #x85D2 #x85D4 #x85D6 #x85D7 #x85D8 #x85D9 #x85DA Err bitreich.org 70 i- #x85DB #x85DD #x85DE #x85DF #x85E0 #x85E1 #x85E2 #x85E3 #x85E5 #x85E6 Err bitreich.org 70 i- #x85E7 #x85E8 #x85EA #x85EB #x85EC #x85ED #x85EE #x85EF #x85F0 #x85F1 Err bitreich.org 70 i- #x85F2 #x85F3 #x85F4 #x85F5 #x85F6 #x85F7 #x85F8 #x85F9 #x85FA #x85FC Err bitreich.org 70 i- #x85FD #x85FE #x8600 #x8601 #x8602 #x8603 #x8604 #x8606 #x8607 #x8608 Err bitreich.org 70 i- #x8609 #x860A #x860B #x860C #x860D #x860E #x860F #x8610 #x8612 #x8613 Err bitreich.org 70 i- #x8614 #x8615 #x8617 #x8618 #x8619 #x861A #x861B #x861C #x861D #x861E Err bitreich.org 70 i- #x861F #x8620 #x8621 #x8622 #x8623 #x8624 #x8625 #x8626 #x8628 #x862A Err bitreich.org 70 i- #x862B #x862C #x862D #x862E #x862F #x8630 #x8631 #x8632 #x8633 #x8634 Err bitreich.org 70 i- #x8635 #x8636 #x8637 #x8639 #x863A #x863B #x863D #x863E #x863F #x8640 Err bitreich.org 70 i- #x8641 #x8642 #x8643 #x8644 #x8645 #x8646 #x8647 #x8648 #x8649 #x864A Err bitreich.org 70 i- #x864B #x864C #x8652 #x8653 #x8655 #x8656 #x8657 #x8658 #x8659 #x865B Err bitreich.org 70 i- #x865C #x865D #x865F #x8660 #x8661 #x8663 #x8664 #x8665 #x8666 #x8667 Err bitreich.org 70 i- #x8668 #x8669 #x866A #x866D #x866F #x8670 #x8672 #x8673 #x8674 #x8675 Err bitreich.org 70 i- #x8676 #x8677 #x8678 #x8683 #x8684 #x8685 #x8686 #x8687 #x8688 #x8689 Err bitreich.org 70 i- #x868E #x868F #x8690 #x8691 #x8692 #x8694 #x8696 #x8697 #x8698 #x8699 Err bitreich.org 70 i- #x869A #x869B #x869E #x869F #x86A0 #x86A1 #x86A2 #x86A5 #x86A6 #x86AB Err bitreich.org 70 i- #x86AD #x86AE #x86B2 #x86B3 #x86B7 #x86B8 #x86B9 #x86BB #x86BC #x86BD Err bitreich.org 70 i- #x86BE #x86BF #x86C1 #x86C2 #x86C3 #x86C5 #x86C8 #x86CC #x86CD #x86D2 Err bitreich.org 70 i- #x86D3 #x86D5 #x86D6 #x86D7 #x86DA #x86DC #x86DD #x86E0 #x86E1 #x86E2 Err bitreich.org 70 i- #x86E3 #x86E5 #x86E6 #x86E7 #x86E8 #x86EA #x86EB #x86EC #x86EF #x86F5 Err bitreich.org 70 i- #x86F6 #x86F7 #x86FA #x86FB #x86FC #x86FD #x86FF #x8701 #x8704 #x8705 Err bitreich.org 70 i- #x8706 #x870B #x870C #x870E #x870F #x8710 #x8711 #x8714 #x8716 #x8719 Err bitreich.org 70 i- #x871B #x871D #x871F #x8720 #x8724 #x8726 #x8727 #x8728 #x872A #x872B Err bitreich.org 70 i- #x872C #x872D #x872F #x8730 #x8732 #x8733 #x8735 #x8736 #x8738 #x8739 Err bitreich.org 70 i- #x873A #x873C #x873D #x8740 #x8741 #x8742 #x8743 #x8744 #x8745 #x8746 Err bitreich.org 70 i- #x874A #x874B #x874D #x874F #x8750 #x8751 #x8752 #x8754 #x8755 #x8756 Err bitreich.org 70 i- #x8758 #x875A #x875B #x875C #x875D #x875E #x875F #x8761 #x8762 #x8766 Err bitreich.org 70 i- #x8767 #x8768 #x8769 #x876A #x876B #x876C #x876D #x876F #x8771 #x8772 Err bitreich.org 70 i- #x8773 #x8775 #x8777 #x8778 #x8779 #x877A #x877F #x8780 #x8781 #x8784 Err bitreich.org 70 i- #x8786 #x8787 #x8789 #x878A #x878C #x878E #x878F #x8790 #x8791 #x8792 Err bitreich.org 70 i- #x8794 #x8795 #x8796 #x8798 #x8799 #x879A #x879B #x879C #x879D #x879E Err bitreich.org 70 i- #x87A0 #x87A1 #x87A2 #x87A3 #x87A4 #x87A5 #x87A6 #x87A7 #x87A9 #x87AA Err bitreich.org 70 i- #x87AE #x87B0 #x87B1 #x87B2 #x87B4 #x87B6 #x87B7 #x87B8 #x87B9 #x87BB Err bitreich.org 70 i- #x87BC #x87BE #x87BF #x87C1 #x87C2 #x87C3 #x87C4 #x87C5 #x87C7 #x87C8 Err bitreich.org 70 i- #x87C9 #x87CC #x87CD #x87CE #x87CF #x87D0 #x87D4 #x87D5 #x87D6 #x87D7 Err bitreich.org 70 i- #x87D8 #x87D9 #x87DA #x87DC #x87DD #x87DE #x87DF #x87E1 #x87E2 #x87E3 Err bitreich.org 70 i- #x87E4 #x87E6 #x87E7 #x87E8 #x87E9 #x87EB #x87EC #x87ED #x87EF #x87F0 Err bitreich.org 70 i- #x87F1 #x87F2 #x87F3 #x87F4 #x87F5 #x87F6 #x87F7 #x87F8 #x87FA #x87FB Err bitreich.org 70 i- #x87FC #x87FD #x87FF #x8800 #x8801 #x8802 #x8804 #x8805 #x8806 #x8807 Err bitreich.org 70 i- #x8808 #x8809 #x880B #x880C #x880D #x880E #x880F #x8810 #x8811 #x8812 Err bitreich.org 70 i- #x8814 #x8817 #x8818 #x8819 #x881A #x881C #x881D #x881E #x881F #x8820 Err bitreich.org 70 i- #x8823 #x8824 #x8825 #x8826 #x8827 #x8828 #x8829 #x882A #x882B #x882C Err bitreich.org 70 i- #x882D #x882E #x882F #x8830 #x8831 #x8833 #x8834 #x8835 #x8836 #x8837 Err bitreich.org 70 i- #x8838 #x883A #x883B #x883D #x883E #x883F #x8841 #x8842 #x8843 #x8846 Err bitreich.org 70 i- #x8847 #x8848 #x8849 #x884A #x884B #x884E #x884F #x8850 #x8851 #x8852 Err bitreich.org 70 i- #x8853 #x8855 #x8856 #x8858 #x885A #x885B #x885C #x885D #x885E #x885F Err bitreich.org 70 i- #x8860 #x8866 #x8867 #x886A #x886D #x886F #x8871 #x8873 #x8874 #x8875 Err bitreich.org 70 i- #x8876 #x8878 #x8879 #x887A #x887B #x887C #x8880 #x8883 #x8886 #x8887 Err bitreich.org 70 i- #x8889 #x888A #x888C #x888E #x888F #x8890 #x8891 #x8893 #x8894 #x8895 Err bitreich.org 70 i- #x8897 #x8898 #x8899 #x889A #x889B #x889D #x889E #x889F #x88A0 #x88A1 Err bitreich.org 70 i- #x88A3 #x88A5 #x88A6 #x88A7 #x88A8 #x88A9 #x88AA #x88AC #x88AE #x88AF Err bitreich.org 70 i- #x88B0 #x88B2 #x88B3 #x88B4 #x88B5 #x88B6 #x88B8 #x88B9 #x88BA #x88BB Err bitreich.org 70 i- #x88BD #x88BE #x88BF #x88C0 #x88C3 #x88C4 #x88C7 #x88C8 #x88CA #x88CB Err bitreich.org 70 i- #x88CC #x88CD #x88CF #x88D0 #x88D1 #x88D3 #x88D6 #x88D7 #x88DA #x88DB Err bitreich.org 70 i- #x88DC #x88DD #x88DE #x88E0 #x88E1 #x88E6 #x88E7 #x88E9 #x88EA #x88EB Err bitreich.org 70 i- #x88EC #x88ED #x88EE #x88EF #x88F2 #x88F5 #x88F6 #x88F7 #x88FA #x88FB Err bitreich.org 70 i- #x88FD #x88FF #x8900 #x8901 #x8903 #x8904 #x8905 #x8906 #x8907 #x8908 Err bitreich.org 70 i- #x8909 #x890B #x890C #x890D #x890E #x890F #x8911 #x8914 #x8915 #x8916 Err bitreich.org 70 i- #x8917 #x8918 #x891C #x891D #x891E #x891F #x8920 #x8922 #x8923 #x8924 Err bitreich.org 70 i- #x8926 #x8927 #x8928 #x8929 #x892C #x892D #x892E #x892F #x8931 #x8932 Err bitreich.org 70 i- #x8933 #x8935 #x8937 #x8938 #x8939 #x893A #x893B #x893C #x893D #x893E Err bitreich.org 70 i- #x893F #x8940 #x8942 #x8943 #x8945 #x8946 #x8947 #x8948 #x8949 #x894A Err bitreich.org 70 i- #x894B #x894C #x894D #x894E #x894F #x8950 #x8951 #x8952 #x8953 #x8954 Err bitreich.org 70 i- #x8955 #x8956 #x8957 #x8958 #x8959 #x895A #x895B #x895C #x895D #x8960 Err bitreich.org 70 i- #x8961 #x8962 #x8963 #x8964 #x8965 #x8967 #x8968 #x8969 #x896A #x896B Err bitreich.org 70 i- #x896C #x896D #x896E #x896F #x8970 #x8971 #x8972 #x8973 #x8974 #x8975 Err bitreich.org 70 i- #x8976 #x8977 #x8978 #x8979 #x897A #x897C #x897D #x897E #x8980 #x8982 Err bitreich.org 70 i- #x8984 #x8985 #x8987 #x8988 #x8989 #x898A #x898B #x898C #x898D #x898E Err bitreich.org 70 i- #x898F #x8990 #x8991 #x8992 #x8993 #x8994 #x8995 #x8996 #x8997 #x8998 Err bitreich.org 70 i- #x8999 #x899A #x899B #x899C #x899D #x899E #x899F #x89A0 #x89A1 #x89A2 Err bitreich.org 70 i- #x89A3 #x89A4 #x89A5 #x89A6 #x89A7 #x89A8 #x89A9 #x89AA #x89AB #x89AC Err bitreich.org 70 i- #x89AD #x89AE #x89AF #x89B0 #x89B1 #x89B2 #x89B3 #x89B4 #x89B5 #x89B6 Err bitreich.org 70 i- #x89B7 #x89B8 #x89B9 #x89BA #x89BB #x89BC #x89BD #x89BE #x89BF #x89C0 Err bitreich.org 70 i- #x89C3 #x89CD #x89D3 #x89D4 #x89D5 #x89D7 #x89D8 #x89D9 #x89DB #x89DD Err bitreich.org 70 i- #x89DF #x89E0 #x89E1 #x89E2 #x89E4 #x89E7 #x89E8 #x89E9 #x89EA #x89EC Err bitreich.org 70 i- #x89ED #x89EE #x89F0 #x89F1 #x89F2 #x89F4 #x89F5 #x89F6 #x89F7 #x89F8 Err bitreich.org 70 i- #x89F9 #x89FA #x89FB #x89FC #x89FD #x89FE #x89FF #x8A01 #x8A02 #x8A03 Err bitreich.org 70 i- #x8A04 #x8A05 #x8A06 #x8A08 #x8A09 #x8A0A #x8A0B #x8A0C #x8A0D #x8A0E Err bitreich.org 70 i- #x8A0F #x8A10 #x8A11 #x8A12 #x8A13 #x8A14 #x8A15 #x8A16 #x8A17 #x8A18 Err bitreich.org 70 i- #x8A19 #x8A1A #x8A1B #x8A1C #x8A1D #x8A1E #x8A1F #x8A20 #x8A21 #x8A22 Err bitreich.org 70 i- #x8A23 #x8A24 #x8A25 #x8A26 #x8A27 #x8A28 #x8A29 #x8A2A #x8A2B #x8A2C Err bitreich.org 70 i- #x8A2D #x8A2E #x8A2F #x8A30 #x8A31 #x8A32 #x8A33 #x8A34 #x8A35 #x8A36 Err bitreich.org 70 i- #x8A37 #x8A38 #x8A39 #x8A3A #x8A3B #x8A3C #x8A3D #x8A3F #x8A40 #x8A41 Err bitreich.org 70 i- #x8A42 #x8A43 #x8A44 #x8A45 #x8A46 #x8A47 #x8A49 #x8A4A #x8A4B #x8A4C Err bitreich.org 70 i- #x8A4D #x8A4E #x8A4F #x8A50 #x8A51 #x8A52 #x8A53 #x8A54 #x8A55 #x8A56 Err bitreich.org 70 i- #x8A57 #x8A58 #x8A59 #x8A5A #x8A5B #x8A5C #x8A5D #x8A5E #x8A5F #x8A60 Err bitreich.org 70 i- #x8A61 #x8A62 #x8A63 #x8A64 #x8A65 #x8A66 #x8A67 #x8A68 #x8A69 #x8A6A Err bitreich.org 70 i- #x8A6B #x8A6C #x8A6D #x8A6E #x8A6F #x8A70 #x8A71 #x8A72 #x8A73 #x8A74 Err bitreich.org 70 i- #x8A75 #x8A76 #x8A77 #x8A78 #x8A7A #x8A7B #x8A7C #x8A7D #x8A7E #x8A7F Err bitreich.org 70 i- #x8A80 #x8A81 #x8A82 #x8A83 #x8A84 #x8A85 #x8A86 #x8A87 #x8A88 #x8A8B Err bitreich.org 70 i- #x8A8C #x8A8D #x8A8E #x8A8F #x8A90 #x8A91 #x8A92 #x8A94 #x8A95 #x8A96 Err bitreich.org 70 i- #x8A97 #x8A98 #x8A99 #x8A9A #x8A9B #x8A9C #x8A9D #x8A9E #x8A9F #x8AA0 Err bitreich.org 70 i- #x8AA1 #x8AA2 #x8AA3 #x8AA4 #x8AA5 #x8AA6 #x8AA7 #x8AA8 #x8AA9 #x8AAA Err bitreich.org 70 i- #x8AAB #x8AAC #x8AAD #x8AAE #x8AAF #x8AB0 #x8AB1 #x8AB2 #x8AB3 #x8AB4 Err bitreich.org 70 i- #x8AB5 #x8AB6 #x8AB7 #x8AB8 #x8AB9 #x8ABA #x8ABB #x8ABC #x8ABD #x8ABE Err bitreich.org 70 i- #x8ABF #x8AC0 #x8AC1 #x8AC2 #x8AC3 #x8AC4 #x8AC5 #x8AC6 #x8AC7 #x8AC8 Err bitreich.org 70 i- #x8AC9 #x8ACA #x8ACB #x8ACC #x8ACD #x8ACE #x8ACF #x8AD0 #x8AD1 #x8AD2 Err bitreich.org 70 i- #x8AD3 #x8AD4 #x8AD5 #x8AD6 #x8AD7 #x8AD8 #x8AD9 #x8ADA #x8ADB #x8ADC Err bitreich.org 70 i- #x8ADD #x8ADE #x8ADF #x8AE0 #x8AE1 #x8AE2 #x8AE3 #x8AE4 #x8AE5 #x8AE6 Err bitreich.org 70 i- #x8AE7 #x8AE8 #x8AE9 #x8AEA #x8AEB #x8AEC #x8AED #x8AEE #x8AEF #x8AF0 Err bitreich.org 70 i- #x8AF1 #x8AF2 #x8AF3 #x8AF4 #x8AF5 #x8AF6 #x8AF7 #x8AF8 #x8AF9 #x8AFA Err bitreich.org 70 i- #x8AFB #x8AFC #x8AFD #x8AFE #x8AFF #x8B00 #x8B01 #x8B02 #x8B03 #x8B04 Err bitreich.org 70 i- #x8B05 #x8B06 #x8B08 #x8B09 #x8B0A #x8B0B #x8B0C #x8B0D #x8B0E #x8B0F Err bitreich.org 70 i- #x8B10 #x8B11 #x8B12 #x8B13 #x8B14 #x8B15 #x8B16 #x8B17 #x8B18 #x8B19 Err bitreich.org 70 i- #x8B1A #x8B1B #x8B1C #x8B1D #x8B1E #x8B1F #x8B20 #x8B21 #x8B22 #x8B23 Err bitreich.org 70 i- #x8B24 #x8B25 #x8B27 #x8B28 #x8B29 #x8B2A #x8B2B #x8B2C #x8B2D #x8B2E Err bitreich.org 70 i- #x8B2F #x8B30 #x8B31 #x8B32 #x8B33 #x8B34 #x8B35 #x8B36 #x8B37 #x8B38 Err bitreich.org 70 i- #x8B39 #x8B3A #x8B3B #x8B3C #x8B3D #x8B3E #x8B3F #x8B40 #x8B41 #x8B42 Err bitreich.org 70 i- #x8B43 #x8B44 #x8B45 #x8B46 #x8B47 #x8B48 #x8B49 #x8B4A #x8B4B #x8B4C Err bitreich.org 70 i- #x8B4D #x8B4E #x8B4F #x8B50 #x8B51 #x8B52 #x8B53 #x8B54 #x8B55 #x8B56 Err bitreich.org 70 i- #x8B57 #x8B58 #x8B59 #x8B5A #x8B5B #x8B5C #x8B5D #x8B5E #x8B5F #x8B60 Err bitreich.org 70 i- #x8B61 #x8B62 #x8B63 #x8B64 #x8B65 #x8B67 #x8B68 #x8B69 #x8B6A #x8B6B Err bitreich.org 70 i- #x8B6D #x8B6E #x8B6F #x8B70 #x8B71 #x8B72 #x8B73 #x8B74 #x8B75 #x8B76 Err bitreich.org 70 i- #x8B77 #x8B78 #x8B79 #x8B7A #x8B7B #x8B7C #x8B7D #x8B7E #x8B7F #x8B80 Err bitreich.org 70 i- #x8B81 #x8B82 #x8B83 #x8B84 #x8B85 #x8B86 #x8B87 #x8B88 #x8B89 #x8B8A Err bitreich.org 70 i- #x8B8B #x8B8C #x8B8D #x8B8E #x8B8F #x8B90 #x8B91 #x8B92 #x8B93 #x8B94 Err bitreich.org 70 i- #x8B95 #x8B96 #x8B97 #x8B98 #x8B99 #x8B9A #x8B9B #x8B9C #x8B9D #x8B9E Err bitreich.org 70 i- #x8B9F #x8BAC #x8BB1 #x8BBB #x8BC7 #x8BD0 #x8BEA #x8C09 #x8C1E #x8C38 Err bitreich.org 70 i- #x8C39 #x8C3A #x8C3B #x8C3C #x8C3D #x8C3E #x8C3F #x8C40 #x8C42 #x8C43 Err bitreich.org 70 i- #x8C44 #x8C45 #x8C48 #x8C4A #x8C4B #x8C4D #x8C4E #x8C4F #x8C50 #x8C51 Err bitreich.org 70 i- #x8C52 #x8C53 #x8C54 #x8C56 #x8C57 #x8C58 #x8C59 #x8C5B #x8C5C #x8C5D Err bitreich.org 70 i- #x8C5E #x8C5F #x8C60 #x8C63 #x8C64 #x8C65 #x8C66 #x8C67 #x8C68 #x8C69 Err bitreich.org 70 i- #x8C6C #x8C6D #x8C6E #x8C6F #x8C70 #x8C71 #x8C72 #x8C74 #x8C75 #x8C76 Err bitreich.org 70 i- #x8C77 #x8C7B #x8C7C #x8C7D #x8C7E #x8C7F #x8C80 #x8C81 #x8C83 #x8C84 Err bitreich.org 70 i- #x8C86 #x8C87 #x8C88 #x8C8B #x8C8D #x8C8E #x8C8F #x8C90 #x8C91 #x8C92 Err bitreich.org 70 i- #x8C93 #x8C95 #x8C96 #x8C97 #x8C99 #x8C9A #x8C9B #x8C9C #x8C9D #x8C9E Err bitreich.org 70 i- #x8C9F #x8CA0 #x8CA1 #x8CA2 #x8CA3 #x8CA4 #x8CA5 #x8CA6 #x8CA7 #x8CA8 Err bitreich.org 70 i- #x8CA9 #x8CAA #x8CAB #x8CAC #x8CAD #x8CAE #x8CAF #x8CB0 #x8CB1 #x8CB2 Err bitreich.org 70 i- #x8CB3 #x8CB4 #x8CB5 #x8CB6 #x8CB7 #x8CB8 #x8CB9 #x8CBA #x8CBB #x8CBC Err bitreich.org 70 i- #x8CBD #x8CBE #x8CBF #x8CC0 #x8CC1 #x8CC2 #x8CC3 #x8CC4 #x8CC5 #x8CC6 Err bitreich.org 70 i- #x8CC7 #x8CC8 #x8CC9 #x8CCA #x8CCB #x8CCC #x8CCD #x8CCE #x8CCF #x8CD0 Err bitreich.org 70 i- #x8CD1 #x8CD2 #x8CD3 #x8CD4 #x8CD5 #x8CD6 #x8CD7 #x8CD8 #x8CD9 #x8CDA Err bitreich.org 70 i- #x8CDB #x8CDC #x8CDD #x8CDE #x8CDF #x8CE0 #x8CE1 #x8CE2 #x8CE3 #x8CE4 Err bitreich.org 70 i- #x8CE5 #x8CE6 #x8CE7 #x8CE8 #x8CE9 #x8CEA #x8CEB #x8CEC #x8CED #x8CEE Err bitreich.org 70 i- #x8CEF #x8CF0 #x8CF1 #x8CF2 #x8CF3 #x8CF4 #x8CF5 #x8CF6 #x8CF7 #x8CF8 Err bitreich.org 70 i- #x8CF9 #x8CFA #x8CFB #x8CFC #x8CFD #x8CFE #x8CFF #x8D00 #x8D01 #x8D02 Err bitreich.org 70 i- #x8D03 #x8D04 #x8D05 #x8D06 #x8D07 #x8D08 #x8D09 #x8D0A #x8D0B #x8D0C Err bitreich.org 70 i- #x8D0D #x8D0E #x8D0F #x8D10 #x8D11 #x8D12 #x8D13 #x8D14 #x8D15 #x8D16 Err bitreich.org 70 i- #x8D17 #x8D18 #x8D19 #x8D1A #x8D1B #x8D1C #x8D20 #x8D51 #x8D52 #x8D57 Err bitreich.org 70 i- #x8D5F #x8D65 #x8D68 #x8D69 #x8D6A #x8D6C #x8D6E #x8D6F #x8D71 #x8D72 Err bitreich.org 70 i- #x8D78 #x8D79 #x8D7A #x8D7B #x8D7C #x8D7D #x8D7E #x8D7F #x8D80 #x8D82 Err bitreich.org 70 i- #x8D83 #x8D86 #x8D87 #x8D88 #x8D89 #x8D8C #x8D8D #x8D8E #x8D8F #x8D90 Err bitreich.org 70 i- #x8D92 #x8D93 #x8D95 #x8D96 #x8D97 #x8D98 #x8D99 #x8D9A #x8D9B #x8D9C Err bitreich.org 70 i- #x8D9D #x8D9E #x8DA0 #x8DA1 #x8DA2 #x8DA4 #x8DA5 #x8DA6 #x8DA7 #x8DA8 Err bitreich.org 70 i- #x8DA9 #x8DAA #x8DAB #x8DAC #x8DAD #x8DAE #x8DAF #x8DB0 #x8DB2 #x8DB6 Err bitreich.org 70 i- #x8DB7 #x8DB9 #x8DBB #x8DBD #x8DC0 #x8DC1 #x8DC2 #x8DC5 #x8DC7 #x8DC8 Err bitreich.org 70 i- #x8DC9 #x8DCA #x8DCD #x8DD0 #x8DD2 #x8DD3 #x8DD4 #x8DD5 #x8DD8 #x8DD9 Err bitreich.org 70 i- #x8DDC #x8DE0 #x8DE1 #x8DE2 #x8DE5 #x8DE6 #x8DE7 #x8DE9 #x8DED #x8DEE Err bitreich.org 70 i- #x8DF0 #x8DF1 #x8DF2 #x8DF4 #x8DF6 #x8DFC #x8DFE #x8DFF #x8E00 #x8E01 Err bitreich.org 70 i- #x8E02 #x8E03 #x8E04 #x8E06 #x8E07 #x8E08 #x8E0B #x8E0D #x8E0E #x8E10 Err bitreich.org 70 i- #x8E11 #x8E12 #x8E13 #x8E15 #x8E16 #x8E17 #x8E18 #x8E19 #x8E1A #x8E1B Err bitreich.org 70 i- #x8E1C #x8E20 #x8E21 #x8E24 #x8E25 #x8E26 #x8E27 #x8E28 #x8E2B #x8E2D Err bitreich.org 70 i- #x8E30 #x8E32 #x8E33 #x8E34 #x8E36 #x8E37 #x8E38 #x8E3B #x8E3C #x8E3E Err bitreich.org 70 i- #x8E3F #x8E43 #x8E45 #x8E46 #x8E4C #x8E4D #x8E4E #x8E4F #x8E50 #x8E53 Err bitreich.org 70 i- #x8E54 #x8E55 #x8E56 #x8E57 #x8E58 #x8E5A #x8E5B #x8E5C #x8E5D #x8E5E Err bitreich.org 70 i- #x8E5F #x8E60 #x8E61 #x8E62 #x8E63 #x8E64 #x8E65 #x8E67 #x8E68 #x8E6A Err bitreich.org 70 i- #x8E6B #x8E6E #x8E71 #x8E73 #x8E75 #x8E77 #x8E78 #x8E79 #x8E7A #x8E7B Err bitreich.org 70 i- #x8E7D #x8E7E #x8E80 #x8E82 #x8E83 #x8E84 #x8E86 #x8E88 #x8E89 #x8E8A Err bitreich.org 70 i- #x8E8B #x8E8C #x8E8D #x8E8E #x8E91 #x8E92 #x8E93 #x8E95 #x8E96 #x8E97 Err bitreich.org 70 i- #x8E98 #x8E99 #x8E9A #x8E9B #x8E9D #x8E9F #x8EA0 #x8EA1 #x8EA2 #x8EA3 Err bitreich.org 70 i- #x8EA4 #x8EA5 #x8EA6 #x8EA7 #x8EA8 #x8EA9 #x8EAA #x8EAD #x8EAE #x8EB0 Err bitreich.org 70 i- #x8EB1 #x8EB3 #x8EB4 #x8EB5 #x8EB6 #x8EB7 #x8EB8 #x8EB9 #x8EBB #x8EBC Err bitreich.org 70 i- #x8EBD #x8EBE #x8EBF #x8EC0 #x8EC1 #x8EC2 #x8EC3 #x8EC4 #x8EC5 #x8EC6 Err bitreich.org 70 i- #x8EC7 #x8EC8 #x8EC9 #x8ECA #x8ECB #x8ECC #x8ECD #x8ECF #x8ED0 #x8ED1 Err bitreich.org 70 i- #x8ED2 #x8ED3 #x8ED4 #x8ED5 #x8ED6 #x8ED7 #x8ED8 #x8ED9 #x8EDA #x8EDB Err bitreich.org 70 i- #x8EDC #x8EDD #x8EDE #x8EDF #x8EE0 #x8EE1 #x8EE2 #x8EE3 #x8EE4 #x8EE5 Err bitreich.org 70 i- #x8EE6 #x8EE7 #x8EE8 #x8EE9 #x8EEA #x8EEB #x8EEC #x8EED #x8EEE #x8EEF Err bitreich.org 70 i- #x8EF0 #x8EF1 #x8EF2 #x8EF3 #x8EF4 #x8EF5 #x8EF6 #x8EF7 #x8EF8 #x8EF9 Err bitreich.org 70 i- #x8EFA #x8EFB #x8EFC #x8EFD #x8EFE #x8EFF #x8F00 #x8F01 #x8F02 #x8F03 Err bitreich.org 70 i- #x8F04 #x8F05 #x8F06 #x8F07 #x8F08 #x8F09 #x8F0A #x8F0B #x8F0C #x8F0D Err bitreich.org 70 i- #x8F0E #x8F0F #x8F10 #x8F11 #x8F12 #x8F13 #x8F14 #x8F15 #x8F16 #x8F17 Err bitreich.org 70 i- #x8F18 #x8F19 #x8F1A #x8F1B #x8F1C #x8F1D #x8F1E #x8F1F #x8F20 #x8F21 Err bitreich.org 70 i- #x8F22 #x8F23 #x8F24 #x8F25 #x8F26 #x8F27 #x8F28 #x8F29 #x8F2A #x8F2B Err bitreich.org 70 i- #x8F2C #x8F2D #x8F2E #x8F2F #x8F30 #x8F31 #x8F32 #x8F33 #x8F34 #x8F35 Err bitreich.org 70 i- #x8F36 #x8F37 #x8F38 #x8F39 #x8F3A #x8F3B #x8F3C #x8F3D #x8F3E #x8F3F Err bitreich.org 70 i- #x8F40 #x8F41 #x8F42 #x8F43 #x8F44 #x8F45 #x8F46 #x8F47 #x8F48 #x8F49 Err bitreich.org 70 i- #x8F4A #x8F4B #x8F4C #x8F4D #x8F4E #x8F4F #x8F50 #x8F51 #x8F52 #x8F53 Err bitreich.org 70 i- #x8F54 #x8F55 #x8F56 #x8F57 #x8F58 #x8F59 #x8F5A #x8F5B #x8F5C #x8F5D Err bitreich.org 70 i- #x8F5E #x8F5F #x8F60 #x8F61 #x8F62 #x8F63 #x8F64 #x8F65 #x8F6A #x8F80 Err bitreich.org 70 i- #x8F8C #x8F92 #x8F9D #x8FA0 #x8FA1 #x8FA2 #x8FA4 #x8FA5 #x8FA6 #x8FA7 Err bitreich.org 70 i- #x8FAA #x8FAC #x8FAD #x8FAE #x8FAF #x8FB2 #x8FB3 #x8FB4 #x8FB5 #x8FB7 Err bitreich.org 70 i- #x8FB8 #x8FBA #x8FBB #x8FBC #x8FBF #x8FC0 #x8FC3 #x8FC6 #x8FC9 #x8FCA Err bitreich.org 70 i- #x8FCB #x8FCC #x8FCD #x8FCF #x8FD2 #x8FD6 #x8FD7 #x8FDA #x8FE0 #x8FE1 Err bitreich.org 70 i- #x8FE3 #x8FE7 #x8FEC #x8FEF #x8FF1 #x8FF2 #x8FF4 #x8FF5 #x8FF6 #x8FFA Err bitreich.org 70 i- #x8FFB #x8FFC #x8FFE #x8FFF #x9007 #x9008 #x900C #x900E #x9013 #x9015 Err bitreich.org 70 i- #x9018 #x9019 #x901C #x9023 #x9024 #x9025 #x9027 #x9028 #x9029 #x902A Err bitreich.org 70 i- #x902B #x902C #x9030 #x9031 #x9032 #x9033 #x9034 #x9037 #x9039 #x903A Err bitreich.org 70 i- #x903D #x903F #x9040 #x9043 #x9045 #x9046 #x9048 #x9049 #x904A #x904B Err bitreich.org 70 i- #x904C #x904E #x9054 #x9055 #x9056 #x9059 #x905A #x905C #x905D #x905E Err bitreich.org 70 i- #x905F #x9060 #x9061 #x9064 #x9066 #x9067 #x9069 #x906A #x906B #x906C Err bitreich.org 70 i- #x906F #x9070 #x9071 #x9072 #x9073 #x9076 #x9077 #x9078 #x9079 #x907A Err bitreich.org 70 i- #x907B #x907C #x907E #x9081 #x9084 #x9085 #x9086 #x9087 #x9089 #x908A Err bitreich.org 70 i- #x908C #x908D #x908E #x908F #x9090 #x9092 #x9094 #x9096 #x9098 #x909A Err bitreich.org 70 i- #x909C #x909E #x909F #x90A0 #x90A4 #x90A5 #x90A7 #x90A8 #x90A9 #x90AB Err bitreich.org 70 i- #x90AD #x90B2 #x90B7 #x90BC #x90BD #x90BF #x90C0 #x90C2 #x90C3 #x90C6 Err bitreich.org 70 i- #x90C8 #x90C9 #x90CB #x90CC #x90CD #x90D2 #x90D4 #x90D5 #x90D6 #x90D8 Err bitreich.org 70 i- #x90D9 #x90DA #x90DE #x90DF #x90E0 #x90E3 #x90E4 #x90E5 #x90E9 #x90EA Err bitreich.org 70 i- #x90EC #x90EE #x90F0 #x90F1 #x90F2 #x90F3 #x90F5 #x90F6 #x90F7 #x90F9 Err bitreich.org 70 i- #x90FA #x90FB #x90FC #x90FF #x9100 #x9101 #x9103 #x9105 #x9106 #x9107 Err bitreich.org 70 i- #x9108 #x9109 #x910A #x910B #x910C #x910D #x910E #x910F #x9110 #x9111 Err bitreich.org 70 i- #x9112 #x9113 #x9114 #x9115 #x9116 #x9117 #x9118 #x911A #x911B #x911C Err bitreich.org 70 i- #x911D #x911F #x9120 #x9121 #x9124 #x9125 #x9126 #x9127 #x9128 #x9129 Err bitreich.org 70 i- #x912A #x912B #x912C #x912D #x912E #x9130 #x9132 #x9133 #x9134 #x9135 Err bitreich.org 70 i- #x9136 #x9137 #x9138 #x913A #x913B #x913C #x913D #x913E #x913F #x9140 Err bitreich.org 70 i- #x9141 #x9142 #x9144 #x9145 #x9147 #x9148 #x9151 #x9153 #x9154 #x9155 Err bitreich.org 70 i- #x9156 #x9158 #x9159 #x915B #x915C #x915F #x9160 #x9166 #x9167 #x9168 Err bitreich.org 70 i- #x916B #x916D #x9173 #x917A #x917B #x917C #x9180 #x9181 #x9182 #x9183 Err bitreich.org 70 i- #x9184 #x9186 #x9188 #x918A #x918E #x918F #x9193 #x9194 #x9195 #x9196 Err bitreich.org 70 i- #x9197 #x9198 #x9199 #x919C #x919D #x919E #x919F #x91A0 #x91A1 #x91A4 Err bitreich.org 70 i- #x91A5 #x91A6 #x91A7 #x91A8 #x91A9 #x91AB #x91AC #x91B0 #x91B1 #x91B2 Err bitreich.org 70 i- #x91B3 #x91B6 #x91B7 #x91B8 #x91B9 #x91BB #x91BC #x91BD #x91BE #x91BF Err bitreich.org 70 i- #x91C0 #x91C1 #x91C2 #x91C3 #x91C4 #x91C5 #x91C6 #x91C8 #x91CB #x91D0 Err bitreich.org 70 i- #x91D2 #x91D3 #x91D4 #x91D5 #x91D6 #x91D7 #x91D8 #x91D9 #x91DA #x91DB Err bitreich.org 70 i- #x91DD #x91DE #x91DF #x91E0 #x91E1 #x91E2 #x91E3 #x91E4 #x91E5 #x91E6 Err bitreich.org 70 i- #x91E7 #x91E8 #x91E9 #x91EA #x91EB #x91EC #x91ED #x91EE #x91EF #x91F0 Err bitreich.org 70 i- #x91F1 #x91F2 #x91F3 #x91F4 #x91F5 #x91F6 #x91F7 #x91F8 #x91F9 #x91FA Err bitreich.org 70 i- #x91FB #x91FC #x91FD #x91FE #x91FF #x9200 #x9201 #x9202 #x9203 #x9204 Err bitreich.org 70 i- #x9205 #x9206 #x9207 #x9208 #x9209 #x920A #x920B #x920C #x920D #x920E Err bitreich.org 70 i- #x920F #x9210 #x9211 #x9212 #x9213 #x9214 #x9215 #x9216 #x9217 #x9218 Err bitreich.org 70 i- #x9219 #x921A #x921B #x921C #x921D #x921E #x921F #x9220 #x9221 #x9222 Err bitreich.org 70 i- #x9223 #x9224 #x9225 #x9226 #x9227 #x9228 #x9229 #x922A #x922B #x922C Err bitreich.org 70 i- #x922D #x922E #x922F #x9230 #x9231 #x9232 #x9233 #x9234 #x9235 #x9236 Err bitreich.org 70 i- #x9237 #x9238 #x9239 #x923A #x923B #x923C #x923D #x923E #x923F #x9240 Err bitreich.org 70 i- #x9241 #x9242 #x9243 #x9244 #x9245 #x9246 #x9247 #x9248 #x9249 #x924A Err bitreich.org 70 i- #x924B #x924C #x924D #x924E #x924F #x9250 #x9251 #x9252 #x9253 #x9254 Err bitreich.org 70 i- #x9255 #x9256 #x9257 #x9258 #x9259 #x925A #x925B #x925C #x925D #x925E Err bitreich.org 70 i- #x925F #x9260 #x9261 #x9262 #x9263 #x9264 #x9265 #x9266 #x9267 #x9268 Err bitreich.org 70 i- #x9269 #x926A #x926B #x926C #x926D #x926E #x926F #x9270 #x9271 #x9272 Err bitreich.org 70 i- #x9273 #x9275 #x9276 #x9277 #x9278 #x9279 #x927A #x927B #x927C #x927D Err bitreich.org 70 i- #x927E #x927F #x9280 #x9281 #x9282 #x9283 #x9284 #x9285 #x9286 #x9287 Err bitreich.org 70 i- #x9288 #x9289 #x928A #x928B #x928C #x928D #x928F #x9290 #x9291 #x9292 Err bitreich.org 70 i- #x9293 #x9294 #x9295 #x9296 #x9297 #x9298 #x9299 #x929A #x929B #x929C Err bitreich.org 70 i- #x929D #x929E #x929F #x92A0 #x92A1 #x92A2 #x92A3 #x92A4 #x92A5 #x92A6 Err bitreich.org 70 i- #x92A7 #x92A8 #x92A9 #x92AA #x92AB #x92AC #x92AD #x92AF #x92B0 #x92B1 Err bitreich.org 70 i- #x92B2 #x92B3 #x92B4 #x92B5 #x92B6 #x92B7 #x92B8 #x92B9 #x92BA #x92BB Err bitreich.org 70 i- #x92BC #x92BD #x92BE #x92BF #x92C0 #x92C1 #x92C2 #x92C3 #x92C4 #x92C5 Err bitreich.org 70 i- #x92C6 #x92C7 #x92C9 #x92CA #x92CB #x92CC #x92CD #x92CE #x92CF #x92D0 Err bitreich.org 70 i- #x92D1 #x92D2 #x92D3 #x92D4 #x92D5 #x92D6 #x92D7 #x92D8 #x92D9 #x92DA Err bitreich.org 70 i- #x92DB #x92DC #x92DD #x92DE #x92DF #x92E0 #x92E1 #x92E2 #x92E3 #x92E4 Err bitreich.org 70 i- #x92E5 #x92E6 #x92E7 #x92E8 #x92E9 #x92EA #x92EB #x92EC #x92ED #x92EE Err bitreich.org 70 i- #x92EF #x92F0 #x92F1 #x92F2 #x92F3 #x92F4 #x92F5 #x92F6 #x92F7 #x92F8 Err bitreich.org 70 i- #x92F9 #x92FA #x92FB #x92FC #x92FD #x92FE #x92FF #x9300 #x9301 #x9302 Err bitreich.org 70 i- #x9303 #x9304 #x9305 #x9306 #x9307 #x9308 #x9309 #x930A #x930B #x930C Err bitreich.org 70 i- #x930D #x930E #x930F #x9310 #x9311 #x9312 #x9313 #x9314 #x9315 #x9316 Err bitreich.org 70 i- #x9317 #x9318 #x9319 #x931A #x931B #x931C #x931D #x931E #x931F #x9320 Err bitreich.org 70 i- #x9321 #x9322 #x9323 #x9324 #x9325 #x9326 #x9327 #x9328 #x9329 #x932A Err bitreich.org 70 i- #x932B #x932C #x932D #x932E #x932F #x9330 #x9331 #x9332 #x9333 #x9334 Err bitreich.org 70 i- #x9335 #x9336 #x9337 #x9338 #x9339 #x933A #x933B #x933C #x933D #x933F Err bitreich.org 70 i- #x9340 #x9341 #x9342 #x9343 #x9344 #x9345 #x9346 #x9347 #x9348 #x9349 Err bitreich.org 70 i- #x934A #x934B #x934C #x934D #x934E #x934F #x9350 #x9351 #x9352 #x9353 Err bitreich.org 70 i- #x9354 #x9355 #x9356 #x9357 #x9358 #x9359 #x935A #x935B #x935C #x935D Err bitreich.org 70 i- #x935E #x935F #x9360 #x9361 #x9362 #x9363 #x9364 #x9365 #x9366 #x9367 Err bitreich.org 70 i- #x9368 #x9369 #x936B #x936C #x936D #x936E #x936F #x9370 #x9371 #x9372 Err bitreich.org 70 i- #x9373 #x9374 #x9375 #x9376 #x9377 #x9378 #x9379 #x937A #x937B #x937C Err bitreich.org 70 i- #x937D #x937E #x937F #x9380 #x9381 #x9382 #x9383 #x9384 #x9385 #x9386 Err bitreich.org 70 i- #x9387 #x9388 #x9389 #x938A #x938B #x938C #x938D #x938E #x9390 #x9391 Err bitreich.org 70 i- #x9392 #x9393 #x9394 #x9395 #x9396 #x9397 #x9398 #x9399 #x939A #x939B Err bitreich.org 70 i- #x939C #x939D #x939E #x939F #x93A0 #x93A1 #x93A2 #x93A3 #x93A4 #x93A5 Err bitreich.org 70 i- #x93A6 #x93A7 #x93A8 #x93A9 #x93AA #x93AB #x93AC #x93AD #x93AE #x93AF Err bitreich.org 70 i- #x93B0 #x93B1 #x93B2 #x93B3 #x93B4 #x93B5 #x93B6 #x93B7 #x93B8 #x93B9 Err bitreich.org 70 i- #x93BA #x93BB #x93BC #x93BD #x93BE #x93BF #x93C0 #x93C1 #x93C2 #x93C3 Err bitreich.org 70 i- #x93C4 #x93C5 #x93C6 #x93C7 #x93C8 #x93C9 #x93CB #x93CC #x93CD #x93CE Err bitreich.org 70 i- #x93CF #x93D0 #x93D1 #x93D2 #x93D3 #x93D4 #x93D5 #x93D7 #x93D8 #x93D9 Err bitreich.org 70 i- #x93DA #x93DB #x93DC #x93DD #x93DE #x93DF #x93E0 #x93E1 #x93E2 #x93E3 Err bitreich.org 70 i- #x93E4 #x93E5 #x93E6 #x93E7 #x93E8 #x93E9 #x93EA #x93EB #x93EC #x93ED Err bitreich.org 70 i- #x93EE #x93EF #x93F0 #x93F1 #x93F2 #x93F3 #x93F4 #x93F5 #x93F6 #x93F7 Err bitreich.org 70 i- #x93F8 #x93F9 #x93FA #x93FB #x93FC #x93FD #x93FE #x93FF #x9400 #x9401 Err bitreich.org 70 i- #x9402 #x9403 #x9404 #x9405 #x9406 #x9407 #x9408 #x9409 #x940A #x940B Err bitreich.org 70 i- #x940C #x940D #x940E #x940F #x9410 #x9411 #x9412 #x9413 #x9414 #x9415 Err bitreich.org 70 i- #x9416 #x9417 #x9418 #x9419 #x941A #x941B #x941C #x941D #x941E #x941F Err bitreich.org 70 i- #x9420 #x9421 #x9422 #x9423 #x9424 #x9425 #x9426 #x9427 #x9428 #x9429 Err bitreich.org 70 i- #x942A #x942B #x942C #x942D #x942E #x942F #x9430 #x9431 #x9432 #x9433 Err bitreich.org 70 i- #x9434 #x9435 #x9436 #x9437 #x9438 #x9439 #x943A #x943B #x943C #x943D Err bitreich.org 70 i- #x943F #x9440 #x9441 #x9442 #x9443 #x9444 #x9445 #x9446 #x9447 #x9448 Err bitreich.org 70 i- #x9449 #x944A #x944B #x944C #x944D #x944E #x944F #x9450 #x9451 #x9452 Err bitreich.org 70 i- #x9453 #x9454 #x9455 #x9456 #x9457 #x9458 #x9459 #x945A #x945B #x945C Err bitreich.org 70 i- #x945D #x945E #x945F #x9460 #x9461 #x9462 #x9463 #x9464 #x9465 #x9466 Err bitreich.org 70 i- #x9467 #x9468 #x9469 #x946A #x946C #x946D #x946E #x946F #x9470 #x9471 Err bitreich.org 70 i- #x9472 #x9473 #x9474 #x9475 #x9476 #x9477 #x9478 #x9479 #x947A #x947B Err bitreich.org 70 i- #x947C #x947D #x947E #x947F #x9480 #x9481 #x9482 #x9483 #x9484 #x9491 Err bitreich.org 70 i- #x9496 #x9498 #x94C7 #x94CF #x94D3 #x94D4 #x94DA #x94E6 #x94FB #x951C Err bitreich.org 70 i- #x9520 #x9527 #x9533 #x953D #x9543 #x9548 #x954B #x9555 #x955A #x9560 Err bitreich.org 70 i- #x956E #x9574 #x9575 #x9577 #x9578 #x9579 #x957A #x957B #x957C #x957D Err bitreich.org 70 i- #x957E #x9580 #x9581 #x9582 #x9583 #x9584 #x9585 #x9586 #x9587 #x9588 Err bitreich.org 70 i- #x9589 #x958A #x958B #x958C #x958D #x958E #x958F #x9590 #x9591 #x9592 Err bitreich.org 70 i- #x9593 #x9594 #x9595 #x9596 #x9597 #x9598 #x9599 #x959A #x959B #x959C Err bitreich.org 70 i- #x959D #x959E #x959F #x95A0 #x95A1 #x95A2 #x95A3 #x95A4 #x95A5 #x95A6 Err bitreich.org 70 i- #x95A7 #x95A8 #x95A9 #x95AA #x95AB #x95AC #x95AD #x95AE #x95AF #x95B0 Err bitreich.org 70 i- #x95B1 #x95B2 #x95B3 #x95B4 #x95B5 #x95B6 #x95B7 #x95B8 #x95B9 #x95BA Err bitreich.org 70 i- #x95BB #x95BC #x95BD #x95BE #x95BF #x95C0 #x95C1 #x95C2 #x95C3 #x95C4 Err bitreich.org 70 i- #x95C5 #x95C6 #x95C7 #x95C8 #x95C9 #x95CA #x95CB #x95CC #x95CD #x95CE Err bitreich.org 70 i- #x95CF #x95D0 #x95D1 #x95D2 #x95D3 #x95D4 #x95D5 #x95D6 #x95D7 #x95D8 Err bitreich.org 70 i- #x95D9 #x95DA #x95DB #x95DC #x95DD #x95DE #x95DF #x95E0 #x95E1 #x95E2 Err bitreich.org 70 i- #x95E3 #x95E4 #x95E5 #x95E6 #x95E7 #x95EC #x95FF #x9607 #x9613 #x9618 Err bitreich.org 70 i- #x961B #x961E #x9620 #x9623 #x9624 #x9625 #x9626 #x9627 #x9628 #x9629 Err bitreich.org 70 i- #x962B #x962C #x962D #x962F #x9630 #x9637 #x9638 #x9639 #x963A #x963E Err bitreich.org 70 i- #x9641 #x9643 #x964A #x964E #x964F #x9651 #x9652 #x9653 #x9656 #x9657 Err bitreich.org 70 i- #x9658 #x9659 #x965A #x965C #x965D #x965E #x9660 #x9663 #x9665 #x9666 Err bitreich.org 70 i- #x966B #x966D #x966E #x966F #x9670 #x9671 #x9673 #x9678 #x9679 #x967A Err bitreich.org 70 i- #x967B #x967C #x967D #x967E #x967F #x9680 #x9681 #x9682 #x9683 #x9684 Err bitreich.org 70 i- #x9687 #x9689 #x968A #x968C #x968E #x9691 #x9692 #x9693 #x9695 #x9696 Err bitreich.org 70 i- #x969A #x969B #x969D #x969E #x969F #x96A0 #x96A1 #x96A2 #x96A3 #x96A4 Err bitreich.org 70 i- #x96A5 #x96A6 #x96A8 #x96A9 #x96AA #x96AB #x96AC #x96AD #x96AE #x96AF Err bitreich.org 70 i- #x96B1 #x96B2 #x96B4 #x96B5 #x96B7 #x96B8 #x96BA #x96BB #x96BF #x96C2 Err bitreich.org 70 i- #x96C3 #x96C8 #x96CA #x96CB #x96D0 #x96D1 #x96D3 #x96D4 #x96D6 #x96D7 Err bitreich.org 70 i- #x96D8 #x96D9 #x96DA #x96DB #x96DC #x96DD #x96DE #x96DF #x96E1 #x96E2 Err bitreich.org 70 i- #x96E3 #x96E4 #x96E5 #x96E6 #x96E7 #x96EB #x96EC #x96ED #x96EE #x96F0 Err bitreich.org 70 i- #x96F1 #x96F2 #x96F4 #x96F5 #x96F8 #x96FA #x96FB #x96FC #x96FD #x96FF Err bitreich.org 70 i- #x9702 #x9703 #x9705 #x970A #x970B #x970C #x9710 #x9711 #x9712 #x9714 Err bitreich.org 70 i- #x9715 #x9717 #x9718 #x9719 #x971A #x971B #x971D #x971F #x9720 #x9721 Err bitreich.org 70 i- #x9722 #x9723 #x9724 #x9725 #x9726 #x9727 #x9728 #x9729 #x972B #x972C Err bitreich.org 70 i- #x972E #x972F #x9731 #x9733 #x9734 #x9735 #x9736 #x9737 #x973A #x973B Err bitreich.org 70 i- #x973C #x973D #x973F #x9740 #x9741 #x9742 #x9743 #x9744 #x9745 #x9746 Err bitreich.org 70 i- #x9747 #x9748 #x9749 #x974A #x974B #x974C #x974D #x974E #x974F #x9750 Err bitreich.org 70 i- #x9751 #x9754 #x9755 #x9757 #x9758 #x975A #x975C #x975D #x975F #x9763 Err bitreich.org 70 i- #x9764 #x9766 #x9767 #x9768 #x976A #x976B #x976C #x976D #x976E #x976F Err bitreich.org 70 i- #x9770 #x9771 #x9772 #x9775 #x9777 #x9778 #x9779 #x977A #x977B #x977D Err bitreich.org 70 i- #x977E #x977F #x9780 #x9781 #x9782 #x9783 #x9784 #x9786 #x9787 #x9788 Err bitreich.org 70 i- #x9789 #x978A #x978C #x978E #x978F #x9790 #x9793 #x9795 #x9796 #x9797 Err bitreich.org 70 i- #x9799 #x979A #x979B #x979C #x979D #x979E #x979F #x97A1 #x97A2 #x97A4 Err bitreich.org 70 i- #x97A5 #x97A6 #x97A7 #x97A8 #x97A9 #x97AA #x97AC #x97AE #x97B0 #x97B1 Err bitreich.org 70 i- #x97B3 #x97B5 #x97B6 #x97B7 #x97B8 #x97B9 #x97BA #x97BB #x97BC #x97BD Err bitreich.org 70 i- #x97BE #x97BF #x97C0 #x97C1 #x97C2 #x97C3 #x97C4 #x97C5 #x97C6 #x97C7 Err bitreich.org 70 i- #x97C8 #x97C9 #x97CA #x97CB #x97CC #x97CD #x97CE #x97CF #x97D0 #x97D1 Err bitreich.org 70 i- #x97D2 #x97D3 #x97D4 #x97D5 #x97D6 #x97D7 #x97D8 #x97D9 #x97DA #x97DB Err bitreich.org 70 i- #x97DC #x97DD #x97DE #x97DF #x97E0 #x97E1 #x97E2 #x97E3 #x97E4 #x97E5 Err bitreich.org 70 i- #x97E8 #x97EE #x97EF #x97F0 #x97F1 #x97F2 #x97F4 #x97F7 #x97F8 #x97F9 Err bitreich.org 70 i- #x97FA #x97FB #x97FC #x97FD #x97FE #x97FF #x9800 #x9801 #x9802 #x9803 Err bitreich.org 70 i- #x9804 #x9805 #x9806 #x9807 #x9808 #x9809 #x980A #x980B #x980C #x980D Err bitreich.org 70 i- #x980E #x980F #x9810 #x9811 #x9812 #x9813 #x9814 #x9815 #x9816 #x9817 Err bitreich.org 70 i- #x9818 #x9819 #x981A #x981B #x981C #x981D #x981E #x981F #x9820 #x9821 Err bitreich.org 70 i- #x9822 #x9823 #x9824 #x9825 #x9826 #x9827 #x9828 #x9829 #x982A #x982B Err bitreich.org 70 i- #x982C #x982D #x982E #x982F #x9830 #x9831 #x9832 #x9833 #x9834 #x9835 Err bitreich.org 70 i- #x9836 #x9837 #x9838 #x9839 #x983A #x983B #x983C #x983D #x983E #x983F Err bitreich.org 70 i- #x9840 #x9841 #x9842 #x9843 #x9844 #x9845 #x9846 #x9847 #x9848 #x9849 Err bitreich.org 70 i- #x984A #x984B #x984C #x984D #x984E #x984F #x9850 #x9851 #x9852 #x9853 Err bitreich.org 70 i- #x9854 #x9855 #x9856 #x9857 #x9858 #x9859 #x985A #x985B #x985C #x985D Err bitreich.org 70 i- #x985E #x985F #x9860 #x9861 #x9862 #x9863 #x9864 #x9865 #x9866 #x9867 Err bitreich.org 70 i- #x9868 #x9869 #x986A #x986B #x986C #x986D #x986E #x986F #x9870 #x9871 Err bitreich.org 70 i- #x9872 #x9873 #x9874 #x988B #x988E #x9892 #x9895 #x9899 #x98A3 #x98A8 Err bitreich.org 70 i- #x98A9 #x98AA #x98AB #x98AC #x98AD #x98AE #x98AF #x98B0 #x98B1 #x98B2 Err bitreich.org 70 i- #x98B3 #x98B4 #x98B5 #x98B6 #x98B7 #x98B8 #x98B9 #x98BA #x98BB #x98BC Err bitreich.org 70 i- #x98BD #x98BE #x98BF #x98C0 #x98C1 #x98C2 #x98C3 #x98C4 #x98C5 #x98C6 Err bitreich.org 70 i- #x98C7 #x98C8 #x98C9 #x98CA #x98CB #x98CC #x98CD #x98CF #x98D0 #x98D4 Err bitreich.org 70 i- #x98D6 #x98D7 #x98DB #x98DC #x98DD #x98E0 #x98E1 #x98E2 #x98E3 #x98E4 Err bitreich.org 70 i- #x98E5 #x98E6 #x98E9 #x98EA #x98EB #x98EC #x98ED #x98EE #x98EF #x98F0 Err bitreich.org 70 i- #x98F1 #x98F2 #x98F3 #x98F4 #x98F5 #x98F6 #x98F7 #x98F8 #x98F9 #x98FA Err bitreich.org 70 i- #x98FB #x98FC #x98FD #x98FE #x98FF #x9900 #x9901 #x9902 #x9903 #x9904 Err bitreich.org 70 i- #x9905 #x9906 #x9907 #x9908 #x9909 #x990A #x990B #x990C #x990E #x990F Err bitreich.org 70 i- #x9911 #x9912 #x9913 #x9914 #x9915 #x9916 #x9917 #x9918 #x9919 #x991A Err bitreich.org 70 i- #x991B #x991C #x991D #x991E #x991F #x9920 #x9921 #x9922 #x9923 #x9924 Err bitreich.org 70 i- #x9925 #x9926 #x9927 #x9928 #x9929 #x992A #x992B #x992C #x992D #x992F Err bitreich.org 70 i- #x9930 #x9931 #x9932 #x9933 #x9934 #x9935 #x9936 #x9937 #x9938 #x9939 Err bitreich.org 70 i- #x993A #x993B #x993C #x993D #x993E #x993F #x9940 #x9941 #x9942 #x9943 Err bitreich.org 70 i- #x9944 #x9945 #x9946 #x9947 #x9948 #x9949 #x994A #x994B #x994C #x994D Err bitreich.org 70 i- #x994E #x994F #x9950 #x9951 #x9952 #x9953 #x9956 #x9957 #x9958 #x9959 Err bitreich.org 70 i- #x995A #x995B #x995C #x995D #x995E #x995F #x9960 #x9961 #x9962 #x9964 Err bitreich.org 70 i- #x9966 #x9973 #x9978 #x9979 #x997B #x997E #x9982 #x9983 #x9989 #x998C Err bitreich.org 70 i- #x998E #x999A #x999B #x999C #x999D #x999E #x999F #x99A0 #x99A1 #x99A2 Err bitreich.org 70 i- #x99A3 #x99A4 #x99A6 #x99A7 #x99A9 #x99AA #x99AB #x99AC #x99AD #x99AE Err bitreich.org 70 i- #x99AF #x99B0 #x99B1 #x99B2 #x99B3 #x99B4 #x99B5 #x99B6 #x99B7 #x99B8 Err bitreich.org 70 i- #x99B9 #x99BA #x99BB #x99BC #x99BD #x99BE #x99BF #x99C0 #x99C1 #x99C2 Err bitreich.org 70 i- #x99C3 #x99C4 #x99C5 #x99C6 #x99C7 #x99C8 #x99C9 #x99CA #x99CB #x99CC Err bitreich.org 70 i- #x99CD #x99CE #x99CF #x99D0 #x99D1 #x99D2 #x99D3 #x99D4 #x99D5 #x99D6 Err bitreich.org 70 i- #x99D7 #x99D8 #x99D9 #x99DA #x99DB #x99DC #x99DD #x99DE #x99DF #x99E0 Err bitreich.org 70 i- #x99E1 #x99E2 #x99E3 #x99E4 #x99E5 #x99E6 #x99E7 #x99E8 #x99E9 #x99EA Err bitreich.org 70 i- #x99EB #x99EC #x99ED #x99EE #x99EF #x99F0 #x99F1 #x99F2 #x99F3 #x99F4 Err bitreich.org 70 i- #x99F5 #x99F6 #x99F7 #x99F8 #x99F9 #x99FA #x99FB #x99FC #x99FD #x99FE Err bitreich.org 70 i- #x99FF #x9A00 #x9A01 #x9A02 #x9A03 #x9A04 #x9A05 #x9A06 #x9A07 #x9A08 Err bitreich.org 70 i- #x9A09 #x9A0A #x9A0B #x9A0C #x9A0D #x9A0E #x9A0F #x9A10 #x9A11 #x9A12 Err bitreich.org 70 i- #x9A13 #x9A14 #x9A15 #x9A16 #x9A17 #x9A18 #x9A19 #x9A1A #x9A1B #x9A1C Err bitreich.org 70 i- #x9A1D #x9A1E #x9A1F #x9A20 #x9A21 #x9A22 #x9A23 #x9A24 #x9A25 #x9A26 Err bitreich.org 70 i- #x9A27 #x9A28 #x9A29 #x9A2A #x9A2B #x9A2C #x9A2D #x9A2E #x9A2F #x9A30 Err bitreich.org 70 i- #x9A31 #x9A32 #x9A33 #x9A34 #x9A35 #x9A36 #x9A37 #x9A38 #x9A39 #x9A3A Err bitreich.org 70 i- #x9A3B #x9A3C #x9A3D #x9A3E #x9A3F #x9A40 #x9A41 #x9A42 #x9A43 #x9A44 Err bitreich.org 70 i- #x9A45 #x9A46 #x9A47 #x9A48 #x9A49 #x9A4A #x9A4B #x9A4C #x9A4D #x9A4E Err bitreich.org 70 i- #x9A4F #x9A50 #x9A51 #x9A52 #x9A53 #x9A54 #x9A55 #x9A56 #x9A57 #x9A58 Err bitreich.org 70 i- #x9A59 #x9A5A #x9A5B #x9A5C #x9A5D #x9A5E #x9A5F #x9A60 #x9A61 #x9A62 Err bitreich.org 70 i- #x9A63 #x9A64 #x9A65 #x9A66 #x9A67 #x9A68 #x9A69 #x9A6A #x9A6B #x9A72 Err bitreich.org 70 i- #x9A83 #x9A89 #x9A8D #x9A8E #x9A94 #x9A95 #x9A99 #x9AA6 #x9AA9 #x9AAA Err bitreich.org 70 i- #x9AAB #x9AAC #x9AAD #x9AAE #x9AAF #x9AB2 #x9AB3 #x9AB4 #x9AB5 #x9AB9 Err bitreich.org 70 i- #x9ABB #x9ABD #x9ABE #x9ABF #x9AC3 #x9AC4 #x9AC6 #x9AC7 #x9AC8 #x9AC9 Err bitreich.org 70 i- #x9ACA #x9ACD #x9ACE #x9ACF #x9AD0 #x9AD2 #x9AD4 #x9AD5 #x9AD6 #x9AD7 Err bitreich.org 70 i- #x9AD9 #x9ADA #x9ADB #x9ADC #x9ADD #x9ADE #x9AE0 #x9AE2 #x9AE3 #x9AE4 Err bitreich.org 70 i- #x9AE5 #x9AE7 #x9AE8 #x9AE9 #x9AEA #x9AEC #x9AEE #x9AF0 #x9AF1 #x9AF2 Err bitreich.org 70 i- #x9AF3 #x9AF4 #x9AF5 #x9AF6 #x9AF7 #x9AF8 #x9AFA #x9AFC #x9AFD #x9AFE Err bitreich.org 70 i- #x9AFF #x9B00 #x9B01 #x9B02 #x9B04 #x9B05 #x9B06 #x9B07 #x9B09 #x9B0A Err bitreich.org 70 i- #x9B0B #x9B0C #x9B0D #x9B0E #x9B10 #x9B11 #x9B12 #x9B14 #x9B15 #x9B16 Err bitreich.org 70 i- #x9B17 #x9B18 #x9B19 #x9B1A #x9B1B #x9B1C #x9B1D #x9B1E #x9B20 #x9B21 Err bitreich.org 70 i- #x9B22 #x9B24 #x9B25 #x9B26 #x9B27 #x9B28 #x9B29 #x9B2A #x9B2B #x9B2C Err bitreich.org 70 i- #x9B2D #x9B2E #x9B30 #x9B31 #x9B33 #x9B34 #x9B35 #x9B36 #x9B37 #x9B38 Err bitreich.org 70 i- #x9B39 #x9B3A #x9B3D #x9B3E #x9B3F #x9B40 #x9B46 #x9B4A #x9B4B #x9B4C Err bitreich.org 70 i- #x9B4E #x9B50 #x9B52 #x9B53 #x9B55 #x9B56 #x9B57 #x9B58 #x9B59 #x9B5A Err bitreich.org 70 i- #x9B5B #x9B5C #x9B5D #x9B5E #x9B5F #x9B60 #x9B61 #x9B62 #x9B63 #x9B64 Err bitreich.org 70 i- #x9B65 #x9B66 #x9B67 #x9B68 #x9B69 #x9B6A #x9B6B #x9B6C #x9B6D #x9B6E Err bitreich.org 70 i- #x9B6F #x9B70 #x9B71 #x9B72 #x9B73 #x9B74 #x9B75 #x9B76 #x9B77 #x9B78 Err bitreich.org 70 i- #x9B79 #x9B7A #x9B7B #x9B7C #x9B7D #x9B7E #x9B7F #x9B80 #x9B81 #x9B82 Err bitreich.org 70 i- #x9B83 #x9B84 #x9B85 #x9B86 #x9B87 #x9B88 #x9B89 #x9B8A #x9B8B #x9B8C Err bitreich.org 70 i- #x9B8D #x9B8E #x9B8F #x9B90 #x9B91 #x9B92 #x9B93 #x9B94 #x9B95 #x9B96 Err bitreich.org 70 i- #x9B97 #x9B98 #x9B99 #x9B9A #x9B9B #x9B9C #x9B9D #x9B9E #x9B9F #x9BA0 Err bitreich.org 70 i- #x9BA1 #x9BA2 #x9BA3 #x9BA4 #x9BA5 #x9BA6 #x9BA7 #x9BA8 #x9BA9 #x9BAA Err bitreich.org 70 i- #x9BAB #x9BAC #x9BAD #x9BAE #x9BAF #x9BB0 #x9BB1 #x9BB2 #x9BB3 #x9BB4 Err bitreich.org 70 i- #x9BB5 #x9BB6 #x9BB7 #x9BB8 #x9BB9 #x9BBA #x9BBB #x9BBC #x9BBD #x9BBE Err bitreich.org 70 i- #x9BBF #x9BC0 #x9BC1 #x9BC2 #x9BC3 #x9BC4 #x9BC5 #x9BC6 #x9BC7 #x9BC8 Err bitreich.org 70 i- #x9BC9 #x9BCA #x9BCB #x9BCC #x9BCD #x9BCE #x9BCF #x9BD0 #x9BD1 #x9BD2 Err bitreich.org 70 i- #x9BD3 #x9BD4 #x9BD5 #x9BD6 #x9BD7 #x9BD8 #x9BD9 #x9BDA #x9BDB #x9BDC Err bitreich.org 70 i- #x9BDD #x9BDE #x9BDF #x9BE0 #x9BE1 #x9BE2 #x9BE3 #x9BE4 #x9BE5 #x9BE6 Err bitreich.org 70 i- #x9BE7 #x9BE8 #x9BE9 #x9BEA #x9BEB #x9BEC #x9BED #x9BEE #x9BEF #x9BF0 Err bitreich.org 70 i- #x9BF1 #x9BF2 #x9BF3 #x9BF4 #x9BF5 #x9BF6 #x9BF7 #x9BF8 #x9BF9 #x9BFA Err bitreich.org 70 i- #x9BFB #x9BFC #x9BFD #x9BFE #x9BFF #x9C00 #x9C01 #x9C02 #x9C03 #x9C04 Err bitreich.org 70 i- #x9C05 #x9C06 #x9C07 #x9C08 #x9C09 #x9C0A #x9C0B #x9C0C #x9C0D #x9C0E Err bitreich.org 70 i- #x9C0F #x9C10 #x9C11 #x9C12 #x9C13 #x9C14 #x9C15 #x9C16 #x9C17 #x9C18 Err bitreich.org 70 i- #x9C19 #x9C1A #x9C1B #x9C1C #x9C1D #x9C1E #x9C1F #x9C20 #x9C21 #x9C22 Err bitreich.org 70 i- #x9C23 #x9C24 #x9C25 #x9C26 #x9C27 #x9C28 #x9C29 #x9C2A #x9C2B #x9C2C Err bitreich.org 70 i- #x9C2D #x9C2E #x9C2F #x9C30 #x9C31 #x9C32 #x9C33 #x9C34 #x9C35 #x9C36 Err bitreich.org 70 i- #x9C37 #x9C38 #x9C39 #x9C3A #x9C3B #x9C3C #x9C3D #x9C3E #x9C3F #x9C40 Err bitreich.org 70 i- #x9C41 #x9C42 #x9C43 #x9C44 #x9C45 #x9C46 #x9C47 #x9C48 #x9C49 #x9C4A Err bitreich.org 70 i- #x9C4B #x9C4C #x9C4D #x9C4E #x9C4F #x9C50 #x9C51 #x9C52 #x9C53 #x9C54 Err bitreich.org 70 i- #x9C55 #x9C56 #x9C57 #x9C58 #x9C59 #x9C5A #x9C5B #x9C5C #x9C5D #x9C5E Err bitreich.org 70 i- #x9C5F #x9C60 #x9C61 #x9C62 #x9C63 #x9C64 #x9C65 #x9C66 #x9C67 #x9C68 Err bitreich.org 70 i- #x9C69 #x9C6A #x9C6B #x9C6C #x9C6D #x9C6E #x9C6F #x9C70 #x9C71 #x9C72 Err bitreich.org 70 i- #x9C73 #x9C74 #x9C75 #x9C76 #x9C77 #x9C78 #x9C79 #x9C7A #x9C7B #x9C7D Err bitreich.org 70 i- #x9C7E #x9C80 #x9C83 #x9C84 #x9C89 #x9C8A #x9C8C #x9C8F #x9C93 #x9C96 Err bitreich.org 70 i- #x9C97 #x9C98 #x9C99 #x9C9D #x9CAA #x9CAC #x9CAF #x9CB9 #x9CBE #x9CBF Err bitreich.org 70 i- #x9CC0 #x9CC1 #x9CC2 #x9CC8 #x9CC9 #x9CD1 #x9CD2 #x9CDA #x9CDB #x9CE0 Err bitreich.org 70 i- #x9CE1 #x9CE3 #x9CE4 #x9CE5 #x9CE6 #x9CE7 #x9CE8 #x9CE9 #x9CEA #x9CEB Err bitreich.org 70 i- #x9CEC #x9CED #x9CEE #x9CEF #x9CF0 #x9CF1 #x9CF2 #x9CF3 #x9CF4 #x9CF5 Err bitreich.org 70 i- #x9CF6 #x9CF7 #x9CF8 #x9CF9 #x9CFA #x9CFB #x9CFC #x9CFD #x9CFE #x9CFF Err bitreich.org 70 i- #x9D00 #x9D01 #x9D02 #x9D03 #x9D04 #x9D05 #x9D06 #x9D07 #x9D08 #x9D09 Err bitreich.org 70 i- #x9D0A #x9D0B #x9D0C #x9D0D #x9D0E #x9D0F #x9D10 #x9D11 #x9D12 #x9D13 Err bitreich.org 70 i- #x9D14 #x9D15 #x9D16 #x9D17 #x9D18 #x9D19 #x9D1A #x9D1B #x9D1C #x9D1D Err bitreich.org 70 i- #x9D1E #x9D1F #x9D20 #x9D21 #x9D22 #x9D23 #x9D24 #x9D25 #x9D26 #x9D27 Err bitreich.org 70 i- #x9D28 #x9D29 #x9D2A #x9D2B #x9D2C #x9D2D #x9D2E #x9D2F #x9D30 #x9D31 Err bitreich.org 70 i- #x9D32 #x9D33 #x9D34 #x9D35 #x9D36 #x9D37 #x9D38 #x9D39 #x9D3A #x9D3B Err bitreich.org 70 i- #x9D3C #x9D3D #x9D3E #x9D3F #x9D40 #x9D41 #x9D42 #x9D43 #x9D44 #x9D45 Err bitreich.org 70 i- #x9D46 #x9D47 #x9D48 #x9D49 #x9D4A #x9D4B #x9D4C #x9D4D #x9D4E #x9D4F Err bitreich.org 70 i- #x9D50 #x9D51 #x9D52 #x9D53 #x9D54 #x9D55 #x9D56 #x9D57 #x9D58 #x9D59 Err bitreich.org 70 i- #x9D5A #x9D5B #x9D5C #x9D5D #x9D5E #x9D5F #x9D60 #x9D61 #x9D62 #x9D63 Err bitreich.org 70 i- #x9D64 #x9D65 #x9D66 #x9D67 #x9D68 #x9D69 #x9D6A #x9D6B #x9D6C #x9D6D Err bitreich.org 70 i- #x9D6E #x9D6F #x9D70 #x9D71 #x9D72 #x9D73 #x9D74 #x9D75 #x9D76 #x9D77 Err bitreich.org 70 i- #x9D78 #x9D79 #x9D7A #x9D7B #x9D7C #x9D7D #x9D7E #x9D7F #x9D80 #x9D81 Err bitreich.org 70 i- #x9D82 #x9D83 #x9D84 #x9D85 #x9D86 #x9D87 #x9D88 #x9D89 #x9D8A #x9D8B Err bitreich.org 70 i- #x9D8C #x9D8D #x9D8E #x9D8F #x9D90 #x9D91 #x9D92 #x9D93 #x9D94 #x9D95 Err bitreich.org 70 i- #x9D96 #x9D97 #x9D98 #x9D99 #x9D9A #x9D9B #x9D9C #x9D9D #x9D9E #x9D9F Err bitreich.org 70 i- #x9DA0 #x9DA1 #x9DA2 #x9DA3 #x9DA4 #x9DA5 #x9DA6 #x9DA7 #x9DA8 #x9DA9 Err bitreich.org 70 i- #x9DAA #x9DAB #x9DAC #x9DAD #x9DAE #x9DAF #x9DB0 #x9DB1 #x9DB2 #x9DB3 Err bitreich.org 70 i- #x9DB4 #x9DB5 #x9DB6 #x9DB7 #x9DB8 #x9DB9 #x9DBA #x9DBB #x9DBC #x9DBD Err bitreich.org 70 i- #x9DBE #x9DBF #x9DC0 #x9DC1 #x9DC2 #x9DC3 #x9DC4 #x9DC5 #x9DC6 #x9DC7 Err bitreich.org 70 i- #x9DC8 #x9DC9 #x9DCA #x9DCB #x9DCC #x9DCD #x9DCE #x9DCF #x9DD0 #x9DD1 Err bitreich.org 70 i- #x9DD2 #x9DD3 #x9DD4 #x9DD5 #x9DD6 #x9DD7 #x9DD8 #x9DD9 #x9DDA #x9DDB Err bitreich.org 70 i- #x9DDC #x9DDD #x9DDE #x9DDF #x9DE0 #x9DE1 #x9DE2 #x9DE3 #x9DE4 #x9DE5 Err bitreich.org 70 i- #x9DE6 #x9DE7 #x9DE8 #x9DE9 #x9DEA #x9DEB #x9DEC #x9DED #x9DEE #x9DEF Err bitreich.org 70 i- #x9DF0 #x9DF1 #x9DF2 #x9DF3 #x9DF4 #x9DF5 #x9DF6 #x9DF7 #x9DF8 #x9DF9 Err bitreich.org 70 i- #x9DFA #x9DFB #x9DFC #x9DFD #x9DFE #x9DFF #x9E00 #x9E01 #x9E02 #x9E03 Err bitreich.org 70 i- #x9E04 #x9E05 #x9E06 #x9E07 #x9E08 #x9E09 #x9E0A #x9E0B #x9E0C #x9E0D Err bitreich.org 70 i- #x9E0E #x9E0F #x9E10 #x9E11 #x9E12 #x9E13 #x9E14 #x9E15 #x9E16 #x9E17 Err bitreich.org 70 i- #x9E18 #x9E19 #x9E1A #x9E1B #x9E1C #x9E1D #x9E1E #x9E24 #x9E27 #x9E2E Err bitreich.org 70 i- #x9E30 #x9E34 #x9E3B #x9E3C #x9E40 #x9E4D #x9E50 #x9E52 #x9E53 #x9E54 Err bitreich.org 70 i- #x9E56 #x9E59 #x9E5D #x9E5F #x9E60 #x9E61 #x9E62 #x9E65 #x9E6E #x9E6F Err bitreich.org 70 i- #x9E72 #x9E74 #x9E75 #x9E76 #x9E77 #x9E78 #x9E79 #x9E7A #x9E7B #x9E7C Err bitreich.org 70 i- #x9E7D #x9E80 #x9E81 #x9E83 #x9E84 #x9E85 #x9E86 #x9E89 #x9E8A #x9E8C Err bitreich.org 70 i- #x9E8D #x9E8E #x9E8F #x9E90 #x9E91 #x9E94 #x9E95 #x9E96 #x9E97 #x9E98 Err bitreich.org 70 i- #x9E99 #x9E9A #x9E9B #x9E9C #x9E9E #x9EA0 #x9EA1 #x9EA2 #x9EA3 #x9EA4 Err bitreich.org 70 i- #x9EA5 #x9EA7 #x9EA8 #x9EA9 #x9EAA #x9EAB #x9EAC #x9EAD #x9EAE #x9EAF Err bitreich.org 70 i- #x9EB0 #x9EB1 #x9EB2 #x9EB3 #x9EB5 #x9EB6 #x9EB7 #x9EB9 #x9EBA #x9EBC Err bitreich.org 70 i- #x9EBF #x9EC0 #x9EC1 #x9EC2 #x9EC3 #x9EC5 #x9EC6 #x9EC7 #x9EC8 #x9ECA Err bitreich.org 70 i- #x9ECB #x9ECC #x9ED0 #x9ED2 #x9ED3 #x9ED5 #x9ED6 #x9ED7 #x9ED9 #x9EDA Err bitreich.org 70 i- #x9EDE #x9EE1 #x9EE3 #x9EE4 #x9EE6 #x9EE8 #x9EEB #x9EEC #x9EED #x9EEE Err bitreich.org 70 i- #x9EF0 #x9EF1 #x9EF2 #x9EF3 #x9EF4 #x9EF5 #x9EF6 #x9EF7 #x9EF8 #x9EFA Err bitreich.org 70 i- #x9EFD #x9EFF #x9F00 #x9F01 #x9F02 #x9F03 #x9F04 #x9F05 #x9F06 #x9F07 Err bitreich.org 70 i- #x9F08 #x9F09 #x9F0A #x9F0C #x9F0F #x9F11 #x9F12 #x9F14 #x9F15 #x9F16 Err bitreich.org 70 i- #x9F18 #x9F1A #x9F1B #x9F1C #x9F1D #x9F1E #x9F1F #x9F21 #x9F23 #x9F24 Err bitreich.org 70 i- #x9F25 #x9F26 #x9F27 #x9F28 #x9F29 #x9F2A #x9F2B #x9F2D #x9F2E #x9F30 Err bitreich.org 70 i- #x9F31 #x9F32 #x9F33 #x9F34 #x9F35 #x9F36 #x9F38 #x9F3A #x9F3C #x9F3F Err bitreich.org 70 i- #x9F40 #x9F41 #x9F42 #x9F43 #x9F45 #x9F46 #x9F47 #x9F48 #x9F49 #x9F4A Err bitreich.org 70 i- #x9F4B #x9F4C #x9F4D #x9F4E #x9F4F #x9F52 #x9F53 #x9F54 #x9F55 #x9F56 Err bitreich.org 70 i- #x9F57 #x9F58 #x9F59 #x9F5A #x9F5B #x9F5C #x9F5D #x9F5E #x9F5F #x9F60 Err bitreich.org 70 i- #x9F61 #x9F62 #x9F63 #x9F64 #x9F65 #x9F66 #x9F67 #x9F68 #x9F69 #x9F6A Err bitreich.org 70 i- #x9F6B #x9F6C #x9F6D #x9F6E #x9F6F #x9F70 #x9F71 #x9F72 #x9F73 #x9F74 Err bitreich.org 70 i- #x9F75 #x9F76 #x9F77 #x9F78 #x9F79 #x9F7A #x9F7B #x9F7C #x9F7D #x9F7E Err bitreich.org 70 i- #x9F81 #x9F82 #x9F8D #x9F8E #x9F8F #x9F90 #x9F91 #x9F92 #x9F93 #x9F94 Err bitreich.org 70 i- #x9F95 #x9F96 #x9F97 #x9F98 #x9F9C #x9F9D #x9F9E #x9FA1 #x9FA2 #x9FA3 Err bitreich.org 70 i- #x9FA4 #x9FA5 #x3000 #x3001 #x3002 #x00B7 #x02C9 #x02C7 #x00A8 #x3003 Err bitreich.org 70 i- #x3005 #x2014 #xFF5E #x2016 #x2026 #x2018 #x2019 #x201C #x201D #x3014 Err bitreich.org 70 i- #x3015 #x3008 #x3009 #x300A #x300B #x300C #x300D #x300E #x300F #x3016 Err bitreich.org 70 i- #x3017 #x3010 #x3011 #x00B1 #x00D7 #x00F7 #x2236 #x2227 #x2228 #x2211 Err bitreich.org 70 i- #x220F #x222A #x2229 #x2208 #x2237 #x221A #x22A5 #x2225 #x2220 #x2312 Err bitreich.org 70 i- #x2299 #x222B #x222E #x2261 #x224C #x2248 #x223D #x221D #x2260 #x226E Err bitreich.org 70 i- #x226F #x2264 #x2265 #x221E #x2235 #x2234 #x2642 #x2640 #x00B0 #x2032 Err bitreich.org 70 i- #x2033 #x2103 #xFF04 #x00A4 #xFFE0 #xFFE1 #x2030 #x00A7 #x2116 #x2606 Err bitreich.org 70 i- #x2605 #x25CB #x25CF #x25CE #x25C7 #x25C6 #x25A1 #x25A0 #x25B3 #x25B2 Err bitreich.org 70 i- #x203B #x2192 #x2190 #x2191 #x2193 #x3013 #x2170 #x2171 #x2172 #x2173 Err bitreich.org 70 i- #x2174 #x2175 #x2176 #x2177 #x2178 #x2179 #xE766 #xE767 #xE768 #xE769 Err bitreich.org 70 i- #xE76A #xE76B #x2488 #x2489 #x248A #x248B #x248C #x248D #x248E #x248F Err bitreich.org 70 i- #x2490 #x2491 #x2492 #x2493 #x2494 #x2495 #x2496 #x2497 #x2498 #x2499 Err bitreich.org 70 i- #x249A #x249B #x2474 #x2475 #x2476 #x2477 #x2478 #x2479 #x247A #x247B Err bitreich.org 70 i- #x247C #x247D #x247E #x247F #x2480 #x2481 #x2482 #x2483 #x2484 #x2485 Err bitreich.org 70 i- #x2486 #x2487 #x2460 #x2461 #x2462 #x2463 #x2464 #x2465 #x2466 #x2467 Err bitreich.org 70 i- #x2468 #x2469 #xE76C #xE76D #x3220 #x3221 #x3222 #x3223 #x3224 #x3225 Err bitreich.org 70 i- #x3226 #x3227 #x3228 #x3229 #xE76E #xE76F #x2160 #x2161 #x2162 #x2163 Err bitreich.org 70 i- #x2164 #x2165 #x2166 #x2167 #x2168 #x2169 #x216A #x216B #xE770 #xE771 Err bitreich.org 70 i- #xFF01 #xFF02 #xFF03 #xFFE5 #xFF05 #xFF06 #xFF07 #xFF08 #xFF09 #xFF0A Err bitreich.org 70 i- #xFF0B #xFF0C #xFF0D #xFF0E #xFF0F #xFF10 #xFF11 #xFF12 #xFF13 #xFF14 Err bitreich.org 70 i- #xFF15 #xFF16 #xFF17 #xFF18 #xFF19 #xFF1A #xFF1B #xFF1C #xFF1D #xFF1E Err bitreich.org 70 i- #xFF1F #xFF20 #xFF21 #xFF22 #xFF23 #xFF24 #xFF25 #xFF26 #xFF27 #xFF28 Err bitreich.org 70 i- #xFF29 #xFF2A #xFF2B #xFF2C #xFF2D #xFF2E #xFF2F #xFF30 #xFF31 #xFF32 Err bitreich.org 70 i- #xFF33 #xFF34 #xFF35 #xFF36 #xFF37 #xFF38 #xFF39 #xFF3A #xFF3B #xFF3C Err bitreich.org 70 i- #xFF3D #xFF3E #xFF3F #xFF40 #xFF41 #xFF42 #xFF43 #xFF44 #xFF45 #xFF46 Err bitreich.org 70 i- #xFF47 #xFF48 #xFF49 #xFF4A #xFF4B #xFF4C #xFF4D #xFF4E #xFF4F #xFF50 Err bitreich.org 70 i- #xFF51 #xFF52 #xFF53 #xFF54 #xFF55 #xFF56 #xFF57 #xFF58 #xFF59 #xFF5A Err bitreich.org 70 i- #xFF5B #xFF5C #xFF5D #xFFE3 #x3041 #x3042 #x3043 #x3044 #x3045 #x3046 Err bitreich.org 70 i- #x3047 #x3048 #x3049 #x304A #x304B #x304C #x304D #x304E #x304F #x3050 Err bitreich.org 70 i- #x3051 #x3052 #x3053 #x3054 #x3055 #x3056 #x3057 #x3058 #x3059 #x305A Err bitreich.org 70 i- #x305B #x305C #x305D #x305E #x305F #x3060 #x3061 #x3062 #x3063 #x3064 Err bitreich.org 70 i- #x3065 #x3066 #x3067 #x3068 #x3069 #x306A #x306B #x306C #x306D #x306E Err bitreich.org 70 i- #x306F #x3070 #x3071 #x3072 #x3073 #x3074 #x3075 #x3076 #x3077 #x3078 Err bitreich.org 70 i- #x3079 #x307A #x307B #x307C #x307D #x307E #x307F #x3080 #x3081 #x3082 Err bitreich.org 70 i- #x3083 #x3084 #x3085 #x3086 #x3087 #x3088 #x3089 #x308A #x308B #x308C Err bitreich.org 70 i- #x308D #x308E #x308F #x3090 #x3091 #x3092 #x3093 #xE772 #xE773 #xE774 Err bitreich.org 70 i- #xE775 #xE776 #xE777 #xE778 #xE779 #xE77A #xE77B #xE77C #x30A1 #x30A2 Err bitreich.org 70 i- #x30A3 #x30A4 #x30A5 #x30A6 #x30A7 #x30A8 #x30A9 #x30AA #x30AB #x30AC Err bitreich.org 70 i- #x30AD #x30AE #x30AF #x30B0 #x30B1 #x30B2 #x30B3 #x30B4 #x30B5 #x30B6 Err bitreich.org 70 i- #x30B7 #x30B8 #x30B9 #x30BA #x30BB #x30BC #x30BD #x30BE #x30BF #x30C0 Err bitreich.org 70 i- #x30C1 #x30C2 #x30C3 #x30C4 #x30C5 #x30C6 #x30C7 #x30C8 #x30C9 #x30CA Err bitreich.org 70 i- #x30CB #x30CC #x30CD #x30CE #x30CF #x30D0 #x30D1 #x30D2 #x30D3 #x30D4 Err bitreich.org 70 i- #x30D5 #x30D6 #x30D7 #x30D8 #x30D9 #x30DA #x30DB #x30DC #x30DD #x30DE Err bitreich.org 70 i- #x30DF #x30E0 #x30E1 #x30E2 #x30E3 #x30E4 #x30E5 #x30E6 #x30E7 #x30E8 Err bitreich.org 70 i- #x30E9 #x30EA #x30EB #x30EC #x30ED #x30EE #x30EF #x30F0 #x30F1 #x30F2 Err bitreich.org 70 i- #x30F3 #x30F4 #x30F5 #x30F6 #xE77D #xE77E #xE77F #xE780 #xE781 #xE782 Err bitreich.org 70 i- #xE783 #xE784 #x0391 #x0392 #x0393 #x0394 #x0395 #x0396 #x0397 #x0398 Err bitreich.org 70 i- #x0399 #x039A #x039B #x039C #x039D #x039E #x039F #x03A0 #x03A1 #x03A3 Err bitreich.org 70 i- #x03A4 #x03A5 #x03A6 #x03A7 #x03A8 #x03A9 #xE785 #xE786 #xE787 #xE788 Err bitreich.org 70 i- #xE789 #xE78A #xE78B #xE78C #x03B1 #x03B2 #x03B3 #x03B4 #x03B5 #x03B6 Err bitreich.org 70 i- #x03B7 #x03B8 #x03B9 #x03BA #x03BB #x03BC #x03BD #x03BE #x03BF #x03C0 Err bitreich.org 70 i- #x03C1 #x03C3 #x03C4 #x03C5 #x03C6 #x03C7 #x03C8 #x03C9 #xE78D #xE78E Err bitreich.org 70 i- #xE78F #xE790 #xE791 #xE792 #xE793 #xFE35 #xFE36 #xFE39 #xFE3A #xFE3F Err bitreich.org 70 i- #xFE40 #xFE3D #xFE3E #xFE41 #xFE42 #xFE43 #xFE44 #xE794 #xE795 #xFE3B Err bitreich.org 70 i- #xFE3C #xFE37 #xFE38 #xFE31 #xE796 #xFE33 #xFE34 #xE797 #xE798 #xE799 Err bitreich.org 70 i- #xE79A #xE79B #xE79C #xE79D #xE79E #xE79F #x0410 #x0411 #x0412 #x0413 Err bitreich.org 70 i- #x0414 #x0415 #x0401 #x0416 #x0417 #x0418 #x0419 #x041A #x041B #x041C Err bitreich.org 70 i- #x041D #x041E #x041F #x0420 #x0421 #x0422 #x0423 #x0424 #x0425 #x0426 Err bitreich.org 70 i- #x0427 #x0428 #x0429 #x042A #x042B #x042C #x042D #x042E #x042F #xE7A0 Err bitreich.org 70 i- #xE7A1 #xE7A2 #xE7A3 #xE7A4 #xE7A5 #xE7A6 #xE7A7 #xE7A8 #xE7A9 #xE7AA Err bitreich.org 70 i- #xE7AB #xE7AC #xE7AD #xE7AE #x0430 #x0431 #x0432 #x0433 #x0434 #x0435 Err bitreich.org 70 i- #x0451 #x0436 #x0437 #x0438 #x0439 #x043A #x043B #x043C #x043D #x043E Err bitreich.org 70 i- #x043F #x0440 #x0441 #x0442 #x0443 #x0444 #x0445 #x0446 #x0447 #x0448 Err bitreich.org 70 i- #x0449 #x044A #x044B #x044C #x044D #x044E #x044F #xE7AF #xE7B0 #xE7B1 Err bitreich.org 70 i- #xE7B2 #xE7B3 #xE7B4 #xE7B5 #xE7B6 #xE7B7 #xE7B8 #xE7B9 #xE7BA #xE7BB Err bitreich.org 70 i- #x0101 #x00E1 #x01CE #x00E0 #x0113 #x00E9 #x011B #x00E8 #x012B #x00ED Err bitreich.org 70 i- #x01D0 #x00EC #x014D #x00F3 #x01D2 #x00F2 #x016B #x00FA #x01D4 #x00F9 Err bitreich.org 70 i- #x01D6 #x01D8 #x01DA #x01DC #x00FC #x00EA #x0251 #xE7C7 #x0144 #x0148 Err bitreich.org 70 i- #xE7C8 #x0261 #xE7C9 #xE7CA #xE7CB #xE7CC #x3105 #x3106 #x3107 #x3108 Err bitreich.org 70 i- #x3109 #x310A #x310B #x310C #x310D #x310E #x310F #x3110 #x3111 #x3112 Err bitreich.org 70 i- #x3113 #x3114 #x3115 #x3116 #x3117 #x3118 #x3119 #x311A #x311B #x311C Err bitreich.org 70 i- #x311D #x311E #x311F #x3120 #x3121 #x3122 #x3123 #x3124 #x3125 #x3126 Err bitreich.org 70 i- #x3127 #x3128 #x3129 #xE7CD #xE7CE #xE7CF #xE7D0 #xE7D1 #xE7D2 #xE7D3 Err bitreich.org 70 i- #xE7D4 #xE7D5 #xE7D6 #xE7D7 #xE7D8 #xE7D9 #xE7DA #xE7DB #xE7DC #xE7DD Err bitreich.org 70 i- #xE7DE #xE7DF #xE7E0 #xE7E1 #xE7FE #xE7FF #xE800 #x2500 #x2501 #x2502 Err bitreich.org 70 i- #x2503 #x2504 #x2505 #x2506 #x2507 #x2508 #x2509 #x250A #x250B #x250C Err bitreich.org 70 i- #x250D #x250E #x250F #x2510 #x2511 #x2512 #x2513 #x2514 #x2515 #x2516 Err bitreich.org 70 i- #x2517 #x2518 #x2519 #x251A #x251B #x251C #x251D #x251E #x251F #x2520 Err bitreich.org 70 i- #x2521 #x2522 #x2523 #x2524 #x2525 #x2526 #x2527 #x2528 #x2529 #x252A Err bitreich.org 70 i- #x252B #x252C #x252D #x252E #x252F #x2530 #x2531 #x2532 #x2533 #x2534 Err bitreich.org 70 i- #x2535 #x2536 #x2537 #x2538 #x2539 #x253A #x253B #x253C #x253D #x253E Err bitreich.org 70 i- #x253F #x2540 #x2541 #x2542 #x2543 #x2544 #x2545 #x2546 #x2547 #x2548 Err bitreich.org 70 i- #x2549 #x254A #x254B #xE801 #xE802 #xE803 #xE804 #xE805 #xE806 #xE807 Err bitreich.org 70 i- #xE808 #xE809 #xE80A #xE80B #xE80C #xE80D #xE80E #xE80F #x02CA #x02CB Err bitreich.org 70 i- #x02D9 #x2013 #x2015 #x2025 #x2035 #x2105 #x2109 #x2196 #x2197 #x2198 Err bitreich.org 70 i- #x2199 #x2215 #x221F #x2223 #x2252 #x2266 #x2267 #x22BF #x2550 #x2551 Err bitreich.org 70 i- #x2552 #x2553 #x2554 #x2555 #x2556 #x2557 #x2558 #x2559 #x255A #x255B Err bitreich.org 70 i- #x255C #x255D #x255E #x255F #x2560 #x2561 #x2562 #x2563 #x2564 #x2565 Err bitreich.org 70 i- #x2566 #x2567 #x2568 #x2569 #x256A #x256B #x256C #x256D #x256E #x256F Err bitreich.org 70 i- #x2570 #x2571 #x2572 #x2573 #x2581 #x2582 #x2583 #x2584 #x2585 #x2586 Err bitreich.org 70 i- #x2587 #x2588 #x2589 #x258A #x258B #x258C #x258D #x258E #x258F #x2593 Err bitreich.org 70 i- #x2594 #x2595 #x25BC #x25BD #x25E2 #x25E3 #x25E4 #x25E5 #x2609 #x2295 Err bitreich.org 70 i- #x3012 #x301D #x301E #xE7BC #xE7BD #xE7BE #xE7BF #xE7C0 #xE7C1 #xE7C2 Err bitreich.org 70 i- #xE7C3 #xE7C4 #xE7C5 #xE7C6 #x3021 #x3022 #x3023 #x3024 #x3025 #x3026 Err bitreich.org 70 i- #x3027 #x3028 #x3029 #x32A3 #x338E #x338F #x339C #x339D #x339E #x33A1 Err bitreich.org 70 i- #x33C4 #x33CE #x33D1 #x33D2 #x33D5 #xFE30 #xFFE2 #xFFE4 #xE7E2 #x2121 Err bitreich.org 70 i- #x3231 #xE7E3 #x2010 #xE7E4 #xE7E5 #xE7E6 #x30FC #x309B #x309C #x30FD Err bitreich.org 70 i- #x30FE #x3006 #x309D #x309E #xFE49 #xFE4A #xFE4B #xFE4C #xFE4D #xFE4E Err bitreich.org 70 i- #xFE4F #xFE50 #xFE51 #xFE52 #xFE54 #xFE55 #xFE56 #xFE57 #xFE59 #xFE5A Err bitreich.org 70 i- #xFE5B #xFE5C #xFE5D #xFE5E #xFE5F #xFE60 #xFE61 #xFE62 #xFE63 #xFE64 Err bitreich.org 70 i- #xFE65 #xFE66 #xFE68 #xFE69 #xFE6A #xFE6B #xE7E7 #xE7E8 #xE7E9 #xE7EA Err bitreich.org 70 i- #xE7EB #xE7EC #xE7ED #xE7EE #xE7EF #xE7F0 #xE7F1 #xE7F2 #xE7F3 #x3007 Err bitreich.org 70 i- #xE7F4 #xE7F5 #xE7F6 #xE7F7 #xE7F8 #xE7F9 #xE7FA #xE7FB #xE7FC #xE7FD Err bitreich.org 70 i- #x0020))) Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/src/jpn-table.lisp b/3rdparties/software/babel-20171227-git/src/jpn-table.lisp /scm/clic/file/3rdparties/software/babel-20171227-git/src/jpn-table.lisp.gph bitreich.org 70 i@@ -1,17637 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; jpn-table.lisp --- Unicode tables for Japanese encodings. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:babel-encodings) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *cp932-only* Err bitreich.org 70 i- '((#xFC4B #x9ED1) Err bitreich.org 70 i- (#xFC4A #x9E19) Err bitreich.org 70 i- (#xFC49 #xFA2D) Err bitreich.org 70 i- (#xFC48 #x9D6B) Err bitreich.org 70 i- (#xFC47 #x9D70) Err bitreich.org 70 i- (#xFC46 #x9C00) Err bitreich.org 70 i- (#xFC45 #x9BBB) Err bitreich.org 70 i- (#xFC44 #x9BB1) Err bitreich.org 70 i- (#xFC43 #x9B8F) Err bitreich.org 70 i- (#xFC42 #x9B72) Err bitreich.org 70 i- (#xFC41 #x9B75) Err bitreich.org 70 i- (#xFC40 #x9ADC) Err bitreich.org 70 i- (#xFBFC #x9AD9) Err bitreich.org 70 i- (#xFBFB #x9A4E) Err bitreich.org 70 i- (#xFBFA #x999E) Err bitreich.org 70 i- (#xFBF9 #xFA2C) Err bitreich.org 70 i- (#xFBF8 #x9927) Err bitreich.org 70 i- (#xFBF7 #xFA2B) Err bitreich.org 70 i- (#xFBF6 #xFA2A) Err bitreich.org 70 i- (#xFBF5 #x9865) Err bitreich.org 70 i- (#xFBF4 #x9857) Err bitreich.org 70 i- (#xFBF3 #x9755) Err bitreich.org 70 i- (#xFBF2 #x9751) Err bitreich.org 70 i- (#xFBF1 #x974F) Err bitreich.org 70 i- (#xFBF0 #x974D) Err bitreich.org 70 i- (#xFBEF #x9743) Err bitreich.org 70 i- (#xFBEE #x973B) Err bitreich.org 70 i- (#xFBED #x9733) Err bitreich.org 70 i- (#xFBEC #x96AF) Err bitreich.org 70 i- (#xFBEB #x969D) Err bitreich.org 70 i- (#xFBEA #xFA29) Err bitreich.org 70 i- (#xFBE9 #xF9DC) Err bitreich.org 70 i- (#xFBE8 #x9592) Err bitreich.org 70 i- (#xFBE7 #x9448) Err bitreich.org 70 i- (#xFBE6 #x9445) Err bitreich.org 70 i- (#xFBE5 #x9431) Err bitreich.org 70 i- (#xFBE4 #x93F8) Err bitreich.org 70 i- (#xFBE3 #x93DE) Err bitreich.org 70 i- (#xFBE2 #x93C6) Err bitreich.org 70 i- (#xFBE1 #x93A4) Err bitreich.org 70 i- (#xFBE0 #x9357) Err bitreich.org 70 i- (#xFBDF #x9370) Err bitreich.org 70 i- (#xFBDE #x9302) Err bitreich.org 70 i- (#xFBDD #x931D) Err bitreich.org 70 i- (#xFBDC #x92FF) Err bitreich.org 70 i- (#xFBDB #x931E) Err bitreich.org 70 i- (#xFBDA #xFA28) Err bitreich.org 70 i- (#xFBD9 #x92FB) Err bitreich.org 70 i- (#xFBD8 #x9321) Err bitreich.org 70 i- (#xFBD7 #x9325) Err bitreich.org 70 i- (#xFBD6 #x92D3) Err bitreich.org 70 i- (#xFBD5 #x92E0) Err bitreich.org 70 i- (#xFBD4 #x92D5) Err bitreich.org 70 i- (#xFBD3 #xFA27) Err bitreich.org 70 i- (#xFBD2 #x92D0) Err bitreich.org 70 i- (#xFBD1 #x92D9) Err bitreich.org 70 i- (#xFBD0 #x92D7) Err bitreich.org 70 i- (#xFBCF #x92E7) Err bitreich.org 70 i- (#xFBCE #x9278) Err bitreich.org 70 i- (#xFBCD #x9277) Err bitreich.org 70 i- (#xFBCC #x92A7) Err bitreich.org 70 i- (#xFBCB #x9267) Err bitreich.org 70 i- (#xFBCA #x9239) Err bitreich.org 70 i- (#xFBC9 #x9251) Err bitreich.org 70 i- (#xFBC8 #x9259) Err bitreich.org 70 i- (#xFBC7 #x924E) Err bitreich.org 70 i- (#xFBC6 #x923C) Err bitreich.org 70 i- (#xFBC5 #x9240) Err bitreich.org 70 i- (#xFBC4 #x923A) Err bitreich.org 70 i- (#xFBC3 #x920A) Err bitreich.org 70 i- (#xFBC2 #x9210) Err bitreich.org 70 i- (#xFBC1 #x9206) Err bitreich.org 70 i- (#xFBC0 #x91E5) Err bitreich.org 70 i- (#xFBBF #x91E4) Err bitreich.org 70 i- (#xFBBE #x91EE) Err bitreich.org 70 i- (#xFBBD #x91ED) Err bitreich.org 70 i- (#xFBBC #x91DE) Err bitreich.org 70 i- (#xFBBB #x91D7) Err bitreich.org 70 i- (#xFBBA #x91DA) Err bitreich.org 70 i- (#xFBB9 #x9127) Err bitreich.org 70 i- (#xFBB8 #x9115) Err bitreich.org 70 i- (#xFBB7 #xFA26) Err bitreich.org 70 i- (#xFBB6 #x90DE) Err bitreich.org 70 i- (#xFBB5 #x9067) Err bitreich.org 70 i- (#xFBB4 #xFA25) Err bitreich.org 70 i- (#xFBB3 #xFA24) Err bitreich.org 70 i- (#xFBB2 #x8ECF) Err bitreich.org 70 i- (#xFBB1 #xFA23) Err bitreich.org 70 i- (#xFBB0 #x8D76) Err bitreich.org 70 i- (#xFBAF #x8D12) Err bitreich.org 70 i- (#xFBAE #x8CF4) Err bitreich.org 70 i- (#xFBAD #x8CF0) Err bitreich.org 70 i- (#xFBAC #x8B7F) Err bitreich.org 70 i- (#xFBAB #x8B53) Err bitreich.org 70 i- (#xFBAA #x8AF6) Err bitreich.org 70 i- (#xFBA9 #xFA22) Err bitreich.org 70 i- (#xFBA8 #x8ADF) Err bitreich.org 70 i- (#xFBA7 #x8ABE) Err bitreich.org 70 i- (#xFBA6 #x8AA7) Err bitreich.org 70 i- (#xFBA5 #x8A79) Err bitreich.org 70 i- (#xFBA4 #x8A37) Err bitreich.org 70 i- (#xFBA3 #x8A12) Err bitreich.org 70 i- (#xFBA2 #x88F5) Err bitreich.org 70 i- (#xFBA1 #x8807) Err bitreich.org 70 i- (#xFBA0 #xFA21) Err bitreich.org 70 i- (#xFB9F #xFA20) Err bitreich.org 70 i- (#xFB9E #x85B0) Err bitreich.org 70 i- (#xFB9D #xFA1F) Err bitreich.org 70 i- (#xFB9C #x856B) Err bitreich.org 70 i- (#xFB9B #x8559) Err bitreich.org 70 i- (#xFB9A #x8553) Err bitreich.org 70 i- (#xFB99 #x84B4) Err bitreich.org 70 i- (#xFB98 #x8448) Err bitreich.org 70 i- (#xFB97 #x83F6) Err bitreich.org 70 i- (#xFB96 #x83C7) Err bitreich.org 70 i- (#xFB95 #x837F) Err bitreich.org 70 i- (#xFB94 #x8362) Err bitreich.org 70 i- (#xFB93 #x8301) Err bitreich.org 70 i- (#xFB92 #xFA1E) Err bitreich.org 70 i- (#xFB91 #x7FA1) Err bitreich.org 70 i- (#xFB90 #x7F47) Err bitreich.org 70 i- (#xFB8F #x7E52) Err bitreich.org 70 i- (#xFB8E #x7DD6) Err bitreich.org 70 i- (#xFB8D #x7DA0) Err bitreich.org 70 i- (#xFB8C #x7DB7) Err bitreich.org 70 i- (#xFB8B #x7D5C) Err bitreich.org 70 i- (#xFB8A #x7D48) Err bitreich.org 70 i- (#xFB89 #xFA1D) Err bitreich.org 70 i- (#xFB88 #x7B9E) Err bitreich.org 70 i- (#xFB87 #x7AEB) Err bitreich.org 70 i- (#xFB86 #xFA1C) Err bitreich.org 70 i- (#xFB85 #x7AE7) Err bitreich.org 70 i- (#xFB84 #x7AD1) Err bitreich.org 70 i- (#xFB83 #x799B) Err bitreich.org 70 i- (#xFB82 #xFA1B) Err bitreich.org 70 i- (#xFB81 #x7994) Err bitreich.org 70 i- (#xFB80 #xFA1A) Err bitreich.org 70 i- (#xFB7E #xFA19) Err bitreich.org 70 i- (#xFB7D #xFA18) Err bitreich.org 70 i- (#xFB7C #x7930) Err bitreich.org 70 i- (#xFB7B #x787A) Err bitreich.org 70 i- (#xFB7A #x7864) Err bitreich.org 70 i- (#xFB79 #x784E) Err bitreich.org 70 i- (#xFB78 #x7821) Err bitreich.org 70 i- (#xFB77 #x52AF) Err bitreich.org 70 i- (#xFB76 #x7746) Err bitreich.org 70 i- (#xFB75 #xFA17) Err bitreich.org 70 i- (#xFB74 #x76A6) Err bitreich.org 70 i- (#xFB73 #x769B) Err bitreich.org 70 i- (#xFB72 #x769E) Err bitreich.org 70 i- (#xFB71 #x769C) Err bitreich.org 70 i- (#xFB70 #x7682) Err bitreich.org 70 i- (#xFB6F #x756F) Err bitreich.org 70 i- (#xFB6E #x7501) Err bitreich.org 70 i- (#xFB6D #x749F) Err bitreich.org 70 i- (#xFB6C #x7489) Err bitreich.org 70 i- (#xFB6B #x7462) Err bitreich.org 70 i- (#xFB6A #x742E) Err bitreich.org 70 i- (#xFB69 #x7429) Err bitreich.org 70 i- (#xFB68 #x742A) Err bitreich.org 70 i- (#xFB67 #x7426) Err bitreich.org 70 i- (#xFB66 #x73F5) Err bitreich.org 70 i- (#xFB65 #x7407) Err bitreich.org 70 i- (#xFB64 #x73D2) Err bitreich.org 70 i- (#xFB63 #x73E3) Err bitreich.org 70 i- (#xFB62 #x73D6) Err bitreich.org 70 i- (#xFB61 #x73C9) Err bitreich.org 70 i- (#xFB60 #x73BD) Err bitreich.org 70 i- (#xFB5F #x7377) Err bitreich.org 70 i- (#xFB5E #xFA16) Err bitreich.org 70 i- (#xFB5D #x7324) Err bitreich.org 70 i- (#xFB5C #x72BE) Err bitreich.org 70 i- (#xFB5B #x72B1) Err bitreich.org 70 i- (#xFB5A #x71FE) Err bitreich.org 70 i- (#xFB59 #x71C1) Err bitreich.org 70 i- (#xFB58 #xFA15) Err bitreich.org 70 i- (#xFB57 #x7147) Err bitreich.org 70 i- (#xFB56 #x7146) Err bitreich.org 70 i- (#xFB55 #x715C) Err bitreich.org 70 i- (#xFB54 #x7104) Err bitreich.org 70 i- (#xFB53 #x710F) Err bitreich.org 70 i- (#xFB52 #x70AB) Err bitreich.org 70 i- (#xFB51 #x7085) Err bitreich.org 70 i- (#xFB50 #x7028) Err bitreich.org 70 i- (#xFB4F #x7007) Err bitreich.org 70 i- (#xFB4E #x7005) Err bitreich.org 70 i- (#xFB4D #x6FF5) Err bitreich.org 70 i- (#xFB4C #x6FB5) Err bitreich.org 70 i- (#xFB4B #x6F88) Err bitreich.org 70 i- (#xFB4A #x6EBF) Err bitreich.org 70 i- (#xFB49 #x6E3C) Err bitreich.org 70 i- (#xFB48 #x6E27) Err bitreich.org 70 i- (#xFB47 #x6E5C) Err bitreich.org 70 i- (#xFB46 #x6E39) Err bitreich.org 70 i- (#xFB45 #x6DFC) Err bitreich.org 70 i- (#xFB44 #x6DF2) Err bitreich.org 70 i- (#xFB43 #x6DF8) Err bitreich.org 70 i- (#xFB42 #x6DCF) Err bitreich.org 70 i- (#xFB41 #x6DAC) Err bitreich.org 70 i- (#xFB40 #x6D96) Err bitreich.org 70 i- (#xFAFC #x6D6F) Err bitreich.org 70 i- (#xFAFB #x6D87) Err bitreich.org 70 i- (#xFAFA #x6D04) Err bitreich.org 70 i- (#xFAF9 #x6CDA) Err bitreich.org 70 i- (#xFAF8 #x6C6F) Err bitreich.org 70 i- (#xFAF7 #x6C86) Err bitreich.org 70 i- (#xFAF6 #x6C5C) Err bitreich.org 70 i- (#xFAF5 #x6C3F) Err bitreich.org 70 i- (#xFAF4 #x6BD6) Err bitreich.org 70 i- (#xFAF3 #x6AE4) Err bitreich.org 70 i- (#xFAF2 #x6AE2) Err bitreich.org 70 i- (#xFAF1 #x6A7E) Err bitreich.org 70 i- (#xFAF0 #x6A73) Err bitreich.org 70 i- (#xFAEF #x6A46) Err bitreich.org 70 i- (#xFAEE #x6A6B) Err bitreich.org 70 i- (#xFAED #x6A30) Err bitreich.org 70 i- (#xFAEC #x69E2) Err bitreich.org 70 i- (#xFAEB #x6998) Err bitreich.org 70 i- (#xFAEA #xFA14) Err bitreich.org 70 i- (#xFAE9 #x6968) Err bitreich.org 70 i- (#xFAE8 #xFA13) Err bitreich.org 70 i- (#xFAE7 #x68CF) Err bitreich.org 70 i- (#xFAE6 #x6844) Err bitreich.org 70 i- (#xFAE5 #x6801) Err bitreich.org 70 i- (#xFAE4 #x67C0) Err bitreich.org 70 i- (#xFAE3 #x6852) Err bitreich.org 70 i- (#xFAE2 #x67BB) Err bitreich.org 70 i- (#xFAE1 #x6766) Err bitreich.org 70 i- (#xFAE0 #xF929) Err bitreich.org 70 i- (#xFADF #x670E) Err bitreich.org 70 i- (#xFADE #x66FA) Err bitreich.org 70 i- (#xFADD #x66BF) Err bitreich.org 70 i- (#xFADC #x66B2) Err bitreich.org 70 i- (#xFADB #x66A0) Err bitreich.org 70 i- (#xFADA #x6699) Err bitreich.org 70 i- (#xFAD9 #x6673) Err bitreich.org 70 i- (#xFAD8 #xFA12) Err bitreich.org 70 i- (#xFAD7 #x6659) Err bitreich.org 70 i- (#xFAD6 #x6657) Err bitreich.org 70 i- (#xFAD5 #x6665) Err bitreich.org 70 i- (#xFAD4 #x6624) Err bitreich.org 70 i- (#xFAD3 #x661E) Err bitreich.org 70 i- (#xFAD2 #x662E) Err bitreich.org 70 i- (#xFAD1 #x6609) Err bitreich.org 70 i- (#xFAD0 #x663B) Err bitreich.org 70 i- (#xFACF #x6615) Err bitreich.org 70 i- (#xFACE #x6600) Err bitreich.org 70 i- (#xFACD #x654E) Err bitreich.org 70 i- (#xFACC #x64CE) Err bitreich.org 70 i- (#xFACB #x649D) Err bitreich.org 70 i- (#xFACA #x6460) Err bitreich.org 70 i- (#xFAC9 #x63F5) Err bitreich.org 70 i- (#xFAC8 #x62A6) Err bitreich.org 70 i- (#xFAC7 #x6213) Err bitreich.org 70 i- (#xFAC6 #x6198) Err bitreich.org 70 i- (#xFAC5 #x6130) Err bitreich.org 70 i- (#xFAC4 #x6137) Err bitreich.org 70 i- (#xFAC3 #x6111) Err bitreich.org 70 i- (#xFAC2 #x60F2) Err bitreich.org 70 i- (#xFAC1 #x6120) Err bitreich.org 70 i- (#xFAC0 #x60D5) Err bitreich.org 70 i- (#xFABF #x60DE) Err bitreich.org 70 i- (#xFABE #x608A) Err bitreich.org 70 i- (#xFABD #x6085) Err bitreich.org 70 i- (#xFABC #x605D) Err bitreich.org 70 i- (#xFABB #x5FDE) Err bitreich.org 70 i- (#xFABA #x5FB7) Err bitreich.org 70 i- (#xFAB9 #x5F67) Err bitreich.org 70 i- (#xFAB8 #x5F34) Err bitreich.org 70 i- (#xFAB7 #x5F21) Err bitreich.org 70 i- (#xFAB6 #x5DD0) Err bitreich.org 70 i- (#xFAB5 #x5DB9) Err bitreich.org 70 i- (#xFAB4 #x5DB8) Err bitreich.org 70 i- (#xFAB3 #x5D6D) Err bitreich.org 70 i- (#xFAB2 #x5D42) Err bitreich.org 70 i- (#xFAB1 #xFA11) Err bitreich.org 70 i- (#xFAB0 #x5D53) Err bitreich.org 70 i- (#xFAAF #x5D27) Err bitreich.org 70 i- (#xFAAE #x5CF5) Err bitreich.org 70 i- (#xFAAD #x5CBA) Err bitreich.org 70 i- (#xFAAC #x5CA6) Err bitreich.org 70 i- (#xFAAB #x5C1E) Err bitreich.org 70 i- (#xFAAA #x5BEC) Err bitreich.org 70 i- (#xFAA9 #x5BD8) Err bitreich.org 70 i- (#xFAA8 #x752F) Err bitreich.org 70 i- (#xFAA7 #x5BC0) Err bitreich.org 70 i- (#xFAA6 #x5B56) Err bitreich.org 70 i- (#xFAA5 #x59BA) Err bitreich.org 70 i- (#xFAA4 #x59A4) Err bitreich.org 70 i- (#xFAA3 #x5963) Err bitreich.org 70 i- (#xFAA2 #x595D) Err bitreich.org 70 i- (#xFAA1 #x595B) Err bitreich.org 70 i- (#xFAA0 #x5953) Err bitreich.org 70 i- (#xFA9F #x590B) Err bitreich.org 70 i- (#xFA9E #x58B2) Err bitreich.org 70 i- (#xFA9D #x589E) Err bitreich.org 70 i- (#xFA9C #xFA10) Err bitreich.org 70 i- (#xFA9B #xFA0F) Err bitreich.org 70 i- (#xFA9A #x57C7) Err bitreich.org 70 i- (#xFA99 #x57C8) Err bitreich.org 70 i- (#xFA98 #x57AC) Err bitreich.org 70 i- (#xFA97 #x5765) Err bitreich.org 70 i- (#xFA96 #x5759) Err bitreich.org 70 i- (#xFA95 #x5586) Err bitreich.org 70 i- (#xFA94 #x54FF) Err bitreich.org 70 i- (#xFA93 #x54A9) Err bitreich.org 70 i- (#xFA92 #x548A) Err bitreich.org 70 i- (#xFA91 #x549C) Err bitreich.org 70 i- (#xFA90 #xFA0E) Err bitreich.org 70 i- (#xFA8F #x53DD) Err bitreich.org 70 i- (#xFA8E #x53B2) Err bitreich.org 70 i- (#xFA8D #x5393) Err bitreich.org 70 i- (#xFA8C #x5372) Err bitreich.org 70 i- (#xFA8B #x5324) Err bitreich.org 70 i- (#xFA8A #x5307) Err bitreich.org 70 i- (#xFA89 #x5300) Err bitreich.org 70 i- (#xFA88 #x52DB) Err bitreich.org 70 i- (#xFA87 #x52C0) Err bitreich.org 70 i- (#xFA86 #x52A6) Err bitreich.org 70 i- (#xFA85 #x529C) Err bitreich.org 70 i- (#xFA84 #x5215) Err bitreich.org 70 i- (#xFA83 #x51EC) Err bitreich.org 70 i- (#xFA82 #x51BE) Err bitreich.org 70 i- (#xFA81 #x519D) Err bitreich.org 70 i- (#xFA80 #x5164) Err bitreich.org 70 i- (#xFA7E #x514A) Err bitreich.org 70 i- (#xFA7D #x50D8) Err bitreich.org 70 i- (#xFA7C #x50F4) Err bitreich.org 70 i- (#xFA7B #x5094) Err bitreich.org 70 i- (#xFA7A #x5042) Err bitreich.org 70 i- (#xFA79 #x5070) Err bitreich.org 70 i- (#xFA78 #x5046) Err bitreich.org 70 i- (#xFA77 #x501E) Err bitreich.org 70 i- (#xFA76 #x4FFF) Err bitreich.org 70 i- (#xFA75 #x5022) Err bitreich.org 70 i- (#xFA74 #x5040) Err bitreich.org 70 i- (#xFA73 #x4FCD) Err bitreich.org 70 i- (#xFA72 #x4F94) Err bitreich.org 70 i- (#xFA71 #x4F9A) Err bitreich.org 70 i- (#xFA70 #x4F8A) Err bitreich.org 70 i- (#xFA6F #x4F92) Err bitreich.org 70 i- (#xFA6E #x4F56) Err bitreich.org 70 i- (#xFA6D #x4F39) Err bitreich.org 70 i- (#xFA6C #x4F03) Err bitreich.org 70 i- (#xFA6B #x4F00) Err bitreich.org 70 i- (#xFA6A #x4EFC) Err bitreich.org 70 i- (#xFA69 #x4EE1) Err bitreich.org 70 i- (#xFA68 #x4E28) Err bitreich.org 70 i- (#xFA67 #x5F45) Err bitreich.org 70 i- (#xFA66 #x66FB) Err bitreich.org 70 i- (#xFA65 #x92F9) Err bitreich.org 70 i- (#xFA64 #x68C8) Err bitreich.org 70 i- (#xFA63 #x6631) Err bitreich.org 70 i- (#xFA62 #x70BB) Err bitreich.org 70 i- (#xFA61 #x4FC9) Err bitreich.org 70 i- (#xFA60 #x84DC) Err bitreich.org 70 i- (#xFA5F #x9288) Err bitreich.org 70 i- (#xFA5E #x9348) Err bitreich.org 70 i- (#xFA5D #x891C) Err bitreich.org 70 i- (#xFA5C #x7E8A) Err bitreich.org 70 i- (#xFA5B #x2235) Err bitreich.org 70 i- (#xFA5A #x2121) Err bitreich.org 70 i- (#xFA59 #x2116) Err bitreich.org 70 i- (#xFA58 #x3231) Err bitreich.org 70 i- (#xFA57 #xFF02) Err bitreich.org 70 i- (#xFA56 #xFF07) Err bitreich.org 70 i- (#xFA55 #xFFE4) Err bitreich.org 70 i- (#xFA54 #xFFE2) Err bitreich.org 70 i- (#xFA53 #x2169) Err bitreich.org 70 i- (#xFA52 #x2168) Err bitreich.org 70 i- (#xFA51 #x2167) Err bitreich.org 70 i- (#xFA50 #x2166) Err bitreich.org 70 i- (#xFA4F #x2165) Err bitreich.org 70 i- (#xFA4E #x2164) Err bitreich.org 70 i- (#xFA4D #x2163) Err bitreich.org 70 i- (#xFA4C #x2162) Err bitreich.org 70 i- (#xFA4B #x2161) Err bitreich.org 70 i- (#xFA4A #x2160) Err bitreich.org 70 i- (#xFA49 #x2179) Err bitreich.org 70 i- (#xFA48 #x2178) Err bitreich.org 70 i- (#xFA47 #x2177) Err bitreich.org 70 i- (#xFA46 #x2176) Err bitreich.org 70 i- (#xFA45 #x2175) Err bitreich.org 70 i- (#xFA44 #x2174) Err bitreich.org 70 i- (#xFA43 #x2173) Err bitreich.org 70 i- (#xFA42 #x2172) Err bitreich.org 70 i- (#xFA41 #x2171) Err bitreich.org 70 i- (#xFA40 #x2170) Err bitreich.org 70 i- (#xF9FC #xE757) Err bitreich.org 70 i- (#xF9FB #xE756) Err bitreich.org 70 i- (#xF9FA #xE755) Err bitreich.org 70 i- (#xF9F9 #xE754) Err bitreich.org 70 i- (#xF9F8 #xE753) Err bitreich.org 70 i- (#xF9F7 #xE752) Err bitreich.org 70 i- (#xF9F6 #xE751) Err bitreich.org 70 i- (#xF9F5 #xE750) Err bitreich.org 70 i- (#xF9F4 #xE74F) Err bitreich.org 70 i- (#xF9F3 #xE74E) Err bitreich.org 70 i- (#xF9F2 #xE74D) Err bitreich.org 70 i- (#xF9F1 #xE74C) Err bitreich.org 70 i- (#xF9F0 #xE74B) Err bitreich.org 70 i- (#xF9EF #xE74A) Err bitreich.org 70 i- (#xF9EE #xE749) Err bitreich.org 70 i- (#xF9ED #xE748) Err bitreich.org 70 i- (#xF9EC #xE747) Err bitreich.org 70 i- (#xF9EB #xE746) Err bitreich.org 70 i- (#xF9EA #xE745) Err bitreich.org 70 i- (#xF9E9 #xE744) Err bitreich.org 70 i- (#xF9E8 #xE743) Err bitreich.org 70 i- (#xF9E7 #xE742) Err bitreich.org 70 i- (#xF9E6 #xE741) Err bitreich.org 70 i- (#xF9E5 #xE740) Err bitreich.org 70 i- (#xF9E4 #xE73F) Err bitreich.org 70 i- (#xF9E3 #xE73E) Err bitreich.org 70 i- (#xF9E2 #xE73D) Err bitreich.org 70 i- (#xF9E1 #xE73C) Err bitreich.org 70 i- (#xF9E0 #xE73B) Err bitreich.org 70 i- (#xF9DF #xE73A) Err bitreich.org 70 i- (#xF9DE #xE739) Err bitreich.org 70 i- (#xF9DD #xE738) Err bitreich.org 70 i- (#xF9DC #xE737) Err bitreich.org 70 i- (#xF9DB #xE736) Err bitreich.org 70 i- (#xF9DA #xE735) Err bitreich.org 70 i- (#xF9D9 #xE734) Err bitreich.org 70 i- (#xF9D8 #xE733) Err bitreich.org 70 i- (#xF9D7 #xE732) Err bitreich.org 70 i- (#xF9D6 #xE731) Err bitreich.org 70 i- (#xF9D5 #xE730) Err bitreich.org 70 i- (#xF9D4 #xE72F) Err bitreich.org 70 i- (#xF9D3 #xE72E) Err bitreich.org 70 i- (#xF9D2 #xE72D) Err bitreich.org 70 i- (#xF9D1 #xE72C) Err bitreich.org 70 i- (#xF9D0 #xE72B) Err bitreich.org 70 i- (#xF9CF #xE72A) Err bitreich.org 70 i- (#xF9CE #xE729) Err bitreich.org 70 i- (#xF9CD #xE728) Err bitreich.org 70 i- (#xF9CC #xE727) Err bitreich.org 70 i- (#xF9CB #xE726) Err bitreich.org 70 i- (#xF9CA #xE725) Err bitreich.org 70 i- (#xF9C9 #xE724) Err bitreich.org 70 i- (#xF9C8 #xE723) Err bitreich.org 70 i- (#xF9C7 #xE722) Err bitreich.org 70 i- (#xF9C6 #xE721) Err bitreich.org 70 i- (#xF9C5 #xE720) Err bitreich.org 70 i- (#xF9C4 #xE71F) Err bitreich.org 70 i- (#xF9C3 #xE71E) Err bitreich.org 70 i- (#xF9C2 #xE71D) Err bitreich.org 70 i- (#xF9C1 #xE71C) Err bitreich.org 70 i- (#xF9C0 #xE71B) Err bitreich.org 70 i- (#xF9BF #xE71A) Err bitreich.org 70 i- (#xF9BE #xE719) Err bitreich.org 70 i- (#xF9BD #xE718) Err bitreich.org 70 i- (#xF9BC #xE717) Err bitreich.org 70 i- (#xF9BB #xE716) Err bitreich.org 70 i- (#xF9BA #xE715) Err bitreich.org 70 i- (#xF9B9 #xE714) Err bitreich.org 70 i- (#xF9B8 #xE713) Err bitreich.org 70 i- (#xF9B7 #xE712) Err bitreich.org 70 i- (#xF9B6 #xE711) Err bitreich.org 70 i- (#xF9B5 #xE710) Err bitreich.org 70 i- (#xF9B4 #xE70F) Err bitreich.org 70 i- (#xF9B3 #xE70E) Err bitreich.org 70 i- (#xF9B2 #xE70D) Err bitreich.org 70 i- (#xF9B1 #xE70C) Err bitreich.org 70 i- (#xF9B0 #xE70B) Err bitreich.org 70 i- (#xF9AF #xE70A) Err bitreich.org 70 i- (#xF9AE #xE709) Err bitreich.org 70 i- (#xF9AD #xE708) Err bitreich.org 70 i- (#xF9AC #xE707) Err bitreich.org 70 i- (#xF9AB #xE706) Err bitreich.org 70 i- (#xF9AA #xE705) Err bitreich.org 70 i- (#xF9A9 #xE704) Err bitreich.org 70 i- (#xF9A8 #xE703) Err bitreich.org 70 i- (#xF9A7 #xE702) Err bitreich.org 70 i- (#xF9A6 #xE701) Err bitreich.org 70 i- (#xF9A5 #xE700) Err bitreich.org 70 i- (#xF9A4 #xE6FF) Err bitreich.org 70 i- (#xF9A3 #xE6FE) Err bitreich.org 70 i- (#xF9A2 #xE6FD) Err bitreich.org 70 i- (#xF9A1 #xE6FC) Err bitreich.org 70 i- (#xF9A0 #xE6FB) Err bitreich.org 70 i- (#xF99F #xE6FA) Err bitreich.org 70 i- (#xF99E #xE6F9) Err bitreich.org 70 i- (#xF99D #xE6F8) Err bitreich.org 70 i- (#xF99C #xE6F7) Err bitreich.org 70 i- (#xF99B #xE6F6) Err bitreich.org 70 i- (#xF99A #xE6F5) Err bitreich.org 70 i- (#xF999 #xE6F4) Err bitreich.org 70 i- (#xF998 #xE6F3) Err bitreich.org 70 i- (#xF997 #xE6F2) Err bitreich.org 70 i- (#xF996 #xE6F1) Err bitreich.org 70 i- (#xF995 #xE6F0) Err bitreich.org 70 i- (#xF994 #xE6EF) Err bitreich.org 70 i- (#xF993 #xE6EE) Err bitreich.org 70 i- (#xF992 #xE6ED) Err bitreich.org 70 i- (#xF991 #xE6EC) Err bitreich.org 70 i- (#xF990 #xE6EB) Err bitreich.org 70 i- (#xF98F #xE6EA) Err bitreich.org 70 i- (#xF98E #xE6E9) Err bitreich.org 70 i- (#xF98D #xE6E8) Err bitreich.org 70 i- (#xF98C #xE6E7) Err bitreich.org 70 i- (#xF98B #xE6E6) Err bitreich.org 70 i- (#xF98A #xE6E5) Err bitreich.org 70 i- (#xF989 #xE6E4) Err bitreich.org 70 i- (#xF988 #xE6E3) Err bitreich.org 70 i- (#xF987 #xE6E2) Err bitreich.org 70 i- (#xF986 #xE6E1) Err bitreich.org 70 i- (#xF985 #xE6E0) Err bitreich.org 70 i- (#xF984 #xE6DF) Err bitreich.org 70 i- (#xF983 #xE6DE) Err bitreich.org 70 i- (#xF982 #xE6DD) Err bitreich.org 70 i- (#xF981 #xE6DC) Err bitreich.org 70 i- (#xF980 #xE6DB) Err bitreich.org 70 i- (#xF97E #xE6DA) Err bitreich.org 70 i- (#xF97D #xE6D9) Err bitreich.org 70 i- (#xF97C #xE6D8) Err bitreich.org 70 i- (#xF97B #xE6D7) Err bitreich.org 70 i- (#xF97A #xE6D6) Err bitreich.org 70 i- (#xF979 #xE6D5) Err bitreich.org 70 i- (#xF978 #xE6D4) Err bitreich.org 70 i- (#xF977 #xE6D3) Err bitreich.org 70 i- (#xF976 #xE6D2) Err bitreich.org 70 i- (#xF975 #xE6D1) Err bitreich.org 70 i- (#xF974 #xE6D0) Err bitreich.org 70 i- (#xF973 #xE6CF) Err bitreich.org 70 i- (#xF972 #xE6CE) Err bitreich.org 70 i- (#xF971 #xE6CD) Err bitreich.org 70 i- (#xF970 #xE6CC) Err bitreich.org 70 i- (#xF96F #xE6CB) Err bitreich.org 70 i- (#xF96E #xE6CA) Err bitreich.org 70 i- (#xF96D #xE6C9) Err bitreich.org 70 i- (#xF96C #xE6C8) Err bitreich.org 70 i- (#xF96B #xE6C7) Err bitreich.org 70 i- (#xF96A #xE6C6) Err bitreich.org 70 i- (#xF969 #xE6C5) Err bitreich.org 70 i- (#xF968 #xE6C4) Err bitreich.org 70 i- (#xF967 #xE6C3) Err bitreich.org 70 i- (#xF966 #xE6C2) Err bitreich.org 70 i- (#xF965 #xE6C1) Err bitreich.org 70 i- (#xF964 #xE6C0) Err bitreich.org 70 i- (#xF963 #xE6BF) Err bitreich.org 70 i- (#xF962 #xE6BE) Err bitreich.org 70 i- (#xF961 #xE6BD) Err bitreich.org 70 i- (#xF960 #xE6BC) Err bitreich.org 70 i- (#xF95F #xE6BB) Err bitreich.org 70 i- (#xF95E #xE6BA) Err bitreich.org 70 i- (#xF95D #xE6B9) Err bitreich.org 70 i- (#xF95C #xE6B8) Err bitreich.org 70 i- (#xF95B #xE6B7) Err bitreich.org 70 i- (#xF95A #xE6B6) Err bitreich.org 70 i- (#xF959 #xE6B5) Err bitreich.org 70 i- (#xF958 #xE6B4) Err bitreich.org 70 i- (#xF957 #xE6B3) Err bitreich.org 70 i- (#xF956 #xE6B2) Err bitreich.org 70 i- (#xF955 #xE6B1) Err bitreich.org 70 i- (#xF954 #xE6B0) Err bitreich.org 70 i- (#xF953 #xE6AF) Err bitreich.org 70 i- (#xF952 #xE6AE) Err bitreich.org 70 i- (#xF951 #xE6AD) Err bitreich.org 70 i- (#xF950 #xE6AC) Err bitreich.org 70 i- (#xF94F #xE6AB) Err bitreich.org 70 i- (#xF94E #xE6AA) Err bitreich.org 70 i- (#xF94D #xE6A9) Err bitreich.org 70 i- (#xF94C #xE6A8) Err bitreich.org 70 i- (#xF94B #xE6A7) Err bitreich.org 70 i- (#xF94A #xE6A6) Err bitreich.org 70 i- (#xF949 #xE6A5) Err bitreich.org 70 i- (#xF948 #xE6A4) Err bitreich.org 70 i- (#xF947 #xE6A3) Err bitreich.org 70 i- (#xF946 #xE6A2) Err bitreich.org 70 i- (#xF945 #xE6A1) Err bitreich.org 70 i- (#xF944 #xE6A0) Err bitreich.org 70 i- (#xF943 #xE69F) Err bitreich.org 70 i- (#xF942 #xE69E) Err bitreich.org 70 i- (#xF941 #xE69D) Err bitreich.org 70 i- (#xF940 #xE69C) Err bitreich.org 70 i- (#xF8FC #xE69B) Err bitreich.org 70 i- (#xF8FB #xE69A) Err bitreich.org 70 i- (#xF8FA #xE699) Err bitreich.org 70 i- (#xF8F9 #xE698) Err bitreich.org 70 i- (#xF8F8 #xE697) Err bitreich.org 70 i- (#xF8F7 #xE696) Err bitreich.org 70 i- (#xF8F6 #xE695) Err bitreich.org 70 i- (#xF8F5 #xE694) Err bitreich.org 70 i- (#xF8F4 #xE693) Err bitreich.org 70 i- (#xF8F3 #xE692) Err bitreich.org 70 i- (#xF8F2 #xE691) Err bitreich.org 70 i- (#xF8F1 #xE690) Err bitreich.org 70 i- (#xF8F0 #xE68F) Err bitreich.org 70 i- (#xF8EF #xE68E) Err bitreich.org 70 i- (#xF8EE #xE68D) Err bitreich.org 70 i- (#xF8ED #xE68C) Err bitreich.org 70 i- (#xF8EC #xE68B) Err bitreich.org 70 i- (#xF8EB #xE68A) Err bitreich.org 70 i- (#xF8EA #xE689) Err bitreich.org 70 i- (#xF8E9 #xE688) Err bitreich.org 70 i- (#xF8E8 #xE687) Err bitreich.org 70 i- (#xF8E7 #xE686) Err bitreich.org 70 i- (#xF8E6 #xE685) Err bitreich.org 70 i- (#xF8E5 #xE684) Err bitreich.org 70 i- (#xF8E4 #xE683) Err bitreich.org 70 i- (#xF8E3 #xE682) Err bitreich.org 70 i- (#xF8E2 #xE681) Err bitreich.org 70 i- (#xF8E1 #xE680) Err bitreich.org 70 i- (#xF8E0 #xE67F) Err bitreich.org 70 i- (#xF8DF #xE67E) Err bitreich.org 70 i- (#xF8DE #xE67D) Err bitreich.org 70 i- (#xF8DD #xE67C) Err bitreich.org 70 i- (#xF8DC #xE67B) Err bitreich.org 70 i- (#xF8DB #xE67A) Err bitreich.org 70 i- (#xF8DA #xE679) Err bitreich.org 70 i- (#xF8D9 #xE678) Err bitreich.org 70 i- (#xF8D8 #xE677) Err bitreich.org 70 i- (#xF8D7 #xE676) Err bitreich.org 70 i- (#xF8D6 #xE675) Err bitreich.org 70 i- (#xF8D5 #xE674) Err bitreich.org 70 i- (#xF8D4 #xE673) Err bitreich.org 70 i- (#xF8D3 #xE672) Err bitreich.org 70 i- (#xF8D2 #xE671) Err bitreich.org 70 i- (#xF8D1 #xE670) Err bitreich.org 70 i- (#xF8D0 #xE66F) Err bitreich.org 70 i- (#xF8CF #xE66E) Err bitreich.org 70 i- (#xF8CE #xE66D) Err bitreich.org 70 i- (#xF8CD #xE66C) Err bitreich.org 70 i- (#xF8CC #xE66B) Err bitreich.org 70 i- (#xF8CB #xE66A) Err bitreich.org 70 i- (#xF8CA #xE669) Err bitreich.org 70 i- (#xF8C9 #xE668) Err bitreich.org 70 i- (#xF8C8 #xE667) Err bitreich.org 70 i- (#xF8C7 #xE666) Err bitreich.org 70 i- (#xF8C6 #xE665) Err bitreich.org 70 i- (#xF8C5 #xE664) Err bitreich.org 70 i- (#xF8C4 #xE663) Err bitreich.org 70 i- (#xF8C3 #xE662) Err bitreich.org 70 i- (#xF8C2 #xE661) Err bitreich.org 70 i- (#xF8C1 #xE660) Err bitreich.org 70 i- (#xF8C0 #xE65F) Err bitreich.org 70 i- (#xF8BF #xE65E) Err bitreich.org 70 i- (#xF8BE #xE65D) Err bitreich.org 70 i- (#xF8BD #xE65C) Err bitreich.org 70 i- (#xF8BC #xE65B) Err bitreich.org 70 i- (#xF8BB #xE65A) Err bitreich.org 70 i- (#xF8BA #xE659) Err bitreich.org 70 i- (#xF8B9 #xE658) Err bitreich.org 70 i- (#xF8B8 #xE657) Err bitreich.org 70 i- (#xF8B7 #xE656) Err bitreich.org 70 i- (#xF8B6 #xE655) Err bitreich.org 70 i- (#xF8B5 #xE654) Err bitreich.org 70 i- (#xF8B4 #xE653) Err bitreich.org 70 i- (#xF8B3 #xE652) Err bitreich.org 70 i- (#xF8B2 #xE651) Err bitreich.org 70 i- (#xF8B1 #xE650) Err bitreich.org 70 i- (#xF8B0 #xE64F) Err bitreich.org 70 i- (#xF8AF #xE64E) Err bitreich.org 70 i- (#xF8AE #xE64D) Err bitreich.org 70 i- (#xF8AD #xE64C) Err bitreich.org 70 i- (#xF8AC #xE64B) Err bitreich.org 70 i- (#xF8AB #xE64A) Err bitreich.org 70 i- (#xF8AA #xE649) Err bitreich.org 70 i- (#xF8A9 #xE648) Err bitreich.org 70 i- (#xF8A8 #xE647) Err bitreich.org 70 i- (#xF8A7 #xE646) Err bitreich.org 70 i- (#xF8A6 #xE645) Err bitreich.org 70 i- (#xF8A5 #xE644) Err bitreich.org 70 i- (#xF8A4 #xE643) Err bitreich.org 70 i- (#xF8A3 #xE642) Err bitreich.org 70 i- (#xF8A2 #xE641) Err bitreich.org 70 i- (#xF8A1 #xE640) Err bitreich.org 70 i- (#xF8A0 #xE63F) Err bitreich.org 70 i- (#xF89F #xE63E) Err bitreich.org 70 i- (#xF89E #xE63D) Err bitreich.org 70 i- (#xF89D #xE63C) Err bitreich.org 70 i- (#xF89C #xE63B) Err bitreich.org 70 i- (#xF89B #xE63A) Err bitreich.org 70 i- (#xF89A #xE639) Err bitreich.org 70 i- (#xF899 #xE638) Err bitreich.org 70 i- (#xF898 #xE637) Err bitreich.org 70 i- (#xF897 #xE636) Err bitreich.org 70 i- (#xF896 #xE635) Err bitreich.org 70 i- (#xF895 #xE634) Err bitreich.org 70 i- (#xF894 #xE633) Err bitreich.org 70 i- (#xF893 #xE632) Err bitreich.org 70 i- (#xF892 #xE631) Err bitreich.org 70 i- (#xF891 #xE630) Err bitreich.org 70 i- (#xF890 #xE62F) Err bitreich.org 70 i- (#xF88F #xE62E) Err bitreich.org 70 i- (#xF88E #xE62D) Err bitreich.org 70 i- (#xF88D #xE62C) Err bitreich.org 70 i- (#xF88C #xE62B) Err bitreich.org 70 i- (#xF88B #xE62A) Err bitreich.org 70 i- (#xF88A #xE629) Err bitreich.org 70 i- (#xF889 #xE628) Err bitreich.org 70 i- (#xF888 #xE627) Err bitreich.org 70 i- (#xF887 #xE626) Err bitreich.org 70 i- (#xF886 #xE625) Err bitreich.org 70 i- (#xF885 #xE624) Err bitreich.org 70 i- (#xF884 #xE623) Err bitreich.org 70 i- (#xF883 #xE622) Err bitreich.org 70 i- (#xF882 #xE621) Err bitreich.org 70 i- (#xF881 #xE620) Err bitreich.org 70 i- (#xF880 #xE61F) Err bitreich.org 70 i- (#xF87E #xE61E) Err bitreich.org 70 i- (#xF87D #xE61D) Err bitreich.org 70 i- (#xF87C #xE61C) Err bitreich.org 70 i- (#xF87B #xE61B) Err bitreich.org 70 i- (#xF87A #xE61A) Err bitreich.org 70 i- (#xF879 #xE619) Err bitreich.org 70 i- (#xF878 #xE618) Err bitreich.org 70 i- (#xF877 #xE617) Err bitreich.org 70 i- (#xF876 #xE616) Err bitreich.org 70 i- (#xF875 #xE615) Err bitreich.org 70 i- (#xF874 #xE614) Err bitreich.org 70 i- (#xF873 #xE613) Err bitreich.org 70 i- (#xF872 #xE612) Err bitreich.org 70 i- (#xF871 #xE611) Err bitreich.org 70 i- (#xF870 #xE610) Err bitreich.org 70 i- (#xF86F #xE60F) Err bitreich.org 70 i- (#xF86E #xE60E) Err bitreich.org 70 i- (#xF86D #xE60D) Err bitreich.org 70 i- (#xF86C #xE60C) Err bitreich.org 70 i- (#xF86B #xE60B) Err bitreich.org 70 i- (#xF86A #xE60A) Err bitreich.org 70 i- (#xF869 #xE609) Err bitreich.org 70 i- (#xF868 #xE608) Err bitreich.org 70 i- (#xF867 #xE607) Err bitreich.org 70 i- (#xF866 #xE606) Err bitreich.org 70 i- (#xF865 #xE605) Err bitreich.org 70 i- (#xF864 #xE604) Err bitreich.org 70 i- (#xF863 #xE603) Err bitreich.org 70 i- (#xF862 #xE602) Err bitreich.org 70 i- (#xF861 #xE601) Err bitreich.org 70 i- (#xF860 #xE600) Err bitreich.org 70 i- (#xF85F #xE5FF) Err bitreich.org 70 i- (#xF85E #xE5FE) Err bitreich.org 70 i- (#xF85D #xE5FD) Err bitreich.org 70 i- (#xF85C #xE5FC) Err bitreich.org 70 i- (#xF85B #xE5FB) Err bitreich.org 70 i- (#xF85A #xE5FA) Err bitreich.org 70 i- (#xF859 #xE5F9) Err bitreich.org 70 i- (#xF858 #xE5F8) Err bitreich.org 70 i- (#xF857 #xE5F7) Err bitreich.org 70 i- (#xF856 #xE5F6) Err bitreich.org 70 i- (#xF855 #xE5F5) Err bitreich.org 70 i- (#xF854 #xE5F4) Err bitreich.org 70 i- (#xF853 #xE5F3) Err bitreich.org 70 i- (#xF852 #xE5F2) Err bitreich.org 70 i- (#xF851 #xE5F1) Err bitreich.org 70 i- (#xF850 #xE5F0) Err bitreich.org 70 i- (#xF84F #xE5EF) Err bitreich.org 70 i- (#xF84E #xE5EE) Err bitreich.org 70 i- (#xF84D #xE5ED) Err bitreich.org 70 i- (#xF84C #xE5EC) Err bitreich.org 70 i- (#xF84B #xE5EB) Err bitreich.org 70 i- (#xF84A #xE5EA) Err bitreich.org 70 i- (#xF849 #xE5E9) Err bitreich.org 70 i- (#xF848 #xE5E8) Err bitreich.org 70 i- (#xF847 #xE5E7) Err bitreich.org 70 i- (#xF846 #xE5E6) Err bitreich.org 70 i- (#xF845 #xE5E5) Err bitreich.org 70 i- (#xF844 #xE5E4) Err bitreich.org 70 i- (#xF843 #xE5E3) Err bitreich.org 70 i- (#xF842 #xE5E2) Err bitreich.org 70 i- (#xF841 #xE5E1) Err bitreich.org 70 i- (#xF840 #xE5E0) Err bitreich.org 70 i- (#xF7FC #xE5DF) Err bitreich.org 70 i- (#xF7FB #xE5DE) Err bitreich.org 70 i- (#xF7FA #xE5DD) Err bitreich.org 70 i- (#xF7F9 #xE5DC) Err bitreich.org 70 i- (#xF7F8 #xE5DB) Err bitreich.org 70 i- (#xF7F7 #xE5DA) Err bitreich.org 70 i- (#xF7F6 #xE5D9) Err bitreich.org 70 i- (#xF7F5 #xE5D8) Err bitreich.org 70 i- (#xF7F4 #xE5D7) Err bitreich.org 70 i- (#xF7F3 #xE5D6) Err bitreich.org 70 i- (#xF7F2 #xE5D5) Err bitreich.org 70 i- (#xF7F1 #xE5D4) Err bitreich.org 70 i- (#xF7F0 #xE5D3) Err bitreich.org 70 i- (#xF7EF #xE5D2) Err bitreich.org 70 i- (#xF7EE #xE5D1) Err bitreich.org 70 i- (#xF7ED #xE5D0) Err bitreich.org 70 i- (#xF7EC #xE5CF) Err bitreich.org 70 i- (#xF7EB #xE5CE) Err bitreich.org 70 i- (#xF7EA #xE5CD) Err bitreich.org 70 i- (#xF7E9 #xE5CC) Err bitreich.org 70 i- (#xF7E8 #xE5CB) Err bitreich.org 70 i- (#xF7E7 #xE5CA) Err bitreich.org 70 i- (#xF7E6 #xE5C9) Err bitreich.org 70 i- (#xF7E5 #xE5C8) Err bitreich.org 70 i- (#xF7E4 #xE5C7) Err bitreich.org 70 i- (#xF7E3 #xE5C6) Err bitreich.org 70 i- (#xF7E2 #xE5C5) Err bitreich.org 70 i- (#xF7E1 #xE5C4) Err bitreich.org 70 i- (#xF7E0 #xE5C3) Err bitreich.org 70 i- (#xF7DF #xE5C2) Err bitreich.org 70 i- (#xF7DE #xE5C1) Err bitreich.org 70 i- (#xF7DD #xE5C0) Err bitreich.org 70 i- (#xF7DC #xE5BF) Err bitreich.org 70 i- (#xF7DB #xE5BE) Err bitreich.org 70 i- (#xF7DA #xE5BD) Err bitreich.org 70 i- (#xF7D9 #xE5BC) Err bitreich.org 70 i- (#xF7D8 #xE5BB) Err bitreich.org 70 i- (#xF7D7 #xE5BA) Err bitreich.org 70 i- (#xF7D6 #xE5B9) Err bitreich.org 70 i- (#xF7D5 #xE5B8) Err bitreich.org 70 i- (#xF7D4 #xE5B7) Err bitreich.org 70 i- (#xF7D3 #xE5B6) Err bitreich.org 70 i- (#xF7D2 #xE5B5) Err bitreich.org 70 i- (#xF7D1 #xE5B4) Err bitreich.org 70 i- (#xF7D0 #xE5B3) Err bitreich.org 70 i- (#xF7CF #xE5B2) Err bitreich.org 70 i- (#xF7CE #xE5B1) Err bitreich.org 70 i- (#xF7CD #xE5B0) Err bitreich.org 70 i- (#xF7CC #xE5AF) Err bitreich.org 70 i- (#xF7CB #xE5AE) Err bitreich.org 70 i- (#xF7CA #xE5AD) Err bitreich.org 70 i- (#xF7C9 #xE5AC) Err bitreich.org 70 i- (#xF7C8 #xE5AB) Err bitreich.org 70 i- (#xF7C7 #xE5AA) Err bitreich.org 70 i- (#xF7C6 #xE5A9) Err bitreich.org 70 i- (#xF7C5 #xE5A8) Err bitreich.org 70 i- (#xF7C4 #xE5A7) Err bitreich.org 70 i- (#xF7C3 #xE5A6) Err bitreich.org 70 i- (#xF7C2 #xE5A5) Err bitreich.org 70 i- (#xF7C1 #xE5A4) Err bitreich.org 70 i- (#xF7C0 #xE5A3) Err bitreich.org 70 i- (#xF7BF #xE5A2) Err bitreich.org 70 i- (#xF7BE #xE5A1) Err bitreich.org 70 i- (#xF7BD #xE5A0) Err bitreich.org 70 i- (#xF7BC #xE59F) Err bitreich.org 70 i- (#xF7BB #xE59E) Err bitreich.org 70 i- (#xF7BA #xE59D) Err bitreich.org 70 i- (#xF7B9 #xE59C) Err bitreich.org 70 i- (#xF7B8 #xE59B) Err bitreich.org 70 i- (#xF7B7 #xE59A) Err bitreich.org 70 i- (#xF7B6 #xE599) Err bitreich.org 70 i- (#xF7B5 #xE598) Err bitreich.org 70 i- (#xF7B4 #xE597) Err bitreich.org 70 i- (#xF7B3 #xE596) Err bitreich.org 70 i- (#xF7B2 #xE595) Err bitreich.org 70 i- (#xF7B1 #xE594) Err bitreich.org 70 i- (#xF7B0 #xE593) Err bitreich.org 70 i- (#xF7AF #xE592) Err bitreich.org 70 i- (#xF7AE #xE591) Err bitreich.org 70 i- (#xF7AD #xE590) Err bitreich.org 70 i- (#xF7AC #xE58F) Err bitreich.org 70 i- (#xF7AB #xE58E) Err bitreich.org 70 i- (#xF7AA #xE58D) Err bitreich.org 70 i- (#xF7A9 #xE58C) Err bitreich.org 70 i- (#xF7A8 #xE58B) Err bitreich.org 70 i- (#xF7A7 #xE58A) Err bitreich.org 70 i- (#xF7A6 #xE589) Err bitreich.org 70 i- (#xF7A5 #xE588) Err bitreich.org 70 i- (#xF7A4 #xE587) Err bitreich.org 70 i- (#xF7A3 #xE586) Err bitreich.org 70 i- (#xF7A2 #xE585) Err bitreich.org 70 i- (#xF7A1 #xE584) Err bitreich.org 70 i- (#xF7A0 #xE583) Err bitreich.org 70 i- (#xF79F #xE582) Err bitreich.org 70 i- (#xF79E #xE581) Err bitreich.org 70 i- (#xF79D #xE580) Err bitreich.org 70 i- (#xF79C #xE57F) Err bitreich.org 70 i- (#xF79B #xE57E) Err bitreich.org 70 i- (#xF79A #xE57D) Err bitreich.org 70 i- (#xF799 #xE57C) Err bitreich.org 70 i- (#xF798 #xE57B) Err bitreich.org 70 i- (#xF797 #xE57A) Err bitreich.org 70 i- (#xF796 #xE579) Err bitreich.org 70 i- (#xF795 #xE578) Err bitreich.org 70 i- (#xF794 #xE577) Err bitreich.org 70 i- (#xF793 #xE576) Err bitreich.org 70 i- (#xF792 #xE575) Err bitreich.org 70 i- (#xF791 #xE574) Err bitreich.org 70 i- (#xF790 #xE573) Err bitreich.org 70 i- (#xF78F #xE572) Err bitreich.org 70 i- (#xF78E #xE571) Err bitreich.org 70 i- (#xF78D #xE570) Err bitreich.org 70 i- (#xF78C #xE56F) Err bitreich.org 70 i- (#xF78B #xE56E) Err bitreich.org 70 i- (#xF78A #xE56D) Err bitreich.org 70 i- (#xF789 #xE56C) Err bitreich.org 70 i- (#xF788 #xE56B) Err bitreich.org 70 i- (#xF787 #xE56A) Err bitreich.org 70 i- (#xF786 #xE569) Err bitreich.org 70 i- (#xF785 #xE568) Err bitreich.org 70 i- (#xF784 #xE567) Err bitreich.org 70 i- (#xF783 #xE566) Err bitreich.org 70 i- (#xF782 #xE565) Err bitreich.org 70 i- (#xF781 #xE564) Err bitreich.org 70 i- (#xF780 #xE563) Err bitreich.org 70 i- (#xF77E #xE562) Err bitreich.org 70 i- (#xF77D #xE561) Err bitreich.org 70 i- (#xF77C #xE560) Err bitreich.org 70 i- (#xF77B #xE55F) Err bitreich.org 70 i- (#xF77A #xE55E) Err bitreich.org 70 i- (#xF779 #xE55D) Err bitreich.org 70 i- (#xF778 #xE55C) Err bitreich.org 70 i- (#xF777 #xE55B) Err bitreich.org 70 i- (#xF776 #xE55A) Err bitreich.org 70 i- (#xF775 #xE559) Err bitreich.org 70 i- (#xF774 #xE558) Err bitreich.org 70 i- (#xF773 #xE557) Err bitreich.org 70 i- (#xF772 #xE556) Err bitreich.org 70 i- (#xF771 #xE555) Err bitreich.org 70 i- (#xF770 #xE554) Err bitreich.org 70 i- (#xF76F #xE553) Err bitreich.org 70 i- (#xF76E #xE552) Err bitreich.org 70 i- (#xF76D #xE551) Err bitreich.org 70 i- (#xF76C #xE550) Err bitreich.org 70 i- (#xF76B #xE54F) Err bitreich.org 70 i- (#xF76A #xE54E) Err bitreich.org 70 i- (#xF769 #xE54D) Err bitreich.org 70 i- (#xF768 #xE54C) Err bitreich.org 70 i- (#xF767 #xE54B) Err bitreich.org 70 i- (#xF766 #xE54A) Err bitreich.org 70 i- (#xF765 #xE549) Err bitreich.org 70 i- (#xF764 #xE548) Err bitreich.org 70 i- (#xF763 #xE547) Err bitreich.org 70 i- (#xF762 #xE546) Err bitreich.org 70 i- (#xF761 #xE545) Err bitreich.org 70 i- (#xF760 #xE544) Err bitreich.org 70 i- (#xF75F #xE543) Err bitreich.org 70 i- (#xF75E #xE542) Err bitreich.org 70 i- (#xF75D #xE541) Err bitreich.org 70 i- (#xF75C #xE540) Err bitreich.org 70 i- (#xF75B #xE53F) Err bitreich.org 70 i- (#xF75A #xE53E) Err bitreich.org 70 i- (#xF759 #xE53D) Err bitreich.org 70 i- (#xF758 #xE53C) Err bitreich.org 70 i- (#xF757 #xE53B) Err bitreich.org 70 i- (#xF756 #xE53A) Err bitreich.org 70 i- (#xF755 #xE539) Err bitreich.org 70 i- (#xF754 #xE538) Err bitreich.org 70 i- (#xF753 #xE537) Err bitreich.org 70 i- (#xF752 #xE536) Err bitreich.org 70 i- (#xF751 #xE535) Err bitreich.org 70 i- (#xF750 #xE534) Err bitreich.org 70 i- (#xF74F #xE533) Err bitreich.org 70 i- (#xF74E #xE532) Err bitreich.org 70 i- (#xF74D #xE531) Err bitreich.org 70 i- (#xF74C #xE530) Err bitreich.org 70 i- (#xF74B #xE52F) Err bitreich.org 70 i- (#xF74A #xE52E) Err bitreich.org 70 i- (#xF749 #xE52D) Err bitreich.org 70 i- (#xF748 #xE52C) Err bitreich.org 70 i- (#xF747 #xE52B) Err bitreich.org 70 i- (#xF746 #xE52A) Err bitreich.org 70 i- (#xF745 #xE529) Err bitreich.org 70 i- (#xF744 #xE528) Err bitreich.org 70 i- (#xF743 #xE527) Err bitreich.org 70 i- (#xF742 #xE526) Err bitreich.org 70 i- (#xF741 #xE525) Err bitreich.org 70 i- (#xF740 #xE524) Err bitreich.org 70 i- (#xF6FC #xE523) Err bitreich.org 70 i- (#xF6FB #xE522) Err bitreich.org 70 i- (#xF6FA #xE521) Err bitreich.org 70 i- (#xF6F9 #xE520) Err bitreich.org 70 i- (#xF6F8 #xE51F) Err bitreich.org 70 i- (#xF6F7 #xE51E) Err bitreich.org 70 i- (#xF6F6 #xE51D) Err bitreich.org 70 i- (#xF6F5 #xE51C) Err bitreich.org 70 i- (#xF6F4 #xE51B) Err bitreich.org 70 i- (#xF6F3 #xE51A) Err bitreich.org 70 i- (#xF6F2 #xE519) Err bitreich.org 70 i- (#xF6F1 #xE518) Err bitreich.org 70 i- (#xF6F0 #xE517) Err bitreich.org 70 i- (#xF6EF #xE516) Err bitreich.org 70 i- (#xF6EE #xE515) Err bitreich.org 70 i- (#xF6ED #xE514) Err bitreich.org 70 i- (#xF6EC #xE513) Err bitreich.org 70 i- (#xF6EB #xE512) Err bitreich.org 70 i- (#xF6EA #xE511) Err bitreich.org 70 i- (#xF6E9 #xE510) Err bitreich.org 70 i- (#xF6E8 #xE50F) Err bitreich.org 70 i- (#xF6E7 #xE50E) Err bitreich.org 70 i- (#xF6E6 #xE50D) Err bitreich.org 70 i- (#xF6E5 #xE50C) Err bitreich.org 70 i- (#xF6E4 #xE50B) Err bitreich.org 70 i- (#xF6E3 #xE50A) Err bitreich.org 70 i- (#xF6E2 #xE509) Err bitreich.org 70 i- (#xF6E1 #xE508) Err bitreich.org 70 i- (#xF6E0 #xE507) Err bitreich.org 70 i- (#xF6DF #xE506) Err bitreich.org 70 i- (#xF6DE #xE505) Err bitreich.org 70 i- (#xF6DD #xE504) Err bitreich.org 70 i- (#xF6DC #xE503) Err bitreich.org 70 i- (#xF6DB #xE502) Err bitreich.org 70 i- (#xF6DA #xE501) Err bitreich.org 70 i- (#xF6D9 #xE500) Err bitreich.org 70 i- (#xF6D8 #xE4FF) Err bitreich.org 70 i- (#xF6D7 #xE4FE) Err bitreich.org 70 i- (#xF6D6 #xE4FD) Err bitreich.org 70 i- (#xF6D5 #xE4FC) Err bitreich.org 70 i- (#xF6D4 #xE4FB) Err bitreich.org 70 i- (#xF6D3 #xE4FA) Err bitreich.org 70 i- (#xF6D2 #xE4F9) Err bitreich.org 70 i- (#xF6D1 #xE4F8) Err bitreich.org 70 i- (#xF6D0 #xE4F7) Err bitreich.org 70 i- (#xF6CF #xE4F6) Err bitreich.org 70 i- (#xF6CE #xE4F5) Err bitreich.org 70 i- (#xF6CD #xE4F4) Err bitreich.org 70 i- (#xF6CC #xE4F3) Err bitreich.org 70 i- (#xF6CB #xE4F2) Err bitreich.org 70 i- (#xF6CA #xE4F1) Err bitreich.org 70 i- (#xF6C9 #xE4F0) Err bitreich.org 70 i- (#xF6C8 #xE4EF) Err bitreich.org 70 i- (#xF6C7 #xE4EE) Err bitreich.org 70 i- (#xF6C6 #xE4ED) Err bitreich.org 70 i- (#xF6C5 #xE4EC) Err bitreich.org 70 i- (#xF6C4 #xE4EB) Err bitreich.org 70 i- (#xF6C3 #xE4EA) Err bitreich.org 70 i- (#xF6C2 #xE4E9) Err bitreich.org 70 i- (#xF6C1 #xE4E8) Err bitreich.org 70 i- (#xF6C0 #xE4E7) Err bitreich.org 70 i- (#xF6BF #xE4E6) Err bitreich.org 70 i- (#xF6BE #xE4E5) Err bitreich.org 70 i- (#xF6BD #xE4E4) Err bitreich.org 70 i- (#xF6BC #xE4E3) Err bitreich.org 70 i- (#xF6BB #xE4E2) Err bitreich.org 70 i- (#xF6BA #xE4E1) Err bitreich.org 70 i- (#xF6B9 #xE4E0) Err bitreich.org 70 i- (#xF6B8 #xE4DF) Err bitreich.org 70 i- (#xF6B7 #xE4DE) Err bitreich.org 70 i- (#xF6B6 #xE4DD) Err bitreich.org 70 i- (#xF6B5 #xE4DC) Err bitreich.org 70 i- (#xF6B4 #xE4DB) Err bitreich.org 70 i- (#xF6B3 #xE4DA) Err bitreich.org 70 i- (#xF6B2 #xE4D9) Err bitreich.org 70 i- (#xF6B1 #xE4D8) Err bitreich.org 70 i- (#xF6B0 #xE4D7) Err bitreich.org 70 i- (#xF6AF #xE4D6) Err bitreich.org 70 i- (#xF6AE #xE4D5) Err bitreich.org 70 i- (#xF6AD #xE4D4) Err bitreich.org 70 i- (#xF6AC #xE4D3) Err bitreich.org 70 i- (#xF6AB #xE4D2) Err bitreich.org 70 i- (#xF6AA #xE4D1) Err bitreich.org 70 i- (#xF6A9 #xE4D0) Err bitreich.org 70 i- (#xF6A8 #xE4CF) Err bitreich.org 70 i- (#xF6A7 #xE4CE) Err bitreich.org 70 i- (#xF6A6 #xE4CD) Err bitreich.org 70 i- (#xF6A5 #xE4CC) Err bitreich.org 70 i- (#xF6A4 #xE4CB) Err bitreich.org 70 i- (#xF6A3 #xE4CA) Err bitreich.org 70 i- (#xF6A2 #xE4C9) Err bitreich.org 70 i- (#xF6A1 #xE4C8) Err bitreich.org 70 i- (#xF6A0 #xE4C7) Err bitreich.org 70 i- (#xF69F #xE4C6) Err bitreich.org 70 i- (#xF69E #xE4C5) Err bitreich.org 70 i- (#xF69D #xE4C4) Err bitreich.org 70 i- (#xF69C #xE4C3) Err bitreich.org 70 i- (#xF69B #xE4C2) Err bitreich.org 70 i- (#xF69A #xE4C1) Err bitreich.org 70 i- (#xF699 #xE4C0) Err bitreich.org 70 i- (#xF698 #xE4BF) Err bitreich.org 70 i- (#xF697 #xE4BE) Err bitreich.org 70 i- (#xF696 #xE4BD) Err bitreich.org 70 i- (#xF695 #xE4BC) Err bitreich.org 70 i- (#xF694 #xE4BB) Err bitreich.org 70 i- (#xF693 #xE4BA) Err bitreich.org 70 i- (#xF692 #xE4B9) Err bitreich.org 70 i- (#xF691 #xE4B8) Err bitreich.org 70 i- (#xF690 #xE4B7) Err bitreich.org 70 i- (#xF68F #xE4B6) Err bitreich.org 70 i- (#xF68E #xE4B5) Err bitreich.org 70 i- (#xF68D #xE4B4) Err bitreich.org 70 i- (#xF68C #xE4B3) Err bitreich.org 70 i- (#xF68B #xE4B2) Err bitreich.org 70 i- (#xF68A #xE4B1) Err bitreich.org 70 i- (#xF689 #xE4B0) Err bitreich.org 70 i- (#xF688 #xE4AF) Err bitreich.org 70 i- (#xF687 #xE4AE) Err bitreich.org 70 i- (#xF686 #xE4AD) Err bitreich.org 70 i- (#xF685 #xE4AC) Err bitreich.org 70 i- (#xF684 #xE4AB) Err bitreich.org 70 i- (#xF683 #xE4AA) Err bitreich.org 70 i- (#xF682 #xE4A9) Err bitreich.org 70 i- (#xF681 #xE4A8) Err bitreich.org 70 i- (#xF680 #xE4A7) Err bitreich.org 70 i- (#xF67E #xE4A6) Err bitreich.org 70 i- (#xF67D #xE4A5) Err bitreich.org 70 i- (#xF67C #xE4A4) Err bitreich.org 70 i- (#xF67B #xE4A3) Err bitreich.org 70 i- (#xF67A #xE4A2) Err bitreich.org 70 i- (#xF679 #xE4A1) Err bitreich.org 70 i- (#xF678 #xE4A0) Err bitreich.org 70 i- (#xF677 #xE49F) Err bitreich.org 70 i- (#xF676 #xE49E) Err bitreich.org 70 i- (#xF675 #xE49D) Err bitreich.org 70 i- (#xF674 #xE49C) Err bitreich.org 70 i- (#xF673 #xE49B) Err bitreich.org 70 i- (#xF672 #xE49A) Err bitreich.org 70 i- (#xF671 #xE499) Err bitreich.org 70 i- (#xF670 #xE498) Err bitreich.org 70 i- (#xF66F #xE497) Err bitreich.org 70 i- (#xF66E #xE496) Err bitreich.org 70 i- (#xF66D #xE495) Err bitreich.org 70 i- (#xF66C #xE494) Err bitreich.org 70 i- (#xF66B #xE493) Err bitreich.org 70 i- (#xF66A #xE492) Err bitreich.org 70 i- (#xF669 #xE491) Err bitreich.org 70 i- (#xF668 #xE490) Err bitreich.org 70 i- (#xF667 #xE48F) Err bitreich.org 70 i- (#xF666 #xE48E) Err bitreich.org 70 i- (#xF665 #xE48D) Err bitreich.org 70 i- (#xF664 #xE48C) Err bitreich.org 70 i- (#xF663 #xE48B) Err bitreich.org 70 i- (#xF662 #xE48A) Err bitreich.org 70 i- (#xF661 #xE489) Err bitreich.org 70 i- (#xF660 #xE488) Err bitreich.org 70 i- (#xF65F #xE487) Err bitreich.org 70 i- (#xF65E #xE486) Err bitreich.org 70 i- (#xF65D #xE485) Err bitreich.org 70 i- (#xF65C #xE484) Err bitreich.org 70 i- (#xF65B #xE483) Err bitreich.org 70 i- (#xF65A #xE482) Err bitreich.org 70 i- (#xF659 #xE481) Err bitreich.org 70 i- (#xF658 #xE480) Err bitreich.org 70 i- (#xF657 #xE47F) Err bitreich.org 70 i- (#xF656 #xE47E) Err bitreich.org 70 i- (#xF655 #xE47D) Err bitreich.org 70 i- (#xF654 #xE47C) Err bitreich.org 70 i- (#xF653 #xE47B) Err bitreich.org 70 i- (#xF652 #xE47A) Err bitreich.org 70 i- (#xF651 #xE479) Err bitreich.org 70 i- (#xF650 #xE478) Err bitreich.org 70 i- (#xF64F #xE477) Err bitreich.org 70 i- (#xF64E #xE476) Err bitreich.org 70 i- (#xF64D #xE475) Err bitreich.org 70 i- (#xF64C #xE474) Err bitreich.org 70 i- (#xF64B #xE473) Err bitreich.org 70 i- (#xF64A #xE472) Err bitreich.org 70 i- (#xF649 #xE471) Err bitreich.org 70 i- (#xF648 #xE470) Err bitreich.org 70 i- (#xF647 #xE46F) Err bitreich.org 70 i- (#xF646 #xE46E) Err bitreich.org 70 i- (#xF645 #xE46D) Err bitreich.org 70 i- (#xF644 #xE46C) Err bitreich.org 70 i- (#xF643 #xE46B) Err bitreich.org 70 i- (#xF642 #xE46A) Err bitreich.org 70 i- (#xF641 #xE469) Err bitreich.org 70 i- (#xF640 #xE468) Err bitreich.org 70 i- (#xF5FC #xE467) Err bitreich.org 70 i- (#xF5FB #xE466) Err bitreich.org 70 i- (#xF5FA #xE465) Err bitreich.org 70 i- (#xF5F9 #xE464) Err bitreich.org 70 i- (#xF5F8 #xE463) Err bitreich.org 70 i- (#xF5F7 #xE462) Err bitreich.org 70 i- (#xF5F6 #xE461) Err bitreich.org 70 i- (#xF5F5 #xE460) Err bitreich.org 70 i- (#xF5F4 #xE45F) Err bitreich.org 70 i- (#xF5F3 #xE45E) Err bitreich.org 70 i- (#xF5F2 #xE45D) Err bitreich.org 70 i- (#xF5F1 #xE45C) Err bitreich.org 70 i- (#xF5F0 #xE45B) Err bitreich.org 70 i- (#xF5EF #xE45A) Err bitreich.org 70 i- (#xF5EE #xE459) Err bitreich.org 70 i- (#xF5ED #xE458) Err bitreich.org 70 i- (#xF5EC #xE457) Err bitreich.org 70 i- (#xF5EB #xE456) Err bitreich.org 70 i- (#xF5EA #xE455) Err bitreich.org 70 i- (#xF5E9 #xE454) Err bitreich.org 70 i- (#xF5E8 #xE453) Err bitreich.org 70 i- (#xF5E7 #xE452) Err bitreich.org 70 i- (#xF5E6 #xE451) Err bitreich.org 70 i- (#xF5E5 #xE450) Err bitreich.org 70 i- (#xF5E4 #xE44F) Err bitreich.org 70 i- (#xF5E3 #xE44E) Err bitreich.org 70 i- (#xF5E2 #xE44D) Err bitreich.org 70 i- (#xF5E1 #xE44C) Err bitreich.org 70 i- (#xF5E0 #xE44B) Err bitreich.org 70 i- (#xF5DF #xE44A) Err bitreich.org 70 i- (#xF5DE #xE449) Err bitreich.org 70 i- (#xF5DD #xE448) Err bitreich.org 70 i- (#xF5DC #xE447) Err bitreich.org 70 i- (#xF5DB #xE446) Err bitreich.org 70 i- (#xF5DA #xE445) Err bitreich.org 70 i- (#xF5D9 #xE444) Err bitreich.org 70 i- (#xF5D8 #xE443) Err bitreich.org 70 i- (#xF5D7 #xE442) Err bitreich.org 70 i- (#xF5D6 #xE441) Err bitreich.org 70 i- (#xF5D5 #xE440) Err bitreich.org 70 i- (#xF5D4 #xE43F) Err bitreich.org 70 i- (#xF5D3 #xE43E) Err bitreich.org 70 i- (#xF5D2 #xE43D) Err bitreich.org 70 i- (#xF5D1 #xE43C) Err bitreich.org 70 i- (#xF5D0 #xE43B) Err bitreich.org 70 i- (#xF5CF #xE43A) Err bitreich.org 70 i- (#xF5CE #xE439) Err bitreich.org 70 i- (#xF5CD #xE438) Err bitreich.org 70 i- (#xF5CC #xE437) Err bitreich.org 70 i- (#xF5CB #xE436) Err bitreich.org 70 i- (#xF5CA #xE435) Err bitreich.org 70 i- (#xF5C9 #xE434) Err bitreich.org 70 i- (#xF5C8 #xE433) Err bitreich.org 70 i- (#xF5C7 #xE432) Err bitreich.org 70 i- (#xF5C6 #xE431) Err bitreich.org 70 i- (#xF5C5 #xE430) Err bitreich.org 70 i- (#xF5C4 #xE42F) Err bitreich.org 70 i- (#xF5C3 #xE42E) Err bitreich.org 70 i- (#xF5C2 #xE42D) Err bitreich.org 70 i- (#xF5C1 #xE42C) Err bitreich.org 70 i- (#xF5C0 #xE42B) Err bitreich.org 70 i- (#xF5BF #xE42A) Err bitreich.org 70 i- (#xF5BE #xE429) Err bitreich.org 70 i- (#xF5BD #xE428) Err bitreich.org 70 i- (#xF5BC #xE427) Err bitreich.org 70 i- (#xF5BB #xE426) Err bitreich.org 70 i- (#xF5BA #xE425) Err bitreich.org 70 i- (#xF5B9 #xE424) Err bitreich.org 70 i- (#xF5B8 #xE423) Err bitreich.org 70 i- (#xF5B7 #xE422) Err bitreich.org 70 i- (#xF5B6 #xE421) Err bitreich.org 70 i- (#xF5B5 #xE420) Err bitreich.org 70 i- (#xF5B4 #xE41F) Err bitreich.org 70 i- (#xF5B3 #xE41E) Err bitreich.org 70 i- (#xF5B2 #xE41D) Err bitreich.org 70 i- (#xF5B1 #xE41C) Err bitreich.org 70 i- (#xF5B0 #xE41B) Err bitreich.org 70 i- (#xF5AF #xE41A) Err bitreich.org 70 i- (#xF5AE #xE419) Err bitreich.org 70 i- (#xF5AD #xE418) Err bitreich.org 70 i- (#xF5AC #xE417) Err bitreich.org 70 i- (#xF5AB #xE416) Err bitreich.org 70 i- (#xF5AA #xE415) Err bitreich.org 70 i- (#xF5A9 #xE414) Err bitreich.org 70 i- (#xF5A8 #xE413) Err bitreich.org 70 i- (#xF5A7 #xE412) Err bitreich.org 70 i- (#xF5A6 #xE411) Err bitreich.org 70 i- (#xF5A5 #xE410) Err bitreich.org 70 i- (#xF5A4 #xE40F) Err bitreich.org 70 i- (#xF5A3 #xE40E) Err bitreich.org 70 i- (#xF5A2 #xE40D) Err bitreich.org 70 i- (#xF5A1 #xE40C) Err bitreich.org 70 i- (#xF5A0 #xE40B) Err bitreich.org 70 i- (#xF59F #xE40A) Err bitreich.org 70 i- (#xF59E #xE409) Err bitreich.org 70 i- (#xF59D #xE408) Err bitreich.org 70 i- (#xF59C #xE407) Err bitreich.org 70 i- (#xF59B #xE406) Err bitreich.org 70 i- (#xF59A #xE405) Err bitreich.org 70 i- (#xF599 #xE404) Err bitreich.org 70 i- (#xF598 #xE403) Err bitreich.org 70 i- (#xF597 #xE402) Err bitreich.org 70 i- (#xF596 #xE401) Err bitreich.org 70 i- (#xF595 #xE400) Err bitreich.org 70 i- (#xF594 #xE3FF) Err bitreich.org 70 i- (#xF593 #xE3FE) Err bitreich.org 70 i- (#xF592 #xE3FD) Err bitreich.org 70 i- (#xF591 #xE3FC) Err bitreich.org 70 i- (#xF590 #xE3FB) Err bitreich.org 70 i- (#xF58F #xE3FA) Err bitreich.org 70 i- (#xF58E #xE3F9) Err bitreich.org 70 i- (#xF58D #xE3F8) Err bitreich.org 70 i- (#xF58C #xE3F7) Err bitreich.org 70 i- (#xF58B #xE3F6) Err bitreich.org 70 i- (#xF58A #xE3F5) Err bitreich.org 70 i- (#xF589 #xE3F4) Err bitreich.org 70 i- (#xF588 #xE3F3) Err bitreich.org 70 i- (#xF587 #xE3F2) Err bitreich.org 70 i- (#xF586 #xE3F1) Err bitreich.org 70 i- (#xF585 #xE3F0) Err bitreich.org 70 i- (#xF584 #xE3EF) Err bitreich.org 70 i- (#xF583 #xE3EE) Err bitreich.org 70 i- (#xF582 #xE3ED) Err bitreich.org 70 i- (#xF581 #xE3EC) Err bitreich.org 70 i- (#xF580 #xE3EB) Err bitreich.org 70 i- (#xF57E #xE3EA) Err bitreich.org 70 i- (#xF57D #xE3E9) Err bitreich.org 70 i- (#xF57C #xE3E8) Err bitreich.org 70 i- (#xF57B #xE3E7) Err bitreich.org 70 i- (#xF57A #xE3E6) Err bitreich.org 70 i- (#xF579 #xE3E5) Err bitreich.org 70 i- (#xF578 #xE3E4) Err bitreich.org 70 i- (#xF577 #xE3E3) Err bitreich.org 70 i- (#xF576 #xE3E2) Err bitreich.org 70 i- (#xF575 #xE3E1) Err bitreich.org 70 i- (#xF574 #xE3E0) Err bitreich.org 70 i- (#xF573 #xE3DF) Err bitreich.org 70 i- (#xF572 #xE3DE) Err bitreich.org 70 i- (#xF571 #xE3DD) Err bitreich.org 70 i- (#xF570 #xE3DC) Err bitreich.org 70 i- (#xF56F #xE3DB) Err bitreich.org 70 i- (#xF56E #xE3DA) Err bitreich.org 70 i- (#xF56D #xE3D9) Err bitreich.org 70 i- (#xF56C #xE3D8) Err bitreich.org 70 i- (#xF56B #xE3D7) Err bitreich.org 70 i- (#xF56A #xE3D6) Err bitreich.org 70 i- (#xF569 #xE3D5) Err bitreich.org 70 i- (#xF568 #xE3D4) Err bitreich.org 70 i- (#xF567 #xE3D3) Err bitreich.org 70 i- (#xF566 #xE3D2) Err bitreich.org 70 i- (#xF565 #xE3D1) Err bitreich.org 70 i- (#xF564 #xE3D0) Err bitreich.org 70 i- (#xF563 #xE3CF) Err bitreich.org 70 i- (#xF562 #xE3CE) Err bitreich.org 70 i- (#xF561 #xE3CD) Err bitreich.org 70 i- (#xF560 #xE3CC) Err bitreich.org 70 i- (#xF55F #xE3CB) Err bitreich.org 70 i- (#xF55E #xE3CA) Err bitreich.org 70 i- (#xF55D #xE3C9) Err bitreich.org 70 i- (#xF55C #xE3C8) Err bitreich.org 70 i- (#xF55B #xE3C7) Err bitreich.org 70 i- (#xF55A #xE3C6) Err bitreich.org 70 i- (#xF559 #xE3C5) Err bitreich.org 70 i- (#xF558 #xE3C4) Err bitreich.org 70 i- (#xF557 #xE3C3) Err bitreich.org 70 i- (#xF556 #xE3C2) Err bitreich.org 70 i- (#xF555 #xE3C1) Err bitreich.org 70 i- (#xF554 #xE3C0) Err bitreich.org 70 i- (#xF553 #xE3BF) Err bitreich.org 70 i- (#xF552 #xE3BE) Err bitreich.org 70 i- (#xF551 #xE3BD) Err bitreich.org 70 i- (#xF550 #xE3BC) Err bitreich.org 70 i- (#xF54F #xE3BB) Err bitreich.org 70 i- (#xF54E #xE3BA) Err bitreich.org 70 i- (#xF54D #xE3B9) Err bitreich.org 70 i- (#xF54C #xE3B8) Err bitreich.org 70 i- (#xF54B #xE3B7) Err bitreich.org 70 i- (#xF54A #xE3B6) Err bitreich.org 70 i- (#xF549 #xE3B5) Err bitreich.org 70 i- (#xF548 #xE3B4) Err bitreich.org 70 i- (#xF547 #xE3B3) Err bitreich.org 70 i- (#xF546 #xE3B2) Err bitreich.org 70 i- (#xF545 #xE3B1) Err bitreich.org 70 i- (#xF544 #xE3B0) Err bitreich.org 70 i- (#xF543 #xE3AF) Err bitreich.org 70 i- (#xF542 #xE3AE) Err bitreich.org 70 i- (#xF541 #xE3AD) Err bitreich.org 70 i- (#xF540 #xE3AC) Err bitreich.org 70 i- (#xF4FC #xE3AB) Err bitreich.org 70 i- (#xF4FB #xE3AA) Err bitreich.org 70 i- (#xF4FA #xE3A9) Err bitreich.org 70 i- (#xF4F9 #xE3A8) Err bitreich.org 70 i- (#xF4F8 #xE3A7) Err bitreich.org 70 i- (#xF4F7 #xE3A6) Err bitreich.org 70 i- (#xF4F6 #xE3A5) Err bitreich.org 70 i- (#xF4F5 #xE3A4) Err bitreich.org 70 i- (#xF4F4 #xE3A3) Err bitreich.org 70 i- (#xF4F3 #xE3A2) Err bitreich.org 70 i- (#xF4F2 #xE3A1) Err bitreich.org 70 i- (#xF4F1 #xE3A0) Err bitreich.org 70 i- (#xF4F0 #xE39F) Err bitreich.org 70 i- (#xF4EF #xE39E) Err bitreich.org 70 i- (#xF4EE #xE39D) Err bitreich.org 70 i- (#xF4ED #xE39C) Err bitreich.org 70 i- (#xF4EC #xE39B) Err bitreich.org 70 i- (#xF4EB #xE39A) Err bitreich.org 70 i- (#xF4EA #xE399) Err bitreich.org 70 i- (#xF4E9 #xE398) Err bitreich.org 70 i- (#xF4E8 #xE397) Err bitreich.org 70 i- (#xF4E7 #xE396) Err bitreich.org 70 i- (#xF4E6 #xE395) Err bitreich.org 70 i- (#xF4E5 #xE394) Err bitreich.org 70 i- (#xF4E4 #xE393) Err bitreich.org 70 i- (#xF4E3 #xE392) Err bitreich.org 70 i- (#xF4E2 #xE391) Err bitreich.org 70 i- (#xF4E1 #xE390) Err bitreich.org 70 i- (#xF4E0 #xE38F) Err bitreich.org 70 i- (#xF4DF #xE38E) Err bitreich.org 70 i- (#xF4DE #xE38D) Err bitreich.org 70 i- (#xF4DD #xE38C) Err bitreich.org 70 i- (#xF4DC #xE38B) Err bitreich.org 70 i- (#xF4DB #xE38A) Err bitreich.org 70 i- (#xF4DA #xE389) Err bitreich.org 70 i- (#xF4D9 #xE388) Err bitreich.org 70 i- (#xF4D8 #xE387) Err bitreich.org 70 i- (#xF4D7 #xE386) Err bitreich.org 70 i- (#xF4D6 #xE385) Err bitreich.org 70 i- (#xF4D5 #xE384) Err bitreich.org 70 i- (#xF4D4 #xE383) Err bitreich.org 70 i- (#xF4D3 #xE382) Err bitreich.org 70 i- (#xF4D2 #xE381) Err bitreich.org 70 i- (#xF4D1 #xE380) Err bitreich.org 70 i- (#xF4D0 #xE37F) Err bitreich.org 70 i- (#xF4CF #xE37E) Err bitreich.org 70 i- (#xF4CE #xE37D) Err bitreich.org 70 i- (#xF4CD #xE37C) Err bitreich.org 70 i- (#xF4CC #xE37B) Err bitreich.org 70 i- (#xF4CB #xE37A) Err bitreich.org 70 i- (#xF4CA #xE379) Err bitreich.org 70 i- (#xF4C9 #xE378) Err bitreich.org 70 i- (#xF4C8 #xE377) Err bitreich.org 70 i- (#xF4C7 #xE376) Err bitreich.org 70 i- (#xF4C6 #xE375) Err bitreich.org 70 i- (#xF4C5 #xE374) Err bitreich.org 70 i- (#xF4C4 #xE373) Err bitreich.org 70 i- (#xF4C3 #xE372) Err bitreich.org 70 i- (#xF4C2 #xE371) Err bitreich.org 70 i- (#xF4C1 #xE370) Err bitreich.org 70 i- (#xF4C0 #xE36F) Err bitreich.org 70 i- (#xF4BF #xE36E) Err bitreich.org 70 i- (#xF4BE #xE36D) Err bitreich.org 70 i- (#xF4BD #xE36C) Err bitreich.org 70 i- (#xF4BC #xE36B) Err bitreich.org 70 i- (#xF4BB #xE36A) Err bitreich.org 70 i- (#xF4BA #xE369) Err bitreich.org 70 i- (#xF4B9 #xE368) Err bitreich.org 70 i- (#xF4B8 #xE367) Err bitreich.org 70 i- (#xF4B7 #xE366) Err bitreich.org 70 i- (#xF4B6 #xE365) Err bitreich.org 70 i- (#xF4B5 #xE364) Err bitreich.org 70 i- (#xF4B4 #xE363) Err bitreich.org 70 i- (#xF4B3 #xE362) Err bitreich.org 70 i- (#xF4B2 #xE361) Err bitreich.org 70 i- (#xF4B1 #xE360) Err bitreich.org 70 i- (#xF4B0 #xE35F) Err bitreich.org 70 i- (#xF4AF #xE35E) Err bitreich.org 70 i- (#xF4AE #xE35D) Err bitreich.org 70 i- (#xF4AD #xE35C) Err bitreich.org 70 i- (#xF4AC #xE35B) Err bitreich.org 70 i- (#xF4AB #xE35A) Err bitreich.org 70 i- (#xF4AA #xE359) Err bitreich.org 70 i- (#xF4A9 #xE358) Err bitreich.org 70 i- (#xF4A8 #xE357) Err bitreich.org 70 i- (#xF4A7 #xE356) Err bitreich.org 70 i- (#xF4A6 #xE355) Err bitreich.org 70 i- (#xF4A5 #xE354) Err bitreich.org 70 i- (#xF4A4 #xE353) Err bitreich.org 70 i- (#xF4A3 #xE352) Err bitreich.org 70 i- (#xF4A2 #xE351) Err bitreich.org 70 i- (#xF4A1 #xE350) Err bitreich.org 70 i- (#xF4A0 #xE34F) Err bitreich.org 70 i- (#xF49F #xE34E) Err bitreich.org 70 i- (#xF49E #xE34D) Err bitreich.org 70 i- (#xF49D #xE34C) Err bitreich.org 70 i- (#xF49C #xE34B) Err bitreich.org 70 i- (#xF49B #xE34A) Err bitreich.org 70 i- (#xF49A #xE349) Err bitreich.org 70 i- (#xF499 #xE348) Err bitreich.org 70 i- (#xF498 #xE347) Err bitreich.org 70 i- (#xF497 #xE346) Err bitreich.org 70 i- (#xF496 #xE345) Err bitreich.org 70 i- (#xF495 #xE344) Err bitreich.org 70 i- (#xF494 #xE343) Err bitreich.org 70 i- (#xF493 #xE342) Err bitreich.org 70 i- (#xF492 #xE341) Err bitreich.org 70 i- (#xF491 #xE340) Err bitreich.org 70 i- (#xF490 #xE33F) Err bitreich.org 70 i- (#xF48F #xE33E) Err bitreich.org 70 i- (#xF48E #xE33D) Err bitreich.org 70 i- (#xF48D #xE33C) Err bitreich.org 70 i- (#xF48C #xE33B) Err bitreich.org 70 i- (#xF48B #xE33A) Err bitreich.org 70 i- (#xF48A #xE339) Err bitreich.org 70 i- (#xF489 #xE338) Err bitreich.org 70 i- (#xF488 #xE337) Err bitreich.org 70 i- (#xF487 #xE336) Err bitreich.org 70 i- (#xF486 #xE335) Err bitreich.org 70 i- (#xF485 #xE334) Err bitreich.org 70 i- (#xF484 #xE333) Err bitreich.org 70 i- (#xF483 #xE332) Err bitreich.org 70 i- (#xF482 #xE331) Err bitreich.org 70 i- (#xF481 #xE330) Err bitreich.org 70 i- (#xF480 #xE32F) Err bitreich.org 70 i- (#xF47E #xE32E) Err bitreich.org 70 i- (#xF47D #xE32D) Err bitreich.org 70 i- (#xF47C #xE32C) Err bitreich.org 70 i- (#xF47B #xE32B) Err bitreich.org 70 i- (#xF47A #xE32A) Err bitreich.org 70 i- (#xF479 #xE329) Err bitreich.org 70 i- (#xF478 #xE328) Err bitreich.org 70 i- (#xF477 #xE327) Err bitreich.org 70 i- (#xF476 #xE326) Err bitreich.org 70 i- (#xF475 #xE325) Err bitreich.org 70 i- (#xF474 #xE324) Err bitreich.org 70 i- (#xF473 #xE323) Err bitreich.org 70 i- (#xF472 #xE322) Err bitreich.org 70 i- (#xF471 #xE321) Err bitreich.org 70 i- (#xF470 #xE320) Err bitreich.org 70 i- (#xF46F #xE31F) Err bitreich.org 70 i- (#xF46E #xE31E) Err bitreich.org 70 i- (#xF46D #xE31D) Err bitreich.org 70 i- (#xF46C #xE31C) Err bitreich.org 70 i- (#xF46B #xE31B) Err bitreich.org 70 i- (#xF46A #xE31A) Err bitreich.org 70 i- (#xF469 #xE319) Err bitreich.org 70 i- (#xF468 #xE318) Err bitreich.org 70 i- (#xF467 #xE317) Err bitreich.org 70 i- (#xF466 #xE316) Err bitreich.org 70 i- (#xF465 #xE315) Err bitreich.org 70 i- (#xF464 #xE314) Err bitreich.org 70 i- (#xF463 #xE313) Err bitreich.org 70 i- (#xF462 #xE312) Err bitreich.org 70 i- (#xF461 #xE311) Err bitreich.org 70 i- (#xF460 #xE310) Err bitreich.org 70 i- (#xF45F #xE30F) Err bitreich.org 70 i- (#xF45E #xE30E) Err bitreich.org 70 i- (#xF45D #xE30D) Err bitreich.org 70 i- (#xF45C #xE30C) Err bitreich.org 70 i- (#xF45B #xE30B) Err bitreich.org 70 i- (#xF45A #xE30A) Err bitreich.org 70 i- (#xF459 #xE309) Err bitreich.org 70 i- (#xF458 #xE308) Err bitreich.org 70 i- (#xF457 #xE307) Err bitreich.org 70 i- (#xF456 #xE306) Err bitreich.org 70 i- (#xF455 #xE305) Err bitreich.org 70 i- (#xF454 #xE304) Err bitreich.org 70 i- (#xF453 #xE303) Err bitreich.org 70 i- (#xF452 #xE302) Err bitreich.org 70 i- (#xF451 #xE301) Err bitreich.org 70 i- (#xF450 #xE300) Err bitreich.org 70 i- (#xF44F #xE2FF) Err bitreich.org 70 i- (#xF44E #xE2FE) Err bitreich.org 70 i- (#xF44D #xE2FD) Err bitreich.org 70 i- (#xF44C #xE2FC) Err bitreich.org 70 i- (#xF44B #xE2FB) Err bitreich.org 70 i- (#xF44A #xE2FA) Err bitreich.org 70 i- (#xF449 #xE2F9) Err bitreich.org 70 i- (#xF448 #xE2F8) Err bitreich.org 70 i- (#xF447 #xE2F7) Err bitreich.org 70 i- (#xF446 #xE2F6) Err bitreich.org 70 i- (#xF445 #xE2F5) Err bitreich.org 70 i- (#xF444 #xE2F4) Err bitreich.org 70 i- (#xF443 #xE2F3) Err bitreich.org 70 i- (#xF442 #xE2F2) Err bitreich.org 70 i- (#xF441 #xE2F1) Err bitreich.org 70 i- (#xF440 #xE2F0) Err bitreich.org 70 i- (#xF3FC #xE2EF) Err bitreich.org 70 i- (#xF3FB #xE2EE) Err bitreich.org 70 i- (#xF3FA #xE2ED) Err bitreich.org 70 i- (#xF3F9 #xE2EC) Err bitreich.org 70 i- (#xF3F8 #xE2EB) Err bitreich.org 70 i- (#xF3F7 #xE2EA) Err bitreich.org 70 i- (#xF3F6 #xE2E9) Err bitreich.org 70 i- (#xF3F5 #xE2E8) Err bitreich.org 70 i- (#xF3F4 #xE2E7) Err bitreich.org 70 i- (#xF3F3 #xE2E6) Err bitreich.org 70 i- (#xF3F2 #xE2E5) Err bitreich.org 70 i- (#xF3F1 #xE2E4) Err bitreich.org 70 i- (#xF3F0 #xE2E3) Err bitreich.org 70 i- (#xF3EF #xE2E2) Err bitreich.org 70 i- (#xF3EE #xE2E1) Err bitreich.org 70 i- (#xF3ED #xE2E0) Err bitreich.org 70 i- (#xF3EC #xE2DF) Err bitreich.org 70 i- (#xF3EB #xE2DE) Err bitreich.org 70 i- (#xF3EA #xE2DD) Err bitreich.org 70 i- (#xF3E9 #xE2DC) Err bitreich.org 70 i- (#xF3E8 #xE2DB) Err bitreich.org 70 i- (#xF3E7 #xE2DA) Err bitreich.org 70 i- (#xF3E6 #xE2D9) Err bitreich.org 70 i- (#xF3E5 #xE2D8) Err bitreich.org 70 i- (#xF3E4 #xE2D7) Err bitreich.org 70 i- (#xF3E3 #xE2D6) Err bitreich.org 70 i- (#xF3E2 #xE2D5) Err bitreich.org 70 i- (#xF3E1 #xE2D4) Err bitreich.org 70 i- (#xF3E0 #xE2D3) Err bitreich.org 70 i- (#xF3DF #xE2D2) Err bitreich.org 70 i- (#xF3DE #xE2D1) Err bitreich.org 70 i- (#xF3DD #xE2D0) Err bitreich.org 70 i- (#xF3DC #xE2CF) Err bitreich.org 70 i- (#xF3DB #xE2CE) Err bitreich.org 70 i- (#xF3DA #xE2CD) Err bitreich.org 70 i- (#xF3D9 #xE2CC) Err bitreich.org 70 i- (#xF3D8 #xE2CB) Err bitreich.org 70 i- (#xF3D7 #xE2CA) Err bitreich.org 70 i- (#xF3D6 #xE2C9) Err bitreich.org 70 i- (#xF3D5 #xE2C8) Err bitreich.org 70 i- (#xF3D4 #xE2C7) Err bitreich.org 70 i- (#xF3D3 #xE2C6) Err bitreich.org 70 i- (#xF3D2 #xE2C5) Err bitreich.org 70 i- (#xF3D1 #xE2C4) Err bitreich.org 70 i- (#xF3D0 #xE2C3) Err bitreich.org 70 i- (#xF3CF #xE2C2) Err bitreich.org 70 i- (#xF3CE #xE2C1) Err bitreich.org 70 i- (#xF3CD #xE2C0) Err bitreich.org 70 i- (#xF3CC #xE2BF) Err bitreich.org 70 i- (#xF3CB #xE2BE) Err bitreich.org 70 i- (#xF3CA #xE2BD) Err bitreich.org 70 i- (#xF3C9 #xE2BC) Err bitreich.org 70 i- (#xF3C8 #xE2BB) Err bitreich.org 70 i- (#xF3C7 #xE2BA) Err bitreich.org 70 i- (#xF3C6 #xE2B9) Err bitreich.org 70 i- (#xF3C5 #xE2B8) Err bitreich.org 70 i- (#xF3C4 #xE2B7) Err bitreich.org 70 i- (#xF3C3 #xE2B6) Err bitreich.org 70 i- (#xF3C2 #xE2B5) Err bitreich.org 70 i- (#xF3C1 #xE2B4) Err bitreich.org 70 i- (#xF3C0 #xE2B3) Err bitreich.org 70 i- (#xF3BF #xE2B2) Err bitreich.org 70 i- (#xF3BE #xE2B1) Err bitreich.org 70 i- (#xF3BD #xE2B0) Err bitreich.org 70 i- (#xF3BC #xE2AF) Err bitreich.org 70 i- (#xF3BB #xE2AE) Err bitreich.org 70 i- (#xF3BA #xE2AD) Err bitreich.org 70 i- (#xF3B9 #xE2AC) Err bitreich.org 70 i- (#xF3B8 #xE2AB) Err bitreich.org 70 i- (#xF3B7 #xE2AA) Err bitreich.org 70 i- (#xF3B6 #xE2A9) Err bitreich.org 70 i- (#xF3B5 #xE2A8) Err bitreich.org 70 i- (#xF3B4 #xE2A7) Err bitreich.org 70 i- (#xF3B3 #xE2A6) Err bitreich.org 70 i- (#xF3B2 #xE2A5) Err bitreich.org 70 i- (#xF3B1 #xE2A4) Err bitreich.org 70 i- (#xF3B0 #xE2A3) Err bitreich.org 70 i- (#xF3AF #xE2A2) Err bitreich.org 70 i- (#xF3AE #xE2A1) Err bitreich.org 70 i- (#xF3AD #xE2A0) Err bitreich.org 70 i- (#xF3AC #xE29F) Err bitreich.org 70 i- (#xF3AB #xE29E) Err bitreich.org 70 i- (#xF3AA #xE29D) Err bitreich.org 70 i- (#xF3A9 #xE29C) Err bitreich.org 70 i- (#xF3A8 #xE29B) Err bitreich.org 70 i- (#xF3A7 #xE29A) Err bitreich.org 70 i- (#xF3A6 #xE299) Err bitreich.org 70 i- (#xF3A5 #xE298) Err bitreich.org 70 i- (#xF3A4 #xE297) Err bitreich.org 70 i- (#xF3A3 #xE296) Err bitreich.org 70 i- (#xF3A2 #xE295) Err bitreich.org 70 i- (#xF3A1 #xE294) Err bitreich.org 70 i- (#xF3A0 #xE293) Err bitreich.org 70 i- (#xF39F #xE292) Err bitreich.org 70 i- (#xF39E #xE291) Err bitreich.org 70 i- (#xF39D #xE290) Err bitreich.org 70 i- (#xF39C #xE28F) Err bitreich.org 70 i- (#xF39B #xE28E) Err bitreich.org 70 i- (#xF39A #xE28D) Err bitreich.org 70 i- (#xF399 #xE28C) Err bitreich.org 70 i- (#xF398 #xE28B) Err bitreich.org 70 i- (#xF397 #xE28A) Err bitreich.org 70 i- (#xF396 #xE289) Err bitreich.org 70 i- (#xF395 #xE288) Err bitreich.org 70 i- (#xF394 #xE287) Err bitreich.org 70 i- (#xF393 #xE286) Err bitreich.org 70 i- (#xF392 #xE285) Err bitreich.org 70 i- (#xF391 #xE284) Err bitreich.org 70 i- (#xF390 #xE283) Err bitreich.org 70 i- (#xF38F #xE282) Err bitreich.org 70 i- (#xF38E #xE281) Err bitreich.org 70 i- (#xF38D #xE280) Err bitreich.org 70 i- (#xF38C #xE27F) Err bitreich.org 70 i- (#xF38B #xE27E) Err bitreich.org 70 i- (#xF38A #xE27D) Err bitreich.org 70 i- (#xF389 #xE27C) Err bitreich.org 70 i- (#xF388 #xE27B) Err bitreich.org 70 i- (#xF387 #xE27A) Err bitreich.org 70 i- (#xF386 #xE279) Err bitreich.org 70 i- (#xF385 #xE278) Err bitreich.org 70 i- (#xF384 #xE277) Err bitreich.org 70 i- (#xF383 #xE276) Err bitreich.org 70 i- (#xF382 #xE275) Err bitreich.org 70 i- (#xF381 #xE274) Err bitreich.org 70 i- (#xF380 #xE273) Err bitreich.org 70 i- (#xF37E #xE272) Err bitreich.org 70 i- (#xF37D #xE271) Err bitreich.org 70 i- (#xF37C #xE270) Err bitreich.org 70 i- (#xF37B #xE26F) Err bitreich.org 70 i- (#xF37A #xE26E) Err bitreich.org 70 i- (#xF379 #xE26D) Err bitreich.org 70 i- (#xF378 #xE26C) Err bitreich.org 70 i- (#xF377 #xE26B) Err bitreich.org 70 i- (#xF376 #xE26A) Err bitreich.org 70 i- (#xF375 #xE269) Err bitreich.org 70 i- (#xF374 #xE268) Err bitreich.org 70 i- (#xF373 #xE267) Err bitreich.org 70 i- (#xF372 #xE266) Err bitreich.org 70 i- (#xF371 #xE265) Err bitreich.org 70 i- (#xF370 #xE264) Err bitreich.org 70 i- (#xF36F #xE263) Err bitreich.org 70 i- (#xF36E #xE262) Err bitreich.org 70 i- (#xF36D #xE261) Err bitreich.org 70 i- (#xF36C #xE260) Err bitreich.org 70 i- (#xF36B #xE25F) Err bitreich.org 70 i- (#xF36A #xE25E) Err bitreich.org 70 i- (#xF369 #xE25D) Err bitreich.org 70 i- (#xF368 #xE25C) Err bitreich.org 70 i- (#xF367 #xE25B) Err bitreich.org 70 i- (#xF366 #xE25A) Err bitreich.org 70 i- (#xF365 #xE259) Err bitreich.org 70 i- (#xF364 #xE258) Err bitreich.org 70 i- (#xF363 #xE257) Err bitreich.org 70 i- (#xF362 #xE256) Err bitreich.org 70 i- (#xF361 #xE255) Err bitreich.org 70 i- (#xF360 #xE254) Err bitreich.org 70 i- (#xF35F #xE253) Err bitreich.org 70 i- (#xF35E #xE252) Err bitreich.org 70 i- (#xF35D #xE251) Err bitreich.org 70 i- (#xF35C #xE250) Err bitreich.org 70 i- (#xF35B #xE24F) Err bitreich.org 70 i- (#xF35A #xE24E) Err bitreich.org 70 i- (#xF359 #xE24D) Err bitreich.org 70 i- (#xF358 #xE24C) Err bitreich.org 70 i- (#xF357 #xE24B) Err bitreich.org 70 i- (#xF356 #xE24A) Err bitreich.org 70 i- (#xF355 #xE249) Err bitreich.org 70 i- (#xF354 #xE248) Err bitreich.org 70 i- (#xF353 #xE247) Err bitreich.org 70 i- (#xF352 #xE246) Err bitreich.org 70 i- (#xF351 #xE245) Err bitreich.org 70 i- (#xF350 #xE244) Err bitreich.org 70 i- (#xF34F #xE243) Err bitreich.org 70 i- (#xF34E #xE242) Err bitreich.org 70 i- (#xF34D #xE241) Err bitreich.org 70 i- (#xF34C #xE240) Err bitreich.org 70 i- (#xF34B #xE23F) Err bitreich.org 70 i- (#xF34A #xE23E) Err bitreich.org 70 i- (#xF349 #xE23D) Err bitreich.org 70 i- (#xF348 #xE23C) Err bitreich.org 70 i- (#xF347 #xE23B) Err bitreich.org 70 i- (#xF346 #xE23A) Err bitreich.org 70 i- (#xF345 #xE239) Err bitreich.org 70 i- (#xF344 #xE238) Err bitreich.org 70 i- (#xF343 #xE237) Err bitreich.org 70 i- (#xF342 #xE236) Err bitreich.org 70 i- (#xF341 #xE235) Err bitreich.org 70 i- (#xF340 #xE234) Err bitreich.org 70 i- (#xF2FC #xE233) Err bitreich.org 70 i- (#xF2FB #xE232) Err bitreich.org 70 i- (#xF2FA #xE231) Err bitreich.org 70 i- (#xF2F9 #xE230) Err bitreich.org 70 i- (#xF2F8 #xE22F) Err bitreich.org 70 i- (#xF2F7 #xE22E) Err bitreich.org 70 i- (#xF2F6 #xE22D) Err bitreich.org 70 i- (#xF2F5 #xE22C) Err bitreich.org 70 i- (#xF2F4 #xE22B) Err bitreich.org 70 i- (#xF2F3 #xE22A) Err bitreich.org 70 i- (#xF2F2 #xE229) Err bitreich.org 70 i- (#xF2F1 #xE228) Err bitreich.org 70 i- (#xF2F0 #xE227) Err bitreich.org 70 i- (#xF2EF #xE226) Err bitreich.org 70 i- (#xF2EE #xE225) Err bitreich.org 70 i- (#xF2ED #xE224) Err bitreich.org 70 i- (#xF2EC #xE223) Err bitreich.org 70 i- (#xF2EB #xE222) Err bitreich.org 70 i- (#xF2EA #xE221) Err bitreich.org 70 i- (#xF2E9 #xE220) Err bitreich.org 70 i- (#xF2E8 #xE21F) Err bitreich.org 70 i- (#xF2E7 #xE21E) Err bitreich.org 70 i- (#xF2E6 #xE21D) Err bitreich.org 70 i- (#xF2E5 #xE21C) Err bitreich.org 70 i- (#xF2E4 #xE21B) Err bitreich.org 70 i- (#xF2E3 #xE21A) Err bitreich.org 70 i- (#xF2E2 #xE219) Err bitreich.org 70 i- (#xF2E1 #xE218) Err bitreich.org 70 i- (#xF2E0 #xE217) Err bitreich.org 70 i- (#xF2DF #xE216) Err bitreich.org 70 i- (#xF2DE #xE215) Err bitreich.org 70 i- (#xF2DD #xE214) Err bitreich.org 70 i- (#xF2DC #xE213) Err bitreich.org 70 i- (#xF2DB #xE212) Err bitreich.org 70 i- (#xF2DA #xE211) Err bitreich.org 70 i- (#xF2D9 #xE210) Err bitreich.org 70 i- (#xF2D8 #xE20F) Err bitreich.org 70 i- (#xF2D7 #xE20E) Err bitreich.org 70 i- (#xF2D6 #xE20D) Err bitreich.org 70 i- (#xF2D5 #xE20C) Err bitreich.org 70 i- (#xF2D4 #xE20B) Err bitreich.org 70 i- (#xF2D3 #xE20A) Err bitreich.org 70 i- (#xF2D2 #xE209) Err bitreich.org 70 i- (#xF2D1 #xE208) Err bitreich.org 70 i- (#xF2D0 #xE207) Err bitreich.org 70 i- (#xF2CF #xE206) Err bitreich.org 70 i- (#xF2CE #xE205) Err bitreich.org 70 i- (#xF2CD #xE204) Err bitreich.org 70 i- (#xF2CC #xE203) Err bitreich.org 70 i- (#xF2CB #xE202) Err bitreich.org 70 i- (#xF2CA #xE201) Err bitreich.org 70 i- (#xF2C9 #xE200) Err bitreich.org 70 i- (#xF2C8 #xE1FF) Err bitreich.org 70 i- (#xF2C7 #xE1FE) Err bitreich.org 70 i- (#xF2C6 #xE1FD) Err bitreich.org 70 i- (#xF2C5 #xE1FC) Err bitreich.org 70 i- (#xF2C4 #xE1FB) Err bitreich.org 70 i- (#xF2C3 #xE1FA) Err bitreich.org 70 i- (#xF2C2 #xE1F9) Err bitreich.org 70 i- (#xF2C1 #xE1F8) Err bitreich.org 70 i- (#xF2C0 #xE1F7) Err bitreich.org 70 i- (#xF2BF #xE1F6) Err bitreich.org 70 i- (#xF2BE #xE1F5) Err bitreich.org 70 i- (#xF2BD #xE1F4) Err bitreich.org 70 i- (#xF2BC #xE1F3) Err bitreich.org 70 i- (#xF2BB #xE1F2) Err bitreich.org 70 i- (#xF2BA #xE1F1) Err bitreich.org 70 i- (#xF2B9 #xE1F0) Err bitreich.org 70 i- (#xF2B8 #xE1EF) Err bitreich.org 70 i- (#xF2B7 #xE1EE) Err bitreich.org 70 i- (#xF2B6 #xE1ED) Err bitreich.org 70 i- (#xF2B5 #xE1EC) Err bitreich.org 70 i- (#xF2B4 #xE1EB) Err bitreich.org 70 i- (#xF2B3 #xE1EA) Err bitreich.org 70 i- (#xF2B2 #xE1E9) Err bitreich.org 70 i- (#xF2B1 #xE1E8) Err bitreich.org 70 i- (#xF2B0 #xE1E7) Err bitreich.org 70 i- (#xF2AF #xE1E6) Err bitreich.org 70 i- (#xF2AE #xE1E5) Err bitreich.org 70 i- (#xF2AD #xE1E4) Err bitreich.org 70 i- (#xF2AC #xE1E3) Err bitreich.org 70 i- (#xF2AB #xE1E2) Err bitreich.org 70 i- (#xF2AA #xE1E1) Err bitreich.org 70 i- (#xF2A9 #xE1E0) Err bitreich.org 70 i- (#xF2A8 #xE1DF) Err bitreich.org 70 i- (#xF2A7 #xE1DE) Err bitreich.org 70 i- (#xF2A6 #xE1DD) Err bitreich.org 70 i- (#xF2A5 #xE1DC) Err bitreich.org 70 i- (#xF2A4 #xE1DB) Err bitreich.org 70 i- (#xF2A3 #xE1DA) Err bitreich.org 70 i- (#xF2A2 #xE1D9) Err bitreich.org 70 i- (#xF2A1 #xE1D8) Err bitreich.org 70 i- (#xF2A0 #xE1D7) Err bitreich.org 70 i- (#xF29F #xE1D6) Err bitreich.org 70 i- (#xF29E #xE1D5) Err bitreich.org 70 i- (#xF29D #xE1D4) Err bitreich.org 70 i- (#xF29C #xE1D3) Err bitreich.org 70 i- (#xF29B #xE1D2) Err bitreich.org 70 i- (#xF29A #xE1D1) Err bitreich.org 70 i- (#xF299 #xE1D0) Err bitreich.org 70 i- (#xF298 #xE1CF) Err bitreich.org 70 i- (#xF297 #xE1CE) Err bitreich.org 70 i- (#xF296 #xE1CD) Err bitreich.org 70 i- (#xF295 #xE1CC) Err bitreich.org 70 i- (#xF294 #xE1CB) Err bitreich.org 70 i- (#xF293 #xE1CA) Err bitreich.org 70 i- (#xF292 #xE1C9) Err bitreich.org 70 i- (#xF291 #xE1C8) Err bitreich.org 70 i- (#xF290 #xE1C7) Err bitreich.org 70 i- (#xF28F #xE1C6) Err bitreich.org 70 i- (#xF28E #xE1C5) Err bitreich.org 70 i- (#xF28D #xE1C4) Err bitreich.org 70 i- (#xF28C #xE1C3) Err bitreich.org 70 i- (#xF28B #xE1C2) Err bitreich.org 70 i- (#xF28A #xE1C1) Err bitreich.org 70 i- (#xF289 #xE1C0) Err bitreich.org 70 i- (#xF288 #xE1BF) Err bitreich.org 70 i- (#xF287 #xE1BE) Err bitreich.org 70 i- (#xF286 #xE1BD) Err bitreich.org 70 i- (#xF285 #xE1BC) Err bitreich.org 70 i- (#xF284 #xE1BB) Err bitreich.org 70 i- (#xF283 #xE1BA) Err bitreich.org 70 i- (#xF282 #xE1B9) Err bitreich.org 70 i- (#xF281 #xE1B8) Err bitreich.org 70 i- (#xF280 #xE1B7) Err bitreich.org 70 i- (#xF27E #xE1B6) Err bitreich.org 70 i- (#xF27D #xE1B5) Err bitreich.org 70 i- (#xF27C #xE1B4) Err bitreich.org 70 i- (#xF27B #xE1B3) Err bitreich.org 70 i- (#xF27A #xE1B2) Err bitreich.org 70 i- (#xF279 #xE1B1) Err bitreich.org 70 i- (#xF278 #xE1B0) Err bitreich.org 70 i- (#xF277 #xE1AF) Err bitreich.org 70 i- (#xF276 #xE1AE) Err bitreich.org 70 i- (#xF275 #xE1AD) Err bitreich.org 70 i- (#xF274 #xE1AC) Err bitreich.org 70 i- (#xF273 #xE1AB) Err bitreich.org 70 i- (#xF272 #xE1AA) Err bitreich.org 70 i- (#xF271 #xE1A9) Err bitreich.org 70 i- (#xF270 #xE1A8) Err bitreich.org 70 i- (#xF26F #xE1A7) Err bitreich.org 70 i- (#xF26E #xE1A6) Err bitreich.org 70 i- (#xF26D #xE1A5) Err bitreich.org 70 i- (#xF26C #xE1A4) Err bitreich.org 70 i- (#xF26B #xE1A3) Err bitreich.org 70 i- (#xF26A #xE1A2) Err bitreich.org 70 i- (#xF269 #xE1A1) Err bitreich.org 70 i- (#xF268 #xE1A0) Err bitreich.org 70 i- (#xF267 #xE19F) Err bitreich.org 70 i- (#xF266 #xE19E) Err bitreich.org 70 i- (#xF265 #xE19D) Err bitreich.org 70 i- (#xF264 #xE19C) Err bitreich.org 70 i- (#xF263 #xE19B) Err bitreich.org 70 i- (#xF262 #xE19A) Err bitreich.org 70 i- (#xF261 #xE199) Err bitreich.org 70 i- (#xF260 #xE198) Err bitreich.org 70 i- (#xF25F #xE197) Err bitreich.org 70 i- (#xF25E #xE196) Err bitreich.org 70 i- (#xF25D #xE195) Err bitreich.org 70 i- (#xF25C #xE194) Err bitreich.org 70 i- (#xF25B #xE193) Err bitreich.org 70 i- (#xF25A #xE192) Err bitreich.org 70 i- (#xF259 #xE191) Err bitreich.org 70 i- (#xF258 #xE190) Err bitreich.org 70 i- (#xF257 #xE18F) Err bitreich.org 70 i- (#xF256 #xE18E) Err bitreich.org 70 i- (#xF255 #xE18D) Err bitreich.org 70 i- (#xF254 #xE18C) Err bitreich.org 70 i- (#xF253 #xE18B) Err bitreich.org 70 i- (#xF252 #xE18A) Err bitreich.org 70 i- (#xF251 #xE189) Err bitreich.org 70 i- (#xF250 #xE188) Err bitreich.org 70 i- (#xF24F #xE187) Err bitreich.org 70 i- (#xF24E #xE186) Err bitreich.org 70 i- (#xF24D #xE185) Err bitreich.org 70 i- (#xF24C #xE184) Err bitreich.org 70 i- (#xF24B #xE183) Err bitreich.org 70 i- (#xF24A #xE182) Err bitreich.org 70 i- (#xF249 #xE181) Err bitreich.org 70 i- (#xF248 #xE180) Err bitreich.org 70 i- (#xF247 #xE17F) Err bitreich.org 70 i- (#xF246 #xE17E) Err bitreich.org 70 i- (#xF245 #xE17D) Err bitreich.org 70 i- (#xF244 #xE17C) Err bitreich.org 70 i- (#xF243 #xE17B) Err bitreich.org 70 i- (#xF242 #xE17A) Err bitreich.org 70 i- (#xF241 #xE179) Err bitreich.org 70 i- (#xF240 #xE178) Err bitreich.org 70 i- (#xF1FC #xE177) Err bitreich.org 70 i- (#xF1FB #xE176) Err bitreich.org 70 i- (#xF1FA #xE175) Err bitreich.org 70 i- (#xF1F9 #xE174) Err bitreich.org 70 i- (#xF1F8 #xE173) Err bitreich.org 70 i- (#xF1F7 #xE172) Err bitreich.org 70 i- (#xF1F6 #xE171) Err bitreich.org 70 i- (#xF1F5 #xE170) Err bitreich.org 70 i- (#xF1F4 #xE16F) Err bitreich.org 70 i- (#xF1F3 #xE16E) Err bitreich.org 70 i- (#xF1F2 #xE16D) Err bitreich.org 70 i- (#xF1F1 #xE16C) Err bitreich.org 70 i- (#xF1F0 #xE16B) Err bitreich.org 70 i- (#xF1EF #xE16A) Err bitreich.org 70 i- (#xF1EE #xE169) Err bitreich.org 70 i- (#xF1ED #xE168) Err bitreich.org 70 i- (#xF1EC #xE167) Err bitreich.org 70 i- (#xF1EB #xE166) Err bitreich.org 70 i- (#xF1EA #xE165) Err bitreich.org 70 i- (#xF1E9 #xE164) Err bitreich.org 70 i- (#xF1E8 #xE163) Err bitreich.org 70 i- (#xF1E7 #xE162) Err bitreich.org 70 i- (#xF1E6 #xE161) Err bitreich.org 70 i- (#xF1E5 #xE160) Err bitreich.org 70 i- (#xF1E4 #xE15F) Err bitreich.org 70 i- (#xF1E3 #xE15E) Err bitreich.org 70 i- (#xF1E2 #xE15D) Err bitreich.org 70 i- (#xF1E1 #xE15C) Err bitreich.org 70 i- (#xF1E0 #xE15B) Err bitreich.org 70 i- (#xF1DF #xE15A) Err bitreich.org 70 i- (#xF1DE #xE159) Err bitreich.org 70 i- (#xF1DD #xE158) Err bitreich.org 70 i- (#xF1DC #xE157) Err bitreich.org 70 i- (#xF1DB #xE156) Err bitreich.org 70 i- (#xF1DA #xE155) Err bitreich.org 70 i- (#xF1D9 #xE154) Err bitreich.org 70 i- (#xF1D8 #xE153) Err bitreich.org 70 i- (#xF1D7 #xE152) Err bitreich.org 70 i- (#xF1D6 #xE151) Err bitreich.org 70 i- (#xF1D5 #xE150) Err bitreich.org 70 i- (#xF1D4 #xE14F) Err bitreich.org 70 i- (#xF1D3 #xE14E) Err bitreich.org 70 i- (#xF1D2 #xE14D) Err bitreich.org 70 i- (#xF1D1 #xE14C) Err bitreich.org 70 i- (#xF1D0 #xE14B) Err bitreich.org 70 i- (#xF1CF #xE14A) Err bitreich.org 70 i- (#xF1CE #xE149) Err bitreich.org 70 i- (#xF1CD #xE148) Err bitreich.org 70 i- (#xF1CC #xE147) Err bitreich.org 70 i- (#xF1CB #xE146) Err bitreich.org 70 i- (#xF1CA #xE145) Err bitreich.org 70 i- (#xF1C9 #xE144) Err bitreich.org 70 i- (#xF1C8 #xE143) Err bitreich.org 70 i- (#xF1C7 #xE142) Err bitreich.org 70 i- (#xF1C6 #xE141) Err bitreich.org 70 i- (#xF1C5 #xE140) Err bitreich.org 70 i- (#xF1C4 #xE13F) Err bitreich.org 70 i- (#xF1C3 #xE13E) Err bitreich.org 70 i- (#xF1C2 #xE13D) Err bitreich.org 70 i- (#xF1C1 #xE13C) Err bitreich.org 70 i- (#xF1C0 #xE13B) Err bitreich.org 70 i- (#xF1BF #xE13A) Err bitreich.org 70 i- (#xF1BE #xE139) Err bitreich.org 70 i- (#xF1BD #xE138) Err bitreich.org 70 i- (#xF1BC #xE137) Err bitreich.org 70 i- (#xF1BB #xE136) Err bitreich.org 70 i- (#xF1BA #xE135) Err bitreich.org 70 i- (#xF1B9 #xE134) Err bitreich.org 70 i- (#xF1B8 #xE133) Err bitreich.org 70 i- (#xF1B7 #xE132) Err bitreich.org 70 i- (#xF1B6 #xE131) Err bitreich.org 70 i- (#xF1B5 #xE130) Err bitreich.org 70 i- (#xF1B4 #xE12F) Err bitreich.org 70 i- (#xF1B3 #xE12E) Err bitreich.org 70 i- (#xF1B2 #xE12D) Err bitreich.org 70 i- (#xF1B1 #xE12C) Err bitreich.org 70 i- (#xF1B0 #xE12B) Err bitreich.org 70 i- (#xF1AF #xE12A) Err bitreich.org 70 i- (#xF1AE #xE129) Err bitreich.org 70 i- (#xF1AD #xE128) Err bitreich.org 70 i- (#xF1AC #xE127) Err bitreich.org 70 i- (#xF1AB #xE126) Err bitreich.org 70 i- (#xF1AA #xE125) Err bitreich.org 70 i- (#xF1A9 #xE124) Err bitreich.org 70 i- (#xF1A8 #xE123) Err bitreich.org 70 i- (#xF1A7 #xE122) Err bitreich.org 70 i- (#xF1A6 #xE121) Err bitreich.org 70 i- (#xF1A5 #xE120) Err bitreich.org 70 i- (#xF1A4 #xE11F) Err bitreich.org 70 i- (#xF1A3 #xE11E) Err bitreich.org 70 i- (#xF1A2 #xE11D) Err bitreich.org 70 i- (#xF1A1 #xE11C) Err bitreich.org 70 i- (#xF1A0 #xE11B) Err bitreich.org 70 i- (#xF19F #xE11A) Err bitreich.org 70 i- (#xF19E #xE119) Err bitreich.org 70 i- (#xF19D #xE118) Err bitreich.org 70 i- (#xF19C #xE117) Err bitreich.org 70 i- (#xF19B #xE116) Err bitreich.org 70 i- (#xF19A #xE115) Err bitreich.org 70 i- (#xF199 #xE114) Err bitreich.org 70 i- (#xF198 #xE113) Err bitreich.org 70 i- (#xF197 #xE112) Err bitreich.org 70 i- (#xF196 #xE111) Err bitreich.org 70 i- (#xF195 #xE110) Err bitreich.org 70 i- (#xF194 #xE10F) Err bitreich.org 70 i- (#xF193 #xE10E) Err bitreich.org 70 i- (#xF192 #xE10D) Err bitreich.org 70 i- (#xF191 #xE10C) Err bitreich.org 70 i- (#xF190 #xE10B) Err bitreich.org 70 i- (#xF18F #xE10A) Err bitreich.org 70 i- (#xF18E #xE109) Err bitreich.org 70 i- (#xF18D #xE108) Err bitreich.org 70 i- (#xF18C #xE107) Err bitreich.org 70 i- (#xF18B #xE106) Err bitreich.org 70 i- (#xF18A #xE105) Err bitreich.org 70 i- (#xF189 #xE104) Err bitreich.org 70 i- (#xF188 #xE103) Err bitreich.org 70 i- (#xF187 #xE102) Err bitreich.org 70 i- (#xF186 #xE101) Err bitreich.org 70 i- (#xF185 #xE100) Err bitreich.org 70 i- (#xF184 #xE0FF) Err bitreich.org 70 i- (#xF183 #xE0FE) Err bitreich.org 70 i- (#xF182 #xE0FD) Err bitreich.org 70 i- (#xF181 #xE0FC) Err bitreich.org 70 i- (#xF180 #xE0FB) Err bitreich.org 70 i- (#xF17E #xE0FA) Err bitreich.org 70 i- (#xF17D #xE0F9) Err bitreich.org 70 i- (#xF17C #xE0F8) Err bitreich.org 70 i- (#xF17B #xE0F7) Err bitreich.org 70 i- (#xF17A #xE0F6) Err bitreich.org 70 i- (#xF179 #xE0F5) Err bitreich.org 70 i- (#xF178 #xE0F4) Err bitreich.org 70 i- (#xF177 #xE0F3) Err bitreich.org 70 i- (#xF176 #xE0F2) Err bitreich.org 70 i- (#xF175 #xE0F1) Err bitreich.org 70 i- (#xF174 #xE0F0) Err bitreich.org 70 i- (#xF173 #xE0EF) Err bitreich.org 70 i- (#xF172 #xE0EE) Err bitreich.org 70 i- (#xF171 #xE0ED) Err bitreich.org 70 i- (#xF170 #xE0EC) Err bitreich.org 70 i- (#xF16F #xE0EB) Err bitreich.org 70 i- (#xF16E #xE0EA) Err bitreich.org 70 i- (#xF16D #xE0E9) Err bitreich.org 70 i- (#xF16C #xE0E8) Err bitreich.org 70 i- (#xF16B #xE0E7) Err bitreich.org 70 i- (#xF16A #xE0E6) Err bitreich.org 70 i- (#xF169 #xE0E5) Err bitreich.org 70 i- (#xF168 #xE0E4) Err bitreich.org 70 i- (#xF167 #xE0E3) Err bitreich.org 70 i- (#xF166 #xE0E2) Err bitreich.org 70 i- (#xF165 #xE0E1) Err bitreich.org 70 i- (#xF164 #xE0E0) Err bitreich.org 70 i- (#xF163 #xE0DF) Err bitreich.org 70 i- (#xF162 #xE0DE) Err bitreich.org 70 i- (#xF161 #xE0DD) Err bitreich.org 70 i- (#xF160 #xE0DC) Err bitreich.org 70 i- (#xF15F #xE0DB) Err bitreich.org 70 i- (#xF15E #xE0DA) Err bitreich.org 70 i- (#xF15D #xE0D9) Err bitreich.org 70 i- (#xF15C #xE0D8) Err bitreich.org 70 i- (#xF15B #xE0D7) Err bitreich.org 70 i- (#xF15A #xE0D6) Err bitreich.org 70 i- (#xF159 #xE0D5) Err bitreich.org 70 i- (#xF158 #xE0D4) Err bitreich.org 70 i- (#xF157 #xE0D3) Err bitreich.org 70 i- (#xF156 #xE0D2) Err bitreich.org 70 i- (#xF155 #xE0D1) Err bitreich.org 70 i- (#xF154 #xE0D0) Err bitreich.org 70 i- (#xF153 #xE0CF) Err bitreich.org 70 i- (#xF152 #xE0CE) Err bitreich.org 70 i- (#xF151 #xE0CD) Err bitreich.org 70 i- (#xF150 #xE0CC) Err bitreich.org 70 i- (#xF14F #xE0CB) Err bitreich.org 70 i- (#xF14E #xE0CA) Err bitreich.org 70 i- (#xF14D #xE0C9) Err bitreich.org 70 i- (#xF14C #xE0C8) Err bitreich.org 70 i- (#xF14B #xE0C7) Err bitreich.org 70 i- (#xF14A #xE0C6) Err bitreich.org 70 i- (#xF149 #xE0C5) Err bitreich.org 70 i- (#xF148 #xE0C4) Err bitreich.org 70 i- (#xF147 #xE0C3) Err bitreich.org 70 i- (#xF146 #xE0C2) Err bitreich.org 70 i- (#xF145 #xE0C1) Err bitreich.org 70 i- (#xF144 #xE0C0) Err bitreich.org 70 i- (#xF143 #xE0BF) Err bitreich.org 70 i- (#xF142 #xE0BE) Err bitreich.org 70 i- (#xF141 #xE0BD) Err bitreich.org 70 i- (#xF140 #xE0BC) Err bitreich.org 70 i- (#xF0FC #xE0BB) Err bitreich.org 70 i- (#xF0FB #xE0BA) Err bitreich.org 70 i- (#xF0FA #xE0B9) Err bitreich.org 70 i- (#xF0F9 #xE0B8) Err bitreich.org 70 i- (#xF0F8 #xE0B7) Err bitreich.org 70 i- (#xF0F7 #xE0B6) Err bitreich.org 70 i- (#xF0F6 #xE0B5) Err bitreich.org 70 i- (#xF0F5 #xE0B4) Err bitreich.org 70 i- (#xF0F4 #xE0B3) Err bitreich.org 70 i- (#xF0F3 #xE0B2) Err bitreich.org 70 i- (#xF0F2 #xE0B1) Err bitreich.org 70 i- (#xF0F1 #xE0B0) Err bitreich.org 70 i- (#xF0F0 #xE0AF) Err bitreich.org 70 i- (#xF0EF #xE0AE) Err bitreich.org 70 i- (#xF0EE #xE0AD) Err bitreich.org 70 i- (#xF0ED #xE0AC) Err bitreich.org 70 i- (#xF0EC #xE0AB) Err bitreich.org 70 i- (#xF0EB #xE0AA) Err bitreich.org 70 i- (#xF0EA #xE0A9) Err bitreich.org 70 i- (#xF0E9 #xE0A8) Err bitreich.org 70 i- (#xF0E8 #xE0A7) Err bitreich.org 70 i- (#xF0E7 #xE0A6) Err bitreich.org 70 i- (#xF0E6 #xE0A5) Err bitreich.org 70 i- (#xF0E5 #xE0A4) Err bitreich.org 70 i- (#xF0E4 #xE0A3) Err bitreich.org 70 i- (#xF0E3 #xE0A2) Err bitreich.org 70 i- (#xF0E2 #xE0A1) Err bitreich.org 70 i- (#xF0E1 #xE0A0) Err bitreich.org 70 i- (#xF0E0 #xE09F) Err bitreich.org 70 i- (#xF0DF #xE09E) Err bitreich.org 70 i- (#xF0DE #xE09D) Err bitreich.org 70 i- (#xF0DD #xE09C) Err bitreich.org 70 i- (#xF0DC #xE09B) Err bitreich.org 70 i- (#xF0DB #xE09A) Err bitreich.org 70 i- (#xF0DA #xE099) Err bitreich.org 70 i- (#xF0D9 #xE098) Err bitreich.org 70 i- (#xF0D8 #xE097) Err bitreich.org 70 i- (#xF0D7 #xE096) Err bitreich.org 70 i- (#xF0D6 #xE095) Err bitreich.org 70 i- (#xF0D5 #xE094) Err bitreich.org 70 i- (#xF0D4 #xE093) Err bitreich.org 70 i- (#xF0D3 #xE092) Err bitreich.org 70 i- (#xF0D2 #xE091) Err bitreich.org 70 i- (#xF0D1 #xE090) Err bitreich.org 70 i- (#xF0D0 #xE08F) Err bitreich.org 70 i- (#xF0CF #xE08E) Err bitreich.org 70 i- (#xF0CE #xE08D) Err bitreich.org 70 i- (#xF0CD #xE08C) Err bitreich.org 70 i- (#xF0CC #xE08B) Err bitreich.org 70 i- (#xF0CB #xE08A) Err bitreich.org 70 i- (#xF0CA #xE089) Err bitreich.org 70 i- (#xF0C9 #xE088) Err bitreich.org 70 i- (#xF0C8 #xE087) Err bitreich.org 70 i- (#xF0C7 #xE086) Err bitreich.org 70 i- (#xF0C6 #xE085) Err bitreich.org 70 i- (#xF0C5 #xE084) Err bitreich.org 70 i- (#xF0C4 #xE083) Err bitreich.org 70 i- (#xF0C3 #xE082) Err bitreich.org 70 i- (#xF0C2 #xE081) Err bitreich.org 70 i- (#xF0C1 #xE080) Err bitreich.org 70 i- (#xF0C0 #xE07F) Err bitreich.org 70 i- (#xF0BF #xE07E) Err bitreich.org 70 i- (#xF0BE #xE07D) Err bitreich.org 70 i- (#xF0BD #xE07C) Err bitreich.org 70 i- (#xF0BC #xE07B) Err bitreich.org 70 i- (#xF0BB #xE07A) Err bitreich.org 70 i- (#xF0BA #xE079) Err bitreich.org 70 i- (#xF0B9 #xE078) Err bitreich.org 70 i- (#xF0B8 #xE077) Err bitreich.org 70 i- (#xF0B7 #xE076) Err bitreich.org 70 i- (#xF0B6 #xE075) Err bitreich.org 70 i- (#xF0B5 #xE074) Err bitreich.org 70 i- (#xF0B4 #xE073) Err bitreich.org 70 i- (#xF0B3 #xE072) Err bitreich.org 70 i- (#xF0B2 #xE071) Err bitreich.org 70 i- (#xF0B1 #xE070) Err bitreich.org 70 i- (#xF0B0 #xE06F) Err bitreich.org 70 i- (#xF0AF #xE06E) Err bitreich.org 70 i- (#xF0AE #xE06D) Err bitreich.org 70 i- (#xF0AD #xE06C) Err bitreich.org 70 i- (#xF0AC #xE06B) Err bitreich.org 70 i- (#xF0AB #xE06A) Err bitreich.org 70 i- (#xF0AA #xE069) Err bitreich.org 70 i- (#xF0A9 #xE068) Err bitreich.org 70 i- (#xF0A8 #xE067) Err bitreich.org 70 i- (#xF0A7 #xE066) Err bitreich.org 70 i- (#xF0A6 #xE065) Err bitreich.org 70 i- (#xF0A5 #xE064) Err bitreich.org 70 i- (#xF0A4 #xE063) Err bitreich.org 70 i- (#xF0A3 #xE062) Err bitreich.org 70 i- (#xF0A2 #xE061) Err bitreich.org 70 i- (#xF0A1 #xE060) Err bitreich.org 70 i- (#xF0A0 #xE05F) Err bitreich.org 70 i- (#xF09F #xE05E) Err bitreich.org 70 i- (#xF09E #xE05D) Err bitreich.org 70 i- (#xF09D #xE05C) Err bitreich.org 70 i- (#xF09C #xE05B) Err bitreich.org 70 i- (#xF09B #xE05A) Err bitreich.org 70 i- (#xF09A #xE059) Err bitreich.org 70 i- (#xF099 #xE058) Err bitreich.org 70 i- (#xF098 #xE057) Err bitreich.org 70 i- (#xF097 #xE056) Err bitreich.org 70 i- (#xF096 #xE055) Err bitreich.org 70 i- (#xF095 #xE054) Err bitreich.org 70 i- (#xF094 #xE053) Err bitreich.org 70 i- (#xF093 #xE052) Err bitreich.org 70 i- (#xF092 #xE051) Err bitreich.org 70 i- (#xF091 #xE050) Err bitreich.org 70 i- (#xF090 #xE04F) Err bitreich.org 70 i- (#xF08F #xE04E) Err bitreich.org 70 i- (#xF08E #xE04D) Err bitreich.org 70 i- (#xF08D #xE04C) Err bitreich.org 70 i- (#xF08C #xE04B) Err bitreich.org 70 i- (#xF08B #xE04A) Err bitreich.org 70 i- (#xF08A #xE049) Err bitreich.org 70 i- (#xF089 #xE048) Err bitreich.org 70 i- (#xF088 #xE047) Err bitreich.org 70 i- (#xF087 #xE046) Err bitreich.org 70 i- (#xF086 #xE045) Err bitreich.org 70 i- (#xF085 #xE044) Err bitreich.org 70 i- (#xF084 #xE043) Err bitreich.org 70 i- (#xF083 #xE042) Err bitreich.org 70 i- (#xF082 #xE041) Err bitreich.org 70 i- (#xF081 #xE040) Err bitreich.org 70 i- (#xF080 #xE03F) Err bitreich.org 70 i- (#xF07E #xE03E) Err bitreich.org 70 i- (#xF07D #xE03D) Err bitreich.org 70 i- (#xF07C #xE03C) Err bitreich.org 70 i- (#xF07B #xE03B) Err bitreich.org 70 i- (#xF07A #xE03A) Err bitreich.org 70 i- (#xF079 #xE039) Err bitreich.org 70 i- (#xF078 #xE038) Err bitreich.org 70 i- (#xF077 #xE037) Err bitreich.org 70 i- (#xF076 #xE036) Err bitreich.org 70 i- (#xF075 #xE035) Err bitreich.org 70 i- (#xF074 #xE034) Err bitreich.org 70 i- (#xF073 #xE033) Err bitreich.org 70 i- (#xF072 #xE032) Err bitreich.org 70 i- (#xF071 #xE031) Err bitreich.org 70 i- (#xF070 #xE030) Err bitreich.org 70 i- (#xF06F #xE02F) Err bitreich.org 70 i- (#xF06E #xE02E) Err bitreich.org 70 i- (#xF06D #xE02D) Err bitreich.org 70 i- (#xF06C #xE02C) Err bitreich.org 70 i- (#xF06B #xE02B) Err bitreich.org 70 i- (#xF06A #xE02A) Err bitreich.org 70 i- (#xF069 #xE029) Err bitreich.org 70 i- (#xF068 #xE028) Err bitreich.org 70 i- (#xF067 #xE027) Err bitreich.org 70 i- (#xF066 #xE026) Err bitreich.org 70 i- (#xF065 #xE025) Err bitreich.org 70 i- (#xF064 #xE024) Err bitreich.org 70 i- (#xF063 #xE023) Err bitreich.org 70 i- (#xF062 #xE022) Err bitreich.org 70 i- (#xF061 #xE021) Err bitreich.org 70 i- (#xF060 #xE020) Err bitreich.org 70 i- (#xF05F #xE01F) Err bitreich.org 70 i- (#xF05E #xE01E) Err bitreich.org 70 i- (#xF05D #xE01D) Err bitreich.org 70 i- (#xF05C #xE01C) Err bitreich.org 70 i- (#xF05B #xE01B) Err bitreich.org 70 i- (#xF05A #xE01A) Err bitreich.org 70 i- (#xF059 #xE019) Err bitreich.org 70 i- (#xF058 #xE018) Err bitreich.org 70 i- (#xF057 #xE017) Err bitreich.org 70 i- (#xF056 #xE016) Err bitreich.org 70 i- (#xF055 #xE015) Err bitreich.org 70 i- (#xF054 #xE014) Err bitreich.org 70 i- (#xF053 #xE013) Err bitreich.org 70 i- (#xF052 #xE012) Err bitreich.org 70 i- (#xF051 #xE011) Err bitreich.org 70 i- (#xF050 #xE010) Err bitreich.org 70 i- (#xF04F #xE00F) Err bitreich.org 70 i- (#xF04E #xE00E) Err bitreich.org 70 i- (#xF04D #xE00D) Err bitreich.org 70 i- (#xF04C #xE00C) Err bitreich.org 70 i- (#xF04B #xE00B) Err bitreich.org 70 i- (#xF04A #xE00A) Err bitreich.org 70 i- (#xF049 #xE009) Err bitreich.org 70 i- (#xF048 #xE008) Err bitreich.org 70 i- (#xF047 #xE007) Err bitreich.org 70 i- (#xF046 #xE006) Err bitreich.org 70 i- (#xF045 #xE005) Err bitreich.org 70 i- (#xF044 #xE004) Err bitreich.org 70 i- (#xF043 #xE003) Err bitreich.org 70 i- (#xF042 #xE002) Err bitreich.org 70 i- (#xF041 #xE001) Err bitreich.org 70 i- (#xF040 #xE000) Err bitreich.org 70 i- (#xEEFC #xFF02) Err bitreich.org 70 i- (#xEEFB #xFF07) Err bitreich.org 70 i- (#xEEFA #xFFE4) Err bitreich.org 70 i- (#xEEF9 #xFFE2) Err bitreich.org 70 i- (#xEEF8 #x2179) Err bitreich.org 70 i- (#xEEF7 #x2178) Err bitreich.org 70 i- (#xEEF6 #x2177) Err bitreich.org 70 i- (#xEEF5 #x2176) Err bitreich.org 70 i- (#xEEF4 #x2175) Err bitreich.org 70 i- (#xEEF3 #x2174) Err bitreich.org 70 i- (#xEEF2 #x2173) Err bitreich.org 70 i- (#xEEF1 #x2172) Err bitreich.org 70 i- (#xEEF0 #x2171) Err bitreich.org 70 i- (#xEEEF #x2170) Err bitreich.org 70 i- (#xEEEC #x9ED1) Err bitreich.org 70 i- (#xEEEB #x9E19) Err bitreich.org 70 i- (#xEEEA #xFA2D) Err bitreich.org 70 i- (#xEEE9 #x9D6B) Err bitreich.org 70 i- (#xEEE8 #x9D70) Err bitreich.org 70 i- (#xEEE7 #x9C00) Err bitreich.org 70 i- (#xEEE6 #x9BBB) Err bitreich.org 70 i- (#xEEE5 #x9BB1) Err bitreich.org 70 i- (#xEEE4 #x9B8F) Err bitreich.org 70 i- (#xEEE3 #x9B72) Err bitreich.org 70 i- (#xEEE2 #x9B75) Err bitreich.org 70 i- (#xEEE1 #x9ADC) Err bitreich.org 70 i- (#xEEE0 #x9AD9) Err bitreich.org 70 i- (#xEEDF #x9A4E) Err bitreich.org 70 i- (#xEEDE #x999E) Err bitreich.org 70 i- (#xEEDD #xFA2C) Err bitreich.org 70 i- (#xEEDC #x9927) Err bitreich.org 70 i- (#xEEDB #xFA2B) Err bitreich.org 70 i- (#xEEDA #xFA2A) Err bitreich.org 70 i- (#xEED9 #x9865) Err bitreich.org 70 i- (#xEED8 #x9857) Err bitreich.org 70 i- (#xEED7 #x9755) Err bitreich.org 70 i- (#xEED6 #x9751) Err bitreich.org 70 i- (#xEED5 #x974F) Err bitreich.org 70 i- (#xEED4 #x974D) Err bitreich.org 70 i- (#xEED3 #x9743) Err bitreich.org 70 i- (#xEED2 #x973B) Err bitreich.org 70 i- (#xEED1 #x9733) Err bitreich.org 70 i- (#xEED0 #x96AF) Err bitreich.org 70 i- (#xEECF #x969D) Err bitreich.org 70 i- (#xEECE #xFA29) Err bitreich.org 70 i- (#xEECD #xF9DC) Err bitreich.org 70 i- (#xEECC #x9592) Err bitreich.org 70 i- (#xEECB #x9448) Err bitreich.org 70 i- (#xEECA #x9445) Err bitreich.org 70 i- (#xEEC9 #x9431) Err bitreich.org 70 i- (#xEEC8 #x93F8) Err bitreich.org 70 i- (#xEEC7 #x93DE) Err bitreich.org 70 i- (#xEEC6 #x93C6) Err bitreich.org 70 i- (#xEEC5 #x93A4) Err bitreich.org 70 i- (#xEEC4 #x9357) Err bitreich.org 70 i- (#xEEC3 #x9370) Err bitreich.org 70 i- (#xEEC2 #x9302) Err bitreich.org 70 i- (#xEEC1 #x931D) Err bitreich.org 70 i- (#xEEC0 #x92FF) Err bitreich.org 70 i- (#xEEBF #x931E) Err bitreich.org 70 i- (#xEEBE #xFA28) Err bitreich.org 70 i- (#xEEBD #x92FB) Err bitreich.org 70 i- (#xEEBC #x9321) Err bitreich.org 70 i- (#xEEBB #x9325) Err bitreich.org 70 i- (#xEEBA #x92D3) Err bitreich.org 70 i- (#xEEB9 #x92E0) Err bitreich.org 70 i- (#xEEB8 #x92D5) Err bitreich.org 70 i- (#xEEB7 #xFA27) Err bitreich.org 70 i- (#xEEB6 #x92D0) Err bitreich.org 70 i- (#xEEB5 #x92D9) Err bitreich.org 70 i- (#xEEB4 #x92D7) Err bitreich.org 70 i- (#xEEB3 #x92E7) Err bitreich.org 70 i- (#xEEB2 #x9278) Err bitreich.org 70 i- (#xEEB1 #x9277) Err bitreich.org 70 i- (#xEEB0 #x92A7) Err bitreich.org 70 i- (#xEEAF #x9267) Err bitreich.org 70 i- (#xEEAE #x9239) Err bitreich.org 70 i- (#xEEAD #x9251) Err bitreich.org 70 i- (#xEEAC #x9259) Err bitreich.org 70 i- (#xEEAB #x924E) Err bitreich.org 70 i- (#xEEAA #x923C) Err bitreich.org 70 i- (#xEEA9 #x9240) Err bitreich.org 70 i- (#xEEA8 #x923A) Err bitreich.org 70 i- (#xEEA7 #x920A) Err bitreich.org 70 i- (#xEEA6 #x9210) Err bitreich.org 70 i- (#xEEA5 #x9206) Err bitreich.org 70 i- (#xEEA4 #x91E5) Err bitreich.org 70 i- (#xEEA3 #x91E4) Err bitreich.org 70 i- (#xEEA2 #x91EE) Err bitreich.org 70 i- (#xEEA1 #x91ED) Err bitreich.org 70 i- (#xEEA0 #x91DE) Err bitreich.org 70 i- (#xEE9F #x91D7) Err bitreich.org 70 i- (#xEE9E #x91DA) Err bitreich.org 70 i- (#xEE9D #x9127) Err bitreich.org 70 i- (#xEE9C #x9115) Err bitreich.org 70 i- (#xEE9B #xFA26) Err bitreich.org 70 i- (#xEE9A #x90DE) Err bitreich.org 70 i- (#xEE99 #x9067) Err bitreich.org 70 i- (#xEE98 #xFA25) Err bitreich.org 70 i- (#xEE97 #xFA24) Err bitreich.org 70 i- (#xEE96 #x8ECF) Err bitreich.org 70 i- (#xEE95 #xFA23) Err bitreich.org 70 i- (#xEE94 #x8D76) Err bitreich.org 70 i- (#xEE93 #x8D12) Err bitreich.org 70 i- (#xEE92 #x8CF4) Err bitreich.org 70 i- (#xEE91 #x8CF0) Err bitreich.org 70 i- (#xEE90 #x8B7F) Err bitreich.org 70 i- (#xEE8F #x8B53) Err bitreich.org 70 i- (#xEE8E #x8AF6) Err bitreich.org 70 i- (#xEE8D #xFA22) Err bitreich.org 70 i- (#xEE8C #x8ADF) Err bitreich.org 70 i- (#xEE8B #x8ABE) Err bitreich.org 70 i- (#xEE8A #x8AA7) Err bitreich.org 70 i- (#xEE89 #x8A79) Err bitreich.org 70 i- (#xEE88 #x8A37) Err bitreich.org 70 i- (#xEE87 #x8A12) Err bitreich.org 70 i- (#xEE86 #x88F5) Err bitreich.org 70 i- (#xEE85 #x8807) Err bitreich.org 70 i- (#xEE84 #xFA21) Err bitreich.org 70 i- (#xEE83 #xFA20) Err bitreich.org 70 i- (#xEE82 #x85B0) Err bitreich.org 70 i- (#xEE81 #xFA1F) Err bitreich.org 70 i- (#xEE80 #x856B) Err bitreich.org 70 i- (#xEE7E #x8559) Err bitreich.org 70 i- (#xEE7D #x8553) Err bitreich.org 70 i- (#xEE7C #x84B4) Err bitreich.org 70 i- (#xEE7B #x8448) Err bitreich.org 70 i- (#xEE7A #x83F6) Err bitreich.org 70 i- (#xEE79 #x83C7) Err bitreich.org 70 i- (#xEE78 #x837F) Err bitreich.org 70 i- (#xEE77 #x8362) Err bitreich.org 70 i- (#xEE76 #x8301) Err bitreich.org 70 i- (#xEE75 #xFA1E) Err bitreich.org 70 i- (#xEE74 #x7FA1) Err bitreich.org 70 i- (#xEE73 #x7F47) Err bitreich.org 70 i- (#xEE72 #x7E52) Err bitreich.org 70 i- (#xEE71 #x7DD6) Err bitreich.org 70 i- (#xEE70 #x7DA0) Err bitreich.org 70 i- (#xEE6F #x7DB7) Err bitreich.org 70 i- (#xEE6E #x7D5C) Err bitreich.org 70 i- (#xEE6D #x7D48) Err bitreich.org 70 i- (#xEE6C #xFA1D) Err bitreich.org 70 i- (#xEE6B #x7B9E) Err bitreich.org 70 i- (#xEE6A #x7AEB) Err bitreich.org 70 i- (#xEE69 #xFA1C) Err bitreich.org 70 i- (#xEE68 #x7AE7) Err bitreich.org 70 i- (#xEE67 #x7AD1) Err bitreich.org 70 i- (#xEE66 #x799B) Err bitreich.org 70 i- (#xEE65 #xFA1B) Err bitreich.org 70 i- (#xEE64 #x7994) Err bitreich.org 70 i- (#xEE63 #xFA1A) Err bitreich.org 70 i- (#xEE62 #xFA19) Err bitreich.org 70 i- (#xEE61 #xFA18) Err bitreich.org 70 i- (#xEE60 #x7930) Err bitreich.org 70 i- (#xEE5F #x787A) Err bitreich.org 70 i- (#xEE5E #x7864) Err bitreich.org 70 i- (#xEE5D #x784E) Err bitreich.org 70 i- (#xEE5C #x7821) Err bitreich.org 70 i- (#xEE5B #x52AF) Err bitreich.org 70 i- (#xEE5A #x7746) Err bitreich.org 70 i- (#xEE59 #xFA17) Err bitreich.org 70 i- (#xEE58 #x76A6) Err bitreich.org 70 i- (#xEE57 #x769B) Err bitreich.org 70 i- (#xEE56 #x769E) Err bitreich.org 70 i- (#xEE55 #x769C) Err bitreich.org 70 i- (#xEE54 #x7682) Err bitreich.org 70 i- (#xEE53 #x756F) Err bitreich.org 70 i- (#xEE52 #x7501) Err bitreich.org 70 i- (#xEE51 #x749F) Err bitreich.org 70 i- (#xEE50 #x7489) Err bitreich.org 70 i- (#xEE4F #x7462) Err bitreich.org 70 i- (#xEE4E #x742E) Err bitreich.org 70 i- (#xEE4D #x7429) Err bitreich.org 70 i- (#xEE4C #x742A) Err bitreich.org 70 i- (#xEE4B #x7426) Err bitreich.org 70 i- (#xEE4A #x73F5) Err bitreich.org 70 i- (#xEE49 #x7407) Err bitreich.org 70 i- (#xEE48 #x73D2) Err bitreich.org 70 i- (#xEE47 #x73E3) Err bitreich.org 70 i- (#xEE46 #x73D6) Err bitreich.org 70 i- (#xEE45 #x73C9) Err bitreich.org 70 i- (#xEE44 #x73BD) Err bitreich.org 70 i- (#xEE43 #x7377) Err bitreich.org 70 i- (#xEE42 #xFA16) Err bitreich.org 70 i- (#xEE41 #x7324) Err bitreich.org 70 i- (#xEE40 #x72BE) Err bitreich.org 70 i- (#xEDFC #x72B1) Err bitreich.org 70 i- (#xEDFB #x71FE) Err bitreich.org 70 i- (#xEDFA #x71C1) Err bitreich.org 70 i- (#xEDF9 #xFA15) Err bitreich.org 70 i- (#xEDF8 #x7147) Err bitreich.org 70 i- (#xEDF7 #x7146) Err bitreich.org 70 i- (#xEDF6 #x715C) Err bitreich.org 70 i- (#xEDF5 #x7104) Err bitreich.org 70 i- (#xEDF4 #x710F) Err bitreich.org 70 i- (#xEDF3 #x70AB) Err bitreich.org 70 i- (#xEDF2 #x7085) Err bitreich.org 70 i- (#xEDF1 #x7028) Err bitreich.org 70 i- (#xEDF0 #x7007) Err bitreich.org 70 i- (#xEDEF #x7005) Err bitreich.org 70 i- (#xEDEE #x6FF5) Err bitreich.org 70 i- (#xEDED #x6FB5) Err bitreich.org 70 i- (#xEDEC #x6F88) Err bitreich.org 70 i- (#xEDEB #x6EBF) Err bitreich.org 70 i- (#xEDEA #x6E3C) Err bitreich.org 70 i- (#xEDE9 #x6E27) Err bitreich.org 70 i- (#xEDE8 #x6E5C) Err bitreich.org 70 i- (#xEDE7 #x6E39) Err bitreich.org 70 i- (#xEDE6 #x6DFC) Err bitreich.org 70 i- (#xEDE5 #x6DF2) Err bitreich.org 70 i- (#xEDE4 #x6DF8) Err bitreich.org 70 i- (#xEDE3 #x6DCF) Err bitreich.org 70 i- (#xEDE2 #x6DAC) Err bitreich.org 70 i- (#xEDE1 #x6D96) Err bitreich.org 70 i- (#xEDE0 #x6D6F) Err bitreich.org 70 i- (#xEDDF #x6D87) Err bitreich.org 70 i- (#xEDDE #x6D04) Err bitreich.org 70 i- (#xEDDD #x6CDA) Err bitreich.org 70 i- (#xEDDC #x6C6F) Err bitreich.org 70 i- (#xEDDB #x6C86) Err bitreich.org 70 i- (#xEDDA #x6C5C) Err bitreich.org 70 i- (#xEDD9 #x6C3F) Err bitreich.org 70 i- (#xEDD8 #x6BD6) Err bitreich.org 70 i- (#xEDD7 #x6AE4) Err bitreich.org 70 i- (#xEDD6 #x6AE2) Err bitreich.org 70 i- (#xEDD5 #x6A7E) Err bitreich.org 70 i- (#xEDD4 #x6A73) Err bitreich.org 70 i- (#xEDD3 #x6A46) Err bitreich.org 70 i- (#xEDD2 #x6A6B) Err bitreich.org 70 i- (#xEDD1 #x6A30) Err bitreich.org 70 i- (#xEDD0 #x69E2) Err bitreich.org 70 i- (#xEDCF #x6998) Err bitreich.org 70 i- (#xEDCE #xFA14) Err bitreich.org 70 i- (#xEDCD #x6968) Err bitreich.org 70 i- (#xEDCC #xFA13) Err bitreich.org 70 i- (#xEDCB #x68CF) Err bitreich.org 70 i- (#xEDCA #x6844) Err bitreich.org 70 i- (#xEDC9 #x6801) Err bitreich.org 70 i- (#xEDC8 #x67C0) Err bitreich.org 70 i- (#xEDC7 #x6852) Err bitreich.org 70 i- (#xEDC6 #x67BB) Err bitreich.org 70 i- (#xEDC5 #x6766) Err bitreich.org 70 i- (#xEDC4 #xF929) Err bitreich.org 70 i- (#xEDC3 #x670E) Err bitreich.org 70 i- (#xEDC2 #x66FA) Err bitreich.org 70 i- (#xEDC1 #x66BF) Err bitreich.org 70 i- (#xEDC0 #x66B2) Err bitreich.org 70 i- (#xEDBF #x66A0) Err bitreich.org 70 i- (#xEDBE #x6699) Err bitreich.org 70 i- (#xEDBD #x6673) Err bitreich.org 70 i- (#xEDBC #xFA12) Err bitreich.org 70 i- (#xEDBB #x6659) Err bitreich.org 70 i- (#xEDBA #x6657) Err bitreich.org 70 i- (#xEDB9 #x6665) Err bitreich.org 70 i- (#xEDB8 #x6624) Err bitreich.org 70 i- (#xEDB7 #x661E) Err bitreich.org 70 i- (#xEDB6 #x662E) Err bitreich.org 70 i- (#xEDB5 #x6609) Err bitreich.org 70 i- (#xEDB4 #x663B) Err bitreich.org 70 i- (#xEDB3 #x6615) Err bitreich.org 70 i- (#xEDB2 #x6600) Err bitreich.org 70 i- (#xEDB1 #x654E) Err bitreich.org 70 i- (#xEDB0 #x64CE) Err bitreich.org 70 i- (#xEDAF #x649D) Err bitreich.org 70 i- (#xEDAE #x6460) Err bitreich.org 70 i- (#xEDAD #x63F5) Err bitreich.org 70 i- (#xEDAC #x62A6) Err bitreich.org 70 i- (#xEDAB #x6213) Err bitreich.org 70 i- (#xEDAA #x6198) Err bitreich.org 70 i- (#xEDA9 #x6130) Err bitreich.org 70 i- (#xEDA8 #x6137) Err bitreich.org 70 i- (#xEDA7 #x6111) Err bitreich.org 70 i- (#xEDA6 #x60F2) Err bitreich.org 70 i- (#xEDA5 #x6120) Err bitreich.org 70 i- (#xEDA4 #x60D5) Err bitreich.org 70 i- (#xEDA3 #x60DE) Err bitreich.org 70 i- (#xEDA2 #x608A) Err bitreich.org 70 i- (#xEDA1 #x6085) Err bitreich.org 70 i- (#xEDA0 #x605D) Err bitreich.org 70 i- (#xED9F #x5FDE) Err bitreich.org 70 i- (#xED9E #x5FB7) Err bitreich.org 70 i- (#xED9D #x5F67) Err bitreich.org 70 i- (#xED9C #x5F34) Err bitreich.org 70 i- (#xED9B #x5F21) Err bitreich.org 70 i- (#xED9A #x5DD0) Err bitreich.org 70 i- (#xED99 #x5DB9) Err bitreich.org 70 i- (#xED98 #x5DB8) Err bitreich.org 70 i- (#xED97 #x5D6D) Err bitreich.org 70 i- (#xED96 #x5D42) Err bitreich.org 70 i- (#xED95 #xFA11) Err bitreich.org 70 i- (#xED94 #x5D53) Err bitreich.org 70 i- (#xED93 #x5D27) Err bitreich.org 70 i- (#xED92 #x5CF5) Err bitreich.org 70 i- (#xED91 #x5CBA) Err bitreich.org 70 i- (#xED90 #x5CA6) Err bitreich.org 70 i- (#xED8F #x5C1E) Err bitreich.org 70 i- (#xED8E #x5BEC) Err bitreich.org 70 i- (#xED8D #x5BD8) Err bitreich.org 70 i- (#xED8C #x752F) Err bitreich.org 70 i- (#xED8B #x5BC0) Err bitreich.org 70 i- (#xED8A #x5B56) Err bitreich.org 70 i- (#xED89 #x59BA) Err bitreich.org 70 i- (#xED88 #x59A4) Err bitreich.org 70 i- (#xED87 #x5963) Err bitreich.org 70 i- (#xED86 #x595D) Err bitreich.org 70 i- (#xED85 #x595B) Err bitreich.org 70 i- (#xED84 #x5953) Err bitreich.org 70 i- (#xED83 #x590B) Err bitreich.org 70 i- (#xED82 #x58B2) Err bitreich.org 70 i- (#xED81 #x589E) Err bitreich.org 70 i- (#xED80 #xFA10) Err bitreich.org 70 i- (#xED7E #xFA0F) Err bitreich.org 70 i- (#xED7D #x57C7) Err bitreich.org 70 i- (#xED7C #x57C8) Err bitreich.org 70 i- (#xED7B #x57AC) Err bitreich.org 70 i- (#xED7A #x5765) Err bitreich.org 70 i- (#xED79 #x5759) Err bitreich.org 70 i- (#xED78 #x5586) Err bitreich.org 70 i- (#xED77 #x54FF) Err bitreich.org 70 i- (#xED76 #x54A9) Err bitreich.org 70 i- (#xED75 #x548A) Err bitreich.org 70 i- (#xED74 #x549C) Err bitreich.org 70 i- (#xED73 #xFA0E) Err bitreich.org 70 i- (#xED72 #x53DD) Err bitreich.org 70 i- (#xED71 #x53B2) Err bitreich.org 70 i- (#xED70 #x5393) Err bitreich.org 70 i- (#xED6F #x5372) Err bitreich.org 70 i- (#xED6E #x5324) Err bitreich.org 70 i- (#xED6D #x5307) Err bitreich.org 70 i- (#xED6C #x5300) Err bitreich.org 70 i- (#xED6B #x52DB) Err bitreich.org 70 i- (#xED6A #x52C0) Err bitreich.org 70 i- (#xED69 #x52A6) Err bitreich.org 70 i- (#xED68 #x529C) Err bitreich.org 70 i- (#xED67 #x5215) Err bitreich.org 70 i- (#xED66 #x51EC) Err bitreich.org 70 i- (#xED65 #x51BE) Err bitreich.org 70 i- (#xED64 #x519D) Err bitreich.org 70 i- (#xED63 #x5164) Err bitreich.org 70 i- (#xED62 #x514A) Err bitreich.org 70 i- (#xED61 #x50D8) Err bitreich.org 70 i- (#xED60 #x50F4) Err bitreich.org 70 i- (#xED5F #x5094) Err bitreich.org 70 i- (#xED5E #x5042) Err bitreich.org 70 i- (#xED5D #x5070) Err bitreich.org 70 i- (#xED5C #x5046) Err bitreich.org 70 i- (#xED5B #x501E) Err bitreich.org 70 i- (#xED5A #x4FFF) Err bitreich.org 70 i- (#xED59 #x5022) Err bitreich.org 70 i- (#xED58 #x5040) Err bitreich.org 70 i- (#xED57 #x4FCD) Err bitreich.org 70 i- (#xED56 #x4F94) Err bitreich.org 70 i- (#xED55 #x4F9A) Err bitreich.org 70 i- (#xED54 #x4F8A) Err bitreich.org 70 i- (#xED53 #x4F92) Err bitreich.org 70 i- (#xED52 #x4F56) Err bitreich.org 70 i- (#xED51 #x4F39) Err bitreich.org 70 i- (#xED50 #x4F03) Err bitreich.org 70 i- (#xED4F #x4F00) Err bitreich.org 70 i- (#xED4E #x4EFC) Err bitreich.org 70 i- (#xED4D #x4EE1) Err bitreich.org 70 i- (#xED4C #x4E28) Err bitreich.org 70 i- (#xED4B #x5F45) Err bitreich.org 70 i- (#xED4A #x66FB) Err bitreich.org 70 i- (#xED49 #x92F9) Err bitreich.org 70 i- (#xED48 #x68C8) Err bitreich.org 70 i- (#xED47 #x6631) Err bitreich.org 70 i- (#xED46 #x70BB) Err bitreich.org 70 i- (#xED45 #x4FC9) Err bitreich.org 70 i- (#xED44 #x84DC) Err bitreich.org 70 i- (#xED43 #x9288) Err bitreich.org 70 i- (#xED42 #x9348) Err bitreich.org 70 i- (#xED41 #x891C) Err bitreich.org 70 i- (#xED40 #x7E8A) Err bitreich.org 70 i- (#xEA9E #x9FA0) Err bitreich.org 70 i- (#xEA40 #x9D5D) Err bitreich.org 70 i- (#xE99E #x9AF7) Err bitreich.org 70 i- (#xE940 #x9871) Err bitreich.org 70 i- (#xE89E #x965E) Err bitreich.org 70 i- (#xE840 #x9319) Err bitreich.org 70 i- (#xE79E #x8FF8) Err bitreich.org 70 i- (#xE740 #x8E47) Err bitreich.org 70 i- (#xE69E #x8B6B) Err bitreich.org 70 i- (#xE640 #x8966) Err bitreich.org 70 i- (#xE59E #x8759) Err bitreich.org 70 i- (#xE540 #x8541) Err bitreich.org 70 i- (#xE49E #x82D9) Err bitreich.org 70 i- (#xE440 #x968B) Err bitreich.org 70 i- (#xE39E #x7F3A) Err bitreich.org 70 i- (#xE340 #x7D02) Err bitreich.org 70 i- (#xE29E #x7B50) Err bitreich.org 70 i- (#xE240 #x78E7) Err bitreich.org 70 i- (#xE19E #x7670) Err bitreich.org 70 i- (#xE140 #x74E0) Err bitreich.org 70 i- (#xE09E #x71FC) Err bitreich.org 70 i- (#xE040 #x6F3E) Err bitreich.org 70 i- (#x9F9E #x6CBE) Err bitreich.org 70 i- (#x9F40 #x6A97) Err bitreich.org 70 i- (#x9E9E #x68CD) Err bitreich.org 70 i- (#x9E40 #x66C4) Err bitreich.org 70 i- (#x9D9E #x64BC) Err bitreich.org 70 i- (#x9D40 #x621E) Err bitreich.org 70 i- (#x9C9E #x609A) Err bitreich.org 70 i- (#x9C40 #x5ED6) Err bitreich.org 70 i- (#x9B9E #x5C53) Err bitreich.org 70 i- (#x9B40 #x5978) Err bitreich.org 70 i- (#x9A9E #x5709) Err bitreich.org 70 i- (#x9A40 #x54AB) Err bitreich.org 70 i- (#x999E #x8FA8) Err bitreich.org 70 i- (#x9940 #x50C9) Err bitreich.org 70 i- (#x9840 #x84EE) Err bitreich.org 70 i- (#x979E #x7483) Err bitreich.org 70 i- (#x9740 #x8AED) Err bitreich.org 70 i- (#x969E #x6E80) Err bitreich.org 70 i- (#x9640 #x6CD5) Err bitreich.org 70 i- (#x959E #x670D) Err bitreich.org 70 i- (#x9540 #x9F3B) Err bitreich.org 70 i- (#x949E #x9EA6) Err bitreich.org 70 i- (#x9440 #x5982) Err bitreich.org 70 i- (#x939E #x5230) Err bitreich.org 70 i- (#x9340 #x90B8) Err bitreich.org 70 i- (#x929E #x5BF5) Err bitreich.org 70 i- (#x9240 #x53E9) Err bitreich.org 70 i- (#x919E #x618E) Err bitreich.org 70 i- (#x9140 #x7E4A) Err bitreich.org 70 i- (#x909E #x88FE) Err bitreich.org 70 i- (#x9040 #x62ED) Err bitreich.org 70 i- (#x8F9E #x511F) Err bitreich.org 70 i- (#x8F40 #x5B97) Err bitreich.org 70 i- (#x8E9E #x6642) Err bitreich.org 70 i- (#x8E40 #x5BDF) Err bitreich.org 70 i- (#x8D9E #x8FBC) Err bitreich.org 70 i- (#x8D40 #x540E) Err bitreich.org 70 i- (#x8C9E #x6372) Err bitreich.org 70 i- (#x8C40 #x6398) Err bitreich.org 70 i- (#x8B9E #x4EAC) Err bitreich.org 70 i- (#x8B40 #x6A5F) Err bitreich.org 70 i- (#x8A9E #x8431) Err bitreich.org 70 i- (#x8A40 #x9B41) Err bitreich.org 70 i- (#x899E #x5FDC) Err bitreich.org 70 i- (#x8940 #x9662) Err bitreich.org 70 i- (#x879C #x222A) Err bitreich.org 70 i- (#x879B #x2229) Err bitreich.org 70 i- (#x879A #x2235) Err bitreich.org 70 i- (#x8799 #x22BF) Err bitreich.org 70 i- (#x8798 #x221F) Err bitreich.org 70 i- (#x8797 #x2220) Err bitreich.org 70 i- (#x8796 #x22A5) Err bitreich.org 70 i- (#x8795 #x221A) Err bitreich.org 70 i- (#x8794 #x2211) Err bitreich.org 70 i- (#x8793 #x222E) Err bitreich.org 70 i- (#x8792 #x222B) Err bitreich.org 70 i- (#x8791 #x2261) Err bitreich.org 70 i- (#x8790 #x2252) Err bitreich.org 70 i- (#x878F #x337C) Err bitreich.org 70 i- (#x878E #x337D) Err bitreich.org 70 i- (#x878D #x337E) Err bitreich.org 70 i- (#x878C #x3239) Err bitreich.org 70 i- (#x878B #x3232) Err bitreich.org 70 i- (#x878A #x3231) Err bitreich.org 70 i- (#x8789 #x32A8) Err bitreich.org 70 i- (#x8788 #x32A7) Err bitreich.org 70 i- (#x8787 #x32A6) Err bitreich.org 70 i- (#x8786 #x32A5) Err bitreich.org 70 i- (#x8785 #x32A4) Err bitreich.org 70 i- (#x8784 #x2121) Err bitreich.org 70 i- (#x8783 #x33CD) Err bitreich.org 70 i- (#x8782 #x2116) Err bitreich.org 70 i- (#x8781 #x301F) Err bitreich.org 70 i- (#x8780 #x301D) Err bitreich.org 70 i- (#x877E #x337B) Err bitreich.org 70 i- (#x8775 #x33A1) Err bitreich.org 70 i- (#x8774 #x33C4) Err bitreich.org 70 i- (#x8773 #x338F) Err bitreich.org 70 i- (#x8772 #x338E) Err bitreich.org 70 i- (#x8771 #x339E) Err bitreich.org 70 i- (#x8770 #x339D) Err bitreich.org 70 i- (#x876F #x339C) Err bitreich.org 70 i- (#x876E #x333B) Err bitreich.org 70 i- (#x876D #x334A) Err bitreich.org 70 i- (#x876C #x332B) Err bitreich.org 70 i- (#x876B #x3323) Err bitreich.org 70 i- (#x876A #x3326) Err bitreich.org 70 i- (#x8769 #x330D) Err bitreich.org 70 i- (#x8768 #x3357) Err bitreich.org 70 i- (#x8767 #x3351) Err bitreich.org 70 i- (#x8766 #x3336) Err bitreich.org 70 i- (#x8765 #x3303) Err bitreich.org 70 i- (#x8764 #x3327) Err bitreich.org 70 i- (#x8763 #x3318) Err bitreich.org 70 i- (#x8762 #x334D) Err bitreich.org 70 i- (#x8761 #x3322) Err bitreich.org 70 i- (#x8760 #x3314) Err bitreich.org 70 i- (#x875F #x3349) Err bitreich.org 70 i- (#x875D #x2169) Err bitreich.org 70 i- (#x875C #x2168) Err bitreich.org 70 i- (#x875B #x2167) Err bitreich.org 70 i- (#x875A #x2166) Err bitreich.org 70 i- (#x8759 #x2165) Err bitreich.org 70 i- (#x8758 #x2164) Err bitreich.org 70 i- (#x8757 #x2163) Err bitreich.org 70 i- (#x8756 #x2162) Err bitreich.org 70 i- (#x8755 #x2161) Err bitreich.org 70 i- (#x8754 #x2160) Err bitreich.org 70 i- (#x8753 #x2473) Err bitreich.org 70 i- (#x8752 #x2472) Err bitreich.org 70 i- (#x8751 #x2471) Err bitreich.org 70 i- (#x8750 #x2470) Err bitreich.org 70 i- (#x874F #x246F) Err bitreich.org 70 i- (#x874E #x246E) Err bitreich.org 70 i- (#x874D #x246D) Err bitreich.org 70 i- (#x874C #x246C) Err bitreich.org 70 i- (#x874B #x246B) Err bitreich.org 70 i- (#x874A #x246A) Err bitreich.org 70 i- (#x8749 #x2469) Err bitreich.org 70 i- (#x8748 #x2468) Err bitreich.org 70 i- (#x8747 #x2467) Err bitreich.org 70 i- (#x8746 #x2466) Err bitreich.org 70 i- (#x8745 #x2465) Err bitreich.org 70 i- (#x8744 #x2464) Err bitreich.org 70 i- (#x8743 #x2463) Err bitreich.org 70 i- (#x8742 #x2462) Err bitreich.org 70 i- (#x8741 #x2461) Err bitreich.org 70 i- (#x8740 #x2460) Err bitreich.org 70 i- (#x8440 #x410) Err bitreich.org 70 i- (#x8340 #x30A1) Err bitreich.org 70 i- (#x819E #x25C7) Err bitreich.org 70 i- (#x8140 #x3000) Err bitreich.org 70 i- )) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *eucjp-only* Err bitreich.org 70 i- '((#xFEFE #xE3AB) Err bitreich.org 70 i- (#xFEFD #xE3AA) Err bitreich.org 70 i- (#xFEFC #xE3A9) Err bitreich.org 70 i- (#xFEFB #xE3A8) Err bitreich.org 70 i- (#xFEFA #xE3A7) Err bitreich.org 70 i- (#xFEF9 #xE3A6) Err bitreich.org 70 i- (#xFEF8 #xE3A5) Err bitreich.org 70 i- (#xFEF7 #xE3A4) Err bitreich.org 70 i- (#xFEF6 #xE3A3) Err bitreich.org 70 i- (#xFEF5 #xE3A2) Err bitreich.org 70 i- (#xFEF4 #xE3A1) Err bitreich.org 70 i- (#xFEF3 #xE3A0) Err bitreich.org 70 i- (#xFEF2 #xE39F) Err bitreich.org 70 i- (#xFEF1 #xE39E) Err bitreich.org 70 i- (#xFEF0 #xE39D) Err bitreich.org 70 i- (#xFEEF #xE39C) Err bitreich.org 70 i- (#xFEEE #xE39B) Err bitreich.org 70 i- (#xFEED #xE39A) Err bitreich.org 70 i- (#xFEEC #xE399) Err bitreich.org 70 i- (#xFEEB #xE398) Err bitreich.org 70 i- (#xFEEA #xE397) Err bitreich.org 70 i- (#xFEE9 #xE396) Err bitreich.org 70 i- (#xFEE8 #xE395) Err bitreich.org 70 i- (#xFEE7 #xE394) Err bitreich.org 70 i- (#xFEE6 #xE393) Err bitreich.org 70 i- (#xFEE5 #xE392) Err bitreich.org 70 i- (#xFEE4 #xE391) Err bitreich.org 70 i- (#xFEE3 #xE390) Err bitreich.org 70 i- (#xFEE2 #xE38F) Err bitreich.org 70 i- (#xFEE1 #xE38E) Err bitreich.org 70 i- (#xFEE0 #xE38D) Err bitreich.org 70 i- (#xFEDF #xE38C) Err bitreich.org 70 i- (#xFEDE #xE38B) Err bitreich.org 70 i- (#xFEDD #xE38A) Err bitreich.org 70 i- (#xFEDC #xE389) Err bitreich.org 70 i- (#xFEDB #xE388) Err bitreich.org 70 i- (#xFEDA #xE387) Err bitreich.org 70 i- (#xFED9 #xE386) Err bitreich.org 70 i- (#xFED8 #xE385) Err bitreich.org 70 i- (#xFED7 #xE384) Err bitreich.org 70 i- (#xFED6 #xE383) Err bitreich.org 70 i- (#xFED5 #xE382) Err bitreich.org 70 i- (#xFED4 #xE381) Err bitreich.org 70 i- (#xFED3 #xE380) Err bitreich.org 70 i- (#xFED2 #xE37F) Err bitreich.org 70 i- (#xFED1 #xE37E) Err bitreich.org 70 i- (#xFED0 #xE37D) Err bitreich.org 70 i- (#xFECF #xE37C) Err bitreich.org 70 i- (#xFECE #xE37B) Err bitreich.org 70 i- (#xFECD #xE37A) Err bitreich.org 70 i- (#xFECC #xE379) Err bitreich.org 70 i- (#xFECB #xE378) Err bitreich.org 70 i- (#xFECA #xE377) Err bitreich.org 70 i- (#xFEC9 #xE376) Err bitreich.org 70 i- (#xFEC8 #xE375) Err bitreich.org 70 i- (#xFEC7 #xE374) Err bitreich.org 70 i- (#xFEC6 #xE373) Err bitreich.org 70 i- (#xFEC5 #xE372) Err bitreich.org 70 i- (#xFEC4 #xE371) Err bitreich.org 70 i- (#xFEC3 #xE370) Err bitreich.org 70 i- (#xFEC2 #xE36F) Err bitreich.org 70 i- (#xFEC1 #xE36E) Err bitreich.org 70 i- (#xFEC0 #xE36D) Err bitreich.org 70 i- (#xFEBF #xE36C) Err bitreich.org 70 i- (#xFEBE #xE36B) Err bitreich.org 70 i- (#xFEBD #xE36A) Err bitreich.org 70 i- (#xFEBC #xE369) Err bitreich.org 70 i- (#xFEBB #xE368) Err bitreich.org 70 i- (#xFEBA #xE367) Err bitreich.org 70 i- (#xFEB9 #xE366) Err bitreich.org 70 i- (#xFEB8 #xE365) Err bitreich.org 70 i- (#xFEB7 #xE364) Err bitreich.org 70 i- (#xFEB6 #xE363) Err bitreich.org 70 i- (#xFEB5 #xE362) Err bitreich.org 70 i- (#xFEB4 #xE361) Err bitreich.org 70 i- (#xFEB3 #xE360) Err bitreich.org 70 i- (#xFEB2 #xE35F) Err bitreich.org 70 i- (#xFEB1 #xE35E) Err bitreich.org 70 i- (#xFEB0 #xE35D) Err bitreich.org 70 i- (#xFEAF #xE35C) Err bitreich.org 70 i- (#xFEAE #xE35B) Err bitreich.org 70 i- (#xFEAD #xE35A) Err bitreich.org 70 i- (#xFEAC #xE359) Err bitreich.org 70 i- (#xFEAB #xE358) Err bitreich.org 70 i- (#xFEAA #xE357) Err bitreich.org 70 i- (#xFEA9 #xE356) Err bitreich.org 70 i- (#xFEA8 #xE355) Err bitreich.org 70 i- (#xFEA7 #xE354) Err bitreich.org 70 i- (#xFEA6 #xE353) Err bitreich.org 70 i- (#xFEA5 #xE352) Err bitreich.org 70 i- (#xFEA4 #xE351) Err bitreich.org 70 i- (#xFEA3 #xE350) Err bitreich.org 70 i- (#xFEA2 #xE34F) Err bitreich.org 70 i- (#xFEA1 #xE34E) Err bitreich.org 70 i- (#xFDFE #xE34D) Err bitreich.org 70 i- (#xFDFD #xE34C) Err bitreich.org 70 i- (#xFDFC #xE34B) Err bitreich.org 70 i- (#xFDFB #xE34A) Err bitreich.org 70 i- (#xFDFA #xE349) Err bitreich.org 70 i- (#xFDF9 #xE348) Err bitreich.org 70 i- (#xFDF8 #xE347) Err bitreich.org 70 i- (#xFDF7 #xE346) Err bitreich.org 70 i- (#xFDF6 #xE345) Err bitreich.org 70 i- (#xFDF5 #xE344) Err bitreich.org 70 i- (#xFDF4 #xE343) Err bitreich.org 70 i- (#xFDF3 #xE342) Err bitreich.org 70 i- (#xFDF2 #xE341) Err bitreich.org 70 i- (#xFDF1 #xE340) Err bitreich.org 70 i- (#xFDF0 #xE33F) Err bitreich.org 70 i- (#xFDEF #xE33E) Err bitreich.org 70 i- (#xFDEE #xE33D) Err bitreich.org 70 i- (#xFDED #xE33C) Err bitreich.org 70 i- (#xFDEC #xE33B) Err bitreich.org 70 i- (#xFDEB #xE33A) Err bitreich.org 70 i- (#xFDEA #xE339) Err bitreich.org 70 i- (#xFDE9 #xE338) Err bitreich.org 70 i- (#xFDE8 #xE337) Err bitreich.org 70 i- (#xFDE7 #xE336) Err bitreich.org 70 i- (#xFDE6 #xE335) Err bitreich.org 70 i- (#xFDE5 #xE334) Err bitreich.org 70 i- (#xFDE4 #xE333) Err bitreich.org 70 i- (#xFDE3 #xE332) Err bitreich.org 70 i- (#xFDE2 #xE331) Err bitreich.org 70 i- (#xFDE1 #xE330) Err bitreich.org 70 i- (#xFDE0 #xE32F) Err bitreich.org 70 i- (#xFDDF #xE32E) Err bitreich.org 70 i- (#xFDDE #xE32D) Err bitreich.org 70 i- (#xFDDD #xE32C) Err bitreich.org 70 i- (#xFDDC #xE32B) Err bitreich.org 70 i- (#xFDDB #xE32A) Err bitreich.org 70 i- (#xFDDA #xE329) Err bitreich.org 70 i- (#xFDD9 #xE328) Err bitreich.org 70 i- (#xFDD8 #xE327) Err bitreich.org 70 i- (#xFDD7 #xE326) Err bitreich.org 70 i- (#xFDD6 #xE325) Err bitreich.org 70 i- (#xFDD5 #xE324) Err bitreich.org 70 i- (#xFDD4 #xE323) Err bitreich.org 70 i- (#xFDD3 #xE322) Err bitreich.org 70 i- (#xFDD2 #xE321) Err bitreich.org 70 i- (#xFDD1 #xE320) Err bitreich.org 70 i- (#xFDD0 #xE31F) Err bitreich.org 70 i- (#xFDCF #xE31E) Err bitreich.org 70 i- (#xFDCE #xE31D) Err bitreich.org 70 i- (#xFDCD #xE31C) Err bitreich.org 70 i- (#xFDCC #xE31B) Err bitreich.org 70 i- (#xFDCB #xE31A) Err bitreich.org 70 i- (#xFDCA #xE319) Err bitreich.org 70 i- (#xFDC9 #xE318) Err bitreich.org 70 i- (#xFDC8 #xE317) Err bitreich.org 70 i- (#xFDC7 #xE316) Err bitreich.org 70 i- (#xFDC6 #xE315) Err bitreich.org 70 i- (#xFDC5 #xE314) Err bitreich.org 70 i- (#xFDC4 #xE313) Err bitreich.org 70 i- (#xFDC3 #xE312) Err bitreich.org 70 i- (#xFDC2 #xE311) Err bitreich.org 70 i- (#xFDC1 #xE310) Err bitreich.org 70 i- (#xFDC0 #xE30F) Err bitreich.org 70 i- (#xFDBF #xE30E) Err bitreich.org 70 i- (#xFDBE #xE30D) Err bitreich.org 70 i- (#xFDBD #xE30C) Err bitreich.org 70 i- (#xFDBC #xE30B) Err bitreich.org 70 i- (#xFDBB #xE30A) Err bitreich.org 70 i- (#xFDBA #xE309) Err bitreich.org 70 i- (#xFDB9 #xE308) Err bitreich.org 70 i- (#xFDB8 #xE307) Err bitreich.org 70 i- (#xFDB7 #xE306) Err bitreich.org 70 i- (#xFDB6 #xE305) Err bitreich.org 70 i- (#xFDB5 #xE304) Err bitreich.org 70 i- (#xFDB4 #xE303) Err bitreich.org 70 i- (#xFDB3 #xE302) Err bitreich.org 70 i- (#xFDB2 #xE301) Err bitreich.org 70 i- (#xFDB1 #xE300) Err bitreich.org 70 i- (#xFDB0 #xE2FF) Err bitreich.org 70 i- (#xFDAF #xE2FE) Err bitreich.org 70 i- (#xFDAE #xE2FD) Err bitreich.org 70 i- (#xFDAD #xE2FC) Err bitreich.org 70 i- (#xFDAC #xE2FB) Err bitreich.org 70 i- (#xFDAB #xE2FA) Err bitreich.org 70 i- (#xFDAA #xE2F9) Err bitreich.org 70 i- (#xFDA9 #xE2F8) Err bitreich.org 70 i- (#xFDA8 #xE2F7) Err bitreich.org 70 i- (#xFDA7 #xE2F6) Err bitreich.org 70 i- (#xFDA6 #xE2F5) Err bitreich.org 70 i- (#xFDA5 #xE2F4) Err bitreich.org 70 i- (#xFDA4 #xE2F3) Err bitreich.org 70 i- (#xFDA3 #xE2F2) Err bitreich.org 70 i- (#xFDA2 #xE2F1) Err bitreich.org 70 i- (#xFDA1 #xE2F0) Err bitreich.org 70 i- (#xFCFE #xE2EF) Err bitreich.org 70 i- (#xFCFD #xE2EE) Err bitreich.org 70 i- (#xFCFC #xE2ED) Err bitreich.org 70 i- (#xFCFB #xE2EC) Err bitreich.org 70 i- (#xFCFA #xE2EB) Err bitreich.org 70 i- (#xFCF9 #xE2EA) Err bitreich.org 70 i- (#xFCF8 #xE2E9) Err bitreich.org 70 i- (#xFCF7 #xE2E8) Err bitreich.org 70 i- (#xFCF6 #xE2E7) Err bitreich.org 70 i- (#xFCF5 #xE2E6) Err bitreich.org 70 i- (#xFCF4 #xE2E5) Err bitreich.org 70 i- (#xFCF3 #xE2E4) Err bitreich.org 70 i- (#xFCF2 #xE2E3) Err bitreich.org 70 i- (#xFCF1 #xE2E2) Err bitreich.org 70 i- (#xFCF0 #xE2E1) Err bitreich.org 70 i- (#xFCEF #xE2E0) Err bitreich.org 70 i- (#xFCEE #xE2DF) Err bitreich.org 70 i- (#xFCED #xE2DE) Err bitreich.org 70 i- (#xFCEC #xE2DD) Err bitreich.org 70 i- (#xFCEB #xE2DC) Err bitreich.org 70 i- (#xFCEA #xE2DB) Err bitreich.org 70 i- (#xFCE9 #xE2DA) Err bitreich.org 70 i- (#xFCE8 #xE2D9) Err bitreich.org 70 i- (#xFCE7 #xE2D8) Err bitreich.org 70 i- (#xFCE6 #xE2D7) Err bitreich.org 70 i- (#xFCE5 #xE2D6) Err bitreich.org 70 i- (#xFCE4 #xE2D5) Err bitreich.org 70 i- (#xFCE3 #xE2D4) Err bitreich.org 70 i- (#xFCE2 #xE2D3) Err bitreich.org 70 i- (#xFCE1 #xE2D2) Err bitreich.org 70 i- (#xFCE0 #xE2D1) Err bitreich.org 70 i- (#xFCDF #xE2D0) Err bitreich.org 70 i- (#xFCDE #xE2CF) Err bitreich.org 70 i- (#xFCDD #xE2CE) Err bitreich.org 70 i- (#xFCDC #xE2CD) Err bitreich.org 70 i- (#xFCDB #xE2CC) Err bitreich.org 70 i- (#xFCDA #xE2CB) Err bitreich.org 70 i- (#xFCD9 #xE2CA) Err bitreich.org 70 i- (#xFCD8 #xE2C9) Err bitreich.org 70 i- (#xFCD7 #xE2C8) Err bitreich.org 70 i- (#xFCD6 #xE2C7) Err bitreich.org 70 i- (#xFCD5 #xE2C6) Err bitreich.org 70 i- (#xFCD4 #xE2C5) Err bitreich.org 70 i- (#xFCD3 #xE2C4) Err bitreich.org 70 i- (#xFCD2 #xE2C3) Err bitreich.org 70 i- (#xFCD1 #xE2C2) Err bitreich.org 70 i- (#xFCD0 #xE2C1) Err bitreich.org 70 i- (#xFCCF #xE2C0) Err bitreich.org 70 i- (#xFCCE #xE2BF) Err bitreich.org 70 i- (#xFCCD #xE2BE) Err bitreich.org 70 i- (#xFCCC #xE2BD) Err bitreich.org 70 i- (#xFCCB #xE2BC) Err bitreich.org 70 i- (#xFCCA #xE2BB) Err bitreich.org 70 i- (#xFCC9 #xE2BA) Err bitreich.org 70 i- (#xFCC8 #xE2B9) Err bitreich.org 70 i- (#xFCC7 #xE2B8) Err bitreich.org 70 i- (#xFCC6 #xE2B7) Err bitreich.org 70 i- (#xFCC5 #xE2B6) Err bitreich.org 70 i- (#xFCC4 #xE2B5) Err bitreich.org 70 i- (#xFCC3 #xE2B4) Err bitreich.org 70 i- (#xFCC2 #xE2B3) Err bitreich.org 70 i- (#xFCC1 #xE2B2) Err bitreich.org 70 i- (#xFCC0 #xE2B1) Err bitreich.org 70 i- (#xFCBF #xE2B0) Err bitreich.org 70 i- (#xFCBE #xE2AF) Err bitreich.org 70 i- (#xFCBD #xE2AE) Err bitreich.org 70 i- (#xFCBC #xE2AD) Err bitreich.org 70 i- (#xFCBB #xE2AC) Err bitreich.org 70 i- (#xFCBA #xE2AB) Err bitreich.org 70 i- (#xFCB9 #xE2AA) Err bitreich.org 70 i- (#xFCB8 #xE2A9) Err bitreich.org 70 i- (#xFCB7 #xE2A8) Err bitreich.org 70 i- (#xFCB6 #xE2A7) Err bitreich.org 70 i- (#xFCB5 #xE2A6) Err bitreich.org 70 i- (#xFCB4 #xE2A5) Err bitreich.org 70 i- (#xFCB3 #xE2A4) Err bitreich.org 70 i- (#xFCB2 #xE2A3) Err bitreich.org 70 i- (#xFCB1 #xE2A2) Err bitreich.org 70 i- (#xFCB0 #xE2A1) Err bitreich.org 70 i- (#xFCAF #xE2A0) Err bitreich.org 70 i- (#xFCAE #xE29F) Err bitreich.org 70 i- (#xFCAD #xE29E) Err bitreich.org 70 i- (#xFCAC #xE29D) Err bitreich.org 70 i- (#xFCAB #xE29C) Err bitreich.org 70 i- (#xFCAA #xE29B) Err bitreich.org 70 i- (#xFCA9 #xE29A) Err bitreich.org 70 i- (#xFCA8 #xE299) Err bitreich.org 70 i- (#xFCA7 #xE298) Err bitreich.org 70 i- (#xFCA6 #xE297) Err bitreich.org 70 i- (#xFCA5 #xE296) Err bitreich.org 70 i- (#xFCA4 #xE295) Err bitreich.org 70 i- (#xFCA3 #xE294) Err bitreich.org 70 i- (#xFCA2 #xE293) Err bitreich.org 70 i- (#xFCA1 #xE292) Err bitreich.org 70 i- (#xFBFE #xE291) Err bitreich.org 70 i- (#xFBFD #xE290) Err bitreich.org 70 i- (#xFBFC #xE28F) Err bitreich.org 70 i- (#xFBFB #xE28E) Err bitreich.org 70 i- (#xFBFA #xE28D) Err bitreich.org 70 i- (#xFBF9 #xE28C) Err bitreich.org 70 i- (#xFBF8 #xE28B) Err bitreich.org 70 i- (#xFBF7 #xE28A) Err bitreich.org 70 i- (#xFBF6 #xE289) Err bitreich.org 70 i- (#xFBF5 #xE288) Err bitreich.org 70 i- (#xFBF4 #xE287) Err bitreich.org 70 i- (#xFBF3 #xE286) Err bitreich.org 70 i- (#xFBF2 #xE285) Err bitreich.org 70 i- (#xFBF1 #xE284) Err bitreich.org 70 i- (#xFBF0 #xE283) Err bitreich.org 70 i- (#xFBEF #xE282) Err bitreich.org 70 i- (#xFBEE #xE281) Err bitreich.org 70 i- (#xFBED #xE280) Err bitreich.org 70 i- (#xFBEC #xE27F) Err bitreich.org 70 i- (#xFBEB #xE27E) Err bitreich.org 70 i- (#xFBEA #xE27D) Err bitreich.org 70 i- (#xFBE9 #xE27C) Err bitreich.org 70 i- (#xFBE8 #xE27B) Err bitreich.org 70 i- (#xFBE7 #xE27A) Err bitreich.org 70 i- (#xFBE6 #xE279) Err bitreich.org 70 i- (#xFBE5 #xE278) Err bitreich.org 70 i- (#xFBE4 #xE277) Err bitreich.org 70 i- (#xFBE3 #xE276) Err bitreich.org 70 i- (#xFBE2 #xE275) Err bitreich.org 70 i- (#xFBE1 #xE274) Err bitreich.org 70 i- (#xFBE0 #xE273) Err bitreich.org 70 i- (#xFBDF #xE272) Err bitreich.org 70 i- (#xFBDE #xE271) Err bitreich.org 70 i- (#xFBDD #xE270) Err bitreich.org 70 i- (#xFBDC #xE26F) Err bitreich.org 70 i- (#xFBDB #xE26E) Err bitreich.org 70 i- (#xFBDA #xE26D) Err bitreich.org 70 i- (#xFBD9 #xE26C) Err bitreich.org 70 i- (#xFBD8 #xE26B) Err bitreich.org 70 i- (#xFBD7 #xE26A) Err bitreich.org 70 i- (#xFBD6 #xE269) Err bitreich.org 70 i- (#xFBD5 #xE268) Err bitreich.org 70 i- (#xFBD4 #xE267) Err bitreich.org 70 i- (#xFBD3 #xE266) Err bitreich.org 70 i- (#xFBD2 #xE265) Err bitreich.org 70 i- (#xFBD1 #xE264) Err bitreich.org 70 i- (#xFBD0 #xE263) Err bitreich.org 70 i- (#xFBCF #xE262) Err bitreich.org 70 i- (#xFBCE #xE261) Err bitreich.org 70 i- (#xFBCD #xE260) Err bitreich.org 70 i- (#xFBCC #xE25F) Err bitreich.org 70 i- (#xFBCB #xE25E) Err bitreich.org 70 i- (#xFBCA #xE25D) Err bitreich.org 70 i- (#xFBC9 #xE25C) Err bitreich.org 70 i- (#xFBC8 #xE25B) Err bitreich.org 70 i- (#xFBC7 #xE25A) Err bitreich.org 70 i- (#xFBC6 #xE259) Err bitreich.org 70 i- (#xFBC5 #xE258) Err bitreich.org 70 i- (#xFBC4 #xE257) Err bitreich.org 70 i- (#xFBC3 #xE256) Err bitreich.org 70 i- (#xFBC2 #xE255) Err bitreich.org 70 i- (#xFBC1 #xE254) Err bitreich.org 70 i- (#xFBC0 #xE253) Err bitreich.org 70 i- (#xFBBF #xE252) Err bitreich.org 70 i- (#xFBBE #xE251) Err bitreich.org 70 i- (#xFBBD #xE250) Err bitreich.org 70 i- (#xFBBC #xE24F) Err bitreich.org 70 i- (#xFBBB #xE24E) Err bitreich.org 70 i- (#xFBBA #xE24D) Err bitreich.org 70 i- (#xFBB9 #xE24C) Err bitreich.org 70 i- (#xFBB8 #xE24B) Err bitreich.org 70 i- (#xFBB7 #xE24A) Err bitreich.org 70 i- (#xFBB6 #xE249) Err bitreich.org 70 i- (#xFBB5 #xE248) Err bitreich.org 70 i- (#xFBB4 #xE247) Err bitreich.org 70 i- (#xFBB3 #xE246) Err bitreich.org 70 i- (#xFBB2 #xE245) Err bitreich.org 70 i- (#xFBB1 #xE244) Err bitreich.org 70 i- (#xFBB0 #xE243) Err bitreich.org 70 i- (#xFBAF #xE242) Err bitreich.org 70 i- (#xFBAE #xE241) Err bitreich.org 70 i- (#xFBAD #xE240) Err bitreich.org 70 i- (#xFBAC #xE23F) Err bitreich.org 70 i- (#xFBAB #xE23E) Err bitreich.org 70 i- (#xFBAA #xE23D) Err bitreich.org 70 i- (#xFBA9 #xE23C) Err bitreich.org 70 i- (#xFBA8 #xE23B) Err bitreich.org 70 i- (#xFBA7 #xE23A) Err bitreich.org 70 i- (#xFBA6 #xE239) Err bitreich.org 70 i- (#xFBA5 #xE238) Err bitreich.org 70 i- (#xFBA4 #xE237) Err bitreich.org 70 i- (#xFBA3 #xE236) Err bitreich.org 70 i- (#xFBA2 #xE235) Err bitreich.org 70 i- (#xFBA1 #xE234) Err bitreich.org 70 i- (#xFAFE #xE233) Err bitreich.org 70 i- (#xFAFD #xE232) Err bitreich.org 70 i- (#xFAFC #xE231) Err bitreich.org 70 i- (#xFAFB #xE230) Err bitreich.org 70 i- (#xFAFA #xE22F) Err bitreich.org 70 i- (#xFAF9 #xE22E) Err bitreich.org 70 i- (#xFAF8 #xE22D) Err bitreich.org 70 i- (#xFAF7 #xE22C) Err bitreich.org 70 i- (#xFAF6 #xE22B) Err bitreich.org 70 i- (#xFAF5 #xE22A) Err bitreich.org 70 i- (#xFAF4 #xE229) Err bitreich.org 70 i- (#xFAF3 #xE228) Err bitreich.org 70 i- (#xFAF2 #xE227) Err bitreich.org 70 i- (#xFAF1 #xE226) Err bitreich.org 70 i- (#xFAF0 #xE225) Err bitreich.org 70 i- (#xFAEF #xE224) Err bitreich.org 70 i- (#xFAEE #xE223) Err bitreich.org 70 i- (#xFAED #xE222) Err bitreich.org 70 i- (#xFAEC #xE221) Err bitreich.org 70 i- (#xFAEB #xE220) Err bitreich.org 70 i- (#xFAEA #xE21F) Err bitreich.org 70 i- (#xFAE9 #xE21E) Err bitreich.org 70 i- (#xFAE8 #xE21D) Err bitreich.org 70 i- (#xFAE7 #xE21C) Err bitreich.org 70 i- (#xFAE6 #xE21B) Err bitreich.org 70 i- (#xFAE5 #xE21A) Err bitreich.org 70 i- (#xFAE4 #xE219) Err bitreich.org 70 i- (#xFAE3 #xE218) Err bitreich.org 70 i- (#xFAE2 #xE217) Err bitreich.org 70 i- (#xFAE1 #xE216) Err bitreich.org 70 i- (#xFAE0 #xE215) Err bitreich.org 70 i- (#xFADF #xE214) Err bitreich.org 70 i- (#xFADE #xE213) Err bitreich.org 70 i- (#xFADD #xE212) Err bitreich.org 70 i- (#xFADC #xE211) Err bitreich.org 70 i- (#xFADB #xE210) Err bitreich.org 70 i- (#xFADA #xE20F) Err bitreich.org 70 i- (#xFAD9 #xE20E) Err bitreich.org 70 i- (#xFAD8 #xE20D) Err bitreich.org 70 i- (#xFAD7 #xE20C) Err bitreich.org 70 i- (#xFAD6 #xE20B) Err bitreich.org 70 i- (#xFAD5 #xE20A) Err bitreich.org 70 i- (#xFAD4 #xE209) Err bitreich.org 70 i- (#xFAD3 #xE208) Err bitreich.org 70 i- (#xFAD2 #xE207) Err bitreich.org 70 i- (#xFAD1 #xE206) Err bitreich.org 70 i- (#xFAD0 #xE205) Err bitreich.org 70 i- (#xFACF #xE204) Err bitreich.org 70 i- (#xFACE #xE203) Err bitreich.org 70 i- (#xFACD #xE202) Err bitreich.org 70 i- (#xFACC #xE201) Err bitreich.org 70 i- (#xFACB #xE200) Err bitreich.org 70 i- (#xFACA #xE1FF) Err bitreich.org 70 i- (#xFAC9 #xE1FE) Err bitreich.org 70 i- (#xFAC8 #xE1FD) Err bitreich.org 70 i- (#xFAC7 #xE1FC) Err bitreich.org 70 i- (#xFAC6 #xE1FB) Err bitreich.org 70 i- (#xFAC5 #xE1FA) Err bitreich.org 70 i- (#xFAC4 #xE1F9) Err bitreich.org 70 i- (#xFAC3 #xE1F8) Err bitreich.org 70 i- (#xFAC2 #xE1F7) Err bitreich.org 70 i- (#xFAC1 #xE1F6) Err bitreich.org 70 i- (#xFAC0 #xE1F5) Err bitreich.org 70 i- (#xFABF #xE1F4) Err bitreich.org 70 i- (#xFABE #xE1F3) Err bitreich.org 70 i- (#xFABD #xE1F2) Err bitreich.org 70 i- (#xFABC #xE1F1) Err bitreich.org 70 i- (#xFABB #xE1F0) Err bitreich.org 70 i- (#xFABA #xE1EF) Err bitreich.org 70 i- (#xFAB9 #xE1EE) Err bitreich.org 70 i- (#xFAB8 #xE1ED) Err bitreich.org 70 i- (#xFAB7 #xE1EC) Err bitreich.org 70 i- (#xFAB6 #xE1EB) Err bitreich.org 70 i- (#xFAB5 #xE1EA) Err bitreich.org 70 i- (#xFAB4 #xE1E9) Err bitreich.org 70 i- (#xFAB3 #xE1E8) Err bitreich.org 70 i- (#xFAB2 #xE1E7) Err bitreich.org 70 i- (#xFAB1 #xE1E6) Err bitreich.org 70 i- (#xFAB0 #xE1E5) Err bitreich.org 70 i- (#xFAAF #xE1E4) Err bitreich.org 70 i- (#xFAAE #xE1E3) Err bitreich.org 70 i- (#xFAAD #xE1E2) Err bitreich.org 70 i- (#xFAAC #xE1E1) Err bitreich.org 70 i- (#xFAAB #xE1E0) Err bitreich.org 70 i- (#xFAAA #xE1DF) Err bitreich.org 70 i- (#xFAA9 #xE1DE) Err bitreich.org 70 i- (#xFAA8 #xE1DD) Err bitreich.org 70 i- (#xFAA7 #xE1DC) Err bitreich.org 70 i- (#xFAA6 #xE1DB) Err bitreich.org 70 i- (#xFAA5 #xE1DA) Err bitreich.org 70 i- (#xFAA4 #xE1D9) Err bitreich.org 70 i- (#xFAA3 #xE1D8) Err bitreich.org 70 i- (#xFAA2 #xE1D7) Err bitreich.org 70 i- (#xFAA1 #xE1D6) Err bitreich.org 70 i- (#xF9FE #xE1D5) Err bitreich.org 70 i- (#xF9FD #xE1D4) Err bitreich.org 70 i- (#xF9FC #xE1D3) Err bitreich.org 70 i- (#xF9FB #xE1D2) Err bitreich.org 70 i- (#xF9FA #xE1D1) Err bitreich.org 70 i- (#xF9F9 #xE1D0) Err bitreich.org 70 i- (#xF9F8 #xE1CF) Err bitreich.org 70 i- (#xF9F7 #xE1CE) Err bitreich.org 70 i- (#xF9F6 #xE1CD) Err bitreich.org 70 i- (#xF9F5 #xE1CC) Err bitreich.org 70 i- (#xF9F4 #xE1CB) Err bitreich.org 70 i- (#xF9F3 #xE1CA) Err bitreich.org 70 i- (#xF9F2 #xE1C9) Err bitreich.org 70 i- (#xF9F1 #xE1C8) Err bitreich.org 70 i- (#xF9F0 #xE1C7) Err bitreich.org 70 i- (#xF9EF #xE1C6) Err bitreich.org 70 i- (#xF9EE #xE1C5) Err bitreich.org 70 i- (#xF9ED #xE1C4) Err bitreich.org 70 i- (#xF9EC #xE1C3) Err bitreich.org 70 i- (#xF9EB #xE1C2) Err bitreich.org 70 i- (#xF9EA #xE1C1) Err bitreich.org 70 i- (#xF9E9 #xE1C0) Err bitreich.org 70 i- (#xF9E8 #xE1BF) Err bitreich.org 70 i- (#xF9E7 #xE1BE) Err bitreich.org 70 i- (#xF9E6 #xE1BD) Err bitreich.org 70 i- (#xF9E5 #xE1BC) Err bitreich.org 70 i- (#xF9E4 #xE1BB) Err bitreich.org 70 i- (#xF9E3 #xE1BA) Err bitreich.org 70 i- (#xF9E2 #xE1B9) Err bitreich.org 70 i- (#xF9E1 #xE1B8) Err bitreich.org 70 i- (#xF9E0 #xE1B7) Err bitreich.org 70 i- (#xF9DF #xE1B6) Err bitreich.org 70 i- (#xF9DE #xE1B5) Err bitreich.org 70 i- (#xF9DD #xE1B4) Err bitreich.org 70 i- (#xF9DC #xE1B3) Err bitreich.org 70 i- (#xF9DB #xE1B2) Err bitreich.org 70 i- (#xF9DA #xE1B1) Err bitreich.org 70 i- (#xF9D9 #xE1B0) Err bitreich.org 70 i- (#xF9D8 #xE1AF) Err bitreich.org 70 i- (#xF9D7 #xE1AE) Err bitreich.org 70 i- (#xF9D6 #xE1AD) Err bitreich.org 70 i- (#xF9D5 #xE1AC) Err bitreich.org 70 i- (#xF9D4 #xE1AB) Err bitreich.org 70 i- (#xF9D3 #xE1AA) Err bitreich.org 70 i- (#xF9D2 #xE1A9) Err bitreich.org 70 i- (#xF9D1 #xE1A8) Err bitreich.org 70 i- (#xF9D0 #xE1A7) Err bitreich.org 70 i- (#xF9CF #xE1A6) Err bitreich.org 70 i- (#xF9CE #xE1A5) Err bitreich.org 70 i- (#xF9CD #xE1A4) Err bitreich.org 70 i- (#xF9CC #xE1A3) Err bitreich.org 70 i- (#xF9CB #xE1A2) Err bitreich.org 70 i- (#xF9CA #xE1A1) Err bitreich.org 70 i- (#xF9C9 #xE1A0) Err bitreich.org 70 i- (#xF9C8 #xE19F) Err bitreich.org 70 i- (#xF9C7 #xE19E) Err bitreich.org 70 i- (#xF9C6 #xE19D) Err bitreich.org 70 i- (#xF9C5 #xE19C) Err bitreich.org 70 i- (#xF9C4 #xE19B) Err bitreich.org 70 i- (#xF9C3 #xE19A) Err bitreich.org 70 i- (#xF9C2 #xE199) Err bitreich.org 70 i- (#xF9C1 #xE198) Err bitreich.org 70 i- (#xF9C0 #xE197) Err bitreich.org 70 i- (#xF9BF #xE196) Err bitreich.org 70 i- (#xF9BE #xE195) Err bitreich.org 70 i- (#xF9BD #xE194) Err bitreich.org 70 i- (#xF9BC #xE193) Err bitreich.org 70 i- (#xF9BB #xE192) Err bitreich.org 70 i- (#xF9BA #xE191) Err bitreich.org 70 i- (#xF9B9 #xE190) Err bitreich.org 70 i- (#xF9B8 #xE18F) Err bitreich.org 70 i- (#xF9B7 #xE18E) Err bitreich.org 70 i- (#xF9B6 #xE18D) Err bitreich.org 70 i- (#xF9B5 #xE18C) Err bitreich.org 70 i- (#xF9B4 #xE18B) Err bitreich.org 70 i- (#xF9B3 #xE18A) Err bitreich.org 70 i- (#xF9B2 #xE189) Err bitreich.org 70 i- (#xF9B1 #xE188) Err bitreich.org 70 i- (#xF9B0 #xE187) Err bitreich.org 70 i- (#xF9AF #xE186) Err bitreich.org 70 i- (#xF9AE #xE185) Err bitreich.org 70 i- (#xF9AD #xE184) Err bitreich.org 70 i- (#xF9AC #xE183) Err bitreich.org 70 i- (#xF9AB #xE182) Err bitreich.org 70 i- (#xF9AA #xE181) Err bitreich.org 70 i- (#xF9A9 #xE180) Err bitreich.org 70 i- (#xF9A8 #xE17F) Err bitreich.org 70 i- (#xF9A7 #xE17E) Err bitreich.org 70 i- (#xF9A6 #xE17D) Err bitreich.org 70 i- (#xF9A5 #xE17C) Err bitreich.org 70 i- (#xF9A4 #xE17B) Err bitreich.org 70 i- (#xF9A3 #xE17A) Err bitreich.org 70 i- (#xF9A2 #xE179) Err bitreich.org 70 i- (#xF9A1 #xE178) Err bitreich.org 70 i- (#xF8FE #xE177) Err bitreich.org 70 i- (#xF8FD #xE176) Err bitreich.org 70 i- (#xF8FC #xE175) Err bitreich.org 70 i- (#xF8FB #xE174) Err bitreich.org 70 i- (#xF8FA #xE173) Err bitreich.org 70 i- (#xF8F9 #xE172) Err bitreich.org 70 i- (#xF8F8 #xE171) Err bitreich.org 70 i- (#xF8F7 #xE170) Err bitreich.org 70 i- (#xF8F6 #xE16F) Err bitreich.org 70 i- (#xF8F5 #xE16E) Err bitreich.org 70 i- (#xF8F4 #xE16D) Err bitreich.org 70 i- (#xF8F3 #xE16C) Err bitreich.org 70 i- (#xF8F2 #xE16B) Err bitreich.org 70 i- (#xF8F1 #xE16A) Err bitreich.org 70 i- (#xF8F0 #xE169) Err bitreich.org 70 i- (#xF8EF #xE168) Err bitreich.org 70 i- (#xF8EE #xE167) Err bitreich.org 70 i- (#xF8ED #xE166) Err bitreich.org 70 i- (#xF8EC #xE165) Err bitreich.org 70 i- (#xF8EB #xE164) Err bitreich.org 70 i- (#xF8EA #xE163) Err bitreich.org 70 i- (#xF8E9 #xE162) Err bitreich.org 70 i- (#xF8E8 #xE161) Err bitreich.org 70 i- (#xF8E7 #xE160) Err bitreich.org 70 i- (#xF8E6 #xE15F) Err bitreich.org 70 i- (#xF8E5 #xE15E) Err bitreich.org 70 i- (#xF8E4 #xE15D) Err bitreich.org 70 i- (#xF8E3 #xE15C) Err bitreich.org 70 i- (#xF8E2 #xE15B) Err bitreich.org 70 i- (#xF8E1 #xE15A) Err bitreich.org 70 i- (#xF8E0 #xE159) Err bitreich.org 70 i- (#xF8DF #xE158) Err bitreich.org 70 i- (#xF8DE #xE157) Err bitreich.org 70 i- (#xF8DD #xE156) Err bitreich.org 70 i- (#xF8DC #xE155) Err bitreich.org 70 i- (#xF8DB #xE154) Err bitreich.org 70 i- (#xF8DA #xE153) Err bitreich.org 70 i- (#xF8D9 #xE152) Err bitreich.org 70 i- (#xF8D8 #xE151) Err bitreich.org 70 i- (#xF8D7 #xE150) Err bitreich.org 70 i- (#xF8D6 #xE14F) Err bitreich.org 70 i- (#xF8D5 #xE14E) Err bitreich.org 70 i- (#xF8D4 #xE14D) Err bitreich.org 70 i- (#xF8D3 #xE14C) Err bitreich.org 70 i- (#xF8D2 #xE14B) Err bitreich.org 70 i- (#xF8D1 #xE14A) Err bitreich.org 70 i- (#xF8D0 #xE149) Err bitreich.org 70 i- (#xF8CF #xE148) Err bitreich.org 70 i- (#xF8CE #xE147) Err bitreich.org 70 i- (#xF8CD #xE146) Err bitreich.org 70 i- (#xF8CC #xE145) Err bitreich.org 70 i- (#xF8CB #xE144) Err bitreich.org 70 i- (#xF8CA #xE143) Err bitreich.org 70 i- (#xF8C9 #xE142) Err bitreich.org 70 i- (#xF8C8 #xE141) Err bitreich.org 70 i- (#xF8C7 #xE140) Err bitreich.org 70 i- (#xF8C6 #xE13F) Err bitreich.org 70 i- (#xF8C5 #xE13E) Err bitreich.org 70 i- (#xF8C4 #xE13D) Err bitreich.org 70 i- (#xF8C3 #xE13C) Err bitreich.org 70 i- (#xF8C2 #xE13B) Err bitreich.org 70 i- (#xF8C1 #xE13A) Err bitreich.org 70 i- (#xF8C0 #xE139) Err bitreich.org 70 i- (#xF8BF #xE138) Err bitreich.org 70 i- (#xF8BE #xE137) Err bitreich.org 70 i- (#xF8BD #xE136) Err bitreich.org 70 i- (#xF8BC #xE135) Err bitreich.org 70 i- (#xF8BB #xE134) Err bitreich.org 70 i- (#xF8BA #xE133) Err bitreich.org 70 i- (#xF8B9 #xE132) Err bitreich.org 70 i- (#xF8B8 #xE131) Err bitreich.org 70 i- (#xF8B7 #xE130) Err bitreich.org 70 i- (#xF8B6 #xE12F) Err bitreich.org 70 i- (#xF8B5 #xE12E) Err bitreich.org 70 i- (#xF8B4 #xE12D) Err bitreich.org 70 i- (#xF8B3 #xE12C) Err bitreich.org 70 i- (#xF8B2 #xE12B) Err bitreich.org 70 i- (#xF8B1 #xE12A) Err bitreich.org 70 i- (#xF8B0 #xE129) Err bitreich.org 70 i- (#xF8AF #xE128) Err bitreich.org 70 i- (#xF8AE #xE127) Err bitreich.org 70 i- (#xF8AD #xE126) Err bitreich.org 70 i- (#xF8AC #xE125) Err bitreich.org 70 i- (#xF8AB #xE124) Err bitreich.org 70 i- (#xF8AA #xE123) Err bitreich.org 70 i- (#xF8A9 #xE122) Err bitreich.org 70 i- (#xF8A8 #xE121) Err bitreich.org 70 i- (#xF8A7 #xE120) Err bitreich.org 70 i- (#xF8A6 #xE11F) Err bitreich.org 70 i- (#xF8A5 #xE11E) Err bitreich.org 70 i- (#xF8A4 #xE11D) Err bitreich.org 70 i- (#xF8A3 #xE11C) Err bitreich.org 70 i- (#xF8A2 #xE11B) Err bitreich.org 70 i- (#xF8A1 #xE11A) Err bitreich.org 70 i- (#xF7FE #xE119) Err bitreich.org 70 i- (#xF7FD #xE118) Err bitreich.org 70 i- (#xF7FC #xE117) Err bitreich.org 70 i- (#xF7FB #xE116) Err bitreich.org 70 i- (#xF7FA #xE115) Err bitreich.org 70 i- (#xF7F9 #xE114) Err bitreich.org 70 i- (#xF7F8 #xE113) Err bitreich.org 70 i- (#xF7F7 #xE112) Err bitreich.org 70 i- (#xF7F6 #xE111) Err bitreich.org 70 i- (#xF7F5 #xE110) Err bitreich.org 70 i- (#xF7F4 #xE10F) Err bitreich.org 70 i- (#xF7F3 #xE10E) Err bitreich.org 70 i- (#xF7F2 #xE10D) Err bitreich.org 70 i- (#xF7F1 #xE10C) Err bitreich.org 70 i- (#xF7F0 #xE10B) Err bitreich.org 70 i- (#xF7EF #xE10A) Err bitreich.org 70 i- (#xF7EE #xE109) Err bitreich.org 70 i- (#xF7ED #xE108) Err bitreich.org 70 i- (#xF7EC #xE107) Err bitreich.org 70 i- (#xF7EB #xE106) Err bitreich.org 70 i- (#xF7EA #xE105) Err bitreich.org 70 i- (#xF7E9 #xE104) Err bitreich.org 70 i- (#xF7E8 #xE103) Err bitreich.org 70 i- (#xF7E7 #xE102) Err bitreich.org 70 i- (#xF7E6 #xE101) Err bitreich.org 70 i- (#xF7E5 #xE100) Err bitreich.org 70 i- (#xF7E4 #xE0FF) Err bitreich.org 70 i- (#xF7E3 #xE0FE) Err bitreich.org 70 i- (#xF7E2 #xE0FD) Err bitreich.org 70 i- (#xF7E1 #xE0FC) Err bitreich.org 70 i- (#xF7E0 #xE0FB) Err bitreich.org 70 i- (#xF7DF #xE0FA) Err bitreich.org 70 i- (#xF7DE #xE0F9) Err bitreich.org 70 i- (#xF7DD #xE0F8) Err bitreich.org 70 i- (#xF7DC #xE0F7) Err bitreich.org 70 i- (#xF7DB #xE0F6) Err bitreich.org 70 i- (#xF7DA #xE0F5) Err bitreich.org 70 i- (#xF7D9 #xE0F4) Err bitreich.org 70 i- (#xF7D8 #xE0F3) Err bitreich.org 70 i- (#xF7D7 #xE0F2) Err bitreich.org 70 i- (#xF7D6 #xE0F1) Err bitreich.org 70 i- (#xF7D5 #xE0F0) Err bitreich.org 70 i- (#xF7D4 #xE0EF) Err bitreich.org 70 i- (#xF7D3 #xE0EE) Err bitreich.org 70 i- (#xF7D2 #xE0ED) Err bitreich.org 70 i- (#xF7D1 #xE0EC) Err bitreich.org 70 i- (#xF7D0 #xE0EB) Err bitreich.org 70 i- (#xF7CF #xE0EA) Err bitreich.org 70 i- (#xF7CE #xE0E9) Err bitreich.org 70 i- (#xF7CD #xE0E8) Err bitreich.org 70 i- (#xF7CC #xE0E7) Err bitreich.org 70 i- (#xF7CB #xE0E6) Err bitreich.org 70 i- (#xF7CA #xE0E5) Err bitreich.org 70 i- (#xF7C9 #xE0E4) Err bitreich.org 70 i- (#xF7C8 #xE0E3) Err bitreich.org 70 i- (#xF7C7 #xE0E2) Err bitreich.org 70 i- (#xF7C6 #xE0E1) Err bitreich.org 70 i- (#xF7C5 #xE0E0) Err bitreich.org 70 i- (#xF7C4 #xE0DF) Err bitreich.org 70 i- (#xF7C3 #xE0DE) Err bitreich.org 70 i- (#xF7C2 #xE0DD) Err bitreich.org 70 i- (#xF7C1 #xE0DC) Err bitreich.org 70 i- (#xF7C0 #xE0DB) Err bitreich.org 70 i- (#xF7BF #xE0DA) Err bitreich.org 70 i- (#xF7BE #xE0D9) Err bitreich.org 70 i- (#xF7BD #xE0D8) Err bitreich.org 70 i- (#xF7BC #xE0D7) Err bitreich.org 70 i- (#xF7BB #xE0D6) Err bitreich.org 70 i- (#xF7BA #xE0D5) Err bitreich.org 70 i- (#xF7B9 #xE0D4) Err bitreich.org 70 i- (#xF7B8 #xE0D3) Err bitreich.org 70 i- (#xF7B7 #xE0D2) Err bitreich.org 70 i- (#xF7B6 #xE0D1) Err bitreich.org 70 i- (#xF7B5 #xE0D0) Err bitreich.org 70 i- (#xF7B4 #xE0CF) Err bitreich.org 70 i- (#xF7B3 #xE0CE) Err bitreich.org 70 i- (#xF7B2 #xE0CD) Err bitreich.org 70 i- (#xF7B1 #xE0CC) Err bitreich.org 70 i- (#xF7B0 #xE0CB) Err bitreich.org 70 i- (#xF7AF #xE0CA) Err bitreich.org 70 i- (#xF7AE #xE0C9) Err bitreich.org 70 i- (#xF7AD #xE0C8) Err bitreich.org 70 i- (#xF7AC #xE0C7) Err bitreich.org 70 i- (#xF7AB #xE0C6) Err bitreich.org 70 i- (#xF7AA #xE0C5) Err bitreich.org 70 i- (#xF7A9 #xE0C4) Err bitreich.org 70 i- (#xF7A8 #xE0C3) Err bitreich.org 70 i- (#xF7A7 #xE0C2) Err bitreich.org 70 i- (#xF7A6 #xE0C1) Err bitreich.org 70 i- (#xF7A5 #xE0C0) Err bitreich.org 70 i- (#xF7A4 #xE0BF) Err bitreich.org 70 i- (#xF7A3 #xE0BE) Err bitreich.org 70 i- (#xF7A2 #xE0BD) Err bitreich.org 70 i- (#xF7A1 #xE0BC) Err bitreich.org 70 i- (#xF6FE #xE0BB) Err bitreich.org 70 i- (#xF6FD #xE0BA) Err bitreich.org 70 i- (#xF6FC #xE0B9) Err bitreich.org 70 i- (#xF6FB #xE0B8) Err bitreich.org 70 i- (#xF6FA #xE0B7) Err bitreich.org 70 i- (#xF6F9 #xE0B6) Err bitreich.org 70 i- (#xF6F8 #xE0B5) Err bitreich.org 70 i- (#xF6F7 #xE0B4) Err bitreich.org 70 i- (#xF6F6 #xE0B3) Err bitreich.org 70 i- (#xF6F5 #xE0B2) Err bitreich.org 70 i- (#xF6F4 #xE0B1) Err bitreich.org 70 i- (#xF6F3 #xE0B0) Err bitreich.org 70 i- (#xF6F2 #xE0AF) Err bitreich.org 70 i- (#xF6F1 #xE0AE) Err bitreich.org 70 i- (#xF6F0 #xE0AD) Err bitreich.org 70 i- (#xF6EF #xE0AC) Err bitreich.org 70 i- (#xF6EE #xE0AB) Err bitreich.org 70 i- (#xF6ED #xE0AA) Err bitreich.org 70 i- (#xF6EC #xE0A9) Err bitreich.org 70 i- (#xF6EB #xE0A8) Err bitreich.org 70 i- (#xF6EA #xE0A7) Err bitreich.org 70 i- (#xF6E9 #xE0A6) Err bitreich.org 70 i- (#xF6E8 #xE0A5) Err bitreich.org 70 i- (#xF6E7 #xE0A4) Err bitreich.org 70 i- (#xF6E6 #xE0A3) Err bitreich.org 70 i- (#xF6E5 #xE0A2) Err bitreich.org 70 i- (#xF6E4 #xE0A1) Err bitreich.org 70 i- (#xF6E3 #xE0A0) Err bitreich.org 70 i- (#xF6E2 #xE09F) Err bitreich.org 70 i- (#xF6E1 #xE09E) Err bitreich.org 70 i- (#xF6E0 #xE09D) Err bitreich.org 70 i- (#xF6DF #xE09C) Err bitreich.org 70 i- (#xF6DE #xE09B) Err bitreich.org 70 i- (#xF6DD #xE09A) Err bitreich.org 70 i- (#xF6DC #xE099) Err bitreich.org 70 i- (#xF6DB #xE098) Err bitreich.org 70 i- (#xF6DA #xE097) Err bitreich.org 70 i- (#xF6D9 #xE096) Err bitreich.org 70 i- (#xF6D8 #xE095) Err bitreich.org 70 i- (#xF6D7 #xE094) Err bitreich.org 70 i- (#xF6D6 #xE093) Err bitreich.org 70 i- (#xF6D5 #xE092) Err bitreich.org 70 i- (#xF6D4 #xE091) Err bitreich.org 70 i- (#xF6D3 #xE090) Err bitreich.org 70 i- (#xF6D2 #xE08F) Err bitreich.org 70 i- (#xF6D1 #xE08E) Err bitreich.org 70 i- (#xF6D0 #xE08D) Err bitreich.org 70 i- (#xF6CF #xE08C) Err bitreich.org 70 i- (#xF6CE #xE08B) Err bitreich.org 70 i- (#xF6CD #xE08A) Err bitreich.org 70 i- (#xF6CC #xE089) Err bitreich.org 70 i- (#xF6CB #xE088) Err bitreich.org 70 i- (#xF6CA #xE087) Err bitreich.org 70 i- (#xF6C9 #xE086) Err bitreich.org 70 i- (#xF6C8 #xE085) Err bitreich.org 70 i- (#xF6C7 #xE084) Err bitreich.org 70 i- (#xF6C6 #xE083) Err bitreich.org 70 i- (#xF6C5 #xE082) Err bitreich.org 70 i- (#xF6C4 #xE081) Err bitreich.org 70 i- (#xF6C3 #xE080) Err bitreich.org 70 i- (#xF6C2 #xE07F) Err bitreich.org 70 i- (#xF6C1 #xE07E) Err bitreich.org 70 i- (#xF6C0 #xE07D) Err bitreich.org 70 i- (#xF6BF #xE07C) Err bitreich.org 70 i- (#xF6BE #xE07B) Err bitreich.org 70 i- (#xF6BD #xE07A) Err bitreich.org 70 i- (#xF6BC #xE079) Err bitreich.org 70 i- (#xF6BB #xE078) Err bitreich.org 70 i- (#xF6BA #xE077) Err bitreich.org 70 i- (#xF6B9 #xE076) Err bitreich.org 70 i- (#xF6B8 #xE075) Err bitreich.org 70 i- (#xF6B7 #xE074) Err bitreich.org 70 i- (#xF6B6 #xE073) Err bitreich.org 70 i- (#xF6B5 #xE072) Err bitreich.org 70 i- (#xF6B4 #xE071) Err bitreich.org 70 i- (#xF6B3 #xE070) Err bitreich.org 70 i- (#xF6B2 #xE06F) Err bitreich.org 70 i- (#xF6B1 #xE06E) Err bitreich.org 70 i- (#xF6B0 #xE06D) Err bitreich.org 70 i- (#xF6AF #xE06C) Err bitreich.org 70 i- (#xF6AE #xE06B) Err bitreich.org 70 i- (#xF6AD #xE06A) Err bitreich.org 70 i- (#xF6AC #xE069) Err bitreich.org 70 i- (#xF6AB #xE068) Err bitreich.org 70 i- (#xF6AA #xE067) Err bitreich.org 70 i- (#xF6A9 #xE066) Err bitreich.org 70 i- (#xF6A8 #xE065) Err bitreich.org 70 i- (#xF6A7 #xE064) Err bitreich.org 70 i- (#xF6A6 #xE063) Err bitreich.org 70 i- (#xF6A5 #xE062) Err bitreich.org 70 i- (#xF6A4 #xE061) Err bitreich.org 70 i- (#xF6A3 #xE060) Err bitreich.org 70 i- (#xF6A2 #xE05F) Err bitreich.org 70 i- (#xF6A1 #xE05E) Err bitreich.org 70 i- (#xF5FE #xE05D) Err bitreich.org 70 i- (#xF5FD #xE05C) Err bitreich.org 70 i- (#xF5FC #xE05B) Err bitreich.org 70 i- (#xF5FB #xE05A) Err bitreich.org 70 i- (#xF5FA #xE059) Err bitreich.org 70 i- (#xF5F9 #xE058) Err bitreich.org 70 i- (#xF5F8 #xE057) Err bitreich.org 70 i- (#xF5F7 #xE056) Err bitreich.org 70 i- (#xF5F6 #xE055) Err bitreich.org 70 i- (#xF5F5 #xE054) Err bitreich.org 70 i- (#xF5F4 #xE053) Err bitreich.org 70 i- (#xF5F3 #xE052) Err bitreich.org 70 i- (#xF5F2 #xE051) Err bitreich.org 70 i- (#xF5F1 #xE050) Err bitreich.org 70 i- (#xF5F0 #xE04F) Err bitreich.org 70 i- (#xF5EF #xE04E) Err bitreich.org 70 i- (#xF5EE #xE04D) Err bitreich.org 70 i- (#xF5ED #xE04C) Err bitreich.org 70 i- (#xF5EC #xE04B) Err bitreich.org 70 i- (#xF5EB #xE04A) Err bitreich.org 70 i- (#xF5EA #xE049) Err bitreich.org 70 i- (#xF5E9 #xE048) Err bitreich.org 70 i- (#xF5E8 #xE047) Err bitreich.org 70 i- (#xF5E7 #xE046) Err bitreich.org 70 i- (#xF5E6 #xE045) Err bitreich.org 70 i- (#xF5E5 #xE044) Err bitreich.org 70 i- (#xF5E4 #xE043) Err bitreich.org 70 i- (#xF5E3 #xE042) Err bitreich.org 70 i- (#xF5E2 #xE041) Err bitreich.org 70 i- (#xF5E1 #xE040) Err bitreich.org 70 i- (#xF5E0 #xE03F) Err bitreich.org 70 i- (#xF5DF #xE03E) Err bitreich.org 70 i- (#xF5DE #xE03D) Err bitreich.org 70 i- (#xF5DD #xE03C) Err bitreich.org 70 i- (#xF5DC #xE03B) Err bitreich.org 70 i- (#xF5DB #xE03A) Err bitreich.org 70 i- (#xF5DA #xE039) Err bitreich.org 70 i- (#xF5D9 #xE038) Err bitreich.org 70 i- (#xF5D8 #xE037) Err bitreich.org 70 i- (#xF5D7 #xE036) Err bitreich.org 70 i- (#xF5D6 #xE035) Err bitreich.org 70 i- (#xF5D5 #xE034) Err bitreich.org 70 i- (#xF5D4 #xE033) Err bitreich.org 70 i- (#xF5D3 #xE032) Err bitreich.org 70 i- (#xF5D2 #xE031) Err bitreich.org 70 i- (#xF5D1 #xE030) Err bitreich.org 70 i- (#xF5D0 #xE02F) Err bitreich.org 70 i- (#xF5CF #xE02E) Err bitreich.org 70 i- (#xF5CE #xE02D) Err bitreich.org 70 i- (#xF5CD #xE02C) Err bitreich.org 70 i- (#xF5CC #xE02B) Err bitreich.org 70 i- (#xF5CB #xE02A) Err bitreich.org 70 i- (#xF5CA #xE029) Err bitreich.org 70 i- (#xF5C9 #xE028) Err bitreich.org 70 i- (#xF5C8 #xE027) Err bitreich.org 70 i- (#xF5C7 #xE026) Err bitreich.org 70 i- (#xF5C6 #xE025) Err bitreich.org 70 i- (#xF5C5 #xE024) Err bitreich.org 70 i- (#xF5C4 #xE023) Err bitreich.org 70 i- (#xF5C3 #xE022) Err bitreich.org 70 i- (#xF5C2 #xE021) Err bitreich.org 70 i- (#xF5C1 #xE020) Err bitreich.org 70 i- (#xF5C0 #xE01F) Err bitreich.org 70 i- (#xF5BF #xE01E) Err bitreich.org 70 i- (#xF5BE #xE01D) Err bitreich.org 70 i- (#xF5BD #xE01C) Err bitreich.org 70 i- (#xF5BC #xE01B) Err bitreich.org 70 i- (#xF5BB #xE01A) Err bitreich.org 70 i- (#xF5BA #xE019) Err bitreich.org 70 i- (#xF5B9 #xE018) Err bitreich.org 70 i- (#xF5B8 #xE017) Err bitreich.org 70 i- (#xF5B7 #xE016) Err bitreich.org 70 i- (#xF5B6 #xE015) Err bitreich.org 70 i- (#xF5B5 #xE014) Err bitreich.org 70 i- (#xF5B4 #xE013) Err bitreich.org 70 i- (#xF5B3 #xE012) Err bitreich.org 70 i- (#xF5B2 #xE011) Err bitreich.org 70 i- (#xF5B1 #xE010) Err bitreich.org 70 i- (#xF5B0 #xE00F) Err bitreich.org 70 i- (#xF5AF #xE00E) Err bitreich.org 70 i- (#xF5AE #xE00D) Err bitreich.org 70 i- (#xF5AD #xE00C) Err bitreich.org 70 i- (#xF5AC #xE00B) Err bitreich.org 70 i- (#xF5AB #xE00A) Err bitreich.org 70 i- (#xF5AA #xE009) Err bitreich.org 70 i- (#xF5A9 #xE008) Err bitreich.org 70 i- (#xF5A8 #xE007) Err bitreich.org 70 i- (#xF5A7 #xE006) Err bitreich.org 70 i- (#xF5A6 #xE005) Err bitreich.org 70 i- (#xF5A5 #xE004) Err bitreich.org 70 i- (#xF5A4 #xE003) Err bitreich.org 70 i- (#xF5A3 #xE002) Err bitreich.org 70 i- (#xF5A2 #xE001) Err bitreich.org 70 i- (#xF5A1 #xE000) Err bitreich.org 70 i- )) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *eucjp* Err bitreich.org 70 i- '((#x8FA2AF #x2D8) Err bitreich.org 70 i- (#x8FA2B0 #x2C7) Err bitreich.org 70 i- (#x8FA2B1 #xB8) Err bitreich.org 70 i- (#x8FA2B2 #x2D9) Err bitreich.org 70 i- (#x8FA2B3 #x2DD) Err bitreich.org 70 i- (#x8FA2B4 #xAF) Err bitreich.org 70 i- (#x8FA2B5 #x2DB) Err bitreich.org 70 i- (#x8FA2B6 #x2DA) Err bitreich.org 70 i- (#x8FA2B7 #xFF5E) Err bitreich.org 70 i- (#x8FA2B8 #x384) Err bitreich.org 70 i- (#x8FA2B9 #x385) Err bitreich.org 70 i- (#x8FA2C2 #xA1) Err bitreich.org 70 i- (#x8FA2C3 #xA6) Err bitreich.org 70 i- (#x8FA2C4 #xBF) Err bitreich.org 70 i- (#x8FA2EB #xBA) Err bitreich.org 70 i- (#x8FA2EC #xAA) Err bitreich.org 70 i- (#x8FA2ED #xA9) Err bitreich.org 70 i- (#x8FA2EE #xAE) Err bitreich.org 70 i- (#x8FA2EF #x2122) Err bitreich.org 70 i- (#x8FA2F0 #xA4) Err bitreich.org 70 i- (#x8FA2F1 #x2116) Err bitreich.org 70 i- (#x8FA6E1 #x386) Err bitreich.org 70 i- (#x8FA6E2 #x388) Err bitreich.org 70 i- (#x8FA6E3 #x389) Err bitreich.org 70 i- (#x8FA6E4 #x38A) Err bitreich.org 70 i- (#x8FA6E5 #x3AA) Err bitreich.org 70 i- (#x8FA6E7 #x38C) Err bitreich.org 70 i- (#x8FA6E9 #x38E) Err bitreich.org 70 i- (#x8FA6EA #x3AB) Err bitreich.org 70 i- (#x8FA6EC #x38F) Err bitreich.org 70 i- (#x8FA6F1 #x3AC) Err bitreich.org 70 i- (#x8FA6F2 #x3AD) Err bitreich.org 70 i- (#x8FA6F3 #x3AE) Err bitreich.org 70 i- (#x8FA6F4 #x3AF) Err bitreich.org 70 i- (#x8FA6F5 #x3CA) Err bitreich.org 70 i- (#x8FA6F6 #x390) Err bitreich.org 70 i- (#x8FA6F7 #x3CC) Err bitreich.org 70 i- (#x8FA6F8 #x3C2) Err bitreich.org 70 i- (#x8FA6F9 #x3CD) Err bitreich.org 70 i- (#x8FA6FA #x3CB) Err bitreich.org 70 i- (#x8FA6FB #x3B0) Err bitreich.org 70 i- (#x8FA6FC #x3CE) Err bitreich.org 70 i- (#x8FA7C2 #x402) Err bitreich.org 70 i- (#x8FA7C3 #x403) Err bitreich.org 70 i- (#x8FA7C4 #x404) Err bitreich.org 70 i- (#x8FA7C5 #x405) Err bitreich.org 70 i- (#x8FA7C6 #x406) Err bitreich.org 70 i- (#x8FA7C7 #x407) Err bitreich.org 70 i- (#x8FA7C8 #x408) Err bitreich.org 70 i- (#x8FA7C9 #x409) Err bitreich.org 70 i- (#x8FA7CA #x40A) Err bitreich.org 70 i- (#x8FA7CB #x40B) Err bitreich.org 70 i- (#x8FA7CC #x40C) Err bitreich.org 70 i- (#x8FA7CD #x40E) Err bitreich.org 70 i- (#x8FA7CE #x40F) Err bitreich.org 70 i- (#x8FA7F2 #x452) Err bitreich.org 70 i- (#x8FA7F3 #x453) Err bitreich.org 70 i- (#x8FA7F4 #x454) Err bitreich.org 70 i- (#x8FA7F5 #x455) Err bitreich.org 70 i- (#x8FA7F6 #x456) Err bitreich.org 70 i- (#x8FA7F7 #x457) Err bitreich.org 70 i- (#x8FA7F8 #x458) Err bitreich.org 70 i- (#x8FA7F9 #x459) Err bitreich.org 70 i- (#x8FA7FA #x45A) Err bitreich.org 70 i- (#x8FA7FB #x45B) Err bitreich.org 70 i- (#x8FA7FC #x45C) Err bitreich.org 70 i- (#x8FA7FD #x45E) Err bitreich.org 70 i- (#x8FA7FE #x45F) Err bitreich.org 70 i- (#x8FA9A1 #xC6) Err bitreich.org 70 i- (#x8FA9A2 #x110) Err bitreich.org 70 i- (#x8FA9A4 #x126) Err bitreich.org 70 i- (#x8FA9A6 #x132) Err bitreich.org 70 i- (#x8FA9A8 #x141) Err bitreich.org 70 i- (#x8FA9A9 #x13F) Err bitreich.org 70 i- (#x8FA9AB #x14A) Err bitreich.org 70 i- (#x8FA9AC #xD8) Err bitreich.org 70 i- (#x8FA9AD #x152) Err bitreich.org 70 i- (#x8FA9AF #x166) Err bitreich.org 70 i- (#x8FA9B0 #xDE) Err bitreich.org 70 i- (#x8FA9C1 #xE6) Err bitreich.org 70 i- (#x8FA9C2 #x111) Err bitreich.org 70 i- (#x8FA9C3 #xF0) Err bitreich.org 70 i- (#x8FA9C4 #x127) Err bitreich.org 70 i- (#x8FA9C5 #x131) Err bitreich.org 70 i- (#x8FA9C6 #x133) Err bitreich.org 70 i- (#x8FA9C7 #x138) Err bitreich.org 70 i- (#x8FA9C8 #x142) Err bitreich.org 70 i- (#x8FA9C9 #x140) Err bitreich.org 70 i- (#x8FA9CA #x149) Err bitreich.org 70 i- (#x8FA9CB #x14B) Err bitreich.org 70 i- (#x8FA9CC #xF8) Err bitreich.org 70 i- (#x8FA9CD #x153) Err bitreich.org 70 i- (#x8FA9CE #xDF) Err bitreich.org 70 i- (#x8FA9CF #x167) Err bitreich.org 70 i- (#x8FA9D0 #xFE) Err bitreich.org 70 i- (#x8FAAA1 #xC1) Err bitreich.org 70 i- (#x8FAAA2 #xC0) Err bitreich.org 70 i- (#x8FAAA3 #xC4) Err bitreich.org 70 i- (#x8FAAA4 #xC2) Err bitreich.org 70 i- (#x8FAAA5 #x102) Err bitreich.org 70 i- (#x8FAAA6 #x1CD) Err bitreich.org 70 i- (#x8FAAA7 #x100) Err bitreich.org 70 i- (#x8FAAA8 #x104) Err bitreich.org 70 i- (#x8FAAA9 #xC5) Err bitreich.org 70 i- (#x8FAAAA #xC3) Err bitreich.org 70 i- (#x8FAAAB #x106) Err bitreich.org 70 i- (#x8FAAAC #x108) Err bitreich.org 70 i- (#x8FAAAD #x10C) Err bitreich.org 70 i- (#x8FAAAE #xC7) Err bitreich.org 70 i- (#x8FAAAF #x10A) Err bitreich.org 70 i- (#x8FAAB0 #x10E) Err bitreich.org 70 i- (#x8FAAB1 #xC9) Err bitreich.org 70 i- (#x8FAAB2 #xC8) Err bitreich.org 70 i- (#x8FAAB3 #xCB) Err bitreich.org 70 i- (#x8FAAB4 #xCA) Err bitreich.org 70 i- (#x8FAAB5 #x11A) Err bitreich.org 70 i- (#x8FAAB6 #x116) Err bitreich.org 70 i- (#x8FAAB7 #x112) Err bitreich.org 70 i- (#x8FAAB8 #x118) Err bitreich.org 70 i- (#x8FAABA #x11C) Err bitreich.org 70 i- (#x8FAABB #x11E) Err bitreich.org 70 i- (#x8FAABC #x122) Err bitreich.org 70 i- (#x8FAABD #x120) Err bitreich.org 70 i- (#x8FAABE #x124) Err bitreich.org 70 i- (#x8FAABF #xCD) Err bitreich.org 70 i- (#x8FAAC0 #xCC) Err bitreich.org 70 i- (#x8FAAC1 #xCF) Err bitreich.org 70 i- (#x8FAAC2 #xCE) Err bitreich.org 70 i- (#x8FAAC3 #x1CF) Err bitreich.org 70 i- (#x8FAAC4 #x130) Err bitreich.org 70 i- (#x8FAAC5 #x12A) Err bitreich.org 70 i- (#x8FAAC6 #x12E) Err bitreich.org 70 i- (#x8FAAC7 #x128) Err bitreich.org 70 i- (#x8FAAC8 #x134) Err bitreich.org 70 i- (#x8FAAC9 #x136) Err bitreich.org 70 i- (#x8FAACA #x139) Err bitreich.org 70 i- (#x8FAACB #x13D) Err bitreich.org 70 i- (#x8FAACC #x13B) Err bitreich.org 70 i- (#x8FAACD #x143) Err bitreich.org 70 i- (#x8FAACE #x147) Err bitreich.org 70 i- (#x8FAACF #x145) Err bitreich.org 70 i- (#x8FAAD0 #xD1) Err bitreich.org 70 i- (#x8FAAD1 #xD3) Err bitreich.org 70 i- (#x8FAAD2 #xD2) Err bitreich.org 70 i- (#x8FAAD3 #xD6) Err bitreich.org 70 i- (#x8FAAD4 #xD4) Err bitreich.org 70 i- (#x8FAAD5 #x1D1) Err bitreich.org 70 i- (#x8FAAD6 #x150) Err bitreich.org 70 i- (#x8FAAD7 #x14C) Err bitreich.org 70 i- (#x8FAAD8 #xD5) Err bitreich.org 70 i- (#x8FAAD9 #x154) Err bitreich.org 70 i- (#x8FAADA #x158) Err bitreich.org 70 i- (#x8FAADB #x156) Err bitreich.org 70 i- (#x8FAADC #x15A) Err bitreich.org 70 i- (#x8FAADD #x15C) Err bitreich.org 70 i- (#x8FAADE #x160) Err bitreich.org 70 i- (#x8FAADF #x15E) Err bitreich.org 70 i- (#x8FAAE0 #x164) Err bitreich.org 70 i- (#x8FAAE1 #x162) Err bitreich.org 70 i- (#x8FAAE2 #xDA) Err bitreich.org 70 i- (#x8FAAE3 #xD9) Err bitreich.org 70 i- (#x8FAAE4 #xDC) Err bitreich.org 70 i- (#x8FAAE5 #xDB) Err bitreich.org 70 i- (#x8FAAE6 #x16C) Err bitreich.org 70 i- (#x8FAAE7 #x1D3) Err bitreich.org 70 i- (#x8FAAE8 #x170) Err bitreich.org 70 i- (#x8FAAE9 #x16A) Err bitreich.org 70 i- (#x8FAAEA #x172) Err bitreich.org 70 i- (#x8FAAEB #x16E) Err bitreich.org 70 i- (#x8FAAEC #x168) Err bitreich.org 70 i- (#x8FAAED #x1D7) Err bitreich.org 70 i- (#x8FAAEE #x1DB) Err bitreich.org 70 i- (#x8FAAEF #x1D9) Err bitreich.org 70 i- (#x8FAAF0 #x1D5) Err bitreich.org 70 i- (#x8FAAF1 #x174) Err bitreich.org 70 i- (#x8FAAF2 #xDD) Err bitreich.org 70 i- (#x8FAAF3 #x178) Err bitreich.org 70 i- (#x8FAAF4 #x176) Err bitreich.org 70 i- (#x8FAAF5 #x179) Err bitreich.org 70 i- (#x8FAAF6 #x17D) Err bitreich.org 70 i- (#x8FAAF7 #x17B) Err bitreich.org 70 i- (#x8FABA1 #xE1) Err bitreich.org 70 i- (#x8FABA2 #xE0) Err bitreich.org 70 i- (#x8FABA3 #xE4) Err bitreich.org 70 i- (#x8FABA4 #xE2) Err bitreich.org 70 i- (#x8FABA5 #x103) Err bitreich.org 70 i- (#x8FABA6 #x1CE) Err bitreich.org 70 i- (#x8FABA7 #x101) Err bitreich.org 70 i- (#x8FABA8 #x105) Err bitreich.org 70 i- (#x8FABA9 #xE5) Err bitreich.org 70 i- (#x8FABAA #xE3) Err bitreich.org 70 i- (#x8FABAB #x107) Err bitreich.org 70 i- (#x8FABAC #x109) Err bitreich.org 70 i- (#x8FABAD #x10D) Err bitreich.org 70 i- (#x8FABAE #xE7) Err bitreich.org 70 i- (#x8FABAF #x10B) Err bitreich.org 70 i- (#x8FABB0 #x10F) Err bitreich.org 70 i- (#x8FABB1 #xE9) Err bitreich.org 70 i- (#x8FABB2 #xE8) Err bitreich.org 70 i- (#x8FABB3 #xEB) Err bitreich.org 70 i- (#x8FABB4 #xEA) Err bitreich.org 70 i- (#x8FABB5 #x11B) Err bitreich.org 70 i- (#x8FABB6 #x117) Err bitreich.org 70 i- (#x8FABB7 #x113) Err bitreich.org 70 i- (#x8FABB8 #x119) Err bitreich.org 70 i- (#x8FABB9 #x1F5) Err bitreich.org 70 i- (#x8FABBA #x11D) Err bitreich.org 70 i- (#x8FABBB #x11F) Err bitreich.org 70 i- (#x8FABBD #x121) Err bitreich.org 70 i- (#x8FABBE #x125) Err bitreich.org 70 i- (#x8FABBF #xED) Err bitreich.org 70 i- (#x8FABC0 #xEC) Err bitreich.org 70 i- (#x8FABC1 #xEF) Err bitreich.org 70 i- (#x8FABC2 #xEE) Err bitreich.org 70 i- (#x8FABC3 #x1D0) Err bitreich.org 70 i- (#x8FABC5 #x12B) Err bitreich.org 70 i- (#x8FABC6 #x12F) Err bitreich.org 70 i- (#x8FABC7 #x129) Err bitreich.org 70 i- (#x8FABC8 #x135) Err bitreich.org 70 i- (#x8FABC9 #x137) Err bitreich.org 70 i- (#x8FABCA #x13A) Err bitreich.org 70 i- (#x8FABCB #x13E) Err bitreich.org 70 i- (#x8FABCC #x13C) Err bitreich.org 70 i- (#x8FABCD #x144) Err bitreich.org 70 i- (#x8FABCE #x148) Err bitreich.org 70 i- (#x8FABCF #x146) Err bitreich.org 70 i- (#x8FABD0 #xF1) Err bitreich.org 70 i- (#x8FABD1 #xF3) Err bitreich.org 70 i- (#x8FABD2 #xF2) Err bitreich.org 70 i- (#x8FABD3 #xF6) Err bitreich.org 70 i- (#x8FABD4 #xF4) Err bitreich.org 70 i- (#x8FABD5 #x1D2) Err bitreich.org 70 i- (#x8FABD6 #x151) Err bitreich.org 70 i- (#x8FABD7 #x14D) Err bitreich.org 70 i- (#x8FABD8 #xF5) Err bitreich.org 70 i- (#x8FABD9 #x155) Err bitreich.org 70 i- (#x8FABDA #x159) Err bitreich.org 70 i- (#x8FABDB #x157) Err bitreich.org 70 i- (#x8FABDC #x15B) Err bitreich.org 70 i- (#x8FABDD #x15D) Err bitreich.org 70 i- (#x8FABDE #x161) Err bitreich.org 70 i- (#x8FABDF #x15F) Err bitreich.org 70 i- (#x8FABE0 #x165) Err bitreich.org 70 i- (#x8FABE1 #x163) Err bitreich.org 70 i- (#x8FABE2 #xFA) Err bitreich.org 70 i- (#x8FABE3 #xF9) Err bitreich.org 70 i- (#x8FABE4 #xFC) Err bitreich.org 70 i- (#x8FABE5 #xFB) Err bitreich.org 70 i- (#x8FABE6 #x16D) Err bitreich.org 70 i- (#x8FABE7 #x1D4) Err bitreich.org 70 i- (#x8FABE8 #x171) Err bitreich.org 70 i- (#x8FABE9 #x16B) Err bitreich.org 70 i- (#x8FABEA #x173) Err bitreich.org 70 i- (#x8FABEB #x16F) Err bitreich.org 70 i- (#x8FABEC #x169) Err bitreich.org 70 i- (#x8FABED #x1D8) Err bitreich.org 70 i- (#x8FABEE #x1DC) Err bitreich.org 70 i- (#x8FABEF #x1DA) Err bitreich.org 70 i- (#x8FABF0 #x1D6) Err bitreich.org 70 i- (#x8FABF1 #x175) Err bitreich.org 70 i- (#x8FABF2 #xFD) Err bitreich.org 70 i- (#x8FABF3 #xFF) Err bitreich.org 70 i- (#x8FABF4 #x177) Err bitreich.org 70 i- (#x8FABF5 #x17A) Err bitreich.org 70 i- (#x8FABF6 #x17E) Err bitreich.org 70 i- (#x8FABF7 #x17C) Err bitreich.org 70 i- (#x8FB0A1 #x4E02) Err bitreich.org 70 i- (#x8FB0A2 #x4E04) Err bitreich.org 70 i- (#x8FB0A3 #x4E05) Err bitreich.org 70 i- (#x8FB0A4 #x4E0C) Err bitreich.org 70 i- (#x8FB0A5 #x4E12) Err bitreich.org 70 i- (#x8FB0A6 #x4E1F) Err bitreich.org 70 i- (#x8FB0A7 #x4E23) Err bitreich.org 70 i- (#x8FB0A8 #x4E24) Err bitreich.org 70 i- (#x8FB0A9 #x4E28) Err bitreich.org 70 i- (#x8FB0AA #x4E2B) Err bitreich.org 70 i- (#x8FB0AB #x4E2E) Err bitreich.org 70 i- (#x8FB0AC #x4E2F) Err bitreich.org 70 i- (#x8FB0AD #x4E30) Err bitreich.org 70 i- (#x8FB0AE #x4E35) Err bitreich.org 70 i- (#x8FB0AF #x4E40) Err bitreich.org 70 i- (#x8FB0B0 #x4E41) Err bitreich.org 70 i- (#x8FB0B1 #x4E44) Err bitreich.org 70 i- (#x8FB0B2 #x4E47) Err bitreich.org 70 i- (#x8FB0B3 #x4E51) Err bitreich.org 70 i- (#x8FB0B4 #x4E5A) Err bitreich.org 70 i- (#x8FB0B5 #x4E5C) Err bitreich.org 70 i- (#x8FB0B6 #x4E63) Err bitreich.org 70 i- (#x8FB0B7 #x4E68) Err bitreich.org 70 i- (#x8FB0B8 #x4E69) Err bitreich.org 70 i- (#x8FB0B9 #x4E74) Err bitreich.org 70 i- (#x8FB0BA #x4E75) Err bitreich.org 70 i- (#x8FB0BB #x4E79) Err bitreich.org 70 i- (#x8FB0BC #x4E7F) Err bitreich.org 70 i- (#x8FB0BD #x4E8D) Err bitreich.org 70 i- (#x8FB0BE #x4E96) Err bitreich.org 70 i- (#x8FB0BF #x4E97) Err bitreich.org 70 i- (#x8FB0C0 #x4E9D) Err bitreich.org 70 i- (#x8FB0C1 #x4EAF) Err bitreich.org 70 i- (#x8FB0C2 #x4EB9) Err bitreich.org 70 i- (#x8FB0C3 #x4EC3) Err bitreich.org 70 i- (#x8FB0C4 #x4ED0) Err bitreich.org 70 i- (#x8FB0C5 #x4EDA) Err bitreich.org 70 i- (#x8FB0C6 #x4EDB) Err bitreich.org 70 i- (#x8FB0C7 #x4EE0) Err bitreich.org 70 i- (#x8FB0C8 #x4EE1) Err bitreich.org 70 i- (#x8FB0C9 #x4EE2) Err bitreich.org 70 i- (#x8FB0CA #x4EE8) Err bitreich.org 70 i- (#x8FB0CB #x4EEF) Err bitreich.org 70 i- (#x8FB0CC #x4EF1) Err bitreich.org 70 i- (#x8FB0CD #x4EF3) Err bitreich.org 70 i- (#x8FB0CE #x4EF5) Err bitreich.org 70 i- (#x8FB0CF #x4EFD) Err bitreich.org 70 i- (#x8FB0D0 #x4EFE) Err bitreich.org 70 i- (#x8FB0D1 #x4EFF) Err bitreich.org 70 i- (#x8FB0D2 #x4F00) Err bitreich.org 70 i- (#x8FB0D3 #x4F02) Err bitreich.org 70 i- (#x8FB0D4 #x4F03) Err bitreich.org 70 i- (#x8FB0D5 #x4F08) Err bitreich.org 70 i- (#x8FB0D6 #x4F0B) Err bitreich.org 70 i- (#x8FB0D7 #x4F0C) Err bitreich.org 70 i- (#x8FB0D8 #x4F12) Err bitreich.org 70 i- (#x8FB0D9 #x4F15) Err bitreich.org 70 i- (#x8FB0DA #x4F16) Err bitreich.org 70 i- (#x8FB0DB #x4F17) Err bitreich.org 70 i- (#x8FB0DC #x4F19) Err bitreich.org 70 i- (#x8FB0DD #x4F2E) Err bitreich.org 70 i- (#x8FB0DE #x4F31) Err bitreich.org 70 i- (#x8FB0DF #x4F60) Err bitreich.org 70 i- (#x8FB0E0 #x4F33) Err bitreich.org 70 i- (#x8FB0E1 #x4F35) Err bitreich.org 70 i- (#x8FB0E2 #x4F37) Err bitreich.org 70 i- (#x8FB0E3 #x4F39) Err bitreich.org 70 i- (#x8FB0E4 #x4F3B) Err bitreich.org 70 i- (#x8FB0E5 #x4F3E) Err bitreich.org 70 i- (#x8FB0E6 #x4F40) Err bitreich.org 70 i- (#x8FB0E7 #x4F42) Err bitreich.org 70 i- (#x8FB0E8 #x4F48) Err bitreich.org 70 i- (#x8FB0E9 #x4F49) Err bitreich.org 70 i- (#x8FB0EA #x4F4B) Err bitreich.org 70 i- (#x8FB0EB #x4F4C) Err bitreich.org 70 i- (#x8FB0EC #x4F52) Err bitreich.org 70 i- (#x8FB0ED #x4F54) Err bitreich.org 70 i- (#x8FB0EE #x4F56) Err bitreich.org 70 i- (#x8FB0EF #x4F58) Err bitreich.org 70 i- (#x8FB0F0 #x4F5F) Err bitreich.org 70 i- (#x8FB0F1 #x4F63) Err bitreich.org 70 i- (#x8FB0F2 #x4F6A) Err bitreich.org 70 i- (#x8FB0F3 #x4F6C) Err bitreich.org 70 i- (#x8FB0F4 #x4F6E) Err bitreich.org 70 i- (#x8FB0F5 #x4F71) Err bitreich.org 70 i- (#x8FB0F6 #x4F77) Err bitreich.org 70 i- (#x8FB0F7 #x4F78) Err bitreich.org 70 i- (#x8FB0F8 #x4F79) Err bitreich.org 70 i- (#x8FB0F9 #x4F7A) Err bitreich.org 70 i- (#x8FB0FA #x4F7D) Err bitreich.org 70 i- (#x8FB0FB #x4F7E) Err bitreich.org 70 i- (#x8FB0FC #x4F81) Err bitreich.org 70 i- (#x8FB0FD #x4F82) Err bitreich.org 70 i- (#x8FB0FE #x4F84) Err bitreich.org 70 i- (#x8FB1A1 #x4F85) Err bitreich.org 70 i- (#x8FB1A2 #x4F89) Err bitreich.org 70 i- (#x8FB1A3 #x4F8A) Err bitreich.org 70 i- (#x8FB1A4 #x4F8C) Err bitreich.org 70 i- (#x8FB1A5 #x4F8E) Err bitreich.org 70 i- (#x8FB1A6 #x4F90) Err bitreich.org 70 i- (#x8FB1A7 #x4F92) Err bitreich.org 70 i- (#x8FB1A8 #x4F93) Err bitreich.org 70 i- (#x8FB1A9 #x4F94) Err bitreich.org 70 i- (#x8FB1AA #x4F97) Err bitreich.org 70 i- (#x8FB1AB #x4F99) Err bitreich.org 70 i- (#x8FB1AC #x4F9A) Err bitreich.org 70 i- (#x8FB1AD #x4F9E) Err bitreich.org 70 i- (#x8FB1AE #x4F9F) Err bitreich.org 70 i- (#x8FB1AF #x4FB2) Err bitreich.org 70 i- (#x8FB1B0 #x4FB7) Err bitreich.org 70 i- (#x8FB1B1 #x4FB9) Err bitreich.org 70 i- (#x8FB1B2 #x4FBB) Err bitreich.org 70 i- (#x8FB1B3 #x4FBC) Err bitreich.org 70 i- (#x8FB1B4 #x4FBD) Err bitreich.org 70 i- (#x8FB1B5 #x4FBE) Err bitreich.org 70 i- (#x8FB1B6 #x4FC0) Err bitreich.org 70 i- (#x8FB1B7 #x4FC1) Err bitreich.org 70 i- (#x8FB1B8 #x4FC5) Err bitreich.org 70 i- (#x8FB1B9 #x4FC6) Err bitreich.org 70 i- (#x8FB1BA #x4FC8) Err bitreich.org 70 i- (#x8FB1BB #x4FC9) Err bitreich.org 70 i- (#x8FB1BC #x4FCB) Err bitreich.org 70 i- (#x8FB1BD #x4FCC) Err bitreich.org 70 i- (#x8FB1BE #x4FCD) Err bitreich.org 70 i- (#x8FB1BF #x4FCF) Err bitreich.org 70 i- (#x8FB1C0 #x4FD2) Err bitreich.org 70 i- (#x8FB1C1 #x4FDC) Err bitreich.org 70 i- (#x8FB1C2 #x4FE0) Err bitreich.org 70 i- (#x8FB1C3 #x4FE2) Err bitreich.org 70 i- (#x8FB1C4 #x4FF0) Err bitreich.org 70 i- (#x8FB1C5 #x4FF2) Err bitreich.org 70 i- (#x8FB1C6 #x4FFC) Err bitreich.org 70 i- (#x8FB1C7 #x4FFD) Err bitreich.org 70 i- (#x8FB1C8 #x4FFF) Err bitreich.org 70 i- (#x8FB1C9 #x5000) Err bitreich.org 70 i- (#x8FB1CA #x5001) Err bitreich.org 70 i- (#x8FB1CB #x5004) Err bitreich.org 70 i- (#x8FB1CC #x5007) Err bitreich.org 70 i- (#x8FB1CD #x500A) Err bitreich.org 70 i- (#x8FB1CE #x500C) Err bitreich.org 70 i- (#x8FB1CF #x500E) Err bitreich.org 70 i- (#x8FB1D0 #x5010) Err bitreich.org 70 i- (#x8FB1D1 #x5013) Err bitreich.org 70 i- (#x8FB1D2 #x5017) Err bitreich.org 70 i- (#x8FB1D3 #x5018) Err bitreich.org 70 i- (#x8FB1D4 #x501B) Err bitreich.org 70 i- (#x8FB1D5 #x501C) Err bitreich.org 70 i- (#x8FB1D6 #x501D) Err bitreich.org 70 i- (#x8FB1D7 #x501E) Err bitreich.org 70 i- (#x8FB1D8 #x5022) Err bitreich.org 70 i- (#x8FB1D9 #x5027) Err bitreich.org 70 i- (#x8FB1DA #x502E) Err bitreich.org 70 i- (#x8FB1DB #x5030) Err bitreich.org 70 i- (#x8FB1DC #x5032) Err bitreich.org 70 i- (#x8FB1DD #x5033) Err bitreich.org 70 i- (#x8FB1DE #x5035) Err bitreich.org 70 i- (#x8FB1DF #x5040) Err bitreich.org 70 i- (#x8FB1E0 #x5041) Err bitreich.org 70 i- (#x8FB1E1 #x5042) Err bitreich.org 70 i- (#x8FB1E2 #x5045) Err bitreich.org 70 i- (#x8FB1E3 #x5046) Err bitreich.org 70 i- (#x8FB1E4 #x504A) Err bitreich.org 70 i- (#x8FB1E5 #x504C) Err bitreich.org 70 i- (#x8FB1E6 #x504E) Err bitreich.org 70 i- (#x8FB1E7 #x5051) Err bitreich.org 70 i- (#x8FB1E8 #x5052) Err bitreich.org 70 i- (#x8FB1E9 #x5053) Err bitreich.org 70 i- (#x8FB1EA #x5057) Err bitreich.org 70 i- (#x8FB1EB #x5059) Err bitreich.org 70 i- (#x8FB1EC #x505F) Err bitreich.org 70 i- (#x8FB1ED #x5060) Err bitreich.org 70 i- (#x8FB1EE #x5062) Err bitreich.org 70 i- (#x8FB1EF #x5063) Err bitreich.org 70 i- (#x8FB1F0 #x5066) Err bitreich.org 70 i- (#x8FB1F1 #x5067) Err bitreich.org 70 i- (#x8FB1F2 #x506A) Err bitreich.org 70 i- (#x8FB1F3 #x506D) Err bitreich.org 70 i- (#x8FB1F4 #x5070) Err bitreich.org 70 i- (#x8FB1F5 #x5071) Err bitreich.org 70 i- (#x8FB1F6 #x503B) Err bitreich.org 70 i- (#x8FB1F7 #x5081) Err bitreich.org 70 i- (#x8FB1F8 #x5083) Err bitreich.org 70 i- (#x8FB1F9 #x5084) Err bitreich.org 70 i- (#x8FB1FA #x5086) Err bitreich.org 70 i- (#x8FB1FB #x508A) Err bitreich.org 70 i- (#x8FB1FC #x508E) Err bitreich.org 70 i- (#x8FB1FD #x508F) Err bitreich.org 70 i- (#x8FB1FE #x5090) Err bitreich.org 70 i- (#x8FB2A1 #x5092) Err bitreich.org 70 i- (#x8FB2A2 #x5093) Err bitreich.org 70 i- (#x8FB2A3 #x5094) Err bitreich.org 70 i- (#x8FB2A4 #x5096) Err bitreich.org 70 i- (#x8FB2A5 #x509B) Err bitreich.org 70 i- (#x8FB2A6 #x509C) Err bitreich.org 70 i- (#x8FB2A7 #x509E) Err bitreich.org 70 i- (#x8FB2A8 #x509F) Err bitreich.org 70 i- (#x8FB2A9 #x50A0) Err bitreich.org 70 i- (#x8FB2AA #x50A1) Err bitreich.org 70 i- (#x8FB2AB #x50A2) Err bitreich.org 70 i- (#x8FB2AC #x50AA) Err bitreich.org 70 i- (#x8FB2AD #x50AF) Err bitreich.org 70 i- (#x8FB2AE #x50B0) Err bitreich.org 70 i- (#x8FB2AF #x50B9) Err bitreich.org 70 i- (#x8FB2B0 #x50BA) Err bitreich.org 70 i- (#x8FB2B1 #x50BD) Err bitreich.org 70 i- (#x8FB2B2 #x50C0) Err bitreich.org 70 i- (#x8FB2B3 #x50C3) Err bitreich.org 70 i- (#x8FB2B4 #x50C4) Err bitreich.org 70 i- (#x8FB2B5 #x50C7) Err bitreich.org 70 i- (#x8FB2B6 #x50CC) Err bitreich.org 70 i- (#x8FB2B7 #x50CE) Err bitreich.org 70 i- (#x8FB2B8 #x50D0) Err bitreich.org 70 i- (#x8FB2B9 #x50D3) Err bitreich.org 70 i- (#x8FB2BA #x50D4) Err bitreich.org 70 i- (#x8FB2BB #x50D8) Err bitreich.org 70 i- (#x8FB2BC #x50DC) Err bitreich.org 70 i- (#x8FB2BD #x50DD) Err bitreich.org 70 i- (#x8FB2BE #x50DF) Err bitreich.org 70 i- (#x8FB2BF #x50E2) Err bitreich.org 70 i- (#x8FB2C0 #x50E4) Err bitreich.org 70 i- (#x8FB2C1 #x50E6) Err bitreich.org 70 i- (#x8FB2C2 #x50E8) Err bitreich.org 70 i- (#x8FB2C3 #x50E9) Err bitreich.org 70 i- (#x8FB2C4 #x50EF) Err bitreich.org 70 i- (#x8FB2C5 #x50F1) Err bitreich.org 70 i- (#x8FB2C6 #x50F6) Err bitreich.org 70 i- (#x8FB2C7 #x50FA) Err bitreich.org 70 i- (#x8FB2C8 #x50FE) Err bitreich.org 70 i- (#x8FB2C9 #x5103) Err bitreich.org 70 i- (#x8FB2CA #x5106) Err bitreich.org 70 i- (#x8FB2CB #x5107) Err bitreich.org 70 i- (#x8FB2CC #x5108) Err bitreich.org 70 i- (#x8FB2CD #x510B) Err bitreich.org 70 i- (#x8FB2CE #x510C) Err bitreich.org 70 i- (#x8FB2CF #x510D) Err bitreich.org 70 i- (#x8FB2D0 #x510E) Err bitreich.org 70 i- (#x8FB2D1 #x50F2) Err bitreich.org 70 i- (#x8FB2D2 #x5110) Err bitreich.org 70 i- (#x8FB2D3 #x5117) Err bitreich.org 70 i- (#x8FB2D4 #x5119) Err bitreich.org 70 i- (#x8FB2D5 #x511B) Err bitreich.org 70 i- (#x8FB2D6 #x511C) Err bitreich.org 70 i- (#x8FB2D7 #x511D) Err bitreich.org 70 i- (#x8FB2D8 #x511E) Err bitreich.org 70 i- (#x8FB2D9 #x5123) Err bitreich.org 70 i- (#x8FB2DA #x5127) Err bitreich.org 70 i- (#x8FB2DB #x5128) Err bitreich.org 70 i- (#x8FB2DC #x512C) Err bitreich.org 70 i- (#x8FB2DD #x512D) Err bitreich.org 70 i- (#x8FB2DE #x512F) Err bitreich.org 70 i- (#x8FB2DF #x5131) Err bitreich.org 70 i- (#x8FB2E0 #x5133) Err bitreich.org 70 i- (#x8FB2E1 #x5134) Err bitreich.org 70 i- (#x8FB2E2 #x5135) Err bitreich.org 70 i- (#x8FB2E3 #x5138) Err bitreich.org 70 i- (#x8FB2E4 #x5139) Err bitreich.org 70 i- (#x8FB2E5 #x5142) Err bitreich.org 70 i- (#x8FB2E6 #x514A) Err bitreich.org 70 i- (#x8FB2E7 #x514F) Err bitreich.org 70 i- (#x8FB2E8 #x5153) Err bitreich.org 70 i- (#x8FB2E9 #x5155) Err bitreich.org 70 i- (#x8FB2EA #x5157) Err bitreich.org 70 i- (#x8FB2EB #x5158) Err bitreich.org 70 i- (#x8FB2EC #x515F) Err bitreich.org 70 i- (#x8FB2ED #x5164) Err bitreich.org 70 i- (#x8FB2EE #x5166) Err bitreich.org 70 i- (#x8FB2EF #x517E) Err bitreich.org 70 i- (#x8FB2F0 #x5183) Err bitreich.org 70 i- (#x8FB2F1 #x5184) Err bitreich.org 70 i- (#x8FB2F2 #x518B) Err bitreich.org 70 i- (#x8FB2F3 #x518E) Err bitreich.org 70 i- (#x8FB2F4 #x5198) Err bitreich.org 70 i- (#x8FB2F5 #x519D) Err bitreich.org 70 i- (#x8FB2F6 #x51A1) Err bitreich.org 70 i- (#x8FB2F7 #x51A3) Err bitreich.org 70 i- (#x8FB2F8 #x51AD) Err bitreich.org 70 i- (#x8FB2F9 #x51B8) Err bitreich.org 70 i- (#x8FB2FA #x51BA) Err bitreich.org 70 i- (#x8FB2FB #x51BC) Err bitreich.org 70 i- (#x8FB2FC #x51BE) Err bitreich.org 70 i- (#x8FB2FD #x51BF) Err bitreich.org 70 i- (#x8FB2FE #x51C2) Err bitreich.org 70 i- (#x8FB3A1 #x51C8) Err bitreich.org 70 i- (#x8FB3A2 #x51CF) Err bitreich.org 70 i- (#x8FB3A3 #x51D1) Err bitreich.org 70 i- (#x8FB3A4 #x51D2) Err bitreich.org 70 i- (#x8FB3A5 #x51D3) Err bitreich.org 70 i- (#x8FB3A6 #x51D5) Err bitreich.org 70 i- (#x8FB3A7 #x51D8) Err bitreich.org 70 i- (#x8FB3A8 #x51DE) Err bitreich.org 70 i- (#x8FB3A9 #x51E2) Err bitreich.org 70 i- (#x8FB3AA #x51E5) Err bitreich.org 70 i- (#x8FB3AB #x51EE) Err bitreich.org 70 i- (#x8FB3AC #x51F2) Err bitreich.org 70 i- (#x8FB3AD #x51F3) Err bitreich.org 70 i- (#x8FB3AE #x51F4) Err bitreich.org 70 i- (#x8FB3AF #x51F7) Err bitreich.org 70 i- (#x8FB3B0 #x5201) Err bitreich.org 70 i- (#x8FB3B1 #x5202) Err bitreich.org 70 i- (#x8FB3B2 #x5205) Err bitreich.org 70 i- (#x8FB3B3 #x5212) Err bitreich.org 70 i- (#x8FB3B4 #x5213) Err bitreich.org 70 i- (#x8FB3B5 #x5215) Err bitreich.org 70 i- (#x8FB3B6 #x5216) Err bitreich.org 70 i- (#x8FB3B7 #x5218) Err bitreich.org 70 i- (#x8FB3B8 #x5222) Err bitreich.org 70 i- (#x8FB3B9 #x5228) Err bitreich.org 70 i- (#x8FB3BA #x5231) Err bitreich.org 70 i- (#x8FB3BB #x5232) Err bitreich.org 70 i- (#x8FB3BC #x5235) Err bitreich.org 70 i- (#x8FB3BD #x523C) Err bitreich.org 70 i- (#x8FB3BE #x5245) Err bitreich.org 70 i- (#x8FB3BF #x5249) Err bitreich.org 70 i- (#x8FB3C0 #x5255) Err bitreich.org 70 i- (#x8FB3C1 #x5257) Err bitreich.org 70 i- (#x8FB3C2 #x5258) Err bitreich.org 70 i- (#x8FB3C3 #x525A) Err bitreich.org 70 i- (#x8FB3C4 #x525C) Err bitreich.org 70 i- (#x8FB3C5 #x525F) Err bitreich.org 70 i- (#x8FB3C6 #x5260) Err bitreich.org 70 i- (#x8FB3C7 #x5261) Err bitreich.org 70 i- (#x8FB3C8 #x5266) Err bitreich.org 70 i- (#x8FB3C9 #x526E) Err bitreich.org 70 i- (#x8FB3CA #x5277) Err bitreich.org 70 i- (#x8FB3CB #x5278) Err bitreich.org 70 i- (#x8FB3CC #x5279) Err bitreich.org 70 i- (#x8FB3CD #x5280) Err bitreich.org 70 i- (#x8FB3CE #x5282) Err bitreich.org 70 i- (#x8FB3CF #x5285) Err bitreich.org 70 i- (#x8FB3D0 #x528A) Err bitreich.org 70 i- (#x8FB3D1 #x528C) Err bitreich.org 70 i- (#x8FB3D2 #x5293) Err bitreich.org 70 i- (#x8FB3D3 #x5295) Err bitreich.org 70 i- (#x8FB3D4 #x5296) Err bitreich.org 70 i- (#x8FB3D5 #x5297) Err bitreich.org 70 i- (#x8FB3D6 #x5298) Err bitreich.org 70 i- (#x8FB3D7 #x529A) Err bitreich.org 70 i- (#x8FB3D8 #x529C) Err bitreich.org 70 i- (#x8FB3D9 #x52A4) Err bitreich.org 70 i- (#x8FB3DA #x52A5) Err bitreich.org 70 i- (#x8FB3DB #x52A6) Err bitreich.org 70 i- (#x8FB3DC #x52A7) Err bitreich.org 70 i- (#x8FB3DD #x52AF) Err bitreich.org 70 i- (#x8FB3DE #x52B0) Err bitreich.org 70 i- (#x8FB3DF #x52B6) Err bitreich.org 70 i- (#x8FB3E0 #x52B7) Err bitreich.org 70 i- (#x8FB3E1 #x52B8) Err bitreich.org 70 i- (#x8FB3E2 #x52BA) Err bitreich.org 70 i- (#x8FB3E3 #x52BB) Err bitreich.org 70 i- (#x8FB3E4 #x52BD) Err bitreich.org 70 i- (#x8FB3E5 #x52C0) Err bitreich.org 70 i- (#x8FB3E6 #x52C4) Err bitreich.org 70 i- (#x8FB3E7 #x52C6) Err bitreich.org 70 i- (#x8FB3E8 #x52C8) Err bitreich.org 70 i- (#x8FB3E9 #x52CC) Err bitreich.org 70 i- (#x8FB3EA #x52CF) Err bitreich.org 70 i- (#x8FB3EB #x52D1) Err bitreich.org 70 i- (#x8FB3EC #x52D4) Err bitreich.org 70 i- (#x8FB3ED #x52D6) Err bitreich.org 70 i- (#x8FB3EE #x52DB) Err bitreich.org 70 i- (#x8FB3EF #x52DC) Err bitreich.org 70 i- (#x8FB3F0 #x52E1) Err bitreich.org 70 i- (#x8FB3F1 #x52E5) Err bitreich.org 70 i- (#x8FB3F2 #x52E8) Err bitreich.org 70 i- (#x8FB3F3 #x52E9) Err bitreich.org 70 i- (#x8FB3F4 #x52EA) Err bitreich.org 70 i- (#x8FB3F5 #x52EC) Err bitreich.org 70 i- (#x8FB3F6 #x52F0) Err bitreich.org 70 i- (#x8FB3F7 #x52F1) Err bitreich.org 70 i- (#x8FB3F8 #x52F4) Err bitreich.org 70 i- (#x8FB3F9 #x52F6) Err bitreich.org 70 i- (#x8FB3FA #x52F7) Err bitreich.org 70 i- (#x8FB3FB #x5300) Err bitreich.org 70 i- (#x8FB3FC #x5303) Err bitreich.org 70 i- (#x8FB3FD #x530A) Err bitreich.org 70 i- (#x8FB3FE #x530B) Err bitreich.org 70 i- (#x8FB4A1 #x530C) Err bitreich.org 70 i- (#x8FB4A2 #x5311) Err bitreich.org 70 i- (#x8FB4A3 #x5313) Err bitreich.org 70 i- (#x8FB4A4 #x5318) Err bitreich.org 70 i- (#x8FB4A5 #x531B) Err bitreich.org 70 i- (#x8FB4A6 #x531C) Err bitreich.org 70 i- (#x8FB4A7 #x531E) Err bitreich.org 70 i- (#x8FB4A8 #x531F) Err bitreich.org 70 i- (#x8FB4A9 #x5325) Err bitreich.org 70 i- (#x8FB4AA #x5327) Err bitreich.org 70 i- (#x8FB4AB #x5328) Err bitreich.org 70 i- (#x8FB4AC #x5329) Err bitreich.org 70 i- (#x8FB4AD #x532B) Err bitreich.org 70 i- (#x8FB4AE #x532C) Err bitreich.org 70 i- (#x8FB4AF #x532D) Err bitreich.org 70 i- (#x8FB4B0 #x5330) Err bitreich.org 70 i- (#x8FB4B1 #x5332) Err bitreich.org 70 i- (#x8FB4B2 #x5335) Err bitreich.org 70 i- (#x8FB4B3 #x533C) Err bitreich.org 70 i- (#x8FB4B4 #x533D) Err bitreich.org 70 i- (#x8FB4B5 #x533E) Err bitreich.org 70 i- (#x8FB4B6 #x5342) Err bitreich.org 70 i- (#x8FB4B7 #x534C) Err bitreich.org 70 i- (#x8FB4B8 #x534B) Err bitreich.org 70 i- (#x8FB4B9 #x5359) Err bitreich.org 70 i- (#x8FB4BA #x535B) Err bitreich.org 70 i- (#x8FB4BB #x5361) Err bitreich.org 70 i- (#x8FB4BC #x5363) Err bitreich.org 70 i- (#x8FB4BD #x5365) Err bitreich.org 70 i- (#x8FB4BE #x536C) Err bitreich.org 70 i- (#x8FB4BF #x536D) Err bitreich.org 70 i- (#x8FB4C0 #x5372) Err bitreich.org 70 i- (#x8FB4C1 #x5379) Err bitreich.org 70 i- (#x8FB4C2 #x537E) Err bitreich.org 70 i- (#x8FB4C3 #x5383) Err bitreich.org 70 i- (#x8FB4C4 #x5387) Err bitreich.org 70 i- (#x8FB4C5 #x5388) Err bitreich.org 70 i- (#x8FB4C6 #x538E) Err bitreich.org 70 i- (#x8FB4C7 #x5393) Err bitreich.org 70 i- (#x8FB4C8 #x5394) Err bitreich.org 70 i- (#x8FB4C9 #x5399) Err bitreich.org 70 i- (#x8FB4CA #x539D) Err bitreich.org 70 i- (#x8FB4CB #x53A1) Err bitreich.org 70 i- (#x8FB4CC #x53A4) Err bitreich.org 70 i- (#x8FB4CD #x53AA) Err bitreich.org 70 i- (#x8FB4CE #x53AB) Err bitreich.org 70 i- (#x8FB4CF #x53AF) Err bitreich.org 70 i- (#x8FB4D0 #x53B2) Err bitreich.org 70 i- (#x8FB4D1 #x53B4) Err bitreich.org 70 i- (#x8FB4D2 #x53B5) Err bitreich.org 70 i- (#x8FB4D3 #x53B7) Err bitreich.org 70 i- (#x8FB4D4 #x53B8) Err bitreich.org 70 i- (#x8FB4D5 #x53BA) Err bitreich.org 70 i- (#x8FB4D6 #x53BD) Err bitreich.org 70 i- (#x8FB4D7 #x53C0) Err bitreich.org 70 i- (#x8FB4D8 #x53C5) Err bitreich.org 70 i- (#x8FB4D9 #x53CF) Err bitreich.org 70 i- (#x8FB4DA #x53D2) Err bitreich.org 70 i- (#x8FB4DB #x53D3) Err bitreich.org 70 i- (#x8FB4DC #x53D5) Err bitreich.org 70 i- (#x8FB4DD #x53DA) Err bitreich.org 70 i- (#x8FB4DE #x53DD) Err bitreich.org 70 i- (#x8FB4DF #x53DE) Err bitreich.org 70 i- (#x8FB4E0 #x53E0) Err bitreich.org 70 i- (#x8FB4E1 #x53E6) Err bitreich.org 70 i- (#x8FB4E2 #x53E7) Err bitreich.org 70 i- (#x8FB4E3 #x53F5) Err bitreich.org 70 i- (#x8FB4E4 #x5402) Err bitreich.org 70 i- (#x8FB4E5 #x5413) Err bitreich.org 70 i- (#x8FB4E6 #x541A) Err bitreich.org 70 i- (#x8FB4E7 #x5421) Err bitreich.org 70 i- (#x8FB4E8 #x5427) Err bitreich.org 70 i- (#x8FB4E9 #x5428) Err bitreich.org 70 i- (#x8FB4EA #x542A) Err bitreich.org 70 i- (#x8FB4EB #x542F) Err bitreich.org 70 i- (#x8FB4EC #x5431) Err bitreich.org 70 i- (#x8FB4ED #x5434) Err bitreich.org 70 i- (#x8FB4EE #x5435) Err bitreich.org 70 i- (#x8FB4EF #x5443) Err bitreich.org 70 i- (#x8FB4F0 #x5444) Err bitreich.org 70 i- (#x8FB4F1 #x5447) Err bitreich.org 70 i- (#x8FB4F2 #x544D) Err bitreich.org 70 i- (#x8FB4F3 #x544F) Err bitreich.org 70 i- (#x8FB4F4 #x545E) Err bitreich.org 70 i- (#x8FB4F5 #x5462) Err bitreich.org 70 i- (#x8FB4F6 #x5464) Err bitreich.org 70 i- (#x8FB4F7 #x5466) Err bitreich.org 70 i- (#x8FB4F8 #x5467) Err bitreich.org 70 i- (#x8FB4F9 #x5469) Err bitreich.org 70 i- (#x8FB4FA #x546B) Err bitreich.org 70 i- (#x8FB4FB #x546D) Err bitreich.org 70 i- (#x8FB4FC #x546E) Err bitreich.org 70 i- (#x8FB4FD #x5474) Err bitreich.org 70 i- (#x8FB4FE #x547F) Err bitreich.org 70 i- (#x8FB5A1 #x5481) Err bitreich.org 70 i- (#x8FB5A2 #x5483) Err bitreich.org 70 i- (#x8FB5A3 #x5485) Err bitreich.org 70 i- (#x8FB5A4 #x5488) Err bitreich.org 70 i- (#x8FB5A5 #x5489) Err bitreich.org 70 i- (#x8FB5A6 #x548D) Err bitreich.org 70 i- (#x8FB5A7 #x5491) Err bitreich.org 70 i- (#x8FB5A8 #x5495) Err bitreich.org 70 i- (#x8FB5A9 #x5496) Err bitreich.org 70 i- (#x8FB5AA #x549C) Err bitreich.org 70 i- (#x8FB5AB #x549F) Err bitreich.org 70 i- (#x8FB5AC #x54A1) Err bitreich.org 70 i- (#x8FB5AD #x54A6) Err bitreich.org 70 i- (#x8FB5AE #x54A7) Err bitreich.org 70 i- (#x8FB5AF #x54A9) Err bitreich.org 70 i- (#x8FB5B0 #x54AA) Err bitreich.org 70 i- (#x8FB5B1 #x54AD) Err bitreich.org 70 i- (#x8FB5B2 #x54AE) Err bitreich.org 70 i- (#x8FB5B3 #x54B1) Err bitreich.org 70 i- (#x8FB5B4 #x54B7) Err bitreich.org 70 i- (#x8FB5B5 #x54B9) Err bitreich.org 70 i- (#x8FB5B6 #x54BA) Err bitreich.org 70 i- (#x8FB5B7 #x54BB) Err bitreich.org 70 i- (#x8FB5B8 #x54BF) Err bitreich.org 70 i- (#x8FB5B9 #x54C6) Err bitreich.org 70 i- (#x8FB5BA #x54CA) Err bitreich.org 70 i- (#x8FB5BB #x54CD) Err bitreich.org 70 i- (#x8FB5BC #x54CE) Err bitreich.org 70 i- (#x8FB5BD #x54E0) Err bitreich.org 70 i- (#x8FB5BE #x54EA) Err bitreich.org 70 i- (#x8FB5BF #x54EC) Err bitreich.org 70 i- (#x8FB5C0 #x54EF) Err bitreich.org 70 i- (#x8FB5C1 #x54F6) Err bitreich.org 70 i- (#x8FB5C2 #x54FC) Err bitreich.org 70 i- (#x8FB5C3 #x54FE) Err bitreich.org 70 i- (#x8FB5C4 #x54FF) Err bitreich.org 70 i- (#x8FB5C5 #x5500) Err bitreich.org 70 i- (#x8FB5C6 #x5501) Err bitreich.org 70 i- (#x8FB5C7 #x5505) Err bitreich.org 70 i- (#x8FB5C8 #x5508) Err bitreich.org 70 i- (#x8FB5C9 #x5509) Err bitreich.org 70 i- (#x8FB5CA #x550C) Err bitreich.org 70 i- (#x8FB5CB #x550D) Err bitreich.org 70 i- (#x8FB5CC #x550E) Err bitreich.org 70 i- (#x8FB5CD #x5515) Err bitreich.org 70 i- (#x8FB5CE #x552A) Err bitreich.org 70 i- (#x8FB5CF #x552B) Err bitreich.org 70 i- (#x8FB5D0 #x5532) Err bitreich.org 70 i- (#x8FB5D1 #x5535) Err bitreich.org 70 i- (#x8FB5D2 #x5536) Err bitreich.org 70 i- (#x8FB5D3 #x553B) Err bitreich.org 70 i- (#x8FB5D4 #x553C) Err bitreich.org 70 i- (#x8FB5D5 #x553D) Err bitreich.org 70 i- (#x8FB5D6 #x5541) Err bitreich.org 70 i- (#x8FB5D7 #x5547) Err bitreich.org 70 i- (#x8FB5D8 #x5549) Err bitreich.org 70 i- (#x8FB5D9 #x554A) Err bitreich.org 70 i- (#x8FB5DA #x554D) Err bitreich.org 70 i- (#x8FB5DB #x5550) Err bitreich.org 70 i- (#x8FB5DC #x5551) Err bitreich.org 70 i- (#x8FB5DD #x5558) Err bitreich.org 70 i- (#x8FB5DE #x555A) Err bitreich.org 70 i- (#x8FB5DF #x555B) Err bitreich.org 70 i- (#x8FB5E0 #x555E) Err bitreich.org 70 i- (#x8FB5E1 #x5560) Err bitreich.org 70 i- (#x8FB5E2 #x5561) Err bitreich.org 70 i- (#x8FB5E3 #x5564) Err bitreich.org 70 i- (#x8FB5E4 #x5566) Err bitreich.org 70 i- (#x8FB5E5 #x557F) Err bitreich.org 70 i- (#x8FB5E6 #x5581) Err bitreich.org 70 i- (#x8FB5E7 #x5582) Err bitreich.org 70 i- (#x8FB5E8 #x5586) Err bitreich.org 70 i- (#x8FB5E9 #x5588) Err bitreich.org 70 i- (#x8FB5EA #x558E) Err bitreich.org 70 i- (#x8FB5EB #x558F) Err bitreich.org 70 i- (#x8FB5EC #x5591) Err bitreich.org 70 i- (#x8FB5ED #x5592) Err bitreich.org 70 i- (#x8FB5EE #x5593) Err bitreich.org 70 i- (#x8FB5EF #x5594) Err bitreich.org 70 i- (#x8FB5F0 #x5597) Err bitreich.org 70 i- (#x8FB5F1 #x55A3) Err bitreich.org 70 i- (#x8FB5F2 #x55A4) Err bitreich.org 70 i- (#x8FB5F3 #x55AD) Err bitreich.org 70 i- (#x8FB5F4 #x55B2) Err bitreich.org 70 i- (#x8FB5F5 #x55BF) Err bitreich.org 70 i- (#x8FB5F6 #x55C1) Err bitreich.org 70 i- (#x8FB5F7 #x55C3) Err bitreich.org 70 i- (#x8FB5F8 #x55C6) Err bitreich.org 70 i- (#x8FB5F9 #x55C9) Err bitreich.org 70 i- (#x8FB5FA #x55CB) Err bitreich.org 70 i- (#x8FB5FB #x55CC) Err bitreich.org 70 i- (#x8FB5FC #x55CE) Err bitreich.org 70 i- (#x8FB5FD #x55D1) Err bitreich.org 70 i- (#x8FB5FE #x55D2) Err bitreich.org 70 i- (#x8FB6A1 #x55D3) Err bitreich.org 70 i- (#x8FB6A2 #x55D7) Err bitreich.org 70 i- (#x8FB6A3 #x55D8) Err bitreich.org 70 i- (#x8FB6A4 #x55DB) Err bitreich.org 70 i- (#x8FB6A5 #x55DE) Err bitreich.org 70 i- (#x8FB6A6 #x55E2) Err bitreich.org 70 i- (#x8FB6A7 #x55E9) Err bitreich.org 70 i- (#x8FB6A8 #x55F6) Err bitreich.org 70 i- (#x8FB6A9 #x55FF) Err bitreich.org 70 i- (#x8FB6AA #x5605) Err bitreich.org 70 i- (#x8FB6AB #x5608) Err bitreich.org 70 i- (#x8FB6AC #x560A) Err bitreich.org 70 i- (#x8FB6AD #x560D) Err bitreich.org 70 i- (#x8FB6AE #x560E) Err bitreich.org 70 i- (#x8FB6AF #x560F) Err bitreich.org 70 i- (#x8FB6B0 #x5610) Err bitreich.org 70 i- (#x8FB6B1 #x5611) Err bitreich.org 70 i- (#x8FB6B2 #x5612) Err bitreich.org 70 i- (#x8FB6B3 #x5619) Err bitreich.org 70 i- (#x8FB6B4 #x562C) Err bitreich.org 70 i- (#x8FB6B5 #x5630) Err bitreich.org 70 i- (#x8FB6B6 #x5633) Err bitreich.org 70 i- (#x8FB6B7 #x5635) Err bitreich.org 70 i- (#x8FB6B8 #x5637) Err bitreich.org 70 i- (#x8FB6B9 #x5639) Err bitreich.org 70 i- (#x8FB6BA #x563B) Err bitreich.org 70 i- (#x8FB6BB #x563C) Err bitreich.org 70 i- (#x8FB6BC #x563D) Err bitreich.org 70 i- (#x8FB6BD #x563F) Err bitreich.org 70 i- (#x8FB6BE #x5640) Err bitreich.org 70 i- (#x8FB6BF #x5641) Err bitreich.org 70 i- (#x8FB6C0 #x5643) Err bitreich.org 70 i- (#x8FB6C1 #x5644) Err bitreich.org 70 i- (#x8FB6C2 #x5646) Err bitreich.org 70 i- (#x8FB6C3 #x5649) Err bitreich.org 70 i- (#x8FB6C4 #x564B) Err bitreich.org 70 i- (#x8FB6C5 #x564D) Err bitreich.org 70 i- (#x8FB6C6 #x564F) Err bitreich.org 70 i- (#x8FB6C7 #x5654) Err bitreich.org 70 i- (#x8FB6C8 #x565E) Err bitreich.org 70 i- (#x8FB6C9 #x5660) Err bitreich.org 70 i- (#x8FB6CA #x5661) Err bitreich.org 70 i- (#x8FB6CB #x5662) Err bitreich.org 70 i- (#x8FB6CC #x5663) Err bitreich.org 70 i- (#x8FB6CD #x5666) Err bitreich.org 70 i- (#x8FB6CE #x5669) Err bitreich.org 70 i- (#x8FB6CF #x566D) Err bitreich.org 70 i- (#x8FB6D0 #x566F) Err bitreich.org 70 i- (#x8FB6D1 #x5671) Err bitreich.org 70 i- (#x8FB6D2 #x5672) Err bitreich.org 70 i- (#x8FB6D3 #x5675) Err bitreich.org 70 i- (#x8FB6D4 #x5684) Err bitreich.org 70 i- (#x8FB6D5 #x5685) Err bitreich.org 70 i- (#x8FB6D6 #x5688) Err bitreich.org 70 i- (#x8FB6D7 #x568B) Err bitreich.org 70 i- (#x8FB6D8 #x568C) Err bitreich.org 70 i- (#x8FB6D9 #x5695) Err bitreich.org 70 i- (#x8FB6DA #x5699) Err bitreich.org 70 i- (#x8FB6DB #x569A) Err bitreich.org 70 i- (#x8FB6DC #x569D) Err bitreich.org 70 i- (#x8FB6DD #x569E) Err bitreich.org 70 i- (#x8FB6DE #x569F) Err bitreich.org 70 i- (#x8FB6DF #x56A6) Err bitreich.org 70 i- (#x8FB6E0 #x56A7) Err bitreich.org 70 i- (#x8FB6E1 #x56A8) Err bitreich.org 70 i- (#x8FB6E2 #x56A9) Err bitreich.org 70 i- (#x8FB6E3 #x56AB) Err bitreich.org 70 i- (#x8FB6E4 #x56AC) Err bitreich.org 70 i- (#x8FB6E5 #x56AD) Err bitreich.org 70 i- (#x8FB6E6 #x56B1) Err bitreich.org 70 i- (#x8FB6E7 #x56B3) Err bitreich.org 70 i- (#x8FB6E8 #x56B7) Err bitreich.org 70 i- (#x8FB6E9 #x56BE) Err bitreich.org 70 i- (#x8FB6EA #x56C5) Err bitreich.org 70 i- (#x8FB6EB #x56C9) Err bitreich.org 70 i- (#x8FB6EC #x56CA) Err bitreich.org 70 i- (#x8FB6ED #x56CB) Err bitreich.org 70 i- (#x8FB6EE #x56CF) Err bitreich.org 70 i- (#x8FB6EF #x56D0) Err bitreich.org 70 i- (#x8FB6F0 #x56CC) Err bitreich.org 70 i- (#x8FB6F1 #x56CD) Err bitreich.org 70 i- (#x8FB6F2 #x56D9) Err bitreich.org 70 i- (#x8FB6F3 #x56DC) Err bitreich.org 70 i- (#x8FB6F4 #x56DD) Err bitreich.org 70 i- (#x8FB6F5 #x56DF) Err bitreich.org 70 i- (#x8FB6F6 #x56E1) Err bitreich.org 70 i- (#x8FB6F7 #x56E4) Err bitreich.org 70 i- (#x8FB6F8 #x56E5) Err bitreich.org 70 i- (#x8FB6F9 #x56E6) Err bitreich.org 70 i- (#x8FB6FA #x56E7) Err bitreich.org 70 i- (#x8FB6FB #x56E8) Err bitreich.org 70 i- (#x8FB6FC #x56F1) Err bitreich.org 70 i- (#x8FB6FD #x56EB) Err bitreich.org 70 i- (#x8FB6FE #x56ED) Err bitreich.org 70 i- (#x8FB7A1 #x56F6) Err bitreich.org 70 i- (#x8FB7A2 #x56F7) Err bitreich.org 70 i- (#x8FB7A3 #x5701) Err bitreich.org 70 i- (#x8FB7A4 #x5702) Err bitreich.org 70 i- (#x8FB7A5 #x5707) Err bitreich.org 70 i- (#x8FB7A6 #x570A) Err bitreich.org 70 i- (#x8FB7A7 #x570C) Err bitreich.org 70 i- (#x8FB7A8 #x5711) Err bitreich.org 70 i- (#x8FB7A9 #x5715) Err bitreich.org 70 i- (#x8FB7AA #x571A) Err bitreich.org 70 i- (#x8FB7AB #x571B) Err bitreich.org 70 i- (#x8FB7AC #x571D) Err bitreich.org 70 i- (#x8FB7AD #x5720) Err bitreich.org 70 i- (#x8FB7AE #x5722) Err bitreich.org 70 i- (#x8FB7AF #x5723) Err bitreich.org 70 i- (#x8FB7B0 #x5724) Err bitreich.org 70 i- (#x8FB7B1 #x5725) Err bitreich.org 70 i- (#x8FB7B2 #x5729) Err bitreich.org 70 i- (#x8FB7B3 #x572A) Err bitreich.org 70 i- (#x8FB7B4 #x572C) Err bitreich.org 70 i- (#x8FB7B5 #x572E) Err bitreich.org 70 i- (#x8FB7B6 #x572F) Err bitreich.org 70 i- (#x8FB7B7 #x5733) Err bitreich.org 70 i- (#x8FB7B8 #x5734) Err bitreich.org 70 i- (#x8FB7B9 #x573D) Err bitreich.org 70 i- (#x8FB7BA #x573E) Err bitreich.org 70 i- (#x8FB7BB #x573F) Err bitreich.org 70 i- (#x8FB7BC #x5745) Err bitreich.org 70 i- (#x8FB7BD #x5746) Err bitreich.org 70 i- (#x8FB7BE #x574C) Err bitreich.org 70 i- (#x8FB7BF #x574D) Err bitreich.org 70 i- (#x8FB7C0 #x5752) Err bitreich.org 70 i- (#x8FB7C1 #x5762) Err bitreich.org 70 i- (#x8FB7C2 #x5765) Err bitreich.org 70 i- (#x8FB7C3 #x5767) Err bitreich.org 70 i- (#x8FB7C4 #x5768) Err bitreich.org 70 i- (#x8FB7C5 #x576B) Err bitreich.org 70 i- (#x8FB7C6 #x576D) Err bitreich.org 70 i- (#x8FB7C7 #x576E) Err bitreich.org 70 i- (#x8FB7C8 #x576F) Err bitreich.org 70 i- (#x8FB7C9 #x5770) Err bitreich.org 70 i- (#x8FB7CA #x5771) Err bitreich.org 70 i- (#x8FB7CB #x5773) Err bitreich.org 70 i- (#x8FB7CC #x5774) Err bitreich.org 70 i- (#x8FB7CD #x5775) Err bitreich.org 70 i- (#x8FB7CE #x5777) Err bitreich.org 70 i- (#x8FB7CF #x5779) Err bitreich.org 70 i- (#x8FB7D0 #x577A) Err bitreich.org 70 i- (#x8FB7D1 #x577B) Err bitreich.org 70 i- (#x8FB7D2 #x577C) Err bitreich.org 70 i- (#x8FB7D3 #x577E) Err bitreich.org 70 i- (#x8FB7D4 #x5781) Err bitreich.org 70 i- (#x8FB7D5 #x5783) Err bitreich.org 70 i- (#x8FB7D6 #x578C) Err bitreich.org 70 i- (#x8FB7D7 #x5794) Err bitreich.org 70 i- (#x8FB7D8 #x5797) Err bitreich.org 70 i- (#x8FB7D9 #x5799) Err bitreich.org 70 i- (#x8FB7DA #x579A) Err bitreich.org 70 i- (#x8FB7DB #x579C) Err bitreich.org 70 i- (#x8FB7DC #x579D) Err bitreich.org 70 i- (#x8FB7DD #x579E) Err bitreich.org 70 i- (#x8FB7DE #x579F) Err bitreich.org 70 i- (#x8FB7DF #x57A1) Err bitreich.org 70 i- (#x8FB7E0 #x5795) Err bitreich.org 70 i- (#x8FB7E1 #x57A7) Err bitreich.org 70 i- (#x8FB7E2 #x57A8) Err bitreich.org 70 i- (#x8FB7E3 #x57A9) Err bitreich.org 70 i- (#x8FB7E4 #x57AC) Err bitreich.org 70 i- (#x8FB7E5 #x57B8) Err bitreich.org 70 i- (#x8FB7E6 #x57BD) Err bitreich.org 70 i- (#x8FB7E7 #x57C7) Err bitreich.org 70 i- (#x8FB7E8 #x57C8) Err bitreich.org 70 i- (#x8FB7E9 #x57CC) Err bitreich.org 70 i- (#x8FB7EA #x57CF) Err bitreich.org 70 i- (#x8FB7EB #x57D5) Err bitreich.org 70 i- (#x8FB7EC #x57DD) Err bitreich.org 70 i- (#x8FB7ED #x57DE) Err bitreich.org 70 i- (#x8FB7EE #x57E4) Err bitreich.org 70 i- (#x8FB7EF #x57E6) Err bitreich.org 70 i- (#x8FB7F0 #x57E7) Err bitreich.org 70 i- (#x8FB7F1 #x57E9) Err bitreich.org 70 i- (#x8FB7F2 #x57ED) Err bitreich.org 70 i- (#x8FB7F3 #x57F0) Err bitreich.org 70 i- (#x8FB7F4 #x57F5) Err bitreich.org 70 i- (#x8FB7F5 #x57F6) Err bitreich.org 70 i- (#x8FB7F6 #x57F8) Err bitreich.org 70 i- (#x8FB7F7 #x57FD) Err bitreich.org 70 i- (#x8FB7F8 #x57FE) Err bitreich.org 70 i- (#x8FB7F9 #x57FF) Err bitreich.org 70 i- (#x8FB7FA #x5803) Err bitreich.org 70 i- (#x8FB7FB #x5804) Err bitreich.org 70 i- (#x8FB7FC #x5808) Err bitreich.org 70 i- (#x8FB7FD #x5809) Err bitreich.org 70 i- (#x8FB7FE #x57E1) Err bitreich.org 70 i- (#x8FB8A1 #x580C) Err bitreich.org 70 i- (#x8FB8A2 #x580D) Err bitreich.org 70 i- (#x8FB8A3 #x581B) Err bitreich.org 70 i- (#x8FB8A4 #x581E) Err bitreich.org 70 i- (#x8FB8A5 #x581F) Err bitreich.org 70 i- (#x8FB8A6 #x5820) Err bitreich.org 70 i- (#x8FB8A7 #x5826) Err bitreich.org 70 i- (#x8FB8A8 #x5827) Err bitreich.org 70 i- (#x8FB8A9 #x582D) Err bitreich.org 70 i- (#x8FB8AA #x5832) Err bitreich.org 70 i- (#x8FB8AB #x5839) Err bitreich.org 70 i- (#x8FB8AC #x583F) Err bitreich.org 70 i- (#x8FB8AD #x5849) Err bitreich.org 70 i- (#x8FB8AE #x584C) Err bitreich.org 70 i- (#x8FB8AF #x584D) Err bitreich.org 70 i- (#x8FB8B0 #x584F) Err bitreich.org 70 i- (#x8FB8B1 #x5850) Err bitreich.org 70 i- (#x8FB8B2 #x5855) Err bitreich.org 70 i- (#x8FB8B3 #x585F) Err bitreich.org 70 i- (#x8FB8B4 #x5861) Err bitreich.org 70 i- (#x8FB8B5 #x5864) Err bitreich.org 70 i- (#x8FB8B6 #x5867) Err bitreich.org 70 i- (#x8FB8B7 #x5868) Err bitreich.org 70 i- (#x8FB8B8 #x5878) Err bitreich.org 70 i- (#x8FB8B9 #x587C) Err bitreich.org 70 i- (#x8FB8BA #x587F) Err bitreich.org 70 i- (#x8FB8BB #x5880) Err bitreich.org 70 i- (#x8FB8BC #x5881) Err bitreich.org 70 i- (#x8FB8BD #x5887) Err bitreich.org 70 i- (#x8FB8BE #x5888) Err bitreich.org 70 i- (#x8FB8BF #x5889) Err bitreich.org 70 i- (#x8FB8C0 #x588A) Err bitreich.org 70 i- (#x8FB8C1 #x588C) Err bitreich.org 70 i- (#x8FB8C2 #x588D) Err bitreich.org 70 i- (#x8FB8C3 #x588F) Err bitreich.org 70 i- (#x8FB8C4 #x5890) Err bitreich.org 70 i- (#x8FB8C5 #x5894) Err bitreich.org 70 i- (#x8FB8C6 #x5896) Err bitreich.org 70 i- (#x8FB8C7 #x589D) Err bitreich.org 70 i- (#x8FB8C8 #x58A0) Err bitreich.org 70 i- (#x8FB8C9 #x58A1) Err bitreich.org 70 i- (#x8FB8CA #x58A2) Err bitreich.org 70 i- (#x8FB8CB #x58A6) Err bitreich.org 70 i- (#x8FB8CC #x58A9) Err bitreich.org 70 i- (#x8FB8CD #x58B1) Err bitreich.org 70 i- (#x8FB8CE #x58B2) Err bitreich.org 70 i- (#x8FB8CF #x58C4) Err bitreich.org 70 i- (#x8FB8D0 #x58BC) Err bitreich.org 70 i- (#x8FB8D1 #x58C2) Err bitreich.org 70 i- (#x8FB8D2 #x58C8) Err bitreich.org 70 i- (#x8FB8D3 #x58CD) Err bitreich.org 70 i- (#x8FB8D4 #x58CE) Err bitreich.org 70 i- (#x8FB8D5 #x58D0) Err bitreich.org 70 i- (#x8FB8D6 #x58D2) Err bitreich.org 70 i- (#x8FB8D7 #x58D4) Err bitreich.org 70 i- (#x8FB8D8 #x58D6) Err bitreich.org 70 i- (#x8FB8D9 #x58DA) Err bitreich.org 70 i- (#x8FB8DA #x58DD) Err bitreich.org 70 i- (#x8FB8DB #x58E1) Err bitreich.org 70 i- (#x8FB8DC #x58E2) Err bitreich.org 70 i- (#x8FB8DD #x58E9) Err bitreich.org 70 i- (#x8FB8DE #x58F3) Err bitreich.org 70 i- (#x8FB8DF #x5905) Err bitreich.org 70 i- (#x8FB8E0 #x5906) Err bitreich.org 70 i- (#x8FB8E1 #x590B) Err bitreich.org 70 i- (#x8FB8E2 #x590C) Err bitreich.org 70 i- (#x8FB8E3 #x5912) Err bitreich.org 70 i- (#x8FB8E4 #x5913) Err bitreich.org 70 i- (#x8FB8E5 #x5914) Err bitreich.org 70 i- (#x8FB8E6 #x8641) Err bitreich.org 70 i- (#x8FB8E7 #x591D) Err bitreich.org 70 i- (#x8FB8E8 #x5921) Err bitreich.org 70 i- (#x8FB8E9 #x5923) Err bitreich.org 70 i- (#x8FB8EA #x5924) Err bitreich.org 70 i- (#x8FB8EB #x5928) Err bitreich.org 70 i- (#x8FB8EC #x592F) Err bitreich.org 70 i- (#x8FB8ED #x5930) Err bitreich.org 70 i- (#x8FB8EE #x5933) Err bitreich.org 70 i- (#x8FB8EF #x5935) Err bitreich.org 70 i- (#x8FB8F0 #x5936) Err bitreich.org 70 i- (#x8FB8F1 #x593F) Err bitreich.org 70 i- (#x8FB8F2 #x5943) Err bitreich.org 70 i- (#x8FB8F3 #x5946) Err bitreich.org 70 i- (#x8FB8F4 #x5952) Err bitreich.org 70 i- (#x8FB8F5 #x5953) Err bitreich.org 70 i- (#x8FB8F6 #x5959) Err bitreich.org 70 i- (#x8FB8F7 #x595B) Err bitreich.org 70 i- (#x8FB8F8 #x595D) Err bitreich.org 70 i- (#x8FB8F9 #x595E) Err bitreich.org 70 i- (#x8FB8FA #x595F) Err bitreich.org 70 i- (#x8FB8FB #x5961) Err bitreich.org 70 i- (#x8FB8FC #x5963) Err bitreich.org 70 i- (#x8FB8FD #x596B) Err bitreich.org 70 i- (#x8FB8FE #x596D) Err bitreich.org 70 i- (#x8FB9A1 #x596F) Err bitreich.org 70 i- (#x8FB9A2 #x5972) Err bitreich.org 70 i- (#x8FB9A3 #x5975) Err bitreich.org 70 i- (#x8FB9A4 #x5976) Err bitreich.org 70 i- (#x8FB9A5 #x5979) Err bitreich.org 70 i- (#x8FB9A6 #x597B) Err bitreich.org 70 i- (#x8FB9A7 #x597C) Err bitreich.org 70 i- (#x8FB9A8 #x598B) Err bitreich.org 70 i- (#x8FB9A9 #x598C) Err bitreich.org 70 i- (#x8FB9AA #x598E) Err bitreich.org 70 i- (#x8FB9AB #x5992) Err bitreich.org 70 i- (#x8FB9AC #x5995) Err bitreich.org 70 i- (#x8FB9AD #x5997) Err bitreich.org 70 i- (#x8FB9AE #x599F) Err bitreich.org 70 i- (#x8FB9AF #x59A4) Err bitreich.org 70 i- (#x8FB9B0 #x59A7) Err bitreich.org 70 i- (#x8FB9B1 #x59AD) Err bitreich.org 70 i- (#x8FB9B2 #x59AE) Err bitreich.org 70 i- (#x8FB9B3 #x59AF) Err bitreich.org 70 i- (#x8FB9B4 #x59B0) Err bitreich.org 70 i- (#x8FB9B5 #x59B3) Err bitreich.org 70 i- (#x8FB9B6 #x59B7) Err bitreich.org 70 i- (#x8FB9B7 #x59BA) Err bitreich.org 70 i- (#x8FB9B8 #x59BC) Err bitreich.org 70 i- (#x8FB9B9 #x59C1) Err bitreich.org 70 i- (#x8FB9BA #x59C3) Err bitreich.org 70 i- (#x8FB9BB #x59C4) Err bitreich.org 70 i- (#x8FB9BC #x59C8) Err bitreich.org 70 i- (#x8FB9BD #x59CA) Err bitreich.org 70 i- (#x8FB9BE #x59CD) Err bitreich.org 70 i- (#x8FB9BF #x59D2) Err bitreich.org 70 i- (#x8FB9C0 #x59DD) Err bitreich.org 70 i- (#x8FB9C1 #x59DE) Err bitreich.org 70 i- (#x8FB9C2 #x59DF) Err bitreich.org 70 i- (#x8FB9C3 #x59E3) Err bitreich.org 70 i- (#x8FB9C4 #x59E4) Err bitreich.org 70 i- (#x8FB9C5 #x59E7) Err bitreich.org 70 i- (#x8FB9C6 #x59EE) Err bitreich.org 70 i- (#x8FB9C7 #x59EF) Err bitreich.org 70 i- (#x8FB9C8 #x59F1) Err bitreich.org 70 i- (#x8FB9C9 #x59F2) Err bitreich.org 70 i- (#x8FB9CA #x59F4) Err bitreich.org 70 i- (#x8FB9CB #x59F7) Err bitreich.org 70 i- (#x8FB9CC #x5A00) Err bitreich.org 70 i- (#x8FB9CD #x5A04) Err bitreich.org 70 i- (#x8FB9CE #x5A0C) Err bitreich.org 70 i- (#x8FB9CF #x5A0D) Err bitreich.org 70 i- (#x8FB9D0 #x5A0E) Err bitreich.org 70 i- (#x8FB9D1 #x5A12) Err bitreich.org 70 i- (#x8FB9D2 #x5A13) Err bitreich.org 70 i- (#x8FB9D3 #x5A1E) Err bitreich.org 70 i- (#x8FB9D4 #x5A23) Err bitreich.org 70 i- (#x8FB9D5 #x5A24) Err bitreich.org 70 i- (#x8FB9D6 #x5A27) Err bitreich.org 70 i- (#x8FB9D7 #x5A28) Err bitreich.org 70 i- (#x8FB9D8 #x5A2A) Err bitreich.org 70 i- (#x8FB9D9 #x5A2D) Err bitreich.org 70 i- (#x8FB9DA #x5A30) Err bitreich.org 70 i- (#x8FB9DB #x5A44) Err bitreich.org 70 i- (#x8FB9DC #x5A45) Err bitreich.org 70 i- (#x8FB9DD #x5A47) Err bitreich.org 70 i- (#x8FB9DE #x5A48) Err bitreich.org 70 i- (#x8FB9DF #x5A4C) Err bitreich.org 70 i- (#x8FB9E0 #x5A50) Err bitreich.org 70 i- (#x8FB9E1 #x5A55) Err bitreich.org 70 i- (#x8FB9E2 #x5A5E) Err bitreich.org 70 i- (#x8FB9E3 #x5A63) Err bitreich.org 70 i- (#x8FB9E4 #x5A65) Err bitreich.org 70 i- (#x8FB9E5 #x5A67) Err bitreich.org 70 i- (#x8FB9E6 #x5A6D) Err bitreich.org 70 i- (#x8FB9E7 #x5A77) Err bitreich.org 70 i- (#x8FB9E8 #x5A7A) Err bitreich.org 70 i- (#x8FB9E9 #x5A7B) Err bitreich.org 70 i- (#x8FB9EA #x5A7E) Err bitreich.org 70 i- (#x8FB9EB #x5A8B) Err bitreich.org 70 i- (#x8FB9EC #x5A90) Err bitreich.org 70 i- (#x8FB9ED #x5A93) Err bitreich.org 70 i- (#x8FB9EE #x5A96) Err bitreich.org 70 i- (#x8FB9EF #x5A99) Err bitreich.org 70 i- (#x8FB9F0 #x5A9C) Err bitreich.org 70 i- (#x8FB9F1 #x5A9E) Err bitreich.org 70 i- (#x8FB9F2 #x5A9F) Err bitreich.org 70 i- (#x8FB9F3 #x5AA0) Err bitreich.org 70 i- (#x8FB9F4 #x5AA2) Err bitreich.org 70 i- (#x8FB9F5 #x5AA7) Err bitreich.org 70 i- (#x8FB9F6 #x5AAC) Err bitreich.org 70 i- (#x8FB9F7 #x5AB1) Err bitreich.org 70 i- (#x8FB9F8 #x5AB2) Err bitreich.org 70 i- (#x8FB9F9 #x5AB3) Err bitreich.org 70 i- (#x8FB9FA #x5AB5) Err bitreich.org 70 i- (#x8FB9FB #x5AB8) Err bitreich.org 70 i- (#x8FB9FC #x5ABA) Err bitreich.org 70 i- (#x8FB9FD #x5ABB) Err bitreich.org 70 i- (#x8FB9FE #x5ABF) Err bitreich.org 70 i- (#x8FBAA1 #x5AC4) Err bitreich.org 70 i- (#x8FBAA2 #x5AC6) Err bitreich.org 70 i- (#x8FBAA3 #x5AC8) Err bitreich.org 70 i- (#x8FBAA4 #x5ACF) Err bitreich.org 70 i- (#x8FBAA5 #x5ADA) Err bitreich.org 70 i- (#x8FBAA6 #x5ADC) Err bitreich.org 70 i- (#x8FBAA7 #x5AE0) Err bitreich.org 70 i- (#x8FBAA8 #x5AE5) Err bitreich.org 70 i- (#x8FBAA9 #x5AEA) Err bitreich.org 70 i- (#x8FBAAA #x5AEE) Err bitreich.org 70 i- (#x8FBAAB #x5AF5) Err bitreich.org 70 i- (#x8FBAAC #x5AF6) Err bitreich.org 70 i- (#x8FBAAD #x5AFD) Err bitreich.org 70 i- (#x8FBAAE #x5B00) Err bitreich.org 70 i- (#x8FBAAF #x5B01) Err bitreich.org 70 i- (#x8FBAB0 #x5B08) Err bitreich.org 70 i- (#x8FBAB1 #x5B17) Err bitreich.org 70 i- (#x8FBAB2 #x5B34) Err bitreich.org 70 i- (#x8FBAB3 #x5B19) Err bitreich.org 70 i- (#x8FBAB4 #x5B1B) Err bitreich.org 70 i- (#x8FBAB5 #x5B1D) Err bitreich.org 70 i- (#x8FBAB6 #x5B21) Err bitreich.org 70 i- (#x8FBAB7 #x5B25) Err bitreich.org 70 i- (#x8FBAB8 #x5B2D) Err bitreich.org 70 i- (#x8FBAB9 #x5B38) Err bitreich.org 70 i- (#x8FBABA #x5B41) Err bitreich.org 70 i- (#x8FBABB #x5B4B) Err bitreich.org 70 i- (#x8FBABC #x5B4C) Err bitreich.org 70 i- (#x8FBABD #x5B52) Err bitreich.org 70 i- (#x8FBABE #x5B56) Err bitreich.org 70 i- (#x8FBABF #x5B5E) Err bitreich.org 70 i- (#x8FBAC0 #x5B68) Err bitreich.org 70 i- (#x8FBAC1 #x5B6E) Err bitreich.org 70 i- (#x8FBAC2 #x5B6F) Err bitreich.org 70 i- (#x8FBAC3 #x5B7C) Err bitreich.org 70 i- (#x8FBAC4 #x5B7D) Err bitreich.org 70 i- (#x8FBAC5 #x5B7E) Err bitreich.org 70 i- (#x8FBAC6 #x5B7F) Err bitreich.org 70 i- (#x8FBAC7 #x5B81) Err bitreich.org 70 i- (#x8FBAC8 #x5B84) Err bitreich.org 70 i- (#x8FBAC9 #x5B86) Err bitreich.org 70 i- (#x8FBACA #x5B8A) Err bitreich.org 70 i- (#x8FBACB #x5B8E) Err bitreich.org 70 i- (#x8FBACC #x5B90) Err bitreich.org 70 i- (#x8FBACD #x5B91) Err bitreich.org 70 i- (#x8FBACE #x5B93) Err bitreich.org 70 i- (#x8FBACF #x5B94) Err bitreich.org 70 i- (#x8FBAD0 #x5B96) Err bitreich.org 70 i- (#x8FBAD1 #x5BA8) Err bitreich.org 70 i- (#x8FBAD2 #x5BA9) Err bitreich.org 70 i- (#x8FBAD3 #x5BAC) Err bitreich.org 70 i- (#x8FBAD4 #x5BAD) Err bitreich.org 70 i- (#x8FBAD5 #x5BAF) Err bitreich.org 70 i- (#x8FBAD6 #x5BB1) Err bitreich.org 70 i- (#x8FBAD7 #x5BB2) Err bitreich.org 70 i- (#x8FBAD8 #x5BB7) Err bitreich.org 70 i- (#x8FBAD9 #x5BBA) Err bitreich.org 70 i- (#x8FBADA #x5BBC) Err bitreich.org 70 i- (#x8FBADB #x5BC0) Err bitreich.org 70 i- (#x8FBADC #x5BC1) Err bitreich.org 70 i- (#x8FBADD #x5BCD) Err bitreich.org 70 i- (#x8FBADE #x5BCF) Err bitreich.org 70 i- (#x8FBADF #x5BD6) Err bitreich.org 70 i- (#x8FBAE0 #x5BD7) Err bitreich.org 70 i- (#x8FBAE1 #x5BD8) Err bitreich.org 70 i- (#x8FBAE2 #x5BD9) Err bitreich.org 70 i- (#x8FBAE3 #x5BDA) Err bitreich.org 70 i- (#x8FBAE4 #x5BE0) Err bitreich.org 70 i- (#x8FBAE5 #x5BEF) Err bitreich.org 70 i- (#x8FBAE6 #x5BF1) Err bitreich.org 70 i- (#x8FBAE7 #x5BF4) Err bitreich.org 70 i- (#x8FBAE8 #x5BFD) Err bitreich.org 70 i- (#x8FBAE9 #x5C0C) Err bitreich.org 70 i- (#x8FBAEA #x5C17) Err bitreich.org 70 i- (#x8FBAEB #x5C1E) Err bitreich.org 70 i- (#x8FBAEC #x5C1F) Err bitreich.org 70 i- (#x8FBAED #x5C23) Err bitreich.org 70 i- (#x8FBAEE #x5C26) Err bitreich.org 70 i- (#x8FBAEF #x5C29) Err bitreich.org 70 i- (#x8FBAF0 #x5C2B) Err bitreich.org 70 i- (#x8FBAF1 #x5C2C) Err bitreich.org 70 i- (#x8FBAF2 #x5C2E) Err bitreich.org 70 i- (#x8FBAF3 #x5C30) Err bitreich.org 70 i- (#x8FBAF4 #x5C32) Err bitreich.org 70 i- (#x8FBAF5 #x5C35) Err bitreich.org 70 i- (#x8FBAF6 #x5C36) Err bitreich.org 70 i- (#x8FBAF7 #x5C59) Err bitreich.org 70 i- (#x8FBAF8 #x5C5A) Err bitreich.org 70 i- (#x8FBAF9 #x5C5C) Err bitreich.org 70 i- (#x8FBAFA #x5C62) Err bitreich.org 70 i- (#x8FBAFB #x5C63) Err bitreich.org 70 i- (#x8FBAFC #x5C67) Err bitreich.org 70 i- (#x8FBAFD #x5C68) Err bitreich.org 70 i- (#x8FBAFE #x5C69) Err bitreich.org 70 i- (#x8FBBA1 #x5C6D) Err bitreich.org 70 i- (#x8FBBA2 #x5C70) Err bitreich.org 70 i- (#x8FBBA3 #x5C74) Err bitreich.org 70 i- (#x8FBBA4 #x5C75) Err bitreich.org 70 i- (#x8FBBA5 #x5C7A) Err bitreich.org 70 i- (#x8FBBA6 #x5C7B) Err bitreich.org 70 i- (#x8FBBA7 #x5C7C) Err bitreich.org 70 i- (#x8FBBA8 #x5C7D) Err bitreich.org 70 i- (#x8FBBA9 #x5C87) Err bitreich.org 70 i- (#x8FBBAA #x5C88) Err bitreich.org 70 i- (#x8FBBAB #x5C8A) Err bitreich.org 70 i- (#x8FBBAC #x5C8F) Err bitreich.org 70 i- (#x8FBBAD #x5C92) Err bitreich.org 70 i- (#x8FBBAE #x5C9D) Err bitreich.org 70 i- (#x8FBBAF #x5C9F) Err bitreich.org 70 i- (#x8FBBB0 #x5CA0) Err bitreich.org 70 i- (#x8FBBB1 #x5CA2) Err bitreich.org 70 i- (#x8FBBB2 #x5CA3) Err bitreich.org 70 i- (#x8FBBB3 #x5CA6) Err bitreich.org 70 i- (#x8FBBB4 #x5CAA) Err bitreich.org 70 i- (#x8FBBB5 #x5CB2) Err bitreich.org 70 i- (#x8FBBB6 #x5CB4) Err bitreich.org 70 i- (#x8FBBB7 #x5CB5) Err bitreich.org 70 i- (#x8FBBB8 #x5CBA) Err bitreich.org 70 i- (#x8FBBB9 #x5CC9) Err bitreich.org 70 i- (#x8FBBBA #x5CCB) Err bitreich.org 70 i- (#x8FBBBB #x5CD2) Err bitreich.org 70 i- (#x8FBBBC #x5CDD) Err bitreich.org 70 i- (#x8FBBBD #x5CD7) Err bitreich.org 70 i- (#x8FBBBE #x5CEE) Err bitreich.org 70 i- (#x8FBBBF #x5CF1) Err bitreich.org 70 i- (#x8FBBC0 #x5CF2) Err bitreich.org 70 i- (#x8FBBC1 #x5CF4) Err bitreich.org 70 i- (#x8FBBC2 #x5D01) Err bitreich.org 70 i- (#x8FBBC3 #x5D06) Err bitreich.org 70 i- (#x8FBBC4 #x5D0D) Err bitreich.org 70 i- (#x8FBBC5 #x5D12) Err bitreich.org 70 i- (#x8FBBC6 #x5D2B) Err bitreich.org 70 i- (#x8FBBC7 #x5D23) Err bitreich.org 70 i- (#x8FBBC8 #x5D24) Err bitreich.org 70 i- (#x8FBBC9 #x5D26) Err bitreich.org 70 i- (#x8FBBCA #x5D27) Err bitreich.org 70 i- (#x8FBBCB #x5D31) Err bitreich.org 70 i- (#x8FBBCC #x5D34) Err bitreich.org 70 i- (#x8FBBCD #x5D39) Err bitreich.org 70 i- (#x8FBBCE #x5D3D) Err bitreich.org 70 i- (#x8FBBCF #x5D3F) Err bitreich.org 70 i- (#x8FBBD0 #x5D42) Err bitreich.org 70 i- (#x8FBBD1 #x5D43) Err bitreich.org 70 i- (#x8FBBD2 #x5D46) Err bitreich.org 70 i- (#x8FBBD3 #x5D48) Err bitreich.org 70 i- (#x8FBBD4 #x5D55) Err bitreich.org 70 i- (#x8FBBD5 #x5D51) Err bitreich.org 70 i- (#x8FBBD6 #x5D59) Err bitreich.org 70 i- (#x8FBBD7 #x5D4A) Err bitreich.org 70 i- (#x8FBBD8 #x5D5F) Err bitreich.org 70 i- (#x8FBBD9 #x5D60) Err bitreich.org 70 i- (#x8FBBDA #x5D61) Err bitreich.org 70 i- (#x8FBBDB #x5D62) Err bitreich.org 70 i- (#x8FBBDC #x5D64) Err bitreich.org 70 i- (#x8FBBDD #x5D6A) Err bitreich.org 70 i- (#x8FBBDE #x5D6D) Err bitreich.org 70 i- (#x8FBBDF #x5D70) Err bitreich.org 70 i- (#x8FBBE0 #x5D79) Err bitreich.org 70 i- (#x8FBBE1 #x5D7A) Err bitreich.org 70 i- (#x8FBBE2 #x5D7E) Err bitreich.org 70 i- (#x8FBBE3 #x5D7F) Err bitreich.org 70 i- (#x8FBBE4 #x5D81) Err bitreich.org 70 i- (#x8FBBE5 #x5D83) Err bitreich.org 70 i- (#x8FBBE6 #x5D88) Err bitreich.org 70 i- (#x8FBBE7 #x5D8A) Err bitreich.org 70 i- (#x8FBBE8 #x5D92) Err bitreich.org 70 i- (#x8FBBE9 #x5D93) Err bitreich.org 70 i- (#x8FBBEA #x5D94) Err bitreich.org 70 i- (#x8FBBEB #x5D95) Err bitreich.org 70 i- (#x8FBBEC #x5D99) Err bitreich.org 70 i- (#x8FBBED #x5D9B) Err bitreich.org 70 i- (#x8FBBEE #x5D9F) Err bitreich.org 70 i- (#x8FBBEF #x5DA0) Err bitreich.org 70 i- (#x8FBBF0 #x5DA7) Err bitreich.org 70 i- (#x8FBBF1 #x5DAB) Err bitreich.org 70 i- (#x8FBBF2 #x5DB0) Err bitreich.org 70 i- (#x8FBBF3 #x5DB4) Err bitreich.org 70 i- (#x8FBBF4 #x5DB8) Err bitreich.org 70 i- (#x8FBBF5 #x5DB9) Err bitreich.org 70 i- (#x8FBBF6 #x5DC3) Err bitreich.org 70 i- (#x8FBBF7 #x5DC7) Err bitreich.org 70 i- (#x8FBBF8 #x5DCB) Err bitreich.org 70 i- (#x8FBBF9 #x5DD0) Err bitreich.org 70 i- (#x8FBBFA #x5DCE) Err bitreich.org 70 i- (#x8FBBFB #x5DD8) Err bitreich.org 70 i- (#x8FBBFC #x5DD9) Err bitreich.org 70 i- (#x8FBBFD #x5DE0) Err bitreich.org 70 i- (#x8FBBFE #x5DE4) Err bitreich.org 70 i- (#x8FBCA1 #x5DE9) Err bitreich.org 70 i- (#x8FBCA2 #x5DF8) Err bitreich.org 70 i- (#x8FBCA3 #x5DF9) Err bitreich.org 70 i- (#x8FBCA4 #x5E00) Err bitreich.org 70 i- (#x8FBCA5 #x5E07) Err bitreich.org 70 i- (#x8FBCA6 #x5E0D) Err bitreich.org 70 i- (#x8FBCA7 #x5E12) Err bitreich.org 70 i- (#x8FBCA8 #x5E14) Err bitreich.org 70 i- (#x8FBCA9 #x5E15) Err bitreich.org 70 i- (#x8FBCAA #x5E18) Err bitreich.org 70 i- (#x8FBCAB #x5E1F) Err bitreich.org 70 i- (#x8FBCAC #x5E20) Err bitreich.org 70 i- (#x8FBCAD #x5E2E) Err bitreich.org 70 i- (#x8FBCAE #x5E28) Err bitreich.org 70 i- (#x8FBCAF #x5E32) Err bitreich.org 70 i- (#x8FBCB0 #x5E35) Err bitreich.org 70 i- (#x8FBCB1 #x5E3E) Err bitreich.org 70 i- (#x8FBCB2 #x5E4B) Err bitreich.org 70 i- (#x8FBCB3 #x5E50) Err bitreich.org 70 i- (#x8FBCB4 #x5E49) Err bitreich.org 70 i- (#x8FBCB5 #x5E51) Err bitreich.org 70 i- (#x8FBCB6 #x5E56) Err bitreich.org 70 i- (#x8FBCB7 #x5E58) Err bitreich.org 70 i- (#x8FBCB8 #x5E5B) Err bitreich.org 70 i- (#x8FBCB9 #x5E5C) Err bitreich.org 70 i- (#x8FBCBA #x5E5E) Err bitreich.org 70 i- (#x8FBCBB #x5E68) Err bitreich.org 70 i- (#x8FBCBC #x5E6A) Err bitreich.org 70 i- (#x8FBCBD #x5E6B) Err bitreich.org 70 i- (#x8FBCBE #x5E6C) Err bitreich.org 70 i- (#x8FBCBF #x5E6D) Err bitreich.org 70 i- (#x8FBCC0 #x5E6E) Err bitreich.org 70 i- (#x8FBCC1 #x5E70) Err bitreich.org 70 i- (#x8FBCC2 #x5E80) Err bitreich.org 70 i- (#x8FBCC3 #x5E8B) Err bitreich.org 70 i- (#x8FBCC4 #x5E8E) Err bitreich.org 70 i- (#x8FBCC5 #x5EA2) Err bitreich.org 70 i- (#x8FBCC6 #x5EA4) Err bitreich.org 70 i- (#x8FBCC7 #x5EA5) Err bitreich.org 70 i- (#x8FBCC8 #x5EA8) Err bitreich.org 70 i- (#x8FBCC9 #x5EAA) Err bitreich.org 70 i- (#x8FBCCA #x5EAC) Err bitreich.org 70 i- (#x8FBCCB #x5EB1) Err bitreich.org 70 i- (#x8FBCCC #x5EB3) Err bitreich.org 70 i- (#x8FBCCD #x5EBD) Err bitreich.org 70 i- (#x8FBCCE #x5EBE) Err bitreich.org 70 i- (#x8FBCCF #x5EBF) Err bitreich.org 70 i- (#x8FBCD0 #x5EC6) Err bitreich.org 70 i- (#x8FBCD1 #x5ECC) Err bitreich.org 70 i- (#x8FBCD2 #x5ECB) Err bitreich.org 70 i- (#x8FBCD3 #x5ECE) Err bitreich.org 70 i- (#x8FBCD4 #x5ED1) Err bitreich.org 70 i- (#x8FBCD5 #x5ED2) Err bitreich.org 70 i- (#x8FBCD6 #x5ED4) Err bitreich.org 70 i- (#x8FBCD7 #x5ED5) Err bitreich.org 70 i- (#x8FBCD8 #x5EDC) Err bitreich.org 70 i- (#x8FBCD9 #x5EDE) Err bitreich.org 70 i- (#x8FBCDA #x5EE5) Err bitreich.org 70 i- (#x8FBCDB #x5EEB) Err bitreich.org 70 i- (#x8FBCDC #x5F02) Err bitreich.org 70 i- (#x8FBCDD #x5F06) Err bitreich.org 70 i- (#x8FBCDE #x5F07) Err bitreich.org 70 i- (#x8FBCDF #x5F08) Err bitreich.org 70 i- (#x8FBCE0 #x5F0E) Err bitreich.org 70 i- (#x8FBCE1 #x5F19) Err bitreich.org 70 i- (#x8FBCE2 #x5F1C) Err bitreich.org 70 i- (#x8FBCE3 #x5F1D) Err bitreich.org 70 i- (#x8FBCE4 #x5F21) Err bitreich.org 70 i- (#x8FBCE5 #x5F22) Err bitreich.org 70 i- (#x8FBCE6 #x5F23) Err bitreich.org 70 i- (#x8FBCE7 #x5F24) Err bitreich.org 70 i- (#x8FBCE8 #x5F28) Err bitreich.org 70 i- (#x8FBCE9 #x5F2B) Err bitreich.org 70 i- (#x8FBCEA #x5F2C) Err bitreich.org 70 i- (#x8FBCEB #x5F2E) Err bitreich.org 70 i- (#x8FBCEC #x5F30) Err bitreich.org 70 i- (#x8FBCED #x5F34) Err bitreich.org 70 i- (#x8FBCEE #x5F36) Err bitreich.org 70 i- (#x8FBCEF #x5F3B) Err bitreich.org 70 i- (#x8FBCF0 #x5F3D) Err bitreich.org 70 i- (#x8FBCF1 #x5F3F) Err bitreich.org 70 i- (#x8FBCF2 #x5F40) Err bitreich.org 70 i- (#x8FBCF3 #x5F44) Err bitreich.org 70 i- (#x8FBCF4 #x5F45) Err bitreich.org 70 i- (#x8FBCF5 #x5F47) Err bitreich.org 70 i- (#x8FBCF6 #x5F4D) Err bitreich.org 70 i- (#x8FBCF7 #x5F50) Err bitreich.org 70 i- (#x8FBCF8 #x5F54) Err bitreich.org 70 i- (#x8FBCF9 #x5F58) Err bitreich.org 70 i- (#x8FBCFA #x5F5B) Err bitreich.org 70 i- (#x8FBCFB #x5F60) Err bitreich.org 70 i- (#x8FBCFC #x5F63) Err bitreich.org 70 i- (#x8FBCFD #x5F64) Err bitreich.org 70 i- (#x8FBCFE #x5F67) Err bitreich.org 70 i- (#x8FBDA1 #x5F6F) Err bitreich.org 70 i- (#x8FBDA2 #x5F72) Err bitreich.org 70 i- (#x8FBDA3 #x5F74) Err bitreich.org 70 i- (#x8FBDA4 #x5F75) Err bitreich.org 70 i- (#x8FBDA5 #x5F78) Err bitreich.org 70 i- (#x8FBDA6 #x5F7A) Err bitreich.org 70 i- (#x8FBDA7 #x5F7D) Err bitreich.org 70 i- (#x8FBDA8 #x5F7E) Err bitreich.org 70 i- (#x8FBDA9 #x5F89) Err bitreich.org 70 i- (#x8FBDAA #x5F8D) Err bitreich.org 70 i- (#x8FBDAB #x5F8F) Err bitreich.org 70 i- (#x8FBDAC #x5F96) Err bitreich.org 70 i- (#x8FBDAD #x5F9C) Err bitreich.org 70 i- (#x8FBDAE #x5F9D) Err bitreich.org 70 i- (#x8FBDAF #x5FA2) Err bitreich.org 70 i- (#x8FBDB0 #x5FA7) Err bitreich.org 70 i- (#x8FBDB1 #x5FAB) Err bitreich.org 70 i- (#x8FBDB2 #x5FA4) Err bitreich.org 70 i- (#x8FBDB3 #x5FAC) Err bitreich.org 70 i- (#x8FBDB4 #x5FAF) Err bitreich.org 70 i- (#x8FBDB5 #x5FB0) Err bitreich.org 70 i- (#x8FBDB6 #x5FB1) Err bitreich.org 70 i- (#x8FBDB7 #x5FB8) Err bitreich.org 70 i- (#x8FBDB8 #x5FC4) Err bitreich.org 70 i- (#x8FBDB9 #x5FC7) Err bitreich.org 70 i- (#x8FBDBA #x5FC8) Err bitreich.org 70 i- (#x8FBDBB #x5FC9) Err bitreich.org 70 i- (#x8FBDBC #x5FCB) Err bitreich.org 70 i- (#x8FBDBD #x5FD0) Err bitreich.org 70 i- (#x8FBDBE #x5FD1) Err bitreich.org 70 i- (#x8FBDBF #x5FD2) Err bitreich.org 70 i- (#x8FBDC0 #x5FD3) Err bitreich.org 70 i- (#x8FBDC1 #x5FD4) Err bitreich.org 70 i- (#x8FBDC2 #x5FDE) Err bitreich.org 70 i- (#x8FBDC3 #x5FE1) Err bitreich.org 70 i- (#x8FBDC4 #x5FE2) Err bitreich.org 70 i- (#x8FBDC5 #x5FE8) Err bitreich.org 70 i- (#x8FBDC6 #x5FE9) Err bitreich.org 70 i- (#x8FBDC7 #x5FEA) Err bitreich.org 70 i- (#x8FBDC8 #x5FEC) Err bitreich.org 70 i- (#x8FBDC9 #x5FED) Err bitreich.org 70 i- (#x8FBDCA #x5FEE) Err bitreich.org 70 i- (#x8FBDCB #x5FEF) Err bitreich.org 70 i- (#x8FBDCC #x5FF2) Err bitreich.org 70 i- (#x8FBDCD #x5FF3) Err bitreich.org 70 i- (#x8FBDCE #x5FF6) Err bitreich.org 70 i- (#x8FBDCF #x5FFA) Err bitreich.org 70 i- (#x8FBDD0 #x5FFC) Err bitreich.org 70 i- (#x8FBDD1 #x6007) Err bitreich.org 70 i- (#x8FBDD2 #x600A) Err bitreich.org 70 i- (#x8FBDD3 #x600D) Err bitreich.org 70 i- (#x8FBDD4 #x6013) Err bitreich.org 70 i- (#x8FBDD5 #x6014) Err bitreich.org 70 i- (#x8FBDD6 #x6017) Err bitreich.org 70 i- (#x8FBDD7 #x6018) Err bitreich.org 70 i- (#x8FBDD8 #x601A) Err bitreich.org 70 i- (#x8FBDD9 #x601F) Err bitreich.org 70 i- (#x8FBDDA #x6024) Err bitreich.org 70 i- (#x8FBDDB #x602D) Err bitreich.org 70 i- (#x8FBDDC #x6033) Err bitreich.org 70 i- (#x8FBDDD #x6035) Err bitreich.org 70 i- (#x8FBDDE #x6040) Err bitreich.org 70 i- (#x8FBDDF #x6047) Err bitreich.org 70 i- (#x8FBDE0 #x6048) Err bitreich.org 70 i- (#x8FBDE1 #x6049) Err bitreich.org 70 i- (#x8FBDE2 #x604C) Err bitreich.org 70 i- (#x8FBDE3 #x6051) Err bitreich.org 70 i- (#x8FBDE4 #x6054) Err bitreich.org 70 i- (#x8FBDE5 #x6056) Err bitreich.org 70 i- (#x8FBDE6 #x6057) Err bitreich.org 70 i- (#x8FBDE7 #x605D) Err bitreich.org 70 i- (#x8FBDE8 #x6061) Err bitreich.org 70 i- (#x8FBDE9 #x6067) Err bitreich.org 70 i- (#x8FBDEA #x6071) Err bitreich.org 70 i- (#x8FBDEB #x607E) Err bitreich.org 70 i- (#x8FBDEC #x607F) Err bitreich.org 70 i- (#x8FBDED #x6082) Err bitreich.org 70 i- (#x8FBDEE #x6086) Err bitreich.org 70 i- (#x8FBDEF #x6088) Err bitreich.org 70 i- (#x8FBDF0 #x608A) Err bitreich.org 70 i- (#x8FBDF1 #x608E) Err bitreich.org 70 i- (#x8FBDF2 #x6091) Err bitreich.org 70 i- (#x8FBDF3 #x6093) Err bitreich.org 70 i- (#x8FBDF4 #x6095) Err bitreich.org 70 i- (#x8FBDF5 #x6098) Err bitreich.org 70 i- (#x8FBDF6 #x609D) Err bitreich.org 70 i- (#x8FBDF7 #x609E) Err bitreich.org 70 i- (#x8FBDF8 #x60A2) Err bitreich.org 70 i- (#x8FBDF9 #x60A4) Err bitreich.org 70 i- (#x8FBDFA #x60A5) Err bitreich.org 70 i- (#x8FBDFB #x60A8) Err bitreich.org 70 i- (#x8FBDFC #x60B0) Err bitreich.org 70 i- (#x8FBDFD #x60B1) Err bitreich.org 70 i- (#x8FBDFE #x60B7) Err bitreich.org 70 i- (#x8FBEA1 #x60BB) Err bitreich.org 70 i- (#x8FBEA2 #x60BE) Err bitreich.org 70 i- (#x8FBEA3 #x60C2) Err bitreich.org 70 i- (#x8FBEA4 #x60C4) Err bitreich.org 70 i- (#x8FBEA5 #x60C8) Err bitreich.org 70 i- (#x8FBEA6 #x60C9) Err bitreich.org 70 i- (#x8FBEA7 #x60CA) Err bitreich.org 70 i- (#x8FBEA8 #x60CB) Err bitreich.org 70 i- (#x8FBEA9 #x60CE) Err bitreich.org 70 i- (#x8FBEAA #x60CF) Err bitreich.org 70 i- (#x8FBEAB #x60D4) Err bitreich.org 70 i- (#x8FBEAC #x60D5) Err bitreich.org 70 i- (#x8FBEAD #x60D9) Err bitreich.org 70 i- (#x8FBEAE #x60DB) Err bitreich.org 70 i- (#x8FBEAF #x60DD) Err bitreich.org 70 i- (#x8FBEB0 #x60DE) Err bitreich.org 70 i- (#x8FBEB1 #x60E2) Err bitreich.org 70 i- (#x8FBEB2 #x60E5) Err bitreich.org 70 i- (#x8FBEB3 #x60F2) Err bitreich.org 70 i- (#x8FBEB4 #x60F5) Err bitreich.org 70 i- (#x8FBEB5 #x60F8) Err bitreich.org 70 i- (#x8FBEB6 #x60FC) Err bitreich.org 70 i- (#x8FBEB7 #x60FD) Err bitreich.org 70 i- (#x8FBEB8 #x6102) Err bitreich.org 70 i- (#x8FBEB9 #x6107) Err bitreich.org 70 i- (#x8FBEBA #x610A) Err bitreich.org 70 i- (#x8FBEBB #x610C) Err bitreich.org 70 i- (#x8FBEBC #x6110) Err bitreich.org 70 i- (#x8FBEBD #x6111) Err bitreich.org 70 i- (#x8FBEBE #x6112) Err bitreich.org 70 i- (#x8FBEBF #x6113) Err bitreich.org 70 i- (#x8FBEC0 #x6114) Err bitreich.org 70 i- (#x8FBEC1 #x6116) Err bitreich.org 70 i- (#x8FBEC2 #x6117) Err bitreich.org 70 i- (#x8FBEC3 #x6119) Err bitreich.org 70 i- (#x8FBEC4 #x611C) Err bitreich.org 70 i- (#x8FBEC5 #x611E) Err bitreich.org 70 i- (#x8FBEC6 #x6122) Err bitreich.org 70 i- (#x8FBEC7 #x612A) Err bitreich.org 70 i- (#x8FBEC8 #x612B) Err bitreich.org 70 i- (#x8FBEC9 #x6130) Err bitreich.org 70 i- (#x8FBECA #x6131) Err bitreich.org 70 i- (#x8FBECB #x6135) Err bitreich.org 70 i- (#x8FBECC #x6136) Err bitreich.org 70 i- (#x8FBECD #x6137) Err bitreich.org 70 i- (#x8FBECE #x6139) Err bitreich.org 70 i- (#x8FBECF #x6141) Err bitreich.org 70 i- (#x8FBED0 #x6145) Err bitreich.org 70 i- (#x8FBED1 #x6146) Err bitreich.org 70 i- (#x8FBED2 #x6149) Err bitreich.org 70 i- (#x8FBED3 #x615E) Err bitreich.org 70 i- (#x8FBED4 #x6160) Err bitreich.org 70 i- (#x8FBED5 #x616C) Err bitreich.org 70 i- (#x8FBED6 #x6172) Err bitreich.org 70 i- (#x8FBED7 #x6178) Err bitreich.org 70 i- (#x8FBED8 #x617B) Err bitreich.org 70 i- (#x8FBED9 #x617C) Err bitreich.org 70 i- (#x8FBEDA #x617F) Err bitreich.org 70 i- (#x8FBEDB #x6180) Err bitreich.org 70 i- (#x8FBEDC #x6181) Err bitreich.org 70 i- (#x8FBEDD #x6183) Err bitreich.org 70 i- (#x8FBEDE #x6184) Err bitreich.org 70 i- (#x8FBEDF #x618B) Err bitreich.org 70 i- (#x8FBEE0 #x618D) Err bitreich.org 70 i- (#x8FBEE1 #x6192) Err bitreich.org 70 i- (#x8FBEE2 #x6193) Err bitreich.org 70 i- (#x8FBEE3 #x6197) Err bitreich.org 70 i- (#x8FBEE4 #x6198) Err bitreich.org 70 i- (#x8FBEE5 #x619C) Err bitreich.org 70 i- (#x8FBEE6 #x619D) Err bitreich.org 70 i- (#x8FBEE7 #x619F) Err bitreich.org 70 i- (#x8FBEE8 #x61A0) Err bitreich.org 70 i- (#x8FBEE9 #x61A5) Err bitreich.org 70 i- (#x8FBEEA #x61A8) Err bitreich.org 70 i- (#x8FBEEB #x61AA) Err bitreich.org 70 i- (#x8FBEEC #x61AD) Err bitreich.org 70 i- (#x8FBEED #x61B8) Err bitreich.org 70 i- (#x8FBEEE #x61B9) Err bitreich.org 70 i- (#x8FBEEF #x61BC) Err bitreich.org 70 i- (#x8FBEF0 #x61C0) Err bitreich.org 70 i- (#x8FBEF1 #x61C1) Err bitreich.org 70 i- (#x8FBEF2 #x61C2) Err bitreich.org 70 i- (#x8FBEF3 #x61CE) Err bitreich.org 70 i- (#x8FBEF4 #x61CF) Err bitreich.org 70 i- (#x8FBEF5 #x61D5) Err bitreich.org 70 i- (#x8FBEF6 #x61DC) Err bitreich.org 70 i- (#x8FBEF7 #x61DD) Err bitreich.org 70 i- (#x8FBEF8 #x61DE) Err bitreich.org 70 i- (#x8FBEF9 #x61DF) Err bitreich.org 70 i- (#x8FBEFA #x61E1) Err bitreich.org 70 i- (#x8FBEFB #x61E2) Err bitreich.org 70 i- (#x8FBEFC #x61E7) Err bitreich.org 70 i- (#x8FBEFD #x61E9) Err bitreich.org 70 i- (#x8FBEFE #x61E5) Err bitreich.org 70 i- (#x8FBFA1 #x61EC) Err bitreich.org 70 i- (#x8FBFA2 #x61ED) Err bitreich.org 70 i- (#x8FBFA3 #x61EF) Err bitreich.org 70 i- (#x8FBFA4 #x6201) Err bitreich.org 70 i- (#x8FBFA5 #x6203) Err bitreich.org 70 i- (#x8FBFA6 #x6204) Err bitreich.org 70 i- (#x8FBFA7 #x6207) Err bitreich.org 70 i- (#x8FBFA8 #x6213) Err bitreich.org 70 i- (#x8FBFA9 #x6215) Err bitreich.org 70 i- (#x8FBFAA #x621C) Err bitreich.org 70 i- (#x8FBFAB #x6220) Err bitreich.org 70 i- (#x8FBFAC #x6222) Err bitreich.org 70 i- (#x8FBFAD #x6223) Err bitreich.org 70 i- (#x8FBFAE #x6227) Err bitreich.org 70 i- (#x8FBFAF #x6229) Err bitreich.org 70 i- (#x8FBFB0 #x622B) Err bitreich.org 70 i- (#x8FBFB1 #x6239) Err bitreich.org 70 i- (#x8FBFB2 #x623D) Err bitreich.org 70 i- (#x8FBFB3 #x6242) Err bitreich.org 70 i- (#x8FBFB4 #x6243) Err bitreich.org 70 i- (#x8FBFB5 #x6244) Err bitreich.org 70 i- (#x8FBFB6 #x6246) Err bitreich.org 70 i- (#x8FBFB7 #x624C) Err bitreich.org 70 i- (#x8FBFB8 #x6250) Err bitreich.org 70 i- (#x8FBFB9 #x6251) Err bitreich.org 70 i- (#x8FBFBA #x6252) Err bitreich.org 70 i- (#x8FBFBB #x6254) Err bitreich.org 70 i- (#x8FBFBC #x6256) Err bitreich.org 70 i- (#x8FBFBD #x625A) Err bitreich.org 70 i- (#x8FBFBE #x625C) Err bitreich.org 70 i- (#x8FBFBF #x6264) Err bitreich.org 70 i- (#x8FBFC0 #x626D) Err bitreich.org 70 i- (#x8FBFC1 #x626F) Err bitreich.org 70 i- (#x8FBFC2 #x6273) Err bitreich.org 70 i- (#x8FBFC3 #x627A) Err bitreich.org 70 i- (#x8FBFC4 #x627D) Err bitreich.org 70 i- (#x8FBFC5 #x628D) Err bitreich.org 70 i- (#x8FBFC6 #x628E) Err bitreich.org 70 i- (#x8FBFC7 #x628F) Err bitreich.org 70 i- (#x8FBFC8 #x6290) Err bitreich.org 70 i- (#x8FBFC9 #x62A6) Err bitreich.org 70 i- (#x8FBFCA #x62A8) Err bitreich.org 70 i- (#x8FBFCB #x62B3) Err bitreich.org 70 i- (#x8FBFCC #x62B6) Err bitreich.org 70 i- (#x8FBFCD #x62B7) Err bitreich.org 70 i- (#x8FBFCE #x62BA) Err bitreich.org 70 i- (#x8FBFCF #x62BE) Err bitreich.org 70 i- (#x8FBFD0 #x62BF) Err bitreich.org 70 i- (#x8FBFD1 #x62C4) Err bitreich.org 70 i- (#x8FBFD2 #x62CE) Err bitreich.org 70 i- (#x8FBFD3 #x62D5) Err bitreich.org 70 i- (#x8FBFD4 #x62D6) Err bitreich.org 70 i- (#x8FBFD5 #x62DA) Err bitreich.org 70 i- (#x8FBFD6 #x62EA) Err bitreich.org 70 i- (#x8FBFD7 #x62F2) Err bitreich.org 70 i- (#x8FBFD8 #x62F4) Err bitreich.org 70 i- (#x8FBFD9 #x62FC) Err bitreich.org 70 i- (#x8FBFDA #x62FD) Err bitreich.org 70 i- (#x8FBFDB #x6303) Err bitreich.org 70 i- (#x8FBFDC #x6304) Err bitreich.org 70 i- (#x8FBFDD #x630A) Err bitreich.org 70 i- (#x8FBFDE #x630B) Err bitreich.org 70 i- (#x8FBFDF #x630D) Err bitreich.org 70 i- (#x8FBFE0 #x6310) Err bitreich.org 70 i- (#x8FBFE1 #x6313) Err bitreich.org 70 i- (#x8FBFE2 #x6316) Err bitreich.org 70 i- (#x8FBFE3 #x6318) Err bitreich.org 70 i- (#x8FBFE4 #x6329) Err bitreich.org 70 i- (#x8FBFE5 #x632A) Err bitreich.org 70 i- (#x8FBFE6 #x632D) Err bitreich.org 70 i- (#x8FBFE7 #x6335) Err bitreich.org 70 i- (#x8FBFE8 #x6336) Err bitreich.org 70 i- (#x8FBFE9 #x6339) Err bitreich.org 70 i- (#x8FBFEA #x633C) Err bitreich.org 70 i- (#x8FBFEB #x6341) Err bitreich.org 70 i- (#x8FBFEC #x6342) Err bitreich.org 70 i- (#x8FBFED #x6343) Err bitreich.org 70 i- (#x8FBFEE #x6344) Err bitreich.org 70 i- (#x8FBFEF #x6346) Err bitreich.org 70 i- (#x8FBFF0 #x634A) Err bitreich.org 70 i- (#x8FBFF1 #x634B) Err bitreich.org 70 i- (#x8FBFF2 #x634E) Err bitreich.org 70 i- (#x8FBFF3 #x6352) Err bitreich.org 70 i- (#x8FBFF4 #x6353) Err bitreich.org 70 i- (#x8FBFF5 #x6354) Err bitreich.org 70 i- (#x8FBFF6 #x6358) Err bitreich.org 70 i- (#x8FBFF7 #x635B) Err bitreich.org 70 i- (#x8FBFF8 #x6365) Err bitreich.org 70 i- (#x8FBFF9 #x6366) Err bitreich.org 70 i- (#x8FBFFA #x636C) Err bitreich.org 70 i- (#x8FBFFB #x636D) Err bitreich.org 70 i- (#x8FBFFC #x6371) Err bitreich.org 70 i- (#x8FBFFD #x6374) Err bitreich.org 70 i- (#x8FBFFE #x6375) Err bitreich.org 70 i- (#x8FC0A1 #x6378) Err bitreich.org 70 i- (#x8FC0A2 #x637C) Err bitreich.org 70 i- (#x8FC0A3 #x637D) Err bitreich.org 70 i- (#x8FC0A4 #x637F) Err bitreich.org 70 i- (#x8FC0A5 #x6382) Err bitreich.org 70 i- (#x8FC0A6 #x6384) Err bitreich.org 70 i- (#x8FC0A7 #x6387) Err bitreich.org 70 i- (#x8FC0A8 #x638A) Err bitreich.org 70 i- (#x8FC0A9 #x6390) Err bitreich.org 70 i- (#x8FC0AA #x6394) Err bitreich.org 70 i- (#x8FC0AB #x6395) Err bitreich.org 70 i- (#x8FC0AC #x6399) Err bitreich.org 70 i- (#x8FC0AD #x639A) Err bitreich.org 70 i- (#x8FC0AE #x639E) Err bitreich.org 70 i- (#x8FC0AF #x63A4) Err bitreich.org 70 i- (#x8FC0B0 #x63A6) Err bitreich.org 70 i- (#x8FC0B1 #x63AD) Err bitreich.org 70 i- (#x8FC0B2 #x63AE) Err bitreich.org 70 i- (#x8FC0B3 #x63AF) Err bitreich.org 70 i- (#x8FC0B4 #x63BD) Err bitreich.org 70 i- (#x8FC0B5 #x63C1) Err bitreich.org 70 i- (#x8FC0B6 #x63C5) Err bitreich.org 70 i- (#x8FC0B7 #x63C8) Err bitreich.org 70 i- (#x8FC0B8 #x63CE) Err bitreich.org 70 i- (#x8FC0B9 #x63D1) Err bitreich.org 70 i- (#x8FC0BA #x63D3) Err bitreich.org 70 i- (#x8FC0BB #x63D4) Err bitreich.org 70 i- (#x8FC0BC #x63D5) Err bitreich.org 70 i- (#x8FC0BD #x63DC) Err bitreich.org 70 i- (#x8FC0BE #x63E0) Err bitreich.org 70 i- (#x8FC0BF #x63E5) Err bitreich.org 70 i- (#x8FC0C0 #x63EA) Err bitreich.org 70 i- (#x8FC0C1 #x63EC) Err bitreich.org 70 i- (#x8FC0C2 #x63F2) Err bitreich.org 70 i- (#x8FC0C3 #x63F3) Err bitreich.org 70 i- (#x8FC0C4 #x63F5) Err bitreich.org 70 i- (#x8FC0C5 #x63F8) Err bitreich.org 70 i- (#x8FC0C6 #x63F9) Err bitreich.org 70 i- (#x8FC0C7 #x6409) Err bitreich.org 70 i- (#x8FC0C8 #x640A) Err bitreich.org 70 i- (#x8FC0C9 #x6410) Err bitreich.org 70 i- (#x8FC0CA #x6412) Err bitreich.org 70 i- (#x8FC0CB #x6414) Err bitreich.org 70 i- (#x8FC0CC #x6418) Err bitreich.org 70 i- (#x8FC0CD #x641E) Err bitreich.org 70 i- (#x8FC0CE #x6420) Err bitreich.org 70 i- (#x8FC0CF #x6422) Err bitreich.org 70 i- (#x8FC0D0 #x6424) Err bitreich.org 70 i- (#x8FC0D1 #x6425) Err bitreich.org 70 i- (#x8FC0D2 #x6429) Err bitreich.org 70 i- (#x8FC0D3 #x642A) Err bitreich.org 70 i- (#x8FC0D4 #x642F) Err bitreich.org 70 i- (#x8FC0D5 #x6430) Err bitreich.org 70 i- (#x8FC0D6 #x6435) Err bitreich.org 70 i- (#x8FC0D7 #x643D) Err bitreich.org 70 i- (#x8FC0D8 #x643F) Err bitreich.org 70 i- (#x8FC0D9 #x644B) Err bitreich.org 70 i- (#x8FC0DA #x644F) Err bitreich.org 70 i- (#x8FC0DB #x6451) Err bitreich.org 70 i- (#x8FC0DC #x6452) Err bitreich.org 70 i- (#x8FC0DD #x6453) Err bitreich.org 70 i- (#x8FC0DE #x6454) Err bitreich.org 70 i- (#x8FC0DF #x645A) Err bitreich.org 70 i- (#x8FC0E0 #x645B) Err bitreich.org 70 i- (#x8FC0E1 #x645C) Err bitreich.org 70 i- (#x8FC0E2 #x645D) Err bitreich.org 70 i- (#x8FC0E3 #x645F) Err bitreich.org 70 i- (#x8FC0E4 #x6460) Err bitreich.org 70 i- (#x8FC0E5 #x6461) Err bitreich.org 70 i- (#x8FC0E6 #x6463) Err bitreich.org 70 i- (#x8FC0E7 #x646D) Err bitreich.org 70 i- (#x8FC0E8 #x6473) Err bitreich.org 70 i- (#x8FC0E9 #x6474) Err bitreich.org 70 i- (#x8FC0EA #x647B) Err bitreich.org 70 i- (#x8FC0EB #x647D) Err bitreich.org 70 i- (#x8FC0EC #x6485) Err bitreich.org 70 i- (#x8FC0ED #x6487) Err bitreich.org 70 i- (#x8FC0EE #x648F) Err bitreich.org 70 i- (#x8FC0EF #x6490) Err bitreich.org 70 i- (#x8FC0F0 #x6491) Err bitreich.org 70 i- (#x8FC0F1 #x6498) Err bitreich.org 70 i- (#x8FC0F2 #x6499) Err bitreich.org 70 i- (#x8FC0F3 #x649B) Err bitreich.org 70 i- (#x8FC0F4 #x649D) Err bitreich.org 70 i- (#x8FC0F5 #x649F) Err bitreich.org 70 i- (#x8FC0F6 #x64A1) Err bitreich.org 70 i- (#x8FC0F7 #x64A3) Err bitreich.org 70 i- (#x8FC0F8 #x64A6) Err bitreich.org 70 i- (#x8FC0F9 #x64A8) Err bitreich.org 70 i- (#x8FC0FA #x64AC) Err bitreich.org 70 i- (#x8FC0FB #x64B3) Err bitreich.org 70 i- (#x8FC0FC #x64BD) Err bitreich.org 70 i- (#x8FC0FD #x64BE) Err bitreich.org 70 i- (#x8FC0FE #x64BF) Err bitreich.org 70 i- (#x8FC1A1 #x64C4) Err bitreich.org 70 i- (#x8FC1A2 #x64C9) Err bitreich.org 70 i- (#x8FC1A3 #x64CA) Err bitreich.org 70 i- (#x8FC1A4 #x64CB) Err bitreich.org 70 i- (#x8FC1A5 #x64CC) Err bitreich.org 70 i- (#x8FC1A6 #x64CE) Err bitreich.org 70 i- (#x8FC1A7 #x64D0) Err bitreich.org 70 i- (#x8FC1A8 #x64D1) Err bitreich.org 70 i- (#x8FC1A9 #x64D5) Err bitreich.org 70 i- (#x8FC1AA #x64D7) Err bitreich.org 70 i- (#x8FC1AB #x64E4) Err bitreich.org 70 i- (#x8FC1AC #x64E5) Err bitreich.org 70 i- (#x8FC1AD #x64E9) Err bitreich.org 70 i- (#x8FC1AE #x64EA) Err bitreich.org 70 i- (#x8FC1AF #x64ED) Err bitreich.org 70 i- (#x8FC1B0 #x64F0) Err bitreich.org 70 i- (#x8FC1B1 #x64F5) Err bitreich.org 70 i- (#x8FC1B2 #x64F7) Err bitreich.org 70 i- (#x8FC1B3 #x64FB) Err bitreich.org 70 i- (#x8FC1B4 #x64FF) Err bitreich.org 70 i- (#x8FC1B5 #x6501) Err bitreich.org 70 i- (#x8FC1B6 #x6504) Err bitreich.org 70 i- (#x8FC1B7 #x6508) Err bitreich.org 70 i- (#x8FC1B8 #x6509) Err bitreich.org 70 i- (#x8FC1B9 #x650A) Err bitreich.org 70 i- (#x8FC1BA #x650F) Err bitreich.org 70 i- (#x8FC1BB #x6513) Err bitreich.org 70 i- (#x8FC1BC #x6514) Err bitreich.org 70 i- (#x8FC1BD #x6516) Err bitreich.org 70 i- (#x8FC1BE #x6519) Err bitreich.org 70 i- (#x8FC1BF #x651B) Err bitreich.org 70 i- (#x8FC1C0 #x651E) Err bitreich.org 70 i- (#x8FC1C1 #x651F) Err bitreich.org 70 i- (#x8FC1C2 #x6522) Err bitreich.org 70 i- (#x8FC1C3 #x6526) Err bitreich.org 70 i- (#x8FC1C4 #x6529) Err bitreich.org 70 i- (#x8FC1C5 #x652E) Err bitreich.org 70 i- (#x8FC1C6 #x6531) Err bitreich.org 70 i- (#x8FC1C7 #x653A) Err bitreich.org 70 i- (#x8FC1C8 #x653C) Err bitreich.org 70 i- (#x8FC1C9 #x653D) Err bitreich.org 70 i- (#x8FC1CA #x6543) Err bitreich.org 70 i- (#x8FC1CB #x6547) Err bitreich.org 70 i- (#x8FC1CC #x6549) Err bitreich.org 70 i- (#x8FC1CD #x6550) Err bitreich.org 70 i- (#x8FC1CE #x6552) Err bitreich.org 70 i- (#x8FC1CF #x6554) Err bitreich.org 70 i- (#x8FC1D0 #x655F) Err bitreich.org 70 i- (#x8FC1D1 #x6560) Err bitreich.org 70 i- (#x8FC1D2 #x6567) Err bitreich.org 70 i- (#x8FC1D3 #x656B) Err bitreich.org 70 i- (#x8FC1D4 #x657A) Err bitreich.org 70 i- (#x8FC1D5 #x657D) Err bitreich.org 70 i- (#x8FC1D6 #x6581) Err bitreich.org 70 i- (#x8FC1D7 #x6585) Err bitreich.org 70 i- (#x8FC1D8 #x658A) Err bitreich.org 70 i- (#x8FC1D9 #x6592) Err bitreich.org 70 i- (#x8FC1DA #x6595) Err bitreich.org 70 i- (#x8FC1DB #x6598) Err bitreich.org 70 i- (#x8FC1DC #x659D) Err bitreich.org 70 i- (#x8FC1DD #x65A0) Err bitreich.org 70 i- (#x8FC1DE #x65A3) Err bitreich.org 70 i- (#x8FC1DF #x65A6) Err bitreich.org 70 i- (#x8FC1E0 #x65AE) Err bitreich.org 70 i- (#x8FC1E1 #x65B2) Err bitreich.org 70 i- (#x8FC1E2 #x65B3) Err bitreich.org 70 i- (#x8FC1E3 #x65B4) Err bitreich.org 70 i- (#x8FC1E4 #x65BF) Err bitreich.org 70 i- (#x8FC1E5 #x65C2) Err bitreich.org 70 i- (#x8FC1E6 #x65C8) Err bitreich.org 70 i- (#x8FC1E7 #x65C9) Err bitreich.org 70 i- (#x8FC1E8 #x65CE) Err bitreich.org 70 i- (#x8FC1E9 #x65D0) Err bitreich.org 70 i- (#x8FC1EA #x65D4) Err bitreich.org 70 i- (#x8FC1EB #x65D6) Err bitreich.org 70 i- (#x8FC1EC #x65D8) Err bitreich.org 70 i- (#x8FC1ED #x65DF) Err bitreich.org 70 i- (#x8FC1EE #x65F0) Err bitreich.org 70 i- (#x8FC1EF #x65F2) Err bitreich.org 70 i- (#x8FC1F0 #x65F4) Err bitreich.org 70 i- (#x8FC1F1 #x65F5) Err bitreich.org 70 i- (#x8FC1F2 #x65F9) Err bitreich.org 70 i- (#x8FC1F3 #x65FE) Err bitreich.org 70 i- (#x8FC1F4 #x65FF) Err bitreich.org 70 i- (#x8FC1F5 #x6600) Err bitreich.org 70 i- (#x8FC1F6 #x6604) Err bitreich.org 70 i- (#x8FC1F7 #x6608) Err bitreich.org 70 i- (#x8FC1F8 #x6609) Err bitreich.org 70 i- (#x8FC1F9 #x660D) Err bitreich.org 70 i- (#x8FC1FA #x6611) Err bitreich.org 70 i- (#x8FC1FB #x6612) Err bitreich.org 70 i- (#x8FC1FC #x6615) Err bitreich.org 70 i- (#x8FC1FD #x6616) Err bitreich.org 70 i- (#x8FC1FE #x661D) Err bitreich.org 70 i- (#x8FC2A1 #x661E) Err bitreich.org 70 i- (#x8FC2A2 #x6621) Err bitreich.org 70 i- (#x8FC2A3 #x6622) Err bitreich.org 70 i- (#x8FC2A4 #x6623) Err bitreich.org 70 i- (#x8FC2A5 #x6624) Err bitreich.org 70 i- (#x8FC2A6 #x6626) Err bitreich.org 70 i- (#x8FC2A7 #x6629) Err bitreich.org 70 i- (#x8FC2A8 #x662A) Err bitreich.org 70 i- (#x8FC2A9 #x662B) Err bitreich.org 70 i- (#x8FC2AA #x662C) Err bitreich.org 70 i- (#x8FC2AB #x662E) Err bitreich.org 70 i- (#x8FC2AC #x6630) Err bitreich.org 70 i- (#x8FC2AD #x6631) Err bitreich.org 70 i- (#x8FC2AE #x6633) Err bitreich.org 70 i- (#x8FC2AF #x6639) Err bitreich.org 70 i- (#x8FC2B0 #x6637) Err bitreich.org 70 i- (#x8FC2B1 #x6640) Err bitreich.org 70 i- (#x8FC2B2 #x6645) Err bitreich.org 70 i- (#x8FC2B3 #x6646) Err bitreich.org 70 i- (#x8FC2B4 #x664A) Err bitreich.org 70 i- (#x8FC2B5 #x664C) Err bitreich.org 70 i- (#x8FC2B6 #x6651) Err bitreich.org 70 i- (#x8FC2B7 #x664E) Err bitreich.org 70 i- (#x8FC2B8 #x6657) Err bitreich.org 70 i- (#x8FC2B9 #x6658) Err bitreich.org 70 i- (#x8FC2BA #x6659) Err bitreich.org 70 i- (#x8FC2BB #x665B) Err bitreich.org 70 i- (#x8FC2BC #x665C) Err bitreich.org 70 i- (#x8FC2BD #x6660) Err bitreich.org 70 i- (#x8FC2BE #x6661) Err bitreich.org 70 i- (#x8FC2BF #x66FB) Err bitreich.org 70 i- (#x8FC2C0 #x666A) Err bitreich.org 70 i- (#x8FC2C1 #x666B) Err bitreich.org 70 i- (#x8FC2C2 #x666C) Err bitreich.org 70 i- (#x8FC2C3 #x667E) Err bitreich.org 70 i- (#x8FC2C4 #x6673) Err bitreich.org 70 i- (#x8FC2C5 #x6675) Err bitreich.org 70 i- (#x8FC2C6 #x667F) Err bitreich.org 70 i- (#x8FC2C7 #x6677) Err bitreich.org 70 i- (#x8FC2C8 #x6678) Err bitreich.org 70 i- (#x8FC2C9 #x6679) Err bitreich.org 70 i- (#x8FC2CA #x667B) Err bitreich.org 70 i- (#x8FC2CB #x6680) Err bitreich.org 70 i- (#x8FC2CC #x667C) Err bitreich.org 70 i- (#x8FC2CD #x668B) Err bitreich.org 70 i- (#x8FC2CE #x668C) Err bitreich.org 70 i- (#x8FC2CF #x668D) Err bitreich.org 70 i- (#x8FC2D0 #x6690) Err bitreich.org 70 i- (#x8FC2D1 #x6692) Err bitreich.org 70 i- (#x8FC2D2 #x6699) Err bitreich.org 70 i- (#x8FC2D3 #x669A) Err bitreich.org 70 i- (#x8FC2D4 #x669B) Err bitreich.org 70 i- (#x8FC2D5 #x669C) Err bitreich.org 70 i- (#x8FC2D6 #x669F) Err bitreich.org 70 i- (#x8FC2D7 #x66A0) Err bitreich.org 70 i- (#x8FC2D8 #x66A4) Err bitreich.org 70 i- (#x8FC2D9 #x66AD) Err bitreich.org 70 i- (#x8FC2DA #x66B1) Err bitreich.org 70 i- (#x8FC2DB #x66B2) Err bitreich.org 70 i- (#x8FC2DC #x66B5) Err bitreich.org 70 i- (#x8FC2DD #x66BB) Err bitreich.org 70 i- (#x8FC2DE #x66BF) Err bitreich.org 70 i- (#x8FC2DF #x66C0) Err bitreich.org 70 i- (#x8FC2E0 #x66C2) Err bitreich.org 70 i- (#x8FC2E1 #x66C3) Err bitreich.org 70 i- (#x8FC2E2 #x66C8) Err bitreich.org 70 i- (#x8FC2E3 #x66CC) Err bitreich.org 70 i- (#x8FC2E4 #x66CE) Err bitreich.org 70 i- (#x8FC2E5 #x66CF) Err bitreich.org 70 i- (#x8FC2E6 #x66D4) Err bitreich.org 70 i- (#x8FC2E7 #x66DB) Err bitreich.org 70 i- (#x8FC2E8 #x66DF) Err bitreich.org 70 i- (#x8FC2E9 #x66E8) Err bitreich.org 70 i- (#x8FC2EA #x66EB) Err bitreich.org 70 i- (#x8FC2EB #x66EC) Err bitreich.org 70 i- (#x8FC2EC #x66EE) Err bitreich.org 70 i- (#x8FC2ED #x66FA) Err bitreich.org 70 i- (#x8FC2EE #x6705) Err bitreich.org 70 i- (#x8FC2EF #x6707) Err bitreich.org 70 i- (#x8FC2F0 #x670E) Err bitreich.org 70 i- (#x8FC2F1 #x6713) Err bitreich.org 70 i- (#x8FC2F2 #x6719) Err bitreich.org 70 i- (#x8FC2F3 #x671C) Err bitreich.org 70 i- (#x8FC2F4 #x6720) Err bitreich.org 70 i- (#x8FC2F5 #x6722) Err bitreich.org 70 i- (#x8FC2F6 #x6733) Err bitreich.org 70 i- (#x8FC2F7 #x673E) Err bitreich.org 70 i- (#x8FC2F8 #x6745) Err bitreich.org 70 i- (#x8FC2F9 #x6747) Err bitreich.org 70 i- (#x8FC2FA #x6748) Err bitreich.org 70 i- (#x8FC2FB #x674C) Err bitreich.org 70 i- (#x8FC2FC #x6754) Err bitreich.org 70 i- (#x8FC2FD #x6755) Err bitreich.org 70 i- (#x8FC2FE #x675D) Err bitreich.org 70 i- (#x8FC3A1 #x6766) Err bitreich.org 70 i- (#x8FC3A2 #x676C) Err bitreich.org 70 i- (#x8FC3A3 #x676E) Err bitreich.org 70 i- (#x8FC3A4 #x6774) Err bitreich.org 70 i- (#x8FC3A5 #x6776) Err bitreich.org 70 i- (#x8FC3A6 #x677B) Err bitreich.org 70 i- (#x8FC3A7 #x6781) Err bitreich.org 70 i- (#x8FC3A8 #x6784) Err bitreich.org 70 i- (#x8FC3A9 #x678E) Err bitreich.org 70 i- (#x8FC3AA #x678F) Err bitreich.org 70 i- (#x8FC3AB #x6791) Err bitreich.org 70 i- (#x8FC3AC #x6793) Err bitreich.org 70 i- (#x8FC3AD #x6796) Err bitreich.org 70 i- (#x8FC3AE #x6798) Err bitreich.org 70 i- (#x8FC3AF #x6799) Err bitreich.org 70 i- (#x8FC3B0 #x679B) Err bitreich.org 70 i- (#x8FC3B1 #x67B0) Err bitreich.org 70 i- (#x8FC3B2 #x67B1) Err bitreich.org 70 i- (#x8FC3B3 #x67B2) Err bitreich.org 70 i- (#x8FC3B4 #x67B5) Err bitreich.org 70 i- (#x8FC3B5 #x67BB) Err bitreich.org 70 i- (#x8FC3B6 #x67BC) Err bitreich.org 70 i- (#x8FC3B7 #x67BD) Err bitreich.org 70 i- (#x8FC3B8 #x67F9) Err bitreich.org 70 i- (#x8FC3B9 #x67C0) Err bitreich.org 70 i- (#x8FC3BA #x67C2) Err bitreich.org 70 i- (#x8FC3BB #x67C3) Err bitreich.org 70 i- (#x8FC3BC #x67C5) Err bitreich.org 70 i- (#x8FC3BD #x67C8) Err bitreich.org 70 i- (#x8FC3BE #x67C9) Err bitreich.org 70 i- (#x8FC3BF #x67D2) Err bitreich.org 70 i- (#x8FC3C0 #x67D7) Err bitreich.org 70 i- (#x8FC3C1 #x67D9) Err bitreich.org 70 i- (#x8FC3C2 #x67DC) Err bitreich.org 70 i- (#x8FC3C3 #x67E1) Err bitreich.org 70 i- (#x8FC3C4 #x67E6) Err bitreich.org 70 i- (#x8FC3C5 #x67F0) Err bitreich.org 70 i- (#x8FC3C6 #x67F2) Err bitreich.org 70 i- (#x8FC3C7 #x67F6) Err bitreich.org 70 i- (#x8FC3C8 #x67F7) Err bitreich.org 70 i- (#x8FC3C9 #x6852) Err bitreich.org 70 i- (#x8FC3CA #x6814) Err bitreich.org 70 i- (#x8FC3CB #x6819) Err bitreich.org 70 i- (#x8FC3CC #x681D) Err bitreich.org 70 i- (#x8FC3CD #x681F) Err bitreich.org 70 i- (#x8FC3CE #x6828) Err bitreich.org 70 i- (#x8FC3CF #x6827) Err bitreich.org 70 i- (#x8FC3D0 #x682C) Err bitreich.org 70 i- (#x8FC3D1 #x682D) Err bitreich.org 70 i- (#x8FC3D2 #x682F) Err bitreich.org 70 i- (#x8FC3D3 #x6830) Err bitreich.org 70 i- (#x8FC3D4 #x6831) Err bitreich.org 70 i- (#x8FC3D5 #x6833) Err bitreich.org 70 i- (#x8FC3D6 #x683B) Err bitreich.org 70 i- (#x8FC3D7 #x683F) Err bitreich.org 70 i- (#x8FC3D8 #x6844) Err bitreich.org 70 i- (#x8FC3D9 #x6845) Err bitreich.org 70 i- (#x8FC3DA #x684A) Err bitreich.org 70 i- (#x8FC3DB #x684C) Err bitreich.org 70 i- (#x8FC3DC #x6855) Err bitreich.org 70 i- (#x8FC3DD #x6857) Err bitreich.org 70 i- (#x8FC3DE #x6858) Err bitreich.org 70 i- (#x8FC3DF #x685B) Err bitreich.org 70 i- (#x8FC3E0 #x686B) Err bitreich.org 70 i- (#x8FC3E1 #x686E) Err bitreich.org 70 i- (#x8FC3E2 #x686F) Err bitreich.org 70 i- (#x8FC3E3 #x6870) Err bitreich.org 70 i- (#x8FC3E4 #x6871) Err bitreich.org 70 i- (#x8FC3E5 #x6872) Err bitreich.org 70 i- (#x8FC3E6 #x6875) Err bitreich.org 70 i- (#x8FC3E7 #x6879) Err bitreich.org 70 i- (#x8FC3E8 #x687A) Err bitreich.org 70 i- (#x8FC3E9 #x687B) Err bitreich.org 70 i- (#x8FC3EA #x687C) Err bitreich.org 70 i- (#x8FC3EB #x6882) Err bitreich.org 70 i- (#x8FC3EC #x6884) Err bitreich.org 70 i- (#x8FC3ED #x6886) Err bitreich.org 70 i- (#x8FC3EE #x6888) Err bitreich.org 70 i- (#x8FC3EF #x6896) Err bitreich.org 70 i- (#x8FC3F0 #x6898) Err bitreich.org 70 i- (#x8FC3F1 #x689A) Err bitreich.org 70 i- (#x8FC3F2 #x689C) Err bitreich.org 70 i- (#x8FC3F3 #x68A1) Err bitreich.org 70 i- (#x8FC3F4 #x68A3) Err bitreich.org 70 i- (#x8FC3F5 #x68A5) Err bitreich.org 70 i- (#x8FC3F6 #x68A9) Err bitreich.org 70 i- (#x8FC3F7 #x68AA) Err bitreich.org 70 i- (#x8FC3F8 #x68AE) Err bitreich.org 70 i- (#x8FC3F9 #x68B2) Err bitreich.org 70 i- (#x8FC3FA #x68BB) Err bitreich.org 70 i- (#x8FC3FB #x68C5) Err bitreich.org 70 i- (#x8FC3FC #x68C8) Err bitreich.org 70 i- (#x8FC3FD #x68CC) Err bitreich.org 70 i- (#x8FC3FE #x68CF) Err bitreich.org 70 i- (#x8FC4A1 #x68D0) Err bitreich.org 70 i- (#x8FC4A2 #x68D1) Err bitreich.org 70 i- (#x8FC4A3 #x68D3) Err bitreich.org 70 i- (#x8FC4A4 #x68D6) Err bitreich.org 70 i- (#x8FC4A5 #x68D9) Err bitreich.org 70 i- (#x8FC4A6 #x68DC) Err bitreich.org 70 i- (#x8FC4A7 #x68DD) Err bitreich.org 70 i- (#x8FC4A8 #x68E5) Err bitreich.org 70 i- (#x8FC4A9 #x68E8) Err bitreich.org 70 i- (#x8FC4AA #x68EA) Err bitreich.org 70 i- (#x8FC4AB #x68EB) Err bitreich.org 70 i- (#x8FC4AC #x68EC) Err bitreich.org 70 i- (#x8FC4AD #x68ED) Err bitreich.org 70 i- (#x8FC4AE #x68F0) Err bitreich.org 70 i- (#x8FC4AF #x68F1) Err bitreich.org 70 i- (#x8FC4B0 #x68F5) Err bitreich.org 70 i- (#x8FC4B1 #x68F6) Err bitreich.org 70 i- (#x8FC4B2 #x68FB) Err bitreich.org 70 i- (#x8FC4B3 #x68FC) Err bitreich.org 70 i- (#x8FC4B4 #x68FD) Err bitreich.org 70 i- (#x8FC4B5 #x6906) Err bitreich.org 70 i- (#x8FC4B6 #x6909) Err bitreich.org 70 i- (#x8FC4B7 #x690A) Err bitreich.org 70 i- (#x8FC4B8 #x6910) Err bitreich.org 70 i- (#x8FC4B9 #x6911) Err bitreich.org 70 i- (#x8FC4BA #x6913) Err bitreich.org 70 i- (#x8FC4BB #x6916) Err bitreich.org 70 i- (#x8FC4BC #x6917) Err bitreich.org 70 i- (#x8FC4BD #x6931) Err bitreich.org 70 i- (#x8FC4BE #x6933) Err bitreich.org 70 i- (#x8FC4BF #x6935) Err bitreich.org 70 i- (#x8FC4C0 #x6938) Err bitreich.org 70 i- (#x8FC4C1 #x693B) Err bitreich.org 70 i- (#x8FC4C2 #x6942) Err bitreich.org 70 i- (#x8FC4C3 #x6945) Err bitreich.org 70 i- (#x8FC4C4 #x6949) Err bitreich.org 70 i- (#x8FC4C5 #x694E) Err bitreich.org 70 i- (#x8FC4C6 #x6957) Err bitreich.org 70 i- (#x8FC4C7 #x695B) Err bitreich.org 70 i- (#x8FC4C8 #x6963) Err bitreich.org 70 i- (#x8FC4C9 #x6964) Err bitreich.org 70 i- (#x8FC4CA #x6965) Err bitreich.org 70 i- (#x8FC4CB #x6966) Err bitreich.org 70 i- (#x8FC4CC #x6968) Err bitreich.org 70 i- (#x8FC4CD #x6969) Err bitreich.org 70 i- (#x8FC4CE #x696C) Err bitreich.org 70 i- (#x8FC4CF #x6970) Err bitreich.org 70 i- (#x8FC4D0 #x6971) Err bitreich.org 70 i- (#x8FC4D1 #x6972) Err bitreich.org 70 i- (#x8FC4D2 #x697A) Err bitreich.org 70 i- (#x8FC4D3 #x697B) Err bitreich.org 70 i- (#x8FC4D4 #x697F) Err bitreich.org 70 i- (#x8FC4D5 #x6980) Err bitreich.org 70 i- (#x8FC4D6 #x698D) Err bitreich.org 70 i- (#x8FC4D7 #x6992) Err bitreich.org 70 i- (#x8FC4D8 #x6996) Err bitreich.org 70 i- (#x8FC4D9 #x6998) Err bitreich.org 70 i- (#x8FC4DA #x69A1) Err bitreich.org 70 i- (#x8FC4DB #x69A5) Err bitreich.org 70 i- (#x8FC4DC #x69A6) Err bitreich.org 70 i- (#x8FC4DD #x69A8) Err bitreich.org 70 i- (#x8FC4DE #x69AB) Err bitreich.org 70 i- (#x8FC4DF #x69AD) Err bitreich.org 70 i- (#x8FC4E0 #x69AF) Err bitreich.org 70 i- (#x8FC4E1 #x69B7) Err bitreich.org 70 i- (#x8FC4E2 #x69B8) Err bitreich.org 70 i- (#x8FC4E3 #x69BA) Err bitreich.org 70 i- (#x8FC4E4 #x69BC) Err bitreich.org 70 i- (#x8FC4E5 #x69C5) Err bitreich.org 70 i- (#x8FC4E6 #x69C8) Err bitreich.org 70 i- (#x8FC4E7 #x69D1) Err bitreich.org 70 i- (#x8FC4E8 #x69D6) Err bitreich.org 70 i- (#x8FC4E9 #x69D7) Err bitreich.org 70 i- (#x8FC4EA #x69E2) Err bitreich.org 70 i- (#x8FC4EB #x69E5) Err bitreich.org 70 i- (#x8FC4EC #x69EE) Err bitreich.org 70 i- (#x8FC4ED #x69EF) Err bitreich.org 70 i- (#x8FC4EE #x69F1) Err bitreich.org 70 i- (#x8FC4EF #x69F3) Err bitreich.org 70 i- (#x8FC4F0 #x69F5) Err bitreich.org 70 i- (#x8FC4F1 #x69FE) Err bitreich.org 70 i- (#x8FC4F2 #x6A00) Err bitreich.org 70 i- (#x8FC4F3 #x6A01) Err bitreich.org 70 i- (#x8FC4F4 #x6A03) Err bitreich.org 70 i- (#x8FC4F5 #x6A0F) Err bitreich.org 70 i- (#x8FC4F6 #x6A11) Err bitreich.org 70 i- (#x8FC4F7 #x6A15) Err bitreich.org 70 i- (#x8FC4F8 #x6A1A) Err bitreich.org 70 i- (#x8FC4F9 #x6A1D) Err bitreich.org 70 i- (#x8FC4FA #x6A20) Err bitreich.org 70 i- (#x8FC4FB #x6A24) Err bitreich.org 70 i- (#x8FC4FC #x6A28) Err bitreich.org 70 i- (#x8FC4FD #x6A30) Err bitreich.org 70 i- (#x8FC4FE #x6A32) Err bitreich.org 70 i- (#x8FC5A1 #x6A34) Err bitreich.org 70 i- (#x8FC5A2 #x6A37) Err bitreich.org 70 i- (#x8FC5A3 #x6A3B) Err bitreich.org 70 i- (#x8FC5A4 #x6A3E) Err bitreich.org 70 i- (#x8FC5A5 #x6A3F) Err bitreich.org 70 i- (#x8FC5A6 #x6A45) Err bitreich.org 70 i- (#x8FC5A7 #x6A46) Err bitreich.org 70 i- (#x8FC5A8 #x6A49) Err bitreich.org 70 i- (#x8FC5A9 #x6A4A) Err bitreich.org 70 i- (#x8FC5AA #x6A4E) Err bitreich.org 70 i- (#x8FC5AB #x6A50) Err bitreich.org 70 i- (#x8FC5AC #x6A51) Err bitreich.org 70 i- (#x8FC5AD #x6A52) Err bitreich.org 70 i- (#x8FC5AE #x6A55) Err bitreich.org 70 i- (#x8FC5AF #x6A56) Err bitreich.org 70 i- (#x8FC5B0 #x6A5B) Err bitreich.org 70 i- (#x8FC5B1 #x6A64) Err bitreich.org 70 i- (#x8FC5B2 #x6A67) Err bitreich.org 70 i- (#x8FC5B3 #x6A6A) Err bitreich.org 70 i- (#x8FC5B4 #x6A71) Err bitreich.org 70 i- (#x8FC5B5 #x6A73) Err bitreich.org 70 i- (#x8FC5B6 #x6A7E) Err bitreich.org 70 i- (#x8FC5B7 #x6A81) Err bitreich.org 70 i- (#x8FC5B8 #x6A83) Err bitreich.org 70 i- (#x8FC5B9 #x6A86) Err bitreich.org 70 i- (#x8FC5BA #x6A87) Err bitreich.org 70 i- (#x8FC5BB #x6A89) Err bitreich.org 70 i- (#x8FC5BC #x6A8B) Err bitreich.org 70 i- (#x8FC5BD #x6A91) Err bitreich.org 70 i- (#x8FC5BE #x6A9B) Err bitreich.org 70 i- (#x8FC5BF #x6A9D) Err bitreich.org 70 i- (#x8FC5C0 #x6A9E) Err bitreich.org 70 i- (#x8FC5C1 #x6A9F) Err bitreich.org 70 i- (#x8FC5C2 #x6AA5) Err bitreich.org 70 i- (#x8FC5C3 #x6AAB) Err bitreich.org 70 i- (#x8FC5C4 #x6AAF) Err bitreich.org 70 i- (#x8FC5C5 #x6AB0) Err bitreich.org 70 i- (#x8FC5C6 #x6AB1) Err bitreich.org 70 i- (#x8FC5C7 #x6AB4) Err bitreich.org 70 i- (#x8FC5C8 #x6ABD) Err bitreich.org 70 i- (#x8FC5C9 #x6ABE) Err bitreich.org 70 i- (#x8FC5CA #x6ABF) Err bitreich.org 70 i- (#x8FC5CB #x6AC6) Err bitreich.org 70 i- (#x8FC5CC #x6AC9) Err bitreich.org 70 i- (#x8FC5CD #x6AC8) Err bitreich.org 70 i- (#x8FC5CE #x6ACC) Err bitreich.org 70 i- (#x8FC5CF #x6AD0) Err bitreich.org 70 i- (#x8FC5D0 #x6AD4) Err bitreich.org 70 i- (#x8FC5D1 #x6AD5) Err bitreich.org 70 i- (#x8FC5D2 #x6AD6) Err bitreich.org 70 i- (#x8FC5D3 #x6ADC) Err bitreich.org 70 i- (#x8FC5D4 #x6ADD) Err bitreich.org 70 i- (#x8FC5D5 #x6AE4) Err bitreich.org 70 i- (#x8FC5D6 #x6AE7) Err bitreich.org 70 i- (#x8FC5D7 #x6AEC) Err bitreich.org 70 i- (#x8FC5D8 #x6AF0) Err bitreich.org 70 i- (#x8FC5D9 #x6AF1) Err bitreich.org 70 i- (#x8FC5DA #x6AF2) Err bitreich.org 70 i- (#x8FC5DB #x6AFC) Err bitreich.org 70 i- (#x8FC5DC #x6AFD) Err bitreich.org 70 i- (#x8FC5DD #x6B02) Err bitreich.org 70 i- (#x8FC5DE #x6B03) Err bitreich.org 70 i- (#x8FC5DF #x6B06) Err bitreich.org 70 i- (#x8FC5E0 #x6B07) Err bitreich.org 70 i- (#x8FC5E1 #x6B09) Err bitreich.org 70 i- (#x8FC5E2 #x6B0F) Err bitreich.org 70 i- (#x8FC5E3 #x6B10) Err bitreich.org 70 i- (#x8FC5E4 #x6B11) Err bitreich.org 70 i- (#x8FC5E5 #x6B17) Err bitreich.org 70 i- (#x8FC5E6 #x6B1B) Err bitreich.org 70 i- (#x8FC5E7 #x6B1E) Err bitreich.org 70 i- (#x8FC5E8 #x6B24) Err bitreich.org 70 i- (#x8FC5E9 #x6B28) Err bitreich.org 70 i- (#x8FC5EA #x6B2B) Err bitreich.org 70 i- (#x8FC5EB #x6B2C) Err bitreich.org 70 i- (#x8FC5EC #x6B2F) Err bitreich.org 70 i- (#x8FC5ED #x6B35) Err bitreich.org 70 i- (#x8FC5EE #x6B36) Err bitreich.org 70 i- (#x8FC5EF #x6B3B) Err bitreich.org 70 i- (#x8FC5F0 #x6B3F) Err bitreich.org 70 i- (#x8FC5F1 #x6B46) Err bitreich.org 70 i- (#x8FC5F2 #x6B4A) Err bitreich.org 70 i- (#x8FC5F3 #x6B4D) Err bitreich.org 70 i- (#x8FC5F4 #x6B52) Err bitreich.org 70 i- (#x8FC5F5 #x6B56) Err bitreich.org 70 i- (#x8FC5F6 #x6B58) Err bitreich.org 70 i- (#x8FC5F7 #x6B5D) Err bitreich.org 70 i- (#x8FC5F8 #x6B60) Err bitreich.org 70 i- (#x8FC5F9 #x6B67) Err bitreich.org 70 i- (#x8FC5FA #x6B6B) Err bitreich.org 70 i- (#x8FC5FB #x6B6E) Err bitreich.org 70 i- (#x8FC5FC #x6B70) Err bitreich.org 70 i- (#x8FC5FD #x6B75) Err bitreich.org 70 i- (#x8FC5FE #x6B7D) Err bitreich.org 70 i- (#x8FC6A1 #x6B7E) Err bitreich.org 70 i- (#x8FC6A2 #x6B82) Err bitreich.org 70 i- (#x8FC6A3 #x6B85) Err bitreich.org 70 i- (#x8FC6A4 #x6B97) Err bitreich.org 70 i- (#x8FC6A5 #x6B9B) Err bitreich.org 70 i- (#x8FC6A6 #x6B9F) Err bitreich.org 70 i- (#x8FC6A7 #x6BA0) Err bitreich.org 70 i- (#x8FC6A8 #x6BA2) Err bitreich.org 70 i- (#x8FC6A9 #x6BA3) Err bitreich.org 70 i- (#x8FC6AA #x6BA8) Err bitreich.org 70 i- (#x8FC6AB #x6BA9) Err bitreich.org 70 i- (#x8FC6AC #x6BAC) Err bitreich.org 70 i- (#x8FC6AD #x6BAD) Err bitreich.org 70 i- (#x8FC6AE #x6BAE) Err bitreich.org 70 i- (#x8FC6AF #x6BB0) Err bitreich.org 70 i- (#x8FC6B0 #x6BB8) Err bitreich.org 70 i- (#x8FC6B1 #x6BB9) Err bitreich.org 70 i- (#x8FC6B2 #x6BBD) Err bitreich.org 70 i- (#x8FC6B3 #x6BBE) Err bitreich.org 70 i- (#x8FC6B4 #x6BC3) Err bitreich.org 70 i- (#x8FC6B5 #x6BC4) Err bitreich.org 70 i- (#x8FC6B6 #x6BC9) Err bitreich.org 70 i- (#x8FC6B7 #x6BCC) Err bitreich.org 70 i- (#x8FC6B8 #x6BD6) Err bitreich.org 70 i- (#x8FC6B9 #x6BDA) Err bitreich.org 70 i- (#x8FC6BA #x6BE1) Err bitreich.org 70 i- (#x8FC6BB #x6BE3) Err bitreich.org 70 i- (#x8FC6BC #x6BE6) Err bitreich.org 70 i- (#x8FC6BD #x6BE7) Err bitreich.org 70 i- (#x8FC6BE #x6BEE) Err bitreich.org 70 i- (#x8FC6BF #x6BF1) Err bitreich.org 70 i- (#x8FC6C0 #x6BF7) Err bitreich.org 70 i- (#x8FC6C1 #x6BF9) Err bitreich.org 70 i- (#x8FC6C2 #x6BFF) Err bitreich.org 70 i- (#x8FC6C3 #x6C02) Err bitreich.org 70 i- (#x8FC6C4 #x6C04) Err bitreich.org 70 i- (#x8FC6C5 #x6C05) Err bitreich.org 70 i- (#x8FC6C6 #x6C09) Err bitreich.org 70 i- (#x8FC6C7 #x6C0D) Err bitreich.org 70 i- (#x8FC6C8 #x6C0E) Err bitreich.org 70 i- (#x8FC6C9 #x6C10) Err bitreich.org 70 i- (#x8FC6CA #x6C12) Err bitreich.org 70 i- (#x8FC6CB #x6C19) Err bitreich.org 70 i- (#x8FC6CC #x6C1F) Err bitreich.org 70 i- (#x8FC6CD #x6C26) Err bitreich.org 70 i- (#x8FC6CE #x6C27) Err bitreich.org 70 i- (#x8FC6CF #x6C28) Err bitreich.org 70 i- (#x8FC6D0 #x6C2C) Err bitreich.org 70 i- (#x8FC6D1 #x6C2E) Err bitreich.org 70 i- (#x8FC6D2 #x6C33) Err bitreich.org 70 i- (#x8FC6D3 #x6C35) Err bitreich.org 70 i- (#x8FC6D4 #x6C36) Err bitreich.org 70 i- (#x8FC6D5 #x6C3A) Err bitreich.org 70 i- (#x8FC6D6 #x6C3B) Err bitreich.org 70 i- (#x8FC6D7 #x6C3F) Err bitreich.org 70 i- (#x8FC6D8 #x6C4A) Err bitreich.org 70 i- (#x8FC6D9 #x6C4B) Err bitreich.org 70 i- (#x8FC6DA #x6C4D) Err bitreich.org 70 i- (#x8FC6DB #x6C4F) Err bitreich.org 70 i- (#x8FC6DC #x6C52) Err bitreich.org 70 i- (#x8FC6DD #x6C54) Err bitreich.org 70 i- (#x8FC6DE #x6C59) Err bitreich.org 70 i- (#x8FC6DF #x6C5B) Err bitreich.org 70 i- (#x8FC6E0 #x6C5C) Err bitreich.org 70 i- (#x8FC6E1 #x6C6B) Err bitreich.org 70 i- (#x8FC6E2 #x6C6D) Err bitreich.org 70 i- (#x8FC6E3 #x6C6F) Err bitreich.org 70 i- (#x8FC6E4 #x6C74) Err bitreich.org 70 i- (#x8FC6E5 #x6C76) Err bitreich.org 70 i- (#x8FC6E6 #x6C78) Err bitreich.org 70 i- (#x8FC6E7 #x6C79) Err bitreich.org 70 i- (#x8FC6E8 #x6C7B) Err bitreich.org 70 i- (#x8FC6E9 #x6C85) Err bitreich.org 70 i- (#x8FC6EA #x6C86) Err bitreich.org 70 i- (#x8FC6EB #x6C87) Err bitreich.org 70 i- (#x8FC6EC #x6C89) Err bitreich.org 70 i- (#x8FC6ED #x6C94) Err bitreich.org 70 i- (#x8FC6EE #x6C95) Err bitreich.org 70 i- (#x8FC6EF #x6C97) Err bitreich.org 70 i- (#x8FC6F0 #x6C98) Err bitreich.org 70 i- (#x8FC6F1 #x6C9C) Err bitreich.org 70 i- (#x8FC6F2 #x6C9F) Err bitreich.org 70 i- (#x8FC6F3 #x6CB0) Err bitreich.org 70 i- (#x8FC6F4 #x6CB2) Err bitreich.org 70 i- (#x8FC6F5 #x6CB4) Err bitreich.org 70 i- (#x8FC6F6 #x6CC2) Err bitreich.org 70 i- (#x8FC6F7 #x6CC6) Err bitreich.org 70 i- (#x8FC6F8 #x6CCD) Err bitreich.org 70 i- (#x8FC6F9 #x6CCF) Err bitreich.org 70 i- (#x8FC6FA #x6CD0) Err bitreich.org 70 i- (#x8FC6FB #x6CD1) Err bitreich.org 70 i- (#x8FC6FC #x6CD2) Err bitreich.org 70 i- (#x8FC6FD #x6CD4) Err bitreich.org 70 i- (#x8FC6FE #x6CD6) Err bitreich.org 70 i- (#x8FC7A1 #x6CDA) Err bitreich.org 70 i- (#x8FC7A2 #x6CDC) Err bitreich.org 70 i- (#x8FC7A3 #x6CE0) Err bitreich.org 70 i- (#x8FC7A4 #x6CE7) Err bitreich.org 70 i- (#x8FC7A5 #x6CE9) Err bitreich.org 70 i- (#x8FC7A6 #x6CEB) Err bitreich.org 70 i- (#x8FC7A7 #x6CEC) Err bitreich.org 70 i- (#x8FC7A8 #x6CEE) Err bitreich.org 70 i- (#x8FC7A9 #x6CF2) Err bitreich.org 70 i- (#x8FC7AA #x6CF4) Err bitreich.org 70 i- (#x8FC7AB #x6D04) Err bitreich.org 70 i- (#x8FC7AC #x6D07) Err bitreich.org 70 i- (#x8FC7AD #x6D0A) Err bitreich.org 70 i- (#x8FC7AE #x6D0E) Err bitreich.org 70 i- (#x8FC7AF #x6D0F) Err bitreich.org 70 i- (#x8FC7B0 #x6D11) Err bitreich.org 70 i- (#x8FC7B1 #x6D13) Err bitreich.org 70 i- (#x8FC7B2 #x6D1A) Err bitreich.org 70 i- (#x8FC7B3 #x6D26) Err bitreich.org 70 i- (#x8FC7B4 #x6D27) Err bitreich.org 70 i- (#x8FC7B5 #x6D28) Err bitreich.org 70 i- (#x8FC7B6 #x6C67) Err bitreich.org 70 i- (#x8FC7B7 #x6D2E) Err bitreich.org 70 i- (#x8FC7B8 #x6D2F) Err bitreich.org 70 i- (#x8FC7B9 #x6D31) Err bitreich.org 70 i- (#x8FC7BA #x6D39) Err bitreich.org 70 i- (#x8FC7BB #x6D3C) Err bitreich.org 70 i- (#x8FC7BC #x6D3F) Err bitreich.org 70 i- (#x8FC7BD #x6D57) Err bitreich.org 70 i- (#x8FC7BE #x6D5E) Err bitreich.org 70 i- (#x8FC7BF #x6D5F) Err bitreich.org 70 i- (#x8FC7C0 #x6D61) Err bitreich.org 70 i- (#x8FC7C1 #x6D65) Err bitreich.org 70 i- (#x8FC7C2 #x6D67) Err bitreich.org 70 i- (#x8FC7C3 #x6D6F) Err bitreich.org 70 i- (#x8FC7C4 #x6D70) Err bitreich.org 70 i- (#x8FC7C5 #x6D7C) Err bitreich.org 70 i- (#x8FC7C6 #x6D82) Err bitreich.org 70 i- (#x8FC7C7 #x6D87) Err bitreich.org 70 i- (#x8FC7C8 #x6D91) Err bitreich.org 70 i- (#x8FC7C9 #x6D92) Err bitreich.org 70 i- (#x8FC7CA #x6D94) Err bitreich.org 70 i- (#x8FC7CB #x6D96) Err bitreich.org 70 i- (#x8FC7CC #x6D97) Err bitreich.org 70 i- (#x8FC7CD #x6D98) Err bitreich.org 70 i- (#x8FC7CE #x6DAA) Err bitreich.org 70 i- (#x8FC7CF #x6DAC) Err bitreich.org 70 i- (#x8FC7D0 #x6DB4) Err bitreich.org 70 i- (#x8FC7D1 #x6DB7) Err bitreich.org 70 i- (#x8FC7D2 #x6DB9) Err bitreich.org 70 i- (#x8FC7D3 #x6DBD) Err bitreich.org 70 i- (#x8FC7D4 #x6DBF) Err bitreich.org 70 i- (#x8FC7D5 #x6DC4) Err bitreich.org 70 i- (#x8FC7D6 #x6DC8) Err bitreich.org 70 i- (#x8FC7D7 #x6DCA) Err bitreich.org 70 i- (#x8FC7D8 #x6DCE) Err bitreich.org 70 i- (#x8FC7D9 #x6DCF) Err bitreich.org 70 i- (#x8FC7DA #x6DD6) Err bitreich.org 70 i- (#x8FC7DB #x6DDB) Err bitreich.org 70 i- (#x8FC7DC #x6DDD) Err bitreich.org 70 i- (#x8FC7DD #x6DDF) Err bitreich.org 70 i- (#x8FC7DE #x6DE0) Err bitreich.org 70 i- (#x8FC7DF #x6DE2) Err bitreich.org 70 i- (#x8FC7E0 #x6DE5) Err bitreich.org 70 i- (#x8FC7E1 #x6DE9) Err bitreich.org 70 i- (#x8FC7E2 #x6DEF) Err bitreich.org 70 i- (#x8FC7E3 #x6DF0) Err bitreich.org 70 i- (#x8FC7E4 #x6DF4) Err bitreich.org 70 i- (#x8FC7E5 #x6DF6) Err bitreich.org 70 i- (#x8FC7E6 #x6DFC) Err bitreich.org 70 i- (#x8FC7E7 #x6E00) Err bitreich.org 70 i- (#x8FC7E8 #x6E04) Err bitreich.org 70 i- (#x8FC7E9 #x6E1E) Err bitreich.org 70 i- (#x8FC7EA #x6E22) Err bitreich.org 70 i- (#x8FC7EB #x6E27) Err bitreich.org 70 i- (#x8FC7EC #x6E32) Err bitreich.org 70 i- (#x8FC7ED #x6E36) Err bitreich.org 70 i- (#x8FC7EE #x6E39) Err bitreich.org 70 i- (#x8FC7EF #x6E3B) Err bitreich.org 70 i- (#x8FC7F0 #x6E3C) Err bitreich.org 70 i- (#x8FC7F1 #x6E44) Err bitreich.org 70 i- (#x8FC7F2 #x6E45) Err bitreich.org 70 i- (#x8FC7F3 #x6E48) Err bitreich.org 70 i- (#x8FC7F4 #x6E49) Err bitreich.org 70 i- (#x8FC7F5 #x6E4B) Err bitreich.org 70 i- (#x8FC7F6 #x6E4F) Err bitreich.org 70 i- (#x8FC7F7 #x6E51) Err bitreich.org 70 i- (#x8FC7F8 #x6E52) Err bitreich.org 70 i- (#x8FC7F9 #x6E53) Err bitreich.org 70 i- (#x8FC7FA #x6E54) Err bitreich.org 70 i- (#x8FC7FB #x6E57) Err bitreich.org 70 i- (#x8FC7FC #x6E5C) Err bitreich.org 70 i- (#x8FC7FD #x6E5D) Err bitreich.org 70 i- (#x8FC7FE #x6E5E) Err bitreich.org 70 i- (#x8FC8A1 #x6E62) Err bitreich.org 70 i- (#x8FC8A2 #x6E63) Err bitreich.org 70 i- (#x8FC8A3 #x6E68) Err bitreich.org 70 i- (#x8FC8A4 #x6E73) Err bitreich.org 70 i- (#x8FC8A5 #x6E7B) Err bitreich.org 70 i- (#x8FC8A6 #x6E7D) Err bitreich.org 70 i- (#x8FC8A7 #x6E8D) Err bitreich.org 70 i- (#x8FC8A8 #x6E93) Err bitreich.org 70 i- (#x8FC8A9 #x6E99) Err bitreich.org 70 i- (#x8FC8AA #x6EA0) Err bitreich.org 70 i- (#x8FC8AB #x6EA7) Err bitreich.org 70 i- (#x8FC8AC #x6EAD) Err bitreich.org 70 i- (#x8FC8AD #x6EAE) Err bitreich.org 70 i- (#x8FC8AE #x6EB1) Err bitreich.org 70 i- (#x8FC8AF #x6EB3) Err bitreich.org 70 i- (#x8FC8B0 #x6EBB) Err bitreich.org 70 i- (#x8FC8B1 #x6EBF) Err bitreich.org 70 i- (#x8FC8B2 #x6EC0) Err bitreich.org 70 i- (#x8FC8B3 #x6EC1) Err bitreich.org 70 i- (#x8FC8B4 #x6EC3) Err bitreich.org 70 i- (#x8FC8B5 #x6EC7) Err bitreich.org 70 i- (#x8FC8B6 #x6EC8) Err bitreich.org 70 i- (#x8FC8B7 #x6ECA) Err bitreich.org 70 i- (#x8FC8B8 #x6ECD) Err bitreich.org 70 i- (#x8FC8B9 #x6ECE) Err bitreich.org 70 i- (#x8FC8BA #x6ECF) Err bitreich.org 70 i- (#x8FC8BB #x6EEB) Err bitreich.org 70 i- (#x8FC8BC #x6EED) Err bitreich.org 70 i- (#x8FC8BD #x6EEE) Err bitreich.org 70 i- (#x8FC8BE #x6EF9) Err bitreich.org 70 i- (#x8FC8BF #x6EFB) Err bitreich.org 70 i- (#x8FC8C0 #x6EFD) Err bitreich.org 70 i- (#x8FC8C1 #x6F04) Err bitreich.org 70 i- (#x8FC8C2 #x6F08) Err bitreich.org 70 i- (#x8FC8C3 #x6F0A) Err bitreich.org 70 i- (#x8FC8C4 #x6F0C) Err bitreich.org 70 i- (#x8FC8C5 #x6F0D) Err bitreich.org 70 i- (#x8FC8C6 #x6F16) Err bitreich.org 70 i- (#x8FC8C7 #x6F18) Err bitreich.org 70 i- (#x8FC8C8 #x6F1A) Err bitreich.org 70 i- (#x8FC8C9 #x6F1B) Err bitreich.org 70 i- (#x8FC8CA #x6F26) Err bitreich.org 70 i- (#x8FC8CB #x6F29) Err bitreich.org 70 i- (#x8FC8CC #x6F2A) Err bitreich.org 70 i- (#x8FC8CD #x6F2F) Err bitreich.org 70 i- (#x8FC8CE #x6F30) Err bitreich.org 70 i- (#x8FC8CF #x6F33) Err bitreich.org 70 i- (#x8FC8D0 #x6F36) Err bitreich.org 70 i- (#x8FC8D1 #x6F3B) Err bitreich.org 70 i- (#x8FC8D2 #x6F3C) Err bitreich.org 70 i- (#x8FC8D3 #x6F2D) Err bitreich.org 70 i- (#x8FC8D4 #x6F4F) Err bitreich.org 70 i- (#x8FC8D5 #x6F51) Err bitreich.org 70 i- (#x8FC8D6 #x6F52) Err bitreich.org 70 i- (#x8FC8D7 #x6F53) Err bitreich.org 70 i- (#x8FC8D8 #x6F57) Err bitreich.org 70 i- (#x8FC8D9 #x6F59) Err bitreich.org 70 i- (#x8FC8DA #x6F5A) Err bitreich.org 70 i- (#x8FC8DB #x6F5D) Err bitreich.org 70 i- (#x8FC8DC #x6F5E) Err bitreich.org 70 i- (#x8FC8DD #x6F61) Err bitreich.org 70 i- (#x8FC8DE #x6F62) Err bitreich.org 70 i- (#x8FC8DF #x6F68) Err bitreich.org 70 i- (#x8FC8E0 #x6F6C) Err bitreich.org 70 i- (#x8FC8E1 #x6F7D) Err bitreich.org 70 i- (#x8FC8E2 #x6F7E) Err bitreich.org 70 i- (#x8FC8E3 #x6F83) Err bitreich.org 70 i- (#x8FC8E4 #x6F87) Err bitreich.org 70 i- (#x8FC8E5 #x6F88) Err bitreich.org 70 i- (#x8FC8E6 #x6F8B) Err bitreich.org 70 i- (#x8FC8E7 #x6F8C) Err bitreich.org 70 i- (#x8FC8E8 #x6F8D) Err bitreich.org 70 i- (#x8FC8E9 #x6F90) Err bitreich.org 70 i- (#x8FC8EA #x6F92) Err bitreich.org 70 i- (#x8FC8EB #x6F93) Err bitreich.org 70 i- (#x8FC8EC #x6F94) Err bitreich.org 70 i- (#x8FC8ED #x6F96) Err bitreich.org 70 i- (#x8FC8EE #x6F9A) Err bitreich.org 70 i- (#x8FC8EF #x6F9F) Err bitreich.org 70 i- (#x8FC8F0 #x6FA0) Err bitreich.org 70 i- (#x8FC8F1 #x6FA5) Err bitreich.org 70 i- (#x8FC8F2 #x6FA6) Err bitreich.org 70 i- (#x8FC8F3 #x6FA7) Err bitreich.org 70 i- (#x8FC8F4 #x6FA8) Err bitreich.org 70 i- (#x8FC8F5 #x6FAE) Err bitreich.org 70 i- (#x8FC8F6 #x6FAF) Err bitreich.org 70 i- (#x8FC8F7 #x6FB0) Err bitreich.org 70 i- (#x8FC8F8 #x6FB5) Err bitreich.org 70 i- (#x8FC8F9 #x6FB6) Err bitreich.org 70 i- (#x8FC8FA #x6FBC) Err bitreich.org 70 i- (#x8FC8FB #x6FC5) Err bitreich.org 70 i- (#x8FC8FC #x6FC7) Err bitreich.org 70 i- (#x8FC8FD #x6FC8) Err bitreich.org 70 i- (#x8FC8FE #x6FCA) Err bitreich.org 70 i- (#x8FC9A1 #x6FDA) Err bitreich.org 70 i- (#x8FC9A2 #x6FDE) Err bitreich.org 70 i- (#x8FC9A3 #x6FE8) Err bitreich.org 70 i- (#x8FC9A4 #x6FE9) Err bitreich.org 70 i- (#x8FC9A5 #x6FF0) Err bitreich.org 70 i- (#x8FC9A6 #x6FF5) Err bitreich.org 70 i- (#x8FC9A7 #x6FF9) Err bitreich.org 70 i- (#x8FC9A8 #x6FFC) Err bitreich.org 70 i- (#x8FC9A9 #x6FFD) Err bitreich.org 70 i- (#x8FC9AA #x7000) Err bitreich.org 70 i- (#x8FC9AB #x7005) Err bitreich.org 70 i- (#x8FC9AC #x7006) Err bitreich.org 70 i- (#x8FC9AD #x7007) Err bitreich.org 70 i- (#x8FC9AE #x700D) Err bitreich.org 70 i- (#x8FC9AF #x7017) Err bitreich.org 70 i- (#x8FC9B0 #x7020) Err bitreich.org 70 i- (#x8FC9B1 #x7023) Err bitreich.org 70 i- (#x8FC9B2 #x702F) Err bitreich.org 70 i- (#x8FC9B3 #x7034) Err bitreich.org 70 i- (#x8FC9B4 #x7037) Err bitreich.org 70 i- (#x8FC9B5 #x7039) Err bitreich.org 70 i- (#x8FC9B6 #x703C) Err bitreich.org 70 i- (#x8FC9B7 #x7043) Err bitreich.org 70 i- (#x8FC9B8 #x7044) Err bitreich.org 70 i- (#x8FC9B9 #x7048) Err bitreich.org 70 i- (#x8FC9BA #x7049) Err bitreich.org 70 i- (#x8FC9BB #x704A) Err bitreich.org 70 i- (#x8FC9BC #x704B) Err bitreich.org 70 i- (#x8FC9BD #x7054) Err bitreich.org 70 i- (#x8FC9BE #x7055) Err bitreich.org 70 i- (#x8FC9BF #x705D) Err bitreich.org 70 i- (#x8FC9C0 #x705E) Err bitreich.org 70 i- (#x8FC9C1 #x704E) Err bitreich.org 70 i- (#x8FC9C2 #x7064) Err bitreich.org 70 i- (#x8FC9C3 #x7065) Err bitreich.org 70 i- (#x8FC9C4 #x706C) Err bitreich.org 70 i- (#x8FC9C5 #x706E) Err bitreich.org 70 i- (#x8FC9C6 #x7075) Err bitreich.org 70 i- (#x8FC9C7 #x7076) Err bitreich.org 70 i- (#x8FC9C8 #x707E) Err bitreich.org 70 i- (#x8FC9C9 #x7081) Err bitreich.org 70 i- (#x8FC9CA #x7085) Err bitreich.org 70 i- (#x8FC9CB #x7086) Err bitreich.org 70 i- (#x8FC9CC #x7094) Err bitreich.org 70 i- (#x8FC9CD #x7095) Err bitreich.org 70 i- (#x8FC9CE #x7096) Err bitreich.org 70 i- (#x8FC9CF #x7097) Err bitreich.org 70 i- (#x8FC9D0 #x7098) Err bitreich.org 70 i- (#x8FC9D1 #x709B) Err bitreich.org 70 i- (#x8FC9D2 #x70A4) Err bitreich.org 70 i- (#x8FC9D3 #x70AB) Err bitreich.org 70 i- (#x8FC9D4 #x70B0) Err bitreich.org 70 i- (#x8FC9D5 #x70B1) Err bitreich.org 70 i- (#x8FC9D6 #x70B4) Err bitreich.org 70 i- (#x8FC9D7 #x70B7) Err bitreich.org 70 i- (#x8FC9D8 #x70CA) Err bitreich.org 70 i- (#x8FC9D9 #x70D1) Err bitreich.org 70 i- (#x8FC9DA #x70D3) Err bitreich.org 70 i- (#x8FC9DB #x70D4) Err bitreich.org 70 i- (#x8FC9DC #x70D5) Err bitreich.org 70 i- (#x8FC9DD #x70D6) Err bitreich.org 70 i- (#x8FC9DE #x70D8) Err bitreich.org 70 i- (#x8FC9DF #x70DC) Err bitreich.org 70 i- (#x8FC9E0 #x70E4) Err bitreich.org 70 i- (#x8FC9E1 #x70FA) Err bitreich.org 70 i- (#x8FC9E2 #x7103) Err bitreich.org 70 i- (#x8FC9E3 #x7104) Err bitreich.org 70 i- (#x8FC9E4 #x7105) Err bitreich.org 70 i- (#x8FC9E5 #x7106) Err bitreich.org 70 i- (#x8FC9E6 #x7107) Err bitreich.org 70 i- (#x8FC9E7 #x710B) Err bitreich.org 70 i- (#x8FC9E8 #x710C) Err bitreich.org 70 i- (#x8FC9E9 #x710F) Err bitreich.org 70 i- (#x8FC9EA #x711E) Err bitreich.org 70 i- (#x8FC9EB #x7120) Err bitreich.org 70 i- (#x8FC9EC #x712B) Err bitreich.org 70 i- (#x8FC9ED #x712D) Err bitreich.org 70 i- (#x8FC9EE #x712F) Err bitreich.org 70 i- (#x8FC9EF #x7130) Err bitreich.org 70 i- (#x8FC9F0 #x7131) Err bitreich.org 70 i- (#x8FC9F1 #x7138) Err bitreich.org 70 i- (#x8FC9F2 #x7141) Err bitreich.org 70 i- (#x8FC9F3 #x7145) Err bitreich.org 70 i- (#x8FC9F4 #x7146) Err bitreich.org 70 i- (#x8FC9F5 #x7147) Err bitreich.org 70 i- (#x8FC9F6 #x714A) Err bitreich.org 70 i- (#x8FC9F7 #x714B) Err bitreich.org 70 i- (#x8FC9F8 #x7150) Err bitreich.org 70 i- (#x8FC9F9 #x7152) Err bitreich.org 70 i- (#x8FC9FA #x7157) Err bitreich.org 70 i- (#x8FC9FB #x715A) Err bitreich.org 70 i- (#x8FC9FC #x715C) Err bitreich.org 70 i- (#x8FC9FD #x715E) Err bitreich.org 70 i- (#x8FC9FE #x7160) Err bitreich.org 70 i- (#x8FCAA1 #x7168) Err bitreich.org 70 i- (#x8FCAA2 #x7179) Err bitreich.org 70 i- (#x8FCAA3 #x7180) Err bitreich.org 70 i- (#x8FCAA4 #x7185) Err bitreich.org 70 i- (#x8FCAA5 #x7187) Err bitreich.org 70 i- (#x8FCAA6 #x718C) Err bitreich.org 70 i- (#x8FCAA7 #x7192) Err bitreich.org 70 i- (#x8FCAA8 #x719A) Err bitreich.org 70 i- (#x8FCAA9 #x719B) Err bitreich.org 70 i- (#x8FCAAA #x71A0) Err bitreich.org 70 i- (#x8FCAAB #x71A2) Err bitreich.org 70 i- (#x8FCAAC #x71AF) Err bitreich.org 70 i- (#x8FCAAD #x71B0) Err bitreich.org 70 i- (#x8FCAAE #x71B2) Err bitreich.org 70 i- (#x8FCAAF #x71B3) Err bitreich.org 70 i- (#x8FCAB0 #x71BA) Err bitreich.org 70 i- (#x8FCAB1 #x71BF) Err bitreich.org 70 i- (#x8FCAB2 #x71C0) Err bitreich.org 70 i- (#x8FCAB3 #x71C1) Err bitreich.org 70 i- (#x8FCAB4 #x71C4) Err bitreich.org 70 i- (#x8FCAB5 #x71CB) Err bitreich.org 70 i- (#x8FCAB6 #x71CC) Err bitreich.org 70 i- (#x8FCAB7 #x71D3) Err bitreich.org 70 i- (#x8FCAB8 #x71D6) Err bitreich.org 70 i- (#x8FCAB9 #x71D9) Err bitreich.org 70 i- (#x8FCABA #x71DA) Err bitreich.org 70 i- (#x8FCABB #x71DC) Err bitreich.org 70 i- (#x8FCABC #x71F8) Err bitreich.org 70 i- (#x8FCABD #x71FE) Err bitreich.org 70 i- (#x8FCABE #x7200) Err bitreich.org 70 i- (#x8FCABF #x7207) Err bitreich.org 70 i- (#x8FCAC0 #x7208) Err bitreich.org 70 i- (#x8FCAC1 #x7209) Err bitreich.org 70 i- (#x8FCAC2 #x7213) Err bitreich.org 70 i- (#x8FCAC3 #x7217) Err bitreich.org 70 i- (#x8FCAC4 #x721A) Err bitreich.org 70 i- (#x8FCAC5 #x721D) Err bitreich.org 70 i- (#x8FCAC6 #x721F) Err bitreich.org 70 i- (#x8FCAC7 #x7224) Err bitreich.org 70 i- (#x8FCAC8 #x722B) Err bitreich.org 70 i- (#x8FCAC9 #x722F) Err bitreich.org 70 i- (#x8FCACA #x7234) Err bitreich.org 70 i- (#x8FCACB #x7238) Err bitreich.org 70 i- (#x8FCACC #x7239) Err bitreich.org 70 i- (#x8FCACD #x7241) Err bitreich.org 70 i- (#x8FCACE #x7242) Err bitreich.org 70 i- (#x8FCACF #x7243) Err bitreich.org 70 i- (#x8FCAD0 #x7245) Err bitreich.org 70 i- (#x8FCAD1 #x724E) Err bitreich.org 70 i- (#x8FCAD2 #x724F) Err bitreich.org 70 i- (#x8FCAD3 #x7250) Err bitreich.org 70 i- (#x8FCAD4 #x7253) Err bitreich.org 70 i- (#x8FCAD5 #x7255) Err bitreich.org 70 i- (#x8FCAD6 #x7256) Err bitreich.org 70 i- (#x8FCAD7 #x725A) Err bitreich.org 70 i- (#x8FCAD8 #x725C) Err bitreich.org 70 i- (#x8FCAD9 #x725E) Err bitreich.org 70 i- (#x8FCADA #x7260) Err bitreich.org 70 i- (#x8FCADB #x7263) Err bitreich.org 70 i- (#x8FCADC #x7268) Err bitreich.org 70 i- (#x8FCADD #x726B) Err bitreich.org 70 i- (#x8FCADE #x726E) Err bitreich.org 70 i- (#x8FCADF #x726F) Err bitreich.org 70 i- (#x8FCAE0 #x7271) Err bitreich.org 70 i- (#x8FCAE1 #x7277) Err bitreich.org 70 i- (#x8FCAE2 #x7278) Err bitreich.org 70 i- (#x8FCAE3 #x727B) Err bitreich.org 70 i- (#x8FCAE4 #x727C) Err bitreich.org 70 i- (#x8FCAE5 #x727F) Err bitreich.org 70 i- (#x8FCAE6 #x7284) Err bitreich.org 70 i- (#x8FCAE7 #x7289) Err bitreich.org 70 i- (#x8FCAE8 #x728D) Err bitreich.org 70 i- (#x8FCAE9 #x728E) Err bitreich.org 70 i- (#x8FCAEA #x7293) Err bitreich.org 70 i- (#x8FCAEB #x729B) Err bitreich.org 70 i- (#x8FCAEC #x72A8) Err bitreich.org 70 i- (#x8FCAED #x72AD) Err bitreich.org 70 i- (#x8FCAEE #x72AE) Err bitreich.org 70 i- (#x8FCAEF #x72B1) Err bitreich.org 70 i- (#x8FCAF0 #x72B4) Err bitreich.org 70 i- (#x8FCAF1 #x72BE) Err bitreich.org 70 i- (#x8FCAF2 #x72C1) Err bitreich.org 70 i- (#x8FCAF3 #x72C7) Err bitreich.org 70 i- (#x8FCAF4 #x72C9) Err bitreich.org 70 i- (#x8FCAF5 #x72CC) Err bitreich.org 70 i- (#x8FCAF6 #x72D5) Err bitreich.org 70 i- (#x8FCAF7 #x72D6) Err bitreich.org 70 i- (#x8FCAF8 #x72D8) Err bitreich.org 70 i- (#x8FCAF9 #x72DF) Err bitreich.org 70 i- (#x8FCAFA #x72E5) Err bitreich.org 70 i- (#x8FCAFB #x72F3) Err bitreich.org 70 i- (#x8FCAFC #x72F4) Err bitreich.org 70 i- (#x8FCAFD #x72FA) Err bitreich.org 70 i- (#x8FCAFE #x72FB) Err bitreich.org 70 i- (#x8FCBA1 #x72FE) Err bitreich.org 70 i- (#x8FCBA2 #x7302) Err bitreich.org 70 i- (#x8FCBA3 #x7304) Err bitreich.org 70 i- (#x8FCBA4 #x7305) Err bitreich.org 70 i- (#x8FCBA5 #x7307) Err bitreich.org 70 i- (#x8FCBA6 #x730B) Err bitreich.org 70 i- (#x8FCBA7 #x730D) Err bitreich.org 70 i- (#x8FCBA8 #x7312) Err bitreich.org 70 i- (#x8FCBA9 #x7313) Err bitreich.org 70 i- (#x8FCBAA #x7318) Err bitreich.org 70 i- (#x8FCBAB #x7319) Err bitreich.org 70 i- (#x8FCBAC #x731E) Err bitreich.org 70 i- (#x8FCBAD #x7322) Err bitreich.org 70 i- (#x8FCBAE #x7324) Err bitreich.org 70 i- (#x8FCBAF #x7327) Err bitreich.org 70 i- (#x8FCBB0 #x7328) Err bitreich.org 70 i- (#x8FCBB1 #x732C) Err bitreich.org 70 i- (#x8FCBB2 #x7331) Err bitreich.org 70 i- (#x8FCBB3 #x7332) Err bitreich.org 70 i- (#x8FCBB4 #x7335) Err bitreich.org 70 i- (#x8FCBB5 #x733A) Err bitreich.org 70 i- (#x8FCBB6 #x733B) Err bitreich.org 70 i- (#x8FCBB7 #x733D) Err bitreich.org 70 i- (#x8FCBB8 #x7343) Err bitreich.org 70 i- (#x8FCBB9 #x734D) Err bitreich.org 70 i- (#x8FCBBA #x7350) Err bitreich.org 70 i- (#x8FCBBB #x7352) Err bitreich.org 70 i- (#x8FCBBC #x7356) Err bitreich.org 70 i- (#x8FCBBD #x7358) Err bitreich.org 70 i- (#x8FCBBE #x735D) Err bitreich.org 70 i- (#x8FCBBF #x735E) Err bitreich.org 70 i- (#x8FCBC0 #x735F) Err bitreich.org 70 i- (#x8FCBC1 #x7360) Err bitreich.org 70 i- (#x8FCBC2 #x7366) Err bitreich.org 70 i- (#x8FCBC3 #x7367) Err bitreich.org 70 i- (#x8FCBC4 #x7369) Err bitreich.org 70 i- (#x8FCBC5 #x736B) Err bitreich.org 70 i- (#x8FCBC6 #x736C) Err bitreich.org 70 i- (#x8FCBC7 #x736E) Err bitreich.org 70 i- (#x8FCBC8 #x736F) Err bitreich.org 70 i- (#x8FCBC9 #x7371) Err bitreich.org 70 i- (#x8FCBCA #x7377) Err bitreich.org 70 i- (#x8FCBCB #x7379) Err bitreich.org 70 i- (#x8FCBCC #x737C) Err bitreich.org 70 i- (#x8FCBCD #x7380) Err bitreich.org 70 i- (#x8FCBCE #x7381) Err bitreich.org 70 i- (#x8FCBCF #x7383) Err bitreich.org 70 i- (#x8FCBD0 #x7385) Err bitreich.org 70 i- (#x8FCBD1 #x7386) Err bitreich.org 70 i- (#x8FCBD2 #x738E) Err bitreich.org 70 i- (#x8FCBD3 #x7390) Err bitreich.org 70 i- (#x8FCBD4 #x7393) Err bitreich.org 70 i- (#x8FCBD5 #x7395) Err bitreich.org 70 i- (#x8FCBD6 #x7397) Err bitreich.org 70 i- (#x8FCBD7 #x7398) Err bitreich.org 70 i- (#x8FCBD8 #x739C) Err bitreich.org 70 i- (#x8FCBD9 #x739E) Err bitreich.org 70 i- (#x8FCBDA #x739F) Err bitreich.org 70 i- (#x8FCBDB #x73A0) Err bitreich.org 70 i- (#x8FCBDC #x73A2) Err bitreich.org 70 i- (#x8FCBDD #x73A5) Err bitreich.org 70 i- (#x8FCBDE #x73A6) Err bitreich.org 70 i- (#x8FCBDF #x73AA) Err bitreich.org 70 i- (#x8FCBE0 #x73AB) Err bitreich.org 70 i- (#x8FCBE1 #x73AD) Err bitreich.org 70 i- (#x8FCBE2 #x73B5) Err bitreich.org 70 i- (#x8FCBE3 #x73B7) Err bitreich.org 70 i- (#x8FCBE4 #x73B9) Err bitreich.org 70 i- (#x8FCBE5 #x73BC) Err bitreich.org 70 i- (#x8FCBE6 #x73BD) Err bitreich.org 70 i- (#x8FCBE7 #x73BF) Err bitreich.org 70 i- (#x8FCBE8 #x73C5) Err bitreich.org 70 i- (#x8FCBE9 #x73C6) Err bitreich.org 70 i- (#x8FCBEA #x73C9) Err bitreich.org 70 i- (#x8FCBEB #x73CB) Err bitreich.org 70 i- (#x8FCBEC #x73CC) Err bitreich.org 70 i- (#x8FCBED #x73CF) Err bitreich.org 70 i- (#x8FCBEE #x73D2) Err bitreich.org 70 i- (#x8FCBEF #x73D3) Err bitreich.org 70 i- (#x8FCBF0 #x73D6) Err bitreich.org 70 i- (#x8FCBF1 #x73D9) Err bitreich.org 70 i- (#x8FCBF2 #x73DD) Err bitreich.org 70 i- (#x8FCBF3 #x73E1) Err bitreich.org 70 i- (#x8FCBF4 #x73E3) Err bitreich.org 70 i- (#x8FCBF5 #x73E6) Err bitreich.org 70 i- (#x8FCBF6 #x73E7) Err bitreich.org 70 i- (#x8FCBF7 #x73E9) Err bitreich.org 70 i- (#x8FCBF8 #x73F4) Err bitreich.org 70 i- (#x8FCBF9 #x73F5) Err bitreich.org 70 i- (#x8FCBFA #x73F7) Err bitreich.org 70 i- (#x8FCBFB #x73F9) Err bitreich.org 70 i- (#x8FCBFC #x73FA) Err bitreich.org 70 i- (#x8FCBFD #x73FB) Err bitreich.org 70 i- (#x8FCBFE #x73FD) Err bitreich.org 70 i- (#x8FCCA1 #x73FF) Err bitreich.org 70 i- (#x8FCCA2 #x7400) Err bitreich.org 70 i- (#x8FCCA3 #x7401) Err bitreich.org 70 i- (#x8FCCA4 #x7404) Err bitreich.org 70 i- (#x8FCCA5 #x7407) Err bitreich.org 70 i- (#x8FCCA6 #x740A) Err bitreich.org 70 i- (#x8FCCA7 #x7411) Err bitreich.org 70 i- (#x8FCCA8 #x741A) Err bitreich.org 70 i- (#x8FCCA9 #x741B) Err bitreich.org 70 i- (#x8FCCAA #x7424) Err bitreich.org 70 i- (#x8FCCAB #x7426) Err bitreich.org 70 i- (#x8FCCAC #x7428) Err bitreich.org 70 i- (#x8FCCAD #x7429) Err bitreich.org 70 i- (#x8FCCAE #x742A) Err bitreich.org 70 i- (#x8FCCAF #x742B) Err bitreich.org 70 i- (#x8FCCB0 #x742C) Err bitreich.org 70 i- (#x8FCCB1 #x742D) Err bitreich.org 70 i- (#x8FCCB2 #x742E) Err bitreich.org 70 i- (#x8FCCB3 #x742F) Err bitreich.org 70 i- (#x8FCCB4 #x7430) Err bitreich.org 70 i- (#x8FCCB5 #x7431) Err bitreich.org 70 i- (#x8FCCB6 #x7439) Err bitreich.org 70 i- (#x8FCCB7 #x7440) Err bitreich.org 70 i- (#x8FCCB8 #x7443) Err bitreich.org 70 i- (#x8FCCB9 #x7444) Err bitreich.org 70 i- (#x8FCCBA #x7446) Err bitreich.org 70 i- (#x8FCCBB #x7447) Err bitreich.org 70 i- (#x8FCCBC #x744B) Err bitreich.org 70 i- (#x8FCCBD #x744D) Err bitreich.org 70 i- (#x8FCCBE #x7451) Err bitreich.org 70 i- (#x8FCCBF #x7452) Err bitreich.org 70 i- (#x8FCCC0 #x7457) Err bitreich.org 70 i- (#x8FCCC1 #x745D) Err bitreich.org 70 i- (#x8FCCC2 #x7462) Err bitreich.org 70 i- (#x8FCCC3 #x7466) Err bitreich.org 70 i- (#x8FCCC4 #x7467) Err bitreich.org 70 i- (#x8FCCC5 #x7468) Err bitreich.org 70 i- (#x8FCCC6 #x746B) Err bitreich.org 70 i- (#x8FCCC7 #x746D) Err bitreich.org 70 i- (#x8FCCC8 #x746E) Err bitreich.org 70 i- (#x8FCCC9 #x7471) Err bitreich.org 70 i- (#x8FCCCA #x7472) Err bitreich.org 70 i- (#x8FCCCB #x7480) Err bitreich.org 70 i- (#x8FCCCC #x7481) Err bitreich.org 70 i- (#x8FCCCD #x7485) Err bitreich.org 70 i- (#x8FCCCE #x7486) Err bitreich.org 70 i- (#x8FCCCF #x7487) Err bitreich.org 70 i- (#x8FCCD0 #x7489) Err bitreich.org 70 i- (#x8FCCD1 #x748F) Err bitreich.org 70 i- (#x8FCCD2 #x7490) Err bitreich.org 70 i- (#x8FCCD3 #x7491) Err bitreich.org 70 i- (#x8FCCD4 #x7492) Err bitreich.org 70 i- (#x8FCCD5 #x7498) Err bitreich.org 70 i- (#x8FCCD6 #x7499) Err bitreich.org 70 i- (#x8FCCD7 #x749A) Err bitreich.org 70 i- (#x8FCCD8 #x749C) Err bitreich.org 70 i- (#x8FCCD9 #x749F) Err bitreich.org 70 i- (#x8FCCDA #x74A0) Err bitreich.org 70 i- (#x8FCCDB #x74A1) Err bitreich.org 70 i- (#x8FCCDC #x74A3) Err bitreich.org 70 i- (#x8FCCDD #x74A6) Err bitreich.org 70 i- (#x8FCCDE #x74A8) Err bitreich.org 70 i- (#x8FCCDF #x74A9) Err bitreich.org 70 i- (#x8FCCE0 #x74AA) Err bitreich.org 70 i- (#x8FCCE1 #x74AB) Err bitreich.org 70 i- (#x8FCCE2 #x74AE) Err bitreich.org 70 i- (#x8FCCE3 #x74AF) Err bitreich.org 70 i- (#x8FCCE4 #x74B1) Err bitreich.org 70 i- (#x8FCCE5 #x74B2) Err bitreich.org 70 i- (#x8FCCE6 #x74B5) Err bitreich.org 70 i- (#x8FCCE7 #x74B9) Err bitreich.org 70 i- (#x8FCCE8 #x74BB) Err bitreich.org 70 i- (#x8FCCE9 #x74BF) Err bitreich.org 70 i- (#x8FCCEA #x74C8) Err bitreich.org 70 i- (#x8FCCEB #x74C9) Err bitreich.org 70 i- (#x8FCCEC #x74CC) Err bitreich.org 70 i- (#x8FCCED #x74D0) Err bitreich.org 70 i- (#x8FCCEE #x74D3) Err bitreich.org 70 i- (#x8FCCEF #x74D8) Err bitreich.org 70 i- (#x8FCCF0 #x74DA) Err bitreich.org 70 i- (#x8FCCF1 #x74DB) Err bitreich.org 70 i- (#x8FCCF2 #x74DE) Err bitreich.org 70 i- (#x8FCCF3 #x74DF) Err bitreich.org 70 i- (#x8FCCF4 #x74E4) Err bitreich.org 70 i- (#x8FCCF5 #x74E8) Err bitreich.org 70 i- (#x8FCCF6 #x74EA) Err bitreich.org 70 i- (#x8FCCF7 #x74EB) Err bitreich.org 70 i- (#x8FCCF8 #x74EF) Err bitreich.org 70 i- (#x8FCCF9 #x74F4) Err bitreich.org 70 i- (#x8FCCFA #x74FA) Err bitreich.org 70 i- (#x8FCCFB #x74FB) Err bitreich.org 70 i- (#x8FCCFC #x74FC) Err bitreich.org 70 i- (#x8FCCFD #x74FF) Err bitreich.org 70 i- (#x8FCCFE #x7506) Err bitreich.org 70 i- (#x8FCDA1 #x7512) Err bitreich.org 70 i- (#x8FCDA2 #x7516) Err bitreich.org 70 i- (#x8FCDA3 #x7517) Err bitreich.org 70 i- (#x8FCDA4 #x7520) Err bitreich.org 70 i- (#x8FCDA5 #x7521) Err bitreich.org 70 i- (#x8FCDA6 #x7524) Err bitreich.org 70 i- (#x8FCDA7 #x7527) Err bitreich.org 70 i- (#x8FCDA8 #x7529) Err bitreich.org 70 i- (#x8FCDA9 #x752A) Err bitreich.org 70 i- (#x8FCDAA #x752F) Err bitreich.org 70 i- (#x8FCDAB #x7536) Err bitreich.org 70 i- (#x8FCDAC #x7539) Err bitreich.org 70 i- (#x8FCDAD #x753D) Err bitreich.org 70 i- (#x8FCDAE #x753E) Err bitreich.org 70 i- (#x8FCDAF #x753F) Err bitreich.org 70 i- (#x8FCDB0 #x7540) Err bitreich.org 70 i- (#x8FCDB1 #x7543) Err bitreich.org 70 i- (#x8FCDB2 #x7547) Err bitreich.org 70 i- (#x8FCDB3 #x7548) Err bitreich.org 70 i- (#x8FCDB4 #x754E) Err bitreich.org 70 i- (#x8FCDB5 #x7550) Err bitreich.org 70 i- (#x8FCDB6 #x7552) Err bitreich.org 70 i- (#x8FCDB7 #x7557) Err bitreich.org 70 i- (#x8FCDB8 #x755E) Err bitreich.org 70 i- (#x8FCDB9 #x755F) Err bitreich.org 70 i- (#x8FCDBA #x7561) Err bitreich.org 70 i- (#x8FCDBB #x756F) Err bitreich.org 70 i- (#x8FCDBC #x7571) Err bitreich.org 70 i- (#x8FCDBD #x7579) Err bitreich.org 70 i- (#x8FCDBE #x757A) Err bitreich.org 70 i- (#x8FCDBF #x757B) Err bitreich.org 70 i- (#x8FCDC0 #x757C) Err bitreich.org 70 i- (#x8FCDC1 #x757D) Err bitreich.org 70 i- (#x8FCDC2 #x757E) Err bitreich.org 70 i- (#x8FCDC3 #x7581) Err bitreich.org 70 i- (#x8FCDC4 #x7585) Err bitreich.org 70 i- (#x8FCDC5 #x7590) Err bitreich.org 70 i- (#x8FCDC6 #x7592) Err bitreich.org 70 i- (#x8FCDC7 #x7593) Err bitreich.org 70 i- (#x8FCDC8 #x7595) Err bitreich.org 70 i- (#x8FCDC9 #x7599) Err bitreich.org 70 i- (#x8FCDCA #x759C) Err bitreich.org 70 i- (#x8FCDCB #x75A2) Err bitreich.org 70 i- (#x8FCDCC #x75A4) Err bitreich.org 70 i- (#x8FCDCD #x75B4) Err bitreich.org 70 i- (#x8FCDCE #x75BA) Err bitreich.org 70 i- (#x8FCDCF #x75BF) Err bitreich.org 70 i- (#x8FCDD0 #x75C0) Err bitreich.org 70 i- (#x8FCDD1 #x75C1) Err bitreich.org 70 i- (#x8FCDD2 #x75C4) Err bitreich.org 70 i- (#x8FCDD3 #x75C6) Err bitreich.org 70 i- (#x8FCDD4 #x75CC) Err bitreich.org 70 i- (#x8FCDD5 #x75CE) Err bitreich.org 70 i- (#x8FCDD6 #x75CF) Err bitreich.org 70 i- (#x8FCDD7 #x75D7) Err bitreich.org 70 i- (#x8FCDD8 #x75DC) Err bitreich.org 70 i- (#x8FCDD9 #x75DF) Err bitreich.org 70 i- (#x8FCDDA #x75E0) Err bitreich.org 70 i- (#x8FCDDB #x75E1) Err bitreich.org 70 i- (#x8FCDDC #x75E4) Err bitreich.org 70 i- (#x8FCDDD #x75E7) Err bitreich.org 70 i- (#x8FCDDE #x75EC) Err bitreich.org 70 i- (#x8FCDDF #x75EE) Err bitreich.org 70 i- (#x8FCDE0 #x75EF) Err bitreich.org 70 i- (#x8FCDE1 #x75F1) Err bitreich.org 70 i- (#x8FCDE2 #x75F9) Err bitreich.org 70 i- (#x8FCDE3 #x7600) Err bitreich.org 70 i- (#x8FCDE4 #x7602) Err bitreich.org 70 i- (#x8FCDE5 #x7603) Err bitreich.org 70 i- (#x8FCDE6 #x7604) Err bitreich.org 70 i- (#x8FCDE7 #x7607) Err bitreich.org 70 i- (#x8FCDE8 #x7608) Err bitreich.org 70 i- (#x8FCDE9 #x760A) Err bitreich.org 70 i- (#x8FCDEA #x760C) Err bitreich.org 70 i- (#x8FCDEB #x760F) Err bitreich.org 70 i- (#x8FCDEC #x7612) Err bitreich.org 70 i- (#x8FCDED #x7613) Err bitreich.org 70 i- (#x8FCDEE #x7615) Err bitreich.org 70 i- (#x8FCDEF #x7616) Err bitreich.org 70 i- (#x8FCDF0 #x7619) Err bitreich.org 70 i- (#x8FCDF1 #x761B) Err bitreich.org 70 i- (#x8FCDF2 #x761C) Err bitreich.org 70 i- (#x8FCDF3 #x761D) Err bitreich.org 70 i- (#x8FCDF4 #x761E) Err bitreich.org 70 i- (#x8FCDF5 #x7623) Err bitreich.org 70 i- (#x8FCDF6 #x7625) Err bitreich.org 70 i- (#x8FCDF7 #x7626) Err bitreich.org 70 i- (#x8FCDF8 #x7629) Err bitreich.org 70 i- (#x8FCDF9 #x762D) Err bitreich.org 70 i- (#x8FCDFA #x7632) Err bitreich.org 70 i- (#x8FCDFB #x7633) Err bitreich.org 70 i- (#x8FCDFC #x7635) Err bitreich.org 70 i- (#x8FCDFD #x7638) Err bitreich.org 70 i- (#x8FCDFE #x7639) Err bitreich.org 70 i- (#x8FCEA1 #x763A) Err bitreich.org 70 i- (#x8FCEA2 #x763C) Err bitreich.org 70 i- (#x8FCEA3 #x764A) Err bitreich.org 70 i- (#x8FCEA4 #x7640) Err bitreich.org 70 i- (#x8FCEA5 #x7641) Err bitreich.org 70 i- (#x8FCEA6 #x7643) Err bitreich.org 70 i- (#x8FCEA7 #x7644) Err bitreich.org 70 i- (#x8FCEA8 #x7645) Err bitreich.org 70 i- (#x8FCEA9 #x7649) Err bitreich.org 70 i- (#x8FCEAA #x764B) Err bitreich.org 70 i- (#x8FCEAB #x7655) Err bitreich.org 70 i- (#x8FCEAC #x7659) Err bitreich.org 70 i- (#x8FCEAD #x765F) Err bitreich.org 70 i- (#x8FCEAE #x7664) Err bitreich.org 70 i- (#x8FCEAF #x7665) Err bitreich.org 70 i- (#x8FCEB0 #x766D) Err bitreich.org 70 i- (#x8FCEB1 #x766E) Err bitreich.org 70 i- (#x8FCEB2 #x766F) Err bitreich.org 70 i- (#x8FCEB3 #x7671) Err bitreich.org 70 i- (#x8FCEB4 #x7674) Err bitreich.org 70 i- (#x8FCEB5 #x7681) Err bitreich.org 70 i- (#x8FCEB6 #x7685) Err bitreich.org 70 i- (#x8FCEB7 #x768C) Err bitreich.org 70 i- (#x8FCEB8 #x768D) Err bitreich.org 70 i- (#x8FCEB9 #x7695) Err bitreich.org 70 i- (#x8FCEBA #x769B) Err bitreich.org 70 i- (#x8FCEBB #x769C) Err bitreich.org 70 i- (#x8FCEBC #x769D) Err bitreich.org 70 i- (#x8FCEBD #x769F) Err bitreich.org 70 i- (#x8FCEBE #x76A0) Err bitreich.org 70 i- (#x8FCEBF #x76A2) Err bitreich.org 70 i- (#x8FCEC0 #x76A3) Err bitreich.org 70 i- (#x8FCEC1 #x76A4) Err bitreich.org 70 i- (#x8FCEC2 #x76A5) Err bitreich.org 70 i- (#x8FCEC3 #x76A6) Err bitreich.org 70 i- (#x8FCEC4 #x76A7) Err bitreich.org 70 i- (#x8FCEC5 #x76A8) Err bitreich.org 70 i- (#x8FCEC6 #x76AA) Err bitreich.org 70 i- (#x8FCEC7 #x76AD) Err bitreich.org 70 i- (#x8FCEC8 #x76BD) Err bitreich.org 70 i- (#x8FCEC9 #x76C1) Err bitreich.org 70 i- (#x8FCECA #x76C5) Err bitreich.org 70 i- (#x8FCECB #x76C9) Err bitreich.org 70 i- (#x8FCECC #x76CB) Err bitreich.org 70 i- (#x8FCECD #x76CC) Err bitreich.org 70 i- (#x8FCECE #x76CE) Err bitreich.org 70 i- (#x8FCECF #x76D4) Err bitreich.org 70 i- (#x8FCED0 #x76D9) Err bitreich.org 70 i- (#x8FCED1 #x76E0) Err bitreich.org 70 i- (#x8FCED2 #x76E6) Err bitreich.org 70 i- (#x8FCED3 #x76E8) Err bitreich.org 70 i- (#x8FCED4 #x76EC) Err bitreich.org 70 i- (#x8FCED5 #x76F0) Err bitreich.org 70 i- (#x8FCED6 #x76F1) Err bitreich.org 70 i- (#x8FCED7 #x76F6) Err bitreich.org 70 i- (#x8FCED8 #x76F9) Err bitreich.org 70 i- (#x8FCED9 #x76FC) Err bitreich.org 70 i- (#x8FCEDA #x7700) Err bitreich.org 70 i- (#x8FCEDB #x7706) Err bitreich.org 70 i- (#x8FCEDC #x770A) Err bitreich.org 70 i- (#x8FCEDD #x770E) Err bitreich.org 70 i- (#x8FCEDE #x7712) Err bitreich.org 70 i- (#x8FCEDF #x7714) Err bitreich.org 70 i- (#x8FCEE0 #x7715) Err bitreich.org 70 i- (#x8FCEE1 #x7717) Err bitreich.org 70 i- (#x8FCEE2 #x7719) Err bitreich.org 70 i- (#x8FCEE3 #x771A) Err bitreich.org 70 i- (#x8FCEE4 #x771C) Err bitreich.org 70 i- (#x8FCEE5 #x7722) Err bitreich.org 70 i- (#x8FCEE6 #x7728) Err bitreich.org 70 i- (#x8FCEE7 #x772D) Err bitreich.org 70 i- (#x8FCEE8 #x772E) Err bitreich.org 70 i- (#x8FCEE9 #x772F) Err bitreich.org 70 i- (#x8FCEEA #x7734) Err bitreich.org 70 i- (#x8FCEEB #x7735) Err bitreich.org 70 i- (#x8FCEEC #x7736) Err bitreich.org 70 i- (#x8FCEED #x7739) Err bitreich.org 70 i- (#x8FCEEE #x773D) Err bitreich.org 70 i- (#x8FCEEF #x773E) Err bitreich.org 70 i- (#x8FCEF0 #x7742) Err bitreich.org 70 i- (#x8FCEF1 #x7745) Err bitreich.org 70 i- (#x8FCEF2 #x7746) Err bitreich.org 70 i- (#x8FCEF3 #x774A) Err bitreich.org 70 i- (#x8FCEF4 #x774D) Err bitreich.org 70 i- (#x8FCEF5 #x774E) Err bitreich.org 70 i- (#x8FCEF6 #x774F) Err bitreich.org 70 i- (#x8FCEF7 #x7752) Err bitreich.org 70 i- (#x8FCEF8 #x7756) Err bitreich.org 70 i- (#x8FCEF9 #x7757) Err bitreich.org 70 i- (#x8FCEFA #x775C) Err bitreich.org 70 i- (#x8FCEFB #x775E) Err bitreich.org 70 i- (#x8FCEFC #x775F) Err bitreich.org 70 i- (#x8FCEFD #x7760) Err bitreich.org 70 i- (#x8FCEFE #x7762) Err bitreich.org 70 i- (#x8FCFA1 #x7764) Err bitreich.org 70 i- (#x8FCFA2 #x7767) Err bitreich.org 70 i- (#x8FCFA3 #x776A) Err bitreich.org 70 i- (#x8FCFA4 #x776C) Err bitreich.org 70 i- (#x8FCFA5 #x7770) Err bitreich.org 70 i- (#x8FCFA6 #x7772) Err bitreich.org 70 i- (#x8FCFA7 #x7773) Err bitreich.org 70 i- (#x8FCFA8 #x7774) Err bitreich.org 70 i- (#x8FCFA9 #x777A) Err bitreich.org 70 i- (#x8FCFAA #x777D) Err bitreich.org 70 i- (#x8FCFAB #x7780) Err bitreich.org 70 i- (#x8FCFAC #x7784) Err bitreich.org 70 i- (#x8FCFAD #x778C) Err bitreich.org 70 i- (#x8FCFAE #x778D) Err bitreich.org 70 i- (#x8FCFAF #x7794) Err bitreich.org 70 i- (#x8FCFB0 #x7795) Err bitreich.org 70 i- (#x8FCFB1 #x7796) Err bitreich.org 70 i- (#x8FCFB2 #x779A) Err bitreich.org 70 i- (#x8FCFB3 #x779F) Err bitreich.org 70 i- (#x8FCFB4 #x77A2) Err bitreich.org 70 i- (#x8FCFB5 #x77A7) Err bitreich.org 70 i- (#x8FCFB6 #x77AA) Err bitreich.org 70 i- (#x8FCFB7 #x77AE) Err bitreich.org 70 i- (#x8FCFB8 #x77AF) Err bitreich.org 70 i- (#x8FCFB9 #x77B1) Err bitreich.org 70 i- (#x8FCFBA #x77B5) Err bitreich.org 70 i- (#x8FCFBB #x77BE) Err bitreich.org 70 i- (#x8FCFBC #x77C3) Err bitreich.org 70 i- (#x8FCFBD #x77C9) Err bitreich.org 70 i- (#x8FCFBE #x77D1) Err bitreich.org 70 i- (#x8FCFBF #x77D2) Err bitreich.org 70 i- (#x8FCFC0 #x77D5) Err bitreich.org 70 i- (#x8FCFC1 #x77D9) Err bitreich.org 70 i- (#x8FCFC2 #x77DE) Err bitreich.org 70 i- (#x8FCFC3 #x77DF) Err bitreich.org 70 i- (#x8FCFC4 #x77E0) Err bitreich.org 70 i- (#x8FCFC5 #x77E4) Err bitreich.org 70 i- (#x8FCFC6 #x77E6) Err bitreich.org 70 i- (#x8FCFC7 #x77EA) Err bitreich.org 70 i- (#x8FCFC8 #x77EC) Err bitreich.org 70 i- (#x8FCFC9 #x77F0) Err bitreich.org 70 i- (#x8FCFCA #x77F1) Err bitreich.org 70 i- (#x8FCFCB #x77F4) Err bitreich.org 70 i- (#x8FCFCC #x77F8) Err bitreich.org 70 i- (#x8FCFCD #x77FB) Err bitreich.org 70 i- (#x8FCFCE #x7805) Err bitreich.org 70 i- (#x8FCFCF #x7806) Err bitreich.org 70 i- (#x8FCFD0 #x7809) Err bitreich.org 70 i- (#x8FCFD1 #x780D) Err bitreich.org 70 i- (#x8FCFD2 #x780E) Err bitreich.org 70 i- (#x8FCFD3 #x7811) Err bitreich.org 70 i- (#x8FCFD4 #x781D) Err bitreich.org 70 i- (#x8FCFD5 #x7821) Err bitreich.org 70 i- (#x8FCFD6 #x7822) Err bitreich.org 70 i- (#x8FCFD7 #x7823) Err bitreich.org 70 i- (#x8FCFD8 #x782D) Err bitreich.org 70 i- (#x8FCFD9 #x782E) Err bitreich.org 70 i- (#x8FCFDA #x7830) Err bitreich.org 70 i- (#x8FCFDB #x7835) Err bitreich.org 70 i- (#x8FCFDC #x7837) Err bitreich.org 70 i- (#x8FCFDD #x7843) Err bitreich.org 70 i- (#x8FCFDE #x7844) Err bitreich.org 70 i- (#x8FCFDF #x7847) Err bitreich.org 70 i- (#x8FCFE0 #x7848) Err bitreich.org 70 i- (#x8FCFE1 #x784C) Err bitreich.org 70 i- (#x8FCFE2 #x784E) Err bitreich.org 70 i- (#x8FCFE3 #x7852) Err bitreich.org 70 i- (#x8FCFE4 #x785C) Err bitreich.org 70 i- (#x8FCFE5 #x785E) Err bitreich.org 70 i- (#x8FCFE6 #x7860) Err bitreich.org 70 i- (#x8FCFE7 #x7861) Err bitreich.org 70 i- (#x8FCFE8 #x7863) Err bitreich.org 70 i- (#x8FCFE9 #x7864) Err bitreich.org 70 i- (#x8FCFEA #x7868) Err bitreich.org 70 i- (#x8FCFEB #x786A) Err bitreich.org 70 i- (#x8FCFEC #x786E) Err bitreich.org 70 i- (#x8FCFED #x787A) Err bitreich.org 70 i- (#x8FCFEE #x787E) Err bitreich.org 70 i- (#x8FCFEF #x788A) Err bitreich.org 70 i- (#x8FCFF0 #x788F) Err bitreich.org 70 i- (#x8FCFF1 #x7894) Err bitreich.org 70 i- (#x8FCFF2 #x7898) Err bitreich.org 70 i- (#x8FCFF3 #x78A1) Err bitreich.org 70 i- (#x8FCFF4 #x789D) Err bitreich.org 70 i- (#x8FCFF5 #x789E) Err bitreich.org 70 i- (#x8FCFF6 #x789F) Err bitreich.org 70 i- (#x8FCFF7 #x78A4) Err bitreich.org 70 i- (#x8FCFF8 #x78A8) Err bitreich.org 70 i- (#x8FCFF9 #x78AC) Err bitreich.org 70 i- (#x8FCFFA #x78AD) Err bitreich.org 70 i- (#x8FCFFB #x78B0) Err bitreich.org 70 i- (#x8FCFFC #x78B1) Err bitreich.org 70 i- (#x8FCFFD #x78B2) Err bitreich.org 70 i- (#x8FCFFE #x78B3) Err bitreich.org 70 i- (#x8FD0A1 #x78BB) Err bitreich.org 70 i- (#x8FD0A2 #x78BD) Err bitreich.org 70 i- (#x8FD0A3 #x78BF) Err bitreich.org 70 i- (#x8FD0A4 #x78C7) Err bitreich.org 70 i- (#x8FD0A5 #x78C8) Err bitreich.org 70 i- (#x8FD0A6 #x78C9) Err bitreich.org 70 i- (#x8FD0A7 #x78CC) Err bitreich.org 70 i- (#x8FD0A8 #x78CE) Err bitreich.org 70 i- (#x8FD0A9 #x78D2) Err bitreich.org 70 i- (#x8FD0AA #x78D3) Err bitreich.org 70 i- (#x8FD0AB #x78D5) Err bitreich.org 70 i- (#x8FD0AC #x78D6) Err bitreich.org 70 i- (#x8FD0AD #x78E4) Err bitreich.org 70 i- (#x8FD0AE #x78DB) Err bitreich.org 70 i- (#x8FD0AF #x78DF) Err bitreich.org 70 i- (#x8FD0B0 #x78E0) Err bitreich.org 70 i- (#x8FD0B1 #x78E1) Err bitreich.org 70 i- (#x8FD0B2 #x78E6) Err bitreich.org 70 i- (#x8FD0B3 #x78EA) Err bitreich.org 70 i- (#x8FD0B4 #x78F2) Err bitreich.org 70 i- (#x8FD0B5 #x78F3) Err bitreich.org 70 i- (#x8FD0B6 #x7900) Err bitreich.org 70 i- (#x8FD0B7 #x78F6) Err bitreich.org 70 i- (#x8FD0B8 #x78F7) Err bitreich.org 70 i- (#x8FD0B9 #x78FA) Err bitreich.org 70 i- (#x8FD0BA #x78FB) Err bitreich.org 70 i- (#x8FD0BB #x78FF) Err bitreich.org 70 i- (#x8FD0BC #x7906) Err bitreich.org 70 i- (#x8FD0BD #x790C) Err bitreich.org 70 i- (#x8FD0BE #x7910) Err bitreich.org 70 i- (#x8FD0BF #x791A) Err bitreich.org 70 i- (#x8FD0C0 #x791C) Err bitreich.org 70 i- (#x8FD0C1 #x791E) Err bitreich.org 70 i- (#x8FD0C2 #x791F) Err bitreich.org 70 i- (#x8FD0C3 #x7920) Err bitreich.org 70 i- (#x8FD0C4 #x7925) Err bitreich.org 70 i- (#x8FD0C5 #x7927) Err bitreich.org 70 i- (#x8FD0C6 #x7929) Err bitreich.org 70 i- (#x8FD0C7 #x792D) Err bitreich.org 70 i- (#x8FD0C8 #x7931) Err bitreich.org 70 i- (#x8FD0C9 #x7934) Err bitreich.org 70 i- (#x8FD0CA #x7935) Err bitreich.org 70 i- (#x8FD0CB #x793B) Err bitreich.org 70 i- (#x8FD0CC #x793D) Err bitreich.org 70 i- (#x8FD0CD #x793F) Err bitreich.org 70 i- (#x8FD0CE #x7944) Err bitreich.org 70 i- (#x8FD0CF #x7945) Err bitreich.org 70 i- (#x8FD0D0 #x7946) Err bitreich.org 70 i- (#x8FD0D1 #x794A) Err bitreich.org 70 i- (#x8FD0D2 #x794B) Err bitreich.org 70 i- (#x8FD0D3 #x794F) Err bitreich.org 70 i- (#x8FD0D4 #x7951) Err bitreich.org 70 i- (#x8FD0D5 #x7954) Err bitreich.org 70 i- (#x8FD0D6 #x7958) Err bitreich.org 70 i- (#x8FD0D7 #x795B) Err bitreich.org 70 i- (#x8FD0D8 #x795C) Err bitreich.org 70 i- (#x8FD0D9 #x7967) Err bitreich.org 70 i- (#x8FD0DA #x7969) Err bitreich.org 70 i- (#x8FD0DB #x796B) Err bitreich.org 70 i- (#x8FD0DC #x7972) Err bitreich.org 70 i- (#x8FD0DD #x7979) Err bitreich.org 70 i- (#x8FD0DE #x797B) Err bitreich.org 70 i- (#x8FD0DF #x797C) Err bitreich.org 70 i- (#x8FD0E0 #x797E) Err bitreich.org 70 i- (#x8FD0E1 #x798B) Err bitreich.org 70 i- (#x8FD0E2 #x798C) Err bitreich.org 70 i- (#x8FD0E3 #x7991) Err bitreich.org 70 i- (#x8FD0E4 #x7993) Err bitreich.org 70 i- (#x8FD0E5 #x7994) Err bitreich.org 70 i- (#x8FD0E6 #x7995) Err bitreich.org 70 i- (#x8FD0E7 #x7996) Err bitreich.org 70 i- (#x8FD0E8 #x7998) Err bitreich.org 70 i- (#x8FD0E9 #x799B) Err bitreich.org 70 i- (#x8FD0EA #x799C) Err bitreich.org 70 i- (#x8FD0EB #x79A1) Err bitreich.org 70 i- (#x8FD0EC #x79A8) Err bitreich.org 70 i- (#x8FD0ED #x79A9) Err bitreich.org 70 i- (#x8FD0EE #x79AB) Err bitreich.org 70 i- (#x8FD0EF #x79AF) Err bitreich.org 70 i- (#x8FD0F0 #x79B1) Err bitreich.org 70 i- (#x8FD0F1 #x79B4) Err bitreich.org 70 i- (#x8FD0F2 #x79B8) Err bitreich.org 70 i- (#x8FD0F3 #x79BB) Err bitreich.org 70 i- (#x8FD0F4 #x79C2) Err bitreich.org 70 i- (#x8FD0F5 #x79C4) Err bitreich.org 70 i- (#x8FD0F6 #x79C7) Err bitreich.org 70 i- (#x8FD0F7 #x79C8) Err bitreich.org 70 i- (#x8FD0F8 #x79CA) Err bitreich.org 70 i- (#x8FD0F9 #x79CF) Err bitreich.org 70 i- (#x8FD0FA #x79D4) Err bitreich.org 70 i- (#x8FD0FB #x79D6) Err bitreich.org 70 i- (#x8FD0FC #x79DA) Err bitreich.org 70 i- (#x8FD0FD #x79DD) Err bitreich.org 70 i- (#x8FD0FE #x79DE) Err bitreich.org 70 i- (#x8FD1A1 #x79E0) Err bitreich.org 70 i- (#x8FD1A2 #x79E2) Err bitreich.org 70 i- (#x8FD1A3 #x79E5) Err bitreich.org 70 i- (#x8FD1A4 #x79EA) Err bitreich.org 70 i- (#x8FD1A5 #x79EB) Err bitreich.org 70 i- (#x8FD1A6 #x79ED) Err bitreich.org 70 i- (#x8FD1A7 #x79F1) Err bitreich.org 70 i- (#x8FD1A8 #x79F8) Err bitreich.org 70 i- (#x8FD1A9 #x79FC) Err bitreich.org 70 i- (#x8FD1AA #x7A02) Err bitreich.org 70 i- (#x8FD1AB #x7A03) Err bitreich.org 70 i- (#x8FD1AC #x7A07) Err bitreich.org 70 i- (#x8FD1AD #x7A09) Err bitreich.org 70 i- (#x8FD1AE #x7A0A) Err bitreich.org 70 i- (#x8FD1AF #x7A0C) Err bitreich.org 70 i- (#x8FD1B0 #x7A11) Err bitreich.org 70 i- (#x8FD1B1 #x7A15) Err bitreich.org 70 i- (#x8FD1B2 #x7A1B) Err bitreich.org 70 i- (#x8FD1B3 #x7A1E) Err bitreich.org 70 i- (#x8FD1B4 #x7A21) Err bitreich.org 70 i- (#x8FD1B5 #x7A27) Err bitreich.org 70 i- (#x8FD1B6 #x7A2B) Err bitreich.org 70 i- (#x8FD1B7 #x7A2D) Err bitreich.org 70 i- (#x8FD1B8 #x7A2F) Err bitreich.org 70 i- (#x8FD1B9 #x7A30) Err bitreich.org 70 i- (#x8FD1BA #x7A34) Err bitreich.org 70 i- (#x8FD1BB #x7A35) Err bitreich.org 70 i- (#x8FD1BC #x7A38) Err bitreich.org 70 i- (#x8FD1BD #x7A39) Err bitreich.org 70 i- (#x8FD1BE #x7A3A) Err bitreich.org 70 i- (#x8FD1BF #x7A44) Err bitreich.org 70 i- (#x8FD1C0 #x7A45) Err bitreich.org 70 i- (#x8FD1C1 #x7A47) Err bitreich.org 70 i- (#x8FD1C2 #x7A48) Err bitreich.org 70 i- (#x8FD1C3 #x7A4C) Err bitreich.org 70 i- (#x8FD1C4 #x7A55) Err bitreich.org 70 i- (#x8FD1C5 #x7A56) Err bitreich.org 70 i- (#x8FD1C6 #x7A59) Err bitreich.org 70 i- (#x8FD1C7 #x7A5C) Err bitreich.org 70 i- (#x8FD1C8 #x7A5D) Err bitreich.org 70 i- (#x8FD1C9 #x7A5F) Err bitreich.org 70 i- (#x8FD1CA #x7A60) Err bitreich.org 70 i- (#x8FD1CB #x7A65) Err bitreich.org 70 i- (#x8FD1CC #x7A67) Err bitreich.org 70 i- (#x8FD1CD #x7A6A) Err bitreich.org 70 i- (#x8FD1CE #x7A6D) Err bitreich.org 70 i- (#x8FD1CF #x7A75) Err bitreich.org 70 i- (#x8FD1D0 #x7A78) Err bitreich.org 70 i- (#x8FD1D1 #x7A7E) Err bitreich.org 70 i- (#x8FD1D2 #x7A80) Err bitreich.org 70 i- (#x8FD1D3 #x7A82) Err bitreich.org 70 i- (#x8FD1D4 #x7A85) Err bitreich.org 70 i- (#x8FD1D5 #x7A86) Err bitreich.org 70 i- (#x8FD1D6 #x7A8A) Err bitreich.org 70 i- (#x8FD1D7 #x7A8B) Err bitreich.org 70 i- (#x8FD1D8 #x7A90) Err bitreich.org 70 i- (#x8FD1D9 #x7A91) Err bitreich.org 70 i- (#x8FD1DA #x7A94) Err bitreich.org 70 i- (#x8FD1DB #x7A9E) Err bitreich.org 70 i- (#x8FD1DC #x7AA0) Err bitreich.org 70 i- (#x8FD1DD #x7AA3) Err bitreich.org 70 i- (#x8FD1DE #x7AAC) Err bitreich.org 70 i- (#x8FD1DF #x7AB3) Err bitreich.org 70 i- (#x8FD1E0 #x7AB5) Err bitreich.org 70 i- (#x8FD1E1 #x7AB9) Err bitreich.org 70 i- (#x8FD1E2 #x7ABB) Err bitreich.org 70 i- (#x8FD1E3 #x7ABC) Err bitreich.org 70 i- (#x8FD1E4 #x7AC6) Err bitreich.org 70 i- (#x8FD1E5 #x7AC9) Err bitreich.org 70 i- (#x8FD1E6 #x7ACC) Err bitreich.org 70 i- (#x8FD1E7 #x7ACE) Err bitreich.org 70 i- (#x8FD1E8 #x7AD1) Err bitreich.org 70 i- (#x8FD1E9 #x7ADB) Err bitreich.org 70 i- (#x8FD1EA #x7AE8) Err bitreich.org 70 i- (#x8FD1EB #x7AE9) Err bitreich.org 70 i- (#x8FD1EC #x7AEB) Err bitreich.org 70 i- (#x8FD1ED #x7AEC) Err bitreich.org 70 i- (#x8FD1EE #x7AF1) Err bitreich.org 70 i- (#x8FD1EF #x7AF4) Err bitreich.org 70 i- (#x8FD1F0 #x7AFB) Err bitreich.org 70 i- (#x8FD1F1 #x7AFD) Err bitreich.org 70 i- (#x8FD1F2 #x7AFE) Err bitreich.org 70 i- (#x8FD1F3 #x7B07) Err bitreich.org 70 i- (#x8FD1F4 #x7B14) Err bitreich.org 70 i- (#x8FD1F5 #x7B1F) Err bitreich.org 70 i- (#x8FD1F6 #x7B23) Err bitreich.org 70 i- (#x8FD1F7 #x7B27) Err bitreich.org 70 i- (#x8FD1F8 #x7B29) Err bitreich.org 70 i- (#x8FD1F9 #x7B2A) Err bitreich.org 70 i- (#x8FD1FA #x7B2B) Err bitreich.org 70 i- (#x8FD1FB #x7B2D) Err bitreich.org 70 i- (#x8FD1FC #x7B2E) Err bitreich.org 70 i- (#x8FD1FD #x7B2F) Err bitreich.org 70 i- (#x8FD1FE #x7B30) Err bitreich.org 70 i- (#x8FD2A1 #x7B31) Err bitreich.org 70 i- (#x8FD2A2 #x7B34) Err bitreich.org 70 i- (#x8FD2A3 #x7B3D) Err bitreich.org 70 i- (#x8FD2A4 #x7B3F) Err bitreich.org 70 i- (#x8FD2A5 #x7B40) Err bitreich.org 70 i- (#x8FD2A6 #x7B41) Err bitreich.org 70 i- (#x8FD2A7 #x7B47) Err bitreich.org 70 i- (#x8FD2A8 #x7B4E) Err bitreich.org 70 i- (#x8FD2A9 #x7B55) Err bitreich.org 70 i- (#x8FD2AA #x7B60) Err bitreich.org 70 i- (#x8FD2AB #x7B64) Err bitreich.org 70 i- (#x8FD2AC #x7B66) Err bitreich.org 70 i- (#x8FD2AD #x7B69) Err bitreich.org 70 i- (#x8FD2AE #x7B6A) Err bitreich.org 70 i- (#x8FD2AF #x7B6D) Err bitreich.org 70 i- (#x8FD2B0 #x7B6F) Err bitreich.org 70 i- (#x8FD2B1 #x7B72) Err bitreich.org 70 i- (#x8FD2B2 #x7B73) Err bitreich.org 70 i- (#x8FD2B3 #x7B77) Err bitreich.org 70 i- (#x8FD2B4 #x7B84) Err bitreich.org 70 i- (#x8FD2B5 #x7B89) Err bitreich.org 70 i- (#x8FD2B6 #x7B8E) Err bitreich.org 70 i- (#x8FD2B7 #x7B90) Err bitreich.org 70 i- (#x8FD2B8 #x7B91) Err bitreich.org 70 i- (#x8FD2B9 #x7B96) Err bitreich.org 70 i- (#x8FD2BA #x7B9B) Err bitreich.org 70 i- (#x8FD2BB #x7B9E) Err bitreich.org 70 i- (#x8FD2BC #x7BA0) Err bitreich.org 70 i- (#x8FD2BD #x7BA5) Err bitreich.org 70 i- (#x8FD2BE #x7BAC) Err bitreich.org 70 i- (#x8FD2BF #x7BAF) Err bitreich.org 70 i- (#x8FD2C0 #x7BB0) Err bitreich.org 70 i- (#x8FD2C1 #x7BB2) Err bitreich.org 70 i- (#x8FD2C2 #x7BB5) Err bitreich.org 70 i- (#x8FD2C3 #x7BB6) Err bitreich.org 70 i- (#x8FD2C4 #x7BBA) Err bitreich.org 70 i- (#x8FD2C5 #x7BBB) Err bitreich.org 70 i- (#x8FD2C6 #x7BBC) Err bitreich.org 70 i- (#x8FD2C7 #x7BBD) Err bitreich.org 70 i- (#x8FD2C8 #x7BC2) Err bitreich.org 70 i- (#x8FD2C9 #x7BC5) Err bitreich.org 70 i- (#x8FD2CA #x7BC8) Err bitreich.org 70 i- (#x8FD2CB #x7BCA) Err bitreich.org 70 i- (#x8FD2CC #x7BD4) Err bitreich.org 70 i- (#x8FD2CD #x7BD6) Err bitreich.org 70 i- (#x8FD2CE #x7BD7) Err bitreich.org 70 i- (#x8FD2CF #x7BD9) Err bitreich.org 70 i- (#x8FD2D0 #x7BDA) Err bitreich.org 70 i- (#x8FD2D1 #x7BDB) Err bitreich.org 70 i- (#x8FD2D2 #x7BE8) Err bitreich.org 70 i- (#x8FD2D3 #x7BEA) Err bitreich.org 70 i- (#x8FD2D4 #x7BF2) Err bitreich.org 70 i- (#x8FD2D5 #x7BF4) Err bitreich.org 70 i- (#x8FD2D6 #x7BF5) Err bitreich.org 70 i- (#x8FD2D7 #x7BF8) Err bitreich.org 70 i- (#x8FD2D8 #x7BF9) Err bitreich.org 70 i- (#x8FD2D9 #x7BFA) Err bitreich.org 70 i- (#x8FD2DA #x7BFC) Err bitreich.org 70 i- (#x8FD2DB #x7BFE) Err bitreich.org 70 i- (#x8FD2DC #x7C01) Err bitreich.org 70 i- (#x8FD2DD #x7C02) Err bitreich.org 70 i- (#x8FD2DE #x7C03) Err bitreich.org 70 i- (#x8FD2DF #x7C04) Err bitreich.org 70 i- (#x8FD2E0 #x7C06) Err bitreich.org 70 i- (#x8FD2E1 #x7C09) Err bitreich.org 70 i- (#x8FD2E2 #x7C0B) Err bitreich.org 70 i- (#x8FD2E3 #x7C0C) Err bitreich.org 70 i- (#x8FD2E4 #x7C0E) Err bitreich.org 70 i- (#x8FD2E5 #x7C0F) Err bitreich.org 70 i- (#x8FD2E6 #x7C19) Err bitreich.org 70 i- (#x8FD2E7 #x7C1B) Err bitreich.org 70 i- (#x8FD2E8 #x7C20) Err bitreich.org 70 i- (#x8FD2E9 #x7C25) Err bitreich.org 70 i- (#x8FD2EA #x7C26) Err bitreich.org 70 i- (#x8FD2EB #x7C28) Err bitreich.org 70 i- (#x8FD2EC #x7C2C) Err bitreich.org 70 i- (#x8FD2ED #x7C31) Err bitreich.org 70 i- (#x8FD2EE #x7C33) Err bitreich.org 70 i- (#x8FD2EF #x7C34) Err bitreich.org 70 i- (#x8FD2F0 #x7C36) Err bitreich.org 70 i- (#x8FD2F1 #x7C39) Err bitreich.org 70 i- (#x8FD2F2 #x7C3A) Err bitreich.org 70 i- (#x8FD2F3 #x7C46) Err bitreich.org 70 i- (#x8FD2F4 #x7C4A) Err bitreich.org 70 i- (#x8FD2F5 #x7C55) Err bitreich.org 70 i- (#x8FD2F6 #x7C51) Err bitreich.org 70 i- (#x8FD2F7 #x7C52) Err bitreich.org 70 i- (#x8FD2F8 #x7C53) Err bitreich.org 70 i- (#x8FD2F9 #x7C59) Err bitreich.org 70 i- (#x8FD2FA #x7C5A) Err bitreich.org 70 i- (#x8FD2FB #x7C5B) Err bitreich.org 70 i- (#x8FD2FC #x7C5C) Err bitreich.org 70 i- (#x8FD2FD #x7C5D) Err bitreich.org 70 i- (#x8FD2FE #x7C5E) Err bitreich.org 70 i- (#x8FD3A1 #x7C61) Err bitreich.org 70 i- (#x8FD3A2 #x7C63) Err bitreich.org 70 i- (#x8FD3A3 #x7C67) Err bitreich.org 70 i- (#x8FD3A4 #x7C69) Err bitreich.org 70 i- (#x8FD3A5 #x7C6D) Err bitreich.org 70 i- (#x8FD3A6 #x7C6E) Err bitreich.org 70 i- (#x8FD3A7 #x7C70) Err bitreich.org 70 i- (#x8FD3A8 #x7C72) Err bitreich.org 70 i- (#x8FD3A9 #x7C79) Err bitreich.org 70 i- (#x8FD3AA #x7C7C) Err bitreich.org 70 i- (#x8FD3AB #x7C7D) Err bitreich.org 70 i- (#x8FD3AC #x7C86) Err bitreich.org 70 i- (#x8FD3AD #x7C87) Err bitreich.org 70 i- (#x8FD3AE #x7C8F) Err bitreich.org 70 i- (#x8FD3AF #x7C94) Err bitreich.org 70 i- (#x8FD3B0 #x7C9E) Err bitreich.org 70 i- (#x8FD3B1 #x7CA0) Err bitreich.org 70 i- (#x8FD3B2 #x7CA6) Err bitreich.org 70 i- (#x8FD3B3 #x7CB0) Err bitreich.org 70 i- (#x8FD3B4 #x7CB6) Err bitreich.org 70 i- (#x8FD3B5 #x7CB7) Err bitreich.org 70 i- (#x8FD3B6 #x7CBA) Err bitreich.org 70 i- (#x8FD3B7 #x7CBB) Err bitreich.org 70 i- (#x8FD3B8 #x7CBC) Err bitreich.org 70 i- (#x8FD3B9 #x7CBF) Err bitreich.org 70 i- (#x8FD3BA #x7CC4) Err bitreich.org 70 i- (#x8FD3BB #x7CC7) Err bitreich.org 70 i- (#x8FD3BC #x7CC8) Err bitreich.org 70 i- (#x8FD3BD #x7CC9) Err bitreich.org 70 i- (#x8FD3BE #x7CCD) Err bitreich.org 70 i- (#x8FD3BF #x7CCF) Err bitreich.org 70 i- (#x8FD3C0 #x7CD3) Err bitreich.org 70 i- (#x8FD3C1 #x7CD4) Err bitreich.org 70 i- (#x8FD3C2 #x7CD5) Err bitreich.org 70 i- (#x8FD3C3 #x7CD7) Err bitreich.org 70 i- (#x8FD3C4 #x7CD9) Err bitreich.org 70 i- (#x8FD3C5 #x7CDA) Err bitreich.org 70 i- (#x8FD3C6 #x7CDD) Err bitreich.org 70 i- (#x8FD3C7 #x7CE6) Err bitreich.org 70 i- (#x8FD3C8 #x7CE9) Err bitreich.org 70 i- (#x8FD3C9 #x7CEB) Err bitreich.org 70 i- (#x8FD3CA #x7CF5) Err bitreich.org 70 i- (#x8FD3CB #x7D03) Err bitreich.org 70 i- (#x8FD3CC #x7D07) Err bitreich.org 70 i- (#x8FD3CD #x7D08) Err bitreich.org 70 i- (#x8FD3CE #x7D09) Err bitreich.org 70 i- (#x8FD3CF #x7D0F) Err bitreich.org 70 i- (#x8FD3D0 #x7D11) Err bitreich.org 70 i- (#x8FD3D1 #x7D12) Err bitreich.org 70 i- (#x8FD3D2 #x7D13) Err bitreich.org 70 i- (#x8FD3D3 #x7D16) Err bitreich.org 70 i- (#x8FD3D4 #x7D1D) Err bitreich.org 70 i- (#x8FD3D5 #x7D1E) Err bitreich.org 70 i- (#x8FD3D6 #x7D23) Err bitreich.org 70 i- (#x8FD3D7 #x7D26) Err bitreich.org 70 i- (#x8FD3D8 #x7D2A) Err bitreich.org 70 i- (#x8FD3D9 #x7D2D) Err bitreich.org 70 i- (#x8FD3DA #x7D31) Err bitreich.org 70 i- (#x8FD3DB #x7D3C) Err bitreich.org 70 i- (#x8FD3DC #x7D3D) Err bitreich.org 70 i- (#x8FD3DD #x7D3E) Err bitreich.org 70 i- (#x8FD3DE #x7D40) Err bitreich.org 70 i- (#x8FD3DF #x7D41) Err bitreich.org 70 i- (#x8FD3E0 #x7D47) Err bitreich.org 70 i- (#x8FD3E1 #x7D48) Err bitreich.org 70 i- (#x8FD3E2 #x7D4D) Err bitreich.org 70 i- (#x8FD3E3 #x7D51) Err bitreich.org 70 i- (#x8FD3E4 #x7D53) Err bitreich.org 70 i- (#x8FD3E5 #x7D57) Err bitreich.org 70 i- (#x8FD3E6 #x7D59) Err bitreich.org 70 i- (#x8FD3E7 #x7D5A) Err bitreich.org 70 i- (#x8FD3E8 #x7D5C) Err bitreich.org 70 i- (#x8FD3E9 #x7D5D) Err bitreich.org 70 i- (#x8FD3EA #x7D65) Err bitreich.org 70 i- (#x8FD3EB #x7D67) Err bitreich.org 70 i- (#x8FD3EC #x7D6A) Err bitreich.org 70 i- (#x8FD3ED #x7D70) Err bitreich.org 70 i- (#x8FD3EE #x7D78) Err bitreich.org 70 i- (#x8FD3EF #x7D7A) Err bitreich.org 70 i- (#x8FD3F0 #x7D7B) Err bitreich.org 70 i- (#x8FD3F1 #x7D7F) Err bitreich.org 70 i- (#x8FD3F2 #x7D81) Err bitreich.org 70 i- (#x8FD3F3 #x7D82) Err bitreich.org 70 i- (#x8FD3F4 #x7D83) Err bitreich.org 70 i- (#x8FD3F5 #x7D85) Err bitreich.org 70 i- (#x8FD3F6 #x7D86) Err bitreich.org 70 i- (#x8FD3F7 #x7D88) Err bitreich.org 70 i- (#x8FD3F8 #x7D8B) Err bitreich.org 70 i- (#x8FD3F9 #x7D8C) Err bitreich.org 70 i- (#x8FD3FA #x7D8D) Err bitreich.org 70 i- (#x8FD3FB #x7D91) Err bitreich.org 70 i- (#x8FD3FC #x7D96) Err bitreich.org 70 i- (#x8FD3FD #x7D97) Err bitreich.org 70 i- (#x8FD3FE #x7D9D) Err bitreich.org 70 i- (#x8FD4A1 #x7D9E) Err bitreich.org 70 i- (#x8FD4A2 #x7DA6) Err bitreich.org 70 i- (#x8FD4A3 #x7DA7) Err bitreich.org 70 i- (#x8FD4A4 #x7DAA) Err bitreich.org 70 i- (#x8FD4A5 #x7DB3) Err bitreich.org 70 i- (#x8FD4A6 #x7DB6) Err bitreich.org 70 i- (#x8FD4A7 #x7DB7) Err bitreich.org 70 i- (#x8FD4A8 #x7DB9) Err bitreich.org 70 i- (#x8FD4A9 #x7DC2) Err bitreich.org 70 i- (#x8FD4AA #x7DC3) Err bitreich.org 70 i- (#x8FD4AB #x7DC4) Err bitreich.org 70 i- (#x8FD4AC #x7DC5) Err bitreich.org 70 i- (#x8FD4AD #x7DC6) Err bitreich.org 70 i- (#x8FD4AE #x7DCC) Err bitreich.org 70 i- (#x8FD4AF #x7DCD) Err bitreich.org 70 i- (#x8FD4B0 #x7DCE) Err bitreich.org 70 i- (#x8FD4B1 #x7DD7) Err bitreich.org 70 i- (#x8FD4B2 #x7DD9) Err bitreich.org 70 i- (#x8FD4B3 #x7E00) Err bitreich.org 70 i- (#x8FD4B4 #x7DE2) Err bitreich.org 70 i- (#x8FD4B5 #x7DE5) Err bitreich.org 70 i- (#x8FD4B6 #x7DE6) Err bitreich.org 70 i- (#x8FD4B7 #x7DEA) Err bitreich.org 70 i- (#x8FD4B8 #x7DEB) Err bitreich.org 70 i- (#x8FD4B9 #x7DED) Err bitreich.org 70 i- (#x8FD4BA #x7DF1) Err bitreich.org 70 i- (#x8FD4BB #x7DF5) Err bitreich.org 70 i- (#x8FD4BC #x7DF6) Err bitreich.org 70 i- (#x8FD4BD #x7DF9) Err bitreich.org 70 i- (#x8FD4BE #x7DFA) Err bitreich.org 70 i- (#x8FD4BF #x7E08) Err bitreich.org 70 i- (#x8FD4C0 #x7E10) Err bitreich.org 70 i- (#x8FD4C1 #x7E11) Err bitreich.org 70 i- (#x8FD4C2 #x7E15) Err bitreich.org 70 i- (#x8FD4C3 #x7E17) Err bitreich.org 70 i- (#x8FD4C4 #x7E1C) Err bitreich.org 70 i- (#x8FD4C5 #x7E1D) Err bitreich.org 70 i- (#x8FD4C6 #x7E20) Err bitreich.org 70 i- (#x8FD4C7 #x7E27) Err bitreich.org 70 i- (#x8FD4C8 #x7E28) Err bitreich.org 70 i- (#x8FD4C9 #x7E2C) Err bitreich.org 70 i- (#x8FD4CA #x7E2D) Err bitreich.org 70 i- (#x8FD4CB #x7E2F) Err bitreich.org 70 i- (#x8FD4CC #x7E33) Err bitreich.org 70 i- (#x8FD4CD #x7E36) Err bitreich.org 70 i- (#x8FD4CE #x7E3F) Err bitreich.org 70 i- (#x8FD4CF #x7E44) Err bitreich.org 70 i- (#x8FD4D0 #x7E45) Err bitreich.org 70 i- (#x8FD4D1 #x7E47) Err bitreich.org 70 i- (#x8FD4D2 #x7E4E) Err bitreich.org 70 i- (#x8FD4D3 #x7E50) Err bitreich.org 70 i- (#x8FD4D4 #x7E52) Err bitreich.org 70 i- (#x8FD4D5 #x7E58) Err bitreich.org 70 i- (#x8FD4D6 #x7E5F) Err bitreich.org 70 i- (#x8FD4D7 #x7E61) Err bitreich.org 70 i- (#x8FD4D8 #x7E62) Err bitreich.org 70 i- (#x8FD4D9 #x7E65) Err bitreich.org 70 i- (#x8FD4DA #x7E6B) Err bitreich.org 70 i- (#x8FD4DB #x7E6E) Err bitreich.org 70 i- (#x8FD4DC #x7E6F) Err bitreich.org 70 i- (#x8FD4DD #x7E73) Err bitreich.org 70 i- (#x8FD4DE #x7E78) Err bitreich.org 70 i- (#x8FD4DF #x7E7E) Err bitreich.org 70 i- (#x8FD4E0 #x7E81) Err bitreich.org 70 i- (#x8FD4E1 #x7E86) Err bitreich.org 70 i- (#x8FD4E2 #x7E87) Err bitreich.org 70 i- (#x8FD4E3 #x7E8A) Err bitreich.org 70 i- (#x8FD4E4 #x7E8D) Err bitreich.org 70 i- (#x8FD4E5 #x7E91) Err bitreich.org 70 i- (#x8FD4E6 #x7E95) Err bitreich.org 70 i- (#x8FD4E7 #x7E98) Err bitreich.org 70 i- (#x8FD4E8 #x7E9A) Err bitreich.org 70 i- (#x8FD4E9 #x7E9D) Err bitreich.org 70 i- (#x8FD4EA #x7E9E) Err bitreich.org 70 i- (#x8FD4EB #x7F3C) Err bitreich.org 70 i- (#x8FD4EC #x7F3B) Err bitreich.org 70 i- (#x8FD4ED #x7F3D) Err bitreich.org 70 i- (#x8FD4EE #x7F3E) Err bitreich.org 70 i- (#x8FD4EF #x7F3F) Err bitreich.org 70 i- (#x8FD4F0 #x7F43) Err bitreich.org 70 i- (#x8FD4F1 #x7F44) Err bitreich.org 70 i- (#x8FD4F2 #x7F47) Err bitreich.org 70 i- (#x8FD4F3 #x7F4F) Err bitreich.org 70 i- (#x8FD4F4 #x7F52) Err bitreich.org 70 i- (#x8FD4F5 #x7F53) Err bitreich.org 70 i- (#x8FD4F6 #x7F5B) Err bitreich.org 70 i- (#x8FD4F7 #x7F5C) Err bitreich.org 70 i- (#x8FD4F8 #x7F5D) Err bitreich.org 70 i- (#x8FD4F9 #x7F61) Err bitreich.org 70 i- (#x8FD4FA #x7F63) Err bitreich.org 70 i- (#x8FD4FB #x7F64) Err bitreich.org 70 i- (#x8FD4FC #x7F65) Err bitreich.org 70 i- (#x8FD4FD #x7F66) Err bitreich.org 70 i- (#x8FD4FE #x7F6D) Err bitreich.org 70 i- (#x8FD5A1 #x7F71) Err bitreich.org 70 i- (#x8FD5A2 #x7F7D) Err bitreich.org 70 i- (#x8FD5A3 #x7F7E) Err bitreich.org 70 i- (#x8FD5A4 #x7F7F) Err bitreich.org 70 i- (#x8FD5A5 #x7F80) Err bitreich.org 70 i- (#x8FD5A6 #x7F8B) Err bitreich.org 70 i- (#x8FD5A7 #x7F8D) Err bitreich.org 70 i- (#x8FD5A8 #x7F8F) Err bitreich.org 70 i- (#x8FD5A9 #x7F90) Err bitreich.org 70 i- (#x8FD5AA #x7F91) Err bitreich.org 70 i- (#x8FD5AB #x7F96) Err bitreich.org 70 i- (#x8FD5AC #x7F97) Err bitreich.org 70 i- (#x8FD5AD #x7F9C) Err bitreich.org 70 i- (#x8FD5AE #x7FA1) Err bitreich.org 70 i- (#x8FD5AF #x7FA2) Err bitreich.org 70 i- (#x8FD5B0 #x7FA6) Err bitreich.org 70 i- (#x8FD5B1 #x7FAA) Err bitreich.org 70 i- (#x8FD5B2 #x7FAD) Err bitreich.org 70 i- (#x8FD5B3 #x7FB4) Err bitreich.org 70 i- (#x8FD5B4 #x7FBC) Err bitreich.org 70 i- (#x8FD5B5 #x7FBF) Err bitreich.org 70 i- (#x8FD5B6 #x7FC0) Err bitreich.org 70 i- (#x8FD5B7 #x7FC3) Err bitreich.org 70 i- (#x8FD5B8 #x7FC8) Err bitreich.org 70 i- (#x8FD5B9 #x7FCE) Err bitreich.org 70 i- (#x8FD5BA #x7FCF) Err bitreich.org 70 i- (#x8FD5BB #x7FDB) Err bitreich.org 70 i- (#x8FD5BC #x7FDF) Err bitreich.org 70 i- (#x8FD5BD #x7FE3) Err bitreich.org 70 i- (#x8FD5BE #x7FE5) Err bitreich.org 70 i- (#x8FD5BF #x7FE8) Err bitreich.org 70 i- (#x8FD5C0 #x7FEC) Err bitreich.org 70 i- (#x8FD5C1 #x7FEE) Err bitreich.org 70 i- (#x8FD5C2 #x7FEF) Err bitreich.org 70 i- (#x8FD5C3 #x7FF2) Err bitreich.org 70 i- (#x8FD5C4 #x7FFA) Err bitreich.org 70 i- (#x8FD5C5 #x7FFD) Err bitreich.org 70 i- (#x8FD5C6 #x7FFE) Err bitreich.org 70 i- (#x8FD5C7 #x7FFF) Err bitreich.org 70 i- (#x8FD5C8 #x8007) Err bitreich.org 70 i- (#x8FD5C9 #x8008) Err bitreich.org 70 i- (#x8FD5CA #x800A) Err bitreich.org 70 i- (#x8FD5CB #x800D) Err bitreich.org 70 i- (#x8FD5CC #x800E) Err bitreich.org 70 i- (#x8FD5CD #x800F) Err bitreich.org 70 i- (#x8FD5CE #x8011) Err bitreich.org 70 i- (#x8FD5CF #x8013) Err bitreich.org 70 i- (#x8FD5D0 #x8014) Err bitreich.org 70 i- (#x8FD5D1 #x8016) Err bitreich.org 70 i- (#x8FD5D2 #x801D) Err bitreich.org 70 i- (#x8FD5D3 #x801E) Err bitreich.org 70 i- (#x8FD5D4 #x801F) Err bitreich.org 70 i- (#x8FD5D5 #x8020) Err bitreich.org 70 i- (#x8FD5D6 #x8024) Err bitreich.org 70 i- (#x8FD5D7 #x8026) Err bitreich.org 70 i- (#x8FD5D8 #x802C) Err bitreich.org 70 i- (#x8FD5D9 #x802E) Err bitreich.org 70 i- (#x8FD5DA #x8030) Err bitreich.org 70 i- (#x8FD5DB #x8034) Err bitreich.org 70 i- (#x8FD5DC #x8035) Err bitreich.org 70 i- (#x8FD5DD #x8037) Err bitreich.org 70 i- (#x8FD5DE #x8039) Err bitreich.org 70 i- (#x8FD5DF #x803A) Err bitreich.org 70 i- (#x8FD5E0 #x803C) Err bitreich.org 70 i- (#x8FD5E1 #x803E) Err bitreich.org 70 i- (#x8FD5E2 #x8040) Err bitreich.org 70 i- (#x8FD5E3 #x8044) Err bitreich.org 70 i- (#x8FD5E4 #x8060) Err bitreich.org 70 i- (#x8FD5E5 #x8064) Err bitreich.org 70 i- (#x8FD5E6 #x8066) Err bitreich.org 70 i- (#x8FD5E7 #x806D) Err bitreich.org 70 i- (#x8FD5E8 #x8071) Err bitreich.org 70 i- (#x8FD5E9 #x8075) Err bitreich.org 70 i- (#x8FD5EA #x8081) Err bitreich.org 70 i- (#x8FD5EB #x8088) Err bitreich.org 70 i- (#x8FD5EC #x808E) Err bitreich.org 70 i- (#x8FD5ED #x809C) Err bitreich.org 70 i- (#x8FD5EE #x809E) Err bitreich.org 70 i- (#x8FD5EF #x80A6) Err bitreich.org 70 i- (#x8FD5F0 #x80A7) Err bitreich.org 70 i- (#x8FD5F1 #x80AB) Err bitreich.org 70 i- (#x8FD5F2 #x80B8) Err bitreich.org 70 i- (#x8FD5F3 #x80B9) Err bitreich.org 70 i- (#x8FD5F4 #x80C8) Err bitreich.org 70 i- (#x8FD5F5 #x80CD) Err bitreich.org 70 i- (#x8FD5F6 #x80CF) Err bitreich.org 70 i- (#x8FD5F7 #x80D2) Err bitreich.org 70 i- (#x8FD5F8 #x80D4) Err bitreich.org 70 i- (#x8FD5F9 #x80D5) Err bitreich.org 70 i- (#x8FD5FA #x80D7) Err bitreich.org 70 i- (#x8FD5FB #x80D8) Err bitreich.org 70 i- (#x8FD5FC #x80E0) Err bitreich.org 70 i- (#x8FD5FD #x80ED) Err bitreich.org 70 i- (#x8FD5FE #x80EE) Err bitreich.org 70 i- (#x8FD6A1 #x80F0) Err bitreich.org 70 i- (#x8FD6A2 #x80F2) Err bitreich.org 70 i- (#x8FD6A3 #x80F3) Err bitreich.org 70 i- (#x8FD6A4 #x80F6) Err bitreich.org 70 i- (#x8FD6A5 #x80F9) Err bitreich.org 70 i- (#x8FD6A6 #x80FA) Err bitreich.org 70 i- (#x8FD6A7 #x80FE) Err bitreich.org 70 i- (#x8FD6A8 #x8103) Err bitreich.org 70 i- (#x8FD6A9 #x810B) Err bitreich.org 70 i- (#x8FD6AA #x8116) Err bitreich.org 70 i- (#x8FD6AB #x8117) Err bitreich.org 70 i- (#x8FD6AC #x8118) Err bitreich.org 70 i- (#x8FD6AD #x811C) Err bitreich.org 70 i- (#x8FD6AE #x811E) Err bitreich.org 70 i- (#x8FD6AF #x8120) Err bitreich.org 70 i- (#x8FD6B0 #x8124) Err bitreich.org 70 i- (#x8FD6B1 #x8127) Err bitreich.org 70 i- (#x8FD6B2 #x812C) Err bitreich.org 70 i- (#x8FD6B3 #x8130) Err bitreich.org 70 i- (#x8FD6B4 #x8135) Err bitreich.org 70 i- (#x8FD6B5 #x813A) Err bitreich.org 70 i- (#x8FD6B6 #x813C) Err bitreich.org 70 i- (#x8FD6B7 #x8145) Err bitreich.org 70 i- (#x8FD6B8 #x8147) Err bitreich.org 70 i- (#x8FD6B9 #x814A) Err bitreich.org 70 i- (#x8FD6BA #x814C) Err bitreich.org 70 i- (#x8FD6BB #x8152) Err bitreich.org 70 i- (#x8FD6BC #x8157) Err bitreich.org 70 i- (#x8FD6BD #x8160) Err bitreich.org 70 i- (#x8FD6BE #x8161) Err bitreich.org 70 i- (#x8FD6BF #x8167) Err bitreich.org 70 i- (#x8FD6C0 #x8168) Err bitreich.org 70 i- (#x8FD6C1 #x8169) Err bitreich.org 70 i- (#x8FD6C2 #x816D) Err bitreich.org 70 i- (#x8FD6C3 #x816F) Err bitreich.org 70 i- (#x8FD6C4 #x8177) Err bitreich.org 70 i- (#x8FD6C5 #x8181) Err bitreich.org 70 i- (#x8FD6C6 #x8190) Err bitreich.org 70 i- (#x8FD6C7 #x8184) Err bitreich.org 70 i- (#x8FD6C8 #x8185) Err bitreich.org 70 i- (#x8FD6C9 #x8186) Err bitreich.org 70 i- (#x8FD6CA #x818B) Err bitreich.org 70 i- (#x8FD6CB #x818E) Err bitreich.org 70 i- (#x8FD6CC #x8196) Err bitreich.org 70 i- (#x8FD6CD #x8198) Err bitreich.org 70 i- (#x8FD6CE #x819B) Err bitreich.org 70 i- (#x8FD6CF #x819E) Err bitreich.org 70 i- (#x8FD6D0 #x81A2) Err bitreich.org 70 i- (#x8FD6D1 #x81AE) Err bitreich.org 70 i- (#x8FD6D2 #x81B2) Err bitreich.org 70 i- (#x8FD6D3 #x81B4) Err bitreich.org 70 i- (#x8FD6D4 #x81BB) Err bitreich.org 70 i- (#x8FD6D5 #x81CB) Err bitreich.org 70 i- (#x8FD6D6 #x81C3) Err bitreich.org 70 i- (#x8FD6D7 #x81C5) Err bitreich.org 70 i- (#x8FD6D8 #x81CA) Err bitreich.org 70 i- (#x8FD6D9 #x81CE) Err bitreich.org 70 i- (#x8FD6DA #x81CF) Err bitreich.org 70 i- (#x8FD6DB #x81D5) Err bitreich.org 70 i- (#x8FD6DC #x81D7) Err bitreich.org 70 i- (#x8FD6DD #x81DB) Err bitreich.org 70 i- (#x8FD6DE #x81DD) Err bitreich.org 70 i- (#x8FD6DF #x81DE) Err bitreich.org 70 i- (#x8FD6E0 #x81E1) Err bitreich.org 70 i- (#x8FD6E1 #x81E4) Err bitreich.org 70 i- (#x8FD6E2 #x81EB) Err bitreich.org 70 i- (#x8FD6E3 #x81EC) Err bitreich.org 70 i- (#x8FD6E4 #x81F0) Err bitreich.org 70 i- (#x8FD6E5 #x81F1) Err bitreich.org 70 i- (#x8FD6E6 #x81F2) Err bitreich.org 70 i- (#x8FD6E7 #x81F5) Err bitreich.org 70 i- (#x8FD6E8 #x81F6) Err bitreich.org 70 i- (#x8FD6E9 #x81F8) Err bitreich.org 70 i- (#x8FD6EA #x81F9) Err bitreich.org 70 i- (#x8FD6EB #x81FD) Err bitreich.org 70 i- (#x8FD6EC #x81FF) Err bitreich.org 70 i- (#x8FD6ED #x8200) Err bitreich.org 70 i- (#x8FD6EE #x8203) Err bitreich.org 70 i- (#x8FD6EF #x820F) Err bitreich.org 70 i- (#x8FD6F0 #x8213) Err bitreich.org 70 i- (#x8FD6F1 #x8214) Err bitreich.org 70 i- (#x8FD6F2 #x8219) Err bitreich.org 70 i- (#x8FD6F3 #x821A) Err bitreich.org 70 i- (#x8FD6F4 #x821D) Err bitreich.org 70 i- (#x8FD6F5 #x8221) Err bitreich.org 70 i- (#x8FD6F6 #x8222) Err bitreich.org 70 i- (#x8FD6F7 #x8228) Err bitreich.org 70 i- (#x8FD6F8 #x8232) Err bitreich.org 70 i- (#x8FD6F9 #x8234) Err bitreich.org 70 i- (#x8FD6FA #x823A) Err bitreich.org 70 i- (#x8FD6FB #x8243) Err bitreich.org 70 i- (#x8FD6FC #x8244) Err bitreich.org 70 i- (#x8FD6FD #x8245) Err bitreich.org 70 i- (#x8FD6FE #x8246) Err bitreich.org 70 i- (#x8FD7A1 #x824B) Err bitreich.org 70 i- (#x8FD7A2 #x824E) Err bitreich.org 70 i- (#x8FD7A3 #x824F) Err bitreich.org 70 i- (#x8FD7A4 #x8251) Err bitreich.org 70 i- (#x8FD7A5 #x8256) Err bitreich.org 70 i- (#x8FD7A6 #x825C) Err bitreich.org 70 i- (#x8FD7A7 #x8260) Err bitreich.org 70 i- (#x8FD7A8 #x8263) Err bitreich.org 70 i- (#x8FD7A9 #x8267) Err bitreich.org 70 i- (#x8FD7AA #x826D) Err bitreich.org 70 i- (#x8FD7AB #x8274) Err bitreich.org 70 i- (#x8FD7AC #x827B) Err bitreich.org 70 i- (#x8FD7AD #x827D) Err bitreich.org 70 i- (#x8FD7AE #x827F) Err bitreich.org 70 i- (#x8FD7AF #x8280) Err bitreich.org 70 i- (#x8FD7B0 #x8281) Err bitreich.org 70 i- (#x8FD7B1 #x8283) Err bitreich.org 70 i- (#x8FD7B2 #x8284) Err bitreich.org 70 i- (#x8FD7B3 #x8287) Err bitreich.org 70 i- (#x8FD7B4 #x8289) Err bitreich.org 70 i- (#x8FD7B5 #x828A) Err bitreich.org 70 i- (#x8FD7B6 #x828E) Err bitreich.org 70 i- (#x8FD7B7 #x8291) Err bitreich.org 70 i- (#x8FD7B8 #x8294) Err bitreich.org 70 i- (#x8FD7B9 #x8296) Err bitreich.org 70 i- (#x8FD7BA #x8298) Err bitreich.org 70 i- (#x8FD7BB #x829A) Err bitreich.org 70 i- (#x8FD7BC #x829B) Err bitreich.org 70 i- (#x8FD7BD #x82A0) Err bitreich.org 70 i- (#x8FD7BE #x82A1) Err bitreich.org 70 i- (#x8FD7BF #x82A3) Err bitreich.org 70 i- (#x8FD7C0 #x82A4) Err bitreich.org 70 i- (#x8FD7C1 #x82A7) Err bitreich.org 70 i- (#x8FD7C2 #x82A8) Err bitreich.org 70 i- (#x8FD7C3 #x82A9) Err bitreich.org 70 i- (#x8FD7C4 #x82AA) Err bitreich.org 70 i- (#x8FD7C5 #x82AE) Err bitreich.org 70 i- (#x8FD7C6 #x82B0) Err bitreich.org 70 i- (#x8FD7C7 #x82B2) Err bitreich.org 70 i- (#x8FD7C8 #x82B4) Err bitreich.org 70 i- (#x8FD7C9 #x82B7) Err bitreich.org 70 i- (#x8FD7CA #x82BA) Err bitreich.org 70 i- (#x8FD7CB #x82BC) Err bitreich.org 70 i- (#x8FD7CC #x82BE) Err bitreich.org 70 i- (#x8FD7CD #x82BF) Err bitreich.org 70 i- (#x8FD7CE #x82C6) Err bitreich.org 70 i- (#x8FD7CF #x82D0) Err bitreich.org 70 i- (#x8FD7D0 #x82D5) Err bitreich.org 70 i- (#x8FD7D1 #x82DA) Err bitreich.org 70 i- (#x8FD7D2 #x82E0) Err bitreich.org 70 i- (#x8FD7D3 #x82E2) Err bitreich.org 70 i- (#x8FD7D4 #x82E4) Err bitreich.org 70 i- (#x8FD7D5 #x82E8) Err bitreich.org 70 i- (#x8FD7D6 #x82EA) Err bitreich.org 70 i- (#x8FD7D7 #x82ED) Err bitreich.org 70 i- (#x8FD7D8 #x82EF) Err bitreich.org 70 i- (#x8FD7D9 #x82F6) Err bitreich.org 70 i- (#x8FD7DA #x82F7) Err bitreich.org 70 i- (#x8FD7DB #x82FD) Err bitreich.org 70 i- (#x8FD7DC #x82FE) Err bitreich.org 70 i- (#x8FD7DD #x8300) Err bitreich.org 70 i- (#x8FD7DE #x8301) Err bitreich.org 70 i- (#x8FD7DF #x8307) Err bitreich.org 70 i- (#x8FD7E0 #x8308) Err bitreich.org 70 i- (#x8FD7E1 #x830A) Err bitreich.org 70 i- (#x8FD7E2 #x830B) Err bitreich.org 70 i- (#x8FD7E3 #x8354) Err bitreich.org 70 i- (#x8FD7E4 #x831B) Err bitreich.org 70 i- (#x8FD7E5 #x831D) Err bitreich.org 70 i- (#x8FD7E6 #x831E) Err bitreich.org 70 i- (#x8FD7E7 #x831F) Err bitreich.org 70 i- (#x8FD7E8 #x8321) Err bitreich.org 70 i- (#x8FD7E9 #x8322) Err bitreich.org 70 i- (#x8FD7EA #x832C) Err bitreich.org 70 i- (#x8FD7EB #x832D) Err bitreich.org 70 i- (#x8FD7EC #x832E) Err bitreich.org 70 i- (#x8FD7ED #x8330) Err bitreich.org 70 i- (#x8FD7EE #x8333) Err bitreich.org 70 i- (#x8FD7EF #x8337) Err bitreich.org 70 i- (#x8FD7F0 #x833A) Err bitreich.org 70 i- (#x8FD7F1 #x833C) Err bitreich.org 70 i- (#x8FD7F2 #x833D) Err bitreich.org 70 i- (#x8FD7F3 #x8342) Err bitreich.org 70 i- (#x8FD7F4 #x8343) Err bitreich.org 70 i- (#x8FD7F5 #x8344) Err bitreich.org 70 i- (#x8FD7F6 #x8347) Err bitreich.org 70 i- (#x8FD7F7 #x834D) Err bitreich.org 70 i- (#x8FD7F8 #x834E) Err bitreich.org 70 i- (#x8FD7F9 #x8351) Err bitreich.org 70 i- (#x8FD7FA #x8355) Err bitreich.org 70 i- (#x8FD7FB #x8356) Err bitreich.org 70 i- (#x8FD7FC #x8357) Err bitreich.org 70 i- (#x8FD7FD #x8370) Err bitreich.org 70 i- (#x8FD7FE #x8378) Err bitreich.org 70 i- (#x8FD8A1 #x837D) Err bitreich.org 70 i- (#x8FD8A2 #x837F) Err bitreich.org 70 i- (#x8FD8A3 #x8380) Err bitreich.org 70 i- (#x8FD8A4 #x8382) Err bitreich.org 70 i- (#x8FD8A5 #x8384) Err bitreich.org 70 i- (#x8FD8A6 #x8386) Err bitreich.org 70 i- (#x8FD8A7 #x838D) Err bitreich.org 70 i- (#x8FD8A8 #x8392) Err bitreich.org 70 i- (#x8FD8A9 #x8394) Err bitreich.org 70 i- (#x8FD8AA #x8395) Err bitreich.org 70 i- (#x8FD8AB #x8398) Err bitreich.org 70 i- (#x8FD8AC #x8399) Err bitreich.org 70 i- (#x8FD8AD #x839B) Err bitreich.org 70 i- (#x8FD8AE #x839C) Err bitreich.org 70 i- (#x8FD8AF #x839D) Err bitreich.org 70 i- (#x8FD8B0 #x83A6) Err bitreich.org 70 i- (#x8FD8B1 #x83A7) Err bitreich.org 70 i- (#x8FD8B2 #x83A9) Err bitreich.org 70 i- (#x8FD8B3 #x83AC) Err bitreich.org 70 i- (#x8FD8B4 #x83BE) Err bitreich.org 70 i- (#x8FD8B5 #x83BF) Err bitreich.org 70 i- (#x8FD8B6 #x83C0) Err bitreich.org 70 i- (#x8FD8B7 #x83C7) Err bitreich.org 70 i- (#x8FD8B8 #x83C9) Err bitreich.org 70 i- (#x8FD8B9 #x83CF) Err bitreich.org 70 i- (#x8FD8BA #x83D0) Err bitreich.org 70 i- (#x8FD8BB #x83D1) Err bitreich.org 70 i- (#x8FD8BC #x83D4) Err bitreich.org 70 i- (#x8FD8BD #x83DD) Err bitreich.org 70 i- (#x8FD8BE #x8353) Err bitreich.org 70 i- (#x8FD8BF #x83E8) Err bitreich.org 70 i- (#x8FD8C0 #x83EA) Err bitreich.org 70 i- (#x8FD8C1 #x83F6) Err bitreich.org 70 i- (#x8FD8C2 #x83F8) Err bitreich.org 70 i- (#x8FD8C3 #x83F9) Err bitreich.org 70 i- (#x8FD8C4 #x83FC) Err bitreich.org 70 i- (#x8FD8C5 #x8401) Err bitreich.org 70 i- (#x8FD8C6 #x8406) Err bitreich.org 70 i- (#x8FD8C7 #x840A) Err bitreich.org 70 i- (#x8FD8C8 #x840F) Err bitreich.org 70 i- (#x8FD8C9 #x8411) Err bitreich.org 70 i- (#x8FD8CA #x8415) Err bitreich.org 70 i- (#x8FD8CB #x8419) Err bitreich.org 70 i- (#x8FD8CC #x83AD) Err bitreich.org 70 i- (#x8FD8CD #x842F) Err bitreich.org 70 i- (#x8FD8CE #x8439) Err bitreich.org 70 i- (#x8FD8CF #x8445) Err bitreich.org 70 i- (#x8FD8D0 #x8447) Err bitreich.org 70 i- (#x8FD8D1 #x8448) Err bitreich.org 70 i- (#x8FD8D2 #x844A) Err bitreich.org 70 i- (#x8FD8D3 #x844D) Err bitreich.org 70 i- (#x8FD8D4 #x844F) Err bitreich.org 70 i- (#x8FD8D5 #x8451) Err bitreich.org 70 i- (#x8FD8D6 #x8452) Err bitreich.org 70 i- (#x8FD8D7 #x8456) Err bitreich.org 70 i- (#x8FD8D8 #x8458) Err bitreich.org 70 i- (#x8FD8D9 #x8459) Err bitreich.org 70 i- (#x8FD8DA #x845A) Err bitreich.org 70 i- (#x8FD8DB #x845C) Err bitreich.org 70 i- (#x8FD8DC #x8460) Err bitreich.org 70 i- (#x8FD8DD #x8464) Err bitreich.org 70 i- (#x8FD8DE #x8465) Err bitreich.org 70 i- (#x8FD8DF #x8467) Err bitreich.org 70 i- (#x8FD8E0 #x846A) Err bitreich.org 70 i- (#x8FD8E1 #x8470) Err bitreich.org 70 i- (#x8FD8E2 #x8473) Err bitreich.org 70 i- (#x8FD8E3 #x8474) Err bitreich.org 70 i- (#x8FD8E4 #x8476) Err bitreich.org 70 i- (#x8FD8E5 #x8478) Err bitreich.org 70 i- (#x8FD8E6 #x847C) Err bitreich.org 70 i- (#x8FD8E7 #x847D) Err bitreich.org 70 i- (#x8FD8E8 #x8481) Err bitreich.org 70 i- (#x8FD8E9 #x8485) Err bitreich.org 70 i- (#x8FD8EA #x8492) Err bitreich.org 70 i- (#x8FD8EB #x8493) Err bitreich.org 70 i- (#x8FD8EC #x8495) Err bitreich.org 70 i- (#x8FD8ED #x849E) Err bitreich.org 70 i- (#x8FD8EE #x84A6) Err bitreich.org 70 i- (#x8FD8EF #x84A8) Err bitreich.org 70 i- (#x8FD8F0 #x84A9) Err bitreich.org 70 i- (#x8FD8F1 #x84AA) Err bitreich.org 70 i- (#x8FD8F2 #x84AF) Err bitreich.org 70 i- (#x8FD8F3 #x84B1) Err bitreich.org 70 i- (#x8FD8F4 #x84B4) Err bitreich.org 70 i- (#x8FD8F5 #x84BA) Err bitreich.org 70 i- (#x8FD8F6 #x84BD) Err bitreich.org 70 i- (#x8FD8F7 #x84BE) Err bitreich.org 70 i- (#x8FD8F8 #x84C0) Err bitreich.org 70 i- (#x8FD8F9 #x84C2) Err bitreich.org 70 i- (#x8FD8FA #x84C7) Err bitreich.org 70 i- (#x8FD8FB #x84C8) Err bitreich.org 70 i- (#x8FD8FC #x84CC) Err bitreich.org 70 i- (#x8FD8FD #x84CF) Err bitreich.org 70 i- (#x8FD8FE #x84D3) Err bitreich.org 70 i- (#x8FD9A1 #x84DC) Err bitreich.org 70 i- (#x8FD9A2 #x84E7) Err bitreich.org 70 i- (#x8FD9A3 #x84EA) Err bitreich.org 70 i- (#x8FD9A4 #x84EF) Err bitreich.org 70 i- (#x8FD9A5 #x84F0) Err bitreich.org 70 i- (#x8FD9A6 #x84F1) Err bitreich.org 70 i- (#x8FD9A7 #x84F2) Err bitreich.org 70 i- (#x8FD9A8 #x84F7) Err bitreich.org 70 i- (#x8FD9A9 #x8532) Err bitreich.org 70 i- (#x8FD9AA #x84FA) Err bitreich.org 70 i- (#x8FD9AB #x84FB) Err bitreich.org 70 i- (#x8FD9AC #x84FD) Err bitreich.org 70 i- (#x8FD9AD #x8502) Err bitreich.org 70 i- (#x8FD9AE #x8503) Err bitreich.org 70 i- (#x8FD9AF #x8507) Err bitreich.org 70 i- (#x8FD9B0 #x850C) Err bitreich.org 70 i- (#x8FD9B1 #x850E) Err bitreich.org 70 i- (#x8FD9B2 #x8510) Err bitreich.org 70 i- (#x8FD9B3 #x851C) Err bitreich.org 70 i- (#x8FD9B4 #x851E) Err bitreich.org 70 i- (#x8FD9B5 #x8522) Err bitreich.org 70 i- (#x8FD9B6 #x8523) Err bitreich.org 70 i- (#x8FD9B7 #x8524) Err bitreich.org 70 i- (#x8FD9B8 #x8525) Err bitreich.org 70 i- (#x8FD9B9 #x8527) Err bitreich.org 70 i- (#x8FD9BA #x852A) Err bitreich.org 70 i- (#x8FD9BB #x852B) Err bitreich.org 70 i- (#x8FD9BC #x852F) Err bitreich.org 70 i- (#x8FD9BD #x8533) Err bitreich.org 70 i- (#x8FD9BE #x8534) Err bitreich.org 70 i- (#x8FD9BF #x8536) Err bitreich.org 70 i- (#x8FD9C0 #x853F) Err bitreich.org 70 i- (#x8FD9C1 #x8546) Err bitreich.org 70 i- (#x8FD9C2 #x854F) Err bitreich.org 70 i- (#x8FD9C3 #x8550) Err bitreich.org 70 i- (#x8FD9C4 #x8551) Err bitreich.org 70 i- (#x8FD9C5 #x8552) Err bitreich.org 70 i- (#x8FD9C6 #x8553) Err bitreich.org 70 i- (#x8FD9C7 #x8556) Err bitreich.org 70 i- (#x8FD9C8 #x8559) Err bitreich.org 70 i- (#x8FD9C9 #x855C) Err bitreich.org 70 i- (#x8FD9CA #x855D) Err bitreich.org 70 i- (#x8FD9CB #x855E) Err bitreich.org 70 i- (#x8FD9CC #x855F) Err bitreich.org 70 i- (#x8FD9CD #x8560) Err bitreich.org 70 i- (#x8FD9CE #x8561) Err bitreich.org 70 i- (#x8FD9CF #x8562) Err bitreich.org 70 i- (#x8FD9D0 #x8564) Err bitreich.org 70 i- (#x8FD9D1 #x856B) Err bitreich.org 70 i- (#x8FD9D2 #x856F) Err bitreich.org 70 i- (#x8FD9D3 #x8579) Err bitreich.org 70 i- (#x8FD9D4 #x857A) Err bitreich.org 70 i- (#x8FD9D5 #x857B) Err bitreich.org 70 i- (#x8FD9D6 #x857D) Err bitreich.org 70 i- (#x8FD9D7 #x857F) Err bitreich.org 70 i- (#x8FD9D8 #x8581) Err bitreich.org 70 i- (#x8FD9D9 #x8585) Err bitreich.org 70 i- (#x8FD9DA #x8586) Err bitreich.org 70 i- (#x8FD9DB #x8589) Err bitreich.org 70 i- (#x8FD9DC #x858B) Err bitreich.org 70 i- (#x8FD9DD #x858C) Err bitreich.org 70 i- (#x8FD9DE #x858F) Err bitreich.org 70 i- (#x8FD9DF #x8593) Err bitreich.org 70 i- (#x8FD9E0 #x8598) Err bitreich.org 70 i- (#x8FD9E1 #x859D) Err bitreich.org 70 i- (#x8FD9E2 #x859F) Err bitreich.org 70 i- (#x8FD9E3 #x85A0) Err bitreich.org 70 i- (#x8FD9E4 #x85A2) Err bitreich.org 70 i- (#x8FD9E5 #x85A5) Err bitreich.org 70 i- (#x8FD9E6 #x85A7) Err bitreich.org 70 i- (#x8FD9E7 #x85B4) Err bitreich.org 70 i- (#x8FD9E8 #x85B6) Err bitreich.org 70 i- (#x8FD9E9 #x85B7) Err bitreich.org 70 i- (#x8FD9EA #x85B8) Err bitreich.org 70 i- (#x8FD9EB #x85BC) Err bitreich.org 70 i- (#x8FD9EC #x85BD) Err bitreich.org 70 i- (#x8FD9ED #x85BE) Err bitreich.org 70 i- (#x8FD9EE #x85BF) Err bitreich.org 70 i- (#x8FD9EF #x85C2) Err bitreich.org 70 i- (#x8FD9F0 #x85C7) Err bitreich.org 70 i- (#x8FD9F1 #x85CA) Err bitreich.org 70 i- (#x8FD9F2 #x85CB) Err bitreich.org 70 i- (#x8FD9F3 #x85CE) Err bitreich.org 70 i- (#x8FD9F4 #x85AD) Err bitreich.org 70 i- (#x8FD9F5 #x85D8) Err bitreich.org 70 i- (#x8FD9F6 #x85DA) Err bitreich.org 70 i- (#x8FD9F7 #x85DF) Err bitreich.org 70 i- (#x8FD9F8 #x85E0) Err bitreich.org 70 i- (#x8FD9F9 #x85E6) Err bitreich.org 70 i- (#x8FD9FA #x85E8) Err bitreich.org 70 i- (#x8FD9FB #x85ED) Err bitreich.org 70 i- (#x8FD9FC #x85F3) Err bitreich.org 70 i- (#x8FD9FD #x85F6) Err bitreich.org 70 i- (#x8FD9FE #x85FC) Err bitreich.org 70 i- (#x8FDAA1 #x85FF) Err bitreich.org 70 i- (#x8FDAA2 #x8600) Err bitreich.org 70 i- (#x8FDAA3 #x8604) Err bitreich.org 70 i- (#x8FDAA4 #x8605) Err bitreich.org 70 i- (#x8FDAA5 #x860D) Err bitreich.org 70 i- (#x8FDAA6 #x860E) Err bitreich.org 70 i- (#x8FDAA7 #x8610) Err bitreich.org 70 i- (#x8FDAA8 #x8611) Err bitreich.org 70 i- (#x8FDAA9 #x8612) Err bitreich.org 70 i- (#x8FDAAA #x8618) Err bitreich.org 70 i- (#x8FDAAB #x8619) Err bitreich.org 70 i- (#x8FDAAC #x861B) Err bitreich.org 70 i- (#x8FDAAD #x861E) Err bitreich.org 70 i- (#x8FDAAE #x8621) Err bitreich.org 70 i- (#x8FDAAF #x8627) Err bitreich.org 70 i- (#x8FDAB0 #x8629) Err bitreich.org 70 i- (#x8FDAB1 #x8636) Err bitreich.org 70 i- (#x8FDAB2 #x8638) Err bitreich.org 70 i- (#x8FDAB3 #x863A) Err bitreich.org 70 i- (#x8FDAB4 #x863C) Err bitreich.org 70 i- (#x8FDAB5 #x863D) Err bitreich.org 70 i- (#x8FDAB6 #x8640) Err bitreich.org 70 i- (#x8FDAB7 #x8642) Err bitreich.org 70 i- (#x8FDAB8 #x8646) Err bitreich.org 70 i- (#x8FDAB9 #x8652) Err bitreich.org 70 i- (#x8FDABA #x8653) Err bitreich.org 70 i- (#x8FDABB #x8656) Err bitreich.org 70 i- (#x8FDABC #x8657) Err bitreich.org 70 i- (#x8FDABD #x8658) Err bitreich.org 70 i- (#x8FDABE #x8659) Err bitreich.org 70 i- (#x8FDABF #x865D) Err bitreich.org 70 i- (#x8FDAC0 #x8660) Err bitreich.org 70 i- (#x8FDAC1 #x8661) Err bitreich.org 70 i- (#x8FDAC2 #x8662) Err bitreich.org 70 i- (#x8FDAC3 #x8663) Err bitreich.org 70 i- (#x8FDAC4 #x8664) Err bitreich.org 70 i- (#x8FDAC5 #x8669) Err bitreich.org 70 i- (#x8FDAC6 #x866C) Err bitreich.org 70 i- (#x8FDAC7 #x866F) Err bitreich.org 70 i- (#x8FDAC8 #x8675) Err bitreich.org 70 i- (#x8FDAC9 #x8676) Err bitreich.org 70 i- (#x8FDACA #x8677) Err bitreich.org 70 i- (#x8FDACB #x867A) Err bitreich.org 70 i- (#x8FDACC #x868D) Err bitreich.org 70 i- (#x8FDACD #x8691) Err bitreich.org 70 i- (#x8FDACE #x8696) Err bitreich.org 70 i- (#x8FDACF #x8698) Err bitreich.org 70 i- (#x8FDAD0 #x869A) Err bitreich.org 70 i- (#x8FDAD1 #x869C) Err bitreich.org 70 i- (#x8FDAD2 #x86A1) Err bitreich.org 70 i- (#x8FDAD3 #x86A6) Err bitreich.org 70 i- (#x8FDAD4 #x86A7) Err bitreich.org 70 i- (#x8FDAD5 #x86A8) Err bitreich.org 70 i- (#x8FDAD6 #x86AD) Err bitreich.org 70 i- (#x8FDAD7 #x86B1) Err bitreich.org 70 i- (#x8FDAD8 #x86B3) Err bitreich.org 70 i- (#x8FDAD9 #x86B4) Err bitreich.org 70 i- (#x8FDADA #x86B5) Err bitreich.org 70 i- (#x8FDADB #x86B7) Err bitreich.org 70 i- (#x8FDADC #x86B8) Err bitreich.org 70 i- (#x8FDADD #x86B9) Err bitreich.org 70 i- (#x8FDADE #x86BF) Err bitreich.org 70 i- (#x8FDADF #x86C0) Err bitreich.org 70 i- (#x8FDAE0 #x86C1) Err bitreich.org 70 i- (#x8FDAE1 #x86C3) Err bitreich.org 70 i- (#x8FDAE2 #x86C5) Err bitreich.org 70 i- (#x8FDAE3 #x86D1) Err bitreich.org 70 i- (#x8FDAE4 #x86D2) Err bitreich.org 70 i- (#x8FDAE5 #x86D5) Err bitreich.org 70 i- (#x8FDAE6 #x86D7) Err bitreich.org 70 i- (#x8FDAE7 #x86DA) Err bitreich.org 70 i- (#x8FDAE8 #x86DC) Err bitreich.org 70 i- (#x8FDAE9 #x86E0) Err bitreich.org 70 i- (#x8FDAEA #x86E3) Err bitreich.org 70 i- (#x8FDAEB #x86E5) Err bitreich.org 70 i- (#x8FDAEC #x86E7) Err bitreich.org 70 i- (#x8FDAED #x8688) Err bitreich.org 70 i- (#x8FDAEE #x86FA) Err bitreich.org 70 i- (#x8FDAEF #x86FC) Err bitreich.org 70 i- (#x8FDAF0 #x86FD) Err bitreich.org 70 i- (#x8FDAF1 #x8704) Err bitreich.org 70 i- (#x8FDAF2 #x8705) Err bitreich.org 70 i- (#x8FDAF3 #x8707) Err bitreich.org 70 i- (#x8FDAF4 #x870B) Err bitreich.org 70 i- (#x8FDAF5 #x870E) Err bitreich.org 70 i- (#x8FDAF6 #x870F) Err bitreich.org 70 i- (#x8FDAF7 #x8710) Err bitreich.org 70 i- (#x8FDAF8 #x8713) Err bitreich.org 70 i- (#x8FDAF9 #x8714) Err bitreich.org 70 i- (#x8FDAFA #x8719) Err bitreich.org 70 i- (#x8FDAFB #x871E) Err bitreich.org 70 i- (#x8FDAFC #x871F) Err bitreich.org 70 i- (#x8FDAFD #x8721) Err bitreich.org 70 i- (#x8FDAFE #x8723) Err bitreich.org 70 i- (#x8FDBA1 #x8728) Err bitreich.org 70 i- (#x8FDBA2 #x872E) Err bitreich.org 70 i- (#x8FDBA3 #x872F) Err bitreich.org 70 i- (#x8FDBA4 #x8731) Err bitreich.org 70 i- (#x8FDBA5 #x8732) Err bitreich.org 70 i- (#x8FDBA6 #x8739) Err bitreich.org 70 i- (#x8FDBA7 #x873A) Err bitreich.org 70 i- (#x8FDBA8 #x873C) Err bitreich.org 70 i- (#x8FDBA9 #x873D) Err bitreich.org 70 i- (#x8FDBAA #x873E) Err bitreich.org 70 i- (#x8FDBAB #x8740) Err bitreich.org 70 i- (#x8FDBAC #x8743) Err bitreich.org 70 i- (#x8FDBAD #x8745) Err bitreich.org 70 i- (#x8FDBAE #x874D) Err bitreich.org 70 i- (#x8FDBAF #x8758) Err bitreich.org 70 i- (#x8FDBB0 #x875D) Err bitreich.org 70 i- (#x8FDBB1 #x8761) Err bitreich.org 70 i- (#x8FDBB2 #x8764) Err bitreich.org 70 i- (#x8FDBB3 #x8765) Err bitreich.org 70 i- (#x8FDBB4 #x876F) Err bitreich.org 70 i- (#x8FDBB5 #x8771) Err bitreich.org 70 i- (#x8FDBB6 #x8772) Err bitreich.org 70 i- (#x8FDBB7 #x877B) Err bitreich.org 70 i- (#x8FDBB8 #x8783) Err bitreich.org 70 i- (#x8FDBB9 #x8784) Err bitreich.org 70 i- (#x8FDBBA #x8785) Err bitreich.org 70 i- (#x8FDBBB #x8786) Err bitreich.org 70 i- (#x8FDBBC #x8787) Err bitreich.org 70 i- (#x8FDBBD #x8788) Err bitreich.org 70 i- (#x8FDBBE #x8789) Err bitreich.org 70 i- (#x8FDBBF #x878B) Err bitreich.org 70 i- (#x8FDBC0 #x878C) Err bitreich.org 70 i- (#x8FDBC1 #x8790) Err bitreich.org 70 i- (#x8FDBC2 #x8793) Err bitreich.org 70 i- (#x8FDBC3 #x8795) Err bitreich.org 70 i- (#x8FDBC4 #x8797) Err bitreich.org 70 i- (#x8FDBC5 #x8798) Err bitreich.org 70 i- (#x8FDBC6 #x8799) Err bitreich.org 70 i- (#x8FDBC7 #x879E) Err bitreich.org 70 i- (#x8FDBC8 #x87A0) Err bitreich.org 70 i- (#x8FDBC9 #x87A3) Err bitreich.org 70 i- (#x8FDBCA #x87A7) Err bitreich.org 70 i- (#x8FDBCB #x87AC) Err bitreich.org 70 i- (#x8FDBCC #x87AD) Err bitreich.org 70 i- (#x8FDBCD #x87AE) Err bitreich.org 70 i- (#x8FDBCE #x87B1) Err bitreich.org 70 i- (#x8FDBCF #x87B5) Err bitreich.org 70 i- (#x8FDBD0 #x87BE) Err bitreich.org 70 i- (#x8FDBD1 #x87BF) Err bitreich.org 70 i- (#x8FDBD2 #x87C1) Err bitreich.org 70 i- (#x8FDBD3 #x87C8) Err bitreich.org 70 i- (#x8FDBD4 #x87C9) Err bitreich.org 70 i- (#x8FDBD5 #x87CA) Err bitreich.org 70 i- (#x8FDBD6 #x87CE) Err bitreich.org 70 i- (#x8FDBD7 #x87D5) Err bitreich.org 70 i- (#x8FDBD8 #x87D6) Err bitreich.org 70 i- (#x8FDBD9 #x87D9) Err bitreich.org 70 i- (#x8FDBDA #x87DA) Err bitreich.org 70 i- (#x8FDBDB #x87DC) Err bitreich.org 70 i- (#x8FDBDC #x87DF) Err bitreich.org 70 i- (#x8FDBDD #x87E2) Err bitreich.org 70 i- (#x8FDBDE #x87E3) Err bitreich.org 70 i- (#x8FDBDF #x87E4) Err bitreich.org 70 i- (#x8FDBE0 #x87EA) Err bitreich.org 70 i- (#x8FDBE1 #x87EB) Err bitreich.org 70 i- (#x8FDBE2 #x87ED) Err bitreich.org 70 i- (#x8FDBE3 #x87F1) Err bitreich.org 70 i- (#x8FDBE4 #x87F3) Err bitreich.org 70 i- (#x8FDBE5 #x87F8) Err bitreich.org 70 i- (#x8FDBE6 #x87FA) Err bitreich.org 70 i- (#x8FDBE7 #x87FF) Err bitreich.org 70 i- (#x8FDBE8 #x8801) Err bitreich.org 70 i- (#x8FDBE9 #x8803) Err bitreich.org 70 i- (#x8FDBEA #x8806) Err bitreich.org 70 i- (#x8FDBEB #x8809) Err bitreich.org 70 i- (#x8FDBEC #x880A) Err bitreich.org 70 i- (#x8FDBED #x880B) Err bitreich.org 70 i- (#x8FDBEE #x8810) Err bitreich.org 70 i- (#x8FDBEF #x8819) Err bitreich.org 70 i- (#x8FDBF0 #x8812) Err bitreich.org 70 i- (#x8FDBF1 #x8813) Err bitreich.org 70 i- (#x8FDBF2 #x8814) Err bitreich.org 70 i- (#x8FDBF3 #x8818) Err bitreich.org 70 i- (#x8FDBF4 #x881A) Err bitreich.org 70 i- (#x8FDBF5 #x881B) Err bitreich.org 70 i- (#x8FDBF6 #x881C) Err bitreich.org 70 i- (#x8FDBF7 #x881E) Err bitreich.org 70 i- (#x8FDBF8 #x881F) Err bitreich.org 70 i- (#x8FDBF9 #x8828) Err bitreich.org 70 i- (#x8FDBFA #x882D) Err bitreich.org 70 i- (#x8FDBFB #x882E) Err bitreich.org 70 i- (#x8FDBFC #x8830) Err bitreich.org 70 i- (#x8FDBFD #x8832) Err bitreich.org 70 i- (#x8FDBFE #x8835) Err bitreich.org 70 i- (#x8FDCA1 #x883A) Err bitreich.org 70 i- (#x8FDCA2 #x883C) Err bitreich.org 70 i- (#x8FDCA3 #x8841) Err bitreich.org 70 i- (#x8FDCA4 #x8843) Err bitreich.org 70 i- (#x8FDCA5 #x8845) Err bitreich.org 70 i- (#x8FDCA6 #x8848) Err bitreich.org 70 i- (#x8FDCA7 #x8849) Err bitreich.org 70 i- (#x8FDCA8 #x884A) Err bitreich.org 70 i- (#x8FDCA9 #x884B) Err bitreich.org 70 i- (#x8FDCAA #x884E) Err bitreich.org 70 i- (#x8FDCAB #x8851) Err bitreich.org 70 i- (#x8FDCAC #x8855) Err bitreich.org 70 i- (#x8FDCAD #x8856) Err bitreich.org 70 i- (#x8FDCAE #x8858) Err bitreich.org 70 i- (#x8FDCAF #x885A) Err bitreich.org 70 i- (#x8FDCB0 #x885C) Err bitreich.org 70 i- (#x8FDCB1 #x885F) Err bitreich.org 70 i- (#x8FDCB2 #x8860) Err bitreich.org 70 i- (#x8FDCB3 #x8864) Err bitreich.org 70 i- (#x8FDCB4 #x8869) Err bitreich.org 70 i- (#x8FDCB5 #x8871) Err bitreich.org 70 i- (#x8FDCB6 #x8879) Err bitreich.org 70 i- (#x8FDCB7 #x887B) Err bitreich.org 70 i- (#x8FDCB8 #x8880) Err bitreich.org 70 i- (#x8FDCB9 #x8898) Err bitreich.org 70 i- (#x8FDCBA #x889A) Err bitreich.org 70 i- (#x8FDCBB #x889B) Err bitreich.org 70 i- (#x8FDCBC #x889C) Err bitreich.org 70 i- (#x8FDCBD #x889F) Err bitreich.org 70 i- (#x8FDCBE #x88A0) Err bitreich.org 70 i- (#x8FDCBF #x88A8) Err bitreich.org 70 i- (#x8FDCC0 #x88AA) Err bitreich.org 70 i- (#x8FDCC1 #x88BA) Err bitreich.org 70 i- (#x8FDCC2 #x88BD) Err bitreich.org 70 i- (#x8FDCC3 #x88BE) Err bitreich.org 70 i- (#x8FDCC4 #x88C0) Err bitreich.org 70 i- (#x8FDCC5 #x88CA) Err bitreich.org 70 i- (#x8FDCC6 #x88CB) Err bitreich.org 70 i- (#x8FDCC7 #x88CC) Err bitreich.org 70 i- (#x8FDCC8 #x88CD) Err bitreich.org 70 i- (#x8FDCC9 #x88CE) Err bitreich.org 70 i- (#x8FDCCA #x88D1) Err bitreich.org 70 i- (#x8FDCCB #x88D2) Err bitreich.org 70 i- (#x8FDCCC #x88D3) Err bitreich.org 70 i- (#x8FDCCD #x88DB) Err bitreich.org 70 i- (#x8FDCCE #x88DE) Err bitreich.org 70 i- (#x8FDCCF #x88E7) Err bitreich.org 70 i- (#x8FDCD0 #x88EF) Err bitreich.org 70 i- (#x8FDCD1 #x88F0) Err bitreich.org 70 i- (#x8FDCD2 #x88F1) Err bitreich.org 70 i- (#x8FDCD3 #x88F5) Err bitreich.org 70 i- (#x8FDCD4 #x88F7) Err bitreich.org 70 i- (#x8FDCD5 #x8901) Err bitreich.org 70 i- (#x8FDCD6 #x8906) Err bitreich.org 70 i- (#x8FDCD7 #x890D) Err bitreich.org 70 i- (#x8FDCD8 #x890E) Err bitreich.org 70 i- (#x8FDCD9 #x890F) Err bitreich.org 70 i- (#x8FDCDA #x8915) Err bitreich.org 70 i- (#x8FDCDB #x8916) Err bitreich.org 70 i- (#x8FDCDC #x8918) Err bitreich.org 70 i- (#x8FDCDD #x8919) Err bitreich.org 70 i- (#x8FDCDE #x891A) Err bitreich.org 70 i- (#x8FDCDF #x891C) Err bitreich.org 70 i- (#x8FDCE0 #x8920) Err bitreich.org 70 i- (#x8FDCE1 #x8926) Err bitreich.org 70 i- (#x8FDCE2 #x8927) Err bitreich.org 70 i- (#x8FDCE3 #x8928) Err bitreich.org 70 i- (#x8FDCE4 #x8930) Err bitreich.org 70 i- (#x8FDCE5 #x8931) Err bitreich.org 70 i- (#x8FDCE6 #x8932) Err bitreich.org 70 i- (#x8FDCE7 #x8935) Err bitreich.org 70 i- (#x8FDCE8 #x8939) Err bitreich.org 70 i- (#x8FDCE9 #x893A) Err bitreich.org 70 i- (#x8FDCEA #x893E) Err bitreich.org 70 i- (#x8FDCEB #x8940) Err bitreich.org 70 i- (#x8FDCEC #x8942) Err bitreich.org 70 i- (#x8FDCED #x8945) Err bitreich.org 70 i- (#x8FDCEE #x8946) Err bitreich.org 70 i- (#x8FDCEF #x8949) Err bitreich.org 70 i- (#x8FDCF0 #x894F) Err bitreich.org 70 i- (#x8FDCF1 #x8952) Err bitreich.org 70 i- (#x8FDCF2 #x8957) Err bitreich.org 70 i- (#x8FDCF3 #x895A) Err bitreich.org 70 i- (#x8FDCF4 #x895B) Err bitreich.org 70 i- (#x8FDCF5 #x895C) Err bitreich.org 70 i- (#x8FDCF6 #x8961) Err bitreich.org 70 i- (#x8FDCF7 #x8962) Err bitreich.org 70 i- (#x8FDCF8 #x8963) Err bitreich.org 70 i- (#x8FDCF9 #x896B) Err bitreich.org 70 i- (#x8FDCFA #x896E) Err bitreich.org 70 i- (#x8FDCFB #x8970) Err bitreich.org 70 i- (#x8FDCFC #x8973) Err bitreich.org 70 i- (#x8FDCFD #x8975) Err bitreich.org 70 i- (#x8FDCFE #x897A) Err bitreich.org 70 i- (#x8FDDA1 #x897B) Err bitreich.org 70 i- (#x8FDDA2 #x897C) Err bitreich.org 70 i- (#x8FDDA3 #x897D) Err bitreich.org 70 i- (#x8FDDA4 #x8989) Err bitreich.org 70 i- (#x8FDDA5 #x898D) Err bitreich.org 70 i- (#x8FDDA6 #x8990) Err bitreich.org 70 i- (#x8FDDA7 #x8994) Err bitreich.org 70 i- (#x8FDDA8 #x8995) Err bitreich.org 70 i- (#x8FDDA9 #x899B) Err bitreich.org 70 i- (#x8FDDAA #x899C) Err bitreich.org 70 i- (#x8FDDAB #x899F) Err bitreich.org 70 i- (#x8FDDAC #x89A0) Err bitreich.org 70 i- (#x8FDDAD #x89A5) Err bitreich.org 70 i- (#x8FDDAE #x89B0) Err bitreich.org 70 i- (#x8FDDAF #x89B4) Err bitreich.org 70 i- (#x8FDDB0 #x89B5) Err bitreich.org 70 i- (#x8FDDB1 #x89B6) Err bitreich.org 70 i- (#x8FDDB2 #x89B7) Err bitreich.org 70 i- (#x8FDDB3 #x89BC) Err bitreich.org 70 i- (#x8FDDB4 #x89D4) Err bitreich.org 70 i- (#x8FDDB5 #x89D5) Err bitreich.org 70 i- (#x8FDDB6 #x89D6) Err bitreich.org 70 i- (#x8FDDB7 #x89D7) Err bitreich.org 70 i- (#x8FDDB8 #x89D8) Err bitreich.org 70 i- (#x8FDDB9 #x89E5) Err bitreich.org 70 i- (#x8FDDBA #x89E9) Err bitreich.org 70 i- (#x8FDDBB #x89EB) Err bitreich.org 70 i- (#x8FDDBC #x89ED) Err bitreich.org 70 i- (#x8FDDBD #x89F1) Err bitreich.org 70 i- (#x8FDDBE #x89F3) Err bitreich.org 70 i- (#x8FDDBF #x89F6) Err bitreich.org 70 i- (#x8FDDC0 #x89F9) Err bitreich.org 70 i- (#x8FDDC1 #x89FD) Err bitreich.org 70 i- (#x8FDDC2 #x89FF) Err bitreich.org 70 i- (#x8FDDC3 #x8A04) Err bitreich.org 70 i- (#x8FDDC4 #x8A05) Err bitreich.org 70 i- (#x8FDDC5 #x8A07) Err bitreich.org 70 i- (#x8FDDC6 #x8A0F) Err bitreich.org 70 i- (#x8FDDC7 #x8A11) Err bitreich.org 70 i- (#x8FDDC8 #x8A12) Err bitreich.org 70 i- (#x8FDDC9 #x8A14) Err bitreich.org 70 i- (#x8FDDCA #x8A15) Err bitreich.org 70 i- (#x8FDDCB #x8A1E) Err bitreich.org 70 i- (#x8FDDCC #x8A20) Err bitreich.org 70 i- (#x8FDDCD #x8A22) Err bitreich.org 70 i- (#x8FDDCE #x8A24) Err bitreich.org 70 i- (#x8FDDCF #x8A26) Err bitreich.org 70 i- (#x8FDDD0 #x8A2B) Err bitreich.org 70 i- (#x8FDDD1 #x8A2C) Err bitreich.org 70 i- (#x8FDDD2 #x8A2F) Err bitreich.org 70 i- (#x8FDDD3 #x8A35) Err bitreich.org 70 i- (#x8FDDD4 #x8A37) Err bitreich.org 70 i- (#x8FDDD5 #x8A3D) Err bitreich.org 70 i- (#x8FDDD6 #x8A3E) Err bitreich.org 70 i- (#x8FDDD7 #x8A40) Err bitreich.org 70 i- (#x8FDDD8 #x8A43) Err bitreich.org 70 i- (#x8FDDD9 #x8A45) Err bitreich.org 70 i- (#x8FDDDA #x8A47) Err bitreich.org 70 i- (#x8FDDDB #x8A49) Err bitreich.org 70 i- (#x8FDDDC #x8A4D) Err bitreich.org 70 i- (#x8FDDDD #x8A4E) Err bitreich.org 70 i- (#x8FDDDE #x8A53) Err bitreich.org 70 i- (#x8FDDDF #x8A56) Err bitreich.org 70 i- (#x8FDDE0 #x8A57) Err bitreich.org 70 i- (#x8FDDE1 #x8A58) Err bitreich.org 70 i- (#x8FDDE2 #x8A5C) Err bitreich.org 70 i- (#x8FDDE3 #x8A5D) Err bitreich.org 70 i- (#x8FDDE4 #x8A61) Err bitreich.org 70 i- (#x8FDDE5 #x8A65) Err bitreich.org 70 i- (#x8FDDE6 #x8A67) Err bitreich.org 70 i- (#x8FDDE7 #x8A75) Err bitreich.org 70 i- (#x8FDDE8 #x8A76) Err bitreich.org 70 i- (#x8FDDE9 #x8A77) Err bitreich.org 70 i- (#x8FDDEA #x8A79) Err bitreich.org 70 i- (#x8FDDEB #x8A7A) Err bitreich.org 70 i- (#x8FDDEC #x8A7B) Err bitreich.org 70 i- (#x8FDDED #x8A7E) Err bitreich.org 70 i- (#x8FDDEE #x8A7F) Err bitreich.org 70 i- (#x8FDDEF #x8A80) Err bitreich.org 70 i- (#x8FDDF0 #x8A83) Err bitreich.org 70 i- (#x8FDDF1 #x8A86) Err bitreich.org 70 i- (#x8FDDF2 #x8A8B) Err bitreich.org 70 i- (#x8FDDF3 #x8A8F) Err bitreich.org 70 i- (#x8FDDF4 #x8A90) Err bitreich.org 70 i- (#x8FDDF5 #x8A92) Err bitreich.org 70 i- (#x8FDDF6 #x8A96) Err bitreich.org 70 i- (#x8FDDF7 #x8A97) Err bitreich.org 70 i- (#x8FDDF8 #x8A99) Err bitreich.org 70 i- (#x8FDDF9 #x8A9F) Err bitreich.org 70 i- (#x8FDDFA #x8AA7) Err bitreich.org 70 i- (#x8FDDFB #x8AA9) Err bitreich.org 70 i- (#x8FDDFC #x8AAE) Err bitreich.org 70 i- (#x8FDDFD #x8AAF) Err bitreich.org 70 i- (#x8FDDFE #x8AB3) Err bitreich.org 70 i- (#x8FDEA1 #x8AB6) Err bitreich.org 70 i- (#x8FDEA2 #x8AB7) Err bitreich.org 70 i- (#x8FDEA3 #x8ABB) Err bitreich.org 70 i- (#x8FDEA4 #x8ABE) Err bitreich.org 70 i- (#x8FDEA5 #x8AC3) Err bitreich.org 70 i- (#x8FDEA6 #x8AC6) Err bitreich.org 70 i- (#x8FDEA7 #x8AC8) Err bitreich.org 70 i- (#x8FDEA8 #x8AC9) Err bitreich.org 70 i- (#x8FDEA9 #x8ACA) Err bitreich.org 70 i- (#x8FDEAA #x8AD1) Err bitreich.org 70 i- (#x8FDEAB #x8AD3) Err bitreich.org 70 i- (#x8FDEAC #x8AD4) Err bitreich.org 70 i- (#x8FDEAD #x8AD5) Err bitreich.org 70 i- (#x8FDEAE #x8AD7) Err bitreich.org 70 i- (#x8FDEAF #x8ADD) Err bitreich.org 70 i- (#x8FDEB0 #x8ADF) Err bitreich.org 70 i- (#x8FDEB1 #x8AEC) Err bitreich.org 70 i- (#x8FDEB2 #x8AF0) Err bitreich.org 70 i- (#x8FDEB3 #x8AF4) Err bitreich.org 70 i- (#x8FDEB4 #x8AF5) Err bitreich.org 70 i- (#x8FDEB5 #x8AF6) Err bitreich.org 70 i- (#x8FDEB6 #x8AFC) Err bitreich.org 70 i- (#x8FDEB7 #x8AFF) Err bitreich.org 70 i- (#x8FDEB8 #x8B05) Err bitreich.org 70 i- (#x8FDEB9 #x8B06) Err bitreich.org 70 i- (#x8FDEBA #x8B0B) Err bitreich.org 70 i- (#x8FDEBB #x8B11) Err bitreich.org 70 i- (#x8FDEBC #x8B1C) Err bitreich.org 70 i- (#x8FDEBD #x8B1E) Err bitreich.org 70 i- (#x8FDEBE #x8B1F) Err bitreich.org 70 i- (#x8FDEBF #x8B0A) Err bitreich.org 70 i- (#x8FDEC0 #x8B2D) Err bitreich.org 70 i- (#x8FDEC1 #x8B30) Err bitreich.org 70 i- (#x8FDEC2 #x8B37) Err bitreich.org 70 i- (#x8FDEC3 #x8B3C) Err bitreich.org 70 i- (#x8FDEC4 #x8B42) Err bitreich.org 70 i- (#x8FDEC5 #x8B43) Err bitreich.org 70 i- (#x8FDEC6 #x8B44) Err bitreich.org 70 i- (#x8FDEC7 #x8B45) Err bitreich.org 70 i- (#x8FDEC8 #x8B46) Err bitreich.org 70 i- (#x8FDEC9 #x8B48) Err bitreich.org 70 i- (#x8FDECA #x8B52) Err bitreich.org 70 i- (#x8FDECB #x8B53) Err bitreich.org 70 i- (#x8FDECC #x8B54) Err bitreich.org 70 i- (#x8FDECD #x8B59) Err bitreich.org 70 i- (#x8FDECE #x8B4D) Err bitreich.org 70 i- (#x8FDECF #x8B5E) Err bitreich.org 70 i- (#x8FDED0 #x8B63) Err bitreich.org 70 i- (#x8FDED1 #x8B6D) Err bitreich.org 70 i- (#x8FDED2 #x8B76) Err bitreich.org 70 i- (#x8FDED3 #x8B78) Err bitreich.org 70 i- (#x8FDED4 #x8B79) Err bitreich.org 70 i- (#x8FDED5 #x8B7C) Err bitreich.org 70 i- (#x8FDED6 #x8B7E) Err bitreich.org 70 i- (#x8FDED7 #x8B81) Err bitreich.org 70 i- (#x8FDED8 #x8B84) Err bitreich.org 70 i- (#x8FDED9 #x8B85) Err bitreich.org 70 i- (#x8FDEDA #x8B8B) Err bitreich.org 70 i- (#x8FDEDB #x8B8D) Err bitreich.org 70 i- (#x8FDEDC #x8B8F) Err bitreich.org 70 i- (#x8FDEDD #x8B94) Err bitreich.org 70 i- (#x8FDEDE #x8B95) Err bitreich.org 70 i- (#x8FDEDF #x8B9C) Err bitreich.org 70 i- (#x8FDEE0 #x8B9E) Err bitreich.org 70 i- (#x8FDEE1 #x8B9F) Err bitreich.org 70 i- (#x8FDEE2 #x8C38) Err bitreich.org 70 i- (#x8FDEE3 #x8C39) Err bitreich.org 70 i- (#x8FDEE4 #x8C3D) Err bitreich.org 70 i- (#x8FDEE5 #x8C3E) Err bitreich.org 70 i- (#x8FDEE6 #x8C45) Err bitreich.org 70 i- (#x8FDEE7 #x8C47) Err bitreich.org 70 i- (#x8FDEE8 #x8C49) Err bitreich.org 70 i- (#x8FDEE9 #x8C4B) Err bitreich.org 70 i- (#x8FDEEA #x8C4F) Err bitreich.org 70 i- (#x8FDEEB #x8C51) Err bitreich.org 70 i- (#x8FDEEC #x8C53) Err bitreich.org 70 i- (#x8FDEED #x8C54) Err bitreich.org 70 i- (#x8FDEEE #x8C57) Err bitreich.org 70 i- (#x8FDEEF #x8C58) Err bitreich.org 70 i- (#x8FDEF0 #x8C5B) Err bitreich.org 70 i- (#x8FDEF1 #x8C5D) Err bitreich.org 70 i- (#x8FDEF2 #x8C59) Err bitreich.org 70 i- (#x8FDEF3 #x8C63) Err bitreich.org 70 i- (#x8FDEF4 #x8C64) Err bitreich.org 70 i- (#x8FDEF5 #x8C66) Err bitreich.org 70 i- (#x8FDEF6 #x8C68) Err bitreich.org 70 i- (#x8FDEF7 #x8C69) Err bitreich.org 70 i- (#x8FDEF8 #x8C6D) Err bitreich.org 70 i- (#x8FDEF9 #x8C73) Err bitreich.org 70 i- (#x8FDEFA #x8C75) Err bitreich.org 70 i- (#x8FDEFB #x8C76) Err bitreich.org 70 i- (#x8FDEFC #x8C7B) Err bitreich.org 70 i- (#x8FDEFD #x8C7E) Err bitreich.org 70 i- (#x8FDEFE #x8C86) Err bitreich.org 70 i- (#x8FDFA1 #x8C87) Err bitreich.org 70 i- (#x8FDFA2 #x8C8B) Err bitreich.org 70 i- (#x8FDFA3 #x8C90) Err bitreich.org 70 i- (#x8FDFA4 #x8C92) Err bitreich.org 70 i- (#x8FDFA5 #x8C93) Err bitreich.org 70 i- (#x8FDFA6 #x8C99) Err bitreich.org 70 i- (#x8FDFA7 #x8C9B) Err bitreich.org 70 i- (#x8FDFA8 #x8C9C) Err bitreich.org 70 i- (#x8FDFA9 #x8CA4) Err bitreich.org 70 i- (#x8FDFAA #x8CB9) Err bitreich.org 70 i- (#x8FDFAB #x8CBA) Err bitreich.org 70 i- (#x8FDFAC #x8CC5) Err bitreich.org 70 i- (#x8FDFAD #x8CC6) Err bitreich.org 70 i- (#x8FDFAE #x8CC9) Err bitreich.org 70 i- (#x8FDFAF #x8CCB) Err bitreich.org 70 i- (#x8FDFB0 #x8CCF) Err bitreich.org 70 i- (#x8FDFB1 #x8CD6) Err bitreich.org 70 i- (#x8FDFB2 #x8CD5) Err bitreich.org 70 i- (#x8FDFB3 #x8CD9) Err bitreich.org 70 i- (#x8FDFB4 #x8CDD) Err bitreich.org 70 i- (#x8FDFB5 #x8CE1) Err bitreich.org 70 i- (#x8FDFB6 #x8CE8) Err bitreich.org 70 i- (#x8FDFB7 #x8CEC) Err bitreich.org 70 i- (#x8FDFB8 #x8CEF) Err bitreich.org 70 i- (#x8FDFB9 #x8CF0) Err bitreich.org 70 i- (#x8FDFBA #x8CF2) Err bitreich.org 70 i- (#x8FDFBB #x8CF5) Err bitreich.org 70 i- (#x8FDFBC #x8CF7) Err bitreich.org 70 i- (#x8FDFBD #x8CF8) Err bitreich.org 70 i- (#x8FDFBE #x8CFE) Err bitreich.org 70 i- (#x8FDFBF #x8CFF) Err bitreich.org 70 i- (#x8FDFC0 #x8D01) Err bitreich.org 70 i- (#x8FDFC1 #x8D03) Err bitreich.org 70 i- (#x8FDFC2 #x8D09) Err bitreich.org 70 i- (#x8FDFC3 #x8D12) Err bitreich.org 70 i- (#x8FDFC4 #x8D17) Err bitreich.org 70 i- (#x8FDFC5 #x8D1B) Err bitreich.org 70 i- (#x8FDFC6 #x8D65) Err bitreich.org 70 i- (#x8FDFC7 #x8D69) Err bitreich.org 70 i- (#x8FDFC8 #x8D6C) Err bitreich.org 70 i- (#x8FDFC9 #x8D6E) Err bitreich.org 70 i- (#x8FDFCA #x8D7F) Err bitreich.org 70 i- (#x8FDFCB #x8D82) Err bitreich.org 70 i- (#x8FDFCC #x8D84) Err bitreich.org 70 i- (#x8FDFCD #x8D88) Err bitreich.org 70 i- (#x8FDFCE #x8D8D) Err bitreich.org 70 i- (#x8FDFCF #x8D90) Err bitreich.org 70 i- (#x8FDFD0 #x8D91) Err bitreich.org 70 i- (#x8FDFD1 #x8D95) Err bitreich.org 70 i- (#x8FDFD2 #x8D9E) Err bitreich.org 70 i- (#x8FDFD3 #x8D9F) Err bitreich.org 70 i- (#x8FDFD4 #x8DA0) Err bitreich.org 70 i- (#x8FDFD5 #x8DA6) Err bitreich.org 70 i- (#x8FDFD6 #x8DAB) Err bitreich.org 70 i- (#x8FDFD7 #x8DAC) Err bitreich.org 70 i- (#x8FDFD8 #x8DAF) Err bitreich.org 70 i- (#x8FDFD9 #x8DB2) Err bitreich.org 70 i- (#x8FDFDA #x8DB5) Err bitreich.org 70 i- (#x8FDFDB #x8DB7) Err bitreich.org 70 i- (#x8FDFDC #x8DB9) Err bitreich.org 70 i- (#x8FDFDD #x8DBB) Err bitreich.org 70 i- (#x8FDFDE #x8DC0) Err bitreich.org 70 i- (#x8FDFDF #x8DC5) Err bitreich.org 70 i- (#x8FDFE0 #x8DC6) Err bitreich.org 70 i- (#x8FDFE1 #x8DC7) Err bitreich.org 70 i- (#x8FDFE2 #x8DC8) Err bitreich.org 70 i- (#x8FDFE3 #x8DCA) Err bitreich.org 70 i- (#x8FDFE4 #x8DCE) Err bitreich.org 70 i- (#x8FDFE5 #x8DD1) Err bitreich.org 70 i- (#x8FDFE6 #x8DD4) Err bitreich.org 70 i- (#x8FDFE7 #x8DD5) Err bitreich.org 70 i- (#x8FDFE8 #x8DD7) Err bitreich.org 70 i- (#x8FDFE9 #x8DD9) Err bitreich.org 70 i- (#x8FDFEA #x8DE4) Err bitreich.org 70 i- (#x8FDFEB #x8DE5) Err bitreich.org 70 i- (#x8FDFEC #x8DE7) Err bitreich.org 70 i- (#x8FDFED #x8DEC) Err bitreich.org 70 i- (#x8FDFEE #x8DF0) Err bitreich.org 70 i- (#x8FDFEF #x8DBC) Err bitreich.org 70 i- (#x8FDFF0 #x8DF1) Err bitreich.org 70 i- (#x8FDFF1 #x8DF2) Err bitreich.org 70 i- (#x8FDFF2 #x8DF4) Err bitreich.org 70 i- (#x8FDFF3 #x8DFD) Err bitreich.org 70 i- (#x8FDFF4 #x8E01) Err bitreich.org 70 i- (#x8FDFF5 #x8E04) Err bitreich.org 70 i- (#x8FDFF6 #x8E05) Err bitreich.org 70 i- (#x8FDFF7 #x8E06) Err bitreich.org 70 i- (#x8FDFF8 #x8E0B) Err bitreich.org 70 i- (#x8FDFF9 #x8E11) Err bitreich.org 70 i- (#x8FDFFA #x8E14) Err bitreich.org 70 i- (#x8FDFFB #x8E16) Err bitreich.org 70 i- (#x8FDFFC #x8E20) Err bitreich.org 70 i- (#x8FDFFD #x8E21) Err bitreich.org 70 i- (#x8FDFFE #x8E22) Err bitreich.org 70 i- (#x8FE0A1 #x8E23) Err bitreich.org 70 i- (#x8FE0A2 #x8E26) Err bitreich.org 70 i- (#x8FE0A3 #x8E27) Err bitreich.org 70 i- (#x8FE0A4 #x8E31) Err bitreich.org 70 i- (#x8FE0A5 #x8E33) Err bitreich.org 70 i- (#x8FE0A6 #x8E36) Err bitreich.org 70 i- (#x8FE0A7 #x8E37) Err bitreich.org 70 i- (#x8FE0A8 #x8E38) Err bitreich.org 70 i- (#x8FE0A9 #x8E39) Err bitreich.org 70 i- (#x8FE0AA #x8E3D) Err bitreich.org 70 i- (#x8FE0AB #x8E40) Err bitreich.org 70 i- (#x8FE0AC #x8E41) Err bitreich.org 70 i- (#x8FE0AD #x8E4B) Err bitreich.org 70 i- (#x8FE0AE #x8E4D) Err bitreich.org 70 i- (#x8FE0AF #x8E4E) Err bitreich.org 70 i- (#x8FE0B0 #x8E4F) Err bitreich.org 70 i- (#x8FE0B1 #x8E54) Err bitreich.org 70 i- (#x8FE0B2 #x8E5B) Err bitreich.org 70 i- (#x8FE0B3 #x8E5C) Err bitreich.org 70 i- (#x8FE0B4 #x8E5D) Err bitreich.org 70 i- (#x8FE0B5 #x8E5E) Err bitreich.org 70 i- (#x8FE0B6 #x8E61) Err bitreich.org 70 i- (#x8FE0B7 #x8E62) Err bitreich.org 70 i- (#x8FE0B8 #x8E69) Err bitreich.org 70 i- (#x8FE0B9 #x8E6C) Err bitreich.org 70 i- (#x8FE0BA #x8E6D) Err bitreich.org 70 i- (#x8FE0BB #x8E6F) Err bitreich.org 70 i- (#x8FE0BC #x8E70) Err bitreich.org 70 i- (#x8FE0BD #x8E71) Err bitreich.org 70 i- (#x8FE0BE #x8E79) Err bitreich.org 70 i- (#x8FE0BF #x8E7A) Err bitreich.org 70 i- (#x8FE0C0 #x8E7B) Err bitreich.org 70 i- (#x8FE0C1 #x8E82) Err bitreich.org 70 i- (#x8FE0C2 #x8E83) Err bitreich.org 70 i- (#x8FE0C3 #x8E89) Err bitreich.org 70 i- (#x8FE0C4 #x8E90) Err bitreich.org 70 i- (#x8FE0C5 #x8E92) Err bitreich.org 70 i- (#x8FE0C6 #x8E95) Err bitreich.org 70 i- (#x8FE0C7 #x8E9A) Err bitreich.org 70 i- (#x8FE0C8 #x8E9B) Err bitreich.org 70 i- (#x8FE0C9 #x8E9D) Err bitreich.org 70 i- (#x8FE0CA #x8E9E) Err bitreich.org 70 i- (#x8FE0CB #x8EA2) Err bitreich.org 70 i- (#x8FE0CC #x8EA7) Err bitreich.org 70 i- (#x8FE0CD #x8EA9) Err bitreich.org 70 i- (#x8FE0CE #x8EAD) Err bitreich.org 70 i- (#x8FE0CF #x8EAE) Err bitreich.org 70 i- (#x8FE0D0 #x8EB3) Err bitreich.org 70 i- (#x8FE0D1 #x8EB5) Err bitreich.org 70 i- (#x8FE0D2 #x8EBA) Err bitreich.org 70 i- (#x8FE0D3 #x8EBB) Err bitreich.org 70 i- (#x8FE0D4 #x8EC0) Err bitreich.org 70 i- (#x8FE0D5 #x8EC1) Err bitreich.org 70 i- (#x8FE0D6 #x8EC3) Err bitreich.org 70 i- (#x8FE0D7 #x8EC4) Err bitreich.org 70 i- (#x8FE0D8 #x8EC7) Err bitreich.org 70 i- (#x8FE0D9 #x8ECF) Err bitreich.org 70 i- (#x8FE0DA #x8ED1) Err bitreich.org 70 i- (#x8FE0DB #x8ED4) Err bitreich.org 70 i- (#x8FE0DC #x8EDC) Err bitreich.org 70 i- (#x8FE0DD #x8EE8) Err bitreich.org 70 i- (#x8FE0DE #x8EEE) Err bitreich.org 70 i- (#x8FE0DF #x8EF0) Err bitreich.org 70 i- (#x8FE0E0 #x8EF1) Err bitreich.org 70 i- (#x8FE0E1 #x8EF7) Err bitreich.org 70 i- (#x8FE0E2 #x8EF9) Err bitreich.org 70 i- (#x8FE0E3 #x8EFA) Err bitreich.org 70 i- (#x8FE0E4 #x8EED) Err bitreich.org 70 i- (#x8FE0E5 #x8F00) Err bitreich.org 70 i- (#x8FE0E6 #x8F02) Err bitreich.org 70 i- (#x8FE0E7 #x8F07) Err bitreich.org 70 i- (#x8FE0E8 #x8F08) Err bitreich.org 70 i- (#x8FE0E9 #x8F0F) Err bitreich.org 70 i- (#x8FE0EA #x8F10) Err bitreich.org 70 i- (#x8FE0EB #x8F16) Err bitreich.org 70 i- (#x8FE0EC #x8F17) Err bitreich.org 70 i- (#x8FE0ED #x8F18) Err bitreich.org 70 i- (#x8FE0EE #x8F1E) Err bitreich.org 70 i- (#x8FE0EF #x8F20) Err bitreich.org 70 i- (#x8FE0F0 #x8F21) Err bitreich.org 70 i- (#x8FE0F1 #x8F23) Err bitreich.org 70 i- (#x8FE0F2 #x8F25) Err bitreich.org 70 i- (#x8FE0F3 #x8F27) Err bitreich.org 70 i- (#x8FE0F4 #x8F28) Err bitreich.org 70 i- (#x8FE0F5 #x8F2C) Err bitreich.org 70 i- (#x8FE0F6 #x8F2D) Err bitreich.org 70 i- (#x8FE0F7 #x8F2E) Err bitreich.org 70 i- (#x8FE0F8 #x8F34) Err bitreich.org 70 i- (#x8FE0F9 #x8F35) Err bitreich.org 70 i- (#x8FE0FA #x8F36) Err bitreich.org 70 i- (#x8FE0FB #x8F37) Err bitreich.org 70 i- (#x8FE0FC #x8F3A) Err bitreich.org 70 i- (#x8FE0FD #x8F40) Err bitreich.org 70 i- (#x8FE0FE #x8F41) Err bitreich.org 70 i- (#x8FE1A1 #x8F43) Err bitreich.org 70 i- (#x8FE1A2 #x8F47) Err bitreich.org 70 i- (#x8FE1A3 #x8F4F) Err bitreich.org 70 i- (#x8FE1A4 #x8F51) Err bitreich.org 70 i- (#x8FE1A5 #x8F52) Err bitreich.org 70 i- (#x8FE1A6 #x8F53) Err bitreich.org 70 i- (#x8FE1A7 #x8F54) Err bitreich.org 70 i- (#x8FE1A8 #x8F55) Err bitreich.org 70 i- (#x8FE1A9 #x8F58) Err bitreich.org 70 i- (#x8FE1AA #x8F5D) Err bitreich.org 70 i- (#x8FE1AB #x8F5E) Err bitreich.org 70 i- (#x8FE1AC #x8F65) Err bitreich.org 70 i- (#x8FE1AD #x8F9D) Err bitreich.org 70 i- (#x8FE1AE #x8FA0) Err bitreich.org 70 i- (#x8FE1AF #x8FA1) Err bitreich.org 70 i- (#x8FE1B0 #x8FA4) Err bitreich.org 70 i- (#x8FE1B1 #x8FA5) Err bitreich.org 70 i- (#x8FE1B2 #x8FA6) Err bitreich.org 70 i- (#x8FE1B3 #x8FB5) Err bitreich.org 70 i- (#x8FE1B4 #x8FB6) Err bitreich.org 70 i- (#x8FE1B5 #x8FB8) Err bitreich.org 70 i- (#x8FE1B6 #x8FBE) Err bitreich.org 70 i- (#x8FE1B7 #x8FC0) Err bitreich.org 70 i- (#x8FE1B8 #x8FC1) Err bitreich.org 70 i- (#x8FE1B9 #x8FC6) Err bitreich.org 70 i- (#x8FE1BA #x8FCA) Err bitreich.org 70 i- (#x8FE1BB #x8FCB) Err bitreich.org 70 i- (#x8FE1BC #x8FCD) Err bitreich.org 70 i- (#x8FE1BD #x8FD0) Err bitreich.org 70 i- (#x8FE1BE #x8FD2) Err bitreich.org 70 i- (#x8FE1BF #x8FD3) Err bitreich.org 70 i- (#x8FE1C0 #x8FD5) Err bitreich.org 70 i- (#x8FE1C1 #x8FE0) Err bitreich.org 70 i- (#x8FE1C2 #x8FE3) Err bitreich.org 70 i- (#x8FE1C3 #x8FE4) Err bitreich.org 70 i- (#x8FE1C4 #x8FE8) Err bitreich.org 70 i- (#x8FE1C5 #x8FEE) Err bitreich.org 70 i- (#x8FE1C6 #x8FF1) Err bitreich.org 70 i- (#x8FE1C7 #x8FF5) Err bitreich.org 70 i- (#x8FE1C8 #x8FF6) Err bitreich.org 70 i- (#x8FE1C9 #x8FFB) Err bitreich.org 70 i- (#x8FE1CA #x8FFE) Err bitreich.org 70 i- (#x8FE1CB #x9002) Err bitreich.org 70 i- (#x8FE1CC #x9004) Err bitreich.org 70 i- (#x8FE1CD #x9008) Err bitreich.org 70 i- (#x8FE1CE #x900C) Err bitreich.org 70 i- (#x8FE1CF #x9018) Err bitreich.org 70 i- (#x8FE1D0 #x901B) Err bitreich.org 70 i- (#x8FE1D1 #x9028) Err bitreich.org 70 i- (#x8FE1D2 #x9029) Err bitreich.org 70 i- (#x8FE1D3 #x902F) Err bitreich.org 70 i- (#x8FE1D4 #x902A) Err bitreich.org 70 i- (#x8FE1D5 #x902C) Err bitreich.org 70 i- (#x8FE1D6 #x902D) Err bitreich.org 70 i- (#x8FE1D7 #x9033) Err bitreich.org 70 i- (#x8FE1D8 #x9034) Err bitreich.org 70 i- (#x8FE1D9 #x9037) Err bitreich.org 70 i- (#x8FE1DA #x903F) Err bitreich.org 70 i- (#x8FE1DB #x9043) Err bitreich.org 70 i- (#x8FE1DC #x9044) Err bitreich.org 70 i- (#x8FE1DD #x904C) Err bitreich.org 70 i- (#x8FE1DE #x905B) Err bitreich.org 70 i- (#x8FE1DF #x905D) Err bitreich.org 70 i- (#x8FE1E0 #x9062) Err bitreich.org 70 i- (#x8FE1E1 #x9066) Err bitreich.org 70 i- (#x8FE1E2 #x9067) Err bitreich.org 70 i- (#x8FE1E3 #x906C) Err bitreich.org 70 i- (#x8FE1E4 #x9070) Err bitreich.org 70 i- (#x8FE1E5 #x9074) Err bitreich.org 70 i- (#x8FE1E6 #x9079) Err bitreich.org 70 i- (#x8FE1E7 #x9085) Err bitreich.org 70 i- (#x8FE1E8 #x9088) Err bitreich.org 70 i- (#x8FE1E9 #x908B) Err bitreich.org 70 i- (#x8FE1EA #x908C) Err bitreich.org 70 i- (#x8FE1EB #x908E) Err bitreich.org 70 i- (#x8FE1EC #x9090) Err bitreich.org 70 i- (#x8FE1ED #x9095) Err bitreich.org 70 i- (#x8FE1EE #x9097) Err bitreich.org 70 i- (#x8FE1EF #x9098) Err bitreich.org 70 i- (#x8FE1F0 #x9099) Err bitreich.org 70 i- (#x8FE1F1 #x909B) Err bitreich.org 70 i- (#x8FE1F2 #x90A0) Err bitreich.org 70 i- (#x8FE1F3 #x90A1) Err bitreich.org 70 i- (#x8FE1F4 #x90A2) Err bitreich.org 70 i- (#x8FE1F5 #x90A5) Err bitreich.org 70 i- (#x8FE1F6 #x90B0) Err bitreich.org 70 i- (#x8FE1F7 #x90B2) Err bitreich.org 70 i- (#x8FE1F8 #x90B3) Err bitreich.org 70 i- (#x8FE1F9 #x90B4) Err bitreich.org 70 i- (#x8FE1FA #x90B6) Err bitreich.org 70 i- (#x8FE1FB #x90BD) Err bitreich.org 70 i- (#x8FE1FC #x90CC) Err bitreich.org 70 i- (#x8FE1FD #x90BE) Err bitreich.org 70 i- (#x8FE1FE #x90C3) Err bitreich.org 70 i- (#x8FE2A1 #x90C4) Err bitreich.org 70 i- (#x8FE2A2 #x90C5) Err bitreich.org 70 i- (#x8FE2A3 #x90C7) Err bitreich.org 70 i- (#x8FE2A4 #x90C8) Err bitreich.org 70 i- (#x8FE2A5 #x90D5) Err bitreich.org 70 i- (#x8FE2A6 #x90D7) Err bitreich.org 70 i- (#x8FE2A7 #x90D8) Err bitreich.org 70 i- (#x8FE2A8 #x90D9) Err bitreich.org 70 i- (#x8FE2A9 #x90DC) Err bitreich.org 70 i- (#x8FE2AA #x90DD) Err bitreich.org 70 i- (#x8FE2AB #x90DF) Err bitreich.org 70 i- (#x8FE2AC #x90E5) Err bitreich.org 70 i- (#x8FE2AD #x90D2) Err bitreich.org 70 i- (#x8FE2AE #x90F6) Err bitreich.org 70 i- (#x8FE2AF #x90EB) Err bitreich.org 70 i- (#x8FE2B0 #x90EF) Err bitreich.org 70 i- (#x8FE2B1 #x90F0) Err bitreich.org 70 i- (#x8FE2B2 #x90F4) Err bitreich.org 70 i- (#x8FE2B3 #x90FE) Err bitreich.org 70 i- (#x8FE2B4 #x90FF) Err bitreich.org 70 i- (#x8FE2B5 #x9100) Err bitreich.org 70 i- (#x8FE2B6 #x9104) Err bitreich.org 70 i- (#x8FE2B7 #x9105) Err bitreich.org 70 i- (#x8FE2B8 #x9106) Err bitreich.org 70 i- (#x8FE2B9 #x9108) Err bitreich.org 70 i- (#x8FE2BA #x910D) Err bitreich.org 70 i- (#x8FE2BB #x9110) Err bitreich.org 70 i- (#x8FE2BC #x9114) Err bitreich.org 70 i- (#x8FE2BD #x9116) Err bitreich.org 70 i- (#x8FE2BE #x9117) Err bitreich.org 70 i- (#x8FE2BF #x9118) Err bitreich.org 70 i- (#x8FE2C0 #x911A) Err bitreich.org 70 i- (#x8FE2C1 #x911C) Err bitreich.org 70 i- (#x8FE2C2 #x911E) Err bitreich.org 70 i- (#x8FE2C3 #x9120) Err bitreich.org 70 i- (#x8FE2C4 #x9125) Err bitreich.org 70 i- (#x8FE2C5 #x9122) Err bitreich.org 70 i- (#x8FE2C6 #x9123) Err bitreich.org 70 i- (#x8FE2C7 #x9127) Err bitreich.org 70 i- (#x8FE2C8 #x9129) Err bitreich.org 70 i- (#x8FE2C9 #x912E) Err bitreich.org 70 i- (#x8FE2CA #x912F) Err bitreich.org 70 i- (#x8FE2CB #x9131) Err bitreich.org 70 i- (#x8FE2CC #x9134) Err bitreich.org 70 i- (#x8FE2CD #x9136) Err bitreich.org 70 i- (#x8FE2CE #x9137) Err bitreich.org 70 i- (#x8FE2CF #x9139) Err bitreich.org 70 i- (#x8FE2D0 #x913A) Err bitreich.org 70 i- (#x8FE2D1 #x913C) Err bitreich.org 70 i- (#x8FE2D2 #x913D) Err bitreich.org 70 i- (#x8FE2D3 #x9143) Err bitreich.org 70 i- (#x8FE2D4 #x9147) Err bitreich.org 70 i- (#x8FE2D5 #x9148) Err bitreich.org 70 i- (#x8FE2D6 #x914F) Err bitreich.org 70 i- (#x8FE2D7 #x9153) Err bitreich.org 70 i- (#x8FE2D8 #x9157) Err bitreich.org 70 i- (#x8FE2D9 #x9159) Err bitreich.org 70 i- (#x8FE2DA #x915A) Err bitreich.org 70 i- (#x8FE2DB #x915B) Err bitreich.org 70 i- (#x8FE2DC #x9161) Err bitreich.org 70 i- (#x8FE2DD #x9164) Err bitreich.org 70 i- (#x8FE2DE #x9167) Err bitreich.org 70 i- (#x8FE2DF #x916D) Err bitreich.org 70 i- (#x8FE2E0 #x9174) Err bitreich.org 70 i- (#x8FE2E1 #x9179) Err bitreich.org 70 i- (#x8FE2E2 #x917A) Err bitreich.org 70 i- (#x8FE2E3 #x917B) Err bitreich.org 70 i- (#x8FE2E4 #x9181) Err bitreich.org 70 i- (#x8FE2E5 #x9183) Err bitreich.org 70 i- (#x8FE2E6 #x9185) Err bitreich.org 70 i- (#x8FE2E7 #x9186) Err bitreich.org 70 i- (#x8FE2E8 #x918A) Err bitreich.org 70 i- (#x8FE2E9 #x918E) Err bitreich.org 70 i- (#x8FE2EA #x9191) Err bitreich.org 70 i- (#x8FE2EB #x9193) Err bitreich.org 70 i- (#x8FE2EC #x9194) Err bitreich.org 70 i- (#x8FE2ED #x9195) Err bitreich.org 70 i- (#x8FE2EE #x9198) Err bitreich.org 70 i- (#x8FE2EF #x919E) Err bitreich.org 70 i- (#x8FE2F0 #x91A1) Err bitreich.org 70 i- (#x8FE2F1 #x91A6) Err bitreich.org 70 i- (#x8FE2F2 #x91A8) Err bitreich.org 70 i- (#x8FE2F3 #x91AC) Err bitreich.org 70 i- (#x8FE2F4 #x91AD) Err bitreich.org 70 i- (#x8FE2F5 #x91AE) Err bitreich.org 70 i- (#x8FE2F6 #x91B0) Err bitreich.org 70 i- (#x8FE2F7 #x91B1) Err bitreich.org 70 i- (#x8FE2F8 #x91B2) Err bitreich.org 70 i- (#x8FE2F9 #x91B3) Err bitreich.org 70 i- (#x8FE2FA #x91B6) Err bitreich.org 70 i- (#x8FE2FB #x91BB) Err bitreich.org 70 i- (#x8FE2FC #x91BC) Err bitreich.org 70 i- (#x8FE2FD #x91BD) Err bitreich.org 70 i- (#x8FE2FE #x91BF) Err bitreich.org 70 i- (#x8FE3A1 #x91C2) Err bitreich.org 70 i- (#x8FE3A2 #x91C3) Err bitreich.org 70 i- (#x8FE3A3 #x91C5) Err bitreich.org 70 i- (#x8FE3A4 #x91D3) Err bitreich.org 70 i- (#x8FE3A5 #x91D4) Err bitreich.org 70 i- (#x8FE3A6 #x91D7) Err bitreich.org 70 i- (#x8FE3A7 #x91D9) Err bitreich.org 70 i- (#x8FE3A8 #x91DA) Err bitreich.org 70 i- (#x8FE3A9 #x91DE) Err bitreich.org 70 i- (#x8FE3AA #x91E4) Err bitreich.org 70 i- (#x8FE3AB #x91E5) Err bitreich.org 70 i- (#x8FE3AC #x91E9) Err bitreich.org 70 i- (#x8FE3AD #x91EA) Err bitreich.org 70 i- (#x8FE3AE #x91EC) Err bitreich.org 70 i- (#x8FE3AF #x91ED) Err bitreich.org 70 i- (#x8FE3B0 #x91EE) Err bitreich.org 70 i- (#x8FE3B1 #x91EF) Err bitreich.org 70 i- (#x8FE3B2 #x91F0) Err bitreich.org 70 i- (#x8FE3B3 #x91F1) Err bitreich.org 70 i- (#x8FE3B4 #x91F7) Err bitreich.org 70 i- (#x8FE3B5 #x91F9) Err bitreich.org 70 i- (#x8FE3B6 #x91FB) Err bitreich.org 70 i- (#x8FE3B7 #x91FD) Err bitreich.org 70 i- (#x8FE3B8 #x9200) Err bitreich.org 70 i- (#x8FE3B9 #x9201) Err bitreich.org 70 i- (#x8FE3BA #x9204) Err bitreich.org 70 i- (#x8FE3BB #x9205) Err bitreich.org 70 i- (#x8FE3BC #x9206) Err bitreich.org 70 i- (#x8FE3BD #x9207) Err bitreich.org 70 i- (#x8FE3BE #x9209) Err bitreich.org 70 i- (#x8FE3BF #x920A) Err bitreich.org 70 i- (#x8FE3C0 #x920C) Err bitreich.org 70 i- (#x8FE3C1 #x9210) Err bitreich.org 70 i- (#x8FE3C2 #x9212) Err bitreich.org 70 i- (#x8FE3C3 #x9213) Err bitreich.org 70 i- (#x8FE3C4 #x9216) Err bitreich.org 70 i- (#x8FE3C5 #x9218) Err bitreich.org 70 i- (#x8FE3C6 #x921C) Err bitreich.org 70 i- (#x8FE3C7 #x921D) Err bitreich.org 70 i- (#x8FE3C8 #x9223) Err bitreich.org 70 i- (#x8FE3C9 #x9224) Err bitreich.org 70 i- (#x8FE3CA #x9225) Err bitreich.org 70 i- (#x8FE3CB #x9226) Err bitreich.org 70 i- (#x8FE3CC #x9228) Err bitreich.org 70 i- (#x8FE3CD #x922E) Err bitreich.org 70 i- (#x8FE3CE #x922F) Err bitreich.org 70 i- (#x8FE3CF #x9230) Err bitreich.org 70 i- (#x8FE3D0 #x9233) Err bitreich.org 70 i- (#x8FE3D1 #x9235) Err bitreich.org 70 i- (#x8FE3D2 #x9236) Err bitreich.org 70 i- (#x8FE3D3 #x9238) Err bitreich.org 70 i- (#x8FE3D4 #x9239) Err bitreich.org 70 i- (#x8FE3D5 #x923A) Err bitreich.org 70 i- (#x8FE3D6 #x923C) Err bitreich.org 70 i- (#x8FE3D7 #x923E) Err bitreich.org 70 i- (#x8FE3D8 #x9240) Err bitreich.org 70 i- (#x8FE3D9 #x9242) Err bitreich.org 70 i- (#x8FE3DA #x9243) Err bitreich.org 70 i- (#x8FE3DB #x9246) Err bitreich.org 70 i- (#x8FE3DC #x9247) Err bitreich.org 70 i- (#x8FE3DD #x924A) Err bitreich.org 70 i- (#x8FE3DE #x924D) Err bitreich.org 70 i- (#x8FE3DF #x924E) Err bitreich.org 70 i- (#x8FE3E0 #x924F) Err bitreich.org 70 i- (#x8FE3E1 #x9251) Err bitreich.org 70 i- (#x8FE3E2 #x9258) Err bitreich.org 70 i- (#x8FE3E3 #x9259) Err bitreich.org 70 i- (#x8FE3E4 #x925C) Err bitreich.org 70 i- (#x8FE3E5 #x925D) Err bitreich.org 70 i- (#x8FE3E6 #x9260) Err bitreich.org 70 i- (#x8FE3E7 #x9261) Err bitreich.org 70 i- (#x8FE3E8 #x9265) Err bitreich.org 70 i- (#x8FE3E9 #x9267) Err bitreich.org 70 i- (#x8FE3EA #x9268) Err bitreich.org 70 i- (#x8FE3EB #x9269) Err bitreich.org 70 i- (#x8FE3EC #x926E) Err bitreich.org 70 i- (#x8FE3ED #x926F) Err bitreich.org 70 i- (#x8FE3EE #x9270) Err bitreich.org 70 i- (#x8FE3EF #x9275) Err bitreich.org 70 i- (#x8FE3F0 #x9276) Err bitreich.org 70 i- (#x8FE3F1 #x9277) Err bitreich.org 70 i- (#x8FE3F2 #x9278) Err bitreich.org 70 i- (#x8FE3F3 #x9279) Err bitreich.org 70 i- (#x8FE3F4 #x927B) Err bitreich.org 70 i- (#x8FE3F5 #x927C) Err bitreich.org 70 i- (#x8FE3F6 #x927D) Err bitreich.org 70 i- (#x8FE3F7 #x927F) Err bitreich.org 70 i- (#x8FE3F8 #x9288) Err bitreich.org 70 i- (#x8FE3F9 #x9289) Err bitreich.org 70 i- (#x8FE3FA #x928A) Err bitreich.org 70 i- (#x8FE3FB #x928D) Err bitreich.org 70 i- (#x8FE3FC #x928E) Err bitreich.org 70 i- (#x8FE3FD #x9292) Err bitreich.org 70 i- (#x8FE3FE #x9297) Err bitreich.org 70 i- (#x8FE4A1 #x9299) Err bitreich.org 70 i- (#x8FE4A2 #x929F) Err bitreich.org 70 i- (#x8FE4A3 #x92A0) Err bitreich.org 70 i- (#x8FE4A4 #x92A4) Err bitreich.org 70 i- (#x8FE4A5 #x92A5) Err bitreich.org 70 i- (#x8FE4A6 #x92A7) Err bitreich.org 70 i- (#x8FE4A7 #x92A8) Err bitreich.org 70 i- (#x8FE4A8 #x92AB) Err bitreich.org 70 i- (#x8FE4A9 #x92AF) Err bitreich.org 70 i- (#x8FE4AA #x92B2) Err bitreich.org 70 i- (#x8FE4AB #x92B6) Err bitreich.org 70 i- (#x8FE4AC #x92B8) Err bitreich.org 70 i- (#x8FE4AD #x92BA) Err bitreich.org 70 i- (#x8FE4AE #x92BB) Err bitreich.org 70 i- (#x8FE4AF #x92BC) Err bitreich.org 70 i- (#x8FE4B0 #x92BD) Err bitreich.org 70 i- (#x8FE4B1 #x92BF) Err bitreich.org 70 i- (#x8FE4B2 #x92C0) Err bitreich.org 70 i- (#x8FE4B3 #x92C1) Err bitreich.org 70 i- (#x8FE4B4 #x92C2) Err bitreich.org 70 i- (#x8FE4B5 #x92C3) Err bitreich.org 70 i- (#x8FE4B6 #x92C5) Err bitreich.org 70 i- (#x8FE4B7 #x92C6) Err bitreich.org 70 i- (#x8FE4B8 #x92C7) Err bitreich.org 70 i- (#x8FE4B9 #x92C8) Err bitreich.org 70 i- (#x8FE4BA #x92CB) Err bitreich.org 70 i- (#x8FE4BB #x92CC) Err bitreich.org 70 i- (#x8FE4BC #x92CD) Err bitreich.org 70 i- (#x8FE4BD #x92CE) Err bitreich.org 70 i- (#x8FE4BE #x92D0) Err bitreich.org 70 i- (#x8FE4BF #x92D3) Err bitreich.org 70 i- (#x8FE4C0 #x92D5) Err bitreich.org 70 i- (#x8FE4C1 #x92D7) Err bitreich.org 70 i- (#x8FE4C2 #x92D8) Err bitreich.org 70 i- (#x8FE4C3 #x92D9) Err bitreich.org 70 i- (#x8FE4C4 #x92DC) Err bitreich.org 70 i- (#x8FE4C5 #x92DD) Err bitreich.org 70 i- (#x8FE4C6 #x92DF) Err bitreich.org 70 i- (#x8FE4C7 #x92E0) Err bitreich.org 70 i- (#x8FE4C8 #x92E1) Err bitreich.org 70 i- (#x8FE4C9 #x92E3) Err bitreich.org 70 i- (#x8FE4CA #x92E5) Err bitreich.org 70 i- (#x8FE4CB #x92E7) Err bitreich.org 70 i- (#x8FE4CC #x92E8) Err bitreich.org 70 i- (#x8FE4CD #x92EC) Err bitreich.org 70 i- (#x8FE4CE #x92EE) Err bitreich.org 70 i- (#x8FE4CF #x92F0) Err bitreich.org 70 i- (#x8FE4D0 #x92F9) Err bitreich.org 70 i- (#x8FE4D1 #x92FB) Err bitreich.org 70 i- (#x8FE4D2 #x92FF) Err bitreich.org 70 i- (#x8FE4D3 #x9300) Err bitreich.org 70 i- (#x8FE4D4 #x9302) Err bitreich.org 70 i- (#x8FE4D5 #x9308) Err bitreich.org 70 i- (#x8FE4D6 #x930D) Err bitreich.org 70 i- (#x8FE4D7 #x9311) Err bitreich.org 70 i- (#x8FE4D8 #x9314) Err bitreich.org 70 i- (#x8FE4D9 #x9315) Err bitreich.org 70 i- (#x8FE4DA #x931C) Err bitreich.org 70 i- (#x8FE4DB #x931D) Err bitreich.org 70 i- (#x8FE4DC #x931E) Err bitreich.org 70 i- (#x8FE4DD #x931F) Err bitreich.org 70 i- (#x8FE4DE #x9321) Err bitreich.org 70 i- (#x8FE4DF #x9324) Err bitreich.org 70 i- (#x8FE4E0 #x9325) Err bitreich.org 70 i- (#x8FE4E1 #x9327) Err bitreich.org 70 i- (#x8FE4E2 #x9329) Err bitreich.org 70 i- (#x8FE4E3 #x932A) Err bitreich.org 70 i- (#x8FE4E4 #x9333) Err bitreich.org 70 i- (#x8FE4E5 #x9334) Err bitreich.org 70 i- (#x8FE4E6 #x9336) Err bitreich.org 70 i- (#x8FE4E7 #x9337) Err bitreich.org 70 i- (#x8FE4E8 #x9347) Err bitreich.org 70 i- (#x8FE4E9 #x9348) Err bitreich.org 70 i- (#x8FE4EA #x9349) Err bitreich.org 70 i- (#x8FE4EB #x9350) Err bitreich.org 70 i- (#x8FE4EC #x9351) Err bitreich.org 70 i- (#x8FE4ED #x9352) Err bitreich.org 70 i- (#x8FE4EE #x9355) Err bitreich.org 70 i- (#x8FE4EF #x9357) Err bitreich.org 70 i- (#x8FE4F0 #x9358) Err bitreich.org 70 i- (#x8FE4F1 #x935A) Err bitreich.org 70 i- (#x8FE4F2 #x935E) Err bitreich.org 70 i- (#x8FE4F3 #x9364) Err bitreich.org 70 i- (#x8FE4F4 #x9365) Err bitreich.org 70 i- (#x8FE4F5 #x9367) Err bitreich.org 70 i- (#x8FE4F6 #x9369) Err bitreich.org 70 i- (#x8FE4F7 #x936A) Err bitreich.org 70 i- (#x8FE4F8 #x936D) Err bitreich.org 70 i- (#x8FE4F9 #x936F) Err bitreich.org 70 i- (#x8FE4FA #x9370) Err bitreich.org 70 i- (#x8FE4FB #x9371) Err bitreich.org 70 i- (#x8FE4FC #x9373) Err bitreich.org 70 i- (#x8FE4FD #x9374) Err bitreich.org 70 i- (#x8FE4FE #x9376) Err bitreich.org 70 i- (#x8FE5A1 #x937A) Err bitreich.org 70 i- (#x8FE5A2 #x937D) Err bitreich.org 70 i- (#x8FE5A3 #x937F) Err bitreich.org 70 i- (#x8FE5A4 #x9380) Err bitreich.org 70 i- (#x8FE5A5 #x9381) Err bitreich.org 70 i- (#x8FE5A6 #x9382) Err bitreich.org 70 i- (#x8FE5A7 #x9388) Err bitreich.org 70 i- (#x8FE5A8 #x938A) Err bitreich.org 70 i- (#x8FE5A9 #x938B) Err bitreich.org 70 i- (#x8FE5AA #x938D) Err bitreich.org 70 i- (#x8FE5AB #x938F) Err bitreich.org 70 i- (#x8FE5AC #x9392) Err bitreich.org 70 i- (#x8FE5AD #x9395) Err bitreich.org 70 i- (#x8FE5AE #x9398) Err bitreich.org 70 i- (#x8FE5AF #x939B) Err bitreich.org 70 i- (#x8FE5B0 #x939E) Err bitreich.org 70 i- (#x8FE5B1 #x93A1) Err bitreich.org 70 i- (#x8FE5B2 #x93A3) Err bitreich.org 70 i- (#x8FE5B3 #x93A4) Err bitreich.org 70 i- (#x8FE5B4 #x93A6) Err bitreich.org 70 i- (#x8FE5B5 #x93A8) Err bitreich.org 70 i- (#x8FE5B6 #x93AB) Err bitreich.org 70 i- (#x8FE5B7 #x93B4) Err bitreich.org 70 i- (#x8FE5B8 #x93B5) Err bitreich.org 70 i- (#x8FE5B9 #x93B6) Err bitreich.org 70 i- (#x8FE5BA #x93BA) Err bitreich.org 70 i- (#x8FE5BB #x93A9) Err bitreich.org 70 i- (#x8FE5BC #x93C1) Err bitreich.org 70 i- (#x8FE5BD #x93C4) Err bitreich.org 70 i- (#x8FE5BE #x93C5) Err bitreich.org 70 i- (#x8FE5BF #x93C6) Err bitreich.org 70 i- (#x8FE5C0 #x93C7) Err bitreich.org 70 i- (#x8FE5C1 #x93C9) Err bitreich.org 70 i- (#x8FE5C2 #x93CA) Err bitreich.org 70 i- (#x8FE5C3 #x93CB) Err bitreich.org 70 i- (#x8FE5C4 #x93CC) Err bitreich.org 70 i- (#x8FE5C5 #x93CD) Err bitreich.org 70 i- (#x8FE5C6 #x93D3) Err bitreich.org 70 i- (#x8FE5C7 #x93D9) Err bitreich.org 70 i- (#x8FE5C8 #x93DC) Err bitreich.org 70 i- (#x8FE5C9 #x93DE) Err bitreich.org 70 i- (#x8FE5CA #x93DF) Err bitreich.org 70 i- (#x8FE5CB #x93E2) Err bitreich.org 70 i- (#x8FE5CC #x93E6) Err bitreich.org 70 i- (#x8FE5CD #x93E7) Err bitreich.org 70 i- (#x8FE5CE #x93F9) Err bitreich.org 70 i- (#x8FE5CF #x93F7) Err bitreich.org 70 i- (#x8FE5D0 #x93F8) Err bitreich.org 70 i- (#x8FE5D1 #x93FA) Err bitreich.org 70 i- (#x8FE5D2 #x93FB) Err bitreich.org 70 i- (#x8FE5D3 #x93FD) Err bitreich.org 70 i- (#x8FE5D4 #x9401) Err bitreich.org 70 i- (#x8FE5D5 #x9402) Err bitreich.org 70 i- (#x8FE5D6 #x9404) Err bitreich.org 70 i- (#x8FE5D7 #x9408) Err bitreich.org 70 i- (#x8FE5D8 #x9409) Err bitreich.org 70 i- (#x8FE5D9 #x940D) Err bitreich.org 70 i- (#x8FE5DA #x940E) Err bitreich.org 70 i- (#x8FE5DB #x940F) Err bitreich.org 70 i- (#x8FE5DC #x9415) Err bitreich.org 70 i- (#x8FE5DD #x9416) Err bitreich.org 70 i- (#x8FE5DE #x9417) Err bitreich.org 70 i- (#x8FE5DF #x941F) Err bitreich.org 70 i- (#x8FE5E0 #x942E) Err bitreich.org 70 i- (#x8FE5E1 #x942F) Err bitreich.org 70 i- (#x8FE5E2 #x9431) Err bitreich.org 70 i- (#x8FE5E3 #x9432) Err bitreich.org 70 i- (#x8FE5E4 #x9433) Err bitreich.org 70 i- (#x8FE5E5 #x9434) Err bitreich.org 70 i- (#x8FE5E6 #x943B) Err bitreich.org 70 i- (#x8FE5E7 #x943F) Err bitreich.org 70 i- (#x8FE5E8 #x943D) Err bitreich.org 70 i- (#x8FE5E9 #x9443) Err bitreich.org 70 i- (#x8FE5EA #x9445) Err bitreich.org 70 i- (#x8FE5EB #x9448) Err bitreich.org 70 i- (#x8FE5EC #x944A) Err bitreich.org 70 i- (#x8FE5ED #x944C) Err bitreich.org 70 i- (#x8FE5EE #x9455) Err bitreich.org 70 i- (#x8FE5EF #x9459) Err bitreich.org 70 i- (#x8FE5F0 #x945C) Err bitreich.org 70 i- (#x8FE5F1 #x945F) Err bitreich.org 70 i- (#x8FE5F2 #x9461) Err bitreich.org 70 i- (#x8FE5F3 #x9463) Err bitreich.org 70 i- (#x8FE5F4 #x9468) Err bitreich.org 70 i- (#x8FE5F5 #x946B) Err bitreich.org 70 i- (#x8FE5F6 #x946D) Err bitreich.org 70 i- (#x8FE5F7 #x946E) Err bitreich.org 70 i- (#x8FE5F8 #x946F) Err bitreich.org 70 i- (#x8FE5F9 #x9471) Err bitreich.org 70 i- (#x8FE5FA #x9472) Err bitreich.org 70 i- (#x8FE5FB #x9484) Err bitreich.org 70 i- (#x8FE5FC #x9483) Err bitreich.org 70 i- (#x8FE5FD #x9578) Err bitreich.org 70 i- (#x8FE5FE #x9579) Err bitreich.org 70 i- (#x8FE6A1 #x957E) Err bitreich.org 70 i- (#x8FE6A2 #x9584) Err bitreich.org 70 i- (#x8FE6A3 #x9588) Err bitreich.org 70 i- (#x8FE6A4 #x958C) Err bitreich.org 70 i- (#x8FE6A5 #x958D) Err bitreich.org 70 i- (#x8FE6A6 #x958E) Err bitreich.org 70 i- (#x8FE6A7 #x959D) Err bitreich.org 70 i- (#x8FE6A8 #x959E) Err bitreich.org 70 i- (#x8FE6A9 #x959F) Err bitreich.org 70 i- (#x8FE6AA #x95A1) Err bitreich.org 70 i- (#x8FE6AB #x95A6) Err bitreich.org 70 i- (#x8FE6AC #x95A9) Err bitreich.org 70 i- (#x8FE6AD #x95AB) Err bitreich.org 70 i- (#x8FE6AE #x95AC) Err bitreich.org 70 i- (#x8FE6AF #x95B4) Err bitreich.org 70 i- (#x8FE6B0 #x95B6) Err bitreich.org 70 i- (#x8FE6B1 #x95BA) Err bitreich.org 70 i- (#x8FE6B2 #x95BD) Err bitreich.org 70 i- (#x8FE6B3 #x95BF) Err bitreich.org 70 i- (#x8FE6B4 #x95C6) Err bitreich.org 70 i- (#x8FE6B5 #x95C8) Err bitreich.org 70 i- (#x8FE6B6 #x95C9) Err bitreich.org 70 i- (#x8FE6B7 #x95CB) Err bitreich.org 70 i- (#x8FE6B8 #x95D0) Err bitreich.org 70 i- (#x8FE6B9 #x95D1) Err bitreich.org 70 i- (#x8FE6BA #x95D2) Err bitreich.org 70 i- (#x8FE6BB #x95D3) Err bitreich.org 70 i- (#x8FE6BC #x95D9) Err bitreich.org 70 i- (#x8FE6BD #x95DA) Err bitreich.org 70 i- (#x8FE6BE #x95DD) Err bitreich.org 70 i- (#x8FE6BF #x95DE) Err bitreich.org 70 i- (#x8FE6C0 #x95DF) Err bitreich.org 70 i- (#x8FE6C1 #x95E0) Err bitreich.org 70 i- (#x8FE6C2 #x95E4) Err bitreich.org 70 i- (#x8FE6C3 #x95E6) Err bitreich.org 70 i- (#x8FE6C4 #x961D) Err bitreich.org 70 i- (#x8FE6C5 #x961E) Err bitreich.org 70 i- (#x8FE6C6 #x9622) Err bitreich.org 70 i- (#x8FE6C7 #x9624) Err bitreich.org 70 i- (#x8FE6C8 #x9625) Err bitreich.org 70 i- (#x8FE6C9 #x9626) Err bitreich.org 70 i- (#x8FE6CA #x962C) Err bitreich.org 70 i- (#x8FE6CB #x9631) Err bitreich.org 70 i- (#x8FE6CC #x9633) Err bitreich.org 70 i- (#x8FE6CD #x9637) Err bitreich.org 70 i- (#x8FE6CE #x9638) Err bitreich.org 70 i- (#x8FE6CF #x9639) Err bitreich.org 70 i- (#x8FE6D0 #x963A) Err bitreich.org 70 i- (#x8FE6D1 #x963C) Err bitreich.org 70 i- (#x8FE6D2 #x963D) Err bitreich.org 70 i- (#x8FE6D3 #x9641) Err bitreich.org 70 i- (#x8FE6D4 #x9652) Err bitreich.org 70 i- (#x8FE6D5 #x9654) Err bitreich.org 70 i- (#x8FE6D6 #x9656) Err bitreich.org 70 i- (#x8FE6D7 #x9657) Err bitreich.org 70 i- (#x8FE6D8 #x9658) Err bitreich.org 70 i- (#x8FE6D9 #x9661) Err bitreich.org 70 i- (#x8FE6DA #x966E) Err bitreich.org 70 i- (#x8FE6DB #x9674) Err bitreich.org 70 i- (#x8FE6DC #x967B) Err bitreich.org 70 i- (#x8FE6DD #x967C) Err bitreich.org 70 i- (#x8FE6DE #x967E) Err bitreich.org 70 i- (#x8FE6DF #x967F) Err bitreich.org 70 i- (#x8FE6E0 #x9681) Err bitreich.org 70 i- (#x8FE6E1 #x9682) Err bitreich.org 70 i- (#x8FE6E2 #x9683) Err bitreich.org 70 i- (#x8FE6E3 #x9684) Err bitreich.org 70 i- (#x8FE6E4 #x9689) Err bitreich.org 70 i- (#x8FE6E5 #x9691) Err bitreich.org 70 i- (#x8FE6E6 #x9696) Err bitreich.org 70 i- (#x8FE6E7 #x969A) Err bitreich.org 70 i- (#x8FE6E8 #x969D) Err bitreich.org 70 i- (#x8FE6E9 #x969F) Err bitreich.org 70 i- (#x8FE6EA #x96A4) Err bitreich.org 70 i- (#x8FE6EB #x96A5) Err bitreich.org 70 i- (#x8FE6EC #x96A6) Err bitreich.org 70 i- (#x8FE6ED #x96A9) Err bitreich.org 70 i- (#x8FE6EE #x96AE) Err bitreich.org 70 i- (#x8FE6EF #x96AF) Err bitreich.org 70 i- (#x8FE6F0 #x96B3) Err bitreich.org 70 i- (#x8FE6F1 #x96BA) Err bitreich.org 70 i- (#x8FE6F2 #x96CA) Err bitreich.org 70 i- (#x8FE6F3 #x96D2) Err bitreich.org 70 i- (#x8FE6F4 #x5DB2) Err bitreich.org 70 i- (#x8FE6F5 #x96D8) Err bitreich.org 70 i- (#x8FE6F6 #x96DA) Err bitreich.org 70 i- (#x8FE6F7 #x96DD) Err bitreich.org 70 i- (#x8FE6F8 #x96DE) Err bitreich.org 70 i- (#x8FE6F9 #x96DF) Err bitreich.org 70 i- (#x8FE6FA #x96E9) Err bitreich.org 70 i- (#x8FE6FB #x96EF) Err bitreich.org 70 i- (#x8FE6FC #x96F1) Err bitreich.org 70 i- (#x8FE6FD #x96FA) Err bitreich.org 70 i- (#x8FE6FE #x9702) Err bitreich.org 70 i- (#x8FE7A1 #x9703) Err bitreich.org 70 i- (#x8FE7A2 #x9705) Err bitreich.org 70 i- (#x8FE7A3 #x9709) Err bitreich.org 70 i- (#x8FE7A4 #x971A) Err bitreich.org 70 i- (#x8FE7A5 #x971B) Err bitreich.org 70 i- (#x8FE7A6 #x971D) Err bitreich.org 70 i- (#x8FE7A7 #x9721) Err bitreich.org 70 i- (#x8FE7A8 #x9722) Err bitreich.org 70 i- (#x8FE7A9 #x9723) Err bitreich.org 70 i- (#x8FE7AA #x9728) Err bitreich.org 70 i- (#x8FE7AB #x9731) Err bitreich.org 70 i- (#x8FE7AC #x9733) Err bitreich.org 70 i- (#x8FE7AD #x9741) Err bitreich.org 70 i- (#x8FE7AE #x9743) Err bitreich.org 70 i- (#x8FE7AF #x974A) Err bitreich.org 70 i- (#x8FE7B0 #x974E) Err bitreich.org 70 i- (#x8FE7B1 #x974F) Err bitreich.org 70 i- (#x8FE7B2 #x9755) Err bitreich.org 70 i- (#x8FE7B3 #x9757) Err bitreich.org 70 i- (#x8FE7B4 #x9758) Err bitreich.org 70 i- (#x8FE7B5 #x975A) Err bitreich.org 70 i- (#x8FE7B6 #x975B) Err bitreich.org 70 i- (#x8FE7B7 #x9763) Err bitreich.org 70 i- (#x8FE7B8 #x9767) Err bitreich.org 70 i- (#x8FE7B9 #x976A) Err bitreich.org 70 i- (#x8FE7BA #x976E) Err bitreich.org 70 i- (#x8FE7BB #x9773) Err bitreich.org 70 i- (#x8FE7BC #x9776) Err bitreich.org 70 i- (#x8FE7BD #x9777) Err bitreich.org 70 i- (#x8FE7BE #x9778) Err bitreich.org 70 i- (#x8FE7BF #x977B) Err bitreich.org 70 i- (#x8FE7C0 #x977D) Err bitreich.org 70 i- (#x8FE7C1 #x977F) Err bitreich.org 70 i- (#x8FE7C2 #x9780) Err bitreich.org 70 i- (#x8FE7C3 #x9789) Err bitreich.org 70 i- (#x8FE7C4 #x9795) Err bitreich.org 70 i- (#x8FE7C5 #x9796) Err bitreich.org 70 i- (#x8FE7C6 #x9797) Err bitreich.org 70 i- (#x8FE7C7 #x9799) Err bitreich.org 70 i- (#x8FE7C8 #x979A) Err bitreich.org 70 i- (#x8FE7C9 #x979E) Err bitreich.org 70 i- (#x8FE7CA #x979F) Err bitreich.org 70 i- (#x8FE7CB #x97A2) Err bitreich.org 70 i- (#x8FE7CC #x97AC) Err bitreich.org 70 i- (#x8FE7CD #x97AE) Err bitreich.org 70 i- (#x8FE7CE #x97B1) Err bitreich.org 70 i- (#x8FE7CF #x97B2) Err bitreich.org 70 i- (#x8FE7D0 #x97B5) Err bitreich.org 70 i- (#x8FE7D1 #x97B6) Err bitreich.org 70 i- (#x8FE7D2 #x97B8) Err bitreich.org 70 i- (#x8FE7D3 #x97B9) Err bitreich.org 70 i- (#x8FE7D4 #x97BA) Err bitreich.org 70 i- (#x8FE7D5 #x97BC) Err bitreich.org 70 i- (#x8FE7D6 #x97BE) Err bitreich.org 70 i- (#x8FE7D7 #x97BF) Err bitreich.org 70 i- (#x8FE7D8 #x97C1) Err bitreich.org 70 i- (#x8FE7D9 #x97C4) Err bitreich.org 70 i- (#x8FE7DA #x97C5) Err bitreich.org 70 i- (#x8FE7DB #x97C7) Err bitreich.org 70 i- (#x8FE7DC #x97C9) Err bitreich.org 70 i- (#x8FE7DD #x97CA) Err bitreich.org 70 i- (#x8FE7DE #x97CC) Err bitreich.org 70 i- (#x8FE7DF #x97CD) Err bitreich.org 70 i- (#x8FE7E0 #x97CE) Err bitreich.org 70 i- (#x8FE7E1 #x97D0) Err bitreich.org 70 i- (#x8FE7E2 #x97D1) Err bitreich.org 70 i- (#x8FE7E3 #x97D4) Err bitreich.org 70 i- (#x8FE7E4 #x97D7) Err bitreich.org 70 i- (#x8FE7E5 #x97D8) Err bitreich.org 70 i- (#x8FE7E6 #x97D9) Err bitreich.org 70 i- (#x8FE7E7 #x97DD) Err bitreich.org 70 i- (#x8FE7E8 #x97DE) Err bitreich.org 70 i- (#x8FE7E9 #x97E0) Err bitreich.org 70 i- (#x8FE7EA #x97DB) Err bitreich.org 70 i- (#x8FE7EB #x97E1) Err bitreich.org 70 i- (#x8FE7EC #x97E4) Err bitreich.org 70 i- (#x8FE7ED #x97EF) Err bitreich.org 70 i- (#x8FE7EE #x97F1) Err bitreich.org 70 i- (#x8FE7EF #x97F4) Err bitreich.org 70 i- (#x8FE7F0 #x97F7) Err bitreich.org 70 i- (#x8FE7F1 #x97F8) Err bitreich.org 70 i- (#x8FE7F2 #x97FA) Err bitreich.org 70 i- (#x8FE7F3 #x9807) Err bitreich.org 70 i- (#x8FE7F4 #x980A) Err bitreich.org 70 i- (#x8FE7F5 #x9819) Err bitreich.org 70 i- (#x8FE7F6 #x980D) Err bitreich.org 70 i- (#x8FE7F7 #x980E) Err bitreich.org 70 i- (#x8FE7F8 #x9814) Err bitreich.org 70 i- (#x8FE7F9 #x9816) Err bitreich.org 70 i- (#x8FE7FA #x981C) Err bitreich.org 70 i- (#x8FE7FB #x981E) Err bitreich.org 70 i- (#x8FE7FC #x9820) Err bitreich.org 70 i- (#x8FE7FD #x9823) Err bitreich.org 70 i- (#x8FE7FE #x9826) Err bitreich.org 70 i- (#x8FE8A1 #x982B) Err bitreich.org 70 i- (#x8FE8A2 #x982E) Err bitreich.org 70 i- (#x8FE8A3 #x982F) Err bitreich.org 70 i- (#x8FE8A4 #x9830) Err bitreich.org 70 i- (#x8FE8A5 #x9832) Err bitreich.org 70 i- (#x8FE8A6 #x9833) Err bitreich.org 70 i- (#x8FE8A7 #x9835) Err bitreich.org 70 i- (#x8FE8A8 #x9825) Err bitreich.org 70 i- (#x8FE8A9 #x983E) Err bitreich.org 70 i- (#x8FE8AA #x9844) Err bitreich.org 70 i- (#x8FE8AB #x9847) Err bitreich.org 70 i- (#x8FE8AC #x984A) Err bitreich.org 70 i- (#x8FE8AD #x9851) Err bitreich.org 70 i- (#x8FE8AE #x9852) Err bitreich.org 70 i- (#x8FE8AF #x9853) Err bitreich.org 70 i- (#x8FE8B0 #x9856) Err bitreich.org 70 i- (#x8FE8B1 #x9857) Err bitreich.org 70 i- (#x8FE8B2 #x9859) Err bitreich.org 70 i- (#x8FE8B3 #x985A) Err bitreich.org 70 i- (#x8FE8B4 #x9862) Err bitreich.org 70 i- (#x8FE8B5 #x9863) Err bitreich.org 70 i- (#x8FE8B6 #x9865) Err bitreich.org 70 i- (#x8FE8B7 #x9866) Err bitreich.org 70 i- (#x8FE8B8 #x986A) Err bitreich.org 70 i- (#x8FE8B9 #x986C) Err bitreich.org 70 i- (#x8FE8BA #x98AB) Err bitreich.org 70 i- (#x8FE8BB #x98AD) Err bitreich.org 70 i- (#x8FE8BC #x98AE) Err bitreich.org 70 i- (#x8FE8BD #x98B0) Err bitreich.org 70 i- (#x8FE8BE #x98B4) Err bitreich.org 70 i- (#x8FE8BF #x98B7) Err bitreich.org 70 i- (#x8FE8C0 #x98B8) Err bitreich.org 70 i- (#x8FE8C1 #x98BA) Err bitreich.org 70 i- (#x8FE8C2 #x98BB) Err bitreich.org 70 i- (#x8FE8C3 #x98BF) Err bitreich.org 70 i- (#x8FE8C4 #x98C2) Err bitreich.org 70 i- (#x8FE8C5 #x98C5) Err bitreich.org 70 i- (#x8FE8C6 #x98C8) Err bitreich.org 70 i- (#x8FE8C7 #x98CC) Err bitreich.org 70 i- (#x8FE8C8 #x98E1) Err bitreich.org 70 i- (#x8FE8C9 #x98E3) Err bitreich.org 70 i- (#x8FE8CA #x98E5) Err bitreich.org 70 i- (#x8FE8CB #x98E6) Err bitreich.org 70 i- (#x8FE8CC #x98E7) Err bitreich.org 70 i- (#x8FE8CD #x98EA) Err bitreich.org 70 i- (#x8FE8CE #x98F3) Err bitreich.org 70 i- (#x8FE8CF #x98F6) Err bitreich.org 70 i- (#x8FE8D0 #x9902) Err bitreich.org 70 i- (#x8FE8D1 #x9907) Err bitreich.org 70 i- (#x8FE8D2 #x9908) Err bitreich.org 70 i- (#x8FE8D3 #x9911) Err bitreich.org 70 i- (#x8FE8D4 #x9915) Err bitreich.org 70 i- (#x8FE8D5 #x9916) Err bitreich.org 70 i- (#x8FE8D6 #x9917) Err bitreich.org 70 i- (#x8FE8D7 #x991A) Err bitreich.org 70 i- (#x8FE8D8 #x991B) Err bitreich.org 70 i- (#x8FE8D9 #x991C) Err bitreich.org 70 i- (#x8FE8DA #x991F) Err bitreich.org 70 i- (#x8FE8DB #x9922) Err bitreich.org 70 i- (#x8FE8DC #x9926) Err bitreich.org 70 i- (#x8FE8DD #x9927) Err bitreich.org 70 i- (#x8FE8DE #x992B) Err bitreich.org 70 i- (#x8FE8DF #x9931) Err bitreich.org 70 i- (#x8FE8E0 #x9932) Err bitreich.org 70 i- (#x8FE8E1 #x9933) Err bitreich.org 70 i- (#x8FE8E2 #x9934) Err bitreich.org 70 i- (#x8FE8E3 #x9935) Err bitreich.org 70 i- (#x8FE8E4 #x9939) Err bitreich.org 70 i- (#x8FE8E5 #x993A) Err bitreich.org 70 i- (#x8FE8E6 #x993B) Err bitreich.org 70 i- (#x8FE8E7 #x993C) Err bitreich.org 70 i- (#x8FE8E8 #x9940) Err bitreich.org 70 i- (#x8FE8E9 #x9941) Err bitreich.org 70 i- (#x8FE8EA #x9946) Err bitreich.org 70 i- (#x8FE8EB #x9947) Err bitreich.org 70 i- (#x8FE8EC #x9948) Err bitreich.org 70 i- (#x8FE8ED #x994D) Err bitreich.org 70 i- (#x8FE8EE #x994E) Err bitreich.org 70 i- (#x8FE8EF #x9954) Err bitreich.org 70 i- (#x8FE8F0 #x9958) Err bitreich.org 70 i- (#x8FE8F1 #x9959) Err bitreich.org 70 i- (#x8FE8F2 #x995B) Err bitreich.org 70 i- (#x8FE8F3 #x995C) Err bitreich.org 70 i- (#x8FE8F4 #x995E) Err bitreich.org 70 i- (#x8FE8F5 #x995F) Err bitreich.org 70 i- (#x8FE8F6 #x9960) Err bitreich.org 70 i- (#x8FE8F7 #x999B) Err bitreich.org 70 i- (#x8FE8F8 #x999D) Err bitreich.org 70 i- (#x8FE8F9 #x999F) Err bitreich.org 70 i- (#x8FE8FA #x99A6) Err bitreich.org 70 i- (#x8FE8FB #x99B0) Err bitreich.org 70 i- (#x8FE8FC #x99B1) Err bitreich.org 70 i- (#x8FE8FD #x99B2) Err bitreich.org 70 i- (#x8FE8FE #x99B5) Err bitreich.org 70 i- (#x8FE9A1 #x99B9) Err bitreich.org 70 i- (#x8FE9A2 #x99BA) Err bitreich.org 70 i- (#x8FE9A3 #x99BD) Err bitreich.org 70 i- (#x8FE9A4 #x99BF) Err bitreich.org 70 i- (#x8FE9A5 #x99C3) Err bitreich.org 70 i- (#x8FE9A6 #x99C9) Err bitreich.org 70 i- (#x8FE9A7 #x99D3) Err bitreich.org 70 i- (#x8FE9A8 #x99D4) Err bitreich.org 70 i- (#x8FE9A9 #x99D9) Err bitreich.org 70 i- (#x8FE9AA #x99DA) Err bitreich.org 70 i- (#x8FE9AB #x99DC) Err bitreich.org 70 i- (#x8FE9AC #x99DE) Err bitreich.org 70 i- (#x8FE9AD #x99E7) Err bitreich.org 70 i- (#x8FE9AE #x99EA) Err bitreich.org 70 i- (#x8FE9AF #x99EB) Err bitreich.org 70 i- (#x8FE9B0 #x99EC) Err bitreich.org 70 i- (#x8FE9B1 #x99F0) Err bitreich.org 70 i- (#x8FE9B2 #x99F4) Err bitreich.org 70 i- (#x8FE9B3 #x99F5) Err bitreich.org 70 i- (#x8FE9B4 #x99F9) Err bitreich.org 70 i- (#x8FE9B5 #x99FD) Err bitreich.org 70 i- (#x8FE9B6 #x99FE) Err bitreich.org 70 i- (#x8FE9B7 #x9A02) Err bitreich.org 70 i- (#x8FE9B8 #x9A03) Err bitreich.org 70 i- (#x8FE9B9 #x9A04) Err bitreich.org 70 i- (#x8FE9BA #x9A0B) Err bitreich.org 70 i- (#x8FE9BB #x9A0C) Err bitreich.org 70 i- (#x8FE9BC #x9A10) Err bitreich.org 70 i- (#x8FE9BD #x9A11) Err bitreich.org 70 i- (#x8FE9BE #x9A16) Err bitreich.org 70 i- (#x8FE9BF #x9A1E) Err bitreich.org 70 i- (#x8FE9C0 #x9A20) Err bitreich.org 70 i- (#x8FE9C1 #x9A22) Err bitreich.org 70 i- (#x8FE9C2 #x9A23) Err bitreich.org 70 i- (#x8FE9C3 #x9A24) Err bitreich.org 70 i- (#x8FE9C4 #x9A27) Err bitreich.org 70 i- (#x8FE9C5 #x9A2D) Err bitreich.org 70 i- (#x8FE9C6 #x9A2E) Err bitreich.org 70 i- (#x8FE9C7 #x9A33) Err bitreich.org 70 i- (#x8FE9C8 #x9A35) Err bitreich.org 70 i- (#x8FE9C9 #x9A36) Err bitreich.org 70 i- (#x8FE9CA #x9A38) Err bitreich.org 70 i- (#x8FE9CB #x9A47) Err bitreich.org 70 i- (#x8FE9CC #x9A41) Err bitreich.org 70 i- (#x8FE9CD #x9A44) Err bitreich.org 70 i- (#x8FE9CE #x9A4A) Err bitreich.org 70 i- (#x8FE9CF #x9A4B) Err bitreich.org 70 i- (#x8FE9D0 #x9A4C) Err bitreich.org 70 i- (#x8FE9D1 #x9A4E) Err bitreich.org 70 i- (#x8FE9D2 #x9A51) Err bitreich.org 70 i- (#x8FE9D3 #x9A54) Err bitreich.org 70 i- (#x8FE9D4 #x9A56) Err bitreich.org 70 i- (#x8FE9D5 #x9A5D) Err bitreich.org 70 i- (#x8FE9D6 #x9AAA) Err bitreich.org 70 i- (#x8FE9D7 #x9AAC) Err bitreich.org 70 i- (#x8FE9D8 #x9AAE) Err bitreich.org 70 i- (#x8FE9D9 #x9AAF) Err bitreich.org 70 i- (#x8FE9DA #x9AB2) Err bitreich.org 70 i- (#x8FE9DB #x9AB4) Err bitreich.org 70 i- (#x8FE9DC #x9AB5) Err bitreich.org 70 i- (#x8FE9DD #x9AB6) Err bitreich.org 70 i- (#x8FE9DE #x9AB9) Err bitreich.org 70 i- (#x8FE9DF #x9ABB) Err bitreich.org 70 i- (#x8FE9E0 #x9ABE) Err bitreich.org 70 i- (#x8FE9E1 #x9ABF) Err bitreich.org 70 i- (#x8FE9E2 #x9AC1) Err bitreich.org 70 i- (#x8FE9E3 #x9AC3) Err bitreich.org 70 i- (#x8FE9E4 #x9AC6) Err bitreich.org 70 i- (#x8FE9E5 #x9AC8) Err bitreich.org 70 i- (#x8FE9E6 #x9ACE) Err bitreich.org 70 i- (#x8FE9E7 #x9AD0) Err bitreich.org 70 i- (#x8FE9E8 #x9AD2) Err bitreich.org 70 i- (#x8FE9E9 #x9AD5) Err bitreich.org 70 i- (#x8FE9EA #x9AD6) Err bitreich.org 70 i- (#x8FE9EB #x9AD7) Err bitreich.org 70 i- (#x8FE9EC #x9ADB) Err bitreich.org 70 i- (#x8FE9ED #x9ADC) Err bitreich.org 70 i- (#x8FE9EE #x9AE0) Err bitreich.org 70 i- (#x8FE9EF #x9AE4) Err bitreich.org 70 i- (#x8FE9F0 #x9AE5) Err bitreich.org 70 i- (#x8FE9F1 #x9AE7) Err bitreich.org 70 i- (#x8FE9F2 #x9AE9) Err bitreich.org 70 i- (#x8FE9F3 #x9AEC) Err bitreich.org 70 i- (#x8FE9F4 #x9AF2) Err bitreich.org 70 i- (#x8FE9F5 #x9AF3) Err bitreich.org 70 i- (#x8FE9F6 #x9AF5) Err bitreich.org 70 i- (#x8FE9F7 #x9AF9) Err bitreich.org 70 i- (#x8FE9F8 #x9AFA) Err bitreich.org 70 i- (#x8FE9F9 #x9AFD) Err bitreich.org 70 i- (#x8FE9FA #x9AFF) Err bitreich.org 70 i- (#x8FE9FB #x9B00) Err bitreich.org 70 i- (#x8FE9FC #x9B01) Err bitreich.org 70 i- (#x8FE9FD #x9B02) Err bitreich.org 70 i- (#x8FE9FE #x9B03) Err bitreich.org 70 i- (#x8FEAA1 #x9B04) Err bitreich.org 70 i- (#x8FEAA2 #x9B05) Err bitreich.org 70 i- (#x8FEAA3 #x9B08) Err bitreich.org 70 i- (#x8FEAA4 #x9B09) Err bitreich.org 70 i- (#x8FEAA5 #x9B0B) Err bitreich.org 70 i- (#x8FEAA6 #x9B0C) Err bitreich.org 70 i- (#x8FEAA7 #x9B0D) Err bitreich.org 70 i- (#x8FEAA8 #x9B0E) Err bitreich.org 70 i- (#x8FEAA9 #x9B10) Err bitreich.org 70 i- (#x8FEAAA #x9B12) Err bitreich.org 70 i- (#x8FEAAB #x9B16) Err bitreich.org 70 i- (#x8FEAAC #x9B19) Err bitreich.org 70 i- (#x8FEAAD #x9B1B) Err bitreich.org 70 i- (#x8FEAAE #x9B1C) Err bitreich.org 70 i- (#x8FEAAF #x9B20) Err bitreich.org 70 i- (#x8FEAB0 #x9B26) Err bitreich.org 70 i- (#x8FEAB1 #x9B2B) Err bitreich.org 70 i- (#x8FEAB2 #x9B2D) Err bitreich.org 70 i- (#x8FEAB3 #x9B33) Err bitreich.org 70 i- (#x8FEAB4 #x9B34) Err bitreich.org 70 i- (#x8FEAB5 #x9B35) Err bitreich.org 70 i- (#x8FEAB6 #x9B37) Err bitreich.org 70 i- (#x8FEAB7 #x9B39) Err bitreich.org 70 i- (#x8FEAB8 #x9B3A) Err bitreich.org 70 i- (#x8FEAB9 #x9B3D) Err bitreich.org 70 i- (#x8FEABA #x9B48) Err bitreich.org 70 i- (#x8FEABB #x9B4B) Err bitreich.org 70 i- (#x8FEABC #x9B4C) Err bitreich.org 70 i- (#x8FEABD #x9B55) Err bitreich.org 70 i- (#x8FEABE #x9B56) Err bitreich.org 70 i- (#x8FEABF #x9B57) Err bitreich.org 70 i- (#x8FEAC0 #x9B5B) Err bitreich.org 70 i- (#x8FEAC1 #x9B5E) Err bitreich.org 70 i- (#x8FEAC2 #x9B61) Err bitreich.org 70 i- (#x8FEAC3 #x9B63) Err bitreich.org 70 i- (#x8FEAC4 #x9B65) Err bitreich.org 70 i- (#x8FEAC5 #x9B66) Err bitreich.org 70 i- (#x8FEAC6 #x9B68) Err bitreich.org 70 i- (#x8FEAC7 #x9B6A) Err bitreich.org 70 i- (#x8FEAC8 #x9B6B) Err bitreich.org 70 i- (#x8FEAC9 #x9B6C) Err bitreich.org 70 i- (#x8FEACA #x9B6D) Err bitreich.org 70 i- (#x8FEACB #x9B6E) Err bitreich.org 70 i- (#x8FEACC #x9B73) Err bitreich.org 70 i- (#x8FEACD #x9B75) Err bitreich.org 70 i- (#x8FEACE #x9B77) Err bitreich.org 70 i- (#x8FEACF #x9B78) Err bitreich.org 70 i- (#x8FEAD0 #x9B79) Err bitreich.org 70 i- (#x8FEAD1 #x9B7F) Err bitreich.org 70 i- (#x8FEAD2 #x9B80) Err bitreich.org 70 i- (#x8FEAD3 #x9B84) Err bitreich.org 70 i- (#x8FEAD4 #x9B85) Err bitreich.org 70 i- (#x8FEAD5 #x9B86) Err bitreich.org 70 i- (#x8FEAD6 #x9B87) Err bitreich.org 70 i- (#x8FEAD7 #x9B89) Err bitreich.org 70 i- (#x8FEAD8 #x9B8A) Err bitreich.org 70 i- (#x8FEAD9 #x9B8B) Err bitreich.org 70 i- (#x8FEADA #x9B8D) Err bitreich.org 70 i- (#x8FEADB #x9B8F) Err bitreich.org 70 i- (#x8FEADC #x9B90) Err bitreich.org 70 i- (#x8FEADD #x9B94) Err bitreich.org 70 i- (#x8FEADE #x9B9A) Err bitreich.org 70 i- (#x8FEADF #x9B9D) Err bitreich.org 70 i- (#x8FEAE0 #x9B9E) Err bitreich.org 70 i- (#x8FEAE1 #x9BA6) Err bitreich.org 70 i- (#x8FEAE2 #x9BA7) Err bitreich.org 70 i- (#x8FEAE3 #x9BA9) Err bitreich.org 70 i- (#x8FEAE4 #x9BAC) Err bitreich.org 70 i- (#x8FEAE5 #x9BB0) Err bitreich.org 70 i- (#x8FEAE6 #x9BB1) Err bitreich.org 70 i- (#x8FEAE7 #x9BB2) Err bitreich.org 70 i- (#x8FEAE8 #x9BB7) Err bitreich.org 70 i- (#x8FEAE9 #x9BB8) Err bitreich.org 70 i- (#x8FEAEA #x9BBB) Err bitreich.org 70 i- (#x8FEAEB #x9BBC) Err bitreich.org 70 i- (#x8FEAEC #x9BBE) Err bitreich.org 70 i- (#x8FEAED #x9BBF) Err bitreich.org 70 i- (#x8FEAEE #x9BC1) Err bitreich.org 70 i- (#x8FEAEF #x9BC7) Err bitreich.org 70 i- (#x8FEAF0 #x9BC8) Err bitreich.org 70 i- (#x8FEAF1 #x9BCE) Err bitreich.org 70 i- (#x8FEAF2 #x9BD0) Err bitreich.org 70 i- (#x8FEAF3 #x9BD7) Err bitreich.org 70 i- (#x8FEAF4 #x9BD8) Err bitreich.org 70 i- (#x8FEAF5 #x9BDD) Err bitreich.org 70 i- (#x8FEAF6 #x9BDF) Err bitreich.org 70 i- (#x8FEAF7 #x9BE5) Err bitreich.org 70 i- (#x8FEAF8 #x9BE7) Err bitreich.org 70 i- (#x8FEAF9 #x9BEA) Err bitreich.org 70 i- (#x8FEAFA #x9BEB) Err bitreich.org 70 i- (#x8FEAFB #x9BEF) Err bitreich.org 70 i- (#x8FEAFC #x9BF3) Err bitreich.org 70 i- (#x8FEAFD #x9BF7) Err bitreich.org 70 i- (#x8FEAFE #x9BF8) Err bitreich.org 70 i- (#x8FEBA1 #x9BF9) Err bitreich.org 70 i- (#x8FEBA2 #x9BFA) Err bitreich.org 70 i- (#x8FEBA3 #x9BFD) Err bitreich.org 70 i- (#x8FEBA4 #x9BFF) Err bitreich.org 70 i- (#x8FEBA5 #x9C00) Err bitreich.org 70 i- (#x8FEBA6 #x9C02) Err bitreich.org 70 i- (#x8FEBA7 #x9C0B) Err bitreich.org 70 i- (#x8FEBA8 #x9C0F) Err bitreich.org 70 i- (#x8FEBA9 #x9C11) Err bitreich.org 70 i- (#x8FEBAA #x9C16) Err bitreich.org 70 i- (#x8FEBAB #x9C18) Err bitreich.org 70 i- (#x8FEBAC #x9C19) Err bitreich.org 70 i- (#x8FEBAD #x9C1A) Err bitreich.org 70 i- (#x8FEBAE #x9C1C) Err bitreich.org 70 i- (#x8FEBAF #x9C1E) Err bitreich.org 70 i- (#x8FEBB0 #x9C22) Err bitreich.org 70 i- (#x8FEBB1 #x9C23) Err bitreich.org 70 i- (#x8FEBB2 #x9C26) Err bitreich.org 70 i- (#x8FEBB3 #x9C27) Err bitreich.org 70 i- (#x8FEBB4 #x9C28) Err bitreich.org 70 i- (#x8FEBB5 #x9C29) Err bitreich.org 70 i- (#x8FEBB6 #x9C2A) Err bitreich.org 70 i- (#x8FEBB7 #x9C31) Err bitreich.org 70 i- (#x8FEBB8 #x9C35) Err bitreich.org 70 i- (#x8FEBB9 #x9C36) Err bitreich.org 70 i- (#x8FEBBA #x9C37) Err bitreich.org 70 i- (#x8FEBBB #x9C3D) Err bitreich.org 70 i- (#x8FEBBC #x9C41) Err bitreich.org 70 i- (#x8FEBBD #x9C43) Err bitreich.org 70 i- (#x8FEBBE #x9C44) Err bitreich.org 70 i- (#x8FEBBF #x9C45) Err bitreich.org 70 i- (#x8FEBC0 #x9C49) Err bitreich.org 70 i- (#x8FEBC1 #x9C4A) Err bitreich.org 70 i- (#x8FEBC2 #x9C4E) Err bitreich.org 70 i- (#x8FEBC3 #x9C4F) Err bitreich.org 70 i- (#x8FEBC4 #x9C50) Err bitreich.org 70 i- (#x8FEBC5 #x9C53) Err bitreich.org 70 i- (#x8FEBC6 #x9C54) Err bitreich.org 70 i- (#x8FEBC7 #x9C56) Err bitreich.org 70 i- (#x8FEBC8 #x9C58) Err bitreich.org 70 i- (#x8FEBC9 #x9C5B) Err bitreich.org 70 i- (#x8FEBCA #x9C5D) Err bitreich.org 70 i- (#x8FEBCB #x9C5E) Err bitreich.org 70 i- (#x8FEBCC #x9C5F) Err bitreich.org 70 i- (#x8FEBCD #x9C63) Err bitreich.org 70 i- (#x8FEBCE #x9C69) Err bitreich.org 70 i- (#x8FEBCF #x9C6A) Err bitreich.org 70 i- (#x8FEBD0 #x9C5C) Err bitreich.org 70 i- (#x8FEBD1 #x9C6B) Err bitreich.org 70 i- (#x8FEBD2 #x9C68) Err bitreich.org 70 i- (#x8FEBD3 #x9C6E) Err bitreich.org 70 i- (#x8FEBD4 #x9C70) Err bitreich.org 70 i- (#x8FEBD5 #x9C72) Err bitreich.org 70 i- (#x8FEBD6 #x9C75) Err bitreich.org 70 i- (#x8FEBD7 #x9C77) Err bitreich.org 70 i- (#x8FEBD8 #x9C7B) Err bitreich.org 70 i- (#x8FEBD9 #x9CE6) Err bitreich.org 70 i- (#x8FEBDA #x9CF2) Err bitreich.org 70 i- (#x8FEBDB #x9CF7) Err bitreich.org 70 i- (#x8FEBDC #x9CF9) Err bitreich.org 70 i- (#x8FEBDD #x9D0B) Err bitreich.org 70 i- (#x8FEBDE #x9D02) Err bitreich.org 70 i- (#x8FEBDF #x9D11) Err bitreich.org 70 i- (#x8FEBE0 #x9D17) Err bitreich.org 70 i- (#x8FEBE1 #x9D18) Err bitreich.org 70 i- (#x8FEBE2 #x9D1C) Err bitreich.org 70 i- (#x8FEBE3 #x9D1D) Err bitreich.org 70 i- (#x8FEBE4 #x9D1E) Err bitreich.org 70 i- (#x8FEBE5 #x9D2F) Err bitreich.org 70 i- (#x8FEBE6 #x9D30) Err bitreich.org 70 i- (#x8FEBE7 #x9D32) Err bitreich.org 70 i- (#x8FEBE8 #x9D33) Err bitreich.org 70 i- (#x8FEBE9 #x9D34) Err bitreich.org 70 i- (#x8FEBEA #x9D3A) Err bitreich.org 70 i- (#x8FEBEB #x9D3C) Err bitreich.org 70 i- (#x8FEBEC #x9D45) Err bitreich.org 70 i- (#x8FEBED #x9D3D) Err bitreich.org 70 i- (#x8FEBEE #x9D42) Err bitreich.org 70 i- (#x8FEBEF #x9D43) Err bitreich.org 70 i- (#x8FEBF0 #x9D47) Err bitreich.org 70 i- (#x8FEBF1 #x9D4A) Err bitreich.org 70 i- (#x8FEBF2 #x9D53) Err bitreich.org 70 i- (#x8FEBF3 #x9D54) Err bitreich.org 70 i- (#x8FEBF4 #x9D5F) Err bitreich.org 70 i- (#x8FEBF5 #x9D63) Err bitreich.org 70 i- (#x8FEBF6 #x9D62) Err bitreich.org 70 i- (#x8FEBF7 #x9D65) Err bitreich.org 70 i- (#x8FEBF8 #x9D69) Err bitreich.org 70 i- (#x8FEBF9 #x9D6A) Err bitreich.org 70 i- (#x8FEBFA #x9D6B) Err bitreich.org 70 i- (#x8FEBFB #x9D70) Err bitreich.org 70 i- (#x8FEBFC #x9D76) Err bitreich.org 70 i- (#x8FEBFD #x9D77) Err bitreich.org 70 i- (#x8FEBFE #x9D7B) Err bitreich.org 70 i- (#x8FECA1 #x9D7C) Err bitreich.org 70 i- (#x8FECA2 #x9D7E) Err bitreich.org 70 i- (#x8FECA3 #x9D83) Err bitreich.org 70 i- (#x8FECA4 #x9D84) Err bitreich.org 70 i- (#x8FECA5 #x9D86) Err bitreich.org 70 i- (#x8FECA6 #x9D8A) Err bitreich.org 70 i- (#x8FECA7 #x9D8D) Err bitreich.org 70 i- (#x8FECA8 #x9D8E) Err bitreich.org 70 i- (#x8FECA9 #x9D92) Err bitreich.org 70 i- (#x8FECAA #x9D93) Err bitreich.org 70 i- (#x8FECAB #x9D95) Err bitreich.org 70 i- (#x8FECAC #x9D96) Err bitreich.org 70 i- (#x8FECAD #x9D97) Err bitreich.org 70 i- (#x8FECAE #x9D98) Err bitreich.org 70 i- (#x8FECAF #x9DA1) Err bitreich.org 70 i- (#x8FECB0 #x9DAA) Err bitreich.org 70 i- (#x8FECB1 #x9DAC) Err bitreich.org 70 i- (#x8FECB2 #x9DAE) Err bitreich.org 70 i- (#x8FECB3 #x9DB1) Err bitreich.org 70 i- (#x8FECB4 #x9DB5) Err bitreich.org 70 i- (#x8FECB5 #x9DB9) Err bitreich.org 70 i- (#x8FECB6 #x9DBC) Err bitreich.org 70 i- (#x8FECB7 #x9DBF) Err bitreich.org 70 i- (#x8FECB8 #x9DC3) Err bitreich.org 70 i- (#x8FECB9 #x9DC7) Err bitreich.org 70 i- (#x8FECBA #x9DC9) Err bitreich.org 70 i- (#x8FECBB #x9DCA) Err bitreich.org 70 i- (#x8FECBC #x9DD4) Err bitreich.org 70 i- (#x8FECBD #x9DD5) Err bitreich.org 70 i- (#x8FECBE #x9DD6) Err bitreich.org 70 i- (#x8FECBF #x9DD7) Err bitreich.org 70 i- (#x8FECC0 #x9DDA) Err bitreich.org 70 i- (#x8FECC1 #x9DDE) Err bitreich.org 70 i- (#x8FECC2 #x9DDF) Err bitreich.org 70 i- (#x8FECC3 #x9DE0) Err bitreich.org 70 i- (#x8FECC4 #x9DE5) Err bitreich.org 70 i- (#x8FECC5 #x9DE7) Err bitreich.org 70 i- (#x8FECC6 #x9DE9) Err bitreich.org 70 i- (#x8FECC7 #x9DEB) Err bitreich.org 70 i- (#x8FECC8 #x9DEE) Err bitreich.org 70 i- (#x8FECC9 #x9DF0) Err bitreich.org 70 i- (#x8FECCA #x9DF3) Err bitreich.org 70 i- (#x8FECCB #x9DF4) Err bitreich.org 70 i- (#x8FECCC #x9DFE) Err bitreich.org 70 i- (#x8FECCD #x9E0A) Err bitreich.org 70 i- (#x8FECCE #x9E02) Err bitreich.org 70 i- (#x8FECCF #x9E07) Err bitreich.org 70 i- (#x8FECD0 #x9E0E) Err bitreich.org 70 i- (#x8FECD1 #x9E10) Err bitreich.org 70 i- (#x8FECD2 #x9E11) Err bitreich.org 70 i- (#x8FECD3 #x9E12) Err bitreich.org 70 i- (#x8FECD4 #x9E15) Err bitreich.org 70 i- (#x8FECD5 #x9E16) Err bitreich.org 70 i- (#x8FECD6 #x9E19) Err bitreich.org 70 i- (#x8FECD7 #x9E1C) Err bitreich.org 70 i- (#x8FECD8 #x9E1D) Err bitreich.org 70 i- (#x8FECD9 #x9E7A) Err bitreich.org 70 i- (#x8FECDA #x9E7B) Err bitreich.org 70 i- (#x8FECDB #x9E7C) Err bitreich.org 70 i- (#x8FECDC #x9E80) Err bitreich.org 70 i- (#x8FECDD #x9E82) Err bitreich.org 70 i- (#x8FECDE #x9E83) Err bitreich.org 70 i- (#x8FECDF #x9E84) Err bitreich.org 70 i- (#x8FECE0 #x9E85) Err bitreich.org 70 i- (#x8FECE1 #x9E87) Err bitreich.org 70 i- (#x8FECE2 #x9E8E) Err bitreich.org 70 i- (#x8FECE3 #x9E8F) Err bitreich.org 70 i- (#x8FECE4 #x9E96) Err bitreich.org 70 i- (#x8FECE5 #x9E98) Err bitreich.org 70 i- (#x8FECE6 #x9E9B) Err bitreich.org 70 i- (#x8FECE7 #x9E9E) Err bitreich.org 70 i- (#x8FECE8 #x9EA4) Err bitreich.org 70 i- (#x8FECE9 #x9EA8) Err bitreich.org 70 i- (#x8FECEA #x9EAC) Err bitreich.org 70 i- (#x8FECEB #x9EAE) Err bitreich.org 70 i- (#x8FECEC #x9EAF) Err bitreich.org 70 i- (#x8FECED #x9EB0) Err bitreich.org 70 i- (#x8FECEE #x9EB3) Err bitreich.org 70 i- (#x8FECEF #x9EB4) Err bitreich.org 70 i- (#x8FECF0 #x9EB5) Err bitreich.org 70 i- (#x8FECF1 #x9EC6) Err bitreich.org 70 i- (#x8FECF2 #x9EC8) Err bitreich.org 70 i- (#x8FECF3 #x9ECB) Err bitreich.org 70 i- (#x8FECF4 #x9ED5) Err bitreich.org 70 i- (#x8FECF5 #x9EDF) Err bitreich.org 70 i- (#x8FECF6 #x9EE4) Err bitreich.org 70 i- (#x8FECF7 #x9EE7) Err bitreich.org 70 i- (#x8FECF8 #x9EEC) Err bitreich.org 70 i- (#x8FECF9 #x9EED) Err bitreich.org 70 i- (#x8FECFA #x9EEE) Err bitreich.org 70 i- (#x8FECFB #x9EF0) Err bitreich.org 70 i- (#x8FECFC #x9EF1) Err bitreich.org 70 i- (#x8FECFD #x9EF2) Err bitreich.org 70 i- (#x8FECFE #x9EF5) Err bitreich.org 70 i- (#x8FEDA1 #x9EF8) Err bitreich.org 70 i- (#x8FEDA2 #x9EFF) Err bitreich.org 70 i- (#x8FEDA3 #x9F02) Err bitreich.org 70 i- (#x8FEDA4 #x9F03) Err bitreich.org 70 i- (#x8FEDA5 #x9F09) Err bitreich.org 70 i- (#x8FEDA6 #x9F0F) Err bitreich.org 70 i- (#x8FEDA7 #x9F10) Err bitreich.org 70 i- (#x8FEDA8 #x9F11) Err bitreich.org 70 i- (#x8FEDA9 #x9F12) Err bitreich.org 70 i- (#x8FEDAA #x9F14) Err bitreich.org 70 i- (#x8FEDAB #x9F16) Err bitreich.org 70 i- (#x8FEDAC #x9F17) Err bitreich.org 70 i- (#x8FEDAD #x9F19) Err bitreich.org 70 i- (#x8FEDAE #x9F1A) Err bitreich.org 70 i- (#x8FEDAF #x9F1B) Err bitreich.org 70 i- (#x8FEDB0 #x9F1F) Err bitreich.org 70 i- (#x8FEDB1 #x9F22) Err bitreich.org 70 i- (#x8FEDB2 #x9F26) Err bitreich.org 70 i- (#x8FEDB3 #x9F2A) Err bitreich.org 70 i- (#x8FEDB4 #x9F2B) Err bitreich.org 70 i- (#x8FEDB5 #x9F2F) Err bitreich.org 70 i- (#x8FEDB6 #x9F31) Err bitreich.org 70 i- (#x8FEDB7 #x9F32) Err bitreich.org 70 i- (#x8FEDB8 #x9F34) Err bitreich.org 70 i- (#x8FEDB9 #x9F37) Err bitreich.org 70 i- (#x8FEDBA #x9F39) Err bitreich.org 70 i- (#x8FEDBB #x9F3A) Err bitreich.org 70 i- (#x8FEDBC #x9F3C) Err bitreich.org 70 i- (#x8FEDBD #x9F3D) Err bitreich.org 70 i- (#x8FEDBE #x9F3F) Err bitreich.org 70 i- (#x8FEDBF #x9F41) Err bitreich.org 70 i- (#x8FEDC0 #x9F43) Err bitreich.org 70 i- (#x8FEDC1 #x9F44) Err bitreich.org 70 i- (#x8FEDC2 #x9F45) Err bitreich.org 70 i- (#x8FEDC3 #x9F46) Err bitreich.org 70 i- (#x8FEDC4 #x9F47) Err bitreich.org 70 i- (#x8FEDC5 #x9F53) Err bitreich.org 70 i- (#x8FEDC6 #x9F55) Err bitreich.org 70 i- (#x8FEDC7 #x9F56) Err bitreich.org 70 i- (#x8FEDC8 #x9F57) Err bitreich.org 70 i- (#x8FEDC9 #x9F58) Err bitreich.org 70 i- (#x8FEDCA #x9F5A) Err bitreich.org 70 i- (#x8FEDCB #x9F5D) Err bitreich.org 70 i- (#x8FEDCC #x9F5E) Err bitreich.org 70 i- (#x8FEDCD #x9F68) Err bitreich.org 70 i- (#x8FEDCE #x9F69) Err bitreich.org 70 i- (#x8FEDCF #x9F6D) Err bitreich.org 70 i- (#x8FEDD0 #x9F6E) Err bitreich.org 70 i- (#x8FEDD1 #x9F6F) Err bitreich.org 70 i- (#x8FEDD2 #x9F70) Err bitreich.org 70 i- (#x8FEDD3 #x9F71) Err bitreich.org 70 i- (#x8FEDD4 #x9F73) Err bitreich.org 70 i- (#x8FEDD5 #x9F75) Err bitreich.org 70 i- (#x8FEDD6 #x9F7A) Err bitreich.org 70 i- (#x8FEDD7 #x9F7D) Err bitreich.org 70 i- (#x8FEDD8 #x9F8F) Err bitreich.org 70 i- (#x8FEDD9 #x9F90) Err bitreich.org 70 i- (#x8FEDDA #x9F91) Err bitreich.org 70 i- (#x8FEDDB #x9F92) Err bitreich.org 70 i- (#x8FEDDC #x9F94) Err bitreich.org 70 i- (#x8FEDDD #x9F96) Err bitreich.org 70 i- (#x8FEDDE #x9F97) Err bitreich.org 70 i- (#x8FEDDF #x9F9E) Err bitreich.org 70 i- (#x8FEDE0 #x9FA1) Err bitreich.org 70 i- (#x8FEDE1 #x9FA2) Err bitreich.org 70 i- (#x8FEDE2 #x9FA3) Err bitreich.org 70 i- (#x8FEDE3 #x9FA5) Err bitreich.org 70 i- (#x8FF5A1 #xE3AC) Err bitreich.org 70 i- (#x8FF5A2 #xE3AD) Err bitreich.org 70 i- (#x8FF5A3 #xE3AE) Err bitreich.org 70 i- (#x8FF5A4 #xE3AF) Err bitreich.org 70 i- (#x8FF5A5 #xE3B0) Err bitreich.org 70 i- (#x8FF5A6 #xE3B1) Err bitreich.org 70 i- (#x8FF5A7 #xE3B2) Err bitreich.org 70 i- (#x8FF5A8 #xE3B3) Err bitreich.org 70 i- (#x8FF5A9 #xE3B4) Err bitreich.org 70 i- (#x8FF5AA #xE3B5) Err bitreich.org 70 i- (#x8FF5AB #xE3B6) Err bitreich.org 70 i- (#x8FF5AC #xE3B7) Err bitreich.org 70 i- (#x8FF5AD #xE3B8) Err bitreich.org 70 i- (#x8FF5AE #xE3B9) Err bitreich.org 70 i- (#x8FF5AF #xE3BA) Err bitreich.org 70 i- (#x8FF5B0 #xE3BB) Err bitreich.org 70 i- (#x8FF5B1 #xE3BC) Err bitreich.org 70 i- (#x8FF5B2 #xE3BD) Err bitreich.org 70 i- (#x8FF5B3 #xE3BE) Err bitreich.org 70 i- (#x8FF5B4 #xE3BF) Err bitreich.org 70 i- (#x8FF5B5 #xE3C0) Err bitreich.org 70 i- (#x8FF5B6 #xE3C1) Err bitreich.org 70 i- (#x8FF5B7 #xE3C2) Err bitreich.org 70 i- (#x8FF5B8 #xE3C3) Err bitreich.org 70 i- (#x8FF5B9 #xE3C4) Err bitreich.org 70 i- (#x8FF5BA #xE3C5) Err bitreich.org 70 i- (#x8FF5BB #xE3C6) Err bitreich.org 70 i- (#x8FF5BC #xE3C7) Err bitreich.org 70 i- (#x8FF5BD #xE3C8) Err bitreich.org 70 i- (#x8FF5BE #xE3C9) Err bitreich.org 70 i- (#x8FF5BF #xE3CA) Err bitreich.org 70 i- (#x8FF5C0 #xE3CB) Err bitreich.org 70 i- (#x8FF5C1 #xE3CC) Err bitreich.org 70 i- (#x8FF5C2 #xE3CD) Err bitreich.org 70 i- (#x8FF5C3 #xE3CE) Err bitreich.org 70 i- (#x8FF5C4 #xE3CF) Err bitreich.org 70 i- (#x8FF5C5 #xE3D0) Err bitreich.org 70 i- (#x8FF5C6 #xE3D1) Err bitreich.org 70 i- (#x8FF5C7 #xE3D2) Err bitreich.org 70 i- (#x8FF5C8 #xE3D3) Err bitreich.org 70 i- (#x8FF5C9 #xE3D4) Err bitreich.org 70 i- (#x8FF5CA #xE3D5) Err bitreich.org 70 i- (#x8FF5CB #xE3D6) Err bitreich.org 70 i- (#x8FF5CC #xE3D7) Err bitreich.org 70 i- (#x8FF5CD #xE3D8) Err bitreich.org 70 i- (#x8FF5CE #xE3D9) Err bitreich.org 70 i- (#x8FF5CF #xE3DA) Err bitreich.org 70 i- (#x8FF5D0 #xE3DB) Err bitreich.org 70 i- (#x8FF5D1 #xE3DC) Err bitreich.org 70 i- (#x8FF5D2 #xE3DD) Err bitreich.org 70 i- (#x8FF5D3 #xE3DE) Err bitreich.org 70 i- (#x8FF5D4 #xE3DF) Err bitreich.org 70 i- (#x8FF5D5 #xE3E0) Err bitreich.org 70 i- (#x8FF5D6 #xE3E1) Err bitreich.org 70 i- (#x8FF5D7 #xE3E2) Err bitreich.org 70 i- (#x8FF5D8 #xE3E3) Err bitreich.org 70 i- (#x8FF5D9 #xE3E4) Err bitreich.org 70 i- (#x8FF5DA #xE3E5) Err bitreich.org 70 i- (#x8FF5DB #xE3E6) Err bitreich.org 70 i- (#x8FF5DC #xE3E7) Err bitreich.org 70 i- (#x8FF5DD #xE3E8) Err bitreich.org 70 i- (#x8FF5DE #xE3E9) Err bitreich.org 70 i- (#x8FF5DF #xE3EA) Err bitreich.org 70 i- (#x8FF5E0 #xE3EB) Err bitreich.org 70 i- (#x8FF5E1 #xE3EC) Err bitreich.org 70 i- (#x8FF5E2 #xE3ED) Err bitreich.org 70 i- (#x8FF5E3 #xE3EE) Err bitreich.org 70 i- (#x8FF5E4 #xE3EF) Err bitreich.org 70 i- (#x8FF5E5 #xE3F0) Err bitreich.org 70 i- (#x8FF5E6 #xE3F1) Err bitreich.org 70 i- (#x8FF5E7 #xE3F2) Err bitreich.org 70 i- (#x8FF5E8 #xE3F3) Err bitreich.org 70 i- (#x8FF5E9 #xE3F4) Err bitreich.org 70 i- (#x8FF5EA #xE3F5) Err bitreich.org 70 i- (#x8FF5EB #xE3F6) Err bitreich.org 70 i- (#x8FF5EC #xE3F7) Err bitreich.org 70 i- (#x8FF5ED #xE3F8) Err bitreich.org 70 i- (#x8FF5EE #xE3F9) Err bitreich.org 70 i- (#x8FF5EF #xE3FA) Err bitreich.org 70 i- (#x8FF5F0 #xE3FB) Err bitreich.org 70 i- (#x8FF5F1 #xE3FC) Err bitreich.org 70 i- (#x8FF5F2 #xE3FD) Err bitreich.org 70 i- (#x8FF5F3 #xE3FE) Err bitreich.org 70 i- (#x8FF5F4 #xE3FF) Err bitreich.org 70 i- (#x8FF5F5 #xE400) Err bitreich.org 70 i- (#x8FF5F6 #xE401) Err bitreich.org 70 i- (#x8FF5F7 #xE402) Err bitreich.org 70 i- (#x8FF5F8 #xE403) Err bitreich.org 70 i- (#x8FF5F9 #xE404) Err bitreich.org 70 i- (#x8FF5FA #xE405) Err bitreich.org 70 i- (#x8FF5FB #xE406) Err bitreich.org 70 i- (#x8FF5FC #xE407) Err bitreich.org 70 i- (#x8FF5FD #xE408) Err bitreich.org 70 i- (#x8FF5FE #xE409) Err bitreich.org 70 i- (#x8FF6A1 #xE40A) Err bitreich.org 70 i- (#x8FF6A2 #xE40B) Err bitreich.org 70 i- (#x8FF6A3 #xE40C) Err bitreich.org 70 i- (#x8FF6A4 #xE40D) Err bitreich.org 70 i- (#x8FF6A5 #xE40E) Err bitreich.org 70 i- (#x8FF6A6 #xE40F) Err bitreich.org 70 i- (#x8FF6A7 #xE410) Err bitreich.org 70 i- (#x8FF6A8 #xE411) Err bitreich.org 70 i- (#x8FF6A9 #xE412) Err bitreich.org 70 i- (#x8FF6AA #xE413) Err bitreich.org 70 i- (#x8FF6AB #xE414) Err bitreich.org 70 i- (#x8FF6AC #xE415) Err bitreich.org 70 i- (#x8FF6AD #xE416) Err bitreich.org 70 i- (#x8FF6AE #xE417) Err bitreich.org 70 i- (#x8FF6AF #xE418) Err bitreich.org 70 i- (#x8FF6B0 #xE419) Err bitreich.org 70 i- (#x8FF6B1 #xE41A) Err bitreich.org 70 i- (#x8FF6B2 #xE41B) Err bitreich.org 70 i- (#x8FF6B3 #xE41C) Err bitreich.org 70 i- (#x8FF6B4 #xE41D) Err bitreich.org 70 i- (#x8FF6B5 #xE41E) Err bitreich.org 70 i- (#x8FF6B6 #xE41F) Err bitreich.org 70 i- (#x8FF6B7 #xE420) Err bitreich.org 70 i- (#x8FF6B8 #xE421) Err bitreich.org 70 i- (#x8FF6B9 #xE422) Err bitreich.org 70 i- (#x8FF6BA #xE423) Err bitreich.org 70 i- (#x8FF6BB #xE424) Err bitreich.org 70 i- (#x8FF6BC #xE425) Err bitreich.org 70 i- (#x8FF6BD #xE426) Err bitreich.org 70 i- (#x8FF6BE #xE427) Err bitreich.org 70 i- (#x8FF6BF #xE428) Err bitreich.org 70 i- (#x8FF6C0 #xE429) Err bitreich.org 70 i- (#x8FF6C1 #xE42A) Err bitreich.org 70 i- (#x8FF6C2 #xE42B) Err bitreich.org 70 i- (#x8FF6C3 #xE42C) Err bitreich.org 70 i- (#x8FF6C4 #xE42D) Err bitreich.org 70 i- (#x8FF6C5 #xE42E) Err bitreich.org 70 i- (#x8FF6C6 #xE42F) Err bitreich.org 70 i- (#x8FF6C7 #xE430) Err bitreich.org 70 i- (#x8FF6C8 #xE431) Err bitreich.org 70 i- (#x8FF6C9 #xE432) Err bitreich.org 70 i- (#x8FF6CA #xE433) Err bitreich.org 70 i- (#x8FF6CB #xE434) Err bitreich.org 70 i- (#x8FF6CC #xE435) Err bitreich.org 70 i- (#x8FF6CD #xE436) Err bitreich.org 70 i- (#x8FF6CE #xE437) Err bitreich.org 70 i- (#x8FF6CF #xE438) Err bitreich.org 70 i- (#x8FF6D0 #xE439) Err bitreich.org 70 i- (#x8FF6D1 #xE43A) Err bitreich.org 70 i- (#x8FF6D2 #xE43B) Err bitreich.org 70 i- (#x8FF6D3 #xE43C) Err bitreich.org 70 i- (#x8FF6D4 #xE43D) Err bitreich.org 70 i- (#x8FF6D5 #xE43E) Err bitreich.org 70 i- (#x8FF6D6 #xE43F) Err bitreich.org 70 i- (#x8FF6D7 #xE440) Err bitreich.org 70 i- (#x8FF6D8 #xE441) Err bitreich.org 70 i- (#x8FF6D9 #xE442) Err bitreich.org 70 i- (#x8FF6DA #xE443) Err bitreich.org 70 i- (#x8FF6DB #xE444) Err bitreich.org 70 i- (#x8FF6DC #xE445) Err bitreich.org 70 i- (#x8FF6DD #xE446) Err bitreich.org 70 i- (#x8FF6DE #xE447) Err bitreich.org 70 i- (#x8FF6DF #xE448) Err bitreich.org 70 i- (#x8FF6E0 #xE449) Err bitreich.org 70 i- (#x8FF6E1 #xE44A) Err bitreich.org 70 i- (#x8FF6E2 #xE44B) Err bitreich.org 70 i- (#x8FF6E3 #xE44C) Err bitreich.org 70 i- (#x8FF6E4 #xE44D) Err bitreich.org 70 i- (#x8FF6E5 #xE44E) Err bitreich.org 70 i- (#x8FF6E6 #xE44F) Err bitreich.org 70 i- (#x8FF6E7 #xE450) Err bitreich.org 70 i- (#x8FF6E8 #xE451) Err bitreich.org 70 i- (#x8FF6E9 #xE452) Err bitreich.org 70 i- (#x8FF6EA #xE453) Err bitreich.org 70 i- (#x8FF6EB #xE454) Err bitreich.org 70 i- (#x8FF6EC #xE455) Err bitreich.org 70 i- (#x8FF6ED #xE456) Err bitreich.org 70 i- (#x8FF6EE #xE457) Err bitreich.org 70 i- (#x8FF6EF #xE458) Err bitreich.org 70 i- (#x8FF6F0 #xE459) Err bitreich.org 70 i- (#x8FF6F1 #xE45A) Err bitreich.org 70 i- (#x8FF6F2 #xE45B) Err bitreich.org 70 i- (#x8FF6F3 #xE45C) Err bitreich.org 70 i- (#x8FF6F4 #xE45D) Err bitreich.org 70 i- (#x8FF6F5 #xE45E) Err bitreich.org 70 i- (#x8FF6F6 #xE45F) Err bitreich.org 70 i- (#x8FF6F7 #xE460) Err bitreich.org 70 i- (#x8FF6F8 #xE461) Err bitreich.org 70 i- (#x8FF6F9 #xE462) Err bitreich.org 70 i- (#x8FF6FA #xE463) Err bitreich.org 70 i- (#x8FF6FB #xE464) Err bitreich.org 70 i- (#x8FF6FC #xE465) Err bitreich.org 70 i- (#x8FF6FD #xE466) Err bitreich.org 70 i- (#x8FF6FE #xE467) Err bitreich.org 70 i- (#x8FF7A1 #xE468) Err bitreich.org 70 i- (#x8FF7A2 #xE469) Err bitreich.org 70 i- (#x8FF7A3 #xE46A) Err bitreich.org 70 i- (#x8FF7A4 #xE46B) Err bitreich.org 70 i- (#x8FF7A5 #xE46C) Err bitreich.org 70 i- (#x8FF7A6 #xE46D) Err bitreich.org 70 i- (#x8FF7A7 #xE46E) Err bitreich.org 70 i- (#x8FF7A8 #xE46F) Err bitreich.org 70 i- (#x8FF7A9 #xE470) Err bitreich.org 70 i- (#x8FF7AA #xE471) Err bitreich.org 70 i- (#x8FF7AB #xE472) Err bitreich.org 70 i- (#x8FF7AC #xE473) Err bitreich.org 70 i- (#x8FF7AD #xE474) Err bitreich.org 70 i- (#x8FF7AE #xE475) Err bitreich.org 70 i- (#x8FF7AF #xE476) Err bitreich.org 70 i- (#x8FF7B0 #xE477) Err bitreich.org 70 i- (#x8FF7B1 #xE478) Err bitreich.org 70 i- (#x8FF7B2 #xE479) Err bitreich.org 70 i- (#x8FF7B3 #xE47A) Err bitreich.org 70 i- (#x8FF7B4 #xE47B) Err bitreich.org 70 i- (#x8FF7B5 #xE47C) Err bitreich.org 70 i- (#x8FF7B6 #xE47D) Err bitreich.org 70 i- (#x8FF7B7 #xE47E) Err bitreich.org 70 i- (#x8FF7B8 #xE47F) Err bitreich.org 70 i- (#x8FF7B9 #xE480) Err bitreich.org 70 i- (#x8FF7BA #xE481) Err bitreich.org 70 i- (#x8FF7BB #xE482) Err bitreich.org 70 i- (#x8FF7BC #xE483) Err bitreich.org 70 i- (#x8FF7BD #xE484) Err bitreich.org 70 i- (#x8FF7BE #xE485) Err bitreich.org 70 i- (#x8FF7BF #xE486) Err bitreich.org 70 i- (#x8FF7C0 #xE487) Err bitreich.org 70 i- (#x8FF7C1 #xE488) Err bitreich.org 70 i- (#x8FF7C2 #xE489) Err bitreich.org 70 i- (#x8FF7C3 #xE48A) Err bitreich.org 70 i- (#x8FF7C4 #xE48B) Err bitreich.org 70 i- (#x8FF7C5 #xE48C) Err bitreich.org 70 i- (#x8FF7C6 #xE48D) Err bitreich.org 70 i- (#x8FF7C7 #xE48E) Err bitreich.org 70 i- (#x8FF7C8 #xE48F) Err bitreich.org 70 i- (#x8FF7C9 #xE490) Err bitreich.org 70 i- (#x8FF7CA #xE491) Err bitreich.org 70 i- (#x8FF7CB #xE492) Err bitreich.org 70 i- (#x8FF7CC #xE493) Err bitreich.org 70 i- (#x8FF7CD #xE494) Err bitreich.org 70 i- (#x8FF7CE #xE495) Err bitreich.org 70 i- (#x8FF7CF #xE496) Err bitreich.org 70 i- (#x8FF7D0 #xE497) Err bitreich.org 70 i- (#x8FF7D1 #xE498) Err bitreich.org 70 i- (#x8FF7D2 #xE499) Err bitreich.org 70 i- (#x8FF7D3 #xE49A) Err bitreich.org 70 i- (#x8FF7D4 #xE49B) Err bitreich.org 70 i- (#x8FF7D5 #xE49C) Err bitreich.org 70 i- (#x8FF7D6 #xE49D) Err bitreich.org 70 i- (#x8FF7D7 #xE49E) Err bitreich.org 70 i- (#x8FF7D8 #xE49F) Err bitreich.org 70 i- (#x8FF7D9 #xE4A0) Err bitreich.org 70 i- (#x8FF7DA #xE4A1) Err bitreich.org 70 i- (#x8FF7DB #xE4A2) Err bitreich.org 70 i- (#x8FF7DC #xE4A3) Err bitreich.org 70 i- (#x8FF7DD #xE4A4) Err bitreich.org 70 i- (#x8FF7DE #xE4A5) Err bitreich.org 70 i- (#x8FF7DF #xE4A6) Err bitreich.org 70 i- (#x8FF7E0 #xE4A7) Err bitreich.org 70 i- (#x8FF7E1 #xE4A8) Err bitreich.org 70 i- (#x8FF7E2 #xE4A9) Err bitreich.org 70 i- (#x8FF7E3 #xE4AA) Err bitreich.org 70 i- (#x8FF7E4 #xE4AB) Err bitreich.org 70 i- (#x8FF7E5 #xE4AC) Err bitreich.org 70 i- (#x8FF7E6 #xE4AD) Err bitreich.org 70 i- (#x8FF7E7 #xE4AE) Err bitreich.org 70 i- (#x8FF7E8 #xE4AF) Err bitreich.org 70 i- (#x8FF7E9 #xE4B0) Err bitreich.org 70 i- (#x8FF7EA #xE4B1) Err bitreich.org 70 i- (#x8FF7EB #xE4B2) Err bitreich.org 70 i- (#x8FF7EC #xE4B3) Err bitreich.org 70 i- (#x8FF7ED #xE4B4) Err bitreich.org 70 i- (#x8FF7EE #xE4B5) Err bitreich.org 70 i- (#x8FF7EF #xE4B6) Err bitreich.org 70 i- (#x8FF7F0 #xE4B7) Err bitreich.org 70 i- (#x8FF7F1 #xE4B8) Err bitreich.org 70 i- (#x8FF7F2 #xE4B9) Err bitreich.org 70 i- (#x8FF7F3 #xE4BA) Err bitreich.org 70 i- (#x8FF7F4 #xE4BB) Err bitreich.org 70 i- (#x8FF7F5 #xE4BC) Err bitreich.org 70 i- (#x8FF7F6 #xE4BD) Err bitreich.org 70 i- (#x8FF7F7 #xE4BE) Err bitreich.org 70 i- (#x8FF7F8 #xE4BF) Err bitreich.org 70 i- (#x8FF7F9 #xE4C0) Err bitreich.org 70 i- (#x8FF7FA #xE4C1) Err bitreich.org 70 i- (#x8FF7FB #xE4C2) Err bitreich.org 70 i- (#x8FF7FC #xE4C3) Err bitreich.org 70 i- (#x8FF7FD #xE4C4) Err bitreich.org 70 i- (#x8FF7FE #xE4C5) Err bitreich.org 70 i- (#x8FF8A1 #xE4C6) Err bitreich.org 70 i- (#x8FF8A2 #xE4C7) Err bitreich.org 70 i- (#x8FF8A3 #xE4C8) Err bitreich.org 70 i- (#x8FF8A4 #xE4C9) Err bitreich.org 70 i- (#x8FF8A5 #xE4CA) Err bitreich.org 70 i- (#x8FF8A6 #xE4CB) Err bitreich.org 70 i- (#x8FF8A7 #xE4CC) Err bitreich.org 70 i- (#x8FF8A8 #xE4CD) Err bitreich.org 70 i- (#x8FF8A9 #xE4CE) Err bitreich.org 70 i- (#x8FF8AA #xE4CF) Err bitreich.org 70 i- (#x8FF8AB #xE4D0) Err bitreich.org 70 i- (#x8FF8AC #xE4D1) Err bitreich.org 70 i- (#x8FF8AD #xE4D2) Err bitreich.org 70 i- (#x8FF8AE #xE4D3) Err bitreich.org 70 i- (#x8FF8AF #xE4D4) Err bitreich.org 70 i- (#x8FF8B0 #xE4D5) Err bitreich.org 70 i- (#x8FF8B1 #xE4D6) Err bitreich.org 70 i- (#x8FF8B2 #xE4D7) Err bitreich.org 70 i- (#x8FF8B3 #xE4D8) Err bitreich.org 70 i- (#x8FF8B4 #xE4D9) Err bitreich.org 70 i- (#x8FF8B5 #xE4DA) Err bitreich.org 70 i- (#x8FF8B6 #xE4DB) Err bitreich.org 70 i- (#x8FF8B7 #xE4DC) Err bitreich.org 70 i- (#x8FF8B8 #xE4DD) Err bitreich.org 70 i- (#x8FF8B9 #xE4DE) Err bitreich.org 70 i- (#x8FF8BA #xE4DF) Err bitreich.org 70 i- (#x8FF8BB #xE4E0) Err bitreich.org 70 i- (#x8FF8BC #xE4E1) Err bitreich.org 70 i- (#x8FF8BD #xE4E2) Err bitreich.org 70 i- (#x8FF8BE #xE4E3) Err bitreich.org 70 i- (#x8FF8BF #xE4E4) Err bitreich.org 70 i- (#x8FF8C0 #xE4E5) Err bitreich.org 70 i- (#x8FF8C1 #xE4E6) Err bitreich.org 70 i- (#x8FF8C2 #xE4E7) Err bitreich.org 70 i- (#x8FF8C3 #xE4E8) Err bitreich.org 70 i- (#x8FF8C4 #xE4E9) Err bitreich.org 70 i- (#x8FF8C5 #xE4EA) Err bitreich.org 70 i- (#x8FF8C6 #xE4EB) Err bitreich.org 70 i- (#x8FF8C7 #xE4EC) Err bitreich.org 70 i- (#x8FF8C8 #xE4ED) Err bitreich.org 70 i- (#x8FF8C9 #xE4EE) Err bitreich.org 70 i- (#x8FF8CA #xE4EF) Err bitreich.org 70 i- (#x8FF8CB #xE4F0) Err bitreich.org 70 i- (#x8FF8CC #xE4F1) Err bitreich.org 70 i- (#x8FF8CD #xE4F2) Err bitreich.org 70 i- (#x8FF8CE #xE4F3) Err bitreich.org 70 i- (#x8FF8CF #xE4F4) Err bitreich.org 70 i- (#x8FF8D0 #xE4F5) Err bitreich.org 70 i- (#x8FF8D1 #xE4F6) Err bitreich.org 70 i- (#x8FF8D2 #xE4F7) Err bitreich.org 70 i- (#x8FF8D3 #xE4F8) Err bitreich.org 70 i- (#x8FF8D4 #xE4F9) Err bitreich.org 70 i- (#x8FF8D5 #xE4FA) Err bitreich.org 70 i- (#x8FF8D6 #xE4FB) Err bitreich.org 70 i- (#x8FF8D7 #xE4FC) Err bitreich.org 70 i- (#x8FF8D8 #xE4FD) Err bitreich.org 70 i- (#x8FF8D9 #xE4FE) Err bitreich.org 70 i- (#x8FF8DA #xE4FF) Err bitreich.org 70 i- (#x8FF8DB #xE500) Err bitreich.org 70 i- (#x8FF8DC #xE501) Err bitreich.org 70 i- (#x8FF8DD #xE502) Err bitreich.org 70 i- (#x8FF8DE #xE503) Err bitreich.org 70 i- (#x8FF8DF #xE504) Err bitreich.org 70 i- (#x8FF8E0 #xE505) Err bitreich.org 70 i- (#x8FF8E1 #xE506) Err bitreich.org 70 i- (#x8FF8E2 #xE507) Err bitreich.org 70 i- (#x8FF8E3 #xE508) Err bitreich.org 70 i- (#x8FF8E4 #xE509) Err bitreich.org 70 i- (#x8FF8E5 #xE50A) Err bitreich.org 70 i- (#x8FF8E6 #xE50B) Err bitreich.org 70 i- (#x8FF8E7 #xE50C) Err bitreich.org 70 i- (#x8FF8E8 #xE50D) Err bitreich.org 70 i- (#x8FF8E9 #xE50E) Err bitreich.org 70 i- (#x8FF8EA #xE50F) Err bitreich.org 70 i- (#x8FF8EB #xE510) Err bitreich.org 70 i- (#x8FF8EC #xE511) Err bitreich.org 70 i- (#x8FF8ED #xE512) Err bitreich.org 70 i- (#x8FF8EE #xE513) Err bitreich.org 70 i- (#x8FF8EF #xE514) Err bitreich.org 70 i- (#x8FF8F0 #xE515) Err bitreich.org 70 i- (#x8FF8F1 #xE516) Err bitreich.org 70 i- (#x8FF8F2 #xE517) Err bitreich.org 70 i- (#x8FF8F3 #xE518) Err bitreich.org 70 i- (#x8FF8F4 #xE519) Err bitreich.org 70 i- (#x8FF8F5 #xE51A) Err bitreich.org 70 i- (#x8FF8F6 #xE51B) Err bitreich.org 70 i- (#x8FF8F7 #xE51C) Err bitreich.org 70 i- (#x8FF8F8 #xE51D) Err bitreich.org 70 i- (#x8FF8F9 #xE51E) Err bitreich.org 70 i- (#x8FF8FA #xE51F) Err bitreich.org 70 i- (#x8FF8FB #xE520) Err bitreich.org 70 i- (#x8FF8FC #xE521) Err bitreich.org 70 i- (#x8FF8FD #xE522) Err bitreich.org 70 i- (#x8FF8FE #xE523) Err bitreich.org 70 i- (#x8FF9A1 #xE524) Err bitreich.org 70 i- (#x8FF9A2 #xE525) Err bitreich.org 70 i- (#x8FF9A3 #xE526) Err bitreich.org 70 i- (#x8FF9A4 #xE527) Err bitreich.org 70 i- (#x8FF9A5 #xE528) Err bitreich.org 70 i- (#x8FF9A6 #xE529) Err bitreich.org 70 i- (#x8FF9A7 #xE52A) Err bitreich.org 70 i- (#x8FF9A8 #xE52B) Err bitreich.org 70 i- (#x8FF9A9 #xE52C) Err bitreich.org 70 i- (#x8FF9AA #xE52D) Err bitreich.org 70 i- (#x8FF9AB #xE52E) Err bitreich.org 70 i- (#x8FF9AC #xE52F) Err bitreich.org 70 i- (#x8FF9AD #xE530) Err bitreich.org 70 i- (#x8FF9AE #xE531) Err bitreich.org 70 i- (#x8FF9AF #xE532) Err bitreich.org 70 i- (#x8FF9B0 #xE533) Err bitreich.org 70 i- (#x8FF9B1 #xE534) Err bitreich.org 70 i- (#x8FF9B2 #xE535) Err bitreich.org 70 i- (#x8FF9B3 #xE536) Err bitreich.org 70 i- (#x8FF9B4 #xE537) Err bitreich.org 70 i- (#x8FF9B5 #xE538) Err bitreich.org 70 i- (#x8FF9B6 #xE539) Err bitreich.org 70 i- (#x8FF9B7 #xE53A) Err bitreich.org 70 i- (#x8FF9B8 #xE53B) Err bitreich.org 70 i- (#x8FF9B9 #xE53C) Err bitreich.org 70 i- (#x8FF9BA #xE53D) Err bitreich.org 70 i- (#x8FF9BB #xE53E) Err bitreich.org 70 i- (#x8FF9BC #xE53F) Err bitreich.org 70 i- (#x8FF9BD #xE540) Err bitreich.org 70 i- (#x8FF9BE #xE541) Err bitreich.org 70 i- (#x8FF9BF #xE542) Err bitreich.org 70 i- (#x8FF9C0 #xE543) Err bitreich.org 70 i- (#x8FF9C1 #xE544) Err bitreich.org 70 i- (#x8FF9C2 #xE545) Err bitreich.org 70 i- (#x8FF9C3 #xE546) Err bitreich.org 70 i- (#x8FF9C4 #xE547) Err bitreich.org 70 i- (#x8FF9C5 #xE548) Err bitreich.org 70 i- (#x8FF9C6 #xE549) Err bitreich.org 70 i- (#x8FF9C7 #xE54A) Err bitreich.org 70 i- (#x8FF9C8 #xE54B) Err bitreich.org 70 i- (#x8FF9C9 #xE54C) Err bitreich.org 70 i- (#x8FF9CA #xE54D) Err bitreich.org 70 i- (#x8FF9CB #xE54E) Err bitreich.org 70 i- (#x8FF9CC #xE54F) Err bitreich.org 70 i- (#x8FF9CD #xE550) Err bitreich.org 70 i- (#x8FF9CE #xE551) Err bitreich.org 70 i- (#x8FF9CF #xE552) Err bitreich.org 70 i- (#x8FF9D0 #xE553) Err bitreich.org 70 i- (#x8FF9D1 #xE554) Err bitreich.org 70 i- (#x8FF9D2 #xE555) Err bitreich.org 70 i- (#x8FF9D3 #xE556) Err bitreich.org 70 i- (#x8FF9D4 #xE557) Err bitreich.org 70 i- (#x8FF9D5 #xE558) Err bitreich.org 70 i- (#x8FF9D6 #xE559) Err bitreich.org 70 i- (#x8FF9D7 #xE55A) Err bitreich.org 70 i- (#x8FF9D8 #xE55B) Err bitreich.org 70 i- (#x8FF9D9 #xE55C) Err bitreich.org 70 i- (#x8FF9DA #xE55D) Err bitreich.org 70 i- (#x8FF9DB #xE55E) Err bitreich.org 70 i- (#x8FF9DC #xE55F) Err bitreich.org 70 i- (#x8FF9DD #xE560) Err bitreich.org 70 i- (#x8FF9DE #xE561) Err bitreich.org 70 i- (#x8FF9DF #xE562) Err bitreich.org 70 i- (#x8FF9E0 #xE563) Err bitreich.org 70 i- (#x8FF9E1 #xE564) Err bitreich.org 70 i- (#x8FF9E2 #xE565) Err bitreich.org 70 i- (#x8FF9E3 #xE566) Err bitreich.org 70 i- (#x8FF9E4 #xE567) Err bitreich.org 70 i- (#x8FF9E5 #xE568) Err bitreich.org 70 i- (#x8FF9E6 #xE569) Err bitreich.org 70 i- (#x8FF9E7 #xE56A) Err bitreich.org 70 i- (#x8FF9E8 #xE56B) Err bitreich.org 70 i- (#x8FF9E9 #xE56C) Err bitreich.org 70 i- (#x8FF9EA #xE56D) Err bitreich.org 70 i- (#x8FF9EB #xE56E) Err bitreich.org 70 i- (#x8FF9EC #xE56F) Err bitreich.org 70 i- (#x8FF9ED #xE570) Err bitreich.org 70 i- (#x8FF9EE #xE571) Err bitreich.org 70 i- (#x8FF9EF #xE572) Err bitreich.org 70 i- (#x8FF9F0 #xE573) Err bitreich.org 70 i- (#x8FF9F1 #xE574) Err bitreich.org 70 i- (#x8FF9F2 #xE575) Err bitreich.org 70 i- (#x8FF9F3 #xE576) Err bitreich.org 70 i- (#x8FF9F4 #xE577) Err bitreich.org 70 i- (#x8FF9F5 #xE578) Err bitreich.org 70 i- (#x8FF9F6 #xE579) Err bitreich.org 70 i- (#x8FF9F7 #xE57A) Err bitreich.org 70 i- (#x8FF9F8 #xE57B) Err bitreich.org 70 i- (#x8FF9F9 #xE57C) Err bitreich.org 70 i- (#x8FF9FA #xE57D) Err bitreich.org 70 i- (#x8FF9FB #xE57E) Err bitreich.org 70 i- (#x8FF9FC #xE57F) Err bitreich.org 70 i- (#x8FF9FD #xE580) Err bitreich.org 70 i- (#x8FF9FE #xE581) Err bitreich.org 70 i- (#x8FFAA1 #xE582) Err bitreich.org 70 i- (#x8FFAA2 #xE583) Err bitreich.org 70 i- (#x8FFAA3 #xE584) Err bitreich.org 70 i- (#x8FFAA4 #xE585) Err bitreich.org 70 i- (#x8FFAA5 #xE586) Err bitreich.org 70 i- (#x8FFAA6 #xE587) Err bitreich.org 70 i- (#x8FFAA7 #xE588) Err bitreich.org 70 i- (#x8FFAA8 #xE589) Err bitreich.org 70 i- (#x8FFAA9 #xE58A) Err bitreich.org 70 i- (#x8FFAAA #xE58B) Err bitreich.org 70 i- (#x8FFAAB #xE58C) Err bitreich.org 70 i- (#x8FFAAC #xE58D) Err bitreich.org 70 i- (#x8FFAAD #xE58E) Err bitreich.org 70 i- (#x8FFAAE #xE58F) Err bitreich.org 70 i- (#x8FFAAF #xE590) Err bitreich.org 70 i- (#x8FFAB0 #xE591) Err bitreich.org 70 i- (#x8FFAB1 #xE592) Err bitreich.org 70 i- (#x8FFAB2 #xE593) Err bitreich.org 70 i- (#x8FFAB3 #xE594) Err bitreich.org 70 i- (#x8FFAB4 #xE595) Err bitreich.org 70 i- (#x8FFAB5 #xE596) Err bitreich.org 70 i- (#x8FFAB6 #xE597) Err bitreich.org 70 i- (#x8FFAB7 #xE598) Err bitreich.org 70 i- (#x8FFAB8 #xE599) Err bitreich.org 70 i- (#x8FFAB9 #xE59A) Err bitreich.org 70 i- (#x8FFABA #xE59B) Err bitreich.org 70 i- (#x8FFABB #xE59C) Err bitreich.org 70 i- (#x8FFABC #xE59D) Err bitreich.org 70 i- (#x8FFABD #xE59E) Err bitreich.org 70 i- (#x8FFABE #xE59F) Err bitreich.org 70 i- (#x8FFABF #xE5A0) Err bitreich.org 70 i- (#x8FFAC0 #xE5A1) Err bitreich.org 70 i- (#x8FFAC1 #xE5A2) Err bitreich.org 70 i- (#x8FFAC2 #xE5A3) Err bitreich.org 70 i- (#x8FFAC3 #xE5A4) Err bitreich.org 70 i- (#x8FFAC4 #xE5A5) Err bitreich.org 70 i- (#x8FFAC5 #xE5A6) Err bitreich.org 70 i- (#x8FFAC6 #xE5A7) Err bitreich.org 70 i- (#x8FFAC7 #xE5A8) Err bitreich.org 70 i- (#x8FFAC8 #xE5A9) Err bitreich.org 70 i- (#x8FFAC9 #xE5AA) Err bitreich.org 70 i- (#x8FFACA #xE5AB) Err bitreich.org 70 i- (#x8FFACB #xE5AC) Err bitreich.org 70 i- (#x8FFACC #xE5AD) Err bitreich.org 70 i- (#x8FFACD #xE5AE) Err bitreich.org 70 i- (#x8FFACE #xE5AF) Err bitreich.org 70 i- (#x8FFACF #xE5B0) Err bitreich.org 70 i- (#x8FFAD0 #xE5B1) Err bitreich.org 70 i- (#x8FFAD1 #xE5B2) Err bitreich.org 70 i- (#x8FFAD2 #xE5B3) Err bitreich.org 70 i- (#x8FFAD3 #xE5B4) Err bitreich.org 70 i- (#x8FFAD4 #xE5B5) Err bitreich.org 70 i- (#x8FFAD5 #xE5B6) Err bitreich.org 70 i- (#x8FFAD6 #xE5B7) Err bitreich.org 70 i- (#x8FFAD7 #xE5B8) Err bitreich.org 70 i- (#x8FFAD8 #xE5B9) Err bitreich.org 70 i- (#x8FFAD9 #xE5BA) Err bitreich.org 70 i- (#x8FFADA #xE5BB) Err bitreich.org 70 i- (#x8FFADB #xE5BC) Err bitreich.org 70 i- (#x8FFADC #xE5BD) Err bitreich.org 70 i- (#x8FFADD #xE5BE) Err bitreich.org 70 i- (#x8FFADE #xE5BF) Err bitreich.org 70 i- (#x8FFADF #xE5C0) Err bitreich.org 70 i- (#x8FFAE0 #xE5C1) Err bitreich.org 70 i- (#x8FFAE1 #xE5C2) Err bitreich.org 70 i- (#x8FFAE2 #xE5C3) Err bitreich.org 70 i- (#x8FFAE3 #xE5C4) Err bitreich.org 70 i- (#x8FFAE4 #xE5C5) Err bitreich.org 70 i- (#x8FFAE5 #xE5C6) Err bitreich.org 70 i- (#x8FFAE6 #xE5C7) Err bitreich.org 70 i- (#x8FFAE7 #xE5C8) Err bitreich.org 70 i- (#x8FFAE8 #xE5C9) Err bitreich.org 70 i- (#x8FFAE9 #xE5CA) Err bitreich.org 70 i- (#x8FFAEA #xE5CB) Err bitreich.org 70 i- (#x8FFAEB #xE5CC) Err bitreich.org 70 i- (#x8FFAEC #xE5CD) Err bitreich.org 70 i- (#x8FFAED #xE5CE) Err bitreich.org 70 i- (#x8FFAEE #xE5CF) Err bitreich.org 70 i- (#x8FFAEF #xE5D0) Err bitreich.org 70 i- (#x8FFAF0 #xE5D1) Err bitreich.org 70 i- (#x8FFAF1 #xE5D2) Err bitreich.org 70 i- (#x8FFAF2 #xE5D3) Err bitreich.org 70 i- (#x8FFAF3 #xE5D4) Err bitreich.org 70 i- (#x8FFAF4 #xE5D5) Err bitreich.org 70 i- (#x8FFAF5 #xE5D6) Err bitreich.org 70 i- (#x8FFAF6 #xE5D7) Err bitreich.org 70 i- (#x8FFAF7 #xE5D8) Err bitreich.org 70 i- (#x8FFAF8 #xE5D9) Err bitreich.org 70 i- (#x8FFAF9 #xE5DA) Err bitreich.org 70 i- (#x8FFAFA #xE5DB) Err bitreich.org 70 i- (#x8FFAFB #xE5DC) Err bitreich.org 70 i- (#x8FFAFC #xE5DD) Err bitreich.org 70 i- (#x8FFAFD #xE5DE) Err bitreich.org 70 i- (#x8FFAFE #xE5DF) Err bitreich.org 70 i- (#x8FFBA1 #xE5E0) Err bitreich.org 70 i- (#x8FFBA2 #xE5E1) Err bitreich.org 70 i- (#x8FFBA3 #xE5E2) Err bitreich.org 70 i- (#x8FFBA4 #xE5E3) Err bitreich.org 70 i- (#x8FFBA5 #xE5E4) Err bitreich.org 70 i- (#x8FFBA6 #xE5E5) Err bitreich.org 70 i- (#x8FFBA7 #xE5E6) Err bitreich.org 70 i- (#x8FFBA8 #xE5E7) Err bitreich.org 70 i- (#x8FFBA9 #xE5E8) Err bitreich.org 70 i- (#x8FFBAA #xE5E9) Err bitreich.org 70 i- (#x8FFBAB #xE5EA) Err bitreich.org 70 i- (#x8FFBAC #xE5EB) Err bitreich.org 70 i- (#x8FFBAD #xE5EC) Err bitreich.org 70 i- (#x8FFBAE #xE5ED) Err bitreich.org 70 i- (#x8FFBAF #xE5EE) Err bitreich.org 70 i- (#x8FFBB0 #xE5EF) Err bitreich.org 70 i- (#x8FFBB1 #xE5F0) Err bitreich.org 70 i- (#x8FFBB2 #xE5F1) Err bitreich.org 70 i- (#x8FFBB3 #xE5F2) Err bitreich.org 70 i- (#x8FFBB4 #xE5F3) Err bitreich.org 70 i- (#x8FFBB5 #xE5F4) Err bitreich.org 70 i- (#x8FFBB6 #xE5F5) Err bitreich.org 70 i- (#x8FFBB7 #xE5F6) Err bitreich.org 70 i- (#x8FFBB8 #xE5F7) Err bitreich.org 70 i- (#x8FFBB9 #xE5F8) Err bitreich.org 70 i- (#x8FFBBA #xE5F9) Err bitreich.org 70 i- (#x8FFBBB #xE5FA) Err bitreich.org 70 i- (#x8FFBBC #xE5FB) Err bitreich.org 70 i- (#x8FFBBD #xE5FC) Err bitreich.org 70 i- (#x8FFBBE #xE5FD) Err bitreich.org 70 i- (#x8FFBBF #xE5FE) Err bitreich.org 70 i- (#x8FFBC0 #xE5FF) Err bitreich.org 70 i- (#x8FFBC1 #xE600) Err bitreich.org 70 i- (#x8FFBC2 #xE601) Err bitreich.org 70 i- (#x8FFBC3 #xE602) Err bitreich.org 70 i- (#x8FFBC4 #xE603) Err bitreich.org 70 i- (#x8FFBC5 #xE604) Err bitreich.org 70 i- (#x8FFBC6 #xE605) Err bitreich.org 70 i- (#x8FFBC7 #xE606) Err bitreich.org 70 i- (#x8FFBC8 #xE607) Err bitreich.org 70 i- (#x8FFBC9 #xE608) Err bitreich.org 70 i- (#x8FFBCA #xE609) Err bitreich.org 70 i- (#x8FFBCB #xE60A) Err bitreich.org 70 i- (#x8FFBCC #xE60B) Err bitreich.org 70 i- (#x8FFBCD #xE60C) Err bitreich.org 70 i- (#x8FFBCE #xE60D) Err bitreich.org 70 i- (#x8FFBCF #xE60E) Err bitreich.org 70 i- (#x8FFBD0 #xE60F) Err bitreich.org 70 i- (#x8FFBD1 #xE610) Err bitreich.org 70 i- (#x8FFBD2 #xE611) Err bitreich.org 70 i- (#x8FFBD3 #xE612) Err bitreich.org 70 i- (#x8FFBD4 #xE613) Err bitreich.org 70 i- (#x8FFBD5 #xE614) Err bitreich.org 70 i- (#x8FFBD6 #xE615) Err bitreich.org 70 i- (#x8FFBD7 #xE616) Err bitreich.org 70 i- (#x8FFBD8 #xE617) Err bitreich.org 70 i- (#x8FFBD9 #xE618) Err bitreich.org 70 i- (#x8FFBDA #xE619) Err bitreich.org 70 i- (#x8FFBDB #xE61A) Err bitreich.org 70 i- (#x8FFBDC #xE61B) Err bitreich.org 70 i- (#x8FFBDD #xE61C) Err bitreich.org 70 i- (#x8FFBDE #xE61D) Err bitreich.org 70 i- (#x8FFBDF #xE61E) Err bitreich.org 70 i- (#x8FFBE0 #xE61F) Err bitreich.org 70 i- (#x8FFBE1 #xE620) Err bitreich.org 70 i- (#x8FFBE2 #xE621) Err bitreich.org 70 i- (#x8FFBE3 #xE622) Err bitreich.org 70 i- (#x8FFBE4 #xE623) Err bitreich.org 70 i- (#x8FFBE5 #xE624) Err bitreich.org 70 i- (#x8FFBE6 #xE625) Err bitreich.org 70 i- (#x8FFBE7 #xE626) Err bitreich.org 70 i- (#x8FFBE8 #xE627) Err bitreich.org 70 i- (#x8FFBE9 #xE628) Err bitreich.org 70 i- (#x8FFBEA #xE629) Err bitreich.org 70 i- (#x8FFBEB #xE62A) Err bitreich.org 70 i- (#x8FFBEC #xE62B) Err bitreich.org 70 i- (#x8FFBED #xE62C) Err bitreich.org 70 i- (#x8FFBEE #xE62D) Err bitreich.org 70 i- (#x8FFBEF #xE62E) Err bitreich.org 70 i- (#x8FFBF0 #xE62F) Err bitreich.org 70 i- (#x8FFBF1 #xE630) Err bitreich.org 70 i- (#x8FFBF2 #xE631) Err bitreich.org 70 i- (#x8FFBF3 #xE632) Err bitreich.org 70 i- (#x8FFBF4 #xE633) Err bitreich.org 70 i- (#x8FFBF5 #xE634) Err bitreich.org 70 i- (#x8FFBF6 #xE635) Err bitreich.org 70 i- (#x8FFBF7 #xE636) Err bitreich.org 70 i- (#x8FFBF8 #xE637) Err bitreich.org 70 i- (#x8FFBF9 #xE638) Err bitreich.org 70 i- (#x8FFBFA #xE639) Err bitreich.org 70 i- (#x8FFBFB #xE63A) Err bitreich.org 70 i- (#x8FFBFC #xE63B) Err bitreich.org 70 i- (#x8FFBFD #xE63C) Err bitreich.org 70 i- (#x8FFBFE #xE63D) Err bitreich.org 70 i- (#x8FFCA1 #xE63E) Err bitreich.org 70 i- (#x8FFCA2 #xE63F) Err bitreich.org 70 i- (#x8FFCA3 #xE640) Err bitreich.org 70 i- (#x8FFCA4 #xE641) Err bitreich.org 70 i- (#x8FFCA5 #xE642) Err bitreich.org 70 i- (#x8FFCA6 #xE643) Err bitreich.org 70 i- (#x8FFCA7 #xE644) Err bitreich.org 70 i- (#x8FFCA8 #xE645) Err bitreich.org 70 i- (#x8FFCA9 #xE646) Err bitreich.org 70 i- (#x8FFCAA #xE647) Err bitreich.org 70 i- (#x8FFCAB #xE648) Err bitreich.org 70 i- (#x8FFCAC #xE649) Err bitreich.org 70 i- (#x8FFCAD #xE64A) Err bitreich.org 70 i- (#x8FFCAE #xE64B) Err bitreich.org 70 i- (#x8FFCAF #xE64C) Err bitreich.org 70 i- (#x8FFCB0 #xE64D) Err bitreich.org 70 i- (#x8FFCB1 #xE64E) Err bitreich.org 70 i- (#x8FFCB2 #xE64F) Err bitreich.org 70 i- (#x8FFCB3 #xE650) Err bitreich.org 70 i- (#x8FFCB4 #xE651) Err bitreich.org 70 i- (#x8FFCB5 #xE652) Err bitreich.org 70 i- (#x8FFCB6 #xE653) Err bitreich.org 70 i- (#x8FFCB7 #xE654) Err bitreich.org 70 i- (#x8FFCB8 #xE655) Err bitreich.org 70 i- (#x8FFCB9 #xE656) Err bitreich.org 70 i- (#x8FFCBA #xE657) Err bitreich.org 70 i- (#x8FFCBB #xE658) Err bitreich.org 70 i- (#x8FFCBC #xE659) Err bitreich.org 70 i- (#x8FFCBD #xE65A) Err bitreich.org 70 i- (#x8FFCBE #xE65B) Err bitreich.org 70 i- (#x8FFCBF #xE65C) Err bitreich.org 70 i- (#x8FFCC0 #xE65D) Err bitreich.org 70 i- (#x8FFCC1 #xE65E) Err bitreich.org 70 i- (#x8FFCC2 #xE65F) Err bitreich.org 70 i- (#x8FFCC3 #xE660) Err bitreich.org 70 i- (#x8FFCC4 #xE661) Err bitreich.org 70 i- (#x8FFCC5 #xE662) Err bitreich.org 70 i- (#x8FFCC6 #xE663) Err bitreich.org 70 i- (#x8FFCC7 #xE664) Err bitreich.org 70 i- (#x8FFCC8 #xE665) Err bitreich.org 70 i- (#x8FFCC9 #xE666) Err bitreich.org 70 i- (#x8FFCCA #xE667) Err bitreich.org 70 i- (#x8FFCCB #xE668) Err bitreich.org 70 i- (#x8FFCCC #xE669) Err bitreich.org 70 i- (#x8FFCCD #xE66A) Err bitreich.org 70 i- (#x8FFCCE #xE66B) Err bitreich.org 70 i- (#x8FFCCF #xE66C) Err bitreich.org 70 i- (#x8FFCD0 #xE66D) Err bitreich.org 70 i- (#x8FFCD1 #xE66E) Err bitreich.org 70 i- (#x8FFCD2 #xE66F) Err bitreich.org 70 i- (#x8FFCD3 #xE670) Err bitreich.org 70 i- (#x8FFCD4 #xE671) Err bitreich.org 70 i- (#x8FFCD5 #xE672) Err bitreich.org 70 i- (#x8FFCD6 #xE673) Err bitreich.org 70 i- (#x8FFCD7 #xE674) Err bitreich.org 70 i- (#x8FFCD8 #xE675) Err bitreich.org 70 i- (#x8FFCD9 #xE676) Err bitreich.org 70 i- (#x8FFCDA #xE677) Err bitreich.org 70 i- (#x8FFCDB #xE678) Err bitreich.org 70 i- (#x8FFCDC #xE679) Err bitreich.org 70 i- (#x8FFCDD #xE67A) Err bitreich.org 70 i- (#x8FFCDE #xE67B) Err bitreich.org 70 i- (#x8FFCDF #xE67C) Err bitreich.org 70 i- (#x8FFCE0 #xE67D) Err bitreich.org 70 i- (#x8FFCE1 #xE67E) Err bitreich.org 70 i- (#x8FFCE2 #xE67F) Err bitreich.org 70 i- (#x8FFCE3 #xE680) Err bitreich.org 70 i- (#x8FFCE4 #xE681) Err bitreich.org 70 i- (#x8FFCE5 #xE682) Err bitreich.org 70 i- (#x8FFCE6 #xE683) Err bitreich.org 70 i- (#x8FFCE7 #xE684) Err bitreich.org 70 i- (#x8FFCE8 #xE685) Err bitreich.org 70 i- (#x8FFCE9 #xE686) Err bitreich.org 70 i- (#x8FFCEA #xE687) Err bitreich.org 70 i- (#x8FFCEB #xE688) Err bitreich.org 70 i- (#x8FFCEC #xE689) Err bitreich.org 70 i- (#x8FFCED #xE68A) Err bitreich.org 70 i- (#x8FFCEE #xE68B) Err bitreich.org 70 i- (#x8FFCEF #xE68C) Err bitreich.org 70 i- (#x8FFCF0 #xE68D) Err bitreich.org 70 i- (#x8FFCF1 #xE68E) Err bitreich.org 70 i- (#x8FFCF2 #xE68F) Err bitreich.org 70 i- (#x8FFCF3 #xE690) Err bitreich.org 70 i- (#x8FFCF4 #xE691) Err bitreich.org 70 i- (#x8FFCF5 #xE692) Err bitreich.org 70 i- (#x8FFCF6 #xE693) Err bitreich.org 70 i- (#x8FFCF7 #xE694) Err bitreich.org 70 i- (#x8FFCF8 #xE695) Err bitreich.org 70 i- (#x8FFCF9 #xE696) Err bitreich.org 70 i- (#x8FFCFA #xE697) Err bitreich.org 70 i- (#x8FFCFB #xE698) Err bitreich.org 70 i- (#x8FFCFC #xE699) Err bitreich.org 70 i- (#x8FFCFD #xE69A) Err bitreich.org 70 i- (#x8FFCFE #xE69B) Err bitreich.org 70 i- (#x8FFDA1 #xE69C) Err bitreich.org 70 i- (#x8FFDA2 #xE69D) Err bitreich.org 70 i- (#x8FFDA3 #xE69E) Err bitreich.org 70 i- (#x8FFDA4 #xE69F) Err bitreich.org 70 i- (#x8FFDA5 #xE6A0) Err bitreich.org 70 i- (#x8FFDA6 #xE6A1) Err bitreich.org 70 i- (#x8FFDA7 #xE6A2) Err bitreich.org 70 i- (#x8FFDA8 #xE6A3) Err bitreich.org 70 i- (#x8FFDA9 #xE6A4) Err bitreich.org 70 i- (#x8FFDAA #xE6A5) Err bitreich.org 70 i- (#x8FFDAB #xE6A6) Err bitreich.org 70 i- (#x8FFDAC #xE6A7) Err bitreich.org 70 i- (#x8FFDAD #xE6A8) Err bitreich.org 70 i- (#x8FFDAE #xE6A9) Err bitreich.org 70 i- (#x8FFDAF #xE6AA) Err bitreich.org 70 i- (#x8FFDB0 #xE6AB) Err bitreich.org 70 i- (#x8FFDB1 #xE6AC) Err bitreich.org 70 i- (#x8FFDB2 #xE6AD) Err bitreich.org 70 i- (#x8FFDB3 #xE6AE) Err bitreich.org 70 i- (#x8FFDB4 #xE6AF) Err bitreich.org 70 i- (#x8FFDB5 #xE6B0) Err bitreich.org 70 i- (#x8FFDB6 #xE6B1) Err bitreich.org 70 i- (#x8FFDB7 #xE6B2) Err bitreich.org 70 i- (#x8FFDB8 #xE6B3) Err bitreich.org 70 i- (#x8FFDB9 #xE6B4) Err bitreich.org 70 i- (#x8FFDBA #xE6B5) Err bitreich.org 70 i- (#x8FFDBB #xE6B6) Err bitreich.org 70 i- (#x8FFDBC #xE6B7) Err bitreich.org 70 i- (#x8FFDBD #xE6B8) Err bitreich.org 70 i- (#x8FFDBE #xE6B9) Err bitreich.org 70 i- (#x8FFDBF #xE6BA) Err bitreich.org 70 i- (#x8FFDC0 #xE6BB) Err bitreich.org 70 i- (#x8FFDC1 #xE6BC) Err bitreich.org 70 i- (#x8FFDC2 #xE6BD) Err bitreich.org 70 i- (#x8FFDC3 #xE6BE) Err bitreich.org 70 i- (#x8FFDC4 #xE6BF) Err bitreich.org 70 i- (#x8FFDC5 #xE6C0) Err bitreich.org 70 i- (#x8FFDC6 #xE6C1) Err bitreich.org 70 i- (#x8FFDC7 #xE6C2) Err bitreich.org 70 i- (#x8FFDC8 #xE6C3) Err bitreich.org 70 i- (#x8FFDC9 #xE6C4) Err bitreich.org 70 i- (#x8FFDCA #xE6C5) Err bitreich.org 70 i- (#x8FFDCB #xE6C6) Err bitreich.org 70 i- (#x8FFDCC #xE6C7) Err bitreich.org 70 i- (#x8FFDCD #xE6C8) Err bitreich.org 70 i- (#x8FFDCE #xE6C9) Err bitreich.org 70 i- (#x8FFDCF #xE6CA) Err bitreich.org 70 i- (#x8FFDD0 #xE6CB) Err bitreich.org 70 i- (#x8FFDD1 #xE6CC) Err bitreich.org 70 i- (#x8FFDD2 #xE6CD) Err bitreich.org 70 i- (#x8FFDD3 #xE6CE) Err bitreich.org 70 i- (#x8FFDD4 #xE6CF) Err bitreich.org 70 i- (#x8FFDD5 #xE6D0) Err bitreich.org 70 i- (#x8FFDD6 #xE6D1) Err bitreich.org 70 i- (#x8FFDD7 #xE6D2) Err bitreich.org 70 i- (#x8FFDD8 #xE6D3) Err bitreich.org 70 i- (#x8FFDD9 #xE6D4) Err bitreich.org 70 i- (#x8FFDDA #xE6D5) Err bitreich.org 70 i- (#x8FFDDB #xE6D6) Err bitreich.org 70 i- (#x8FFDDC #xE6D7) Err bitreich.org 70 i- (#x8FFDDD #xE6D8) Err bitreich.org 70 i- (#x8FFDDE #xE6D9) Err bitreich.org 70 i- (#x8FFDDF #xE6DA) Err bitreich.org 70 i- (#x8FFDE0 #xE6DB) Err bitreich.org 70 i- (#x8FFDE1 #xE6DC) Err bitreich.org 70 i- (#x8FFDE2 #xE6DD) Err bitreich.org 70 i- (#x8FFDE3 #xE6DE) Err bitreich.org 70 i- (#x8FFDE4 #xE6DF) Err bitreich.org 70 i- (#x8FFDE5 #xE6E0) Err bitreich.org 70 i- (#x8FFDE6 #xE6E1) Err bitreich.org 70 i- (#x8FFDE7 #xE6E2) Err bitreich.org 70 i- (#x8FFDE8 #xE6E3) Err bitreich.org 70 i- (#x8FFDE9 #xE6E4) Err bitreich.org 70 i- (#x8FFDEA #xE6E5) Err bitreich.org 70 i- (#x8FFDEB #xE6E6) Err bitreich.org 70 i- (#x8FFDEC #xE6E7) Err bitreich.org 70 i- (#x8FFDED #xE6E8) Err bitreich.org 70 i- (#x8FFDEE #xE6E9) Err bitreich.org 70 i- (#x8FFDEF #xE6EA) Err bitreich.org 70 i- (#x8FFDF0 #xE6EB) Err bitreich.org 70 i- (#x8FFDF1 #xE6EC) Err bitreich.org 70 i- (#x8FFDF2 #xE6ED) Err bitreich.org 70 i- (#x8FFDF3 #xE6EE) Err bitreich.org 70 i- (#x8FFDF4 #xE6EF) Err bitreich.org 70 i- (#x8FFDF5 #xE6F0) Err bitreich.org 70 i- (#x8FFDF6 #xE6F1) Err bitreich.org 70 i- (#x8FFDF7 #xE6F2) Err bitreich.org 70 i- (#x8FFDF8 #xE6F3) Err bitreich.org 70 i- (#x8FFDF9 #xE6F4) Err bitreich.org 70 i- (#x8FFDFA #xE6F5) Err bitreich.org 70 i- (#x8FFDFB #xE6F6) Err bitreich.org 70 i- (#x8FFDFC #xE6F7) Err bitreich.org 70 i- (#x8FFDFD #xE6F8) Err bitreich.org 70 i- (#x8FFDFE #xE6F9) Err bitreich.org 70 i- (#x8FFEA1 #xE6FA) Err bitreich.org 70 i- (#x8FFEA2 #xE6FB) Err bitreich.org 70 i- (#x8FFEA3 #xE6FC) Err bitreich.org 70 i- (#x8FFEA4 #xE6FD) Err bitreich.org 70 i- (#x8FFEA5 #xE6FE) Err bitreich.org 70 i- (#x8FFEA6 #xE6FF) Err bitreich.org 70 i- (#x8FFEA7 #xE700) Err bitreich.org 70 i- (#x8FFEA8 #xE701) Err bitreich.org 70 i- (#x8FFEA9 #xE702) Err bitreich.org 70 i- (#x8FFEAA #xE703) Err bitreich.org 70 i- (#x8FFEAB #xE704) Err bitreich.org 70 i- (#x8FFEAC #xE705) Err bitreich.org 70 i- (#x8FFEAD #xE706) Err bitreich.org 70 i- (#x8FFEAE #xE707) Err bitreich.org 70 i- (#x8FFEAF #xE708) Err bitreich.org 70 i- (#x8FFEB0 #xE709) Err bitreich.org 70 i- (#x8FFEB1 #xE70A) Err bitreich.org 70 i- (#x8FFEB2 #xE70B) Err bitreich.org 70 i- (#x8FFEB3 #xE70C) Err bitreich.org 70 i- (#x8FFEB4 #xE70D) Err bitreich.org 70 i- (#x8FFEB5 #xE70E) Err bitreich.org 70 i- (#x8FFEB6 #xE70F) Err bitreich.org 70 i- (#x8FFEB7 #xE710) Err bitreich.org 70 i- (#x8FFEB8 #xE711) Err bitreich.org 70 i- (#x8FFEB9 #xE712) Err bitreich.org 70 i- (#x8FFEBA #xE713) Err bitreich.org 70 i- (#x8FFEBB #xE714) Err bitreich.org 70 i- (#x8FFEBC #xE715) Err bitreich.org 70 i- (#x8FFEBD #xE716) Err bitreich.org 70 i- (#x8FFEBE #xE717) Err bitreich.org 70 i- (#x8FFEBF #xE718) Err bitreich.org 70 i- (#x8FFEC0 #xE719) Err bitreich.org 70 i- (#x8FFEC1 #xE71A) Err bitreich.org 70 i- (#x8FFEC2 #xE71B) Err bitreich.org 70 i- (#x8FFEC3 #xE71C) Err bitreich.org 70 i- (#x8FFEC4 #xE71D) Err bitreich.org 70 i- (#x8FFEC5 #xE71E) Err bitreich.org 70 i- (#x8FFEC6 #xE71F) Err bitreich.org 70 i- (#x8FFEC7 #xE720) Err bitreich.org 70 i- (#x8FFEC8 #xE721) Err bitreich.org 70 i- (#x8FFEC9 #xE722) Err bitreich.org 70 i- (#x8FFECA #xE723) Err bitreich.org 70 i- (#x8FFECB #xE724) Err bitreich.org 70 i- (#x8FFECC #xE725) Err bitreich.org 70 i- (#x8FFECD #xE726) Err bitreich.org 70 i- (#x8FFECE #xE727) Err bitreich.org 70 i- (#x8FFECF #xE728) Err bitreich.org 70 i- (#x8FFED0 #xE729) Err bitreich.org 70 i- (#x8FFED1 #xE72A) Err bitreich.org 70 i- (#x8FFED2 #xE72B) Err bitreich.org 70 i- (#x8FFED3 #xE72C) Err bitreich.org 70 i- (#x8FFED4 #xE72D) Err bitreich.org 70 i- (#x8FFED5 #xE72E) Err bitreich.org 70 i- (#x8FFED6 #xE72F) Err bitreich.org 70 i- (#x8FFED7 #xE730) Err bitreich.org 70 i- (#x8FFED8 #xE731) Err bitreich.org 70 i- (#x8FFED9 #xE732) Err bitreich.org 70 i- (#x8FFEDA #xE733) Err bitreich.org 70 i- (#x8FFEDB #xE734) Err bitreich.org 70 i- (#x8FFEDC #xE735) Err bitreich.org 70 i- (#x8FFEDD #xE736) Err bitreich.org 70 i- (#x8FFEDE #xE737) Err bitreich.org 70 i- (#x8FFEDF #xE738) Err bitreich.org 70 i- (#x8FFEE0 #xE739) Err bitreich.org 70 i- (#x8FFEE1 #xE73A) Err bitreich.org 70 i- (#x8FFEE2 #xE73B) Err bitreich.org 70 i- (#x8FFEE3 #xE73C) Err bitreich.org 70 i- (#x8FFEE4 #xE73D) Err bitreich.org 70 i- (#x8FFEE5 #xE73E) Err bitreich.org 70 i- (#x8FFEE6 #xE73F) Err bitreich.org 70 i- (#x8FFEE7 #xE740) Err bitreich.org 70 i- (#x8FFEE8 #xE741) Err bitreich.org 70 i- (#x8FFEE9 #xE742) Err bitreich.org 70 i- (#x8FFEEA #xE743) Err bitreich.org 70 i- (#x8FFEEB #xE744) Err bitreich.org 70 i- (#x8FFEEC #xE745) Err bitreich.org 70 i- (#x8FFEED #xE746) Err bitreich.org 70 i- (#x8FFEEE #xE747) Err bitreich.org 70 i- (#x8FFEEF #xE748) Err bitreich.org 70 i- (#x8FFEF0 #xE749) Err bitreich.org 70 i- (#x8FFEF1 #xE74A) Err bitreich.org 70 i- (#x8FFEF2 #xE74B) Err bitreich.org 70 i- (#x8FFEF3 #xE74C) Err bitreich.org 70 i- (#x8FFEF4 #xE74D) Err bitreich.org 70 i- (#x8FFEF5 #xE74E) Err bitreich.org 70 i- (#x8FFEF6 #xE74F) Err bitreich.org 70 i- (#x8FFEF7 #xE750) Err bitreich.org 70 i- (#x8FFEF8 #xE751) Err bitreich.org 70 i- (#x8FFEF9 #xE752) Err bitreich.org 70 i- (#x8FFEFA #xE753) Err bitreich.org 70 i- (#x8FFEFB #xE754) Err bitreich.org 70 i- (#x8FFEFC #xE755) Err bitreich.org 70 i- (#x8FFEFD #xE756) Err bitreich.org 70 i- (#x8FFEFE #xE757) Err bitreich.org 70 i- (#xA1A1 #x3000) Err bitreich.org 70 i- (#xA1A2 #x3001) Err bitreich.org 70 i- (#xA1A3 #x3002) Err bitreich.org 70 i- (#xA1A4 #xFF0C) Err bitreich.org 70 i- (#xA1A5 #xFF0E) Err bitreich.org 70 i- (#xA1A6 #x30FB) Err bitreich.org 70 i- (#xA1A7 #xFF1A) Err bitreich.org 70 i- (#xA1A8 #xFF1B) Err bitreich.org 70 i- (#xA1A9 #xFF1F) Err bitreich.org 70 i- (#xA1AA #xFF01) Err bitreich.org 70 i- (#xA1AB #x309B) Err bitreich.org 70 i- (#xA1AC #x309C) Err bitreich.org 70 i- (#xA1AD #xB4) Err bitreich.org 70 i- (#xA1AE #xFF40) Err bitreich.org 70 i- (#xA1AF #xA8) Err bitreich.org 70 i- (#xA1B0 #xFF3E) Err bitreich.org 70 i- (#xA1B1 #xFFE3) Err bitreich.org 70 i- (#xA1B2 #xFF3F) Err bitreich.org 70 i- (#xA1B3 #x30FD) Err bitreich.org 70 i- (#xA1B4 #x30FE) Err bitreich.org 70 i- (#xA1B5 #x309D) Err bitreich.org 70 i- (#xA1B6 #x309E) Err bitreich.org 70 i- (#xA1B7 #x3003) Err bitreich.org 70 i- (#xA1B8 #x4EDD) Err bitreich.org 70 i- (#xA1B9 #x3005) Err bitreich.org 70 i- (#xA1BA #x3006) Err bitreich.org 70 i- (#xA1BB #x3007) Err bitreich.org 70 i- (#xA1BC #x30FC) Err bitreich.org 70 i- (#xA1BD #x2015) Err bitreich.org 70 i- (#xA1BE #x2010) Err bitreich.org 70 i- (#xA1BF #xFF0F) Err bitreich.org 70 i- (#xA1C0 #xFF3C) Err bitreich.org 70 i- (#xA1C1 #x301C) Err bitreich.org 70 i- (#xA1C2 #x2016) Err bitreich.org 70 i- (#xA1C3 #xFF5C) Err bitreich.org 70 i- (#xA1C4 #x2026) Err bitreich.org 70 i- (#xA1C5 #x2025) Err bitreich.org 70 i- (#xA1C6 #x2018) Err bitreich.org 70 i- (#xA1C7 #x2019) Err bitreich.org 70 i- (#xA1C8 #x201C) Err bitreich.org 70 i- (#xA1C9 #x201D) Err bitreich.org 70 i- (#xA1CA #xFF08) Err bitreich.org 70 i- (#xA1CB #xFF09) Err bitreich.org 70 i- (#xA1CC #x3014) Err bitreich.org 70 i- (#xA1CD #x3015) Err bitreich.org 70 i- (#xA1CE #xFF3B) Err bitreich.org 70 i- (#xA1CF #xFF3D) Err bitreich.org 70 i- (#xA1D0 #xFF5B) Err bitreich.org 70 i- (#xA1D1 #xFF5D) Err bitreich.org 70 i- (#xA1D2 #x3008) Err bitreich.org 70 i- (#xA1D3 #x3009) Err bitreich.org 70 i- (#xA1D4 #x300A) Err bitreich.org 70 i- (#xA1D5 #x300B) Err bitreich.org 70 i- (#xA1D6 #x300C) Err bitreich.org 70 i- (#xA1D7 #x300D) Err bitreich.org 70 i- (#xA1D8 #x300E) Err bitreich.org 70 i- (#xA1D9 #x300F) Err bitreich.org 70 i- (#xA1DA #x3010) Err bitreich.org 70 i- (#xA1DB #x3011) Err bitreich.org 70 i- (#xA1DC #xFF0B) Err bitreich.org 70 i- (#xA1DD #x2212) Err bitreich.org 70 i- (#xA1DE #xB1) Err bitreich.org 70 i- (#xA1DF #xD7) Err bitreich.org 70 i- (#xA1E0 #xF7) Err bitreich.org 70 i- (#xA1E1 #xFF1D) Err bitreich.org 70 i- (#xA1E2 #x2260) Err bitreich.org 70 i- (#xA1E3 #xFF1C) Err bitreich.org 70 i- (#xA1E4 #xFF1E) Err bitreich.org 70 i- (#xA1E5 #x2266) Err bitreich.org 70 i- (#xA1E6 #x2267) Err bitreich.org 70 i- (#xA1E7 #x221E) Err bitreich.org 70 i- (#xA1E8 #x2234) Err bitreich.org 70 i- (#xA1E9 #x2642) Err bitreich.org 70 i- (#xA1EA #x2640) Err bitreich.org 70 i- (#xA1EB #xB0) Err bitreich.org 70 i- (#xA1EC #x2032) Err bitreich.org 70 i- (#xA1ED #x2033) Err bitreich.org 70 i- (#xA1EE #x2103) Err bitreich.org 70 i- (#xA1EF #xFFE5) Err bitreich.org 70 i- (#xA1F0 #xFF04) Err bitreich.org 70 i- (#xA1F1 #xA2) Err bitreich.org 70 i- (#xA1F2 #xA3) Err bitreich.org 70 i- (#xA1F3 #xFF05) Err bitreich.org 70 i- (#xA1F4 #xFF03) Err bitreich.org 70 i- (#xA1F5 #xFF06) Err bitreich.org 70 i- (#xA1F6 #xFF0A) Err bitreich.org 70 i- (#xA1F7 #xFF20) Err bitreich.org 70 i- (#xA1F8 #xA7) Err bitreich.org 70 i- (#xA1F9 #x2606) Err bitreich.org 70 i- (#xA1FA #x2605) Err bitreich.org 70 i- (#xA1FB #x25CB) Err bitreich.org 70 i- (#xA1FC #x25CF) Err bitreich.org 70 i- (#xA1FD #x25CE) Err bitreich.org 70 i- (#xA1FE #x25C7) Err bitreich.org 70 i- (#xA2A1 #x25C6) Err bitreich.org 70 i- (#xA2A2 #x25A1) Err bitreich.org 70 i- (#xA2A3 #x25A0) Err bitreich.org 70 i- (#xA2A4 #x25B3) Err bitreich.org 70 i- (#xA2A5 #x25B2) Err bitreich.org 70 i- (#xA2A6 #x25BD) Err bitreich.org 70 i- (#xA2A7 #x25BC) Err bitreich.org 70 i- (#xA2A8 #x203B) Err bitreich.org 70 i- (#xA2A9 #x3012) Err bitreich.org 70 i- (#xA2AA #x2192) Err bitreich.org 70 i- (#xA2AB #x2190) Err bitreich.org 70 i- (#xA2AC #x2191) Err bitreich.org 70 i- (#xA2AD #x2193) Err bitreich.org 70 i- (#xA2AE #x3013) Err bitreich.org 70 i- (#xA2BA #x2208) Err bitreich.org 70 i- (#xA2BB #x220B) Err bitreich.org 70 i- (#xA2BC #x2286) Err bitreich.org 70 i- (#xA2BD #x2287) Err bitreich.org 70 i- (#xA2BE #x2282) Err bitreich.org 70 i- (#xA2BF #x2283) Err bitreich.org 70 i- (#xA2C0 #x222A) Err bitreich.org 70 i- (#xA2C1 #x2229) Err bitreich.org 70 i- (#xA2CA #x2227) Err bitreich.org 70 i- (#xA2CB #x2228) Err bitreich.org 70 i- (#xA2CC #xAC) Err bitreich.org 70 i- (#xA2CD #x21D2) Err bitreich.org 70 i- (#xA2CE #x21D4) Err bitreich.org 70 i- (#xA2CF #x2200) Err bitreich.org 70 i- (#xA2D0 #x2203) Err bitreich.org 70 i- (#xA2DC #x2220) Err bitreich.org 70 i- (#xA2DD #x22A5) Err bitreich.org 70 i- (#xA2DE #x2312) Err bitreich.org 70 i- (#xA2DF #x2202) Err bitreich.org 70 i- (#xA2E0 #x2207) Err bitreich.org 70 i- (#xA2E1 #x2261) Err bitreich.org 70 i- (#xA2E2 #x2252) Err bitreich.org 70 i- (#xA2E3 #x226A) Err bitreich.org 70 i- (#xA2E4 #x226B) Err bitreich.org 70 i- (#xA2E5 #x221A) Err bitreich.org 70 i- (#xA2E6 #x223D) Err bitreich.org 70 i- (#xA2E7 #x221D) Err bitreich.org 70 i- (#xA2E8 #x2235) Err bitreich.org 70 i- (#xA2E9 #x222B) Err bitreich.org 70 i- (#xA2EA #x222C) Err bitreich.org 70 i- (#xA2F2 #x212B) Err bitreich.org 70 i- (#xA2F3 #x2030) Err bitreich.org 70 i- (#xA2F4 #x266F) Err bitreich.org 70 i- (#xA2F5 #x266D) Err bitreich.org 70 i- (#xA2F6 #x266A) Err bitreich.org 70 i- (#xA2F7 #x2020) Err bitreich.org 70 i- (#xA2F8 #x2021) Err bitreich.org 70 i- (#xA2F9 #xB6) Err bitreich.org 70 i- (#xA2FE #x25EF) Err bitreich.org 70 i- (#xA3B0 #xFF10) Err bitreich.org 70 i- (#xA3B1 #xFF11) Err bitreich.org 70 i- (#xA3B2 #xFF12) Err bitreich.org 70 i- (#xA3B3 #xFF13) Err bitreich.org 70 i- (#xA3B4 #xFF14) Err bitreich.org 70 i- (#xA3B5 #xFF15) Err bitreich.org 70 i- (#xA3B6 #xFF16) Err bitreich.org 70 i- (#xA3B7 #xFF17) Err bitreich.org 70 i- (#xA3B8 #xFF18) Err bitreich.org 70 i- (#xA3B9 #xFF19) Err bitreich.org 70 i- (#xA3C1 #xFF21) Err bitreich.org 70 i- (#xA3C2 #xFF22) Err bitreich.org 70 i- (#xA3C3 #xFF23) Err bitreich.org 70 i- (#xA3C4 #xFF24) Err bitreich.org 70 i- (#xA3C5 #xFF25) Err bitreich.org 70 i- (#xA3C6 #xFF26) Err bitreich.org 70 i- (#xA3C7 #xFF27) Err bitreich.org 70 i- (#xA3C8 #xFF28) Err bitreich.org 70 i- (#xA3C9 #xFF29) Err bitreich.org 70 i- (#xA3CA #xFF2A) Err bitreich.org 70 i- (#xA3CB #xFF2B) Err bitreich.org 70 i- (#xA3CC #xFF2C) Err bitreich.org 70 i- (#xA3CD #xFF2D) Err bitreich.org 70 i- (#xA3CE #xFF2E) Err bitreich.org 70 i- (#xA3CF #xFF2F) Err bitreich.org 70 i- (#xA3D0 #xFF30) Err bitreich.org 70 i- (#xA3D1 #xFF31) Err bitreich.org 70 i- (#xA3D2 #xFF32) Err bitreich.org 70 i- (#xA3D3 #xFF33) Err bitreich.org 70 i- (#xA3D4 #xFF34) Err bitreich.org 70 i- (#xA3D5 #xFF35) Err bitreich.org 70 i- (#xA3D6 #xFF36) Err bitreich.org 70 i- (#xA3D7 #xFF37) Err bitreich.org 70 i- (#xA3D8 #xFF38) Err bitreich.org 70 i- (#xA3D9 #xFF39) Err bitreich.org 70 i- (#xA3DA #xFF3A) Err bitreich.org 70 i- (#xA3E1 #xFF41) Err bitreich.org 70 i- (#xA3E2 #xFF42) Err bitreich.org 70 i- (#xA3E3 #xFF43) Err bitreich.org 70 i- (#xA3E4 #xFF44) Err bitreich.org 70 i- (#xA3E5 #xFF45) Err bitreich.org 70 i- (#xA3E6 #xFF46) Err bitreich.org 70 i- (#xA3E7 #xFF47) Err bitreich.org 70 i- (#xA3E8 #xFF48) Err bitreich.org 70 i- (#xA3E9 #xFF49) Err bitreich.org 70 i- (#xA3EA #xFF4A) Err bitreich.org 70 i- (#xA3EB #xFF4B) Err bitreich.org 70 i- (#xA3EC #xFF4C) Err bitreich.org 70 i- (#xA3ED #xFF4D) Err bitreich.org 70 i- (#xA3EE #xFF4E) Err bitreich.org 70 i- (#xA3EF #xFF4F) Err bitreich.org 70 i- (#xA3F0 #xFF50) Err bitreich.org 70 i- (#xA3F1 #xFF51) Err bitreich.org 70 i- (#xA3F2 #xFF52) Err bitreich.org 70 i- (#xA3F3 #xFF53) Err bitreich.org 70 i- (#xA3F4 #xFF54) Err bitreich.org 70 i- (#xA3F5 #xFF55) Err bitreich.org 70 i- (#xA3F6 #xFF56) Err bitreich.org 70 i- (#xA3F7 #xFF57) Err bitreich.org 70 i- (#xA3F8 #xFF58) Err bitreich.org 70 i- (#xA3F9 #xFF59) Err bitreich.org 70 i- (#xA3FA #xFF5A) Err bitreich.org 70 i- (#xA4A1 #x3041) Err bitreich.org 70 i- (#xA4A2 #x3042) Err bitreich.org 70 i- (#xA4A3 #x3043) Err bitreich.org 70 i- (#xA4A4 #x3044) Err bitreich.org 70 i- (#xA4A5 #x3045) Err bitreich.org 70 i- (#xA4A6 #x3046) Err bitreich.org 70 i- (#xA4A7 #x3047) Err bitreich.org 70 i- (#xA4A8 #x3048) Err bitreich.org 70 i- (#xA4A9 #x3049) Err bitreich.org 70 i- (#xA4AA #x304A) Err bitreich.org 70 i- (#xA4AB #x304B) Err bitreich.org 70 i- (#xA4AC #x304C) Err bitreich.org 70 i- (#xA4AD #x304D) Err bitreich.org 70 i- (#xA4AE #x304E) Err bitreich.org 70 i- (#xA4AF #x304F) Err bitreich.org 70 i- (#xA4B0 #x3050) Err bitreich.org 70 i- (#xA4B1 #x3051) Err bitreich.org 70 i- (#xA4B2 #x3052) Err bitreich.org 70 i- (#xA4B3 #x3053) Err bitreich.org 70 i- (#xA4B4 #x3054) Err bitreich.org 70 i- (#xA4B5 #x3055) Err bitreich.org 70 i- (#xA4B6 #x3056) Err bitreich.org 70 i- (#xA4B7 #x3057) Err bitreich.org 70 i- (#xA4B8 #x3058) Err bitreich.org 70 i- (#xA4B9 #x3059) Err bitreich.org 70 i- (#xA4BA #x305A) Err bitreich.org 70 i- (#xA4BB #x305B) Err bitreich.org 70 i- (#xA4BC #x305C) Err bitreich.org 70 i- (#xA4BD #x305D) Err bitreich.org 70 i- (#xA4BE #x305E) Err bitreich.org 70 i- (#xA4BF #x305F) Err bitreich.org 70 i- (#xA4C0 #x3060) Err bitreich.org 70 i- (#xA4C1 #x3061) Err bitreich.org 70 i- (#xA4C2 #x3062) Err bitreich.org 70 i- (#xA4C3 #x3063) Err bitreich.org 70 i- (#xA4C4 #x3064) Err bitreich.org 70 i- (#xA4C5 #x3065) Err bitreich.org 70 i- (#xA4C6 #x3066) Err bitreich.org 70 i- (#xA4C7 #x3067) Err bitreich.org 70 i- (#xA4C8 #x3068) Err bitreich.org 70 i- (#xA4C9 #x3069) Err bitreich.org 70 i- (#xA4CA #x306A) Err bitreich.org 70 i- (#xA4CB #x306B) Err bitreich.org 70 i- (#xA4CC #x306C) Err bitreich.org 70 i- (#xA4CD #x306D) Err bitreich.org 70 i- (#xA4CE #x306E) Err bitreich.org 70 i- (#xA4CF #x306F) Err bitreich.org 70 i- (#xA4D0 #x3070) Err bitreich.org 70 i- (#xA4D1 #x3071) Err bitreich.org 70 i- (#xA4D2 #x3072) Err bitreich.org 70 i- (#xA4D3 #x3073) Err bitreich.org 70 i- (#xA4D4 #x3074) Err bitreich.org 70 i- (#xA4D5 #x3075) Err bitreich.org 70 i- (#xA4D6 #x3076) Err bitreich.org 70 i- (#xA4D7 #x3077) Err bitreich.org 70 i- (#xA4D8 #x3078) Err bitreich.org 70 i- (#xA4D9 #x3079) Err bitreich.org 70 i- (#xA4DA #x307A) Err bitreich.org 70 i- (#xA4DB #x307B) Err bitreich.org 70 i- (#xA4DC #x307C) Err bitreich.org 70 i- (#xA4DD #x307D) Err bitreich.org 70 i- (#xA4DE #x307E) Err bitreich.org 70 i- (#xA4DF #x307F) Err bitreich.org 70 i- (#xA4E0 #x3080) Err bitreich.org 70 i- (#xA4E1 #x3081) Err bitreich.org 70 i- (#xA4E2 #x3082) Err bitreich.org 70 i- (#xA4E3 #x3083) Err bitreich.org 70 i- (#xA4E4 #x3084) Err bitreich.org 70 i- (#xA4E5 #x3085) Err bitreich.org 70 i- (#xA4E6 #x3086) Err bitreich.org 70 i- (#xA4E7 #x3087) Err bitreich.org 70 i- (#xA4E8 #x3088) Err bitreich.org 70 i- (#xA4E9 #x3089) Err bitreich.org 70 i- (#xA4EA #x308A) Err bitreich.org 70 i- (#xA4EB #x308B) Err bitreich.org 70 i- (#xA4EC #x308C) Err bitreich.org 70 i- (#xA4ED #x308D) Err bitreich.org 70 i- (#xA4EE #x308E) Err bitreich.org 70 i- (#xA4EF #x308F) Err bitreich.org 70 i- (#xA4F0 #x3090) Err bitreich.org 70 i- (#xA4F1 #x3091) Err bitreich.org 70 i- (#xA4F2 #x3092) Err bitreich.org 70 i- (#xA4F3 #x3093) Err bitreich.org 70 i- (#xA5A1 #x30A1) Err bitreich.org 70 i- (#xA5A2 #x30A2) Err bitreich.org 70 i- (#xA5A3 #x30A3) Err bitreich.org 70 i- (#xA5A4 #x30A4) Err bitreich.org 70 i- (#xA5A5 #x30A5) Err bitreich.org 70 i- (#xA5A6 #x30A6) Err bitreich.org 70 i- (#xA5A7 #x30A7) Err bitreich.org 70 i- (#xA5A8 #x30A8) Err bitreich.org 70 i- (#xA5A9 #x30A9) Err bitreich.org 70 i- (#xA5AA #x30AA) Err bitreich.org 70 i- (#xA5AB #x30AB) Err bitreich.org 70 i- (#xA5AC #x30AC) Err bitreich.org 70 i- (#xA5AD #x30AD) Err bitreich.org 70 i- (#xA5AE #x30AE) Err bitreich.org 70 i- (#xA5AF #x30AF) Err bitreich.org 70 i- (#xA5B0 #x30B0) Err bitreich.org 70 i- (#xA5B1 #x30B1) Err bitreich.org 70 i- (#xA5B2 #x30B2) Err bitreich.org 70 i- (#xA5B3 #x30B3) Err bitreich.org 70 i- (#xA5B4 #x30B4) Err bitreich.org 70 i- (#xA5B5 #x30B5) Err bitreich.org 70 i- (#xA5B6 #x30B6) Err bitreich.org 70 i- (#xA5B7 #x30B7) Err bitreich.org 70 i- (#xA5B8 #x30B8) Err bitreich.org 70 i- (#xA5B9 #x30B9) Err bitreich.org 70 i- (#xA5BA #x30BA) Err bitreich.org 70 i- (#xA5BB #x30BB) Err bitreich.org 70 i- (#xA5BC #x30BC) Err bitreich.org 70 i- (#xA5BD #x30BD) Err bitreich.org 70 i- (#xA5BE #x30BE) Err bitreich.org 70 i- (#xA5BF #x30BF) Err bitreich.org 70 i- (#xA5C0 #x30C0) Err bitreich.org 70 i- (#xA5C1 #x30C1) Err bitreich.org 70 i- (#xA5C2 #x30C2) Err bitreich.org 70 i- (#xA5C3 #x30C3) Err bitreich.org 70 i- (#xA5C4 #x30C4) Err bitreich.org 70 i- (#xA5C5 #x30C5) Err bitreich.org 70 i- (#xA5C6 #x30C6) Err bitreich.org 70 i- (#xA5C7 #x30C7) Err bitreich.org 70 i- (#xA5C8 #x30C8) Err bitreich.org 70 i- (#xA5C9 #x30C9) Err bitreich.org 70 i- (#xA5CA #x30CA) Err bitreich.org 70 i- (#xA5CB #x30CB) Err bitreich.org 70 i- (#xA5CC #x30CC) Err bitreich.org 70 i- (#xA5CD #x30CD) Err bitreich.org 70 i- (#xA5CE #x30CE) Err bitreich.org 70 i- (#xA5CF #x30CF) Err bitreich.org 70 i- (#xA5D0 #x30D0) Err bitreich.org 70 i- (#xA5D1 #x30D1) Err bitreich.org 70 i- (#xA5D2 #x30D2) Err bitreich.org 70 i- (#xA5D3 #x30D3) Err bitreich.org 70 i- (#xA5D4 #x30D4) Err bitreich.org 70 i- (#xA5D5 #x30D5) Err bitreich.org 70 i- (#xA5D6 #x30D6) Err bitreich.org 70 i- (#xA5D7 #x30D7) Err bitreich.org 70 i- (#xA5D8 #x30D8) Err bitreich.org 70 i- (#xA5D9 #x30D9) Err bitreich.org 70 i- (#xA5DA #x30DA) Err bitreich.org 70 i- (#xA5DB #x30DB) Err bitreich.org 70 i- (#xA5DC #x30DC) Err bitreich.org 70 i- (#xA5DD #x30DD) Err bitreich.org 70 i- (#xA5DE #x30DE) Err bitreich.org 70 i- (#xA5DF #x30DF) Err bitreich.org 70 i- (#xA5E0 #x30E0) Err bitreich.org 70 i- (#xA5E1 #x30E1) Err bitreich.org 70 i- (#xA5E2 #x30E2) Err bitreich.org 70 i- (#xA5E3 #x30E3) Err bitreich.org 70 i- (#xA5E4 #x30E4) Err bitreich.org 70 i- (#xA5E5 #x30E5) Err bitreich.org 70 i- (#xA5E6 #x30E6) Err bitreich.org 70 i- (#xA5E7 #x30E7) Err bitreich.org 70 i- (#xA5E8 #x30E8) Err bitreich.org 70 i- (#xA5E9 #x30E9) Err bitreich.org 70 i- (#xA5EA #x30EA) Err bitreich.org 70 i- (#xA5EB #x30EB) Err bitreich.org 70 i- (#xA5EC #x30EC) Err bitreich.org 70 i- (#xA5ED #x30ED) Err bitreich.org 70 i- (#xA5EE #x30EE) Err bitreich.org 70 i- (#xA5EF #x30EF) Err bitreich.org 70 i- (#xA5F0 #x30F0) Err bitreich.org 70 i- (#xA5F1 #x30F1) Err bitreich.org 70 i- (#xA5F2 #x30F2) Err bitreich.org 70 i- (#xA5F3 #x30F3) Err bitreich.org 70 i- (#xA5F4 #x30F4) Err bitreich.org 70 i- (#xA5F5 #x30F5) Err bitreich.org 70 i- (#xA5F6 #x30F6) Err bitreich.org 70 i- (#xA6A1 #x391) Err bitreich.org 70 i- (#xA6A2 #x392) Err bitreich.org 70 i- (#xA6A3 #x393) Err bitreich.org 70 i- (#xA6A4 #x394) Err bitreich.org 70 i- (#xA6A5 #x395) Err bitreich.org 70 i- (#xA6A6 #x396) Err bitreich.org 70 i- (#xA6A7 #x397) Err bitreich.org 70 i- (#xA6A8 #x398) Err bitreich.org 70 i- (#xA6A9 #x399) Err bitreich.org 70 i- (#xA6AA #x39A) Err bitreich.org 70 i- (#xA6AB #x39B) Err bitreich.org 70 i- (#xA6AC #x39C) Err bitreich.org 70 i- (#xA6AD #x39D) Err bitreich.org 70 i- (#xA6AE #x39E) Err bitreich.org 70 i- (#xA6AF #x39F) Err bitreich.org 70 i- (#xA6B0 #x3A0) Err bitreich.org 70 i- (#xA6B1 #x3A1) Err bitreich.org 70 i- (#xA6B2 #x3A3) Err bitreich.org 70 i- (#xA6B3 #x3A4) Err bitreich.org 70 i- (#xA6B4 #x3A5) Err bitreich.org 70 i- (#xA6B5 #x3A6) Err bitreich.org 70 i- (#xA6B6 #x3A7) Err bitreich.org 70 i- (#xA6B7 #x3A8) Err bitreich.org 70 i- (#xA6B8 #x3A9) Err bitreich.org 70 i- (#xA6C1 #x3B1) Err bitreich.org 70 i- (#xA6C2 #x3B2) Err bitreich.org 70 i- (#xA6C3 #x3B3) Err bitreich.org 70 i- (#xA6C4 #x3B4) Err bitreich.org 70 i- (#xA6C5 #x3B5) Err bitreich.org 70 i- (#xA6C6 #x3B6) Err bitreich.org 70 i- (#xA6C7 #x3B7) Err bitreich.org 70 i- (#xA6C8 #x3B8) Err bitreich.org 70 i- (#xA6C9 #x3B9) Err bitreich.org 70 i- (#xA6CA #x3BA) Err bitreich.org 70 i- (#xA6CB #x3BB) Err bitreich.org 70 i- (#xA6CC #x3BC) Err bitreich.org 70 i- (#xA6CD #x3BD) Err bitreich.org 70 i- (#xA6CE #x3BE) Err bitreich.org 70 i- (#xA6CF #x3BF) Err bitreich.org 70 i- (#xA6D0 #x3C0) Err bitreich.org 70 i- (#xA6D1 #x3C1) Err bitreich.org 70 i- (#xA6D2 #x3C3) Err bitreich.org 70 i- (#xA6D3 #x3C4) Err bitreich.org 70 i- (#xA6D4 #x3C5) Err bitreich.org 70 i- (#xA6D5 #x3C6) Err bitreich.org 70 i- (#xA6D6 #x3C7) Err bitreich.org 70 i- (#xA6D7 #x3C8) Err bitreich.org 70 i- (#xA6D8 #x3C9) Err bitreich.org 70 i- (#xA7A1 #x410) Err bitreich.org 70 i- (#xA7A2 #x411) Err bitreich.org 70 i- (#xA7A3 #x412) Err bitreich.org 70 i- (#xA7A4 #x413) Err bitreich.org 70 i- (#xA7A5 #x414) Err bitreich.org 70 i- (#xA7A6 #x415) Err bitreich.org 70 i- (#xA7A7 #x401) Err bitreich.org 70 i- (#xA7A8 #x416) Err bitreich.org 70 i- (#xA7A9 #x417) Err bitreich.org 70 i- (#xA7AA #x418) Err bitreich.org 70 i- (#xA7AB #x419) Err bitreich.org 70 i- (#xA7AC #x41A) Err bitreich.org 70 i- (#xA7AD #x41B) Err bitreich.org 70 i- (#xA7AE #x41C) Err bitreich.org 70 i- (#xA7AF #x41D) Err bitreich.org 70 i- (#xA7B0 #x41E) Err bitreich.org 70 i- (#xA7B1 #x41F) Err bitreich.org 70 i- (#xA7B2 #x420) Err bitreich.org 70 i- (#xA7B3 #x421) Err bitreich.org 70 i- (#xA7B4 #x422) Err bitreich.org 70 i- (#xA7B5 #x423) Err bitreich.org 70 i- (#xA7B6 #x424) Err bitreich.org 70 i- (#xA7B7 #x425) Err bitreich.org 70 i- (#xA7B8 #x426) Err bitreich.org 70 i- (#xA7B9 #x427) Err bitreich.org 70 i- (#xA7BA #x428) Err bitreich.org 70 i- (#xA7BB #x429) Err bitreich.org 70 i- (#xA7BC #x42A) Err bitreich.org 70 i- (#xA7BD #x42B) Err bitreich.org 70 i- (#xA7BE #x42C) Err bitreich.org 70 i- (#xA7BF #x42D) Err bitreich.org 70 i- (#xA7C0 #x42E) Err bitreich.org 70 i- (#xA7C1 #x42F) Err bitreich.org 70 i- (#xA7D1 #x430) Err bitreich.org 70 i- (#xA7D2 #x431) Err bitreich.org 70 i- (#xA7D3 #x432) Err bitreich.org 70 i- (#xA7D4 #x433) Err bitreich.org 70 i- (#xA7D5 #x434) Err bitreich.org 70 i- (#xA7D6 #x435) Err bitreich.org 70 i- (#xA7D7 #x451) Err bitreich.org 70 i- (#xA7D8 #x436) Err bitreich.org 70 i- (#xA7D9 #x437) Err bitreich.org 70 i- (#xA7DA #x438) Err bitreich.org 70 i- (#xA7DB #x439) Err bitreich.org 70 i- (#xA7DC #x43A) Err bitreich.org 70 i- (#xA7DD #x43B) Err bitreich.org 70 i- (#xA7DE #x43C) Err bitreich.org 70 i- (#xA7DF #x43D) Err bitreich.org 70 i- (#xA7E0 #x43E) Err bitreich.org 70 i- (#xA7E1 #x43F) Err bitreich.org 70 i- (#xA7E2 #x440) Err bitreich.org 70 i- (#xA7E3 #x441) Err bitreich.org 70 i- (#xA7E4 #x442) Err bitreich.org 70 i- (#xA7E5 #x443) Err bitreich.org 70 i- (#xA7E6 #x444) Err bitreich.org 70 i- (#xA7E7 #x445) Err bitreich.org 70 i- (#xA7E8 #x446) Err bitreich.org 70 i- (#xA7E9 #x447) Err bitreich.org 70 i- (#xA7EA #x448) Err bitreich.org 70 i- (#xA7EB #x449) Err bitreich.org 70 i- (#xA7EC #x44A) Err bitreich.org 70 i- (#xA7ED #x44B) Err bitreich.org 70 i- (#xA7EE #x44C) Err bitreich.org 70 i- (#xA7EF #x44D) Err bitreich.org 70 i- (#xA7F0 #x44E) Err bitreich.org 70 i- (#xA7F1 #x44F) Err bitreich.org 70 i- (#xA8A1 #x2500) Err bitreich.org 70 i- (#xA8A2 #x2502) Err bitreich.org 70 i- (#xA8A3 #x250C) Err bitreich.org 70 i- (#xA8A4 #x2510) Err bitreich.org 70 i- (#xA8A5 #x2518) Err bitreich.org 70 i- (#xA8A6 #x2514) Err bitreich.org 70 i- (#xA8A7 #x251C) Err bitreich.org 70 i- (#xA8A8 #x252C) Err bitreich.org 70 i- (#xA8A9 #x2524) Err bitreich.org 70 i- (#xA8AA #x2534) Err bitreich.org 70 i- (#xA8AB #x253C) Err bitreich.org 70 i- (#xA8AC #x2501) Err bitreich.org 70 i- (#xA8AD #x2503) Err bitreich.org 70 i- (#xA8AE #x250F) Err bitreich.org 70 i- (#xA8AF #x2513) Err bitreich.org 70 i- (#xA8B0 #x251B) Err bitreich.org 70 i- (#xA8B1 #x2517) Err bitreich.org 70 i- (#xA8B2 #x2523) Err bitreich.org 70 i- (#xA8B3 #x2533) Err bitreich.org 70 i- (#xA8B4 #x252B) Err bitreich.org 70 i- (#xA8B5 #x253B) Err bitreich.org 70 i- (#xA8B6 #x254B) Err bitreich.org 70 i- (#xA8B7 #x2520) Err bitreich.org 70 i- (#xA8B8 #x252F) Err bitreich.org 70 i- (#xA8B9 #x2528) Err bitreich.org 70 i- (#xA8BA #x2537) Err bitreich.org 70 i- (#xA8BB #x253F) Err bitreich.org 70 i- (#xA8BC #x251D) Err bitreich.org 70 i- (#xA8BD #x2530) Err bitreich.org 70 i- (#xA8BE #x2525) Err bitreich.org 70 i- (#xA8BF #x2538) Err bitreich.org 70 i- (#xA8C0 #x2542) Err bitreich.org 70 i- (#xB0A1 #x4E9C) Err bitreich.org 70 i- (#xB0A2 #x5516) Err bitreich.org 70 i- (#xB0A3 #x5A03) Err bitreich.org 70 i- (#xB0A4 #x963F) Err bitreich.org 70 i- (#xB0A5 #x54C0) Err bitreich.org 70 i- (#xB0A6 #x611B) Err bitreich.org 70 i- (#xB0A7 #x6328) Err bitreich.org 70 i- (#xB0A8 #x59F6) Err bitreich.org 70 i- (#xB0A9 #x9022) Err bitreich.org 70 i- (#xB0AA #x8475) Err bitreich.org 70 i- (#xB0AB #x831C) Err bitreich.org 70 i- (#xB0AC #x7A50) Err bitreich.org 70 i- (#xB0AD #x60AA) Err bitreich.org 70 i- (#xB0AE #x63E1) Err bitreich.org 70 i- (#xB0AF #x6E25) Err bitreich.org 70 i- (#xB0B0 #x65ED) Err bitreich.org 70 i- (#xB0B1 #x8466) Err bitreich.org 70 i- (#xB0B2 #x82A6) Err bitreich.org 70 i- (#xB0B3 #x9BF5) Err bitreich.org 70 i- (#xB0B4 #x6893) Err bitreich.org 70 i- (#xB0B5 #x5727) Err bitreich.org 70 i- (#xB0B6 #x65A1) Err bitreich.org 70 i- (#xB0B7 #x6271) Err bitreich.org 70 i- (#xB0B8 #x5B9B) Err bitreich.org 70 i- (#xB0B9 #x59D0) Err bitreich.org 70 i- (#xB0BA #x867B) Err bitreich.org 70 i- (#xB0BB #x98F4) Err bitreich.org 70 i- (#xB0BC #x7D62) Err bitreich.org 70 i- (#xB0BD #x7DBE) Err bitreich.org 70 i- (#xB0BE #x9B8E) Err bitreich.org 70 i- (#xB0BF #x6216) Err bitreich.org 70 i- (#xB0C0 #x7C9F) Err bitreich.org 70 i- (#xB0C1 #x88B7) Err bitreich.org 70 i- (#xB0C2 #x5B89) Err bitreich.org 70 i- (#xB0C3 #x5EB5) Err bitreich.org 70 i- (#xB0C4 #x6309) Err bitreich.org 70 i- (#xB0C5 #x6697) Err bitreich.org 70 i- (#xB0C6 #x6848) Err bitreich.org 70 i- (#xB0C7 #x95C7) Err bitreich.org 70 i- (#xB0C8 #x978D) Err bitreich.org 70 i- (#xB0C9 #x674F) Err bitreich.org 70 i- (#xB0CA #x4EE5) Err bitreich.org 70 i- (#xB0CB #x4F0A) Err bitreich.org 70 i- (#xB0CC #x4F4D) Err bitreich.org 70 i- (#xB0CD #x4F9D) Err bitreich.org 70 i- (#xB0CE #x5049) Err bitreich.org 70 i- (#xB0CF #x56F2) Err bitreich.org 70 i- (#xB0D0 #x5937) Err bitreich.org 70 i- (#xB0D1 #x59D4) Err bitreich.org 70 i- (#xB0D2 #x5A01) Err bitreich.org 70 i- (#xB0D3 #x5C09) Err bitreich.org 70 i- (#xB0D4 #x60DF) Err bitreich.org 70 i- (#xB0D5 #x610F) Err bitreich.org 70 i- (#xB0D6 #x6170) Err bitreich.org 70 i- (#xB0D7 #x6613) Err bitreich.org 70 i- (#xB0D8 #x6905) Err bitreich.org 70 i- (#xB0D9 #x70BA) Err bitreich.org 70 i- (#xB0DA #x754F) Err bitreich.org 70 i- (#xB0DB #x7570) Err bitreich.org 70 i- (#xB0DC #x79FB) Err bitreich.org 70 i- (#xB0DD #x7DAD) Err bitreich.org 70 i- (#xB0DE #x7DEF) Err bitreich.org 70 i- (#xB0DF #x80C3) Err bitreich.org 70 i- (#xB0E0 #x840E) Err bitreich.org 70 i- (#xB0E1 #x8863) Err bitreich.org 70 i- (#xB0E2 #x8B02) Err bitreich.org 70 i- (#xB0E3 #x9055) Err bitreich.org 70 i- (#xB0E4 #x907A) Err bitreich.org 70 i- (#xB0E5 #x533B) Err bitreich.org 70 i- (#xB0E6 #x4E95) Err bitreich.org 70 i- (#xB0E7 #x4EA5) Err bitreich.org 70 i- (#xB0E8 #x57DF) Err bitreich.org 70 i- (#xB0E9 #x80B2) Err bitreich.org 70 i- (#xB0EA #x90C1) Err bitreich.org 70 i- (#xB0EB #x78EF) Err bitreich.org 70 i- (#xB0EC #x4E00) Err bitreich.org 70 i- (#xB0ED #x58F1) Err bitreich.org 70 i- (#xB0EE #x6EA2) Err bitreich.org 70 i- (#xB0EF #x9038) Err bitreich.org 70 i- (#xB0F0 #x7A32) Err bitreich.org 70 i- (#xB0F1 #x8328) Err bitreich.org 70 i- (#xB0F2 #x828B) Err bitreich.org 70 i- (#xB0F3 #x9C2F) Err bitreich.org 70 i- (#xB0F4 #x5141) Err bitreich.org 70 i- (#xB0F5 #x5370) Err bitreich.org 70 i- (#xB0F6 #x54BD) Err bitreich.org 70 i- (#xB0F7 #x54E1) Err bitreich.org 70 i- (#xB0F8 #x56E0) Err bitreich.org 70 i- (#xB0F9 #x59FB) Err bitreich.org 70 i- (#xB0FA #x5F15) Err bitreich.org 70 i- (#xB0FB #x98F2) Err bitreich.org 70 i- (#xB0FC #x6DEB) Err bitreich.org 70 i- (#xB0FD #x80E4) Err bitreich.org 70 i- (#xB0FE #x852D) Err bitreich.org 70 i- (#xB1A1 #x9662) Err bitreich.org 70 i- (#xB1A2 #x9670) Err bitreich.org 70 i- (#xB1A3 #x96A0) Err bitreich.org 70 i- (#xB1A4 #x97FB) Err bitreich.org 70 i- (#xB1A5 #x540B) Err bitreich.org 70 i- (#xB1A6 #x53F3) Err bitreich.org 70 i- (#xB1A7 #x5B87) Err bitreich.org 70 i- (#xB1A8 #x70CF) Err bitreich.org 70 i- (#xB1A9 #x7FBD) Err bitreich.org 70 i- (#xB1AA #x8FC2) Err bitreich.org 70 i- (#xB1AB #x96E8) Err bitreich.org 70 i- (#xB1AC #x536F) Err bitreich.org 70 i- (#xB1AD #x9D5C) Err bitreich.org 70 i- (#xB1AE #x7ABA) Err bitreich.org 70 i- (#xB1AF #x4E11) Err bitreich.org 70 i- (#xB1B0 #x7893) Err bitreich.org 70 i- (#xB1B1 #x81FC) Err bitreich.org 70 i- (#xB1B2 #x6E26) Err bitreich.org 70 i- (#xB1B3 #x5618) Err bitreich.org 70 i- (#xB1B4 #x5504) Err bitreich.org 70 i- (#xB1B5 #x6B1D) Err bitreich.org 70 i- (#xB1B6 #x851A) Err bitreich.org 70 i- (#xB1B7 #x9C3B) Err bitreich.org 70 i- (#xB1B8 #x59E5) Err bitreich.org 70 i- (#xB1B9 #x53A9) Err bitreich.org 70 i- (#xB1BA #x6D66) Err bitreich.org 70 i- (#xB1BB #x74DC) Err bitreich.org 70 i- (#xB1BC #x958F) Err bitreich.org 70 i- (#xB1BD #x5642) Err bitreich.org 70 i- (#xB1BE #x4E91) Err bitreich.org 70 i- (#xB1BF #x904B) Err bitreich.org 70 i- (#xB1C0 #x96F2) Err bitreich.org 70 i- (#xB1C1 #x834F) Err bitreich.org 70 i- (#xB1C2 #x990C) Err bitreich.org 70 i- (#xB1C3 #x53E1) Err bitreich.org 70 i- (#xB1C4 #x55B6) Err bitreich.org 70 i- (#xB1C5 #x5B30) Err bitreich.org 70 i- (#xB1C6 #x5F71) Err bitreich.org 70 i- (#xB1C7 #x6620) Err bitreich.org 70 i- (#xB1C8 #x66F3) Err bitreich.org 70 i- (#xB1C9 #x6804) Err bitreich.org 70 i- (#xB1CA #x6C38) Err bitreich.org 70 i- (#xB1CB #x6CF3) Err bitreich.org 70 i- (#xB1CC #x6D29) Err bitreich.org 70 i- (#xB1CD #x745B) Err bitreich.org 70 i- (#xB1CE #x76C8) Err bitreich.org 70 i- (#xB1CF #x7A4E) Err bitreich.org 70 i- (#xB1D0 #x9834) Err bitreich.org 70 i- (#xB1D1 #x82F1) Err bitreich.org 70 i- (#xB1D2 #x885B) Err bitreich.org 70 i- (#xB1D3 #x8A60) Err bitreich.org 70 i- (#xB1D4 #x92ED) Err bitreich.org 70 i- (#xB1D5 #x6DB2) Err bitreich.org 70 i- (#xB1D6 #x75AB) Err bitreich.org 70 i- (#xB1D7 #x76CA) Err bitreich.org 70 i- (#xB1D8 #x99C5) Err bitreich.org 70 i- (#xB1D9 #x60A6) Err bitreich.org 70 i- (#xB1DA #x8B01) Err bitreich.org 70 i- (#xB1DB #x8D8A) Err bitreich.org 70 i- (#xB1DC #x95B2) Err bitreich.org 70 i- (#xB1DD #x698E) Err bitreich.org 70 i- (#xB1DE #x53AD) Err bitreich.org 70 i- (#xB1DF #x5186) Err bitreich.org 70 i- (#xB1E0 #x5712) Err bitreich.org 70 i- (#xB1E1 #x5830) Err bitreich.org 70 i- (#xB1E2 #x5944) Err bitreich.org 70 i- (#xB1E3 #x5BB4) Err bitreich.org 70 i- (#xB1E4 #x5EF6) Err bitreich.org 70 i- (#xB1E5 #x6028) Err bitreich.org 70 i- (#xB1E6 #x63A9) Err bitreich.org 70 i- (#xB1E7 #x63F4) Err bitreich.org 70 i- (#xB1E8 #x6CBF) Err bitreich.org 70 i- (#xB1E9 #x6F14) Err bitreich.org 70 i- (#xB1EA #x708E) Err bitreich.org 70 i- (#xB1EB #x7114) Err bitreich.org 70 i- (#xB1EC #x7159) Err bitreich.org 70 i- (#xB1ED #x71D5) Err bitreich.org 70 i- (#xB1EE #x733F) Err bitreich.org 70 i- (#xB1EF #x7E01) Err bitreich.org 70 i- (#xB1F0 #x8276) Err bitreich.org 70 i- (#xB1F1 #x82D1) Err bitreich.org 70 i- (#xB1F2 #x8597) Err bitreich.org 70 i- (#xB1F3 #x9060) Err bitreich.org 70 i- (#xB1F4 #x925B) Err bitreich.org 70 i- (#xB1F5 #x9D1B) Err bitreich.org 70 i- (#xB1F6 #x5869) Err bitreich.org 70 i- (#xB1F7 #x65BC) Err bitreich.org 70 i- (#xB1F8 #x6C5A) Err bitreich.org 70 i- (#xB1F9 #x7525) Err bitreich.org 70 i- (#xB1FA #x51F9) Err bitreich.org 70 i- (#xB1FB #x592E) Err bitreich.org 70 i- (#xB1FC #x5965) Err bitreich.org 70 i- (#xB1FD #x5F80) Err bitreich.org 70 i- (#xB1FE #x5FDC) Err bitreich.org 70 i- (#xB2A1 #x62BC) Err bitreich.org 70 i- (#xB2A2 #x65FA) Err bitreich.org 70 i- (#xB2A3 #x6A2A) Err bitreich.org 70 i- (#xB2A4 #x6B27) Err bitreich.org 70 i- (#xB2A5 #x6BB4) Err bitreich.org 70 i- (#xB2A6 #x738B) Err bitreich.org 70 i- (#xB2A7 #x7FC1) Err bitreich.org 70 i- (#xB2A8 #x8956) Err bitreich.org 70 i- (#xB2A9 #x9D2C) Err bitreich.org 70 i- (#xB2AA #x9D0E) Err bitreich.org 70 i- (#xB2AB #x9EC4) Err bitreich.org 70 i- (#xB2AC #x5CA1) Err bitreich.org 70 i- (#xB2AD #x6C96) Err bitreich.org 70 i- (#xB2AE #x837B) Err bitreich.org 70 i- (#xB2AF #x5104) Err bitreich.org 70 i- (#xB2B0 #x5C4B) Err bitreich.org 70 i- (#xB2B1 #x61B6) Err bitreich.org 70 i- (#xB2B2 #x81C6) Err bitreich.org 70 i- (#xB2B3 #x6876) Err bitreich.org 70 i- (#xB2B4 #x7261) Err bitreich.org 70 i- (#xB2B5 #x4E59) Err bitreich.org 70 i- (#xB2B6 #x4FFA) Err bitreich.org 70 i- (#xB2B7 #x5378) Err bitreich.org 70 i- (#xB2B8 #x6069) Err bitreich.org 70 i- (#xB2B9 #x6E29) Err bitreich.org 70 i- (#xB2BA #x7A4F) Err bitreich.org 70 i- (#xB2BB #x97F3) Err bitreich.org 70 i- (#xB2BC #x4E0B) Err bitreich.org 70 i- (#xB2BD #x5316) Err bitreich.org 70 i- (#xB2BE #x4EEE) Err bitreich.org 70 i- (#xB2BF #x4F55) Err bitreich.org 70 i- (#xB2C0 #x4F3D) Err bitreich.org 70 i- (#xB2C1 #x4FA1) Err bitreich.org 70 i- (#xB2C2 #x4F73) Err bitreich.org 70 i- (#xB2C3 #x52A0) Err bitreich.org 70 i- (#xB2C4 #x53EF) Err bitreich.org 70 i- (#xB2C5 #x5609) Err bitreich.org 70 i- (#xB2C6 #x590F) Err bitreich.org 70 i- (#xB2C7 #x5AC1) Err bitreich.org 70 i- (#xB2C8 #x5BB6) Err bitreich.org 70 i- (#xB2C9 #x5BE1) Err bitreich.org 70 i- (#xB2CA #x79D1) Err bitreich.org 70 i- (#xB2CB #x6687) Err bitreich.org 70 i- (#xB2CC #x679C) Err bitreich.org 70 i- (#xB2CD #x67B6) Err bitreich.org 70 i- (#xB2CE #x6B4C) Err bitreich.org 70 i- (#xB2CF #x6CB3) Err bitreich.org 70 i- (#xB2D0 #x706B) Err bitreich.org 70 i- (#xB2D1 #x73C2) Err bitreich.org 70 i- (#xB2D2 #x798D) Err bitreich.org 70 i- (#xB2D3 #x79BE) Err bitreich.org 70 i- (#xB2D4 #x7A3C) Err bitreich.org 70 i- (#xB2D5 #x7B87) Err bitreich.org 70 i- (#xB2D6 #x82B1) Err bitreich.org 70 i- (#xB2D7 #x82DB) Err bitreich.org 70 i- (#xB2D8 #x8304) Err bitreich.org 70 i- (#xB2D9 #x8377) Err bitreich.org 70 i- (#xB2DA #x83EF) Err bitreich.org 70 i- (#xB2DB #x83D3) Err bitreich.org 70 i- (#xB2DC #x8766) Err bitreich.org 70 i- (#xB2DD #x8AB2) Err bitreich.org 70 i- (#xB2DE #x5629) Err bitreich.org 70 i- (#xB2DF #x8CA8) Err bitreich.org 70 i- (#xB2E0 #x8FE6) Err bitreich.org 70 i- (#xB2E1 #x904E) Err bitreich.org 70 i- (#xB2E2 #x971E) Err bitreich.org 70 i- (#xB2E3 #x868A) Err bitreich.org 70 i- (#xB2E4 #x4FC4) Err bitreich.org 70 i- (#xB2E5 #x5CE8) Err bitreich.org 70 i- (#xB2E6 #x6211) Err bitreich.org 70 i- (#xB2E7 #x7259) Err bitreich.org 70 i- (#xB2E8 #x753B) Err bitreich.org 70 i- (#xB2E9 #x81E5) Err bitreich.org 70 i- (#xB2EA #x82BD) Err bitreich.org 70 i- (#xB2EB #x86FE) Err bitreich.org 70 i- (#xB2EC #x8CC0) Err bitreich.org 70 i- (#xB2ED #x96C5) Err bitreich.org 70 i- (#xB2EE #x9913) Err bitreich.org 70 i- (#xB2EF #x99D5) Err bitreich.org 70 i- (#xB2F0 #x4ECB) Err bitreich.org 70 i- (#xB2F1 #x4F1A) Err bitreich.org 70 i- (#xB2F2 #x89E3) Err bitreich.org 70 i- (#xB2F3 #x56DE) Err bitreich.org 70 i- (#xB2F4 #x584A) Err bitreich.org 70 i- (#xB2F5 #x58CA) Err bitreich.org 70 i- (#xB2F6 #x5EFB) Err bitreich.org 70 i- (#xB2F7 #x5FEB) Err bitreich.org 70 i- (#xB2F8 #x602A) Err bitreich.org 70 i- (#xB2F9 #x6094) Err bitreich.org 70 i- (#xB2FA #x6062) Err bitreich.org 70 i- (#xB2FB #x61D0) Err bitreich.org 70 i- (#xB2FC #x6212) Err bitreich.org 70 i- (#xB2FD #x62D0) Err bitreich.org 70 i- (#xB2FE #x6539) Err bitreich.org 70 i- (#xB3A1 #x9B41) Err bitreich.org 70 i- (#xB3A2 #x6666) Err bitreich.org 70 i- (#xB3A3 #x68B0) Err bitreich.org 70 i- (#xB3A4 #x6D77) Err bitreich.org 70 i- (#xB3A5 #x7070) Err bitreich.org 70 i- (#xB3A6 #x754C) Err bitreich.org 70 i- (#xB3A7 #x7686) Err bitreich.org 70 i- (#xB3A8 #x7D75) Err bitreich.org 70 i- (#xB3A9 #x82A5) Err bitreich.org 70 i- (#xB3AA #x87F9) Err bitreich.org 70 i- (#xB3AB #x958B) Err bitreich.org 70 i- (#xB3AC #x968E) Err bitreich.org 70 i- (#xB3AD #x8C9D) Err bitreich.org 70 i- (#xB3AE #x51F1) Err bitreich.org 70 i- (#xB3AF #x52BE) Err bitreich.org 70 i- (#xB3B0 #x5916) Err bitreich.org 70 i- (#xB3B1 #x54B3) Err bitreich.org 70 i- (#xB3B2 #x5BB3) Err bitreich.org 70 i- (#xB3B3 #x5D16) Err bitreich.org 70 i- (#xB3B4 #x6168) Err bitreich.org 70 i- (#xB3B5 #x6982) Err bitreich.org 70 i- (#xB3B6 #x6DAF) Err bitreich.org 70 i- (#xB3B7 #x788D) Err bitreich.org 70 i- (#xB3B8 #x84CB) Err bitreich.org 70 i- (#xB3B9 #x8857) Err bitreich.org 70 i- (#xB3BA #x8A72) Err bitreich.org 70 i- (#xB3BB #x93A7) Err bitreich.org 70 i- (#xB3BC #x9AB8) Err bitreich.org 70 i- (#xB3BD #x6D6C) Err bitreich.org 70 i- (#xB3BE #x99A8) Err bitreich.org 70 i- (#xB3BF #x86D9) Err bitreich.org 70 i- (#xB3C0 #x57A3) Err bitreich.org 70 i- (#xB3C1 #x67FF) Err bitreich.org 70 i- (#xB3C2 #x86CE) Err bitreich.org 70 i- (#xB3C3 #x920E) Err bitreich.org 70 i- (#xB3C4 #x5283) Err bitreich.org 70 i- (#xB3C5 #x5687) Err bitreich.org 70 i- (#xB3C6 #x5404) Err bitreich.org 70 i- (#xB3C7 #x5ED3) Err bitreich.org 70 i- (#xB3C8 #x62E1) Err bitreich.org 70 i- (#xB3C9 #x64B9) Err bitreich.org 70 i- (#xB3CA #x683C) Err bitreich.org 70 i- (#xB3CB #x6838) Err bitreich.org 70 i- (#xB3CC #x6BBB) Err bitreich.org 70 i- (#xB3CD #x7372) Err bitreich.org 70 i- (#xB3CE #x78BA) Err bitreich.org 70 i- (#xB3CF #x7A6B) Err bitreich.org 70 i- (#xB3D0 #x899A) Err bitreich.org 70 i- (#xB3D1 #x89D2) Err bitreich.org 70 i- (#xB3D2 #x8D6B) Err bitreich.org 70 i- (#xB3D3 #x8F03) Err bitreich.org 70 i- (#xB3D4 #x90ED) Err bitreich.org 70 i- (#xB3D5 #x95A3) Err bitreich.org 70 i- (#xB3D6 #x9694) Err bitreich.org 70 i- (#xB3D7 #x9769) Err bitreich.org 70 i- (#xB3D8 #x5B66) Err bitreich.org 70 i- (#xB3D9 #x5CB3) Err bitreich.org 70 i- (#xB3DA #x697D) Err bitreich.org 70 i- (#xB3DB #x984D) Err bitreich.org 70 i- (#xB3DC #x984E) Err bitreich.org 70 i- (#xB3DD #x639B) Err bitreich.org 70 i- (#xB3DE #x7B20) Err bitreich.org 70 i- (#xB3DF #x6A2B) Err bitreich.org 70 i- (#xB3E0 #x6A7F) Err bitreich.org 70 i- (#xB3E1 #x68B6) Err bitreich.org 70 i- (#xB3E2 #x9C0D) Err bitreich.org 70 i- (#xB3E3 #x6F5F) Err bitreich.org 70 i- (#xB3E4 #x5272) Err bitreich.org 70 i- (#xB3E5 #x559D) Err bitreich.org 70 i- (#xB3E6 #x6070) Err bitreich.org 70 i- (#xB3E7 #x62EC) Err bitreich.org 70 i- (#xB3E8 #x6D3B) Err bitreich.org 70 i- (#xB3E9 #x6E07) Err bitreich.org 70 i- (#xB3EA #x6ED1) Err bitreich.org 70 i- (#xB3EB #x845B) Err bitreich.org 70 i- (#xB3EC #x8910) Err bitreich.org 70 i- (#xB3ED #x8F44) Err bitreich.org 70 i- (#xB3EE #x4E14) Err bitreich.org 70 i- (#xB3EF #x9C39) Err bitreich.org 70 i- (#xB3F0 #x53F6) Err bitreich.org 70 i- (#xB3F1 #x691B) Err bitreich.org 70 i- (#xB3F2 #x6A3A) Err bitreich.org 70 i- (#xB3F3 #x9784) Err bitreich.org 70 i- (#xB3F4 #x682A) Err bitreich.org 70 i- (#xB3F5 #x515C) Err bitreich.org 70 i- (#xB3F6 #x7AC3) Err bitreich.org 70 i- (#xB3F7 #x84B2) Err bitreich.org 70 i- (#xB3F8 #x91DC) Err bitreich.org 70 i- (#xB3F9 #x938C) Err bitreich.org 70 i- (#xB3FA #x565B) Err bitreich.org 70 i- (#xB3FB #x9D28) Err bitreich.org 70 i- (#xB3FC #x6822) Err bitreich.org 70 i- (#xB3FD #x8305) Err bitreich.org 70 i- (#xB3FE #x8431) Err bitreich.org 70 i- (#xB4A1 #x7CA5) Err bitreich.org 70 i- (#xB4A2 #x5208) Err bitreich.org 70 i- (#xB4A3 #x82C5) Err bitreich.org 70 i- (#xB4A4 #x74E6) Err bitreich.org 70 i- (#xB4A5 #x4E7E) Err bitreich.org 70 i- (#xB4A6 #x4F83) Err bitreich.org 70 i- (#xB4A7 #x51A0) Err bitreich.org 70 i- (#xB4A8 #x5BD2) Err bitreich.org 70 i- (#xB4A9 #x520A) Err bitreich.org 70 i- (#xB4AA #x52D8) Err bitreich.org 70 i- (#xB4AB #x52E7) Err bitreich.org 70 i- (#xB4AC #x5DFB) Err bitreich.org 70 i- (#xB4AD #x559A) Err bitreich.org 70 i- (#xB4AE #x582A) Err bitreich.org 70 i- (#xB4AF #x59E6) Err bitreich.org 70 i- (#xB4B0 #x5B8C) Err bitreich.org 70 i- (#xB4B1 #x5B98) Err bitreich.org 70 i- (#xB4B2 #x5BDB) Err bitreich.org 70 i- (#xB4B3 #x5E72) Err bitreich.org 70 i- (#xB4B4 #x5E79) Err bitreich.org 70 i- (#xB4B5 #x60A3) Err bitreich.org 70 i- (#xB4B6 #x611F) Err bitreich.org 70 i- (#xB4B7 #x6163) Err bitreich.org 70 i- (#xB4B8 #x61BE) Err bitreich.org 70 i- (#xB4B9 #x63DB) Err bitreich.org 70 i- (#xB4BA #x6562) Err bitreich.org 70 i- (#xB4BB #x67D1) Err bitreich.org 70 i- (#xB4BC #x6853) Err bitreich.org 70 i- (#xB4BD #x68FA) Err bitreich.org 70 i- (#xB4BE #x6B3E) Err bitreich.org 70 i- (#xB4BF #x6B53) Err bitreich.org 70 i- (#xB4C0 #x6C57) Err bitreich.org 70 i- (#xB4C1 #x6F22) Err bitreich.org 70 i- (#xB4C2 #x6F97) Err bitreich.org 70 i- (#xB4C3 #x6F45) Err bitreich.org 70 i- (#xB4C4 #x74B0) Err bitreich.org 70 i- (#xB4C5 #x7518) Err bitreich.org 70 i- (#xB4C6 #x76E3) Err bitreich.org 70 i- (#xB4C7 #x770B) Err bitreich.org 70 i- (#xB4C8 #x7AFF) Err bitreich.org 70 i- (#xB4C9 #x7BA1) Err bitreich.org 70 i- (#xB4CA #x7C21) Err bitreich.org 70 i- (#xB4CB #x7DE9) Err bitreich.org 70 i- (#xB4CC #x7F36) Err bitreich.org 70 i- (#xB4CD #x7FF0) Err bitreich.org 70 i- (#xB4CE #x809D) Err bitreich.org 70 i- (#xB4CF #x8266) Err bitreich.org 70 i- (#xB4D0 #x839E) Err bitreich.org 70 i- (#xB4D1 #x89B3) Err bitreich.org 70 i- (#xB4D2 #x8ACC) Err bitreich.org 70 i- (#xB4D3 #x8CAB) Err bitreich.org 70 i- (#xB4D4 #x9084) Err bitreich.org 70 i- (#xB4D5 #x9451) Err bitreich.org 70 i- (#xB4D6 #x9593) Err bitreich.org 70 i- (#xB4D7 #x9591) Err bitreich.org 70 i- (#xB4D8 #x95A2) Err bitreich.org 70 i- (#xB4D9 #x9665) Err bitreich.org 70 i- (#xB4DA #x97D3) Err bitreich.org 70 i- (#xB4DB #x9928) Err bitreich.org 70 i- (#xB4DC #x8218) Err bitreich.org 70 i- (#xB4DD #x4E38) Err bitreich.org 70 i- (#xB4DE #x542B) Err bitreich.org 70 i- (#xB4DF #x5CB8) Err bitreich.org 70 i- (#xB4E0 #x5DCC) Err bitreich.org 70 i- (#xB4E1 #x73A9) Err bitreich.org 70 i- (#xB4E2 #x764C) Err bitreich.org 70 i- (#xB4E3 #x773C) Err bitreich.org 70 i- (#xB4E4 #x5CA9) Err bitreich.org 70 i- (#xB4E5 #x7FEB) Err bitreich.org 70 i- (#xB4E6 #x8D0B) Err bitreich.org 70 i- (#xB4E7 #x96C1) Err bitreich.org 70 i- (#xB4E8 #x9811) Err bitreich.org 70 i- (#xB4E9 #x9854) Err bitreich.org 70 i- (#xB4EA #x9858) Err bitreich.org 70 i- (#xB4EB #x4F01) Err bitreich.org 70 i- (#xB4EC #x4F0E) Err bitreich.org 70 i- (#xB4ED #x5371) Err bitreich.org 70 i- (#xB4EE #x559C) Err bitreich.org 70 i- (#xB4EF #x5668) Err bitreich.org 70 i- (#xB4F0 #x57FA) Err bitreich.org 70 i- (#xB4F1 #x5947) Err bitreich.org 70 i- (#xB4F2 #x5B09) Err bitreich.org 70 i- (#xB4F3 #x5BC4) Err bitreich.org 70 i- (#xB4F4 #x5C90) Err bitreich.org 70 i- (#xB4F5 #x5E0C) Err bitreich.org 70 i- (#xB4F6 #x5E7E) Err bitreich.org 70 i- (#xB4F7 #x5FCC) Err bitreich.org 70 i- (#xB4F8 #x63EE) Err bitreich.org 70 i- (#xB4F9 #x673A) Err bitreich.org 70 i- (#xB4FA #x65D7) Err bitreich.org 70 i- (#xB4FB #x65E2) Err bitreich.org 70 i- (#xB4FC #x671F) Err bitreich.org 70 i- (#xB4FD #x68CB) Err bitreich.org 70 i- (#xB4FE #x68C4) Err bitreich.org 70 i- (#xB5A1 #x6A5F) Err bitreich.org 70 i- (#xB5A2 #x5E30) Err bitreich.org 70 i- (#xB5A3 #x6BC5) Err bitreich.org 70 i- (#xB5A4 #x6C17) Err bitreich.org 70 i- (#xB5A5 #x6C7D) Err bitreich.org 70 i- (#xB5A6 #x757F) Err bitreich.org 70 i- (#xB5A7 #x7948) Err bitreich.org 70 i- (#xB5A8 #x5B63) Err bitreich.org 70 i- (#xB5A9 #x7A00) Err bitreich.org 70 i- (#xB5AA #x7D00) Err bitreich.org 70 i- (#xB5AB #x5FBD) Err bitreich.org 70 i- (#xB5AC #x898F) Err bitreich.org 70 i- (#xB5AD #x8A18) Err bitreich.org 70 i- (#xB5AE #x8CB4) Err bitreich.org 70 i- (#xB5AF #x8D77) Err bitreich.org 70 i- (#xB5B0 #x8ECC) Err bitreich.org 70 i- (#xB5B1 #x8F1D) Err bitreich.org 70 i- (#xB5B2 #x98E2) Err bitreich.org 70 i- (#xB5B3 #x9A0E) Err bitreich.org 70 i- (#xB5B4 #x9B3C) Err bitreich.org 70 i- (#xB5B5 #x4E80) Err bitreich.org 70 i- (#xB5B6 #x507D) Err bitreich.org 70 i- (#xB5B7 #x5100) Err bitreich.org 70 i- (#xB5B8 #x5993) Err bitreich.org 70 i- (#xB5B9 #x5B9C) Err bitreich.org 70 i- (#xB5BA #x622F) Err bitreich.org 70 i- (#xB5BB #x6280) Err bitreich.org 70 i- (#xB5BC #x64EC) Err bitreich.org 70 i- (#xB5BD #x6B3A) Err bitreich.org 70 i- (#xB5BE #x72A0) Err bitreich.org 70 i- (#xB5BF #x7591) Err bitreich.org 70 i- (#xB5C0 #x7947) Err bitreich.org 70 i- (#xB5C1 #x7FA9) Err bitreich.org 70 i- (#xB5C2 #x87FB) Err bitreich.org 70 i- (#xB5C3 #x8ABC) Err bitreich.org 70 i- (#xB5C4 #x8B70) Err bitreich.org 70 i- (#xB5C5 #x63AC) Err bitreich.org 70 i- (#xB5C6 #x83CA) Err bitreich.org 70 i- (#xB5C7 #x97A0) Err bitreich.org 70 i- (#xB5C8 #x5409) Err bitreich.org 70 i- (#xB5C9 #x5403) Err bitreich.org 70 i- (#xB5CA #x55AB) Err bitreich.org 70 i- (#xB5CB #x6854) Err bitreich.org 70 i- (#xB5CC #x6A58) Err bitreich.org 70 i- (#xB5CD #x8A70) Err bitreich.org 70 i- (#xB5CE #x7827) Err bitreich.org 70 i- (#xB5CF #x6775) Err bitreich.org 70 i- (#xB5D0 #x9ECD) Err bitreich.org 70 i- (#xB5D1 #x5374) Err bitreich.org 70 i- (#xB5D2 #x5BA2) Err bitreich.org 70 i- (#xB5D3 #x811A) Err bitreich.org 70 i- (#xB5D4 #x8650) Err bitreich.org 70 i- (#xB5D5 #x9006) Err bitreich.org 70 i- (#xB5D6 #x4E18) Err bitreich.org 70 i- (#xB5D7 #x4E45) Err bitreich.org 70 i- (#xB5D8 #x4EC7) Err bitreich.org 70 i- (#xB5D9 #x4F11) Err bitreich.org 70 i- (#xB5DA #x53CA) Err bitreich.org 70 i- (#xB5DB #x5438) Err bitreich.org 70 i- (#xB5DC #x5BAE) Err bitreich.org 70 i- (#xB5DD #x5F13) Err bitreich.org 70 i- (#xB5DE #x6025) Err bitreich.org 70 i- (#xB5DF #x6551) Err bitreich.org 70 i- (#xB5E0 #x673D) Err bitreich.org 70 i- (#xB5E1 #x6C42) Err bitreich.org 70 i- (#xB5E2 #x6C72) Err bitreich.org 70 i- (#xB5E3 #x6CE3) Err bitreich.org 70 i- (#xB5E4 #x7078) Err bitreich.org 70 i- (#xB5E5 #x7403) Err bitreich.org 70 i- (#xB5E6 #x7A76) Err bitreich.org 70 i- (#xB5E7 #x7AAE) Err bitreich.org 70 i- (#xB5E8 #x7B08) Err bitreich.org 70 i- (#xB5E9 #x7D1A) Err bitreich.org 70 i- (#xB5EA #x7CFE) Err bitreich.org 70 i- (#xB5EB #x7D66) Err bitreich.org 70 i- (#xB5EC #x65E7) Err bitreich.org 70 i- (#xB5ED #x725B) Err bitreich.org 70 i- (#xB5EE #x53BB) Err bitreich.org 70 i- (#xB5EF #x5C45) Err bitreich.org 70 i- (#xB5F0 #x5DE8) Err bitreich.org 70 i- (#xB5F1 #x62D2) Err bitreich.org 70 i- (#xB5F2 #x62E0) Err bitreich.org 70 i- (#xB5F3 #x6319) Err bitreich.org 70 i- (#xB5F4 #x6E20) Err bitreich.org 70 i- (#xB5F5 #x865A) Err bitreich.org 70 i- (#xB5F6 #x8A31) Err bitreich.org 70 i- (#xB5F7 #x8DDD) Err bitreich.org 70 i- (#xB5F8 #x92F8) Err bitreich.org 70 i- (#xB5F9 #x6F01) Err bitreich.org 70 i- (#xB5FA #x79A6) Err bitreich.org 70 i- (#xB5FB #x9B5A) Err bitreich.org 70 i- (#xB5FC #x4EA8) Err bitreich.org 70 i- (#xB5FD #x4EAB) Err bitreich.org 70 i- (#xB5FE #x4EAC) Err bitreich.org 70 i- (#xB6A1 #x4F9B) Err bitreich.org 70 i- (#xB6A2 #x4FA0) Err bitreich.org 70 i- (#xB6A3 #x50D1) Err bitreich.org 70 i- (#xB6A4 #x5147) Err bitreich.org 70 i- (#xB6A5 #x7AF6) Err bitreich.org 70 i- (#xB6A6 #x5171) Err bitreich.org 70 i- (#xB6A7 #x51F6) Err bitreich.org 70 i- (#xB6A8 #x5354) Err bitreich.org 70 i- (#xB6A9 #x5321) Err bitreich.org 70 i- (#xB6AA #x537F) Err bitreich.org 70 i- (#xB6AB #x53EB) Err bitreich.org 70 i- (#xB6AC #x55AC) Err bitreich.org 70 i- (#xB6AD #x5883) Err bitreich.org 70 i- (#xB6AE #x5CE1) Err bitreich.org 70 i- (#xB6AF #x5F37) Err bitreich.org 70 i- (#xB6B0 #x5F4A) Err bitreich.org 70 i- (#xB6B1 #x602F) Err bitreich.org 70 i- (#xB6B2 #x6050) Err bitreich.org 70 i- (#xB6B3 #x606D) Err bitreich.org 70 i- (#xB6B4 #x631F) Err bitreich.org 70 i- (#xB6B5 #x6559) Err bitreich.org 70 i- (#xB6B6 #x6A4B) Err bitreich.org 70 i- (#xB6B7 #x6CC1) Err bitreich.org 70 i- (#xB6B8 #x72C2) Err bitreich.org 70 i- (#xB6B9 #x72ED) Err bitreich.org 70 i- (#xB6BA #x77EF) Err bitreich.org 70 i- (#xB6BB #x80F8) Err bitreich.org 70 i- (#xB6BC #x8105) Err bitreich.org 70 i- (#xB6BD #x8208) Err bitreich.org 70 i- (#xB6BE #x854E) Err bitreich.org 70 i- (#xB6BF #x90F7) Err bitreich.org 70 i- (#xB6C0 #x93E1) Err bitreich.org 70 i- (#xB6C1 #x97FF) Err bitreich.org 70 i- (#xB6C2 #x9957) Err bitreich.org 70 i- (#xB6C3 #x9A5A) Err bitreich.org 70 i- (#xB6C4 #x4EF0) Err bitreich.org 70 i- (#xB6C5 #x51DD) Err bitreich.org 70 i- (#xB6C6 #x5C2D) Err bitreich.org 70 i- (#xB6C7 #x6681) Err bitreich.org 70 i- (#xB6C8 #x696D) Err bitreich.org 70 i- (#xB6C9 #x5C40) Err bitreich.org 70 i- (#xB6CA #x66F2) Err bitreich.org 70 i- (#xB6CB #x6975) Err bitreich.org 70 i- (#xB6CC #x7389) Err bitreich.org 70 i- (#xB6CD #x6850) Err bitreich.org 70 i- (#xB6CE #x7C81) Err bitreich.org 70 i- (#xB6CF #x50C5) Err bitreich.org 70 i- (#xB6D0 #x52E4) Err bitreich.org 70 i- (#xB6D1 #x5747) Err bitreich.org 70 i- (#xB6D2 #x5DFE) Err bitreich.org 70 i- (#xB6D3 #x9326) Err bitreich.org 70 i- (#xB6D4 #x65A4) Err bitreich.org 70 i- (#xB6D5 #x6B23) Err bitreich.org 70 i- (#xB6D6 #x6B3D) Err bitreich.org 70 i- (#xB6D7 #x7434) Err bitreich.org 70 i- (#xB6D8 #x7981) Err bitreich.org 70 i- (#xB6D9 #x79BD) Err bitreich.org 70 i- (#xB6DA #x7B4B) Err bitreich.org 70 i- (#xB6DB #x7DCA) Err bitreich.org 70 i- (#xB6DC #x82B9) Err bitreich.org 70 i- (#xB6DD #x83CC) Err bitreich.org 70 i- (#xB6DE #x887F) Err bitreich.org 70 i- (#xB6DF #x895F) Err bitreich.org 70 i- (#xB6E0 #x8B39) Err bitreich.org 70 i- (#xB6E1 #x8FD1) Err bitreich.org 70 i- (#xB6E2 #x91D1) Err bitreich.org 70 i- (#xB6E3 #x541F) Err bitreich.org 70 i- (#xB6E4 #x9280) Err bitreich.org 70 i- (#xB6E5 #x4E5D) Err bitreich.org 70 i- (#xB6E6 #x5036) Err bitreich.org 70 i- (#xB6E7 #x53E5) Err bitreich.org 70 i- (#xB6E8 #x533A) Err bitreich.org 70 i- (#xB6E9 #x72D7) Err bitreich.org 70 i- (#xB6EA #x7396) Err bitreich.org 70 i- (#xB6EB #x77E9) Err bitreich.org 70 i- (#xB6EC #x82E6) Err bitreich.org 70 i- (#xB6ED #x8EAF) Err bitreich.org 70 i- (#xB6EE #x99C6) Err bitreich.org 70 i- (#xB6EF #x99C8) Err bitreich.org 70 i- (#xB6F0 #x99D2) Err bitreich.org 70 i- (#xB6F1 #x5177) Err bitreich.org 70 i- (#xB6F2 #x611A) Err bitreich.org 70 i- (#xB6F3 #x865E) Err bitreich.org 70 i- (#xB6F4 #x55B0) Err bitreich.org 70 i- (#xB6F5 #x7A7A) Err bitreich.org 70 i- (#xB6F6 #x5076) Err bitreich.org 70 i- (#xB6F7 #x5BD3) Err bitreich.org 70 i- (#xB6F8 #x9047) Err bitreich.org 70 i- (#xB6F9 #x9685) Err bitreich.org 70 i- (#xB6FA #x4E32) Err bitreich.org 70 i- (#xB6FB #x6ADB) Err bitreich.org 70 i- (#xB6FC #x91E7) Err bitreich.org 70 i- (#xB6FD #x5C51) Err bitreich.org 70 i- (#xB6FE #x5C48) Err bitreich.org 70 i- (#xB7A1 #x6398) Err bitreich.org 70 i- (#xB7A2 #x7A9F) Err bitreich.org 70 i- (#xB7A3 #x6C93) Err bitreich.org 70 i- (#xB7A4 #x9774) Err bitreich.org 70 i- (#xB7A5 #x8F61) Err bitreich.org 70 i- (#xB7A6 #x7AAA) Err bitreich.org 70 i- (#xB7A7 #x718A) Err bitreich.org 70 i- (#xB7A8 #x9688) Err bitreich.org 70 i- (#xB7A9 #x7C82) Err bitreich.org 70 i- (#xB7AA #x6817) Err bitreich.org 70 i- (#xB7AB #x7E70) Err bitreich.org 70 i- (#xB7AC #x6851) Err bitreich.org 70 i- (#xB7AD #x936C) Err bitreich.org 70 i- (#xB7AE #x52F2) Err bitreich.org 70 i- (#xB7AF #x541B) Err bitreich.org 70 i- (#xB7B0 #x85AB) Err bitreich.org 70 i- (#xB7B1 #x8A13) Err bitreich.org 70 i- (#xB7B2 #x7FA4) Err bitreich.org 70 i- (#xB7B3 #x8ECD) Err bitreich.org 70 i- (#xB7B4 #x90E1) Err bitreich.org 70 i- (#xB7B5 #x5366) Err bitreich.org 70 i- (#xB7B6 #x8888) Err bitreich.org 70 i- (#xB7B7 #x7941) Err bitreich.org 70 i- (#xB7B8 #x4FC2) Err bitreich.org 70 i- (#xB7B9 #x50BE) Err bitreich.org 70 i- (#xB7BA #x5211) Err bitreich.org 70 i- (#xB7BB #x5144) Err bitreich.org 70 i- (#xB7BC #x5553) Err bitreich.org 70 i- (#xB7BD #x572D) Err bitreich.org 70 i- (#xB7BE #x73EA) Err bitreich.org 70 i- (#xB7BF #x578B) Err bitreich.org 70 i- (#xB7C0 #x5951) Err bitreich.org 70 i- (#xB7C1 #x5F62) Err bitreich.org 70 i- (#xB7C2 #x5F84) Err bitreich.org 70 i- (#xB7C3 #x6075) Err bitreich.org 70 i- (#xB7C4 #x6176) Err bitreich.org 70 i- (#xB7C5 #x6167) Err bitreich.org 70 i- (#xB7C6 #x61A9) Err bitreich.org 70 i- (#xB7C7 #x63B2) Err bitreich.org 70 i- (#xB7C8 #x643A) Err bitreich.org 70 i- (#xB7C9 #x656C) Err bitreich.org 70 i- (#xB7CA #x666F) Err bitreich.org 70 i- (#xB7CB #x6842) Err bitreich.org 70 i- (#xB7CC #x6E13) Err bitreich.org 70 i- (#xB7CD #x7566) Err bitreich.org 70 i- (#xB7CE #x7A3D) Err bitreich.org 70 i- (#xB7CF #x7CFB) Err bitreich.org 70 i- (#xB7D0 #x7D4C) Err bitreich.org 70 i- (#xB7D1 #x7D99) Err bitreich.org 70 i- (#xB7D2 #x7E4B) Err bitreich.org 70 i- (#xB7D3 #x7F6B) Err bitreich.org 70 i- (#xB7D4 #x830E) Err bitreich.org 70 i- (#xB7D5 #x834A) Err bitreich.org 70 i- (#xB7D6 #x86CD) Err bitreich.org 70 i- (#xB7D7 #x8A08) Err bitreich.org 70 i- (#xB7D8 #x8A63) Err bitreich.org 70 i- (#xB7D9 #x8B66) Err bitreich.org 70 i- (#xB7DA #x8EFD) Err bitreich.org 70 i- (#xB7DB #x981A) Err bitreich.org 70 i- (#xB7DC #x9D8F) Err bitreich.org 70 i- (#xB7DD #x82B8) Err bitreich.org 70 i- (#xB7DE #x8FCE) Err bitreich.org 70 i- (#xB7DF #x9BE8) Err bitreich.org 70 i- (#xB7E0 #x5287) Err bitreich.org 70 i- (#xB7E1 #x621F) Err bitreich.org 70 i- (#xB7E2 #x6483) Err bitreich.org 70 i- (#xB7E3 #x6FC0) Err bitreich.org 70 i- (#xB7E4 #x9699) Err bitreich.org 70 i- (#xB7E5 #x6841) Err bitreich.org 70 i- (#xB7E6 #x5091) Err bitreich.org 70 i- (#xB7E7 #x6B20) Err bitreich.org 70 i- (#xB7E8 #x6C7A) Err bitreich.org 70 i- (#xB7E9 #x6F54) Err bitreich.org 70 i- (#xB7EA #x7A74) Err bitreich.org 70 i- (#xB7EB #x7D50) Err bitreich.org 70 i- (#xB7EC #x8840) Err bitreich.org 70 i- (#xB7ED #x8A23) Err bitreich.org 70 i- (#xB7EE #x6708) Err bitreich.org 70 i- (#xB7EF #x4EF6) Err bitreich.org 70 i- (#xB7F0 #x5039) Err bitreich.org 70 i- (#xB7F1 #x5026) Err bitreich.org 70 i- (#xB7F2 #x5065) Err bitreich.org 70 i- (#xB7F3 #x517C) Err bitreich.org 70 i- (#xB7F4 #x5238) Err bitreich.org 70 i- (#xB7F5 #x5263) Err bitreich.org 70 i- (#xB7F6 #x55A7) Err bitreich.org 70 i- (#xB7F7 #x570F) Err bitreich.org 70 i- (#xB7F8 #x5805) Err bitreich.org 70 i- (#xB7F9 #x5ACC) Err bitreich.org 70 i- (#xB7FA #x5EFA) Err bitreich.org 70 i- (#xB7FB #x61B2) Err bitreich.org 70 i- (#xB7FC #x61F8) Err bitreich.org 70 i- (#xB7FD #x62F3) Err bitreich.org 70 i- (#xB7FE #x6372) Err bitreich.org 70 i- (#xB8A1 #x691C) Err bitreich.org 70 i- (#xB8A2 #x6A29) Err bitreich.org 70 i- (#xB8A3 #x727D) Err bitreich.org 70 i- (#xB8A4 #x72AC) Err bitreich.org 70 i- (#xB8A5 #x732E) Err bitreich.org 70 i- (#xB8A6 #x7814) Err bitreich.org 70 i- (#xB8A7 #x786F) Err bitreich.org 70 i- (#xB8A8 #x7D79) Err bitreich.org 70 i- (#xB8A9 #x770C) Err bitreich.org 70 i- (#xB8AA #x80A9) Err bitreich.org 70 i- (#xB8AB #x898B) Err bitreich.org 70 i- (#xB8AC #x8B19) Err bitreich.org 70 i- (#xB8AD #x8CE2) Err bitreich.org 70 i- (#xB8AE #x8ED2) Err bitreich.org 70 i- (#xB8AF #x9063) Err bitreich.org 70 i- (#xB8B0 #x9375) Err bitreich.org 70 i- (#xB8B1 #x967A) Err bitreich.org 70 i- (#xB8B2 #x9855) Err bitreich.org 70 i- (#xB8B3 #x9A13) Err bitreich.org 70 i- (#xB8B4 #x9E78) Err bitreich.org 70 i- (#xB8B5 #x5143) Err bitreich.org 70 i- (#xB8B6 #x539F) Err bitreich.org 70 i- (#xB8B7 #x53B3) Err bitreich.org 70 i- (#xB8B8 #x5E7B) Err bitreich.org 70 i- (#xB8B9 #x5F26) Err bitreich.org 70 i- (#xB8BA #x6E1B) Err bitreich.org 70 i- (#xB8BB #x6E90) Err bitreich.org 70 i- (#xB8BC #x7384) Err bitreich.org 70 i- (#xB8BD #x73FE) Err bitreich.org 70 i- (#xB8BE #x7D43) Err bitreich.org 70 i- (#xB8BF #x8237) Err bitreich.org 70 i- (#xB8C0 #x8A00) Err bitreich.org 70 i- (#xB8C1 #x8AFA) Err bitreich.org 70 i- (#xB8C2 #x9650) Err bitreich.org 70 i- (#xB8C3 #x4E4E) Err bitreich.org 70 i- (#xB8C4 #x500B) Err bitreich.org 70 i- (#xB8C5 #x53E4) Err bitreich.org 70 i- (#xB8C6 #x547C) Err bitreich.org 70 i- (#xB8C7 #x56FA) Err bitreich.org 70 i- (#xB8C8 #x59D1) Err bitreich.org 70 i- (#xB8C9 #x5B64) Err bitreich.org 70 i- (#xB8CA #x5DF1) Err bitreich.org 70 i- (#xB8CB #x5EAB) Err bitreich.org 70 i- (#xB8CC #x5F27) Err bitreich.org 70 i- (#xB8CD #x6238) Err bitreich.org 70 i- (#xB8CE #x6545) Err bitreich.org 70 i- (#xB8CF #x67AF) Err bitreich.org 70 i- (#xB8D0 #x6E56) Err bitreich.org 70 i- (#xB8D1 #x72D0) Err bitreich.org 70 i- (#xB8D2 #x7CCA) Err bitreich.org 70 i- (#xB8D3 #x88B4) Err bitreich.org 70 i- (#xB8D4 #x80A1) Err bitreich.org 70 i- (#xB8D5 #x80E1) Err bitreich.org 70 i- (#xB8D6 #x83F0) Err bitreich.org 70 i- (#xB8D7 #x864E) Err bitreich.org 70 i- (#xB8D8 #x8A87) Err bitreich.org 70 i- (#xB8D9 #x8DE8) Err bitreich.org 70 i- (#xB8DA #x9237) Err bitreich.org 70 i- (#xB8DB #x96C7) Err bitreich.org 70 i- (#xB8DC #x9867) Err bitreich.org 70 i- (#xB8DD #x9F13) Err bitreich.org 70 i- (#xB8DE #x4E94) Err bitreich.org 70 i- (#xB8DF #x4E92) Err bitreich.org 70 i- (#xB8E0 #x4F0D) Err bitreich.org 70 i- (#xB8E1 #x5348) Err bitreich.org 70 i- (#xB8E2 #x5449) Err bitreich.org 70 i- (#xB8E3 #x543E) Err bitreich.org 70 i- (#xB8E4 #x5A2F) Err bitreich.org 70 i- (#xB8E5 #x5F8C) Err bitreich.org 70 i- (#xB8E6 #x5FA1) Err bitreich.org 70 i- (#xB8E7 #x609F) Err bitreich.org 70 i- (#xB8E8 #x68A7) Err bitreich.org 70 i- (#xB8E9 #x6A8E) Err bitreich.org 70 i- (#xB8EA #x745A) Err bitreich.org 70 i- (#xB8EB #x7881) Err bitreich.org 70 i- (#xB8EC #x8A9E) Err bitreich.org 70 i- (#xB8ED #x8AA4) Err bitreich.org 70 i- (#xB8EE #x8B77) Err bitreich.org 70 i- (#xB8EF #x9190) Err bitreich.org 70 i- (#xB8F0 #x4E5E) Err bitreich.org 70 i- (#xB8F1 #x9BC9) Err bitreich.org 70 i- (#xB8F2 #x4EA4) Err bitreich.org 70 i- (#xB8F3 #x4F7C) Err bitreich.org 70 i- (#xB8F4 #x4FAF) Err bitreich.org 70 i- (#xB8F5 #x5019) Err bitreich.org 70 i- (#xB8F6 #x5016) Err bitreich.org 70 i- (#xB8F7 #x5149) Err bitreich.org 70 i- (#xB8F8 #x516C) Err bitreich.org 70 i- (#xB8F9 #x529F) Err bitreich.org 70 i- (#xB8FA #x52B9) Err bitreich.org 70 i- (#xB8FB #x52FE) Err bitreich.org 70 i- (#xB8FC #x539A) Err bitreich.org 70 i- (#xB8FD #x53E3) Err bitreich.org 70 i- (#xB8FE #x5411) Err bitreich.org 70 i- (#xB9A1 #x540E) Err bitreich.org 70 i- (#xB9A2 #x5589) Err bitreich.org 70 i- (#xB9A3 #x5751) Err bitreich.org 70 i- (#xB9A4 #x57A2) Err bitreich.org 70 i- (#xB9A5 #x597D) Err bitreich.org 70 i- (#xB9A6 #x5B54) Err bitreich.org 70 i- (#xB9A7 #x5B5D) Err bitreich.org 70 i- (#xB9A8 #x5B8F) Err bitreich.org 70 i- (#xB9A9 #x5DE5) Err bitreich.org 70 i- (#xB9AA #x5DE7) Err bitreich.org 70 i- (#xB9AB #x5DF7) Err bitreich.org 70 i- (#xB9AC #x5E78) Err bitreich.org 70 i- (#xB9AD #x5E83) Err bitreich.org 70 i- (#xB9AE #x5E9A) Err bitreich.org 70 i- (#xB9AF #x5EB7) Err bitreich.org 70 i- (#xB9B0 #x5F18) Err bitreich.org 70 i- (#xB9B1 #x6052) Err bitreich.org 70 i- (#xB9B2 #x614C) Err bitreich.org 70 i- (#xB9B3 #x6297) Err bitreich.org 70 i- (#xB9B4 #x62D8) Err bitreich.org 70 i- (#xB9B5 #x63A7) Err bitreich.org 70 i- (#xB9B6 #x653B) Err bitreich.org 70 i- (#xB9B7 #x6602) Err bitreich.org 70 i- (#xB9B8 #x6643) Err bitreich.org 70 i- (#xB9B9 #x66F4) Err bitreich.org 70 i- (#xB9BA #x676D) Err bitreich.org 70 i- (#xB9BB #x6821) Err bitreich.org 70 i- (#xB9BC #x6897) Err bitreich.org 70 i- (#xB9BD #x69CB) Err bitreich.org 70 i- (#xB9BE #x6C5F) Err bitreich.org 70 i- (#xB9BF #x6D2A) Err bitreich.org 70 i- (#xB9C0 #x6D69) Err bitreich.org 70 i- (#xB9C1 #x6E2F) Err bitreich.org 70 i- (#xB9C2 #x6E9D) Err bitreich.org 70 i- (#xB9C3 #x7532) Err bitreich.org 70 i- (#xB9C4 #x7687) Err bitreich.org 70 i- (#xB9C5 #x786C) Err bitreich.org 70 i- (#xB9C6 #x7A3F) Err bitreich.org 70 i- (#xB9C7 #x7CE0) Err bitreich.org 70 i- (#xB9C8 #x7D05) Err bitreich.org 70 i- (#xB9C9 #x7D18) Err bitreich.org 70 i- (#xB9CA #x7D5E) Err bitreich.org 70 i- (#xB9CB #x7DB1) Err bitreich.org 70 i- (#xB9CC #x8015) Err bitreich.org 70 i- (#xB9CD #x8003) Err bitreich.org 70 i- (#xB9CE #x80AF) Err bitreich.org 70 i- (#xB9CF #x80B1) Err bitreich.org 70 i- (#xB9D0 #x8154) Err bitreich.org 70 i- (#xB9D1 #x818F) Err bitreich.org 70 i- (#xB9D2 #x822A) Err bitreich.org 70 i- (#xB9D3 #x8352) Err bitreich.org 70 i- (#xB9D4 #x884C) Err bitreich.org 70 i- (#xB9D5 #x8861) Err bitreich.org 70 i- (#xB9D6 #x8B1B) Err bitreich.org 70 i- (#xB9D7 #x8CA2) Err bitreich.org 70 i- (#xB9D8 #x8CFC) Err bitreich.org 70 i- (#xB9D9 #x90CA) Err bitreich.org 70 i- (#xB9DA #x9175) Err bitreich.org 70 i- (#xB9DB #x9271) Err bitreich.org 70 i- (#xB9DC #x783F) Err bitreich.org 70 i- (#xB9DD #x92FC) Err bitreich.org 70 i- (#xB9DE #x95A4) Err bitreich.org 70 i- (#xB9DF #x964D) Err bitreich.org 70 i- (#xB9E0 #x9805) Err bitreich.org 70 i- (#xB9E1 #x9999) Err bitreich.org 70 i- (#xB9E2 #x9AD8) Err bitreich.org 70 i- (#xB9E3 #x9D3B) Err bitreich.org 70 i- (#xB9E4 #x525B) Err bitreich.org 70 i- (#xB9E5 #x52AB) Err bitreich.org 70 i- (#xB9E6 #x53F7) Err bitreich.org 70 i- (#xB9E7 #x5408) Err bitreich.org 70 i- (#xB9E8 #x58D5) Err bitreich.org 70 i- (#xB9E9 #x62F7) Err bitreich.org 70 i- (#xB9EA #x6FE0) Err bitreich.org 70 i- (#xB9EB #x8C6A) Err bitreich.org 70 i- (#xB9EC #x8F5F) Err bitreich.org 70 i- (#xB9ED #x9EB9) Err bitreich.org 70 i- (#xB9EE #x514B) Err bitreich.org 70 i- (#xB9EF #x523B) Err bitreich.org 70 i- (#xB9F0 #x544A) Err bitreich.org 70 i- (#xB9F1 #x56FD) Err bitreich.org 70 i- (#xB9F2 #x7A40) Err bitreich.org 70 i- (#xB9F3 #x9177) Err bitreich.org 70 i- (#xB9F4 #x9D60) Err bitreich.org 70 i- (#xB9F5 #x9ED2) Err bitreich.org 70 i- (#xB9F6 #x7344) Err bitreich.org 70 i- (#xB9F7 #x6F09) Err bitreich.org 70 i- (#xB9F8 #x8170) Err bitreich.org 70 i- (#xB9F9 #x7511) Err bitreich.org 70 i- (#xB9FA #x5FFD) Err bitreich.org 70 i- (#xB9FB #x60DA) Err bitreich.org 70 i- (#xB9FC #x9AA8) Err bitreich.org 70 i- (#xB9FD #x72DB) Err bitreich.org 70 i- (#xB9FE #x8FBC) Err bitreich.org 70 i- (#xBAA1 #x6B64) Err bitreich.org 70 i- (#xBAA2 #x9803) Err bitreich.org 70 i- (#xBAA3 #x4ECA) Err bitreich.org 70 i- (#xBAA4 #x56F0) Err bitreich.org 70 i- (#xBAA5 #x5764) Err bitreich.org 70 i- (#xBAA6 #x58BE) Err bitreich.org 70 i- (#xBAA7 #x5A5A) Err bitreich.org 70 i- (#xBAA8 #x6068) Err bitreich.org 70 i- (#xBAA9 #x61C7) Err bitreich.org 70 i- (#xBAAA #x660F) Err bitreich.org 70 i- (#xBAAB #x6606) Err bitreich.org 70 i- (#xBAAC #x6839) Err bitreich.org 70 i- (#xBAAD #x68B1) Err bitreich.org 70 i- (#xBAAE #x6DF7) Err bitreich.org 70 i- (#xBAAF #x75D5) Err bitreich.org 70 i- (#xBAB0 #x7D3A) Err bitreich.org 70 i- (#xBAB1 #x826E) Err bitreich.org 70 i- (#xBAB2 #x9B42) Err bitreich.org 70 i- (#xBAB3 #x4E9B) Err bitreich.org 70 i- (#xBAB4 #x4F50) Err bitreich.org 70 i- (#xBAB5 #x53C9) Err bitreich.org 70 i- (#xBAB6 #x5506) Err bitreich.org 70 i- (#xBAB7 #x5D6F) Err bitreich.org 70 i- (#xBAB8 #x5DE6) Err bitreich.org 70 i- (#xBAB9 #x5DEE) Err bitreich.org 70 i- (#xBABA #x67FB) Err bitreich.org 70 i- (#xBABB #x6C99) Err bitreich.org 70 i- (#xBABC #x7473) Err bitreich.org 70 i- (#xBABD #x7802) Err bitreich.org 70 i- (#xBABE #x8A50) Err bitreich.org 70 i- (#xBABF #x9396) Err bitreich.org 70 i- (#xBAC0 #x88DF) Err bitreich.org 70 i- (#xBAC1 #x5750) Err bitreich.org 70 i- (#xBAC2 #x5EA7) Err bitreich.org 70 i- (#xBAC3 #x632B) Err bitreich.org 70 i- (#xBAC4 #x50B5) Err bitreich.org 70 i- (#xBAC5 #x50AC) Err bitreich.org 70 i- (#xBAC6 #x518D) Err bitreich.org 70 i- (#xBAC7 #x6700) Err bitreich.org 70 i- (#xBAC8 #x54C9) Err bitreich.org 70 i- (#xBAC9 #x585E) Err bitreich.org 70 i- (#xBACA #x59BB) Err bitreich.org 70 i- (#xBACB #x5BB0) Err bitreich.org 70 i- (#xBACC #x5F69) Err bitreich.org 70 i- (#xBACD #x624D) Err bitreich.org 70 i- (#xBACE #x63A1) Err bitreich.org 70 i- (#xBACF #x683D) Err bitreich.org 70 i- (#xBAD0 #x6B73) Err bitreich.org 70 i- (#xBAD1 #x6E08) Err bitreich.org 70 i- (#xBAD2 #x707D) Err bitreich.org 70 i- (#xBAD3 #x91C7) Err bitreich.org 70 i- (#xBAD4 #x7280) Err bitreich.org 70 i- (#xBAD5 #x7815) Err bitreich.org 70 i- (#xBAD6 #x7826) Err bitreich.org 70 i- (#xBAD7 #x796D) Err bitreich.org 70 i- (#xBAD8 #x658E) Err bitreich.org 70 i- (#xBAD9 #x7D30) Err bitreich.org 70 i- (#xBADA #x83DC) Err bitreich.org 70 i- (#xBADB #x88C1) Err bitreich.org 70 i- (#xBADC #x8F09) Err bitreich.org 70 i- (#xBADD #x969B) Err bitreich.org 70 i- (#xBADE #x5264) Err bitreich.org 70 i- (#xBADF #x5728) Err bitreich.org 70 i- (#xBAE0 #x6750) Err bitreich.org 70 i- (#xBAE1 #x7F6A) Err bitreich.org 70 i- (#xBAE2 #x8CA1) Err bitreich.org 70 i- (#xBAE3 #x51B4) Err bitreich.org 70 i- (#xBAE4 #x5742) Err bitreich.org 70 i- (#xBAE5 #x962A) Err bitreich.org 70 i- (#xBAE6 #x583A) Err bitreich.org 70 i- (#xBAE7 #x698A) Err bitreich.org 70 i- (#xBAE8 #x80B4) Err bitreich.org 70 i- (#xBAE9 #x54B2) Err bitreich.org 70 i- (#xBAEA #x5D0E) Err bitreich.org 70 i- (#xBAEB #x57FC) Err bitreich.org 70 i- (#xBAEC #x7895) Err bitreich.org 70 i- (#xBAED #x9DFA) Err bitreich.org 70 i- (#xBAEE #x4F5C) Err bitreich.org 70 i- (#xBAEF #x524A) Err bitreich.org 70 i- (#xBAF0 #x548B) Err bitreich.org 70 i- (#xBAF1 #x643E) Err bitreich.org 70 i- (#xBAF2 #x6628) Err bitreich.org 70 i- (#xBAF3 #x6714) Err bitreich.org 70 i- (#xBAF4 #x67F5) Err bitreich.org 70 i- (#xBAF5 #x7A84) Err bitreich.org 70 i- (#xBAF6 #x7B56) Err bitreich.org 70 i- (#xBAF7 #x7D22) Err bitreich.org 70 i- (#xBAF8 #x932F) Err bitreich.org 70 i- (#xBAF9 #x685C) Err bitreich.org 70 i- (#xBAFA #x9BAD) Err bitreich.org 70 i- (#xBAFB #x7B39) Err bitreich.org 70 i- (#xBAFC #x5319) Err bitreich.org 70 i- (#xBAFD #x518A) Err bitreich.org 70 i- (#xBAFE #x5237) Err bitreich.org 70 i- (#xBBA1 #x5BDF) Err bitreich.org 70 i- (#xBBA2 #x62F6) Err bitreich.org 70 i- (#xBBA3 #x64AE) Err bitreich.org 70 i- (#xBBA4 #x64E6) Err bitreich.org 70 i- (#xBBA5 #x672D) Err bitreich.org 70 i- (#xBBA6 #x6BBA) Err bitreich.org 70 i- (#xBBA7 #x85A9) Err bitreich.org 70 i- (#xBBA8 #x96D1) Err bitreich.org 70 i- (#xBBA9 #x7690) Err bitreich.org 70 i- (#xBBAA #x9BD6) Err bitreich.org 70 i- (#xBBAB #x634C) Err bitreich.org 70 i- (#xBBAC #x9306) Err bitreich.org 70 i- (#xBBAD #x9BAB) Err bitreich.org 70 i- (#xBBAE #x76BF) Err bitreich.org 70 i- (#xBBAF #x6652) Err bitreich.org 70 i- (#xBBB0 #x4E09) Err bitreich.org 70 i- (#xBBB1 #x5098) Err bitreich.org 70 i- (#xBBB2 #x53C2) Err bitreich.org 70 i- (#xBBB3 #x5C71) Err bitreich.org 70 i- (#xBBB4 #x60E8) Err bitreich.org 70 i- (#xBBB5 #x6492) Err bitreich.org 70 i- (#xBBB6 #x6563) Err bitreich.org 70 i- (#xBBB7 #x685F) Err bitreich.org 70 i- (#xBBB8 #x71E6) Err bitreich.org 70 i- (#xBBB9 #x73CA) Err bitreich.org 70 i- (#xBBBA #x7523) Err bitreich.org 70 i- (#xBBBB #x7B97) Err bitreich.org 70 i- (#xBBBC #x7E82) Err bitreich.org 70 i- (#xBBBD #x8695) Err bitreich.org 70 i- (#xBBBE #x8B83) Err bitreich.org 70 i- (#xBBBF #x8CDB) Err bitreich.org 70 i- (#xBBC0 #x9178) Err bitreich.org 70 i- (#xBBC1 #x9910) Err bitreich.org 70 i- (#xBBC2 #x65AC) Err bitreich.org 70 i- (#xBBC3 #x66AB) Err bitreich.org 70 i- (#xBBC4 #x6B8B) Err bitreich.org 70 i- (#xBBC5 #x4ED5) Err bitreich.org 70 i- (#xBBC6 #x4ED4) Err bitreich.org 70 i- (#xBBC7 #x4F3A) Err bitreich.org 70 i- (#xBBC8 #x4F7F) Err bitreich.org 70 i- (#xBBC9 #x523A) Err bitreich.org 70 i- (#xBBCA #x53F8) Err bitreich.org 70 i- (#xBBCB #x53F2) Err bitreich.org 70 i- (#xBBCC #x55E3) Err bitreich.org 70 i- (#xBBCD #x56DB) Err bitreich.org 70 i- (#xBBCE #x58EB) Err bitreich.org 70 i- (#xBBCF #x59CB) Err bitreich.org 70 i- (#xBBD0 #x59C9) Err bitreich.org 70 i- (#xBBD1 #x59FF) Err bitreich.org 70 i- (#xBBD2 #x5B50) Err bitreich.org 70 i- (#xBBD3 #x5C4D) Err bitreich.org 70 i- (#xBBD4 #x5E02) Err bitreich.org 70 i- (#xBBD5 #x5E2B) Err bitreich.org 70 i- (#xBBD6 #x5FD7) Err bitreich.org 70 i- (#xBBD7 #x601D) Err bitreich.org 70 i- (#xBBD8 #x6307) Err bitreich.org 70 i- (#xBBD9 #x652F) Err bitreich.org 70 i- (#xBBDA #x5B5C) Err bitreich.org 70 i- (#xBBDB #x65AF) Err bitreich.org 70 i- (#xBBDC #x65BD) Err bitreich.org 70 i- (#xBBDD #x65E8) Err bitreich.org 70 i- (#xBBDE #x679D) Err bitreich.org 70 i- (#xBBDF #x6B62) Err bitreich.org 70 i- (#xBBE0 #x6B7B) Err bitreich.org 70 i- (#xBBE1 #x6C0F) Err bitreich.org 70 i- (#xBBE2 #x7345) Err bitreich.org 70 i- (#xBBE3 #x7949) Err bitreich.org 70 i- (#xBBE4 #x79C1) Err bitreich.org 70 i- (#xBBE5 #x7CF8) Err bitreich.org 70 i- (#xBBE6 #x7D19) Err bitreich.org 70 i- (#xBBE7 #x7D2B) Err bitreich.org 70 i- (#xBBE8 #x80A2) Err bitreich.org 70 i- (#xBBE9 #x8102) Err bitreich.org 70 i- (#xBBEA #x81F3) Err bitreich.org 70 i- (#xBBEB #x8996) Err bitreich.org 70 i- (#xBBEC #x8A5E) Err bitreich.org 70 i- (#xBBED #x8A69) Err bitreich.org 70 i- (#xBBEE #x8A66) Err bitreich.org 70 i- (#xBBEF #x8A8C) Err bitreich.org 70 i- (#xBBF0 #x8AEE) Err bitreich.org 70 i- (#xBBF1 #x8CC7) Err bitreich.org 70 i- (#xBBF2 #x8CDC) Err bitreich.org 70 i- (#xBBF3 #x96CC) Err bitreich.org 70 i- (#xBBF4 #x98FC) Err bitreich.org 70 i- (#xBBF5 #x6B6F) Err bitreich.org 70 i- (#xBBF6 #x4E8B) Err bitreich.org 70 i- (#xBBF7 #x4F3C) Err bitreich.org 70 i- (#xBBF8 #x4F8D) Err bitreich.org 70 i- (#xBBF9 #x5150) Err bitreich.org 70 i- (#xBBFA #x5B57) Err bitreich.org 70 i- (#xBBFB #x5BFA) Err bitreich.org 70 i- (#xBBFC #x6148) Err bitreich.org 70 i- (#xBBFD #x6301) Err bitreich.org 70 i- (#xBBFE #x6642) Err bitreich.org 70 i- (#xBCA1 #x6B21) Err bitreich.org 70 i- (#xBCA2 #x6ECB) Err bitreich.org 70 i- (#xBCA3 #x6CBB) Err bitreich.org 70 i- (#xBCA4 #x723E) Err bitreich.org 70 i- (#xBCA5 #x74BD) Err bitreich.org 70 i- (#xBCA6 #x75D4) Err bitreich.org 70 i- (#xBCA7 #x78C1) Err bitreich.org 70 i- (#xBCA8 #x793A) Err bitreich.org 70 i- (#xBCA9 #x800C) Err bitreich.org 70 i- (#xBCAA #x8033) Err bitreich.org 70 i- (#xBCAB #x81EA) Err bitreich.org 70 i- (#xBCAC #x8494) Err bitreich.org 70 i- (#xBCAD #x8F9E) Err bitreich.org 70 i- (#xBCAE #x6C50) Err bitreich.org 70 i- (#xBCAF #x9E7F) Err bitreich.org 70 i- (#xBCB0 #x5F0F) Err bitreich.org 70 i- (#xBCB1 #x8B58) Err bitreich.org 70 i- (#xBCB2 #x9D2B) Err bitreich.org 70 i- (#xBCB3 #x7AFA) Err bitreich.org 70 i- (#xBCB4 #x8EF8) Err bitreich.org 70 i- (#xBCB5 #x5B8D) Err bitreich.org 70 i- (#xBCB6 #x96EB) Err bitreich.org 70 i- (#xBCB7 #x4E03) Err bitreich.org 70 i- (#xBCB8 #x53F1) Err bitreich.org 70 i- (#xBCB9 #x57F7) Err bitreich.org 70 i- (#xBCBA #x5931) Err bitreich.org 70 i- (#xBCBB #x5AC9) Err bitreich.org 70 i- (#xBCBC #x5BA4) Err bitreich.org 70 i- (#xBCBD #x6089) Err bitreich.org 70 i- (#xBCBE #x6E7F) Err bitreich.org 70 i- (#xBCBF #x6F06) Err bitreich.org 70 i- (#xBCC0 #x75BE) Err bitreich.org 70 i- (#xBCC1 #x8CEA) Err bitreich.org 70 i- (#xBCC2 #x5B9F) Err bitreich.org 70 i- (#xBCC3 #x8500) Err bitreich.org 70 i- (#xBCC4 #x7BE0) Err bitreich.org 70 i- (#xBCC5 #x5072) Err bitreich.org 70 i- (#xBCC6 #x67F4) Err bitreich.org 70 i- (#xBCC7 #x829D) Err bitreich.org 70 i- (#xBCC8 #x5C61) Err bitreich.org 70 i- (#xBCC9 #x854A) Err bitreich.org 70 i- (#xBCCA #x7E1E) Err bitreich.org 70 i- (#xBCCB #x820E) Err bitreich.org 70 i- (#xBCCC #x5199) Err bitreich.org 70 i- (#xBCCD #x5C04) Err bitreich.org 70 i- (#xBCCE #x6368) Err bitreich.org 70 i- (#xBCCF #x8D66) Err bitreich.org 70 i- (#xBCD0 #x659C) Err bitreich.org 70 i- (#xBCD1 #x716E) Err bitreich.org 70 i- (#xBCD2 #x793E) Err bitreich.org 70 i- (#xBCD3 #x7D17) Err bitreich.org 70 i- (#xBCD4 #x8005) Err bitreich.org 70 i- (#xBCD5 #x8B1D) Err bitreich.org 70 i- (#xBCD6 #x8ECA) Err bitreich.org 70 i- (#xBCD7 #x906E) Err bitreich.org 70 i- (#xBCD8 #x86C7) Err bitreich.org 70 i- (#xBCD9 #x90AA) Err bitreich.org 70 i- (#xBCDA #x501F) Err bitreich.org 70 i- (#xBCDB #x52FA) Err bitreich.org 70 i- (#xBCDC #x5C3A) Err bitreich.org 70 i- (#xBCDD #x6753) Err bitreich.org 70 i- (#xBCDE #x707C) Err bitreich.org 70 i- (#xBCDF #x7235) Err bitreich.org 70 i- (#xBCE0 #x914C) Err bitreich.org 70 i- (#xBCE1 #x91C8) Err bitreich.org 70 i- (#xBCE2 #x932B) Err bitreich.org 70 i- (#xBCE3 #x82E5) Err bitreich.org 70 i- (#xBCE4 #x5BC2) Err bitreich.org 70 i- (#xBCE5 #x5F31) Err bitreich.org 70 i- (#xBCE6 #x60F9) Err bitreich.org 70 i- (#xBCE7 #x4E3B) Err bitreich.org 70 i- (#xBCE8 #x53D6) Err bitreich.org 70 i- (#xBCE9 #x5B88) Err bitreich.org 70 i- (#xBCEA #x624B) Err bitreich.org 70 i- (#xBCEB #x6731) Err bitreich.org 70 i- (#xBCEC #x6B8A) Err bitreich.org 70 i- (#xBCED #x72E9) Err bitreich.org 70 i- (#xBCEE #x73E0) Err bitreich.org 70 i- (#xBCEF #x7A2E) Err bitreich.org 70 i- (#xBCF0 #x816B) Err bitreich.org 70 i- (#xBCF1 #x8DA3) Err bitreich.org 70 i- (#xBCF2 #x9152) Err bitreich.org 70 i- (#xBCF3 #x9996) Err bitreich.org 70 i- (#xBCF4 #x5112) Err bitreich.org 70 i- (#xBCF5 #x53D7) Err bitreich.org 70 i- (#xBCF6 #x546A) Err bitreich.org 70 i- (#xBCF7 #x5BFF) Err bitreich.org 70 i- (#xBCF8 #x6388) Err bitreich.org 70 i- (#xBCF9 #x6A39) Err bitreich.org 70 i- (#xBCFA #x7DAC) Err bitreich.org 70 i- (#xBCFB #x9700) Err bitreich.org 70 i- (#xBCFC #x56DA) Err bitreich.org 70 i- (#xBCFD #x53CE) Err bitreich.org 70 i- (#xBCFE #x5468) Err bitreich.org 70 i- (#xBDA1 #x5B97) Err bitreich.org 70 i- (#xBDA2 #x5C31) Err bitreich.org 70 i- (#xBDA3 #x5DDE) Err bitreich.org 70 i- (#xBDA4 #x4FEE) Err bitreich.org 70 i- (#xBDA5 #x6101) Err bitreich.org 70 i- (#xBDA6 #x62FE) Err bitreich.org 70 i- (#xBDA7 #x6D32) Err bitreich.org 70 i- (#xBDA8 #x79C0) Err bitreich.org 70 i- (#xBDA9 #x79CB) Err bitreich.org 70 i- (#xBDAA #x7D42) Err bitreich.org 70 i- (#xBDAB #x7E4D) Err bitreich.org 70 i- (#xBDAC #x7FD2) Err bitreich.org 70 i- (#xBDAD #x81ED) Err bitreich.org 70 i- (#xBDAE #x821F) Err bitreich.org 70 i- (#xBDAF #x8490) Err bitreich.org 70 i- (#xBDB0 #x8846) Err bitreich.org 70 i- (#xBDB1 #x8972) Err bitreich.org 70 i- (#xBDB2 #x8B90) Err bitreich.org 70 i- (#xBDB3 #x8E74) Err bitreich.org 70 i- (#xBDB4 #x8F2F) Err bitreich.org 70 i- (#xBDB5 #x9031) Err bitreich.org 70 i- (#xBDB6 #x914B) Err bitreich.org 70 i- (#xBDB7 #x916C) Err bitreich.org 70 i- (#xBDB8 #x96C6) Err bitreich.org 70 i- (#xBDB9 #x919C) Err bitreich.org 70 i- (#xBDBA #x4EC0) Err bitreich.org 70 i- (#xBDBB #x4F4F) Err bitreich.org 70 i- (#xBDBC #x5145) Err bitreich.org 70 i- (#xBDBD #x5341) Err bitreich.org 70 i- (#xBDBE #x5F93) Err bitreich.org 70 i- (#xBDBF #x620E) Err bitreich.org 70 i- (#xBDC0 #x67D4) Err bitreich.org 70 i- (#xBDC1 #x6C41) Err bitreich.org 70 i- (#xBDC2 #x6E0B) Err bitreich.org 70 i- (#xBDC3 #x7363) Err bitreich.org 70 i- (#xBDC4 #x7E26) Err bitreich.org 70 i- (#xBDC5 #x91CD) Err bitreich.org 70 i- (#xBDC6 #x9283) Err bitreich.org 70 i- (#xBDC7 #x53D4) Err bitreich.org 70 i- (#xBDC8 #x5919) Err bitreich.org 70 i- (#xBDC9 #x5BBF) Err bitreich.org 70 i- (#xBDCA #x6DD1) Err bitreich.org 70 i- (#xBDCB #x795D) Err bitreich.org 70 i- (#xBDCC #x7E2E) Err bitreich.org 70 i- (#xBDCD #x7C9B) Err bitreich.org 70 i- (#xBDCE #x587E) Err bitreich.org 70 i- (#xBDCF #x719F) Err bitreich.org 70 i- (#xBDD0 #x51FA) Err bitreich.org 70 i- (#xBDD1 #x8853) Err bitreich.org 70 i- (#xBDD2 #x8FF0) Err bitreich.org 70 i- (#xBDD3 #x4FCA) Err bitreich.org 70 i- (#xBDD4 #x5CFB) Err bitreich.org 70 i- (#xBDD5 #x6625) Err bitreich.org 70 i- (#xBDD6 #x77AC) Err bitreich.org 70 i- (#xBDD7 #x7AE3) Err bitreich.org 70 i- (#xBDD8 #x821C) Err bitreich.org 70 i- (#xBDD9 #x99FF) Err bitreich.org 70 i- (#xBDDA #x51C6) Err bitreich.org 70 i- (#xBDDB #x5FAA) Err bitreich.org 70 i- (#xBDDC #x65EC) Err bitreich.org 70 i- (#xBDDD #x696F) Err bitreich.org 70 i- (#xBDDE #x6B89) Err bitreich.org 70 i- (#xBDDF #x6DF3) Err bitreich.org 70 i- (#xBDE0 #x6E96) Err bitreich.org 70 i- (#xBDE1 #x6F64) Err bitreich.org 70 i- (#xBDE2 #x76FE) Err bitreich.org 70 i- (#xBDE3 #x7D14) Err bitreich.org 70 i- (#xBDE4 #x5DE1) Err bitreich.org 70 i- (#xBDE5 #x9075) Err bitreich.org 70 i- (#xBDE6 #x9187) Err bitreich.org 70 i- (#xBDE7 #x9806) Err bitreich.org 70 i- (#xBDE8 #x51E6) Err bitreich.org 70 i- (#xBDE9 #x521D) Err bitreich.org 70 i- (#xBDEA #x6240) Err bitreich.org 70 i- (#xBDEB #x6691) Err bitreich.org 70 i- (#xBDEC #x66D9) Err bitreich.org 70 i- (#xBDED #x6E1A) Err bitreich.org 70 i- (#xBDEE #x5EB6) Err bitreich.org 70 i- (#xBDEF #x7DD2) Err bitreich.org 70 i- (#xBDF0 #x7F72) Err bitreich.org 70 i- (#xBDF1 #x66F8) Err bitreich.org 70 i- (#xBDF2 #x85AF) Err bitreich.org 70 i- (#xBDF3 #x85F7) Err bitreich.org 70 i- (#xBDF4 #x8AF8) Err bitreich.org 70 i- (#xBDF5 #x52A9) Err bitreich.org 70 i- (#xBDF6 #x53D9) Err bitreich.org 70 i- (#xBDF7 #x5973) Err bitreich.org 70 i- (#xBDF8 #x5E8F) Err bitreich.org 70 i- (#xBDF9 #x5F90) Err bitreich.org 70 i- (#xBDFA #x6055) Err bitreich.org 70 i- (#xBDFB #x92E4) Err bitreich.org 70 i- (#xBDFC #x9664) Err bitreich.org 70 i- (#xBDFD #x50B7) Err bitreich.org 70 i- (#xBDFE #x511F) Err bitreich.org 70 i- (#xBEA1 #x52DD) Err bitreich.org 70 i- (#xBEA2 #x5320) Err bitreich.org 70 i- (#xBEA3 #x5347) Err bitreich.org 70 i- (#xBEA4 #x53EC) Err bitreich.org 70 i- (#xBEA5 #x54E8) Err bitreich.org 70 i- (#xBEA6 #x5546) Err bitreich.org 70 i- (#xBEA7 #x5531) Err bitreich.org 70 i- (#xBEA8 #x5617) Err bitreich.org 70 i- (#xBEA9 #x5968) Err bitreich.org 70 i- (#xBEAA #x59BE) Err bitreich.org 70 i- (#xBEAB #x5A3C) Err bitreich.org 70 i- (#xBEAC #x5BB5) Err bitreich.org 70 i- (#xBEAD #x5C06) Err bitreich.org 70 i- (#xBEAE #x5C0F) Err bitreich.org 70 i- (#xBEAF #x5C11) Err bitreich.org 70 i- (#xBEB0 #x5C1A) Err bitreich.org 70 i- (#xBEB1 #x5E84) Err bitreich.org 70 i- (#xBEB2 #x5E8A) Err bitreich.org 70 i- (#xBEB3 #x5EE0) Err bitreich.org 70 i- (#xBEB4 #x5F70) Err bitreich.org 70 i- (#xBEB5 #x627F) Err bitreich.org 70 i- (#xBEB6 #x6284) Err bitreich.org 70 i- (#xBEB7 #x62DB) Err bitreich.org 70 i- (#xBEB8 #x638C) Err bitreich.org 70 i- (#xBEB9 #x6377) Err bitreich.org 70 i- (#xBEBA #x6607) Err bitreich.org 70 i- (#xBEBB #x660C) Err bitreich.org 70 i- (#xBEBC #x662D) Err bitreich.org 70 i- (#xBEBD #x6676) Err bitreich.org 70 i- (#xBEBE #x677E) Err bitreich.org 70 i- (#xBEBF #x68A2) Err bitreich.org 70 i- (#xBEC0 #x6A1F) Err bitreich.org 70 i- (#xBEC1 #x6A35) Err bitreich.org 70 i- (#xBEC2 #x6CBC) Err bitreich.org 70 i- (#xBEC3 #x6D88) Err bitreich.org 70 i- (#xBEC4 #x6E09) Err bitreich.org 70 i- (#xBEC5 #x6E58) Err bitreich.org 70 i- (#xBEC6 #x713C) Err bitreich.org 70 i- (#xBEC7 #x7126) Err bitreich.org 70 i- (#xBEC8 #x7167) Err bitreich.org 70 i- (#xBEC9 #x75C7) Err bitreich.org 70 i- (#xBECA #x7701) Err bitreich.org 70 i- (#xBECB #x785D) Err bitreich.org 70 i- (#xBECC #x7901) Err bitreich.org 70 i- (#xBECD #x7965) Err bitreich.org 70 i- (#xBECE #x79F0) Err bitreich.org 70 i- (#xBECF #x7AE0) Err bitreich.org 70 i- (#xBED0 #x7B11) Err bitreich.org 70 i- (#xBED1 #x7CA7) Err bitreich.org 70 i- (#xBED2 #x7D39) Err bitreich.org 70 i- (#xBED3 #x8096) Err bitreich.org 70 i- (#xBED4 #x83D6) Err bitreich.org 70 i- (#xBED5 #x848B) Err bitreich.org 70 i- (#xBED6 #x8549) Err bitreich.org 70 i- (#xBED7 #x885D) Err bitreich.org 70 i- (#xBED8 #x88F3) Err bitreich.org 70 i- (#xBED9 #x8A1F) Err bitreich.org 70 i- (#xBEDA #x8A3C) Err bitreich.org 70 i- (#xBEDB #x8A54) Err bitreich.org 70 i- (#xBEDC #x8A73) Err bitreich.org 70 i- (#xBEDD #x8C61) Err bitreich.org 70 i- (#xBEDE #x8CDE) Err bitreich.org 70 i- (#xBEDF #x91A4) Err bitreich.org 70 i- (#xBEE0 #x9266) Err bitreich.org 70 i- (#xBEE1 #x937E) Err bitreich.org 70 i- (#xBEE2 #x9418) Err bitreich.org 70 i- (#xBEE3 #x969C) Err bitreich.org 70 i- (#xBEE4 #x9798) Err bitreich.org 70 i- (#xBEE5 #x4E0A) Err bitreich.org 70 i- (#xBEE6 #x4E08) Err bitreich.org 70 i- (#xBEE7 #x4E1E) Err bitreich.org 70 i- (#xBEE8 #x4E57) Err bitreich.org 70 i- (#xBEE9 #x5197) Err bitreich.org 70 i- (#xBEEA #x5270) Err bitreich.org 70 i- (#xBEEB #x57CE) Err bitreich.org 70 i- (#xBEEC #x5834) Err bitreich.org 70 i- (#xBEED #x58CC) Err bitreich.org 70 i- (#xBEEE #x5B22) Err bitreich.org 70 i- (#xBEEF #x5E38) Err bitreich.org 70 i- (#xBEF0 #x60C5) Err bitreich.org 70 i- (#xBEF1 #x64FE) Err bitreich.org 70 i- (#xBEF2 #x6761) Err bitreich.org 70 i- (#xBEF3 #x6756) Err bitreich.org 70 i- (#xBEF4 #x6D44) Err bitreich.org 70 i- (#xBEF5 #x72B6) Err bitreich.org 70 i- (#xBEF6 #x7573) Err bitreich.org 70 i- (#xBEF7 #x7A63) Err bitreich.org 70 i- (#xBEF8 #x84B8) Err bitreich.org 70 i- (#xBEF9 #x8B72) Err bitreich.org 70 i- (#xBEFA #x91B8) Err bitreich.org 70 i- (#xBEFB #x9320) Err bitreich.org 70 i- (#xBEFC #x5631) Err bitreich.org 70 i- (#xBEFD #x57F4) Err bitreich.org 70 i- (#xBEFE #x98FE) Err bitreich.org 70 i- (#xBFA1 #x62ED) Err bitreich.org 70 i- (#xBFA2 #x690D) Err bitreich.org 70 i- (#xBFA3 #x6B96) Err bitreich.org 70 i- (#xBFA4 #x71ED) Err bitreich.org 70 i- (#xBFA5 #x7E54) Err bitreich.org 70 i- (#xBFA6 #x8077) Err bitreich.org 70 i- (#xBFA7 #x8272) Err bitreich.org 70 i- (#xBFA8 #x89E6) Err bitreich.org 70 i- (#xBFA9 #x98DF) Err bitreich.org 70 i- (#xBFAA #x8755) Err bitreich.org 70 i- (#xBFAB #x8FB1) Err bitreich.org 70 i- (#xBFAC #x5C3B) Err bitreich.org 70 i- (#xBFAD #x4F38) Err bitreich.org 70 i- (#xBFAE #x4FE1) Err bitreich.org 70 i- (#xBFAF #x4FB5) Err bitreich.org 70 i- (#xBFB0 #x5507) Err bitreich.org 70 i- (#xBFB1 #x5A20) Err bitreich.org 70 i- (#xBFB2 #x5BDD) Err bitreich.org 70 i- (#xBFB3 #x5BE9) Err bitreich.org 70 i- (#xBFB4 #x5FC3) Err bitreich.org 70 i- (#xBFB5 #x614E) Err bitreich.org 70 i- (#xBFB6 #x632F) Err bitreich.org 70 i- (#xBFB7 #x65B0) Err bitreich.org 70 i- (#xBFB8 #x664B) Err bitreich.org 70 i- (#xBFB9 #x68EE) Err bitreich.org 70 i- (#xBFBA #x699B) Err bitreich.org 70 i- (#xBFBB #x6D78) Err bitreich.org 70 i- (#xBFBC #x6DF1) Err bitreich.org 70 i- (#xBFBD #x7533) Err bitreich.org 70 i- (#xBFBE #x75B9) Err bitreich.org 70 i- (#xBFBF #x771F) Err bitreich.org 70 i- (#xBFC0 #x795E) Err bitreich.org 70 i- (#xBFC1 #x79E6) Err bitreich.org 70 i- (#xBFC2 #x7D33) Err bitreich.org 70 i- (#xBFC3 #x81E3) Err bitreich.org 70 i- (#xBFC4 #x82AF) Err bitreich.org 70 i- (#xBFC5 #x85AA) Err bitreich.org 70 i- (#xBFC6 #x89AA) Err bitreich.org 70 i- (#xBFC7 #x8A3A) Err bitreich.org 70 i- (#xBFC8 #x8EAB) Err bitreich.org 70 i- (#xBFC9 #x8F9B) Err bitreich.org 70 i- (#xBFCA #x9032) Err bitreich.org 70 i- (#xBFCB #x91DD) Err bitreich.org 70 i- (#xBFCC #x9707) Err bitreich.org 70 i- (#xBFCD #x4EBA) Err bitreich.org 70 i- (#xBFCE #x4EC1) Err bitreich.org 70 i- (#xBFCF #x5203) Err bitreich.org 70 i- (#xBFD0 #x5875) Err bitreich.org 70 i- (#xBFD1 #x58EC) Err bitreich.org 70 i- (#xBFD2 #x5C0B) Err bitreich.org 70 i- (#xBFD3 #x751A) Err bitreich.org 70 i- (#xBFD4 #x5C3D) Err bitreich.org 70 i- (#xBFD5 #x814E) Err bitreich.org 70 i- (#xBFD6 #x8A0A) Err bitreich.org 70 i- (#xBFD7 #x8FC5) Err bitreich.org 70 i- (#xBFD8 #x9663) Err bitreich.org 70 i- (#xBFD9 #x976D) Err bitreich.org 70 i- (#xBFDA #x7B25) Err bitreich.org 70 i- (#xBFDB #x8ACF) Err bitreich.org 70 i- (#xBFDC #x9808) Err bitreich.org 70 i- (#xBFDD #x9162) Err bitreich.org 70 i- (#xBFDE #x56F3) Err bitreich.org 70 i- (#xBFDF #x53A8) Err bitreich.org 70 i- (#xBFE0 #x9017) Err bitreich.org 70 i- (#xBFE1 #x5439) Err bitreich.org 70 i- (#xBFE2 #x5782) Err bitreich.org 70 i- (#xBFE3 #x5E25) Err bitreich.org 70 i- (#xBFE4 #x63A8) Err bitreich.org 70 i- (#xBFE5 #x6C34) Err bitreich.org 70 i- (#xBFE6 #x708A) Err bitreich.org 70 i- (#xBFE7 #x7761) Err bitreich.org 70 i- (#xBFE8 #x7C8B) Err bitreich.org 70 i- (#xBFE9 #x7FE0) Err bitreich.org 70 i- (#xBFEA #x8870) Err bitreich.org 70 i- (#xBFEB #x9042) Err bitreich.org 70 i- (#xBFEC #x9154) Err bitreich.org 70 i- (#xBFED #x9310) Err bitreich.org 70 i- (#xBFEE #x9318) Err bitreich.org 70 i- (#xBFEF #x968F) Err bitreich.org 70 i- (#xBFF0 #x745E) Err bitreich.org 70 i- (#xBFF1 #x9AC4) Err bitreich.org 70 i- (#xBFF2 #x5D07) Err bitreich.org 70 i- (#xBFF3 #x5D69) Err bitreich.org 70 i- (#xBFF4 #x6570) Err bitreich.org 70 i- (#xBFF5 #x67A2) Err bitreich.org 70 i- (#xBFF6 #x8DA8) Err bitreich.org 70 i- (#xBFF7 #x96DB) Err bitreich.org 70 i- (#xBFF8 #x636E) Err bitreich.org 70 i- (#xBFF9 #x6749) Err bitreich.org 70 i- (#xBFFA #x6919) Err bitreich.org 70 i- (#xBFFB #x83C5) Err bitreich.org 70 i- (#xBFFC #x9817) Err bitreich.org 70 i- (#xBFFD #x96C0) Err bitreich.org 70 i- (#xBFFE #x88FE) Err bitreich.org 70 i- (#xC0A1 #x6F84) Err bitreich.org 70 i- (#xC0A2 #x647A) Err bitreich.org 70 i- (#xC0A3 #x5BF8) Err bitreich.org 70 i- (#xC0A4 #x4E16) Err bitreich.org 70 i- (#xC0A5 #x702C) Err bitreich.org 70 i- (#xC0A6 #x755D) Err bitreich.org 70 i- (#xC0A7 #x662F) Err bitreich.org 70 i- (#xC0A8 #x51C4) Err bitreich.org 70 i- (#xC0A9 #x5236) Err bitreich.org 70 i- (#xC0AA #x52E2) Err bitreich.org 70 i- (#xC0AB #x59D3) Err bitreich.org 70 i- (#xC0AC #x5F81) Err bitreich.org 70 i- (#xC0AD #x6027) Err bitreich.org 70 i- (#xC0AE #x6210) Err bitreich.org 70 i- (#xC0AF #x653F) Err bitreich.org 70 i- (#xC0B0 #x6574) Err bitreich.org 70 i- (#xC0B1 #x661F) Err bitreich.org 70 i- (#xC0B2 #x6674) Err bitreich.org 70 i- (#xC0B3 #x68F2) Err bitreich.org 70 i- (#xC0B4 #x6816) Err bitreich.org 70 i- (#xC0B5 #x6B63) Err bitreich.org 70 i- (#xC0B6 #x6E05) Err bitreich.org 70 i- (#xC0B7 #x7272) Err bitreich.org 70 i- (#xC0B8 #x751F) Err bitreich.org 70 i- (#xC0B9 #x76DB) Err bitreich.org 70 i- (#xC0BA #x7CBE) Err bitreich.org 70 i- (#xC0BB #x8056) Err bitreich.org 70 i- (#xC0BC #x58F0) Err bitreich.org 70 i- (#xC0BD #x88FD) Err bitreich.org 70 i- (#xC0BE #x897F) Err bitreich.org 70 i- (#xC0BF #x8AA0) Err bitreich.org 70 i- (#xC0C0 #x8A93) Err bitreich.org 70 i- (#xC0C1 #x8ACB) Err bitreich.org 70 i- (#xC0C2 #x901D) Err bitreich.org 70 i- (#xC0C3 #x9192) Err bitreich.org 70 i- (#xC0C4 #x9752) Err bitreich.org 70 i- (#xC0C5 #x9759) Err bitreich.org 70 i- (#xC0C6 #x6589) Err bitreich.org 70 i- (#xC0C7 #x7A0E) Err bitreich.org 70 i- (#xC0C8 #x8106) Err bitreich.org 70 i- (#xC0C9 #x96BB) Err bitreich.org 70 i- (#xC0CA #x5E2D) Err bitreich.org 70 i- (#xC0CB #x60DC) Err bitreich.org 70 i- (#xC0CC #x621A) Err bitreich.org 70 i- (#xC0CD #x65A5) Err bitreich.org 70 i- (#xC0CE #x6614) Err bitreich.org 70 i- (#xC0CF #x6790) Err bitreich.org 70 i- (#xC0D0 #x77F3) Err bitreich.org 70 i- (#xC0D1 #x7A4D) Err bitreich.org 70 i- (#xC0D2 #x7C4D) Err bitreich.org 70 i- (#xC0D3 #x7E3E) Err bitreich.org 70 i- (#xC0D4 #x810A) Err bitreich.org 70 i- (#xC0D5 #x8CAC) Err bitreich.org 70 i- (#xC0D6 #x8D64) Err bitreich.org 70 i- (#xC0D7 #x8DE1) Err bitreich.org 70 i- (#xC0D8 #x8E5F) Err bitreich.org 70 i- (#xC0D9 #x78A9) Err bitreich.org 70 i- (#xC0DA #x5207) Err bitreich.org 70 i- (#xC0DB #x62D9) Err bitreich.org 70 i- (#xC0DC #x63A5) Err bitreich.org 70 i- (#xC0DD #x6442) Err bitreich.org 70 i- (#xC0DE #x6298) Err bitreich.org 70 i- (#xC0DF #x8A2D) Err bitreich.org 70 i- (#xC0E0 #x7A83) Err bitreich.org 70 i- (#xC0E1 #x7BC0) Err bitreich.org 70 i- (#xC0E2 #x8AAC) Err bitreich.org 70 i- (#xC0E3 #x96EA) Err bitreich.org 70 i- (#xC0E4 #x7D76) Err bitreich.org 70 i- (#xC0E5 #x820C) Err bitreich.org 70 i- (#xC0E6 #x8749) Err bitreich.org 70 i- (#xC0E7 #x4ED9) Err bitreich.org 70 i- (#xC0E8 #x5148) Err bitreich.org 70 i- (#xC0E9 #x5343) Err bitreich.org 70 i- (#xC0EA #x5360) Err bitreich.org 70 i- (#xC0EB #x5BA3) Err bitreich.org 70 i- (#xC0EC #x5C02) Err bitreich.org 70 i- (#xC0ED #x5C16) Err bitreich.org 70 i- (#xC0EE #x5DDD) Err bitreich.org 70 i- (#xC0EF #x6226) Err bitreich.org 70 i- (#xC0F0 #x6247) Err bitreich.org 70 i- (#xC0F1 #x64B0) Err bitreich.org 70 i- (#xC0F2 #x6813) Err bitreich.org 70 i- (#xC0F3 #x6834) Err bitreich.org 70 i- (#xC0F4 #x6CC9) Err bitreich.org 70 i- (#xC0F5 #x6D45) Err bitreich.org 70 i- (#xC0F6 #x6D17) Err bitreich.org 70 i- (#xC0F7 #x67D3) Err bitreich.org 70 i- (#xC0F8 #x6F5C) Err bitreich.org 70 i- (#xC0F9 #x714E) Err bitreich.org 70 i- (#xC0FA #x717D) Err bitreich.org 70 i- (#xC0FB #x65CB) Err bitreich.org 70 i- (#xC0FC #x7A7F) Err bitreich.org 70 i- (#xC0FD #x7BAD) Err bitreich.org 70 i- (#xC0FE #x7DDA) Err bitreich.org 70 i- (#xC1A1 #x7E4A) Err bitreich.org 70 i- (#xC1A2 #x7FA8) Err bitreich.org 70 i- (#xC1A3 #x817A) Err bitreich.org 70 i- (#xC1A4 #x821B) Err bitreich.org 70 i- (#xC1A5 #x8239) Err bitreich.org 70 i- (#xC1A6 #x85A6) Err bitreich.org 70 i- (#xC1A7 #x8A6E) Err bitreich.org 70 i- (#xC1A8 #x8CCE) Err bitreich.org 70 i- (#xC1A9 #x8DF5) Err bitreich.org 70 i- (#xC1AA #x9078) Err bitreich.org 70 i- (#xC1AB #x9077) Err bitreich.org 70 i- (#xC1AC #x92AD) Err bitreich.org 70 i- (#xC1AD #x9291) Err bitreich.org 70 i- (#xC1AE #x9583) Err bitreich.org 70 i- (#xC1AF #x9BAE) Err bitreich.org 70 i- (#xC1B0 #x524D) Err bitreich.org 70 i- (#xC1B1 #x5584) Err bitreich.org 70 i- (#xC1B2 #x6F38) Err bitreich.org 70 i- (#xC1B3 #x7136) Err bitreich.org 70 i- (#xC1B4 #x5168) Err bitreich.org 70 i- (#xC1B5 #x7985) Err bitreich.org 70 i- (#xC1B6 #x7E55) Err bitreich.org 70 i- (#xC1B7 #x81B3) Err bitreich.org 70 i- (#xC1B8 #x7CCE) Err bitreich.org 70 i- (#xC1B9 #x564C) Err bitreich.org 70 i- (#xC1BA #x5851) Err bitreich.org 70 i- (#xC1BB #x5CA8) Err bitreich.org 70 i- (#xC1BC #x63AA) Err bitreich.org 70 i- (#xC1BD #x66FE) Err bitreich.org 70 i- (#xC1BE #x66FD) Err bitreich.org 70 i- (#xC1BF #x695A) Err bitreich.org 70 i- (#xC1C0 #x72D9) Err bitreich.org 70 i- (#xC1C1 #x758F) Err bitreich.org 70 i- (#xC1C2 #x758E) Err bitreich.org 70 i- (#xC1C3 #x790E) Err bitreich.org 70 i- (#xC1C4 #x7956) Err bitreich.org 70 i- (#xC1C5 #x79DF) Err bitreich.org 70 i- (#xC1C6 #x7C97) Err bitreich.org 70 i- (#xC1C7 #x7D20) Err bitreich.org 70 i- (#xC1C8 #x7D44) Err bitreich.org 70 i- (#xC1C9 #x8607) Err bitreich.org 70 i- (#xC1CA #x8A34) Err bitreich.org 70 i- (#xC1CB #x963B) Err bitreich.org 70 i- (#xC1CC #x9061) Err bitreich.org 70 i- (#xC1CD #x9F20) Err bitreich.org 70 i- (#xC1CE #x50E7) Err bitreich.org 70 i- (#xC1CF #x5275) Err bitreich.org 70 i- (#xC1D0 #x53CC) Err bitreich.org 70 i- (#xC1D1 #x53E2) Err bitreich.org 70 i- (#xC1D2 #x5009) Err bitreich.org 70 i- (#xC1D3 #x55AA) Err bitreich.org 70 i- (#xC1D4 #x58EE) Err bitreich.org 70 i- (#xC1D5 #x594F) Err bitreich.org 70 i- (#xC1D6 #x723D) Err bitreich.org 70 i- (#xC1D7 #x5B8B) Err bitreich.org 70 i- (#xC1D8 #x5C64) Err bitreich.org 70 i- (#xC1D9 #x531D) Err bitreich.org 70 i- (#xC1DA #x60E3) Err bitreich.org 70 i- (#xC1DB #x60F3) Err bitreich.org 70 i- (#xC1DC #x635C) Err bitreich.org 70 i- (#xC1DD #x6383) Err bitreich.org 70 i- (#xC1DE #x633F) Err bitreich.org 70 i- (#xC1DF #x63BB) Err bitreich.org 70 i- (#xC1E0 #x64CD) Err bitreich.org 70 i- (#xC1E1 #x65E9) Err bitreich.org 70 i- (#xC1E2 #x66F9) Err bitreich.org 70 i- (#xC1E3 #x5DE3) Err bitreich.org 70 i- (#xC1E4 #x69CD) Err bitreich.org 70 i- (#xC1E5 #x69FD) Err bitreich.org 70 i- (#xC1E6 #x6F15) Err bitreich.org 70 i- (#xC1E7 #x71E5) Err bitreich.org 70 i- (#xC1E8 #x4E89) Err bitreich.org 70 i- (#xC1E9 #x75E9) Err bitreich.org 70 i- (#xC1EA #x76F8) Err bitreich.org 70 i- (#xC1EB #x7A93) Err bitreich.org 70 i- (#xC1EC #x7CDF) Err bitreich.org 70 i- (#xC1ED #x7DCF) Err bitreich.org 70 i- (#xC1EE #x7D9C) Err bitreich.org 70 i- (#xC1EF #x8061) Err bitreich.org 70 i- (#xC1F0 #x8349) Err bitreich.org 70 i- (#xC1F1 #x8358) Err bitreich.org 70 i- (#xC1F2 #x846C) Err bitreich.org 70 i- (#xC1F3 #x84BC) Err bitreich.org 70 i- (#xC1F4 #x85FB) Err bitreich.org 70 i- (#xC1F5 #x88C5) Err bitreich.org 70 i- (#xC1F6 #x8D70) Err bitreich.org 70 i- (#xC1F7 #x9001) Err bitreich.org 70 i- (#xC1F8 #x906D) Err bitreich.org 70 i- (#xC1F9 #x9397) Err bitreich.org 70 i- (#xC1FA #x971C) Err bitreich.org 70 i- (#xC1FB #x9A12) Err bitreich.org 70 i- (#xC1FC #x50CF) Err bitreich.org 70 i- (#xC1FD #x5897) Err bitreich.org 70 i- (#xC1FE #x618E) Err bitreich.org 70 i- (#xC2A1 #x81D3) Err bitreich.org 70 i- (#xC2A2 #x8535) Err bitreich.org 70 i- (#xC2A3 #x8D08) Err bitreich.org 70 i- (#xC2A4 #x9020) Err bitreich.org 70 i- (#xC2A5 #x4FC3) Err bitreich.org 70 i- (#xC2A6 #x5074) Err bitreich.org 70 i- (#xC2A7 #x5247) Err bitreich.org 70 i- (#xC2A8 #x5373) Err bitreich.org 70 i- (#xC2A9 #x606F) Err bitreich.org 70 i- (#xC2AA #x6349) Err bitreich.org 70 i- (#xC2AB #x675F) Err bitreich.org 70 i- (#xC2AC #x6E2C) Err bitreich.org 70 i- (#xC2AD #x8DB3) Err bitreich.org 70 i- (#xC2AE #x901F) Err bitreich.org 70 i- (#xC2AF #x4FD7) Err bitreich.org 70 i- (#xC2B0 #x5C5E) Err bitreich.org 70 i- (#xC2B1 #x8CCA) Err bitreich.org 70 i- (#xC2B2 #x65CF) Err bitreich.org 70 i- (#xC2B3 #x7D9A) Err bitreich.org 70 i- (#xC2B4 #x5352) Err bitreich.org 70 i- (#xC2B5 #x8896) Err bitreich.org 70 i- (#xC2B6 #x5176) Err bitreich.org 70 i- (#xC2B7 #x63C3) Err bitreich.org 70 i- (#xC2B8 #x5B58) Err bitreich.org 70 i- (#xC2B9 #x5B6B) Err bitreich.org 70 i- (#xC2BA #x5C0A) Err bitreich.org 70 i- (#xC2BB #x640D) Err bitreich.org 70 i- (#xC2BC #x6751) Err bitreich.org 70 i- (#xC2BD #x905C) Err bitreich.org 70 i- (#xC2BE #x4ED6) Err bitreich.org 70 i- (#xC2BF #x591A) Err bitreich.org 70 i- (#xC2C0 #x592A) Err bitreich.org 70 i- (#xC2C1 #x6C70) Err bitreich.org 70 i- (#xC2C2 #x8A51) Err bitreich.org 70 i- (#xC2C3 #x553E) Err bitreich.org 70 i- (#xC2C4 #x5815) Err bitreich.org 70 i- (#xC2C5 #x59A5) Err bitreich.org 70 i- (#xC2C6 #x60F0) Err bitreich.org 70 i- (#xC2C7 #x6253) Err bitreich.org 70 i- (#xC2C8 #x67C1) Err bitreich.org 70 i- (#xC2C9 #x8235) Err bitreich.org 70 i- (#xC2CA #x6955) Err bitreich.org 70 i- (#xC2CB #x9640) Err bitreich.org 70 i- (#xC2CC #x99C4) Err bitreich.org 70 i- (#xC2CD #x9A28) Err bitreich.org 70 i- (#xC2CE #x4F53) Err bitreich.org 70 i- (#xC2CF #x5806) Err bitreich.org 70 i- (#xC2D0 #x5BFE) Err bitreich.org 70 i- (#xC2D1 #x8010) Err bitreich.org 70 i- (#xC2D2 #x5CB1) Err bitreich.org 70 i- (#xC2D3 #x5E2F) Err bitreich.org 70 i- (#xC2D4 #x5F85) Err bitreich.org 70 i- (#xC2D5 #x6020) Err bitreich.org 70 i- (#xC2D6 #x614B) Err bitreich.org 70 i- (#xC2D7 #x6234) Err bitreich.org 70 i- (#xC2D8 #x66FF) Err bitreich.org 70 i- (#xC2D9 #x6CF0) Err bitreich.org 70 i- (#xC2DA #x6EDE) Err bitreich.org 70 i- (#xC2DB #x80CE) Err bitreich.org 70 i- (#xC2DC #x817F) Err bitreich.org 70 i- (#xC2DD #x82D4) Err bitreich.org 70 i- (#xC2DE #x888B) Err bitreich.org 70 i- (#xC2DF #x8CB8) Err bitreich.org 70 i- (#xC2E0 #x9000) Err bitreich.org 70 i- (#xC2E1 #x902E) Err bitreich.org 70 i- (#xC2E2 #x968A) Err bitreich.org 70 i- (#xC2E3 #x9EDB) Err bitreich.org 70 i- (#xC2E4 #x9BDB) Err bitreich.org 70 i- (#xC2E5 #x4EE3) Err bitreich.org 70 i- (#xC2E6 #x53F0) Err bitreich.org 70 i- (#xC2E7 #x5927) Err bitreich.org 70 i- (#xC2E8 #x7B2C) Err bitreich.org 70 i- (#xC2E9 #x918D) Err bitreich.org 70 i- (#xC2EA #x984C) Err bitreich.org 70 i- (#xC2EB #x9DF9) Err bitreich.org 70 i- (#xC2EC #x6EDD) Err bitreich.org 70 i- (#xC2ED #x7027) Err bitreich.org 70 i- (#xC2EE #x5353) Err bitreich.org 70 i- (#xC2EF #x5544) Err bitreich.org 70 i- (#xC2F0 #x5B85) Err bitreich.org 70 i- (#xC2F1 #x6258) Err bitreich.org 70 i- (#xC2F2 #x629E) Err bitreich.org 70 i- (#xC2F3 #x62D3) Err bitreich.org 70 i- (#xC2F4 #x6CA2) Err bitreich.org 70 i- (#xC2F5 #x6FEF) Err bitreich.org 70 i- (#xC2F6 #x7422) Err bitreich.org 70 i- (#xC2F7 #x8A17) Err bitreich.org 70 i- (#xC2F8 #x9438) Err bitreich.org 70 i- (#xC2F9 #x6FC1) Err bitreich.org 70 i- (#xC2FA #x8AFE) Err bitreich.org 70 i- (#xC2FB #x8338) Err bitreich.org 70 i- (#xC2FC #x51E7) Err bitreich.org 70 i- (#xC2FD #x86F8) Err bitreich.org 70 i- (#xC2FE #x53EA) Err bitreich.org 70 i- (#xC3A1 #x53E9) Err bitreich.org 70 i- (#xC3A2 #x4F46) Err bitreich.org 70 i- (#xC3A3 #x9054) Err bitreich.org 70 i- (#xC3A4 #x8FB0) Err bitreich.org 70 i- (#xC3A5 #x596A) Err bitreich.org 70 i- (#xC3A6 #x8131) Err bitreich.org 70 i- (#xC3A7 #x5DFD) Err bitreich.org 70 i- (#xC3A8 #x7AEA) Err bitreich.org 70 i- (#xC3A9 #x8FBF) Err bitreich.org 70 i- (#xC3AA #x68DA) Err bitreich.org 70 i- (#xC3AB #x8C37) Err bitreich.org 70 i- (#xC3AC #x72F8) Err bitreich.org 70 i- (#xC3AD #x9C48) Err bitreich.org 70 i- (#xC3AE #x6A3D) Err bitreich.org 70 i- (#xC3AF #x8AB0) Err bitreich.org 70 i- (#xC3B0 #x4E39) Err bitreich.org 70 i- (#xC3B1 #x5358) Err bitreich.org 70 i- (#xC3B2 #x5606) Err bitreich.org 70 i- (#xC3B3 #x5766) Err bitreich.org 70 i- (#xC3B4 #x62C5) Err bitreich.org 70 i- (#xC3B5 #x63A2) Err bitreich.org 70 i- (#xC3B6 #x65E6) Err bitreich.org 70 i- (#xC3B7 #x6B4E) Err bitreich.org 70 i- (#xC3B8 #x6DE1) Err bitreich.org 70 i- (#xC3B9 #x6E5B) Err bitreich.org 70 i- (#xC3BA #x70AD) Err bitreich.org 70 i- (#xC3BB #x77ED) Err bitreich.org 70 i- (#xC3BC #x7AEF) Err bitreich.org 70 i- (#xC3BD #x7BAA) Err bitreich.org 70 i- (#xC3BE #x7DBB) Err bitreich.org 70 i- (#xC3BF #x803D) Err bitreich.org 70 i- (#xC3C0 #x80C6) Err bitreich.org 70 i- (#xC3C1 #x86CB) Err bitreich.org 70 i- (#xC3C2 #x8A95) Err bitreich.org 70 i- (#xC3C3 #x935B) Err bitreich.org 70 i- (#xC3C4 #x56E3) Err bitreich.org 70 i- (#xC3C5 #x58C7) Err bitreich.org 70 i- (#xC3C6 #x5F3E) Err bitreich.org 70 i- (#xC3C7 #x65AD) Err bitreich.org 70 i- (#xC3C8 #x6696) Err bitreich.org 70 i- (#xC3C9 #x6A80) Err bitreich.org 70 i- (#xC3CA #x6BB5) Err bitreich.org 70 i- (#xC3CB #x7537) Err bitreich.org 70 i- (#xC3CC #x8AC7) Err bitreich.org 70 i- (#xC3CD #x5024) Err bitreich.org 70 i- (#xC3CE #x77E5) Err bitreich.org 70 i- (#xC3CF #x5730) Err bitreich.org 70 i- (#xC3D0 #x5F1B) Err bitreich.org 70 i- (#xC3D1 #x6065) Err bitreich.org 70 i- (#xC3D2 #x667A) Err bitreich.org 70 i- (#xC3D3 #x6C60) Err bitreich.org 70 i- (#xC3D4 #x75F4) Err bitreich.org 70 i- (#xC3D5 #x7A1A) Err bitreich.org 70 i- (#xC3D6 #x7F6E) Err bitreich.org 70 i- (#xC3D7 #x81F4) Err bitreich.org 70 i- (#xC3D8 #x8718) Err bitreich.org 70 i- (#xC3D9 #x9045) Err bitreich.org 70 i- (#xC3DA #x99B3) Err bitreich.org 70 i- (#xC3DB #x7BC9) Err bitreich.org 70 i- (#xC3DC #x755C) Err bitreich.org 70 i- (#xC3DD #x7AF9) Err bitreich.org 70 i- (#xC3DE #x7B51) Err bitreich.org 70 i- (#xC3DF #x84C4) Err bitreich.org 70 i- (#xC3E0 #x9010) Err bitreich.org 70 i- (#xC3E1 #x79E9) Err bitreich.org 70 i- (#xC3E2 #x7A92) Err bitreich.org 70 i- (#xC3E3 #x8336) Err bitreich.org 70 i- (#xC3E4 #x5AE1) Err bitreich.org 70 i- (#xC3E5 #x7740) Err bitreich.org 70 i- (#xC3E6 #x4E2D) Err bitreich.org 70 i- (#xC3E7 #x4EF2) Err bitreich.org 70 i- (#xC3E8 #x5B99) Err bitreich.org 70 i- (#xC3E9 #x5FE0) Err bitreich.org 70 i- (#xC3EA #x62BD) Err bitreich.org 70 i- (#xC3EB #x663C) Err bitreich.org 70 i- (#xC3EC #x67F1) Err bitreich.org 70 i- (#xC3ED #x6CE8) Err bitreich.org 70 i- (#xC3EE #x866B) Err bitreich.org 70 i- (#xC3EF #x8877) Err bitreich.org 70 i- (#xC3F0 #x8A3B) Err bitreich.org 70 i- (#xC3F1 #x914E) Err bitreich.org 70 i- (#xC3F2 #x92F3) Err bitreich.org 70 i- (#xC3F3 #x99D0) Err bitreich.org 70 i- (#xC3F4 #x6A17) Err bitreich.org 70 i- (#xC3F5 #x7026) Err bitreich.org 70 i- (#xC3F6 #x732A) Err bitreich.org 70 i- (#xC3F7 #x82E7) Err bitreich.org 70 i- (#xC3F8 #x8457) Err bitreich.org 70 i- (#xC3F9 #x8CAF) Err bitreich.org 70 i- (#xC3FA #x4E01) Err bitreich.org 70 i- (#xC3FB #x5146) Err bitreich.org 70 i- (#xC3FC #x51CB) Err bitreich.org 70 i- (#xC3FD #x558B) Err bitreich.org 70 i- (#xC3FE #x5BF5) Err bitreich.org 70 i- (#xC4A1 #x5E16) Err bitreich.org 70 i- (#xC4A2 #x5E33) Err bitreich.org 70 i- (#xC4A3 #x5E81) Err bitreich.org 70 i- (#xC4A4 #x5F14) Err bitreich.org 70 i- (#xC4A5 #x5F35) Err bitreich.org 70 i- (#xC4A6 #x5F6B) Err bitreich.org 70 i- (#xC4A7 #x5FB4) Err bitreich.org 70 i- (#xC4A8 #x61F2) Err bitreich.org 70 i- (#xC4A9 #x6311) Err bitreich.org 70 i- (#xC4AA #x66A2) Err bitreich.org 70 i- (#xC4AB #x671D) Err bitreich.org 70 i- (#xC4AC #x6F6E) Err bitreich.org 70 i- (#xC4AD #x7252) Err bitreich.org 70 i- (#xC4AE #x753A) Err bitreich.org 70 i- (#xC4AF #x773A) Err bitreich.org 70 i- (#xC4B0 #x8074) Err bitreich.org 70 i- (#xC4B1 #x8139) Err bitreich.org 70 i- (#xC4B2 #x8178) Err bitreich.org 70 i- (#xC4B3 #x8776) Err bitreich.org 70 i- (#xC4B4 #x8ABF) Err bitreich.org 70 i- (#xC4B5 #x8ADC) Err bitreich.org 70 i- (#xC4B6 #x8D85) Err bitreich.org 70 i- (#xC4B7 #x8DF3) Err bitreich.org 70 i- (#xC4B8 #x929A) Err bitreich.org 70 i- (#xC4B9 #x9577) Err bitreich.org 70 i- (#xC4BA #x9802) Err bitreich.org 70 i- (#xC4BB #x9CE5) Err bitreich.org 70 i- (#xC4BC #x52C5) Err bitreich.org 70 i- (#xC4BD #x6357) Err bitreich.org 70 i- (#xC4BE #x76F4) Err bitreich.org 70 i- (#xC4BF #x6715) Err bitreich.org 70 i- (#xC4C0 #x6C88) Err bitreich.org 70 i- (#xC4C1 #x73CD) Err bitreich.org 70 i- (#xC4C2 #x8CC3) Err bitreich.org 70 i- (#xC4C3 #x93AE) Err bitreich.org 70 i- (#xC4C4 #x9673) Err bitreich.org 70 i- (#xC4C5 #x6D25) Err bitreich.org 70 i- (#xC4C6 #x589C) Err bitreich.org 70 i- (#xC4C7 #x690E) Err bitreich.org 70 i- (#xC4C8 #x69CC) Err bitreich.org 70 i- (#xC4C9 #x8FFD) Err bitreich.org 70 i- (#xC4CA #x939A) Err bitreich.org 70 i- (#xC4CB #x75DB) Err bitreich.org 70 i- (#xC4CC #x901A) Err bitreich.org 70 i- (#xC4CD #x585A) Err bitreich.org 70 i- (#xC4CE #x6802) Err bitreich.org 70 i- (#xC4CF #x63B4) Err bitreich.org 70 i- (#xC4D0 #x69FB) Err bitreich.org 70 i- (#xC4D1 #x4F43) Err bitreich.org 70 i- (#xC4D2 #x6F2C) Err bitreich.org 70 i- (#xC4D3 #x67D8) Err bitreich.org 70 i- (#xC4D4 #x8FBB) Err bitreich.org 70 i- (#xC4D5 #x8526) Err bitreich.org 70 i- (#xC4D6 #x7DB4) Err bitreich.org 70 i- (#xC4D7 #x9354) Err bitreich.org 70 i- (#xC4D8 #x693F) Err bitreich.org 70 i- (#xC4D9 #x6F70) Err bitreich.org 70 i- (#xC4DA #x576A) Err bitreich.org 70 i- (#xC4DB #x58F7) Err bitreich.org 70 i- (#xC4DC #x5B2C) Err bitreich.org 70 i- (#xC4DD #x7D2C) Err bitreich.org 70 i- (#xC4DE #x722A) Err bitreich.org 70 i- (#xC4DF #x540A) Err bitreich.org 70 i- (#xC4E0 #x91E3) Err bitreich.org 70 i- (#xC4E1 #x9DB4) Err bitreich.org 70 i- (#xC4E2 #x4EAD) Err bitreich.org 70 i- (#xC4E3 #x4F4E) Err bitreich.org 70 i- (#xC4E4 #x505C) Err bitreich.org 70 i- (#xC4E5 #x5075) Err bitreich.org 70 i- (#xC4E6 #x5243) Err bitreich.org 70 i- (#xC4E7 #x8C9E) Err bitreich.org 70 i- (#xC4E8 #x5448) Err bitreich.org 70 i- (#xC4E9 #x5824) Err bitreich.org 70 i- (#xC4EA #x5B9A) Err bitreich.org 70 i- (#xC4EB #x5E1D) Err bitreich.org 70 i- (#xC4EC #x5E95) Err bitreich.org 70 i- (#xC4ED #x5EAD) Err bitreich.org 70 i- (#xC4EE #x5EF7) Err bitreich.org 70 i- (#xC4EF #x5F1F) Err bitreich.org 70 i- (#xC4F0 #x608C) Err bitreich.org 70 i- (#xC4F1 #x62B5) Err bitreich.org 70 i- (#xC4F2 #x633A) Err bitreich.org 70 i- (#xC4F3 #x63D0) Err bitreich.org 70 i- (#xC4F4 #x68AF) Err bitreich.org 70 i- (#xC4F5 #x6C40) Err bitreich.org 70 i- (#xC4F6 #x7887) Err bitreich.org 70 i- (#xC4F7 #x798E) Err bitreich.org 70 i- (#xC4F8 #x7A0B) Err bitreich.org 70 i- (#xC4F9 #x7DE0) Err bitreich.org 70 i- (#xC4FA #x8247) Err bitreich.org 70 i- (#xC4FB #x8A02) Err bitreich.org 70 i- (#xC4FC #x8AE6) Err bitreich.org 70 i- (#xC4FD #x8E44) Err bitreich.org 70 i- (#xC4FE #x9013) Err bitreich.org 70 i- (#xC5A1 #x90B8) Err bitreich.org 70 i- (#xC5A2 #x912D) Err bitreich.org 70 i- (#xC5A3 #x91D8) Err bitreich.org 70 i- (#xC5A4 #x9F0E) Err bitreich.org 70 i- (#xC5A5 #x6CE5) Err bitreich.org 70 i- (#xC5A6 #x6458) Err bitreich.org 70 i- (#xC5A7 #x64E2) Err bitreich.org 70 i- (#xC5A8 #x6575) Err bitreich.org 70 i- (#xC5A9 #x6EF4) Err bitreich.org 70 i- (#xC5AA #x7684) Err bitreich.org 70 i- (#xC5AB #x7B1B) Err bitreich.org 70 i- (#xC5AC #x9069) Err bitreich.org 70 i- (#xC5AD #x93D1) Err bitreich.org 70 i- (#xC5AE #x6EBA) Err bitreich.org 70 i- (#xC5AF #x54F2) Err bitreich.org 70 i- (#xC5B0 #x5FB9) Err bitreich.org 70 i- (#xC5B1 #x64A4) Err bitreich.org 70 i- (#xC5B2 #x8F4D) Err bitreich.org 70 i- (#xC5B3 #x8FED) Err bitreich.org 70 i- (#xC5B4 #x9244) Err bitreich.org 70 i- (#xC5B5 #x5178) Err bitreich.org 70 i- (#xC5B6 #x586B) Err bitreich.org 70 i- (#xC5B7 #x5929) Err bitreich.org 70 i- (#xC5B8 #x5C55) Err bitreich.org 70 i- (#xC5B9 #x5E97) Err bitreich.org 70 i- (#xC5BA #x6DFB) Err bitreich.org 70 i- (#xC5BB #x7E8F) Err bitreich.org 70 i- (#xC5BC #x751C) Err bitreich.org 70 i- (#xC5BD #x8CBC) Err bitreich.org 70 i- (#xC5BE #x8EE2) Err bitreich.org 70 i- (#xC5BF #x985B) Err bitreich.org 70 i- (#xC5C0 #x70B9) Err bitreich.org 70 i- (#xC5C1 #x4F1D) Err bitreich.org 70 i- (#xC5C2 #x6BBF) Err bitreich.org 70 i- (#xC5C3 #x6FB1) Err bitreich.org 70 i- (#xC5C4 #x7530) Err bitreich.org 70 i- (#xC5C5 #x96FB) Err bitreich.org 70 i- (#xC5C6 #x514E) Err bitreich.org 70 i- (#xC5C7 #x5410) Err bitreich.org 70 i- (#xC5C8 #x5835) Err bitreich.org 70 i- (#xC5C9 #x5857) Err bitreich.org 70 i- (#xC5CA #x59AC) Err bitreich.org 70 i- (#xC5CB #x5C60) Err bitreich.org 70 i- (#xC5CC #x5F92) Err bitreich.org 70 i- (#xC5CD #x6597) Err bitreich.org 70 i- (#xC5CE #x675C) Err bitreich.org 70 i- (#xC5CF #x6E21) Err bitreich.org 70 i- (#xC5D0 #x767B) Err bitreich.org 70 i- (#xC5D1 #x83DF) Err bitreich.org 70 i- (#xC5D2 #x8CED) Err bitreich.org 70 i- (#xC5D3 #x9014) Err bitreich.org 70 i- (#xC5D4 #x90FD) Err bitreich.org 70 i- (#xC5D5 #x934D) Err bitreich.org 70 i- (#xC5D6 #x7825) Err bitreich.org 70 i- (#xC5D7 #x783A) Err bitreich.org 70 i- (#xC5D8 #x52AA) Err bitreich.org 70 i- (#xC5D9 #x5EA6) Err bitreich.org 70 i- (#xC5DA #x571F) Err bitreich.org 70 i- (#xC5DB #x5974) Err bitreich.org 70 i- (#xC5DC #x6012) Err bitreich.org 70 i- (#xC5DD #x5012) Err bitreich.org 70 i- (#xC5DE #x515A) Err bitreich.org 70 i- (#xC5DF #x51AC) Err bitreich.org 70 i- (#xC5E0 #x51CD) Err bitreich.org 70 i- (#xC5E1 #x5200) Err bitreich.org 70 i- (#xC5E2 #x5510) Err bitreich.org 70 i- (#xC5E3 #x5854) Err bitreich.org 70 i- (#xC5E4 #x5858) Err bitreich.org 70 i- (#xC5E5 #x5957) Err bitreich.org 70 i- (#xC5E6 #x5B95) Err bitreich.org 70 i- (#xC5E7 #x5CF6) Err bitreich.org 70 i- (#xC5E8 #x5D8B) Err bitreich.org 70 i- (#xC5E9 #x60BC) Err bitreich.org 70 i- (#xC5EA #x6295) Err bitreich.org 70 i- (#xC5EB #x642D) Err bitreich.org 70 i- (#xC5EC #x6771) Err bitreich.org 70 i- (#xC5ED #x6843) Err bitreich.org 70 i- (#xC5EE #x68BC) Err bitreich.org 70 i- (#xC5EF #x68DF) Err bitreich.org 70 i- (#xC5F0 #x76D7) Err bitreich.org 70 i- (#xC5F1 #x6DD8) Err bitreich.org 70 i- (#xC5F2 #x6E6F) Err bitreich.org 70 i- (#xC5F3 #x6D9B) Err bitreich.org 70 i- (#xC5F4 #x706F) Err bitreich.org 70 i- (#xC5F5 #x71C8) Err bitreich.org 70 i- (#xC5F6 #x5F53) Err bitreich.org 70 i- (#xC5F7 #x75D8) Err bitreich.org 70 i- (#xC5F8 #x7977) Err bitreich.org 70 i- (#xC5F9 #x7B49) Err bitreich.org 70 i- (#xC5FA #x7B54) Err bitreich.org 70 i- (#xC5FB #x7B52) Err bitreich.org 70 i- (#xC5FC #x7CD6) Err bitreich.org 70 i- (#xC5FD #x7D71) Err bitreich.org 70 i- (#xC5FE #x5230) Err bitreich.org 70 i- (#xC6A1 #x8463) Err bitreich.org 70 i- (#xC6A2 #x8569) Err bitreich.org 70 i- (#xC6A3 #x85E4) Err bitreich.org 70 i- (#xC6A4 #x8A0E) Err bitreich.org 70 i- (#xC6A5 #x8B04) Err bitreich.org 70 i- (#xC6A6 #x8C46) Err bitreich.org 70 i- (#xC6A7 #x8E0F) Err bitreich.org 70 i- (#xC6A8 #x9003) Err bitreich.org 70 i- (#xC6A9 #x900F) Err bitreich.org 70 i- (#xC6AA #x9419) Err bitreich.org 70 i- (#xC6AB #x9676) Err bitreich.org 70 i- (#xC6AC #x982D) Err bitreich.org 70 i- (#xC6AD #x9A30) Err bitreich.org 70 i- (#xC6AE #x95D8) Err bitreich.org 70 i- (#xC6AF #x50CD) Err bitreich.org 70 i- (#xC6B0 #x52D5) Err bitreich.org 70 i- (#xC6B1 #x540C) Err bitreich.org 70 i- (#xC6B2 #x5802) Err bitreich.org 70 i- (#xC6B3 #x5C0E) Err bitreich.org 70 i- (#xC6B4 #x61A7) Err bitreich.org 70 i- (#xC6B5 #x649E) Err bitreich.org 70 i- (#xC6B6 #x6D1E) Err bitreich.org 70 i- (#xC6B7 #x77B3) Err bitreich.org 70 i- (#xC6B8 #x7AE5) Err bitreich.org 70 i- (#xC6B9 #x80F4) Err bitreich.org 70 i- (#xC6BA #x8404) Err bitreich.org 70 i- (#xC6BB #x9053) Err bitreich.org 70 i- (#xC6BC #x9285) Err bitreich.org 70 i- (#xC6BD #x5CE0) Err bitreich.org 70 i- (#xC6BE #x9D07) Err bitreich.org 70 i- (#xC6BF #x533F) Err bitreich.org 70 i- (#xC6C0 #x5F97) Err bitreich.org 70 i- (#xC6C1 #x5FB3) Err bitreich.org 70 i- (#xC6C2 #x6D9C) Err bitreich.org 70 i- (#xC6C3 #x7279) Err bitreich.org 70 i- (#xC6C4 #x7763) Err bitreich.org 70 i- (#xC6C5 #x79BF) Err bitreich.org 70 i- (#xC6C6 #x7BE4) Err bitreich.org 70 i- (#xC6C7 #x6BD2) Err bitreich.org 70 i- (#xC6C8 #x72EC) Err bitreich.org 70 i- (#xC6C9 #x8AAD) Err bitreich.org 70 i- (#xC6CA #x6803) Err bitreich.org 70 i- (#xC6CB #x6A61) Err bitreich.org 70 i- (#xC6CC #x51F8) Err bitreich.org 70 i- (#xC6CD #x7A81) Err bitreich.org 70 i- (#xC6CE #x6934) Err bitreich.org 70 i- (#xC6CF #x5C4A) Err bitreich.org 70 i- (#xC6D0 #x9CF6) Err bitreich.org 70 i- (#xC6D1 #x82EB) Err bitreich.org 70 i- (#xC6D2 #x5BC5) Err bitreich.org 70 i- (#xC6D3 #x9149) Err bitreich.org 70 i- (#xC6D4 #x701E) Err bitreich.org 70 i- (#xC6D5 #x5678) Err bitreich.org 70 i- (#xC6D6 #x5C6F) Err bitreich.org 70 i- (#xC6D7 #x60C7) Err bitreich.org 70 i- (#xC6D8 #x6566) Err bitreich.org 70 i- (#xC6D9 #x6C8C) Err bitreich.org 70 i- (#xC6DA #x8C5A) Err bitreich.org 70 i- (#xC6DB #x9041) Err bitreich.org 70 i- (#xC6DC #x9813) Err bitreich.org 70 i- (#xC6DD #x5451) Err bitreich.org 70 i- (#xC6DE #x66C7) Err bitreich.org 70 i- (#xC6DF #x920D) Err bitreich.org 70 i- (#xC6E0 #x5948) Err bitreich.org 70 i- (#xC6E1 #x90A3) Err bitreich.org 70 i- (#xC6E2 #x5185) Err bitreich.org 70 i- (#xC6E3 #x4E4D) Err bitreich.org 70 i- (#xC6E4 #x51EA) Err bitreich.org 70 i- (#xC6E5 #x8599) Err bitreich.org 70 i- (#xC6E6 #x8B0E) Err bitreich.org 70 i- (#xC6E7 #x7058) Err bitreich.org 70 i- (#xC6E8 #x637A) Err bitreich.org 70 i- (#xC6E9 #x934B) Err bitreich.org 70 i- (#xC6EA #x6962) Err bitreich.org 70 i- (#xC6EB #x99B4) Err bitreich.org 70 i- (#xC6EC #x7E04) Err bitreich.org 70 i- (#xC6ED #x7577) Err bitreich.org 70 i- (#xC6EE #x5357) Err bitreich.org 70 i- (#xC6EF #x6960) Err bitreich.org 70 i- (#xC6F0 #x8EDF) Err bitreich.org 70 i- (#xC6F1 #x96E3) Err bitreich.org 70 i- (#xC6F2 #x6C5D) Err bitreich.org 70 i- (#xC6F3 #x4E8C) Err bitreich.org 70 i- (#xC6F4 #x5C3C) Err bitreich.org 70 i- (#xC6F5 #x5F10) Err bitreich.org 70 i- (#xC6F6 #x8FE9) Err bitreich.org 70 i- (#xC6F7 #x5302) Err bitreich.org 70 i- (#xC6F8 #x8CD1) Err bitreich.org 70 i- (#xC6F9 #x8089) Err bitreich.org 70 i- (#xC6FA #x8679) Err bitreich.org 70 i- (#xC6FB #x5EFF) Err bitreich.org 70 i- (#xC6FC #x65E5) Err bitreich.org 70 i- (#xC6FD #x4E73) Err bitreich.org 70 i- (#xC6FE #x5165) Err bitreich.org 70 i- (#xC7A1 #x5982) Err bitreich.org 70 i- (#xC7A2 #x5C3F) Err bitreich.org 70 i- (#xC7A3 #x97EE) Err bitreich.org 70 i- (#xC7A4 #x4EFB) Err bitreich.org 70 i- (#xC7A5 #x598A) Err bitreich.org 70 i- (#xC7A6 #x5FCD) Err bitreich.org 70 i- (#xC7A7 #x8A8D) Err bitreich.org 70 i- (#xC7A8 #x6FE1) Err bitreich.org 70 i- (#xC7A9 #x79B0) Err bitreich.org 70 i- (#xC7AA #x7962) Err bitreich.org 70 i- (#xC7AB #x5BE7) Err bitreich.org 70 i- (#xC7AC #x8471) Err bitreich.org 70 i- (#xC7AD #x732B) Err bitreich.org 70 i- (#xC7AE #x71B1) Err bitreich.org 70 i- (#xC7AF #x5E74) Err bitreich.org 70 i- (#xC7B0 #x5FF5) Err bitreich.org 70 i- (#xC7B1 #x637B) Err bitreich.org 70 i- (#xC7B2 #x649A) Err bitreich.org 70 i- (#xC7B3 #x71C3) Err bitreich.org 70 i- (#xC7B4 #x7C98) Err bitreich.org 70 i- (#xC7B5 #x4E43) Err bitreich.org 70 i- (#xC7B6 #x5EFC) Err bitreich.org 70 i- (#xC7B7 #x4E4B) Err bitreich.org 70 i- (#xC7B8 #x57DC) Err bitreich.org 70 i- (#xC7B9 #x56A2) Err bitreich.org 70 i- (#xC7BA #x60A9) Err bitreich.org 70 i- (#xC7BB #x6FC3) Err bitreich.org 70 i- (#xC7BC #x7D0D) Err bitreich.org 70 i- (#xC7BD #x80FD) Err bitreich.org 70 i- (#xC7BE #x8133) Err bitreich.org 70 i- (#xC7BF #x81BF) Err bitreich.org 70 i- (#xC7C0 #x8FB2) Err bitreich.org 70 i- (#xC7C1 #x8997) Err bitreich.org 70 i- (#xC7C2 #x86A4) Err bitreich.org 70 i- (#xC7C3 #x5DF4) Err bitreich.org 70 i- (#xC7C4 #x628A) Err bitreich.org 70 i- (#xC7C5 #x64AD) Err bitreich.org 70 i- (#xC7C6 #x8987) Err bitreich.org 70 i- (#xC7C7 #x6777) Err bitreich.org 70 i- (#xC7C8 #x6CE2) Err bitreich.org 70 i- (#xC7C9 #x6D3E) Err bitreich.org 70 i- (#xC7CA #x7436) Err bitreich.org 70 i- (#xC7CB #x7834) Err bitreich.org 70 i- (#xC7CC #x5A46) Err bitreich.org 70 i- (#xC7CD #x7F75) Err bitreich.org 70 i- (#xC7CE #x82AD) Err bitreich.org 70 i- (#xC7CF #x99AC) Err bitreich.org 70 i- (#xC7D0 #x4FF3) Err bitreich.org 70 i- (#xC7D1 #x5EC3) Err bitreich.org 70 i- (#xC7D2 #x62DD) Err bitreich.org 70 i- (#xC7D3 #x6392) Err bitreich.org 70 i- (#xC7D4 #x6557) Err bitreich.org 70 i- (#xC7D5 #x676F) Err bitreich.org 70 i- (#xC7D6 #x76C3) Err bitreich.org 70 i- (#xC7D7 #x724C) Err bitreich.org 70 i- (#xC7D8 #x80CC) Err bitreich.org 70 i- (#xC7D9 #x80BA) Err bitreich.org 70 i- (#xC7DA #x8F29) Err bitreich.org 70 i- (#xC7DB #x914D) Err bitreich.org 70 i- (#xC7DC #x500D) Err bitreich.org 70 i- (#xC7DD #x57F9) Err bitreich.org 70 i- (#xC7DE #x5A92) Err bitreich.org 70 i- (#xC7DF #x6885) Err bitreich.org 70 i- (#xC7E0 #x6973) Err bitreich.org 70 i- (#xC7E1 #x7164) Err bitreich.org 70 i- (#xC7E2 #x72FD) Err bitreich.org 70 i- (#xC7E3 #x8CB7) Err bitreich.org 70 i- (#xC7E4 #x58F2) Err bitreich.org 70 i- (#xC7E5 #x8CE0) Err bitreich.org 70 i- (#xC7E6 #x966A) Err bitreich.org 70 i- (#xC7E7 #x9019) Err bitreich.org 70 i- (#xC7E8 #x877F) Err bitreich.org 70 i- (#xC7E9 #x79E4) Err bitreich.org 70 i- (#xC7EA #x77E7) Err bitreich.org 70 i- (#xC7EB #x8429) Err bitreich.org 70 i- (#xC7EC #x4F2F) Err bitreich.org 70 i- (#xC7ED #x5265) Err bitreich.org 70 i- (#xC7EE #x535A) Err bitreich.org 70 i- (#xC7EF #x62CD) Err bitreich.org 70 i- (#xC7F0 #x67CF) Err bitreich.org 70 i- (#xC7F1 #x6CCA) Err bitreich.org 70 i- (#xC7F2 #x767D) Err bitreich.org 70 i- (#xC7F3 #x7B94) Err bitreich.org 70 i- (#xC7F4 #x7C95) Err bitreich.org 70 i- (#xC7F5 #x8236) Err bitreich.org 70 i- (#xC7F6 #x8584) Err bitreich.org 70 i- (#xC7F7 #x8FEB) Err bitreich.org 70 i- (#xC7F8 #x66DD) Err bitreich.org 70 i- (#xC7F9 #x6F20) Err bitreich.org 70 i- (#xC7FA #x7206) Err bitreich.org 70 i- (#xC7FB #x7E1B) Err bitreich.org 70 i- (#xC7FC #x83AB) Err bitreich.org 70 i- (#xC7FD #x99C1) Err bitreich.org 70 i- (#xC7FE #x9EA6) Err bitreich.org 70 i- (#xC8A1 #x51FD) Err bitreich.org 70 i- (#xC8A2 #x7BB1) Err bitreich.org 70 i- (#xC8A3 #x7872) Err bitreich.org 70 i- (#xC8A4 #x7BB8) Err bitreich.org 70 i- (#xC8A5 #x8087) Err bitreich.org 70 i- (#xC8A6 #x7B48) Err bitreich.org 70 i- (#xC8A7 #x6AE8) Err bitreich.org 70 i- (#xC8A8 #x5E61) Err bitreich.org 70 i- (#xC8A9 #x808C) Err bitreich.org 70 i- (#xC8AA #x7551) Err bitreich.org 70 i- (#xC8AB #x7560) Err bitreich.org 70 i- (#xC8AC #x516B) Err bitreich.org 70 i- (#xC8AD #x9262) Err bitreich.org 70 i- (#xC8AE #x6E8C) Err bitreich.org 70 i- (#xC8AF #x767A) Err bitreich.org 70 i- (#xC8B0 #x9197) Err bitreich.org 70 i- (#xC8B1 #x9AEA) Err bitreich.org 70 i- (#xC8B2 #x4F10) Err bitreich.org 70 i- (#xC8B3 #x7F70) Err bitreich.org 70 i- (#xC8B4 #x629C) Err bitreich.org 70 i- (#xC8B5 #x7B4F) Err bitreich.org 70 i- (#xC8B6 #x95A5) Err bitreich.org 70 i- (#xC8B7 #x9CE9) Err bitreich.org 70 i- (#xC8B8 #x567A) Err bitreich.org 70 i- (#xC8B9 #x5859) Err bitreich.org 70 i- (#xC8BA #x86E4) Err bitreich.org 70 i- (#xC8BB #x96BC) Err bitreich.org 70 i- (#xC8BC #x4F34) Err bitreich.org 70 i- (#xC8BD #x5224) Err bitreich.org 70 i- (#xC8BE #x534A) Err bitreich.org 70 i- (#xC8BF #x53CD) Err bitreich.org 70 i- (#xC8C0 #x53DB) Err bitreich.org 70 i- (#xC8C1 #x5E06) Err bitreich.org 70 i- (#xC8C2 #x642C) Err bitreich.org 70 i- (#xC8C3 #x6591) Err bitreich.org 70 i- (#xC8C4 #x677F) Err bitreich.org 70 i- (#xC8C5 #x6C3E) Err bitreich.org 70 i- (#xC8C6 #x6C4E) Err bitreich.org 70 i- (#xC8C7 #x7248) Err bitreich.org 70 i- (#xC8C8 #x72AF) Err bitreich.org 70 i- (#xC8C9 #x73ED) Err bitreich.org 70 i- (#xC8CA #x7554) Err bitreich.org 70 i- (#xC8CB #x7E41) Err bitreich.org 70 i- (#xC8CC #x822C) Err bitreich.org 70 i- (#xC8CD #x85E9) Err bitreich.org 70 i- (#xC8CE #x8CA9) Err bitreich.org 70 i- (#xC8CF #x7BC4) Err bitreich.org 70 i- (#xC8D0 #x91C6) Err bitreich.org 70 i- (#xC8D1 #x7169) Err bitreich.org 70 i- (#xC8D2 #x9812) Err bitreich.org 70 i- (#xC8D3 #x98EF) Err bitreich.org 70 i- (#xC8D4 #x633D) Err bitreich.org 70 i- (#xC8D5 #x6669) Err bitreich.org 70 i- (#xC8D6 #x756A) Err bitreich.org 70 i- (#xC8D7 #x76E4) Err bitreich.org 70 i- (#xC8D8 #x78D0) Err bitreich.org 70 i- (#xC8D9 #x8543) Err bitreich.org 70 i- (#xC8DA #x86EE) Err bitreich.org 70 i- (#xC8DB #x532A) Err bitreich.org 70 i- (#xC8DC #x5351) Err bitreich.org 70 i- (#xC8DD #x5426) Err bitreich.org 70 i- (#xC8DE #x5983) Err bitreich.org 70 i- (#xC8DF #x5E87) Err bitreich.org 70 i- (#xC8E0 #x5F7C) Err bitreich.org 70 i- (#xC8E1 #x60B2) Err bitreich.org 70 i- (#xC8E2 #x6249) Err bitreich.org 70 i- (#xC8E3 #x6279) Err bitreich.org 70 i- (#xC8E4 #x62AB) Err bitreich.org 70 i- (#xC8E5 #x6590) Err bitreich.org 70 i- (#xC8E6 #x6BD4) Err bitreich.org 70 i- (#xC8E7 #x6CCC) Err bitreich.org 70 i- (#xC8E8 #x75B2) Err bitreich.org 70 i- (#xC8E9 #x76AE) Err bitreich.org 70 i- (#xC8EA #x7891) Err bitreich.org 70 i- (#xC8EB #x79D8) Err bitreich.org 70 i- (#xC8EC #x7DCB) Err bitreich.org 70 i- (#xC8ED #x7F77) Err bitreich.org 70 i- (#xC8EE #x80A5) Err bitreich.org 70 i- (#xC8EF #x88AB) Err bitreich.org 70 i- (#xC8F0 #x8AB9) Err bitreich.org 70 i- (#xC8F1 #x8CBB) Err bitreich.org 70 i- (#xC8F2 #x907F) Err bitreich.org 70 i- (#xC8F3 #x975E) Err bitreich.org 70 i- (#xC8F4 #x98DB) Err bitreich.org 70 i- (#xC8F5 #x6A0B) Err bitreich.org 70 i- (#xC8F6 #x7C38) Err bitreich.org 70 i- (#xC8F7 #x5099) Err bitreich.org 70 i- (#xC8F8 #x5C3E) Err bitreich.org 70 i- (#xC8F9 #x5FAE) Err bitreich.org 70 i- (#xC8FA #x6787) Err bitreich.org 70 i- (#xC8FB #x6BD8) Err bitreich.org 70 i- (#xC8FC #x7435) Err bitreich.org 70 i- (#xC8FD #x7709) Err bitreich.org 70 i- (#xC8FE #x7F8E) Err bitreich.org 70 i- (#xC9A1 #x9F3B) Err bitreich.org 70 i- (#xC9A2 #x67CA) Err bitreich.org 70 i- (#xC9A3 #x7A17) Err bitreich.org 70 i- (#xC9A4 #x5339) Err bitreich.org 70 i- (#xC9A5 #x758B) Err bitreich.org 70 i- (#xC9A6 #x9AED) Err bitreich.org 70 i- (#xC9A7 #x5F66) Err bitreich.org 70 i- (#xC9A8 #x819D) Err bitreich.org 70 i- (#xC9A9 #x83F1) Err bitreich.org 70 i- (#xC9AA #x8098) Err bitreich.org 70 i- (#xC9AB #x5F3C) Err bitreich.org 70 i- (#xC9AC #x5FC5) Err bitreich.org 70 i- (#xC9AD #x7562) Err bitreich.org 70 i- (#xC9AE #x7B46) Err bitreich.org 70 i- (#xC9AF #x903C) Err bitreich.org 70 i- (#xC9B0 #x6867) Err bitreich.org 70 i- (#xC9B1 #x59EB) Err bitreich.org 70 i- (#xC9B2 #x5A9B) Err bitreich.org 70 i- (#xC9B3 #x7D10) Err bitreich.org 70 i- (#xC9B4 #x767E) Err bitreich.org 70 i- (#xC9B5 #x8B2C) Err bitreich.org 70 i- (#xC9B6 #x4FF5) Err bitreich.org 70 i- (#xC9B7 #x5F6A) Err bitreich.org 70 i- (#xC9B8 #x6A19) Err bitreich.org 70 i- (#xC9B9 #x6C37) Err bitreich.org 70 i- (#xC9BA #x6F02) Err bitreich.org 70 i- (#xC9BB #x74E2) Err bitreich.org 70 i- (#xC9BC #x7968) Err bitreich.org 70 i- (#xC9BD #x8868) Err bitreich.org 70 i- (#xC9BE #x8A55) Err bitreich.org 70 i- (#xC9BF #x8C79) Err bitreich.org 70 i- (#xC9C0 #x5EDF) Err bitreich.org 70 i- (#xC9C1 #x63CF) Err bitreich.org 70 i- (#xC9C2 #x75C5) Err bitreich.org 70 i- (#xC9C3 #x79D2) Err bitreich.org 70 i- (#xC9C4 #x82D7) Err bitreich.org 70 i- (#xC9C5 #x9328) Err bitreich.org 70 i- (#xC9C6 #x92F2) Err bitreich.org 70 i- (#xC9C7 #x849C) Err bitreich.org 70 i- (#xC9C8 #x86ED) Err bitreich.org 70 i- (#xC9C9 #x9C2D) Err bitreich.org 70 i- (#xC9CA #x54C1) Err bitreich.org 70 i- (#xC9CB #x5F6C) Err bitreich.org 70 i- (#xC9CC #x658C) Err bitreich.org 70 i- (#xC9CD #x6D5C) Err bitreich.org 70 i- (#xC9CE #x7015) Err bitreich.org 70 i- (#xC9CF #x8CA7) Err bitreich.org 70 i- (#xC9D0 #x8CD3) Err bitreich.org 70 i- (#xC9D1 #x983B) Err bitreich.org 70 i- (#xC9D2 #x654F) Err bitreich.org 70 i- (#xC9D3 #x74F6) Err bitreich.org 70 i- (#xC9D4 #x4E0D) Err bitreich.org 70 i- (#xC9D5 #x4ED8) Err bitreich.org 70 i- (#xC9D6 #x57E0) Err bitreich.org 70 i- (#xC9D7 #x592B) Err bitreich.org 70 i- (#xC9D8 #x5A66) Err bitreich.org 70 i- (#xC9D9 #x5BCC) Err bitreich.org 70 i- (#xC9DA #x51A8) Err bitreich.org 70 i- (#xC9DB #x5E03) Err bitreich.org 70 i- (#xC9DC #x5E9C) Err bitreich.org 70 i- (#xC9DD #x6016) Err bitreich.org 70 i- (#xC9DE #x6276) Err bitreich.org 70 i- (#xC9DF #x6577) Err bitreich.org 70 i- (#xC9E0 #x65A7) Err bitreich.org 70 i- (#xC9E1 #x666E) Err bitreich.org 70 i- (#xC9E2 #x6D6E) Err bitreich.org 70 i- (#xC9E3 #x7236) Err bitreich.org 70 i- (#xC9E4 #x7B26) Err bitreich.org 70 i- (#xC9E5 #x8150) Err bitreich.org 70 i- (#xC9E6 #x819A) Err bitreich.org 70 i- (#xC9E7 #x8299) Err bitreich.org 70 i- (#xC9E8 #x8B5C) Err bitreich.org 70 i- (#xC9E9 #x8CA0) Err bitreich.org 70 i- (#xC9EA #x8CE6) Err bitreich.org 70 i- (#xC9EB #x8D74) Err bitreich.org 70 i- (#xC9EC #x961C) Err bitreich.org 70 i- (#xC9ED #x9644) Err bitreich.org 70 i- (#xC9EE #x4FAE) Err bitreich.org 70 i- (#xC9EF #x64AB) Err bitreich.org 70 i- (#xC9F0 #x6B66) Err bitreich.org 70 i- (#xC9F1 #x821E) Err bitreich.org 70 i- (#xC9F2 #x8461) Err bitreich.org 70 i- (#xC9F3 #x856A) Err bitreich.org 70 i- (#xC9F4 #x90E8) Err bitreich.org 70 i- (#xC9F5 #x5C01) Err bitreich.org 70 i- (#xC9F6 #x6953) Err bitreich.org 70 i- (#xC9F7 #x98A8) Err bitreich.org 70 i- (#xC9F8 #x847A) Err bitreich.org 70 i- (#xC9F9 #x8557) Err bitreich.org 70 i- (#xC9FA #x4F0F) Err bitreich.org 70 i- (#xC9FB #x526F) Err bitreich.org 70 i- (#xC9FC #x5FA9) Err bitreich.org 70 i- (#xC9FD #x5E45) Err bitreich.org 70 i- (#xC9FE #x670D) Err bitreich.org 70 i- (#xCAA1 #x798F) Err bitreich.org 70 i- (#xCAA2 #x8179) Err bitreich.org 70 i- (#xCAA3 #x8907) Err bitreich.org 70 i- (#xCAA4 #x8986) Err bitreich.org 70 i- (#xCAA5 #x6DF5) Err bitreich.org 70 i- (#xCAA6 #x5F17) Err bitreich.org 70 i- (#xCAA7 #x6255) Err bitreich.org 70 i- (#xCAA8 #x6CB8) Err bitreich.org 70 i- (#xCAA9 #x4ECF) Err bitreich.org 70 i- (#xCAAA #x7269) Err bitreich.org 70 i- (#xCAAB #x9B92) Err bitreich.org 70 i- (#xCAAC #x5206) Err bitreich.org 70 i- (#xCAAD #x543B) Err bitreich.org 70 i- (#xCAAE #x5674) Err bitreich.org 70 i- (#xCAAF #x58B3) Err bitreich.org 70 i- (#xCAB0 #x61A4) Err bitreich.org 70 i- (#xCAB1 #x626E) Err bitreich.org 70 i- (#xCAB2 #x711A) Err bitreich.org 70 i- (#xCAB3 #x596E) Err bitreich.org 70 i- (#xCAB4 #x7C89) Err bitreich.org 70 i- (#xCAB5 #x7CDE) Err bitreich.org 70 i- (#xCAB6 #x7D1B) Err bitreich.org 70 i- (#xCAB7 #x96F0) Err bitreich.org 70 i- (#xCAB8 #x6587) Err bitreich.org 70 i- (#xCAB9 #x805E) Err bitreich.org 70 i- (#xCABA #x4E19) Err bitreich.org 70 i- (#xCABB #x4F75) Err bitreich.org 70 i- (#xCABC #x5175) Err bitreich.org 70 i- (#xCABD #x5840) Err bitreich.org 70 i- (#xCABE #x5E63) Err bitreich.org 70 i- (#xCABF #x5E73) Err bitreich.org 70 i- (#xCAC0 #x5F0A) Err bitreich.org 70 i- (#xCAC1 #x67C4) Err bitreich.org 70 i- (#xCAC2 #x4E26) Err bitreich.org 70 i- (#xCAC3 #x853D) Err bitreich.org 70 i- (#xCAC4 #x9589) Err bitreich.org 70 i- (#xCAC5 #x965B) Err bitreich.org 70 i- (#xCAC6 #x7C73) Err bitreich.org 70 i- (#xCAC7 #x9801) Err bitreich.org 70 i- (#xCAC8 #x50FB) Err bitreich.org 70 i- (#xCAC9 #x58C1) Err bitreich.org 70 i- (#xCACA #x7656) Err bitreich.org 70 i- (#xCACB #x78A7) Err bitreich.org 70 i- (#xCACC #x5225) Err bitreich.org 70 i- (#xCACD #x77A5) Err bitreich.org 70 i- (#xCACE #x8511) Err bitreich.org 70 i- (#xCACF #x7B86) Err bitreich.org 70 i- (#xCAD0 #x504F) Err bitreich.org 70 i- (#xCAD1 #x5909) Err bitreich.org 70 i- (#xCAD2 #x7247) Err bitreich.org 70 i- (#xCAD3 #x7BC7) Err bitreich.org 70 i- (#xCAD4 #x7DE8) Err bitreich.org 70 i- (#xCAD5 #x8FBA) Err bitreich.org 70 i- (#xCAD6 #x8FD4) Err bitreich.org 70 i- (#xCAD7 #x904D) Err bitreich.org 70 i- (#xCAD8 #x4FBF) Err bitreich.org 70 i- (#xCAD9 #x52C9) Err bitreich.org 70 i- (#xCADA #x5A29) Err bitreich.org 70 i- (#xCADB #x5F01) Err bitreich.org 70 i- (#xCADC #x97AD) Err bitreich.org 70 i- (#xCADD #x4FDD) Err bitreich.org 70 i- (#xCADE #x8217) Err bitreich.org 70 i- (#xCADF #x92EA) Err bitreich.org 70 i- (#xCAE0 #x5703) Err bitreich.org 70 i- (#xCAE1 #x6355) Err bitreich.org 70 i- (#xCAE2 #x6B69) Err bitreich.org 70 i- (#xCAE3 #x752B) Err bitreich.org 70 i- (#xCAE4 #x88DC) Err bitreich.org 70 i- (#xCAE5 #x8F14) Err bitreich.org 70 i- (#xCAE6 #x7A42) Err bitreich.org 70 i- (#xCAE7 #x52DF) Err bitreich.org 70 i- (#xCAE8 #x5893) Err bitreich.org 70 i- (#xCAE9 #x6155) Err bitreich.org 70 i- (#xCAEA #x620A) Err bitreich.org 70 i- (#xCAEB #x66AE) Err bitreich.org 70 i- (#xCAEC #x6BCD) Err bitreich.org 70 i- (#xCAED #x7C3F) Err bitreich.org 70 i- (#xCAEE #x83E9) Err bitreich.org 70 i- (#xCAEF #x5023) Err bitreich.org 70 i- (#xCAF0 #x4FF8) Err bitreich.org 70 i- (#xCAF1 #x5305) Err bitreich.org 70 i- (#xCAF2 #x5446) Err bitreich.org 70 i- (#xCAF3 #x5831) Err bitreich.org 70 i- (#xCAF4 #x5949) Err bitreich.org 70 i- (#xCAF5 #x5B9D) Err bitreich.org 70 i- (#xCAF6 #x5CF0) Err bitreich.org 70 i- (#xCAF7 #x5CEF) Err bitreich.org 70 i- (#xCAF8 #x5D29) Err bitreich.org 70 i- (#xCAF9 #x5E96) Err bitreich.org 70 i- (#xCAFA #x62B1) Err bitreich.org 70 i- (#xCAFB #x6367) Err bitreich.org 70 i- (#xCAFC #x653E) Err bitreich.org 70 i- (#xCAFD #x65B9) Err bitreich.org 70 i- (#xCAFE #x670B) Err bitreich.org 70 i- (#xCBA1 #x6CD5) Err bitreich.org 70 i- (#xCBA2 #x6CE1) Err bitreich.org 70 i- (#xCBA3 #x70F9) Err bitreich.org 70 i- (#xCBA4 #x7832) Err bitreich.org 70 i- (#xCBA5 #x7E2B) Err bitreich.org 70 i- (#xCBA6 #x80DE) Err bitreich.org 70 i- (#xCBA7 #x82B3) Err bitreich.org 70 i- (#xCBA8 #x840C) Err bitreich.org 70 i- (#xCBA9 #x84EC) Err bitreich.org 70 i- (#xCBAA #x8702) Err bitreich.org 70 i- (#xCBAB #x8912) Err bitreich.org 70 i- (#xCBAC #x8A2A) Err bitreich.org 70 i- (#xCBAD #x8C4A) Err bitreich.org 70 i- (#xCBAE #x90A6) Err bitreich.org 70 i- (#xCBAF #x92D2) Err bitreich.org 70 i- (#xCBB0 #x98FD) Err bitreich.org 70 i- (#xCBB1 #x9CF3) Err bitreich.org 70 i- (#xCBB2 #x9D6C) Err bitreich.org 70 i- (#xCBB3 #x4E4F) Err bitreich.org 70 i- (#xCBB4 #x4EA1) Err bitreich.org 70 i- (#xCBB5 #x508D) Err bitreich.org 70 i- (#xCBB6 #x5256) Err bitreich.org 70 i- (#xCBB7 #x574A) Err bitreich.org 70 i- (#xCBB8 #x59A8) Err bitreich.org 70 i- (#xCBB9 #x5E3D) Err bitreich.org 70 i- (#xCBBA #x5FD8) Err bitreich.org 70 i- (#xCBBB #x5FD9) Err bitreich.org 70 i- (#xCBBC #x623F) Err bitreich.org 70 i- (#xCBBD #x66B4) Err bitreich.org 70 i- (#xCBBE #x671B) Err bitreich.org 70 i- (#xCBBF #x67D0) Err bitreich.org 70 i- (#xCBC0 #x68D2) Err bitreich.org 70 i- (#xCBC1 #x5192) Err bitreich.org 70 i- (#xCBC2 #x7D21) Err bitreich.org 70 i- (#xCBC3 #x80AA) Err bitreich.org 70 i- (#xCBC4 #x81A8) Err bitreich.org 70 i- (#xCBC5 #x8B00) Err bitreich.org 70 i- (#xCBC6 #x8C8C) Err bitreich.org 70 i- (#xCBC7 #x8CBF) Err bitreich.org 70 i- (#xCBC8 #x927E) Err bitreich.org 70 i- (#xCBC9 #x9632) Err bitreich.org 70 i- (#xCBCA #x5420) Err bitreich.org 70 i- (#xCBCB #x982C) Err bitreich.org 70 i- (#xCBCC #x5317) Err bitreich.org 70 i- (#xCBCD #x50D5) Err bitreich.org 70 i- (#xCBCE #x535C) Err bitreich.org 70 i- (#xCBCF #x58A8) Err bitreich.org 70 i- (#xCBD0 #x64B2) Err bitreich.org 70 i- (#xCBD1 #x6734) Err bitreich.org 70 i- (#xCBD2 #x7267) Err bitreich.org 70 i- (#xCBD3 #x7766) Err bitreich.org 70 i- (#xCBD4 #x7A46) Err bitreich.org 70 i- (#xCBD5 #x91E6) Err bitreich.org 70 i- (#xCBD6 #x52C3) Err bitreich.org 70 i- (#xCBD7 #x6CA1) Err bitreich.org 70 i- (#xCBD8 #x6B86) Err bitreich.org 70 i- (#xCBD9 #x5800) Err bitreich.org 70 i- (#xCBDA #x5E4C) Err bitreich.org 70 i- (#xCBDB #x5954) Err bitreich.org 70 i- (#xCBDC #x672C) Err bitreich.org 70 i- (#xCBDD #x7FFB) Err bitreich.org 70 i- (#xCBDE #x51E1) Err bitreich.org 70 i- (#xCBDF #x76C6) Err bitreich.org 70 i- (#xCBE0 #x6469) Err bitreich.org 70 i- (#xCBE1 #x78E8) Err bitreich.org 70 i- (#xCBE2 #x9B54) Err bitreich.org 70 i- (#xCBE3 #x9EBB) Err bitreich.org 70 i- (#xCBE4 #x57CB) Err bitreich.org 70 i- (#xCBE5 #x59B9) Err bitreich.org 70 i- (#xCBE6 #x6627) Err bitreich.org 70 i- (#xCBE7 #x679A) Err bitreich.org 70 i- (#xCBE8 #x6BCE) Err bitreich.org 70 i- (#xCBE9 #x54E9) Err bitreich.org 70 i- (#xCBEA #x69D9) Err bitreich.org 70 i- (#xCBEB #x5E55) Err bitreich.org 70 i- (#xCBEC #x819C) Err bitreich.org 70 i- (#xCBED #x6795) Err bitreich.org 70 i- (#xCBEE #x9BAA) Err bitreich.org 70 i- (#xCBEF #x67FE) Err bitreich.org 70 i- (#xCBF0 #x9C52) Err bitreich.org 70 i- (#xCBF1 #x685D) Err bitreich.org 70 i- (#xCBF2 #x4EA6) Err bitreich.org 70 i- (#xCBF3 #x4FE3) Err bitreich.org 70 i- (#xCBF4 #x53C8) Err bitreich.org 70 i- (#xCBF5 #x62B9) Err bitreich.org 70 i- (#xCBF6 #x672B) Err bitreich.org 70 i- (#xCBF7 #x6CAB) Err bitreich.org 70 i- (#xCBF8 #x8FC4) Err bitreich.org 70 i- (#xCBF9 #x4FAD) Err bitreich.org 70 i- (#xCBFA #x7E6D) Err bitreich.org 70 i- (#xCBFB #x9EBF) Err bitreich.org 70 i- (#xCBFC #x4E07) Err bitreich.org 70 i- (#xCBFD #x6162) Err bitreich.org 70 i- (#xCBFE #x6E80) Err bitreich.org 70 i- (#xCCA1 #x6F2B) Err bitreich.org 70 i- (#xCCA2 #x8513) Err bitreich.org 70 i- (#xCCA3 #x5473) Err bitreich.org 70 i- (#xCCA4 #x672A) Err bitreich.org 70 i- (#xCCA5 #x9B45) Err bitreich.org 70 i- (#xCCA6 #x5DF3) Err bitreich.org 70 i- (#xCCA7 #x7B95) Err bitreich.org 70 i- (#xCCA8 #x5CAC) Err bitreich.org 70 i- (#xCCA9 #x5BC6) Err bitreich.org 70 i- (#xCCAA #x871C) Err bitreich.org 70 i- (#xCCAB #x6E4A) Err bitreich.org 70 i- (#xCCAC #x84D1) Err bitreich.org 70 i- (#xCCAD #x7A14) Err bitreich.org 70 i- (#xCCAE #x8108) Err bitreich.org 70 i- (#xCCAF #x5999) Err bitreich.org 70 i- (#xCCB0 #x7C8D) Err bitreich.org 70 i- (#xCCB1 #x6C11) Err bitreich.org 70 i- (#xCCB2 #x7720) Err bitreich.org 70 i- (#xCCB3 #x52D9) Err bitreich.org 70 i- (#xCCB4 #x5922) Err bitreich.org 70 i- (#xCCB5 #x7121) Err bitreich.org 70 i- (#xCCB6 #x725F) Err bitreich.org 70 i- (#xCCB7 #x77DB) Err bitreich.org 70 i- (#xCCB8 #x9727) Err bitreich.org 70 i- (#xCCB9 #x9D61) Err bitreich.org 70 i- (#xCCBA #x690B) Err bitreich.org 70 i- (#xCCBB #x5A7F) Err bitreich.org 70 i- (#xCCBC #x5A18) Err bitreich.org 70 i- (#xCCBD #x51A5) Err bitreich.org 70 i- (#xCCBE #x540D) Err bitreich.org 70 i- (#xCCBF #x547D) Err bitreich.org 70 i- (#xCCC0 #x660E) Err bitreich.org 70 i- (#xCCC1 #x76DF) Err bitreich.org 70 i- (#xCCC2 #x8FF7) Err bitreich.org 70 i- (#xCCC3 #x9298) Err bitreich.org 70 i- (#xCCC4 #x9CF4) Err bitreich.org 70 i- (#xCCC5 #x59EA) Err bitreich.org 70 i- (#xCCC6 #x725D) Err bitreich.org 70 i- (#xCCC7 #x6EC5) Err bitreich.org 70 i- (#xCCC8 #x514D) Err bitreich.org 70 i- (#xCCC9 #x68C9) Err bitreich.org 70 i- (#xCCCA #x7DBF) Err bitreich.org 70 i- (#xCCCB #x7DEC) Err bitreich.org 70 i- (#xCCCC #x9762) Err bitreich.org 70 i- (#xCCCD #x9EBA) Err bitreich.org 70 i- (#xCCCE #x6478) Err bitreich.org 70 i- (#xCCCF #x6A21) Err bitreich.org 70 i- (#xCCD0 #x8302) Err bitreich.org 70 i- (#xCCD1 #x5984) Err bitreich.org 70 i- (#xCCD2 #x5B5F) Err bitreich.org 70 i- (#xCCD3 #x6BDB) Err bitreich.org 70 i- (#xCCD4 #x731B) Err bitreich.org 70 i- (#xCCD5 #x76F2) Err bitreich.org 70 i- (#xCCD6 #x7DB2) Err bitreich.org 70 i- (#xCCD7 #x8017) Err bitreich.org 70 i- (#xCCD8 #x8499) Err bitreich.org 70 i- (#xCCD9 #x5132) Err bitreich.org 70 i- (#xCCDA #x6728) Err bitreich.org 70 i- (#xCCDB #x9ED9) Err bitreich.org 70 i- (#xCCDC #x76EE) Err bitreich.org 70 i- (#xCCDD #x6762) Err bitreich.org 70 i- (#xCCDE #x52FF) Err bitreich.org 70 i- (#xCCDF #x9905) Err bitreich.org 70 i- (#xCCE0 #x5C24) Err bitreich.org 70 i- (#xCCE1 #x623B) Err bitreich.org 70 i- (#xCCE2 #x7C7E) Err bitreich.org 70 i- (#xCCE3 #x8CB0) Err bitreich.org 70 i- (#xCCE4 #x554F) Err bitreich.org 70 i- (#xCCE5 #x60B6) Err bitreich.org 70 i- (#xCCE6 #x7D0B) Err bitreich.org 70 i- (#xCCE7 #x9580) Err bitreich.org 70 i- (#xCCE8 #x5301) Err bitreich.org 70 i- (#xCCE9 #x4E5F) Err bitreich.org 70 i- (#xCCEA #x51B6) Err bitreich.org 70 i- (#xCCEB #x591C) Err bitreich.org 70 i- (#xCCEC #x723A) Err bitreich.org 70 i- (#xCCED #x8036) Err bitreich.org 70 i- (#xCCEE #x91CE) Err bitreich.org 70 i- (#xCCEF #x5F25) Err bitreich.org 70 i- (#xCCF0 #x77E2) Err bitreich.org 70 i- (#xCCF1 #x5384) Err bitreich.org 70 i- (#xCCF2 #x5F79) Err bitreich.org 70 i- (#xCCF3 #x7D04) Err bitreich.org 70 i- (#xCCF4 #x85AC) Err bitreich.org 70 i- (#xCCF5 #x8A33) Err bitreich.org 70 i- (#xCCF6 #x8E8D) Err bitreich.org 70 i- (#xCCF7 #x9756) Err bitreich.org 70 i- (#xCCF8 #x67F3) Err bitreich.org 70 i- (#xCCF9 #x85AE) Err bitreich.org 70 i- (#xCCFA #x9453) Err bitreich.org 70 i- (#xCCFB #x6109) Err bitreich.org 70 i- (#xCCFC #x6108) Err bitreich.org 70 i- (#xCCFD #x6CB9) Err bitreich.org 70 i- (#xCCFE #x7652) Err bitreich.org 70 i- (#xCDA1 #x8AED) Err bitreich.org 70 i- (#xCDA2 #x8F38) Err bitreich.org 70 i- (#xCDA3 #x552F) Err bitreich.org 70 i- (#xCDA4 #x4F51) Err bitreich.org 70 i- (#xCDA5 #x512A) Err bitreich.org 70 i- (#xCDA6 #x52C7) Err bitreich.org 70 i- (#xCDA7 #x53CB) Err bitreich.org 70 i- (#xCDA8 #x5BA5) Err bitreich.org 70 i- (#xCDA9 #x5E7D) Err bitreich.org 70 i- (#xCDAA #x60A0) Err bitreich.org 70 i- (#xCDAB #x6182) Err bitreich.org 70 i- (#xCDAC #x63D6) Err bitreich.org 70 i- (#xCDAD #x6709) Err bitreich.org 70 i- (#xCDAE #x67DA) Err bitreich.org 70 i- (#xCDAF #x6E67) Err bitreich.org 70 i- (#xCDB0 #x6D8C) Err bitreich.org 70 i- (#xCDB1 #x7336) Err bitreich.org 70 i- (#xCDB2 #x7337) Err bitreich.org 70 i- (#xCDB3 #x7531) Err bitreich.org 70 i- (#xCDB4 #x7950) Err bitreich.org 70 i- (#xCDB5 #x88D5) Err bitreich.org 70 i- (#xCDB6 #x8A98) Err bitreich.org 70 i- (#xCDB7 #x904A) Err bitreich.org 70 i- (#xCDB8 #x9091) Err bitreich.org 70 i- (#xCDB9 #x90F5) Err bitreich.org 70 i- (#xCDBA #x96C4) Err bitreich.org 70 i- (#xCDBB #x878D) Err bitreich.org 70 i- (#xCDBC #x5915) Err bitreich.org 70 i- (#xCDBD #x4E88) Err bitreich.org 70 i- (#xCDBE #x4F59) Err bitreich.org 70 i- (#xCDBF #x4E0E) Err bitreich.org 70 i- (#xCDC0 #x8A89) Err bitreich.org 70 i- (#xCDC1 #x8F3F) Err bitreich.org 70 i- (#xCDC2 #x9810) Err bitreich.org 70 i- (#xCDC3 #x50AD) Err bitreich.org 70 i- (#xCDC4 #x5E7C) Err bitreich.org 70 i- (#xCDC5 #x5996) Err bitreich.org 70 i- (#xCDC6 #x5BB9) Err bitreich.org 70 i- (#xCDC7 #x5EB8) Err bitreich.org 70 i- (#xCDC8 #x63DA) Err bitreich.org 70 i- (#xCDC9 #x63FA) Err bitreich.org 70 i- (#xCDCA #x64C1) Err bitreich.org 70 i- (#xCDCB #x66DC) Err bitreich.org 70 i- (#xCDCC #x694A) Err bitreich.org 70 i- (#xCDCD #x69D8) Err bitreich.org 70 i- (#xCDCE #x6D0B) Err bitreich.org 70 i- (#xCDCF #x6EB6) Err bitreich.org 70 i- (#xCDD0 #x7194) Err bitreich.org 70 i- (#xCDD1 #x7528) Err bitreich.org 70 i- (#xCDD2 #x7AAF) Err bitreich.org 70 i- (#xCDD3 #x7F8A) Err bitreich.org 70 i- (#xCDD4 #x8000) Err bitreich.org 70 i- (#xCDD5 #x8449) Err bitreich.org 70 i- (#xCDD6 #x84C9) Err bitreich.org 70 i- (#xCDD7 #x8981) Err bitreich.org 70 i- (#xCDD8 #x8B21) Err bitreich.org 70 i- (#xCDD9 #x8E0A) Err bitreich.org 70 i- (#xCDDA #x9065) Err bitreich.org 70 i- (#xCDDB #x967D) Err bitreich.org 70 i- (#xCDDC #x990A) Err bitreich.org 70 i- (#xCDDD #x617E) Err bitreich.org 70 i- (#xCDDE #x6291) Err bitreich.org 70 i- (#xCDDF #x6B32) Err bitreich.org 70 i- (#xCDE0 #x6C83) Err bitreich.org 70 i- (#xCDE1 #x6D74) Err bitreich.org 70 i- (#xCDE2 #x7FCC) Err bitreich.org 70 i- (#xCDE3 #x7FFC) Err bitreich.org 70 i- (#xCDE4 #x6DC0) Err bitreich.org 70 i- (#xCDE5 #x7F85) Err bitreich.org 70 i- (#xCDE6 #x87BA) Err bitreich.org 70 i- (#xCDE7 #x88F8) Err bitreich.org 70 i- (#xCDE8 #x6765) Err bitreich.org 70 i- (#xCDE9 #x83B1) Err bitreich.org 70 i- (#xCDEA #x983C) Err bitreich.org 70 i- (#xCDEB #x96F7) Err bitreich.org 70 i- (#xCDEC #x6D1B) Err bitreich.org 70 i- (#xCDED #x7D61) Err bitreich.org 70 i- (#xCDEE #x843D) Err bitreich.org 70 i- (#xCDEF #x916A) Err bitreich.org 70 i- (#xCDF0 #x4E71) Err bitreich.org 70 i- (#xCDF1 #x5375) Err bitreich.org 70 i- (#xCDF2 #x5D50) Err bitreich.org 70 i- (#xCDF3 #x6B04) Err bitreich.org 70 i- (#xCDF4 #x6FEB) Err bitreich.org 70 i- (#xCDF5 #x85CD) Err bitreich.org 70 i- (#xCDF6 #x862D) Err bitreich.org 70 i- (#xCDF7 #x89A7) Err bitreich.org 70 i- (#xCDF8 #x5229) Err bitreich.org 70 i- (#xCDF9 #x540F) Err bitreich.org 70 i- (#xCDFA #x5C65) Err bitreich.org 70 i- (#xCDFB #x674E) Err bitreich.org 70 i- (#xCDFC #x68A8) Err bitreich.org 70 i- (#xCDFD #x7406) Err bitreich.org 70 i- (#xCDFE #x7483) Err bitreich.org 70 i- (#xCEA1 #x75E2) Err bitreich.org 70 i- (#xCEA2 #x88CF) Err bitreich.org 70 i- (#xCEA3 #x88E1) Err bitreich.org 70 i- (#xCEA4 #x91CC) Err bitreich.org 70 i- (#xCEA5 #x96E2) Err bitreich.org 70 i- (#xCEA6 #x9678) Err bitreich.org 70 i- (#xCEA7 #x5F8B) Err bitreich.org 70 i- (#xCEA8 #x7387) Err bitreich.org 70 i- (#xCEA9 #x7ACB) Err bitreich.org 70 i- (#xCEAA #x844E) Err bitreich.org 70 i- (#xCEAB #x63A0) Err bitreich.org 70 i- (#xCEAC #x7565) Err bitreich.org 70 i- (#xCEAD #x5289) Err bitreich.org 70 i- (#xCEAE #x6D41) Err bitreich.org 70 i- (#xCEAF #x6E9C) Err bitreich.org 70 i- (#xCEB0 #x7409) Err bitreich.org 70 i- (#xCEB1 #x7559) Err bitreich.org 70 i- (#xCEB2 #x786B) Err bitreich.org 70 i- (#xCEB3 #x7C92) Err bitreich.org 70 i- (#xCEB4 #x9686) Err bitreich.org 70 i- (#xCEB5 #x7ADC) Err bitreich.org 70 i- (#xCEB6 #x9F8D) Err bitreich.org 70 i- (#xCEB7 #x4FB6) Err bitreich.org 70 i- (#xCEB8 #x616E) Err bitreich.org 70 i- (#xCEB9 #x65C5) Err bitreich.org 70 i- (#xCEBA #x865C) Err bitreich.org 70 i- (#xCEBB #x4E86) Err bitreich.org 70 i- (#xCEBC #x4EAE) Err bitreich.org 70 i- (#xCEBD #x50DA) Err bitreich.org 70 i- (#xCEBE #x4E21) Err bitreich.org 70 i- (#xCEBF #x51CC) Err bitreich.org 70 i- (#xCEC0 #x5BEE) Err bitreich.org 70 i- (#xCEC1 #x6599) Err bitreich.org 70 i- (#xCEC2 #x6881) Err bitreich.org 70 i- (#xCEC3 #x6DBC) Err bitreich.org 70 i- (#xCEC4 #x731F) Err bitreich.org 70 i- (#xCEC5 #x7642) Err bitreich.org 70 i- (#xCEC6 #x77AD) Err bitreich.org 70 i- (#xCEC7 #x7A1C) Err bitreich.org 70 i- (#xCEC8 #x7CE7) Err bitreich.org 70 i- (#xCEC9 #x826F) Err bitreich.org 70 i- (#xCECA #x8AD2) Err bitreich.org 70 i- (#xCECB #x907C) Err bitreich.org 70 i- (#xCECC #x91CF) Err bitreich.org 70 i- (#xCECD #x9675) Err bitreich.org 70 i- (#xCECE #x9818) Err bitreich.org 70 i- (#xCECF #x529B) Err bitreich.org 70 i- (#xCED0 #x7DD1) Err bitreich.org 70 i- (#xCED1 #x502B) Err bitreich.org 70 i- (#xCED2 #x5398) Err bitreich.org 70 i- (#xCED3 #x6797) Err bitreich.org 70 i- (#xCED4 #x6DCB) Err bitreich.org 70 i- (#xCED5 #x71D0) Err bitreich.org 70 i- (#xCED6 #x7433) Err bitreich.org 70 i- (#xCED7 #x81E8) Err bitreich.org 70 i- (#xCED8 #x8F2A) Err bitreich.org 70 i- (#xCED9 #x96A3) Err bitreich.org 70 i- (#xCEDA #x9C57) Err bitreich.org 70 i- (#xCEDB #x9E9F) Err bitreich.org 70 i- (#xCEDC #x7460) Err bitreich.org 70 i- (#xCEDD #x5841) Err bitreich.org 70 i- (#xCEDE #x6D99) Err bitreich.org 70 i- (#xCEDF #x7D2F) Err bitreich.org 70 i- (#xCEE0 #x985E) Err bitreich.org 70 i- (#xCEE1 #x4EE4) Err bitreich.org 70 i- (#xCEE2 #x4F36) Err bitreich.org 70 i- (#xCEE3 #x4F8B) Err bitreich.org 70 i- (#xCEE4 #x51B7) Err bitreich.org 70 i- (#xCEE5 #x52B1) Err bitreich.org 70 i- (#xCEE6 #x5DBA) Err bitreich.org 70 i- (#xCEE7 #x601C) Err bitreich.org 70 i- (#xCEE8 #x73B2) Err bitreich.org 70 i- (#xCEE9 #x793C) Err bitreich.org 70 i- (#xCEEA #x82D3) Err bitreich.org 70 i- (#xCEEB #x9234) Err bitreich.org 70 i- (#xCEEC #x96B7) Err bitreich.org 70 i- (#xCEED #x96F6) Err bitreich.org 70 i- (#xCEEE #x970A) Err bitreich.org 70 i- (#xCEEF #x9E97) Err bitreich.org 70 i- (#xCEF0 #x9F62) Err bitreich.org 70 i- (#xCEF1 #x66A6) Err bitreich.org 70 i- (#xCEF2 #x6B74) Err bitreich.org 70 i- (#xCEF3 #x5217) Err bitreich.org 70 i- (#xCEF4 #x52A3) Err bitreich.org 70 i- (#xCEF5 #x70C8) Err bitreich.org 70 i- (#xCEF6 #x88C2) Err bitreich.org 70 i- (#xCEF7 #x5EC9) Err bitreich.org 70 i- (#xCEF8 #x604B) Err bitreich.org 70 i- (#xCEF9 #x6190) Err bitreich.org 70 i- (#xCEFA #x6F23) Err bitreich.org 70 i- (#xCEFB #x7149) Err bitreich.org 70 i- (#xCEFC #x7C3E) Err bitreich.org 70 i- (#xCEFD #x7DF4) Err bitreich.org 70 i- (#xCEFE #x806F) Err bitreich.org 70 i- (#xCFA1 #x84EE) Err bitreich.org 70 i- (#xCFA2 #x9023) Err bitreich.org 70 i- (#xCFA3 #x932C) Err bitreich.org 70 i- (#xCFA4 #x5442) Err bitreich.org 70 i- (#xCFA5 #x9B6F) Err bitreich.org 70 i- (#xCFA6 #x6AD3) Err bitreich.org 70 i- (#xCFA7 #x7089) Err bitreich.org 70 i- (#xCFA8 #x8CC2) Err bitreich.org 70 i- (#xCFA9 #x8DEF) Err bitreich.org 70 i- (#xCFAA #x9732) Err bitreich.org 70 i- (#xCFAB #x52B4) Err bitreich.org 70 i- (#xCFAC #x5A41) Err bitreich.org 70 i- (#xCFAD #x5ECA) Err bitreich.org 70 i- (#xCFAE #x5F04) Err bitreich.org 70 i- (#xCFAF #x6717) Err bitreich.org 70 i- (#xCFB0 #x697C) Err bitreich.org 70 i- (#xCFB1 #x6994) Err bitreich.org 70 i- (#xCFB2 #x6D6A) Err bitreich.org 70 i- (#xCFB3 #x6F0F) Err bitreich.org 70 i- (#xCFB4 #x7262) Err bitreich.org 70 i- (#xCFB5 #x72FC) Err bitreich.org 70 i- (#xCFB6 #x7BED) Err bitreich.org 70 i- (#xCFB7 #x8001) Err bitreich.org 70 i- (#xCFB8 #x807E) Err bitreich.org 70 i- (#xCFB9 #x874B) Err bitreich.org 70 i- (#xCFBA #x90CE) Err bitreich.org 70 i- (#xCFBB #x516D) Err bitreich.org 70 i- (#xCFBC #x9E93) Err bitreich.org 70 i- (#xCFBD #x7984) Err bitreich.org 70 i- (#xCFBE #x808B) Err bitreich.org 70 i- (#xCFBF #x9332) Err bitreich.org 70 i- (#xCFC0 #x8AD6) Err bitreich.org 70 i- (#xCFC1 #x502D) Err bitreich.org 70 i- (#xCFC2 #x548C) Err bitreich.org 70 i- (#xCFC3 #x8A71) Err bitreich.org 70 i- (#xCFC4 #x6B6A) Err bitreich.org 70 i- (#xCFC5 #x8CC4) Err bitreich.org 70 i- (#xCFC6 #x8107) Err bitreich.org 70 i- (#xCFC7 #x60D1) Err bitreich.org 70 i- (#xCFC8 #x67A0) Err bitreich.org 70 i- (#xCFC9 #x9DF2) Err bitreich.org 70 i- (#xCFCA #x4E99) Err bitreich.org 70 i- (#xCFCB #x4E98) Err bitreich.org 70 i- (#xCFCC #x9C10) Err bitreich.org 70 i- (#xCFCD #x8A6B) Err bitreich.org 70 i- (#xCFCE #x85C1) Err bitreich.org 70 i- (#xCFCF #x8568) Err bitreich.org 70 i- (#xCFD0 #x6900) Err bitreich.org 70 i- (#xCFD1 #x6E7E) Err bitreich.org 70 i- (#xCFD2 #x7897) Err bitreich.org 70 i- (#xCFD3 #x8155) Err bitreich.org 70 i- (#xD0A1 #x5F0C) Err bitreich.org 70 i- (#xD0A2 #x4E10) Err bitreich.org 70 i- (#xD0A3 #x4E15) Err bitreich.org 70 i- (#xD0A4 #x4E2A) Err bitreich.org 70 i- (#xD0A5 #x4E31) Err bitreich.org 70 i- (#xD0A6 #x4E36) Err bitreich.org 70 i- (#xD0A7 #x4E3C) Err bitreich.org 70 i- (#xD0A8 #x4E3F) Err bitreich.org 70 i- (#xD0A9 #x4E42) Err bitreich.org 70 i- (#xD0AA #x4E56) Err bitreich.org 70 i- (#xD0AB #x4E58) Err bitreich.org 70 i- (#xD0AC #x4E82) Err bitreich.org 70 i- (#xD0AD #x4E85) Err bitreich.org 70 i- (#xD0AE #x8C6B) Err bitreich.org 70 i- (#xD0AF #x4E8A) Err bitreich.org 70 i- (#xD0B0 #x8212) Err bitreich.org 70 i- (#xD0B1 #x5F0D) Err bitreich.org 70 i- (#xD0B2 #x4E8E) Err bitreich.org 70 i- (#xD0B3 #x4E9E) Err bitreich.org 70 i- (#xD0B4 #x4E9F) Err bitreich.org 70 i- (#xD0B5 #x4EA0) Err bitreich.org 70 i- (#xD0B6 #x4EA2) Err bitreich.org 70 i- (#xD0B7 #x4EB0) Err bitreich.org 70 i- (#xD0B8 #x4EB3) Err bitreich.org 70 i- (#xD0B9 #x4EB6) Err bitreich.org 70 i- (#xD0BA #x4ECE) Err bitreich.org 70 i- (#xD0BB #x4ECD) Err bitreich.org 70 i- (#xD0BC #x4EC4) Err bitreich.org 70 i- (#xD0BD #x4EC6) Err bitreich.org 70 i- (#xD0BE #x4EC2) Err bitreich.org 70 i- (#xD0BF #x4ED7) Err bitreich.org 70 i- (#xD0C0 #x4EDE) Err bitreich.org 70 i- (#xD0C1 #x4EED) Err bitreich.org 70 i- (#xD0C2 #x4EDF) Err bitreich.org 70 i- (#xD0C3 #x4EF7) Err bitreich.org 70 i- (#xD0C4 #x4F09) Err bitreich.org 70 i- (#xD0C5 #x4F5A) Err bitreich.org 70 i- (#xD0C6 #x4F30) Err bitreich.org 70 i- (#xD0C7 #x4F5B) Err bitreich.org 70 i- (#xD0C8 #x4F5D) Err bitreich.org 70 i- (#xD0C9 #x4F57) Err bitreich.org 70 i- (#xD0CA #x4F47) Err bitreich.org 70 i- (#xD0CB #x4F76) Err bitreich.org 70 i- (#xD0CC #x4F88) Err bitreich.org 70 i- (#xD0CD #x4F8F) Err bitreich.org 70 i- (#xD0CE #x4F98) Err bitreich.org 70 i- (#xD0CF #x4F7B) Err bitreich.org 70 i- (#xD0D0 #x4F69) Err bitreich.org 70 i- (#xD0D1 #x4F70) Err bitreich.org 70 i- (#xD0D2 #x4F91) Err bitreich.org 70 i- (#xD0D3 #x4F6F) Err bitreich.org 70 i- (#xD0D4 #x4F86) Err bitreich.org 70 i- (#xD0D5 #x4F96) Err bitreich.org 70 i- (#xD0D6 #x5118) Err bitreich.org 70 i- (#xD0D7 #x4FD4) Err bitreich.org 70 i- (#xD0D8 #x4FDF) Err bitreich.org 70 i- (#xD0D9 #x4FCE) Err bitreich.org 70 i- (#xD0DA #x4FD8) Err bitreich.org 70 i- (#xD0DB #x4FDB) Err bitreich.org 70 i- (#xD0DC #x4FD1) Err bitreich.org 70 i- (#xD0DD #x4FDA) Err bitreich.org 70 i- (#xD0DE #x4FD0) Err bitreich.org 70 i- (#xD0DF #x4FE4) Err bitreich.org 70 i- (#xD0E0 #x4FE5) Err bitreich.org 70 i- (#xD0E1 #x501A) Err bitreich.org 70 i- (#xD0E2 #x5028) Err bitreich.org 70 i- (#xD0E3 #x5014) Err bitreich.org 70 i- (#xD0E4 #x502A) Err bitreich.org 70 i- (#xD0E5 #x5025) Err bitreich.org 70 i- (#xD0E6 #x5005) Err bitreich.org 70 i- (#xD0E7 #x4F1C) Err bitreich.org 70 i- (#xD0E8 #x4FF6) Err bitreich.org 70 i- (#xD0E9 #x5021) Err bitreich.org 70 i- (#xD0EA #x5029) Err bitreich.org 70 i- (#xD0EB #x502C) Err bitreich.org 70 i- (#xD0EC #x4FFE) Err bitreich.org 70 i- (#xD0ED #x4FEF) Err bitreich.org 70 i- (#xD0EE #x5011) Err bitreich.org 70 i- (#xD0EF #x5006) Err bitreich.org 70 i- (#xD0F0 #x5043) Err bitreich.org 70 i- (#xD0F1 #x5047) Err bitreich.org 70 i- (#xD0F2 #x6703) Err bitreich.org 70 i- (#xD0F3 #x5055) Err bitreich.org 70 i- (#xD0F4 #x5050) Err bitreich.org 70 i- (#xD0F5 #x5048) Err bitreich.org 70 i- (#xD0F6 #x505A) Err bitreich.org 70 i- (#xD0F7 #x5056) Err bitreich.org 70 i- (#xD0F8 #x506C) Err bitreich.org 70 i- (#xD0F9 #x5078) Err bitreich.org 70 i- (#xD0FA #x5080) Err bitreich.org 70 i- (#xD0FB #x509A) Err bitreich.org 70 i- (#xD0FC #x5085) Err bitreich.org 70 i- (#xD0FD #x50B4) Err bitreich.org 70 i- (#xD0FE #x50B2) Err bitreich.org 70 i- (#xD1A1 #x50C9) Err bitreich.org 70 i- (#xD1A2 #x50CA) Err bitreich.org 70 i- (#xD1A3 #x50B3) Err bitreich.org 70 i- (#xD1A4 #x50C2) Err bitreich.org 70 i- (#xD1A5 #x50D6) Err bitreich.org 70 i- (#xD1A6 #x50DE) Err bitreich.org 70 i- (#xD1A7 #x50E5) Err bitreich.org 70 i- (#xD1A8 #x50ED) Err bitreich.org 70 i- (#xD1A9 #x50E3) Err bitreich.org 70 i- (#xD1AA #x50EE) Err bitreich.org 70 i- (#xD1AB #x50F9) Err bitreich.org 70 i- (#xD1AC #x50F5) Err bitreich.org 70 i- (#xD1AD #x5109) Err bitreich.org 70 i- (#xD1AE #x5101) Err bitreich.org 70 i- (#xD1AF #x5102) Err bitreich.org 70 i- (#xD1B0 #x5116) Err bitreich.org 70 i- (#xD1B1 #x5115) Err bitreich.org 70 i- (#xD1B2 #x5114) Err bitreich.org 70 i- (#xD1B3 #x511A) Err bitreich.org 70 i- (#xD1B4 #x5121) Err bitreich.org 70 i- (#xD1B5 #x513A) Err bitreich.org 70 i- (#xD1B6 #x5137) Err bitreich.org 70 i- (#xD1B7 #x513C) Err bitreich.org 70 i- (#xD1B8 #x513B) Err bitreich.org 70 i- (#xD1B9 #x513F) Err bitreich.org 70 i- (#xD1BA #x5140) Err bitreich.org 70 i- (#xD1BB #x5152) Err bitreich.org 70 i- (#xD1BC #x514C) Err bitreich.org 70 i- (#xD1BD #x5154) Err bitreich.org 70 i- (#xD1BE #x5162) Err bitreich.org 70 i- (#xD1BF #x7AF8) Err bitreich.org 70 i- (#xD1C0 #x5169) Err bitreich.org 70 i- (#xD1C1 #x516A) Err bitreich.org 70 i- (#xD1C2 #x516E) Err bitreich.org 70 i- (#xD1C3 #x5180) Err bitreich.org 70 i- (#xD1C4 #x5182) Err bitreich.org 70 i- (#xD1C5 #x56D8) Err bitreich.org 70 i- (#xD1C6 #x518C) Err bitreich.org 70 i- (#xD1C7 #x5189) Err bitreich.org 70 i- (#xD1C8 #x518F) Err bitreich.org 70 i- (#xD1C9 #x5191) Err bitreich.org 70 i- (#xD1CA #x5193) Err bitreich.org 70 i- (#xD1CB #x5195) Err bitreich.org 70 i- (#xD1CC #x5196) Err bitreich.org 70 i- (#xD1CD #x51A4) Err bitreich.org 70 i- (#xD1CE #x51A6) Err bitreich.org 70 i- (#xD1CF #x51A2) Err bitreich.org 70 i- (#xD1D0 #x51A9) Err bitreich.org 70 i- (#xD1D1 #x51AA) Err bitreich.org 70 i- (#xD1D2 #x51AB) Err bitreich.org 70 i- (#xD1D3 #x51B3) Err bitreich.org 70 i- (#xD1D4 #x51B1) Err bitreich.org 70 i- (#xD1D5 #x51B2) Err bitreich.org 70 i- (#xD1D6 #x51B0) Err bitreich.org 70 i- (#xD1D7 #x51B5) Err bitreich.org 70 i- (#xD1D8 #x51BD) Err bitreich.org 70 i- (#xD1D9 #x51C5) Err bitreich.org 70 i- (#xD1DA #x51C9) Err bitreich.org 70 i- (#xD1DB #x51DB) Err bitreich.org 70 i- (#xD1DC #x51E0) Err bitreich.org 70 i- (#xD1DD #x8655) Err bitreich.org 70 i- (#xD1DE #x51E9) Err bitreich.org 70 i- (#xD1DF #x51ED) Err bitreich.org 70 i- (#xD1E0 #x51F0) Err bitreich.org 70 i- (#xD1E1 #x51F5) Err bitreich.org 70 i- (#xD1E2 #x51FE) Err bitreich.org 70 i- (#xD1E3 #x5204) Err bitreich.org 70 i- (#xD1E4 #x520B) Err bitreich.org 70 i- (#xD1E5 #x5214) Err bitreich.org 70 i- (#xD1E6 #x520E) Err bitreich.org 70 i- (#xD1E7 #x5227) Err bitreich.org 70 i- (#xD1E8 #x522A) Err bitreich.org 70 i- (#xD1E9 #x522E) Err bitreich.org 70 i- (#xD1EA #x5233) Err bitreich.org 70 i- (#xD1EB #x5239) Err bitreich.org 70 i- (#xD1EC #x524F) Err bitreich.org 70 i- (#xD1ED #x5244) Err bitreich.org 70 i- (#xD1EE #x524B) Err bitreich.org 70 i- (#xD1EF #x524C) Err bitreich.org 70 i- (#xD1F0 #x525E) Err bitreich.org 70 i- (#xD1F1 #x5254) Err bitreich.org 70 i- (#xD1F2 #x526A) Err bitreich.org 70 i- (#xD1F3 #x5274) Err bitreich.org 70 i- (#xD1F4 #x5269) Err bitreich.org 70 i- (#xD1F5 #x5273) Err bitreich.org 70 i- (#xD1F6 #x527F) Err bitreich.org 70 i- (#xD1F7 #x527D) Err bitreich.org 70 i- (#xD1F8 #x528D) Err bitreich.org 70 i- (#xD1F9 #x5294) Err bitreich.org 70 i- (#xD1FA #x5292) Err bitreich.org 70 i- (#xD1FB #x5271) Err bitreich.org 70 i- (#xD1FC #x5288) Err bitreich.org 70 i- (#xD1FD #x5291) Err bitreich.org 70 i- (#xD1FE #x8FA8) Err bitreich.org 70 i- (#xD2A1 #x8FA7) Err bitreich.org 70 i- (#xD2A2 #x52AC) Err bitreich.org 70 i- (#xD2A3 #x52AD) Err bitreich.org 70 i- (#xD2A4 #x52BC) Err bitreich.org 70 i- (#xD2A5 #x52B5) Err bitreich.org 70 i- (#xD2A6 #x52C1) Err bitreich.org 70 i- (#xD2A7 #x52CD) Err bitreich.org 70 i- (#xD2A8 #x52D7) Err bitreich.org 70 i- (#xD2A9 #x52DE) Err bitreich.org 70 i- (#xD2AA #x52E3) Err bitreich.org 70 i- (#xD2AB #x52E6) Err bitreich.org 70 i- (#xD2AC #x98ED) Err bitreich.org 70 i- (#xD2AD #x52E0) Err bitreich.org 70 i- (#xD2AE #x52F3) Err bitreich.org 70 i- (#xD2AF #x52F5) Err bitreich.org 70 i- (#xD2B0 #x52F8) Err bitreich.org 70 i- (#xD2B1 #x52F9) Err bitreich.org 70 i- (#xD2B2 #x5306) Err bitreich.org 70 i- (#xD2B3 #x5308) Err bitreich.org 70 i- (#xD2B4 #x7538) Err bitreich.org 70 i- (#xD2B5 #x530D) Err bitreich.org 70 i- (#xD2B6 #x5310) Err bitreich.org 70 i- (#xD2B7 #x530F) Err bitreich.org 70 i- (#xD2B8 #x5315) Err bitreich.org 70 i- (#xD2B9 #x531A) Err bitreich.org 70 i- (#xD2BA #x5323) Err bitreich.org 70 i- (#xD2BB #x532F) Err bitreich.org 70 i- (#xD2BC #x5331) Err bitreich.org 70 i- (#xD2BD #x5333) Err bitreich.org 70 i- (#xD2BE #x5338) Err bitreich.org 70 i- (#xD2BF #x5340) Err bitreich.org 70 i- (#xD2C0 #x5346) Err bitreich.org 70 i- (#xD2C1 #x5345) Err bitreich.org 70 i- (#xD2C2 #x4E17) Err bitreich.org 70 i- (#xD2C3 #x5349) Err bitreich.org 70 i- (#xD2C4 #x534D) Err bitreich.org 70 i- (#xD2C5 #x51D6) Err bitreich.org 70 i- (#xD2C6 #x535E) Err bitreich.org 70 i- (#xD2C7 #x5369) Err bitreich.org 70 i- (#xD2C8 #x536E) Err bitreich.org 70 i- (#xD2C9 #x5918) Err bitreich.org 70 i- (#xD2CA #x537B) Err bitreich.org 70 i- (#xD2CB #x5377) Err bitreich.org 70 i- (#xD2CC #x5382) Err bitreich.org 70 i- (#xD2CD #x5396) Err bitreich.org 70 i- (#xD2CE #x53A0) Err bitreich.org 70 i- (#xD2CF #x53A6) Err bitreich.org 70 i- (#xD2D0 #x53A5) Err bitreich.org 70 i- (#xD2D1 #x53AE) Err bitreich.org 70 i- (#xD2D2 #x53B0) Err bitreich.org 70 i- (#xD2D3 #x53B6) Err bitreich.org 70 i- (#xD2D4 #x53C3) Err bitreich.org 70 i- (#xD2D5 #x7C12) Err bitreich.org 70 i- (#xD2D6 #x96D9) Err bitreich.org 70 i- (#xD2D7 #x53DF) Err bitreich.org 70 i- (#xD2D8 #x66FC) Err bitreich.org 70 i- (#xD2D9 #x71EE) Err bitreich.org 70 i- (#xD2DA #x53EE) Err bitreich.org 70 i- (#xD2DB #x53E8) Err bitreich.org 70 i- (#xD2DC #x53ED) Err bitreich.org 70 i- (#xD2DD #x53FA) Err bitreich.org 70 i- (#xD2DE #x5401) Err bitreich.org 70 i- (#xD2DF #x543D) Err bitreich.org 70 i- (#xD2E0 #x5440) Err bitreich.org 70 i- (#xD2E1 #x542C) Err bitreich.org 70 i- (#xD2E2 #x542D) Err bitreich.org 70 i- (#xD2E3 #x543C) Err bitreich.org 70 i- (#xD2E4 #x542E) Err bitreich.org 70 i- (#xD2E5 #x5436) Err bitreich.org 70 i- (#xD2E6 #x5429) Err bitreich.org 70 i- (#xD2E7 #x541D) Err bitreich.org 70 i- (#xD2E8 #x544E) Err bitreich.org 70 i- (#xD2E9 #x548F) Err bitreich.org 70 i- (#xD2EA #x5475) Err bitreich.org 70 i- (#xD2EB #x548E) Err bitreich.org 70 i- (#xD2EC #x545F) Err bitreich.org 70 i- (#xD2ED #x5471) Err bitreich.org 70 i- (#xD2EE #x5477) Err bitreich.org 70 i- (#xD2EF #x5470) Err bitreich.org 70 i- (#xD2F0 #x5492) Err bitreich.org 70 i- (#xD2F1 #x547B) Err bitreich.org 70 i- (#xD2F2 #x5480) Err bitreich.org 70 i- (#xD2F3 #x5476) Err bitreich.org 70 i- (#xD2F4 #x5484) Err bitreich.org 70 i- (#xD2F5 #x5490) Err bitreich.org 70 i- (#xD2F6 #x5486) Err bitreich.org 70 i- (#xD2F7 #x54C7) Err bitreich.org 70 i- (#xD2F8 #x54A2) Err bitreich.org 70 i- (#xD2F9 #x54B8) Err bitreich.org 70 i- (#xD2FA #x54A5) Err bitreich.org 70 i- (#xD2FB #x54AC) Err bitreich.org 70 i- (#xD2FC #x54C4) Err bitreich.org 70 i- (#xD2FD #x54C8) Err bitreich.org 70 i- (#xD2FE #x54A8) Err bitreich.org 70 i- (#xD3A1 #x54AB) Err bitreich.org 70 i- (#xD3A2 #x54C2) Err bitreich.org 70 i- (#xD3A3 #x54A4) Err bitreich.org 70 i- (#xD3A4 #x54BE) Err bitreich.org 70 i- (#xD3A5 #x54BC) Err bitreich.org 70 i- (#xD3A6 #x54D8) Err bitreich.org 70 i- (#xD3A7 #x54E5) Err bitreich.org 70 i- (#xD3A8 #x54E6) Err bitreich.org 70 i- (#xD3A9 #x550F) Err bitreich.org 70 i- (#xD3AA #x5514) Err bitreich.org 70 i- (#xD3AB #x54FD) Err bitreich.org 70 i- (#xD3AC #x54EE) Err bitreich.org 70 i- (#xD3AD #x54ED) Err bitreich.org 70 i- (#xD3AE #x54FA) Err bitreich.org 70 i- (#xD3AF #x54E2) Err bitreich.org 70 i- (#xD3B0 #x5539) Err bitreich.org 70 i- (#xD3B1 #x5540) Err bitreich.org 70 i- (#xD3B2 #x5563) Err bitreich.org 70 i- (#xD3B3 #x554C) Err bitreich.org 70 i- (#xD3B4 #x552E) Err bitreich.org 70 i- (#xD3B5 #x555C) Err bitreich.org 70 i- (#xD3B6 #x5545) Err bitreich.org 70 i- (#xD3B7 #x5556) Err bitreich.org 70 i- (#xD3B8 #x5557) Err bitreich.org 70 i- (#xD3B9 #x5538) Err bitreich.org 70 i- (#xD3BA #x5533) Err bitreich.org 70 i- (#xD3BB #x555D) Err bitreich.org 70 i- (#xD3BC #x5599) Err bitreich.org 70 i- (#xD3BD #x5580) Err bitreich.org 70 i- (#xD3BE #x54AF) Err bitreich.org 70 i- (#xD3BF #x558A) Err bitreich.org 70 i- (#xD3C0 #x559F) Err bitreich.org 70 i- (#xD3C1 #x557B) Err bitreich.org 70 i- (#xD3C2 #x557E) Err bitreich.org 70 i- (#xD3C3 #x5598) Err bitreich.org 70 i- (#xD3C4 #x559E) Err bitreich.org 70 i- (#xD3C5 #x55AE) Err bitreich.org 70 i- (#xD3C6 #x557C) Err bitreich.org 70 i- (#xD3C7 #x5583) Err bitreich.org 70 i- (#xD3C8 #x55A9) Err bitreich.org 70 i- (#xD3C9 #x5587) Err bitreich.org 70 i- (#xD3CA #x55A8) Err bitreich.org 70 i- (#xD3CB #x55DA) Err bitreich.org 70 i- (#xD3CC #x55C5) Err bitreich.org 70 i- (#xD3CD #x55DF) Err bitreich.org 70 i- (#xD3CE #x55C4) Err bitreich.org 70 i- (#xD3CF #x55DC) Err bitreich.org 70 i- (#xD3D0 #x55E4) Err bitreich.org 70 i- (#xD3D1 #x55D4) Err bitreich.org 70 i- (#xD3D2 #x5614) Err bitreich.org 70 i- (#xD3D3 #x55F7) Err bitreich.org 70 i- (#xD3D4 #x5616) Err bitreich.org 70 i- (#xD3D5 #x55FE) Err bitreich.org 70 i- (#xD3D6 #x55FD) Err bitreich.org 70 i- (#xD3D7 #x561B) Err bitreich.org 70 i- (#xD3D8 #x55F9) Err bitreich.org 70 i- (#xD3D9 #x564E) Err bitreich.org 70 i- (#xD3DA #x5650) Err bitreich.org 70 i- (#xD3DB #x71DF) Err bitreich.org 70 i- (#xD3DC #x5634) Err bitreich.org 70 i- (#xD3DD #x5636) Err bitreich.org 70 i- (#xD3DE #x5632) Err bitreich.org 70 i- (#xD3DF #x5638) Err bitreich.org 70 i- (#xD3E0 #x566B) Err bitreich.org 70 i- (#xD3E1 #x5664) Err bitreich.org 70 i- (#xD3E2 #x562F) Err bitreich.org 70 i- (#xD3E3 #x566C) Err bitreich.org 70 i- (#xD3E4 #x566A) Err bitreich.org 70 i- (#xD3E5 #x5686) Err bitreich.org 70 i- (#xD3E6 #x5680) Err bitreich.org 70 i- (#xD3E7 #x568A) Err bitreich.org 70 i- (#xD3E8 #x56A0) Err bitreich.org 70 i- (#xD3E9 #x5694) Err bitreich.org 70 i- (#xD3EA #x568F) Err bitreich.org 70 i- (#xD3EB #x56A5) Err bitreich.org 70 i- (#xD3EC #x56AE) Err bitreich.org 70 i- (#xD3ED #x56B6) Err bitreich.org 70 i- (#xD3EE #x56B4) Err bitreich.org 70 i- (#xD3EF #x56C2) Err bitreich.org 70 i- (#xD3F0 #x56BC) Err bitreich.org 70 i- (#xD3F1 #x56C1) Err bitreich.org 70 i- (#xD3F2 #x56C3) Err bitreich.org 70 i- (#xD3F3 #x56C0) Err bitreich.org 70 i- (#xD3F4 #x56C8) Err bitreich.org 70 i- (#xD3F5 #x56CE) Err bitreich.org 70 i- (#xD3F6 #x56D1) Err bitreich.org 70 i- (#xD3F7 #x56D3) Err bitreich.org 70 i- (#xD3F8 #x56D7) Err bitreich.org 70 i- (#xD3F9 #x56EE) Err bitreich.org 70 i- (#xD3FA #x56F9) Err bitreich.org 70 i- (#xD3FB #x5700) Err bitreich.org 70 i- (#xD3FC #x56FF) Err bitreich.org 70 i- (#xD3FD #x5704) Err bitreich.org 70 i- (#xD3FE #x5709) Err bitreich.org 70 i- (#xD4A1 #x5708) Err bitreich.org 70 i- (#xD4A2 #x570B) Err bitreich.org 70 i- (#xD4A3 #x570D) Err bitreich.org 70 i- (#xD4A4 #x5713) Err bitreich.org 70 i- (#xD4A5 #x5718) Err bitreich.org 70 i- (#xD4A6 #x5716) Err bitreich.org 70 i- (#xD4A7 #x55C7) Err bitreich.org 70 i- (#xD4A8 #x571C) Err bitreich.org 70 i- (#xD4A9 #x5726) Err bitreich.org 70 i- (#xD4AA #x5737) Err bitreich.org 70 i- (#xD4AB #x5738) Err bitreich.org 70 i- (#xD4AC #x574E) Err bitreich.org 70 i- (#xD4AD #x573B) Err bitreich.org 70 i- (#xD4AE #x5740) Err bitreich.org 70 i- (#xD4AF #x574F) Err bitreich.org 70 i- (#xD4B0 #x5769) Err bitreich.org 70 i- (#xD4B1 #x57C0) Err bitreich.org 70 i- (#xD4B2 #x5788) Err bitreich.org 70 i- (#xD4B3 #x5761) Err bitreich.org 70 i- (#xD4B4 #x577F) Err bitreich.org 70 i- (#xD4B5 #x5789) Err bitreich.org 70 i- (#xD4B6 #x5793) Err bitreich.org 70 i- (#xD4B7 #x57A0) Err bitreich.org 70 i- (#xD4B8 #x57B3) Err bitreich.org 70 i- (#xD4B9 #x57A4) Err bitreich.org 70 i- (#xD4BA #x57AA) Err bitreich.org 70 i- (#xD4BB #x57B0) Err bitreich.org 70 i- (#xD4BC #x57C3) Err bitreich.org 70 i- (#xD4BD #x57C6) Err bitreich.org 70 i- (#xD4BE #x57D4) Err bitreich.org 70 i- (#xD4BF #x57D2) Err bitreich.org 70 i- (#xD4C0 #x57D3) Err bitreich.org 70 i- (#xD4C1 #x580A) Err bitreich.org 70 i- (#xD4C2 #x57D6) Err bitreich.org 70 i- (#xD4C3 #x57E3) Err bitreich.org 70 i- (#xD4C4 #x580B) Err bitreich.org 70 i- (#xD4C5 #x5819) Err bitreich.org 70 i- (#xD4C6 #x581D) Err bitreich.org 70 i- (#xD4C7 #x5872) Err bitreich.org 70 i- (#xD4C8 #x5821) Err bitreich.org 70 i- (#xD4C9 #x5862) Err bitreich.org 70 i- (#xD4CA #x584B) Err bitreich.org 70 i- (#xD4CB #x5870) Err bitreich.org 70 i- (#xD4CC #x6BC0) Err bitreich.org 70 i- (#xD4CD #x5852) Err bitreich.org 70 i- (#xD4CE #x583D) Err bitreich.org 70 i- (#xD4CF #x5879) Err bitreich.org 70 i- (#xD4D0 #x5885) Err bitreich.org 70 i- (#xD4D1 #x58B9) Err bitreich.org 70 i- (#xD4D2 #x589F) Err bitreich.org 70 i- (#xD4D3 #x58AB) Err bitreich.org 70 i- (#xD4D4 #x58BA) Err bitreich.org 70 i- (#xD4D5 #x58DE) Err bitreich.org 70 i- (#xD4D6 #x58BB) Err bitreich.org 70 i- (#xD4D7 #x58B8) Err bitreich.org 70 i- (#xD4D8 #x58AE) Err bitreich.org 70 i- (#xD4D9 #x58C5) Err bitreich.org 70 i- (#xD4DA #x58D3) Err bitreich.org 70 i- (#xD4DB #x58D1) Err bitreich.org 70 i- (#xD4DC #x58D7) Err bitreich.org 70 i- (#xD4DD #x58D9) Err bitreich.org 70 i- (#xD4DE #x58D8) Err bitreich.org 70 i- (#xD4DF #x58E5) Err bitreich.org 70 i- (#xD4E0 #x58DC) Err bitreich.org 70 i- (#xD4E1 #x58E4) Err bitreich.org 70 i- (#xD4E2 #x58DF) Err bitreich.org 70 i- (#xD4E3 #x58EF) Err bitreich.org 70 i- (#xD4E4 #x58FA) Err bitreich.org 70 i- (#xD4E5 #x58F9) Err bitreich.org 70 i- (#xD4E6 #x58FB) Err bitreich.org 70 i- (#xD4E7 #x58FC) Err bitreich.org 70 i- (#xD4E8 #x58FD) Err bitreich.org 70 i- (#xD4E9 #x5902) Err bitreich.org 70 i- (#xD4EA #x590A) Err bitreich.org 70 i- (#xD4EB #x5910) Err bitreich.org 70 i- (#xD4EC #x591B) Err bitreich.org 70 i- (#xD4ED #x68A6) Err bitreich.org 70 i- (#xD4EE #x5925) Err bitreich.org 70 i- (#xD4EF #x592C) Err bitreich.org 70 i- (#xD4F0 #x592D) Err bitreich.org 70 i- (#xD4F1 #x5932) Err bitreich.org 70 i- (#xD4F2 #x5938) Err bitreich.org 70 i- (#xD4F3 #x593E) Err bitreich.org 70 i- (#xD4F4 #x7AD2) Err bitreich.org 70 i- (#xD4F5 #x5955) Err bitreich.org 70 i- (#xD4F6 #x5950) Err bitreich.org 70 i- (#xD4F7 #x594E) Err bitreich.org 70 i- (#xD4F8 #x595A) Err bitreich.org 70 i- (#xD4F9 #x5958) Err bitreich.org 70 i- (#xD4FA #x5962) Err bitreich.org 70 i- (#xD4FB #x5960) Err bitreich.org 70 i- (#xD4FC #x5967) Err bitreich.org 70 i- (#xD4FD #x596C) Err bitreich.org 70 i- (#xD4FE #x5969) Err bitreich.org 70 i- (#xD5A1 #x5978) Err bitreich.org 70 i- (#xD5A2 #x5981) Err bitreich.org 70 i- (#xD5A3 #x599D) Err bitreich.org 70 i- (#xD5A4 #x4F5E) Err bitreich.org 70 i- (#xD5A5 #x4FAB) Err bitreich.org 70 i- (#xD5A6 #x59A3) Err bitreich.org 70 i- (#xD5A7 #x59B2) Err bitreich.org 70 i- (#xD5A8 #x59C6) Err bitreich.org 70 i- (#xD5A9 #x59E8) Err bitreich.org 70 i- (#xD5AA #x59DC) Err bitreich.org 70 i- (#xD5AB #x598D) Err bitreich.org 70 i- (#xD5AC #x59D9) Err bitreich.org 70 i- (#xD5AD #x59DA) Err bitreich.org 70 i- (#xD5AE #x5A25) Err bitreich.org 70 i- (#xD5AF #x5A1F) Err bitreich.org 70 i- (#xD5B0 #x5A11) Err bitreich.org 70 i- (#xD5B1 #x5A1C) Err bitreich.org 70 i- (#xD5B2 #x5A09) Err bitreich.org 70 i- (#xD5B3 #x5A1A) Err bitreich.org 70 i- (#xD5B4 #x5A40) Err bitreich.org 70 i- (#xD5B5 #x5A6C) Err bitreich.org 70 i- (#xD5B6 #x5A49) Err bitreich.org 70 i- (#xD5B7 #x5A35) Err bitreich.org 70 i- (#xD5B8 #x5A36) Err bitreich.org 70 i- (#xD5B9 #x5A62) Err bitreich.org 70 i- (#xD5BA #x5A6A) Err bitreich.org 70 i- (#xD5BB #x5A9A) Err bitreich.org 70 i- (#xD5BC #x5ABC) Err bitreich.org 70 i- (#xD5BD #x5ABE) Err bitreich.org 70 i- (#xD5BE #x5ACB) Err bitreich.org 70 i- (#xD5BF #x5AC2) Err bitreich.org 70 i- (#xD5C0 #x5ABD) Err bitreich.org 70 i- (#xD5C1 #x5AE3) Err bitreich.org 70 i- (#xD5C2 #x5AD7) Err bitreich.org 70 i- (#xD5C3 #x5AE6) Err bitreich.org 70 i- (#xD5C4 #x5AE9) Err bitreich.org 70 i- (#xD5C5 #x5AD6) Err bitreich.org 70 i- (#xD5C6 #x5AFA) Err bitreich.org 70 i- (#xD5C7 #x5AFB) Err bitreich.org 70 i- (#xD5C8 #x5B0C) Err bitreich.org 70 i- (#xD5C9 #x5B0B) Err bitreich.org 70 i- (#xD5CA #x5B16) Err bitreich.org 70 i- (#xD5CB #x5B32) Err bitreich.org 70 i- (#xD5CC #x5AD0) Err bitreich.org 70 i- (#xD5CD #x5B2A) Err bitreich.org 70 i- (#xD5CE #x5B36) Err bitreich.org 70 i- (#xD5CF #x5B3E) Err bitreich.org 70 i- (#xD5D0 #x5B43) Err bitreich.org 70 i- (#xD5D1 #x5B45) Err bitreich.org 70 i- (#xD5D2 #x5B40) Err bitreich.org 70 i- (#xD5D3 #x5B51) Err bitreich.org 70 i- (#xD5D4 #x5B55) Err bitreich.org 70 i- (#xD5D5 #x5B5A) Err bitreich.org 70 i- (#xD5D6 #x5B5B) Err bitreich.org 70 i- (#xD5D7 #x5B65) Err bitreich.org 70 i- (#xD5D8 #x5B69) Err bitreich.org 70 i- (#xD5D9 #x5B70) Err bitreich.org 70 i- (#xD5DA #x5B73) Err bitreich.org 70 i- (#xD5DB #x5B75) Err bitreich.org 70 i- (#xD5DC #x5B78) Err bitreich.org 70 i- (#xD5DD #x6588) Err bitreich.org 70 i- (#xD5DE #x5B7A) Err bitreich.org 70 i- (#xD5DF #x5B80) Err bitreich.org 70 i- (#xD5E0 #x5B83) Err bitreich.org 70 i- (#xD5E1 #x5BA6) Err bitreich.org 70 i- (#xD5E2 #x5BB8) Err bitreich.org 70 i- (#xD5E3 #x5BC3) Err bitreich.org 70 i- (#xD5E4 #x5BC7) Err bitreich.org 70 i- (#xD5E5 #x5BC9) Err bitreich.org 70 i- (#xD5E6 #x5BD4) Err bitreich.org 70 i- (#xD5E7 #x5BD0) Err bitreich.org 70 i- (#xD5E8 #x5BE4) Err bitreich.org 70 i- (#xD5E9 #x5BE6) Err bitreich.org 70 i- (#xD5EA #x5BE2) Err bitreich.org 70 i- (#xD5EB #x5BDE) Err bitreich.org 70 i- (#xD5EC #x5BE5) Err bitreich.org 70 i- (#xD5ED #x5BEB) Err bitreich.org 70 i- (#xD5EE #x5BF0) Err bitreich.org 70 i- (#xD5EF #x5BF6) Err bitreich.org 70 i- (#xD5F0 #x5BF3) Err bitreich.org 70 i- (#xD5F1 #x5C05) Err bitreich.org 70 i- (#xD5F2 #x5C07) Err bitreich.org 70 i- (#xD5F3 #x5C08) Err bitreich.org 70 i- (#xD5F4 #x5C0D) Err bitreich.org 70 i- (#xD5F5 #x5C13) Err bitreich.org 70 i- (#xD5F6 #x5C20) Err bitreich.org 70 i- (#xD5F7 #x5C22) Err bitreich.org 70 i- (#xD5F8 #x5C28) Err bitreich.org 70 i- (#xD5F9 #x5C38) Err bitreich.org 70 i- (#xD5FA #x5C39) Err bitreich.org 70 i- (#xD5FB #x5C41) Err bitreich.org 70 i- (#xD5FC #x5C46) Err bitreich.org 70 i- (#xD5FD #x5C4E) Err bitreich.org 70 i- (#xD5FE #x5C53) Err bitreich.org 70 i- (#xD6A1 #x5C50) Err bitreich.org 70 i- (#xD6A2 #x5C4F) Err bitreich.org 70 i- (#xD6A3 #x5B71) Err bitreich.org 70 i- (#xD6A4 #x5C6C) Err bitreich.org 70 i- (#xD6A5 #x5C6E) Err bitreich.org 70 i- (#xD6A6 #x4E62) Err bitreich.org 70 i- (#xD6A7 #x5C76) Err bitreich.org 70 i- (#xD6A8 #x5C79) Err bitreich.org 70 i- (#xD6A9 #x5C8C) Err bitreich.org 70 i- (#xD6AA #x5C91) Err bitreich.org 70 i- (#xD6AB #x5C94) Err bitreich.org 70 i- (#xD6AC #x599B) Err bitreich.org 70 i- (#xD6AD #x5CAB) Err bitreich.org 70 i- (#xD6AE #x5CBB) Err bitreich.org 70 i- (#xD6AF #x5CB6) Err bitreich.org 70 i- (#xD6B0 #x5CBC) Err bitreich.org 70 i- (#xD6B1 #x5CB7) Err bitreich.org 70 i- (#xD6B2 #x5CC5) Err bitreich.org 70 i- (#xD6B3 #x5CBE) Err bitreich.org 70 i- (#xD6B4 #x5CC7) Err bitreich.org 70 i- (#xD6B5 #x5CD9) Err bitreich.org 70 i- (#xD6B6 #x5CE9) Err bitreich.org 70 i- (#xD6B7 #x5CFD) Err bitreich.org 70 i- (#xD6B8 #x5CFA) Err bitreich.org 70 i- (#xD6B9 #x5CED) Err bitreich.org 70 i- (#xD6BA #x5D8C) Err bitreich.org 70 i- (#xD6BB #x5CEA) Err bitreich.org 70 i- (#xD6BC #x5D0B) Err bitreich.org 70 i- (#xD6BD #x5D15) Err bitreich.org 70 i- (#xD6BE #x5D17) Err bitreich.org 70 i- (#xD6BF #x5D5C) Err bitreich.org 70 i- (#xD6C0 #x5D1F) Err bitreich.org 70 i- (#xD6C1 #x5D1B) Err bitreich.org 70 i- (#xD6C2 #x5D11) Err bitreich.org 70 i- (#xD6C3 #x5D14) Err bitreich.org 70 i- (#xD6C4 #x5D22) Err bitreich.org 70 i- (#xD6C5 #x5D1A) Err bitreich.org 70 i- (#xD6C6 #x5D19) Err bitreich.org 70 i- (#xD6C7 #x5D18) Err bitreich.org 70 i- (#xD6C8 #x5D4C) Err bitreich.org 70 i- (#xD6C9 #x5D52) Err bitreich.org 70 i- (#xD6CA #x5D4E) Err bitreich.org 70 i- (#xD6CB #x5D4B) Err bitreich.org 70 i- (#xD6CC #x5D6C) Err bitreich.org 70 i- (#xD6CD #x5D73) Err bitreich.org 70 i- (#xD6CE #x5D76) Err bitreich.org 70 i- (#xD6CF #x5D87) Err bitreich.org 70 i- (#xD6D0 #x5D84) Err bitreich.org 70 i- (#xD6D1 #x5D82) Err bitreich.org 70 i- (#xD6D2 #x5DA2) Err bitreich.org 70 i- (#xD6D3 #x5D9D) Err bitreich.org 70 i- (#xD6D4 #x5DAC) Err bitreich.org 70 i- (#xD6D5 #x5DAE) Err bitreich.org 70 i- (#xD6D6 #x5DBD) Err bitreich.org 70 i- (#xD6D7 #x5D90) Err bitreich.org 70 i- (#xD6D8 #x5DB7) Err bitreich.org 70 i- (#xD6D9 #x5DBC) Err bitreich.org 70 i- (#xD6DA #x5DC9) Err bitreich.org 70 i- (#xD6DB #x5DCD) Err bitreich.org 70 i- (#xD6DC #x5DD3) Err bitreich.org 70 i- (#xD6DD #x5DD2) Err bitreich.org 70 i- (#xD6DE #x5DD6) Err bitreich.org 70 i- (#xD6DF #x5DDB) Err bitreich.org 70 i- (#xD6E0 #x5DEB) Err bitreich.org 70 i- (#xD6E1 #x5DF2) Err bitreich.org 70 i- (#xD6E2 #x5DF5) Err bitreich.org 70 i- (#xD6E3 #x5E0B) Err bitreich.org 70 i- (#xD6E4 #x5E1A) Err bitreich.org 70 i- (#xD6E5 #x5E19) Err bitreich.org 70 i- (#xD6E6 #x5E11) Err bitreich.org 70 i- (#xD6E7 #x5E1B) Err bitreich.org 70 i- (#xD6E8 #x5E36) Err bitreich.org 70 i- (#xD6E9 #x5E37) Err bitreich.org 70 i- (#xD6EA #x5E44) Err bitreich.org 70 i- (#xD6EB #x5E43) Err bitreich.org 70 i- (#xD6EC #x5E40) Err bitreich.org 70 i- (#xD6ED #x5E4E) Err bitreich.org 70 i- (#xD6EE #x5E57) Err bitreich.org 70 i- (#xD6EF #x5E54) Err bitreich.org 70 i- (#xD6F0 #x5E5F) Err bitreich.org 70 i- (#xD6F1 #x5E62) Err bitreich.org 70 i- (#xD6F2 #x5E64) Err bitreich.org 70 i- (#xD6F3 #x5E47) Err bitreich.org 70 i- (#xD6F4 #x5E75) Err bitreich.org 70 i- (#xD6F5 #x5E76) Err bitreich.org 70 i- (#xD6F6 #x5E7A) Err bitreich.org 70 i- (#xD6F7 #x9EBC) Err bitreich.org 70 i- (#xD6F8 #x5E7F) Err bitreich.org 70 i- (#xD6F9 #x5EA0) Err bitreich.org 70 i- (#xD6FA #x5EC1) Err bitreich.org 70 i- (#xD6FB #x5EC2) Err bitreich.org 70 i- (#xD6FC #x5EC8) Err bitreich.org 70 i- (#xD6FD #x5ED0) Err bitreich.org 70 i- (#xD6FE #x5ECF) Err bitreich.org 70 i- (#xD7A1 #x5ED6) Err bitreich.org 70 i- (#xD7A2 #x5EE3) Err bitreich.org 70 i- (#xD7A3 #x5EDD) Err bitreich.org 70 i- (#xD7A4 #x5EDA) Err bitreich.org 70 i- (#xD7A5 #x5EDB) Err bitreich.org 70 i- (#xD7A6 #x5EE2) Err bitreich.org 70 i- (#xD7A7 #x5EE1) Err bitreich.org 70 i- (#xD7A8 #x5EE8) Err bitreich.org 70 i- (#xD7A9 #x5EE9) Err bitreich.org 70 i- (#xD7AA #x5EEC) Err bitreich.org 70 i- (#xD7AB #x5EF1) Err bitreich.org 70 i- (#xD7AC #x5EF3) Err bitreich.org 70 i- (#xD7AD #x5EF0) Err bitreich.org 70 i- (#xD7AE #x5EF4) Err bitreich.org 70 i- (#xD7AF #x5EF8) Err bitreich.org 70 i- (#xD7B0 #x5EFE) Err bitreich.org 70 i- (#xD7B1 #x5F03) Err bitreich.org 70 i- (#xD7B2 #x5F09) Err bitreich.org 70 i- (#xD7B3 #x5F5D) Err bitreich.org 70 i- (#xD7B4 #x5F5C) Err bitreich.org 70 i- (#xD7B5 #x5F0B) Err bitreich.org 70 i- (#xD7B6 #x5F11) Err bitreich.org 70 i- (#xD7B7 #x5F16) Err bitreich.org 70 i- (#xD7B8 #x5F29) Err bitreich.org 70 i- (#xD7B9 #x5F2D) Err bitreich.org 70 i- (#xD7BA #x5F38) Err bitreich.org 70 i- (#xD7BB #x5F41) Err bitreich.org 70 i- (#xD7BC #x5F48) Err bitreich.org 70 i- (#xD7BD #x5F4C) Err bitreich.org 70 i- (#xD7BE #x5F4E) Err bitreich.org 70 i- (#xD7BF #x5F2F) Err bitreich.org 70 i- (#xD7C0 #x5F51) Err bitreich.org 70 i- (#xD7C1 #x5F56) Err bitreich.org 70 i- (#xD7C2 #x5F57) Err bitreich.org 70 i- (#xD7C3 #x5F59) Err bitreich.org 70 i- (#xD7C4 #x5F61) Err bitreich.org 70 i- (#xD7C5 #x5F6D) Err bitreich.org 70 i- (#xD7C6 #x5F73) Err bitreich.org 70 i- (#xD7C7 #x5F77) Err bitreich.org 70 i- (#xD7C8 #x5F83) Err bitreich.org 70 i- (#xD7C9 #x5F82) Err bitreich.org 70 i- (#xD7CA #x5F7F) Err bitreich.org 70 i- (#xD7CB #x5F8A) Err bitreich.org 70 i- (#xD7CC #x5F88) Err bitreich.org 70 i- (#xD7CD #x5F91) Err bitreich.org 70 i- (#xD7CE #x5F87) Err bitreich.org 70 i- (#xD7CF #x5F9E) Err bitreich.org 70 i- (#xD7D0 #x5F99) Err bitreich.org 70 i- (#xD7D1 #x5F98) Err bitreich.org 70 i- (#xD7D2 #x5FA0) Err bitreich.org 70 i- (#xD7D3 #x5FA8) Err bitreich.org 70 i- (#xD7D4 #x5FAD) Err bitreich.org 70 i- (#xD7D5 #x5FBC) Err bitreich.org 70 i- (#xD7D6 #x5FD6) Err bitreich.org 70 i- (#xD7D7 #x5FFB) Err bitreich.org 70 i- (#xD7D8 #x5FE4) Err bitreich.org 70 i- (#xD7D9 #x5FF8) Err bitreich.org 70 i- (#xD7DA #x5FF1) Err bitreich.org 70 i- (#xD7DB #x5FDD) Err bitreich.org 70 i- (#xD7DC #x60B3) Err bitreich.org 70 i- (#xD7DD #x5FFF) Err bitreich.org 70 i- (#xD7DE #x6021) Err bitreich.org 70 i- (#xD7DF #x6060) Err bitreich.org 70 i- (#xD7E0 #x6019) Err bitreich.org 70 i- (#xD7E1 #x6010) Err bitreich.org 70 i- (#xD7E2 #x6029) Err bitreich.org 70 i- (#xD7E3 #x600E) Err bitreich.org 70 i- (#xD7E4 #x6031) Err bitreich.org 70 i- (#xD7E5 #x601B) Err bitreich.org 70 i- (#xD7E6 #x6015) Err bitreich.org 70 i- (#xD7E7 #x602B) Err bitreich.org 70 i- (#xD7E8 #x6026) Err bitreich.org 70 i- (#xD7E9 #x600F) Err bitreich.org 70 i- (#xD7EA #x603A) Err bitreich.org 70 i- (#xD7EB #x605A) Err bitreich.org 70 i- (#xD7EC #x6041) Err bitreich.org 70 i- (#xD7ED #x606A) Err bitreich.org 70 i- (#xD7EE #x6077) Err bitreich.org 70 i- (#xD7EF #x605F) Err bitreich.org 70 i- (#xD7F0 #x604A) Err bitreich.org 70 i- (#xD7F1 #x6046) Err bitreich.org 70 i- (#xD7F2 #x604D) Err bitreich.org 70 i- (#xD7F3 #x6063) Err bitreich.org 70 i- (#xD7F4 #x6043) Err bitreich.org 70 i- (#xD7F5 #x6064) Err bitreich.org 70 i- (#xD7F6 #x6042) Err bitreich.org 70 i- (#xD7F7 #x606C) Err bitreich.org 70 i- (#xD7F8 #x606B) Err bitreich.org 70 i- (#xD7F9 #x6059) Err bitreich.org 70 i- (#xD7FA #x6081) Err bitreich.org 70 i- (#xD7FB #x608D) Err bitreich.org 70 i- (#xD7FC #x60E7) Err bitreich.org 70 i- (#xD7FD #x6083) Err bitreich.org 70 i- (#xD7FE #x609A) Err bitreich.org 70 i- (#xD8A1 #x6084) Err bitreich.org 70 i- (#xD8A2 #x609B) Err bitreich.org 70 i- (#xD8A3 #x6096) Err bitreich.org 70 i- (#xD8A4 #x6097) Err bitreich.org 70 i- (#xD8A5 #x6092) Err bitreich.org 70 i- (#xD8A6 #x60A7) Err bitreich.org 70 i- (#xD8A7 #x608B) Err bitreich.org 70 i- (#xD8A8 #x60E1) Err bitreich.org 70 i- (#xD8A9 #x60B8) Err bitreich.org 70 i- (#xD8AA #x60E0) Err bitreich.org 70 i- (#xD8AB #x60D3) Err bitreich.org 70 i- (#xD8AC #x60B4) Err bitreich.org 70 i- (#xD8AD #x5FF0) Err bitreich.org 70 i- (#xD8AE #x60BD) Err bitreich.org 70 i- (#xD8AF #x60C6) Err bitreich.org 70 i- (#xD8B0 #x60B5) Err bitreich.org 70 i- (#xD8B1 #x60D8) Err bitreich.org 70 i- (#xD8B2 #x614D) Err bitreich.org 70 i- (#xD8B3 #x6115) Err bitreich.org 70 i- (#xD8B4 #x6106) Err bitreich.org 70 i- (#xD8B5 #x60F6) Err bitreich.org 70 i- (#xD8B6 #x60F7) Err bitreich.org 70 i- (#xD8B7 #x6100) Err bitreich.org 70 i- (#xD8B8 #x60F4) Err bitreich.org 70 i- (#xD8B9 #x60FA) Err bitreich.org 70 i- (#xD8BA #x6103) Err bitreich.org 70 i- (#xD8BB #x6121) Err bitreich.org 70 i- (#xD8BC #x60FB) Err bitreich.org 70 i- (#xD8BD #x60F1) Err bitreich.org 70 i- (#xD8BE #x610D) Err bitreich.org 70 i- (#xD8BF #x610E) Err bitreich.org 70 i- (#xD8C0 #x6147) Err bitreich.org 70 i- (#xD8C1 #x613E) Err bitreich.org 70 i- (#xD8C2 #x6128) Err bitreich.org 70 i- (#xD8C3 #x6127) Err bitreich.org 70 i- (#xD8C4 #x614A) Err bitreich.org 70 i- (#xD8C5 #x613F) Err bitreich.org 70 i- (#xD8C6 #x613C) Err bitreich.org 70 i- (#xD8C7 #x612C) Err bitreich.org 70 i- (#xD8C8 #x6134) Err bitreich.org 70 i- (#xD8C9 #x613D) Err bitreich.org 70 i- (#xD8CA #x6142) Err bitreich.org 70 i- (#xD8CB #x6144) Err bitreich.org 70 i- (#xD8CC #x6173) Err bitreich.org 70 i- (#xD8CD #x6177) Err bitreich.org 70 i- (#xD8CE #x6158) Err bitreich.org 70 i- (#xD8CF #x6159) Err bitreich.org 70 i- (#xD8D0 #x615A) Err bitreich.org 70 i- (#xD8D1 #x616B) Err bitreich.org 70 i- (#xD8D2 #x6174) Err bitreich.org 70 i- (#xD8D3 #x616F) Err bitreich.org 70 i- (#xD8D4 #x6165) Err bitreich.org 70 i- (#xD8D5 #x6171) Err bitreich.org 70 i- (#xD8D6 #x615F) Err bitreich.org 70 i- (#xD8D7 #x615D) Err bitreich.org 70 i- (#xD8D8 #x6153) Err bitreich.org 70 i- (#xD8D9 #x6175) Err bitreich.org 70 i- (#xD8DA #x6199) Err bitreich.org 70 i- (#xD8DB #x6196) Err bitreich.org 70 i- (#xD8DC #x6187) Err bitreich.org 70 i- (#xD8DD #x61AC) Err bitreich.org 70 i- (#xD8DE #x6194) Err bitreich.org 70 i- (#xD8DF #x619A) Err bitreich.org 70 i- (#xD8E0 #x618A) Err bitreich.org 70 i- (#xD8E1 #x6191) Err bitreich.org 70 i- (#xD8E2 #x61AB) Err bitreich.org 70 i- (#xD8E3 #x61AE) Err bitreich.org 70 i- (#xD8E4 #x61CC) Err bitreich.org 70 i- (#xD8E5 #x61CA) Err bitreich.org 70 i- (#xD8E6 #x61C9) Err bitreich.org 70 i- (#xD8E7 #x61F7) Err bitreich.org 70 i- (#xD8E8 #x61C8) Err bitreich.org 70 i- (#xD8E9 #x61C3) Err bitreich.org 70 i- (#xD8EA #x61C6) Err bitreich.org 70 i- (#xD8EB #x61BA) Err bitreich.org 70 i- (#xD8EC #x61CB) Err bitreich.org 70 i- (#xD8ED #x7F79) Err bitreich.org 70 i- (#xD8EE #x61CD) Err bitreich.org 70 i- (#xD8EF #x61E6) Err bitreich.org 70 i- (#xD8F0 #x61E3) Err bitreich.org 70 i- (#xD8F1 #x61F6) Err bitreich.org 70 i- (#xD8F2 #x61FA) Err bitreich.org 70 i- (#xD8F3 #x61F4) Err bitreich.org 70 i- (#xD8F4 #x61FF) Err bitreich.org 70 i- (#xD8F5 #x61FD) Err bitreich.org 70 i- (#xD8F6 #x61FC) Err bitreich.org 70 i- (#xD8F7 #x61FE) Err bitreich.org 70 i- (#xD8F8 #x6200) Err bitreich.org 70 i- (#xD8F9 #x6208) Err bitreich.org 70 i- (#xD8FA #x6209) Err bitreich.org 70 i- (#xD8FB #x620D) Err bitreich.org 70 i- (#xD8FC #x620C) Err bitreich.org 70 i- (#xD8FD #x6214) Err bitreich.org 70 i- (#xD8FE #x621B) Err bitreich.org 70 i- (#xD9A1 #x621E) Err bitreich.org 70 i- (#xD9A2 #x6221) Err bitreich.org 70 i- (#xD9A3 #x622A) Err bitreich.org 70 i- (#xD9A4 #x622E) Err bitreich.org 70 i- (#xD9A5 #x6230) Err bitreich.org 70 i- (#xD9A6 #x6232) Err bitreich.org 70 i- (#xD9A7 #x6233) Err bitreich.org 70 i- (#xD9A8 #x6241) Err bitreich.org 70 i- (#xD9A9 #x624E) Err bitreich.org 70 i- (#xD9AA #x625E) Err bitreich.org 70 i- (#xD9AB #x6263) Err bitreich.org 70 i- (#xD9AC #x625B) Err bitreich.org 70 i- (#xD9AD #x6260) Err bitreich.org 70 i- (#xD9AE #x6268) Err bitreich.org 70 i- (#xD9AF #x627C) Err bitreich.org 70 i- (#xD9B0 #x6282) Err bitreich.org 70 i- (#xD9B1 #x6289) Err bitreich.org 70 i- (#xD9B2 #x627E) Err bitreich.org 70 i- (#xD9B3 #x6292) Err bitreich.org 70 i- (#xD9B4 #x6293) Err bitreich.org 70 i- (#xD9B5 #x6296) Err bitreich.org 70 i- (#xD9B6 #x62D4) Err bitreich.org 70 i- (#xD9B7 #x6283) Err bitreich.org 70 i- (#xD9B8 #x6294) Err bitreich.org 70 i- (#xD9B9 #x62D7) Err bitreich.org 70 i- (#xD9BA #x62D1) Err bitreich.org 70 i- (#xD9BB #x62BB) Err bitreich.org 70 i- (#xD9BC #x62CF) Err bitreich.org 70 i- (#xD9BD #x62FF) Err bitreich.org 70 i- (#xD9BE #x62C6) Err bitreich.org 70 i- (#xD9BF #x64D4) Err bitreich.org 70 i- (#xD9C0 #x62C8) Err bitreich.org 70 i- (#xD9C1 #x62DC) Err bitreich.org 70 i- (#xD9C2 #x62CC) Err bitreich.org 70 i- (#xD9C3 #x62CA) Err bitreich.org 70 i- (#xD9C4 #x62C2) Err bitreich.org 70 i- (#xD9C5 #x62C7) Err bitreich.org 70 i- (#xD9C6 #x629B) Err bitreich.org 70 i- (#xD9C7 #x62C9) Err bitreich.org 70 i- (#xD9C8 #x630C) Err bitreich.org 70 i- (#xD9C9 #x62EE) Err bitreich.org 70 i- (#xD9CA #x62F1) Err bitreich.org 70 i- (#xD9CB #x6327) Err bitreich.org 70 i- (#xD9CC #x6302) Err bitreich.org 70 i- (#xD9CD #x6308) Err bitreich.org 70 i- (#xD9CE #x62EF) Err bitreich.org 70 i- (#xD9CF #x62F5) Err bitreich.org 70 i- (#xD9D0 #x6350) Err bitreich.org 70 i- (#xD9D1 #x633E) Err bitreich.org 70 i- (#xD9D2 #x634D) Err bitreich.org 70 i- (#xD9D3 #x641C) Err bitreich.org 70 i- (#xD9D4 #x634F) Err bitreich.org 70 i- (#xD9D5 #x6396) Err bitreich.org 70 i- (#xD9D6 #x638E) Err bitreich.org 70 i- (#xD9D7 #x6380) Err bitreich.org 70 i- (#xD9D8 #x63AB) Err bitreich.org 70 i- (#xD9D9 #x6376) Err bitreich.org 70 i- (#xD9DA #x63A3) Err bitreich.org 70 i- (#xD9DB #x638F) Err bitreich.org 70 i- (#xD9DC #x6389) Err bitreich.org 70 i- (#xD9DD #x639F) Err bitreich.org 70 i- (#xD9DE #x63B5) Err bitreich.org 70 i- (#xD9DF #x636B) Err bitreich.org 70 i- (#xD9E0 #x6369) Err bitreich.org 70 i- (#xD9E1 #x63BE) Err bitreich.org 70 i- (#xD9E2 #x63E9) Err bitreich.org 70 i- (#xD9E3 #x63C0) Err bitreich.org 70 i- (#xD9E4 #x63C6) Err bitreich.org 70 i- (#xD9E5 #x63E3) Err bitreich.org 70 i- (#xD9E6 #x63C9) Err bitreich.org 70 i- (#xD9E7 #x63D2) Err bitreich.org 70 i- (#xD9E8 #x63F6) Err bitreich.org 70 i- (#xD9E9 #x63C4) Err bitreich.org 70 i- (#xD9EA #x6416) Err bitreich.org 70 i- (#xD9EB #x6434) Err bitreich.org 70 i- (#xD9EC #x6406) Err bitreich.org 70 i- (#xD9ED #x6413) Err bitreich.org 70 i- (#xD9EE #x6426) Err bitreich.org 70 i- (#xD9EF #x6436) Err bitreich.org 70 i- (#xD9F0 #x651D) Err bitreich.org 70 i- (#xD9F1 #x6417) Err bitreich.org 70 i- (#xD9F2 #x6428) Err bitreich.org 70 i- (#xD9F3 #x640F) Err bitreich.org 70 i- (#xD9F4 #x6467) Err bitreich.org 70 i- (#xD9F5 #x646F) Err bitreich.org 70 i- (#xD9F6 #x6476) Err bitreich.org 70 i- (#xD9F7 #x644E) Err bitreich.org 70 i- (#xD9F8 #x652A) Err bitreich.org 70 i- (#xD9F9 #x6495) Err bitreich.org 70 i- (#xD9FA #x6493) Err bitreich.org 70 i- (#xD9FB #x64A5) Err bitreich.org 70 i- (#xD9FC #x64A9) Err bitreich.org 70 i- (#xD9FD #x6488) Err bitreich.org 70 i- (#xD9FE #x64BC) Err bitreich.org 70 i- (#xDAA1 #x64DA) Err bitreich.org 70 i- (#xDAA2 #x64D2) Err bitreich.org 70 i- (#xDAA3 #x64C5) Err bitreich.org 70 i- (#xDAA4 #x64C7) Err bitreich.org 70 i- (#xDAA5 #x64BB) Err bitreich.org 70 i- (#xDAA6 #x64D8) Err bitreich.org 70 i- (#xDAA7 #x64C2) Err bitreich.org 70 i- (#xDAA8 #x64F1) Err bitreich.org 70 i- (#xDAA9 #x64E7) Err bitreich.org 70 i- (#xDAAA #x8209) Err bitreich.org 70 i- (#xDAAB #x64E0) Err bitreich.org 70 i- (#xDAAC #x64E1) Err bitreich.org 70 i- (#xDAAD #x62AC) Err bitreich.org 70 i- (#xDAAE #x64E3) Err bitreich.org 70 i- (#xDAAF #x64EF) Err bitreich.org 70 i- (#xDAB0 #x652C) Err bitreich.org 70 i- (#xDAB1 #x64F6) Err bitreich.org 70 i- (#xDAB2 #x64F4) Err bitreich.org 70 i- (#xDAB3 #x64F2) Err bitreich.org 70 i- (#xDAB4 #x64FA) Err bitreich.org 70 i- (#xDAB5 #x6500) Err bitreich.org 70 i- (#xDAB6 #x64FD) Err bitreich.org 70 i- (#xDAB7 #x6518) Err bitreich.org 70 i- (#xDAB8 #x651C) Err bitreich.org 70 i- (#xDAB9 #x6505) Err bitreich.org 70 i- (#xDABA #x6524) Err bitreich.org 70 i- (#xDABB #x6523) Err bitreich.org 70 i- (#xDABC #x652B) Err bitreich.org 70 i- (#xDABD #x6534) Err bitreich.org 70 i- (#xDABE #x6535) Err bitreich.org 70 i- (#xDABF #x6537) Err bitreich.org 70 i- (#xDAC0 #x6536) Err bitreich.org 70 i- (#xDAC1 #x6538) Err bitreich.org 70 i- (#xDAC2 #x754B) Err bitreich.org 70 i- (#xDAC3 #x6548) Err bitreich.org 70 i- (#xDAC4 #x6556) Err bitreich.org 70 i- (#xDAC5 #x6555) Err bitreich.org 70 i- (#xDAC6 #x654D) Err bitreich.org 70 i- (#xDAC7 #x6558) Err bitreich.org 70 i- (#xDAC8 #x655E) Err bitreich.org 70 i- (#xDAC9 #x655D) Err bitreich.org 70 i- (#xDACA #x6572) Err bitreich.org 70 i- (#xDACB #x6578) Err bitreich.org 70 i- (#xDACC #x6582) Err bitreich.org 70 i- (#xDACD #x6583) Err bitreich.org 70 i- (#xDACE #x8B8A) Err bitreich.org 70 i- (#xDACF #x659B) Err bitreich.org 70 i- (#xDAD0 #x659F) Err bitreich.org 70 i- (#xDAD1 #x65AB) Err bitreich.org 70 i- (#xDAD2 #x65B7) Err bitreich.org 70 i- (#xDAD3 #x65C3) Err bitreich.org 70 i- (#xDAD4 #x65C6) Err bitreich.org 70 i- (#xDAD5 #x65C1) Err bitreich.org 70 i- (#xDAD6 #x65C4) Err bitreich.org 70 i- (#xDAD7 #x65CC) Err bitreich.org 70 i- (#xDAD8 #x65D2) Err bitreich.org 70 i- (#xDAD9 #x65DB) Err bitreich.org 70 i- (#xDADA #x65D9) Err bitreich.org 70 i- (#xDADB #x65E0) Err bitreich.org 70 i- (#xDADC #x65E1) Err bitreich.org 70 i- (#xDADD #x65F1) Err bitreich.org 70 i- (#xDADE #x6772) Err bitreich.org 70 i- (#xDADF #x660A) Err bitreich.org 70 i- (#xDAE0 #x6603) Err bitreich.org 70 i- (#xDAE1 #x65FB) Err bitreich.org 70 i- (#xDAE2 #x6773) Err bitreich.org 70 i- (#xDAE3 #x6635) Err bitreich.org 70 i- (#xDAE4 #x6636) Err bitreich.org 70 i- (#xDAE5 #x6634) Err bitreich.org 70 i- (#xDAE6 #x661C) Err bitreich.org 70 i- (#xDAE7 #x664F) Err bitreich.org 70 i- (#xDAE8 #x6644) Err bitreich.org 70 i- (#xDAE9 #x6649) Err bitreich.org 70 i- (#xDAEA #x6641) Err bitreich.org 70 i- (#xDAEB #x665E) Err bitreich.org 70 i- (#xDAEC #x665D) Err bitreich.org 70 i- (#xDAED #x6664) Err bitreich.org 70 i- (#xDAEE #x6667) Err bitreich.org 70 i- (#xDAEF #x6668) Err bitreich.org 70 i- (#xDAF0 #x665F) Err bitreich.org 70 i- (#xDAF1 #x6662) Err bitreich.org 70 i- (#xDAF2 #x6670) Err bitreich.org 70 i- (#xDAF3 #x6683) Err bitreich.org 70 i- (#xDAF4 #x6688) Err bitreich.org 70 i- (#xDAF5 #x668E) Err bitreich.org 70 i- (#xDAF6 #x6689) Err bitreich.org 70 i- (#xDAF7 #x6684) Err bitreich.org 70 i- (#xDAF8 #x6698) Err bitreich.org 70 i- (#xDAF9 #x669D) Err bitreich.org 70 i- (#xDAFA #x66C1) Err bitreich.org 70 i- (#xDAFB #x66B9) Err bitreich.org 70 i- (#xDAFC #x66C9) Err bitreich.org 70 i- (#xDAFD #x66BE) Err bitreich.org 70 i- (#xDAFE #x66BC) Err bitreich.org 70 i- (#xDBA1 #x66C4) Err bitreich.org 70 i- (#xDBA2 #x66B8) Err bitreich.org 70 i- (#xDBA3 #x66D6) Err bitreich.org 70 i- (#xDBA4 #x66DA) Err bitreich.org 70 i- (#xDBA5 #x66E0) Err bitreich.org 70 i- (#xDBA6 #x663F) Err bitreich.org 70 i- (#xDBA7 #x66E6) Err bitreich.org 70 i- (#xDBA8 #x66E9) Err bitreich.org 70 i- (#xDBA9 #x66F0) Err bitreich.org 70 i- (#xDBAA #x66F5) Err bitreich.org 70 i- (#xDBAB #x66F7) Err bitreich.org 70 i- (#xDBAC #x670F) Err bitreich.org 70 i- (#xDBAD #x6716) Err bitreich.org 70 i- (#xDBAE #x671E) Err bitreich.org 70 i- (#xDBAF #x6726) Err bitreich.org 70 i- (#xDBB0 #x6727) Err bitreich.org 70 i- (#xDBB1 #x9738) Err bitreich.org 70 i- (#xDBB2 #x672E) Err bitreich.org 70 i- (#xDBB3 #x673F) Err bitreich.org 70 i- (#xDBB4 #x6736) Err bitreich.org 70 i- (#xDBB5 #x6741) Err bitreich.org 70 i- (#xDBB6 #x6738) Err bitreich.org 70 i- (#xDBB7 #x6737) Err bitreich.org 70 i- (#xDBB8 #x6746) Err bitreich.org 70 i- (#xDBB9 #x675E) Err bitreich.org 70 i- (#xDBBA #x6760) Err bitreich.org 70 i- (#xDBBB #x6759) Err bitreich.org 70 i- (#xDBBC #x6763) Err bitreich.org 70 i- (#xDBBD #x6764) Err bitreich.org 70 i- (#xDBBE #x6789) Err bitreich.org 70 i- (#xDBBF #x6770) Err bitreich.org 70 i- (#xDBC0 #x67A9) Err bitreich.org 70 i- (#xDBC1 #x677C) Err bitreich.org 70 i- (#xDBC2 #x676A) Err bitreich.org 70 i- (#xDBC3 #x678C) Err bitreich.org 70 i- (#xDBC4 #x678B) Err bitreich.org 70 i- (#xDBC5 #x67A6) Err bitreich.org 70 i- (#xDBC6 #x67A1) Err bitreich.org 70 i- (#xDBC7 #x6785) Err bitreich.org 70 i- (#xDBC8 #x67B7) Err bitreich.org 70 i- (#xDBC9 #x67EF) Err bitreich.org 70 i- (#xDBCA #x67B4) Err bitreich.org 70 i- (#xDBCB #x67EC) Err bitreich.org 70 i- (#xDBCC #x67B3) Err bitreich.org 70 i- (#xDBCD #x67E9) Err bitreich.org 70 i- (#xDBCE #x67B8) Err bitreich.org 70 i- (#xDBCF #x67E4) Err bitreich.org 70 i- (#xDBD0 #x67DE) Err bitreich.org 70 i- (#xDBD1 #x67DD) Err bitreich.org 70 i- (#xDBD2 #x67E2) Err bitreich.org 70 i- (#xDBD3 #x67EE) Err bitreich.org 70 i- (#xDBD4 #x67B9) Err bitreich.org 70 i- (#xDBD5 #x67CE) Err bitreich.org 70 i- (#xDBD6 #x67C6) Err bitreich.org 70 i- (#xDBD7 #x67E7) Err bitreich.org 70 i- (#xDBD8 #x6A9C) Err bitreich.org 70 i- (#xDBD9 #x681E) Err bitreich.org 70 i- (#xDBDA #x6846) Err bitreich.org 70 i- (#xDBDB #x6829) Err bitreich.org 70 i- (#xDBDC #x6840) Err bitreich.org 70 i- (#xDBDD #x684D) Err bitreich.org 70 i- (#xDBDE #x6832) Err bitreich.org 70 i- (#xDBDF #x684E) Err bitreich.org 70 i- (#xDBE0 #x68B3) Err bitreich.org 70 i- (#xDBE1 #x682B) Err bitreich.org 70 i- (#xDBE2 #x6859) Err bitreich.org 70 i- (#xDBE3 #x6863) Err bitreich.org 70 i- (#xDBE4 #x6877) Err bitreich.org 70 i- (#xDBE5 #x687F) Err bitreich.org 70 i- (#xDBE6 #x689F) Err bitreich.org 70 i- (#xDBE7 #x688F) Err bitreich.org 70 i- (#xDBE8 #x68AD) Err bitreich.org 70 i- (#xDBE9 #x6894) Err bitreich.org 70 i- (#xDBEA #x689D) Err bitreich.org 70 i- (#xDBEB #x689B) Err bitreich.org 70 i- (#xDBEC #x6883) Err bitreich.org 70 i- (#xDBED #x6AAE) Err bitreich.org 70 i- (#xDBEE #x68B9) Err bitreich.org 70 i- (#xDBEF #x6874) Err bitreich.org 70 i- (#xDBF0 #x68B5) Err bitreich.org 70 i- (#xDBF1 #x68A0) Err bitreich.org 70 i- (#xDBF2 #x68BA) Err bitreich.org 70 i- (#xDBF3 #x690F) Err bitreich.org 70 i- (#xDBF4 #x688D) Err bitreich.org 70 i- (#xDBF5 #x687E) Err bitreich.org 70 i- (#xDBF6 #x6901) Err bitreich.org 70 i- (#xDBF7 #x68CA) Err bitreich.org 70 i- (#xDBF8 #x6908) Err bitreich.org 70 i- (#xDBF9 #x68D8) Err bitreich.org 70 i- (#xDBFA #x6922) Err bitreich.org 70 i- (#xDBFB #x6926) Err bitreich.org 70 i- (#xDBFC #x68E1) Err bitreich.org 70 i- (#xDBFD #x690C) Err bitreich.org 70 i- (#xDBFE #x68CD) Err bitreich.org 70 i- (#xDCA1 #x68D4) Err bitreich.org 70 i- (#xDCA2 #x68E7) Err bitreich.org 70 i- (#xDCA3 #x68D5) Err bitreich.org 70 i- (#xDCA4 #x6936) Err bitreich.org 70 i- (#xDCA5 #x6912) Err bitreich.org 70 i- (#xDCA6 #x6904) Err bitreich.org 70 i- (#xDCA7 #x68D7) Err bitreich.org 70 i- (#xDCA8 #x68E3) Err bitreich.org 70 i- (#xDCA9 #x6925) Err bitreich.org 70 i- (#xDCAA #x68F9) Err bitreich.org 70 i- (#xDCAB #x68E0) Err bitreich.org 70 i- (#xDCAC #x68EF) Err bitreich.org 70 i- (#xDCAD #x6928) Err bitreich.org 70 i- (#xDCAE #x692A) Err bitreich.org 70 i- (#xDCAF #x691A) Err bitreich.org 70 i- (#xDCB0 #x6923) Err bitreich.org 70 i- (#xDCB1 #x6921) Err bitreich.org 70 i- (#xDCB2 #x68C6) Err bitreich.org 70 i- (#xDCB3 #x6979) Err bitreich.org 70 i- (#xDCB4 #x6977) Err bitreich.org 70 i- (#xDCB5 #x695C) Err bitreich.org 70 i- (#xDCB6 #x6978) Err bitreich.org 70 i- (#xDCB7 #x696B) Err bitreich.org 70 i- (#xDCB8 #x6954) Err bitreich.org 70 i- (#xDCB9 #x697E) Err bitreich.org 70 i- (#xDCBA #x696E) Err bitreich.org 70 i- (#xDCBB #x6939) Err bitreich.org 70 i- (#xDCBC #x6974) Err bitreich.org 70 i- (#xDCBD #x693D) Err bitreich.org 70 i- (#xDCBE #x6959) Err bitreich.org 70 i- (#xDCBF #x6930) Err bitreich.org 70 i- (#xDCC0 #x6961) Err bitreich.org 70 i- (#xDCC1 #x695E) Err bitreich.org 70 i- (#xDCC2 #x695D) Err bitreich.org 70 i- (#xDCC3 #x6981) Err bitreich.org 70 i- (#xDCC4 #x696A) Err bitreich.org 70 i- (#xDCC5 #x69B2) Err bitreich.org 70 i- (#xDCC6 #x69AE) Err bitreich.org 70 i- (#xDCC7 #x69D0) Err bitreich.org 70 i- (#xDCC8 #x69BF) Err bitreich.org 70 i- (#xDCC9 #x69C1) Err bitreich.org 70 i- (#xDCCA #x69D3) Err bitreich.org 70 i- (#xDCCB #x69BE) Err bitreich.org 70 i- (#xDCCC #x69CE) Err bitreich.org 70 i- (#xDCCD #x5BE8) Err bitreich.org 70 i- (#xDCCE #x69CA) Err bitreich.org 70 i- (#xDCCF #x69DD) Err bitreich.org 70 i- (#xDCD0 #x69BB) Err bitreich.org 70 i- (#xDCD1 #x69C3) Err bitreich.org 70 i- (#xDCD2 #x69A7) Err bitreich.org 70 i- (#xDCD3 #x6A2E) Err bitreich.org 70 i- (#xDCD4 #x6991) Err bitreich.org 70 i- (#xDCD5 #x69A0) Err bitreich.org 70 i- (#xDCD6 #x699C) Err bitreich.org 70 i- (#xDCD7 #x6995) Err bitreich.org 70 i- (#xDCD8 #x69B4) Err bitreich.org 70 i- (#xDCD9 #x69DE) Err bitreich.org 70 i- (#xDCDA #x69E8) Err bitreich.org 70 i- (#xDCDB #x6A02) Err bitreich.org 70 i- (#xDCDC #x6A1B) Err bitreich.org 70 i- (#xDCDD #x69FF) Err bitreich.org 70 i- (#xDCDE #x6B0A) Err bitreich.org 70 i- (#xDCDF #x69F9) Err bitreich.org 70 i- (#xDCE0 #x69F2) Err bitreich.org 70 i- (#xDCE1 #x69E7) Err bitreich.org 70 i- (#xDCE2 #x6A05) Err bitreich.org 70 i- (#xDCE3 #x69B1) Err bitreich.org 70 i- (#xDCE4 #x6A1E) Err bitreich.org 70 i- (#xDCE5 #x69ED) Err bitreich.org 70 i- (#xDCE6 #x6A14) Err bitreich.org 70 i- (#xDCE7 #x69EB) Err bitreich.org 70 i- (#xDCE8 #x6A0A) Err bitreich.org 70 i- (#xDCE9 #x6A12) Err bitreich.org 70 i- (#xDCEA #x6AC1) Err bitreich.org 70 i- (#xDCEB #x6A23) Err bitreich.org 70 i- (#xDCEC #x6A13) Err bitreich.org 70 i- (#xDCED #x6A44) Err bitreich.org 70 i- (#xDCEE #x6A0C) Err bitreich.org 70 i- (#xDCEF #x6A72) Err bitreich.org 70 i- (#xDCF0 #x6A36) Err bitreich.org 70 i- (#xDCF1 #x6A78) Err bitreich.org 70 i- (#xDCF2 #x6A47) Err bitreich.org 70 i- (#xDCF3 #x6A62) Err bitreich.org 70 i- (#xDCF4 #x6A59) Err bitreich.org 70 i- (#xDCF5 #x6A66) Err bitreich.org 70 i- (#xDCF6 #x6A48) Err bitreich.org 70 i- (#xDCF7 #x6A38) Err bitreich.org 70 i- (#xDCF8 #x6A22) Err bitreich.org 70 i- (#xDCF9 #x6A90) Err bitreich.org 70 i- (#xDCFA #x6A8D) Err bitreich.org 70 i- (#xDCFB #x6AA0) Err bitreich.org 70 i- (#xDCFC #x6A84) Err bitreich.org 70 i- (#xDCFD #x6AA2) Err bitreich.org 70 i- (#xDCFE #x6AA3) Err bitreich.org 70 i- (#xDDA1 #x6A97) Err bitreich.org 70 i- (#xDDA2 #x8617) Err bitreich.org 70 i- (#xDDA3 #x6ABB) Err bitreich.org 70 i- (#xDDA4 #x6AC3) Err bitreich.org 70 i- (#xDDA5 #x6AC2) Err bitreich.org 70 i- (#xDDA6 #x6AB8) Err bitreich.org 70 i- (#xDDA7 #x6AB3) Err bitreich.org 70 i- (#xDDA8 #x6AAC) Err bitreich.org 70 i- (#xDDA9 #x6ADE) Err bitreich.org 70 i- (#xDDAA #x6AD1) Err bitreich.org 70 i- (#xDDAB #x6ADF) Err bitreich.org 70 i- (#xDDAC #x6AAA) Err bitreich.org 70 i- (#xDDAD #x6ADA) Err bitreich.org 70 i- (#xDDAE #x6AEA) Err bitreich.org 70 i- (#xDDAF #x6AFB) Err bitreich.org 70 i- (#xDDB0 #x6B05) Err bitreich.org 70 i- (#xDDB1 #x8616) Err bitreich.org 70 i- (#xDDB2 #x6AFA) Err bitreich.org 70 i- (#xDDB3 #x6B12) Err bitreich.org 70 i- (#xDDB4 #x6B16) Err bitreich.org 70 i- (#xDDB5 #x9B31) Err bitreich.org 70 i- (#xDDB6 #x6B1F) Err bitreich.org 70 i- (#xDDB7 #x6B38) Err bitreich.org 70 i- (#xDDB8 #x6B37) Err bitreich.org 70 i- (#xDDB9 #x76DC) Err bitreich.org 70 i- (#xDDBA #x6B39) Err bitreich.org 70 i- (#xDDBB #x98EE) Err bitreich.org 70 i- (#xDDBC #x6B47) Err bitreich.org 70 i- (#xDDBD #x6B43) Err bitreich.org 70 i- (#xDDBE #x6B49) Err bitreich.org 70 i- (#xDDBF #x6B50) Err bitreich.org 70 i- (#xDDC0 #x6B59) Err bitreich.org 70 i- (#xDDC1 #x6B54) Err bitreich.org 70 i- (#xDDC2 #x6B5B) Err bitreich.org 70 i- (#xDDC3 #x6B5F) Err bitreich.org 70 i- (#xDDC4 #x6B61) Err bitreich.org 70 i- (#xDDC5 #x6B78) Err bitreich.org 70 i- (#xDDC6 #x6B79) Err bitreich.org 70 i- (#xDDC7 #x6B7F) Err bitreich.org 70 i- (#xDDC8 #x6B80) Err bitreich.org 70 i- (#xDDC9 #x6B84) Err bitreich.org 70 i- (#xDDCA #x6B83) Err bitreich.org 70 i- (#xDDCB #x6B8D) Err bitreich.org 70 i- (#xDDCC #x6B98) Err bitreich.org 70 i- (#xDDCD #x6B95) Err bitreich.org 70 i- (#xDDCE #x6B9E) Err bitreich.org 70 i- (#xDDCF #x6BA4) Err bitreich.org 70 i- (#xDDD0 #x6BAA) Err bitreich.org 70 i- (#xDDD1 #x6BAB) Err bitreich.org 70 i- (#xDDD2 #x6BAF) Err bitreich.org 70 i- (#xDDD3 #x6BB2) Err bitreich.org 70 i- (#xDDD4 #x6BB1) Err bitreich.org 70 i- (#xDDD5 #x6BB3) Err bitreich.org 70 i- (#xDDD6 #x6BB7) Err bitreich.org 70 i- (#xDDD7 #x6BBC) Err bitreich.org 70 i- (#xDDD8 #x6BC6) Err bitreich.org 70 i- (#xDDD9 #x6BCB) Err bitreich.org 70 i- (#xDDDA #x6BD3) Err bitreich.org 70 i- (#xDDDB #x6BDF) Err bitreich.org 70 i- (#xDDDC #x6BEC) Err bitreich.org 70 i- (#xDDDD #x6BEB) Err bitreich.org 70 i- (#xDDDE #x6BF3) Err bitreich.org 70 i- (#xDDDF #x6BEF) Err bitreich.org 70 i- (#xDDE0 #x9EBE) Err bitreich.org 70 i- (#xDDE1 #x6C08) Err bitreich.org 70 i- (#xDDE2 #x6C13) Err bitreich.org 70 i- (#xDDE3 #x6C14) Err bitreich.org 70 i- (#xDDE4 #x6C1B) Err bitreich.org 70 i- (#xDDE5 #x6C24) Err bitreich.org 70 i- (#xDDE6 #x6C23) Err bitreich.org 70 i- (#xDDE7 #x6C5E) Err bitreich.org 70 i- (#xDDE8 #x6C55) Err bitreich.org 70 i- (#xDDE9 #x6C62) Err bitreich.org 70 i- (#xDDEA #x6C6A) Err bitreich.org 70 i- (#xDDEB #x6C82) Err bitreich.org 70 i- (#xDDEC #x6C8D) Err bitreich.org 70 i- (#xDDED #x6C9A) Err bitreich.org 70 i- (#xDDEE #x6C81) Err bitreich.org 70 i- (#xDDEF #x6C9B) Err bitreich.org 70 i- (#xDDF0 #x6C7E) Err bitreich.org 70 i- (#xDDF1 #x6C68) Err bitreich.org 70 i- (#xDDF2 #x6C73) Err bitreich.org 70 i- (#xDDF3 #x6C92) Err bitreich.org 70 i- (#xDDF4 #x6C90) Err bitreich.org 70 i- (#xDDF5 #x6CC4) Err bitreich.org 70 i- (#xDDF6 #x6CF1) Err bitreich.org 70 i- (#xDDF7 #x6CD3) Err bitreich.org 70 i- (#xDDF8 #x6CBD) Err bitreich.org 70 i- (#xDDF9 #x6CD7) Err bitreich.org 70 i- (#xDDFA #x6CC5) Err bitreich.org 70 i- (#xDDFB #x6CDD) Err bitreich.org 70 i- (#xDDFC #x6CAE) Err bitreich.org 70 i- (#xDDFD #x6CB1) Err bitreich.org 70 i- (#xDDFE #x6CBE) Err bitreich.org 70 i- (#xDEA1 #x6CBA) Err bitreich.org 70 i- (#xDEA2 #x6CDB) Err bitreich.org 70 i- (#xDEA3 #x6CEF) Err bitreich.org 70 i- (#xDEA4 #x6CD9) Err bitreich.org 70 i- (#xDEA5 #x6CEA) Err bitreich.org 70 i- (#xDEA6 #x6D1F) Err bitreich.org 70 i- (#xDEA7 #x884D) Err bitreich.org 70 i- (#xDEA8 #x6D36) Err bitreich.org 70 i- (#xDEA9 #x6D2B) Err bitreich.org 70 i- (#xDEAA #x6D3D) Err bitreich.org 70 i- (#xDEAB #x6D38) Err bitreich.org 70 i- (#xDEAC #x6D19) Err bitreich.org 70 i- (#xDEAD #x6D35) Err bitreich.org 70 i- (#xDEAE #x6D33) Err bitreich.org 70 i- (#xDEAF #x6D12) Err bitreich.org 70 i- (#xDEB0 #x6D0C) Err bitreich.org 70 i- (#xDEB1 #x6D63) Err bitreich.org 70 i- (#xDEB2 #x6D93) Err bitreich.org 70 i- (#xDEB3 #x6D64) Err bitreich.org 70 i- (#xDEB4 #x6D5A) Err bitreich.org 70 i- (#xDEB5 #x6D79) Err bitreich.org 70 i- (#xDEB6 #x6D59) Err bitreich.org 70 i- (#xDEB7 #x6D8E) Err bitreich.org 70 i- (#xDEB8 #x6D95) Err bitreich.org 70 i- (#xDEB9 #x6FE4) Err bitreich.org 70 i- (#xDEBA #x6D85) Err bitreich.org 70 i- (#xDEBB #x6DF9) Err bitreich.org 70 i- (#xDEBC #x6E15) Err bitreich.org 70 i- (#xDEBD #x6E0A) Err bitreich.org 70 i- (#xDEBE #x6DB5) Err bitreich.org 70 i- (#xDEBF #x6DC7) Err bitreich.org 70 i- (#xDEC0 #x6DE6) Err bitreich.org 70 i- (#xDEC1 #x6DB8) Err bitreich.org 70 i- (#xDEC2 #x6DC6) Err bitreich.org 70 i- (#xDEC3 #x6DEC) Err bitreich.org 70 i- (#xDEC4 #x6DDE) Err bitreich.org 70 i- (#xDEC5 #x6DCC) Err bitreich.org 70 i- (#xDEC6 #x6DE8) Err bitreich.org 70 i- (#xDEC7 #x6DD2) Err bitreich.org 70 i- (#xDEC8 #x6DC5) Err bitreich.org 70 i- (#xDEC9 #x6DFA) Err bitreich.org 70 i- (#xDECA #x6DD9) Err bitreich.org 70 i- (#xDECB #x6DE4) Err bitreich.org 70 i- (#xDECC #x6DD5) Err bitreich.org 70 i- (#xDECD #x6DEA) Err bitreich.org 70 i- (#xDECE #x6DEE) Err bitreich.org 70 i- (#xDECF #x6E2D) Err bitreich.org 70 i- (#xDED0 #x6E6E) Err bitreich.org 70 i- (#xDED1 #x6E2E) Err bitreich.org 70 i- (#xDED2 #x6E19) Err bitreich.org 70 i- (#xDED3 #x6E72) Err bitreich.org 70 i- (#xDED4 #x6E5F) Err bitreich.org 70 i- (#xDED5 #x6E3E) Err bitreich.org 70 i- (#xDED6 #x6E23) Err bitreich.org 70 i- (#xDED7 #x6E6B) Err bitreich.org 70 i- (#xDED8 #x6E2B) Err bitreich.org 70 i- (#xDED9 #x6E76) Err bitreich.org 70 i- (#xDEDA #x6E4D) Err bitreich.org 70 i- (#xDEDB #x6E1F) Err bitreich.org 70 i- (#xDEDC #x6E43) Err bitreich.org 70 i- (#xDEDD #x6E3A) Err bitreich.org 70 i- (#xDEDE #x6E4E) Err bitreich.org 70 i- (#xDEDF #x6E24) Err bitreich.org 70 i- (#xDEE0 #x6EFF) Err bitreich.org 70 i- (#xDEE1 #x6E1D) Err bitreich.org 70 i- (#xDEE2 #x6E38) Err bitreich.org 70 i- (#xDEE3 #x6E82) Err bitreich.org 70 i- (#xDEE4 #x6EAA) Err bitreich.org 70 i- (#xDEE5 #x6E98) Err bitreich.org 70 i- (#xDEE6 #x6EC9) Err bitreich.org 70 i- (#xDEE7 #x6EB7) Err bitreich.org 70 i- (#xDEE8 #x6ED3) Err bitreich.org 70 i- (#xDEE9 #x6EBD) Err bitreich.org 70 i- (#xDEEA #x6EAF) Err bitreich.org 70 i- (#xDEEB #x6EC4) Err bitreich.org 70 i- (#xDEEC #x6EB2) Err bitreich.org 70 i- (#xDEED #x6ED4) Err bitreich.org 70 i- (#xDEEE #x6ED5) Err bitreich.org 70 i- (#xDEEF #x6E8F) Err bitreich.org 70 i- (#xDEF0 #x6EA5) Err bitreich.org 70 i- (#xDEF1 #x6EC2) Err bitreich.org 70 i- (#xDEF2 #x6E9F) Err bitreich.org 70 i- (#xDEF3 #x6F41) Err bitreich.org 70 i- (#xDEF4 #x6F11) Err bitreich.org 70 i- (#xDEF5 #x704C) Err bitreich.org 70 i- (#xDEF6 #x6EEC) Err bitreich.org 70 i- (#xDEF7 #x6EF8) Err bitreich.org 70 i- (#xDEF8 #x6EFE) Err bitreich.org 70 i- (#xDEF9 #x6F3F) Err bitreich.org 70 i- (#xDEFA #x6EF2) Err bitreich.org 70 i- (#xDEFB #x6F31) Err bitreich.org 70 i- (#xDEFC #x6EEF) Err bitreich.org 70 i- (#xDEFD #x6F32) Err bitreich.org 70 i- (#xDEFE #x6ECC) Err bitreich.org 70 i- (#xDFA1 #x6F3E) Err bitreich.org 70 i- (#xDFA2 #x6F13) Err bitreich.org 70 i- (#xDFA3 #x6EF7) Err bitreich.org 70 i- (#xDFA4 #x6F86) Err bitreich.org 70 i- (#xDFA5 #x6F7A) Err bitreich.org 70 i- (#xDFA6 #x6F78) Err bitreich.org 70 i- (#xDFA7 #x6F81) Err bitreich.org 70 i- (#xDFA8 #x6F80) Err bitreich.org 70 i- (#xDFA9 #x6F6F) Err bitreich.org 70 i- (#xDFAA #x6F5B) Err bitreich.org 70 i- (#xDFAB #x6FF3) Err bitreich.org 70 i- (#xDFAC #x6F6D) Err bitreich.org 70 i- (#xDFAD #x6F82) Err bitreich.org 70 i- (#xDFAE #x6F7C) Err bitreich.org 70 i- (#xDFAF #x6F58) Err bitreich.org 70 i- (#xDFB0 #x6F8E) Err bitreich.org 70 i- (#xDFB1 #x6F91) Err bitreich.org 70 i- (#xDFB2 #x6FC2) Err bitreich.org 70 i- (#xDFB3 #x6F66) Err bitreich.org 70 i- (#xDFB4 #x6FB3) Err bitreich.org 70 i- (#xDFB5 #x6FA3) Err bitreich.org 70 i- (#xDFB6 #x6FA1) Err bitreich.org 70 i- (#xDFB7 #x6FA4) Err bitreich.org 70 i- (#xDFB8 #x6FB9) Err bitreich.org 70 i- (#xDFB9 #x6FC6) Err bitreich.org 70 i- (#xDFBA #x6FAA) Err bitreich.org 70 i- (#xDFBB #x6FDF) Err bitreich.org 70 i- (#xDFBC #x6FD5) Err bitreich.org 70 i- (#xDFBD #x6FEC) Err bitreich.org 70 i- (#xDFBE #x6FD4) Err bitreich.org 70 i- (#xDFBF #x6FD8) Err bitreich.org 70 i- (#xDFC0 #x6FF1) Err bitreich.org 70 i- (#xDFC1 #x6FEE) Err bitreich.org 70 i- (#xDFC2 #x6FDB) Err bitreich.org 70 i- (#xDFC3 #x7009) Err bitreich.org 70 i- (#xDFC4 #x700B) Err bitreich.org 70 i- (#xDFC5 #x6FFA) Err bitreich.org 70 i- (#xDFC6 #x7011) Err bitreich.org 70 i- (#xDFC7 #x7001) Err bitreich.org 70 i- (#xDFC8 #x700F) Err bitreich.org 70 i- (#xDFC9 #x6FFE) Err bitreich.org 70 i- (#xDFCA #x701B) Err bitreich.org 70 i- (#xDFCB #x701A) Err bitreich.org 70 i- (#xDFCC #x6F74) Err bitreich.org 70 i- (#xDFCD #x701D) Err bitreich.org 70 i- (#xDFCE #x7018) Err bitreich.org 70 i- (#xDFCF #x701F) Err bitreich.org 70 i- (#xDFD0 #x7030) Err bitreich.org 70 i- (#xDFD1 #x703E) Err bitreich.org 70 i- (#xDFD2 #x7032) Err bitreich.org 70 i- (#xDFD3 #x7051) Err bitreich.org 70 i- (#xDFD4 #x7063) Err bitreich.org 70 i- (#xDFD5 #x7099) Err bitreich.org 70 i- (#xDFD6 #x7092) Err bitreich.org 70 i- (#xDFD7 #x70AF) Err bitreich.org 70 i- (#xDFD8 #x70F1) Err bitreich.org 70 i- (#xDFD9 #x70AC) Err bitreich.org 70 i- (#xDFDA #x70B8) Err bitreich.org 70 i- (#xDFDB #x70B3) Err bitreich.org 70 i- (#xDFDC #x70AE) Err bitreich.org 70 i- (#xDFDD #x70DF) Err bitreich.org 70 i- (#xDFDE #x70CB) Err bitreich.org 70 i- (#xDFDF #x70DD) Err bitreich.org 70 i- (#xDFE0 #x70D9) Err bitreich.org 70 i- (#xDFE1 #x7109) Err bitreich.org 70 i- (#xDFE2 #x70FD) Err bitreich.org 70 i- (#xDFE3 #x711C) Err bitreich.org 70 i- (#xDFE4 #x7119) Err bitreich.org 70 i- (#xDFE5 #x7165) Err bitreich.org 70 i- (#xDFE6 #x7155) Err bitreich.org 70 i- (#xDFE7 #x7188) Err bitreich.org 70 i- (#xDFE8 #x7166) Err bitreich.org 70 i- (#xDFE9 #x7162) Err bitreich.org 70 i- (#xDFEA #x714C) Err bitreich.org 70 i- (#xDFEB #x7156) Err bitreich.org 70 i- (#xDFEC #x716C) Err bitreich.org 70 i- (#xDFED #x718F) Err bitreich.org 70 i- (#xDFEE #x71FB) Err bitreich.org 70 i- (#xDFEF #x7184) Err bitreich.org 70 i- (#xDFF0 #x7195) Err bitreich.org 70 i- (#xDFF1 #x71A8) Err bitreich.org 70 i- (#xDFF2 #x71AC) Err bitreich.org 70 i- (#xDFF3 #x71D7) Err bitreich.org 70 i- (#xDFF4 #x71B9) Err bitreich.org 70 i- (#xDFF5 #x71BE) Err bitreich.org 70 i- (#xDFF6 #x71D2) Err bitreich.org 70 i- (#xDFF7 #x71C9) Err bitreich.org 70 i- (#xDFF8 #x71D4) Err bitreich.org 70 i- (#xDFF9 #x71CE) Err bitreich.org 70 i- (#xDFFA #x71E0) Err bitreich.org 70 i- (#xDFFB #x71EC) Err bitreich.org 70 i- (#xDFFC #x71E7) Err bitreich.org 70 i- (#xDFFD #x71F5) Err bitreich.org 70 i- (#xDFFE #x71FC) Err bitreich.org 70 i- (#xE0A1 #x71F9) Err bitreich.org 70 i- (#xE0A2 #x71FF) Err bitreich.org 70 i- (#xE0A3 #x720D) Err bitreich.org 70 i- (#xE0A4 #x7210) Err bitreich.org 70 i- (#xE0A5 #x721B) Err bitreich.org 70 i- (#xE0A6 #x7228) Err bitreich.org 70 i- (#xE0A7 #x722D) Err bitreich.org 70 i- (#xE0A8 #x722C) Err bitreich.org 70 i- (#xE0A9 #x7230) Err bitreich.org 70 i- (#xE0AA #x7232) Err bitreich.org 70 i- (#xE0AB #x723B) Err bitreich.org 70 i- (#xE0AC #x723C) Err bitreich.org 70 i- (#xE0AD #x723F) Err bitreich.org 70 i- (#xE0AE #x7240) Err bitreich.org 70 i- (#xE0AF #x7246) Err bitreich.org 70 i- (#xE0B0 #x724B) Err bitreich.org 70 i- (#xE0B1 #x7258) Err bitreich.org 70 i- (#xE0B2 #x7274) Err bitreich.org 70 i- (#xE0B3 #x727E) Err bitreich.org 70 i- (#xE0B4 #x7282) Err bitreich.org 70 i- (#xE0B5 #x7281) Err bitreich.org 70 i- (#xE0B6 #x7287) Err bitreich.org 70 i- (#xE0B7 #x7292) Err bitreich.org 70 i- (#xE0B8 #x7296) Err bitreich.org 70 i- (#xE0B9 #x72A2) Err bitreich.org 70 i- (#xE0BA #x72A7) Err bitreich.org 70 i- (#xE0BB #x72B9) Err bitreich.org 70 i- (#xE0BC #x72B2) Err bitreich.org 70 i- (#xE0BD #x72C3) Err bitreich.org 70 i- (#xE0BE #x72C6) Err bitreich.org 70 i- (#xE0BF #x72C4) Err bitreich.org 70 i- (#xE0C0 #x72CE) Err bitreich.org 70 i- (#xE0C1 #x72D2) Err bitreich.org 70 i- (#xE0C2 #x72E2) Err bitreich.org 70 i- (#xE0C3 #x72E0) Err bitreich.org 70 i- (#xE0C4 #x72E1) Err bitreich.org 70 i- (#xE0C5 #x72F9) Err bitreich.org 70 i- (#xE0C6 #x72F7) Err bitreich.org 70 i- (#xE0C7 #x500F) Err bitreich.org 70 i- (#xE0C8 #x7317) Err bitreich.org 70 i- (#xE0C9 #x730A) Err bitreich.org 70 i- (#xE0CA #x731C) Err bitreich.org 70 i- (#xE0CB #x7316) Err bitreich.org 70 i- (#xE0CC #x731D) Err bitreich.org 70 i- (#xE0CD #x7334) Err bitreich.org 70 i- (#xE0CE #x732F) Err bitreich.org 70 i- (#xE0CF #x7329) Err bitreich.org 70 i- (#xE0D0 #x7325) Err bitreich.org 70 i- (#xE0D1 #x733E) Err bitreich.org 70 i- (#xE0D2 #x734E) Err bitreich.org 70 i- (#xE0D3 #x734F) Err bitreich.org 70 i- (#xE0D4 #x9ED8) Err bitreich.org 70 i- (#xE0D5 #x7357) Err bitreich.org 70 i- (#xE0D6 #x736A) Err bitreich.org 70 i- (#xE0D7 #x7368) Err bitreich.org 70 i- (#xE0D8 #x7370) Err bitreich.org 70 i- (#xE0D9 #x7378) Err bitreich.org 70 i- (#xE0DA #x7375) Err bitreich.org 70 i- (#xE0DB #x737B) Err bitreich.org 70 i- (#xE0DC #x737A) Err bitreich.org 70 i- (#xE0DD #x73C8) Err bitreich.org 70 i- (#xE0DE #x73B3) Err bitreich.org 70 i- (#xE0DF #x73CE) Err bitreich.org 70 i- (#xE0E0 #x73BB) Err bitreich.org 70 i- (#xE0E1 #x73C0) Err bitreich.org 70 i- (#xE0E2 #x73E5) Err bitreich.org 70 i- (#xE0E3 #x73EE) Err bitreich.org 70 i- (#xE0E4 #x73DE) Err bitreich.org 70 i- (#xE0E5 #x74A2) Err bitreich.org 70 i- (#xE0E6 #x7405) Err bitreich.org 70 i- (#xE0E7 #x746F) Err bitreich.org 70 i- (#xE0E8 #x7425) Err bitreich.org 70 i- (#xE0E9 #x73F8) Err bitreich.org 70 i- (#xE0EA #x7432) Err bitreich.org 70 i- (#xE0EB #x743A) Err bitreich.org 70 i- (#xE0EC #x7455) Err bitreich.org 70 i- (#xE0ED #x743F) Err bitreich.org 70 i- (#xE0EE #x745F) Err bitreich.org 70 i- (#xE0EF #x7459) Err bitreich.org 70 i- (#xE0F0 #x7441) Err bitreich.org 70 i- (#xE0F1 #x745C) Err bitreich.org 70 i- (#xE0F2 #x7469) Err bitreich.org 70 i- (#xE0F3 #x7470) Err bitreich.org 70 i- (#xE0F4 #x7463) Err bitreich.org 70 i- (#xE0F5 #x746A) Err bitreich.org 70 i- (#xE0F6 #x7476) Err bitreich.org 70 i- (#xE0F7 #x747E) Err bitreich.org 70 i- (#xE0F8 #x748B) Err bitreich.org 70 i- (#xE0F9 #x749E) Err bitreich.org 70 i- (#xE0FA #x74A7) Err bitreich.org 70 i- (#xE0FB #x74CA) Err bitreich.org 70 i- (#xE0FC #x74CF) Err bitreich.org 70 i- (#xE0FD #x74D4) Err bitreich.org 70 i- (#xE0FE #x73F1) Err bitreich.org 70 i- (#xE1A1 #x74E0) Err bitreich.org 70 i- (#xE1A2 #x74E3) Err bitreich.org 70 i- (#xE1A3 #x74E7) Err bitreich.org 70 i- (#xE1A4 #x74E9) Err bitreich.org 70 i- (#xE1A5 #x74EE) Err bitreich.org 70 i- (#xE1A6 #x74F2) Err bitreich.org 70 i- (#xE1A7 #x74F0) Err bitreich.org 70 i- (#xE1A8 #x74F1) Err bitreich.org 70 i- (#xE1A9 #x74F8) Err bitreich.org 70 i- (#xE1AA #x74F7) Err bitreich.org 70 i- (#xE1AB #x7504) Err bitreich.org 70 i- (#xE1AC #x7503) Err bitreich.org 70 i- (#xE1AD #x7505) Err bitreich.org 70 i- (#xE1AE #x750C) Err bitreich.org 70 i- (#xE1AF #x750E) Err bitreich.org 70 i- (#xE1B0 #x750D) Err bitreich.org 70 i- (#xE1B1 #x7515) Err bitreich.org 70 i- (#xE1B2 #x7513) Err bitreich.org 70 i- (#xE1B3 #x751E) Err bitreich.org 70 i- (#xE1B4 #x7526) Err bitreich.org 70 i- (#xE1B5 #x752C) Err bitreich.org 70 i- (#xE1B6 #x753C) Err bitreich.org 70 i- (#xE1B7 #x7544) Err bitreich.org 70 i- (#xE1B8 #x754D) Err bitreich.org 70 i- (#xE1B9 #x754A) Err bitreich.org 70 i- (#xE1BA #x7549) Err bitreich.org 70 i- (#xE1BB #x755B) Err bitreich.org 70 i- (#xE1BC #x7546) Err bitreich.org 70 i- (#xE1BD #x755A) Err bitreich.org 70 i- (#xE1BE #x7569) Err bitreich.org 70 i- (#xE1BF #x7564) Err bitreich.org 70 i- (#xE1C0 #x7567) Err bitreich.org 70 i- (#xE1C1 #x756B) Err bitreich.org 70 i- (#xE1C2 #x756D) Err bitreich.org 70 i- (#xE1C3 #x7578) Err bitreich.org 70 i- (#xE1C4 #x7576) Err bitreich.org 70 i- (#xE1C5 #x7586) Err bitreich.org 70 i- (#xE1C6 #x7587) Err bitreich.org 70 i- (#xE1C7 #x7574) Err bitreich.org 70 i- (#xE1C8 #x758A) Err bitreich.org 70 i- (#xE1C9 #x7589) Err bitreich.org 70 i- (#xE1CA #x7582) Err bitreich.org 70 i- (#xE1CB #x7594) Err bitreich.org 70 i- (#xE1CC #x759A) Err bitreich.org 70 i- (#xE1CD #x759D) Err bitreich.org 70 i- (#xE1CE #x75A5) Err bitreich.org 70 i- (#xE1CF #x75A3) Err bitreich.org 70 i- (#xE1D0 #x75C2) Err bitreich.org 70 i- (#xE1D1 #x75B3) Err bitreich.org 70 i- (#xE1D2 #x75C3) Err bitreich.org 70 i- (#xE1D3 #x75B5) Err bitreich.org 70 i- (#xE1D4 #x75BD) Err bitreich.org 70 i- (#xE1D5 #x75B8) Err bitreich.org 70 i- (#xE1D6 #x75BC) Err bitreich.org 70 i- (#xE1D7 #x75B1) Err bitreich.org 70 i- (#xE1D8 #x75CD) Err bitreich.org 70 i- (#xE1D9 #x75CA) Err bitreich.org 70 i- (#xE1DA #x75D2) Err bitreich.org 70 i- (#xE1DB #x75D9) Err bitreich.org 70 i- (#xE1DC #x75E3) Err bitreich.org 70 i- (#xE1DD #x75DE) Err bitreich.org 70 i- (#xE1DE #x75FE) Err bitreich.org 70 i- (#xE1DF #x75FF) Err bitreich.org 70 i- (#xE1E0 #x75FC) Err bitreich.org 70 i- (#xE1E1 #x7601) Err bitreich.org 70 i- (#xE1E2 #x75F0) Err bitreich.org 70 i- (#xE1E3 #x75FA) Err bitreich.org 70 i- (#xE1E4 #x75F2) Err bitreich.org 70 i- (#xE1E5 #x75F3) Err bitreich.org 70 i- (#xE1E6 #x760B) Err bitreich.org 70 i- (#xE1E7 #x760D) Err bitreich.org 70 i- (#xE1E8 #x7609) Err bitreich.org 70 i- (#xE1E9 #x761F) Err bitreich.org 70 i- (#xE1EA #x7627) Err bitreich.org 70 i- (#xE1EB #x7620) Err bitreich.org 70 i- (#xE1EC #x7621) Err bitreich.org 70 i- (#xE1ED #x7622) Err bitreich.org 70 i- (#xE1EE #x7624) Err bitreich.org 70 i- (#xE1EF #x7634) Err bitreich.org 70 i- (#xE1F0 #x7630) Err bitreich.org 70 i- (#xE1F1 #x763B) Err bitreich.org 70 i- (#xE1F2 #x7647) Err bitreich.org 70 i- (#xE1F3 #x7648) Err bitreich.org 70 i- (#xE1F4 #x7646) Err bitreich.org 70 i- (#xE1F5 #x765C) Err bitreich.org 70 i- (#xE1F6 #x7658) Err bitreich.org 70 i- (#xE1F7 #x7661) Err bitreich.org 70 i- (#xE1F8 #x7662) Err bitreich.org 70 i- (#xE1F9 #x7668) Err bitreich.org 70 i- (#xE1FA #x7669) Err bitreich.org 70 i- (#xE1FB #x766A) Err bitreich.org 70 i- (#xE1FC #x7667) Err bitreich.org 70 i- (#xE1FD #x766C) Err bitreich.org 70 i- (#xE1FE #x7670) Err bitreich.org 70 i- (#xE2A1 #x7672) Err bitreich.org 70 i- (#xE2A2 #x7676) Err bitreich.org 70 i- (#xE2A3 #x7678) Err bitreich.org 70 i- (#xE2A4 #x767C) Err bitreich.org 70 i- (#xE2A5 #x7680) Err bitreich.org 70 i- (#xE2A6 #x7683) Err bitreich.org 70 i- (#xE2A7 #x7688) Err bitreich.org 70 i- (#xE2A8 #x768B) Err bitreich.org 70 i- (#xE2A9 #x768E) Err bitreich.org 70 i- (#xE2AA #x7696) Err bitreich.org 70 i- (#xE2AB #x7693) Err bitreich.org 70 i- (#xE2AC #x7699) Err bitreich.org 70 i- (#xE2AD #x769A) Err bitreich.org 70 i- (#xE2AE #x76B0) Err bitreich.org 70 i- (#xE2AF #x76B4) Err bitreich.org 70 i- (#xE2B0 #x76B8) Err bitreich.org 70 i- (#xE2B1 #x76B9) Err bitreich.org 70 i- (#xE2B2 #x76BA) Err bitreich.org 70 i- (#xE2B3 #x76C2) Err bitreich.org 70 i- (#xE2B4 #x76CD) Err bitreich.org 70 i- (#xE2B5 #x76D6) Err bitreich.org 70 i- (#xE2B6 #x76D2) Err bitreich.org 70 i- (#xE2B7 #x76DE) Err bitreich.org 70 i- (#xE2B8 #x76E1) Err bitreich.org 70 i- (#xE2B9 #x76E5) Err bitreich.org 70 i- (#xE2BA #x76E7) Err bitreich.org 70 i- (#xE2BB #x76EA) Err bitreich.org 70 i- (#xE2BC #x862F) Err bitreich.org 70 i- (#xE2BD #x76FB) Err bitreich.org 70 i- (#xE2BE #x7708) Err bitreich.org 70 i- (#xE2BF #x7707) Err bitreich.org 70 i- (#xE2C0 #x7704) Err bitreich.org 70 i- (#xE2C1 #x7729) Err bitreich.org 70 i- (#xE2C2 #x7724) Err bitreich.org 70 i- (#xE2C3 #x771E) Err bitreich.org 70 i- (#xE2C4 #x7725) Err bitreich.org 70 i- (#xE2C5 #x7726) Err bitreich.org 70 i- (#xE2C6 #x771B) Err bitreich.org 70 i- (#xE2C7 #x7737) Err bitreich.org 70 i- (#xE2C8 #x7738) Err bitreich.org 70 i- (#xE2C9 #x7747) Err bitreich.org 70 i- (#xE2CA #x775A) Err bitreich.org 70 i- (#xE2CB #x7768) Err bitreich.org 70 i- (#xE2CC #x776B) Err bitreich.org 70 i- (#xE2CD #x775B) Err bitreich.org 70 i- (#xE2CE #x7765) Err bitreich.org 70 i- (#xE2CF #x777F) Err bitreich.org 70 i- (#xE2D0 #x777E) Err bitreich.org 70 i- (#xE2D1 #x7779) Err bitreich.org 70 i- (#xE2D2 #x778E) Err bitreich.org 70 i- (#xE2D3 #x778B) Err bitreich.org 70 i- (#xE2D4 #x7791) Err bitreich.org 70 i- (#xE2D5 #x77A0) Err bitreich.org 70 i- (#xE2D6 #x779E) Err bitreich.org 70 i- (#xE2D7 #x77B0) Err bitreich.org 70 i- (#xE2D8 #x77B6) Err bitreich.org 70 i- (#xE2D9 #x77B9) Err bitreich.org 70 i- (#xE2DA #x77BF) Err bitreich.org 70 i- (#xE2DB #x77BC) Err bitreich.org 70 i- (#xE2DC #x77BD) Err bitreich.org 70 i- (#xE2DD #x77BB) Err bitreich.org 70 i- (#xE2DE #x77C7) Err bitreich.org 70 i- (#xE2DF #x77CD) Err bitreich.org 70 i- (#xE2E0 #x77D7) Err bitreich.org 70 i- (#xE2E1 #x77DA) Err bitreich.org 70 i- (#xE2E2 #x77DC) Err bitreich.org 70 i- (#xE2E3 #x77E3) Err bitreich.org 70 i- (#xE2E4 #x77EE) Err bitreich.org 70 i- (#xE2E5 #x77FC) Err bitreich.org 70 i- (#xE2E6 #x780C) Err bitreich.org 70 i- (#xE2E7 #x7812) Err bitreich.org 70 i- (#xE2E8 #x7926) Err bitreich.org 70 i- (#xE2E9 #x7820) Err bitreich.org 70 i- (#xE2EA #x792A) Err bitreich.org 70 i- (#xE2EB #x7845) Err bitreich.org 70 i- (#xE2EC #x788E) Err bitreich.org 70 i- (#xE2ED #x7874) Err bitreich.org 70 i- (#xE2EE #x7886) Err bitreich.org 70 i- (#xE2EF #x787C) Err bitreich.org 70 i- (#xE2F0 #x789A) Err bitreich.org 70 i- (#xE2F1 #x788C) Err bitreich.org 70 i- (#xE2F2 #x78A3) Err bitreich.org 70 i- (#xE2F3 #x78B5) Err bitreich.org 70 i- (#xE2F4 #x78AA) Err bitreich.org 70 i- (#xE2F5 #x78AF) Err bitreich.org 70 i- (#xE2F6 #x78D1) Err bitreich.org 70 i- (#xE2F7 #x78C6) Err bitreich.org 70 i- (#xE2F8 #x78CB) Err bitreich.org 70 i- (#xE2F9 #x78D4) Err bitreich.org 70 i- (#xE2FA #x78BE) Err bitreich.org 70 i- (#xE2FB #x78BC) Err bitreich.org 70 i- (#xE2FC #x78C5) Err bitreich.org 70 i- (#xE2FD #x78CA) Err bitreich.org 70 i- (#xE2FE #x78EC) Err bitreich.org 70 i- (#xE3A1 #x78E7) Err bitreich.org 70 i- (#xE3A2 #x78DA) Err bitreich.org 70 i- (#xE3A3 #x78FD) Err bitreich.org 70 i- (#xE3A4 #x78F4) Err bitreich.org 70 i- (#xE3A5 #x7907) Err bitreich.org 70 i- (#xE3A6 #x7912) Err bitreich.org 70 i- (#xE3A7 #x7911) Err bitreich.org 70 i- (#xE3A8 #x7919) Err bitreich.org 70 i- (#xE3A9 #x792C) Err bitreich.org 70 i- (#xE3AA #x792B) Err bitreich.org 70 i- (#xE3AB #x7940) Err bitreich.org 70 i- (#xE3AC #x7960) Err bitreich.org 70 i- (#xE3AD #x7957) Err bitreich.org 70 i- (#xE3AE #x795F) Err bitreich.org 70 i- (#xE3AF #x795A) Err bitreich.org 70 i- (#xE3B0 #x7955) Err bitreich.org 70 i- (#xE3B1 #x7953) Err bitreich.org 70 i- (#xE3B2 #x797A) Err bitreich.org 70 i- (#xE3B3 #x797F) Err bitreich.org 70 i- (#xE3B4 #x798A) Err bitreich.org 70 i- (#xE3B5 #x799D) Err bitreich.org 70 i- (#xE3B6 #x79A7) Err bitreich.org 70 i- (#xE3B7 #x9F4B) Err bitreich.org 70 i- (#xE3B8 #x79AA) Err bitreich.org 70 i- (#xE3B9 #x79AE) Err bitreich.org 70 i- (#xE3BA #x79B3) Err bitreich.org 70 i- (#xE3BB #x79B9) Err bitreich.org 70 i- (#xE3BC #x79BA) Err bitreich.org 70 i- (#xE3BD #x79C9) Err bitreich.org 70 i- (#xE3BE #x79D5) Err bitreich.org 70 i- (#xE3BF #x79E7) Err bitreich.org 70 i- (#xE3C0 #x79EC) Err bitreich.org 70 i- (#xE3C1 #x79E1) Err bitreich.org 70 i- (#xE3C2 #x79E3) Err bitreich.org 70 i- (#xE3C3 #x7A08) Err bitreich.org 70 i- (#xE3C4 #x7A0D) Err bitreich.org 70 i- (#xE3C5 #x7A18) Err bitreich.org 70 i- (#xE3C6 #x7A19) Err bitreich.org 70 i- (#xE3C7 #x7A20) Err bitreich.org 70 i- (#xE3C8 #x7A1F) Err bitreich.org 70 i- (#xE3C9 #x7980) Err bitreich.org 70 i- (#xE3CA #x7A31) Err bitreich.org 70 i- (#xE3CB #x7A3B) Err bitreich.org 70 i- (#xE3CC #x7A3E) Err bitreich.org 70 i- (#xE3CD #x7A37) Err bitreich.org 70 i- (#xE3CE #x7A43) Err bitreich.org 70 i- (#xE3CF #x7A57) Err bitreich.org 70 i- (#xE3D0 #x7A49) Err bitreich.org 70 i- (#xE3D1 #x7A61) Err bitreich.org 70 i- (#xE3D2 #x7A62) Err bitreich.org 70 i- (#xE3D3 #x7A69) Err bitreich.org 70 i- (#xE3D4 #x9F9D) Err bitreich.org 70 i- (#xE3D5 #x7A70) Err bitreich.org 70 i- (#xE3D6 #x7A79) Err bitreich.org 70 i- (#xE3D7 #x7A7D) Err bitreich.org 70 i- (#xE3D8 #x7A88) Err bitreich.org 70 i- (#xE3D9 #x7A97) Err bitreich.org 70 i- (#xE3DA #x7A95) Err bitreich.org 70 i- (#xE3DB #x7A98) Err bitreich.org 70 i- (#xE3DC #x7A96) Err bitreich.org 70 i- (#xE3DD #x7AA9) Err bitreich.org 70 i- (#xE3DE #x7AC8) Err bitreich.org 70 i- (#xE3DF #x7AB0) Err bitreich.org 70 i- (#xE3E0 #x7AB6) Err bitreich.org 70 i- (#xE3E1 #x7AC5) Err bitreich.org 70 i- (#xE3E2 #x7AC4) Err bitreich.org 70 i- (#xE3E3 #x7ABF) Err bitreich.org 70 i- (#xE3E4 #x9083) Err bitreich.org 70 i- (#xE3E5 #x7AC7) Err bitreich.org 70 i- (#xE3E6 #x7ACA) Err bitreich.org 70 i- (#xE3E7 #x7ACD) Err bitreich.org 70 i- (#xE3E8 #x7ACF) Err bitreich.org 70 i- (#xE3E9 #x7AD5) Err bitreich.org 70 i- (#xE3EA #x7AD3) Err bitreich.org 70 i- (#xE3EB #x7AD9) Err bitreich.org 70 i- (#xE3EC #x7ADA) Err bitreich.org 70 i- (#xE3ED #x7ADD) Err bitreich.org 70 i- (#xE3EE #x7AE1) Err bitreich.org 70 i- (#xE3EF #x7AE2) Err bitreich.org 70 i- (#xE3F0 #x7AE6) Err bitreich.org 70 i- (#xE3F1 #x7AED) Err bitreich.org 70 i- (#xE3F2 #x7AF0) Err bitreich.org 70 i- (#xE3F3 #x7B02) Err bitreich.org 70 i- (#xE3F4 #x7B0F) Err bitreich.org 70 i- (#xE3F5 #x7B0A) Err bitreich.org 70 i- (#xE3F6 #x7B06) Err bitreich.org 70 i- (#xE3F7 #x7B33) Err bitreich.org 70 i- (#xE3F8 #x7B18) Err bitreich.org 70 i- (#xE3F9 #x7B19) Err bitreich.org 70 i- (#xE3FA #x7B1E) Err bitreich.org 70 i- (#xE3FB #x7B35) Err bitreich.org 70 i- (#xE3FC #x7B28) Err bitreich.org 70 i- (#xE3FD #x7B36) Err bitreich.org 70 i- (#xE3FE #x7B50) Err bitreich.org 70 i- (#xE4A1 #x7B7A) Err bitreich.org 70 i- (#xE4A2 #x7B04) Err bitreich.org 70 i- (#xE4A3 #x7B4D) Err bitreich.org 70 i- (#xE4A4 #x7B0B) Err bitreich.org 70 i- (#xE4A5 #x7B4C) Err bitreich.org 70 i- (#xE4A6 #x7B45) Err bitreich.org 70 i- (#xE4A7 #x7B75) Err bitreich.org 70 i- (#xE4A8 #x7B65) Err bitreich.org 70 i- (#xE4A9 #x7B74) Err bitreich.org 70 i- (#xE4AA #x7B67) Err bitreich.org 70 i- (#xE4AB #x7B70) Err bitreich.org 70 i- (#xE4AC #x7B71) Err bitreich.org 70 i- (#xE4AD #x7B6C) Err bitreich.org 70 i- (#xE4AE #x7B6E) Err bitreich.org 70 i- (#xE4AF #x7B9D) Err bitreich.org 70 i- (#xE4B0 #x7B98) Err bitreich.org 70 i- (#xE4B1 #x7B9F) Err bitreich.org 70 i- (#xE4B2 #x7B8D) Err bitreich.org 70 i- (#xE4B3 #x7B9C) Err bitreich.org 70 i- (#xE4B4 #x7B9A) Err bitreich.org 70 i- (#xE4B5 #x7B8B) Err bitreich.org 70 i- (#xE4B6 #x7B92) Err bitreich.org 70 i- (#xE4B7 #x7B8F) Err bitreich.org 70 i- (#xE4B8 #x7B5D) Err bitreich.org 70 i- (#xE4B9 #x7B99) Err bitreich.org 70 i- (#xE4BA #x7BCB) Err bitreich.org 70 i- (#xE4BB #x7BC1) Err bitreich.org 70 i- (#xE4BC #x7BCC) Err bitreich.org 70 i- (#xE4BD #x7BCF) Err bitreich.org 70 i- (#xE4BE #x7BB4) Err bitreich.org 70 i- (#xE4BF #x7BC6) Err bitreich.org 70 i- (#xE4C0 #x7BDD) Err bitreich.org 70 i- (#xE4C1 #x7BE9) Err bitreich.org 70 i- (#xE4C2 #x7C11) Err bitreich.org 70 i- (#xE4C3 #x7C14) Err bitreich.org 70 i- (#xE4C4 #x7BE6) Err bitreich.org 70 i- (#xE4C5 #x7BE5) Err bitreich.org 70 i- (#xE4C6 #x7C60) Err bitreich.org 70 i- (#xE4C7 #x7C00) Err bitreich.org 70 i- (#xE4C8 #x7C07) Err bitreich.org 70 i- (#xE4C9 #x7C13) Err bitreich.org 70 i- (#xE4CA #x7BF3) Err bitreich.org 70 i- (#xE4CB #x7BF7) Err bitreich.org 70 i- (#xE4CC #x7C17) Err bitreich.org 70 i- (#xE4CD #x7C0D) Err bitreich.org 70 i- (#xE4CE #x7BF6) Err bitreich.org 70 i- (#xE4CF #x7C23) Err bitreich.org 70 i- (#xE4D0 #x7C27) Err bitreich.org 70 i- (#xE4D1 #x7C2A) Err bitreich.org 70 i- (#xE4D2 #x7C1F) Err bitreich.org 70 i- (#xE4D3 #x7C37) Err bitreich.org 70 i- (#xE4D4 #x7C2B) Err bitreich.org 70 i- (#xE4D5 #x7C3D) Err bitreich.org 70 i- (#xE4D6 #x7C4C) Err bitreich.org 70 i- (#xE4D7 #x7C43) Err bitreich.org 70 i- (#xE4D8 #x7C54) Err bitreich.org 70 i- (#xE4D9 #x7C4F) Err bitreich.org 70 i- (#xE4DA #x7C40) Err bitreich.org 70 i- (#xE4DB #x7C50) Err bitreich.org 70 i- (#xE4DC #x7C58) Err bitreich.org 70 i- (#xE4DD #x7C5F) Err bitreich.org 70 i- (#xE4DE #x7C64) Err bitreich.org 70 i- (#xE4DF #x7C56) Err bitreich.org 70 i- (#xE4E0 #x7C65) Err bitreich.org 70 i- (#xE4E1 #x7C6C) Err bitreich.org 70 i- (#xE4E2 #x7C75) Err bitreich.org 70 i- (#xE4E3 #x7C83) Err bitreich.org 70 i- (#xE4E4 #x7C90) Err bitreich.org 70 i- (#xE4E5 #x7CA4) Err bitreich.org 70 i- (#xE4E6 #x7CAD) Err bitreich.org 70 i- (#xE4E7 #x7CA2) Err bitreich.org 70 i- (#xE4E8 #x7CAB) Err bitreich.org 70 i- (#xE4E9 #x7CA1) Err bitreich.org 70 i- (#xE4EA #x7CA8) Err bitreich.org 70 i- (#xE4EB #x7CB3) Err bitreich.org 70 i- (#xE4EC #x7CB2) Err bitreich.org 70 i- (#xE4ED #x7CB1) Err bitreich.org 70 i- (#xE4EE #x7CAE) Err bitreich.org 70 i- (#xE4EF #x7CB9) Err bitreich.org 70 i- (#xE4F0 #x7CBD) Err bitreich.org 70 i- (#xE4F1 #x7CC0) Err bitreich.org 70 i- (#xE4F2 #x7CC5) Err bitreich.org 70 i- (#xE4F3 #x7CC2) Err bitreich.org 70 i- (#xE4F4 #x7CD8) Err bitreich.org 70 i- (#xE4F5 #x7CD2) Err bitreich.org 70 i- (#xE4F6 #x7CDC) Err bitreich.org 70 i- (#xE4F7 #x7CE2) Err bitreich.org 70 i- (#xE4F8 #x9B3B) Err bitreich.org 70 i- (#xE4F9 #x7CEF) Err bitreich.org 70 i- (#xE4FA #x7CF2) Err bitreich.org 70 i- (#xE4FB #x7CF4) Err bitreich.org 70 i- (#xE4FC #x7CF6) Err bitreich.org 70 i- (#xE4FD #x7CFA) Err bitreich.org 70 i- (#xE4FE #x7D06) Err bitreich.org 70 i- (#xE5A1 #x7D02) Err bitreich.org 70 i- (#xE5A2 #x7D1C) Err bitreich.org 70 i- (#xE5A3 #x7D15) Err bitreich.org 70 i- (#xE5A4 #x7D0A) Err bitreich.org 70 i- (#xE5A5 #x7D45) Err bitreich.org 70 i- (#xE5A6 #x7D4B) Err bitreich.org 70 i- (#xE5A7 #x7D2E) Err bitreich.org 70 i- (#xE5A8 #x7D32) Err bitreich.org 70 i- (#xE5A9 #x7D3F) Err bitreich.org 70 i- (#xE5AA #x7D35) Err bitreich.org 70 i- (#xE5AB #x7D46) Err bitreich.org 70 i- (#xE5AC #x7D73) Err bitreich.org 70 i- (#xE5AD #x7D56) Err bitreich.org 70 i- (#xE5AE #x7D4E) Err bitreich.org 70 i- (#xE5AF #x7D72) Err bitreich.org 70 i- (#xE5B0 #x7D68) Err bitreich.org 70 i- (#xE5B1 #x7D6E) Err bitreich.org 70 i- (#xE5B2 #x7D4F) Err bitreich.org 70 i- (#xE5B3 #x7D63) Err bitreich.org 70 i- (#xE5B4 #x7D93) Err bitreich.org 70 i- (#xE5B5 #x7D89) Err bitreich.org 70 i- (#xE5B6 #x7D5B) Err bitreich.org 70 i- (#xE5B7 #x7D8F) Err bitreich.org 70 i- (#xE5B8 #x7D7D) Err bitreich.org 70 i- (#xE5B9 #x7D9B) Err bitreich.org 70 i- (#xE5BA #x7DBA) Err bitreich.org 70 i- (#xE5BB #x7DAE) Err bitreich.org 70 i- (#xE5BC #x7DA3) Err bitreich.org 70 i- (#xE5BD #x7DB5) Err bitreich.org 70 i- (#xE5BE #x7DC7) Err bitreich.org 70 i- (#xE5BF #x7DBD) Err bitreich.org 70 i- (#xE5C0 #x7DAB) Err bitreich.org 70 i- (#xE5C1 #x7E3D) Err bitreich.org 70 i- (#xE5C2 #x7DA2) Err bitreich.org 70 i- (#xE5C3 #x7DAF) Err bitreich.org 70 i- (#xE5C4 #x7DDC) Err bitreich.org 70 i- (#xE5C5 #x7DB8) Err bitreich.org 70 i- (#xE5C6 #x7D9F) Err bitreich.org 70 i- (#xE5C7 #x7DB0) Err bitreich.org 70 i- (#xE5C8 #x7DD8) Err bitreich.org 70 i- (#xE5C9 #x7DDD) Err bitreich.org 70 i- (#xE5CA #x7DE4) Err bitreich.org 70 i- (#xE5CB #x7DDE) Err bitreich.org 70 i- (#xE5CC #x7DFB) Err bitreich.org 70 i- (#xE5CD #x7DF2) Err bitreich.org 70 i- (#xE5CE #x7DE1) Err bitreich.org 70 i- (#xE5CF #x7E05) Err bitreich.org 70 i- (#xE5D0 #x7E0A) Err bitreich.org 70 i- (#xE5D1 #x7E23) Err bitreich.org 70 i- (#xE5D2 #x7E21) Err bitreich.org 70 i- (#xE5D3 #x7E12) Err bitreich.org 70 i- (#xE5D4 #x7E31) Err bitreich.org 70 i- (#xE5D5 #x7E1F) Err bitreich.org 70 i- (#xE5D6 #x7E09) Err bitreich.org 70 i- (#xE5D7 #x7E0B) Err bitreich.org 70 i- (#xE5D8 #x7E22) Err bitreich.org 70 i- (#xE5D9 #x7E46) Err bitreich.org 70 i- (#xE5DA #x7E66) Err bitreich.org 70 i- (#xE5DB #x7E3B) Err bitreich.org 70 i- (#xE5DC #x7E35) Err bitreich.org 70 i- (#xE5DD #x7E39) Err bitreich.org 70 i- (#xE5DE #x7E43) Err bitreich.org 70 i- (#xE5DF #x7E37) Err bitreich.org 70 i- (#xE5E0 #x7E32) Err bitreich.org 70 i- (#xE5E1 #x7E3A) Err bitreich.org 70 i- (#xE5E2 #x7E67) Err bitreich.org 70 i- (#xE5E3 #x7E5D) Err bitreich.org 70 i- (#xE5E4 #x7E56) Err bitreich.org 70 i- (#xE5E5 #x7E5E) Err bitreich.org 70 i- (#xE5E6 #x7E59) Err bitreich.org 70 i- (#xE5E7 #x7E5A) Err bitreich.org 70 i- (#xE5E8 #x7E79) Err bitreich.org 70 i- (#xE5E9 #x7E6A) Err bitreich.org 70 i- (#xE5EA #x7E69) Err bitreich.org 70 i- (#xE5EB #x7E7C) Err bitreich.org 70 i- (#xE5EC #x7E7B) Err bitreich.org 70 i- (#xE5ED #x7E83) Err bitreich.org 70 i- (#xE5EE #x7DD5) Err bitreich.org 70 i- (#xE5EF #x7E7D) Err bitreich.org 70 i- (#xE5F0 #x8FAE) Err bitreich.org 70 i- (#xE5F1 #x7E7F) Err bitreich.org 70 i- (#xE5F2 #x7E88) Err bitreich.org 70 i- (#xE5F3 #x7E89) Err bitreich.org 70 i- (#xE5F4 #x7E8C) Err bitreich.org 70 i- (#xE5F5 #x7E92) Err bitreich.org 70 i- (#xE5F6 #x7E90) Err bitreich.org 70 i- (#xE5F7 #x7E93) Err bitreich.org 70 i- (#xE5F8 #x7E94) Err bitreich.org 70 i- (#xE5F9 #x7E96) Err bitreich.org 70 i- (#xE5FA #x7E8E) Err bitreich.org 70 i- (#xE5FB #x7E9B) Err bitreich.org 70 i- (#xE5FC #x7E9C) Err bitreich.org 70 i- (#xE5FD #x7F38) Err bitreich.org 70 i- (#xE5FE #x7F3A) Err bitreich.org 70 i- (#xE6A1 #x7F45) Err bitreich.org 70 i- (#xE6A2 #x7F4C) Err bitreich.org 70 i- (#xE6A3 #x7F4D) Err bitreich.org 70 i- (#xE6A4 #x7F4E) Err bitreich.org 70 i- (#xE6A5 #x7F50) Err bitreich.org 70 i- (#xE6A6 #x7F51) Err bitreich.org 70 i- (#xE6A7 #x7F55) Err bitreich.org 70 i- (#xE6A8 #x7F54) Err bitreich.org 70 i- (#xE6A9 #x7F58) Err bitreich.org 70 i- (#xE6AA #x7F5F) Err bitreich.org 70 i- (#xE6AB #x7F60) Err bitreich.org 70 i- (#xE6AC #x7F68) Err bitreich.org 70 i- (#xE6AD #x7F69) Err bitreich.org 70 i- (#xE6AE #x7F67) Err bitreich.org 70 i- (#xE6AF #x7F78) Err bitreich.org 70 i- (#xE6B0 #x7F82) Err bitreich.org 70 i- (#xE6B1 #x7F86) Err bitreich.org 70 i- (#xE6B2 #x7F83) Err bitreich.org 70 i- (#xE6B3 #x7F88) Err bitreich.org 70 i- (#xE6B4 #x7F87) Err bitreich.org 70 i- (#xE6B5 #x7F8C) Err bitreich.org 70 i- (#xE6B6 #x7F94) Err bitreich.org 70 i- (#xE6B7 #x7F9E) Err bitreich.org 70 i- (#xE6B8 #x7F9D) Err bitreich.org 70 i- (#xE6B9 #x7F9A) Err bitreich.org 70 i- (#xE6BA #x7FA3) Err bitreich.org 70 i- (#xE6BB #x7FAF) Err bitreich.org 70 i- (#xE6BC #x7FB2) Err bitreich.org 70 i- (#xE6BD #x7FB9) Err bitreich.org 70 i- (#xE6BE #x7FAE) Err bitreich.org 70 i- (#xE6BF #x7FB6) Err bitreich.org 70 i- (#xE6C0 #x7FB8) Err bitreich.org 70 i- (#xE6C1 #x8B71) Err bitreich.org 70 i- (#xE6C2 #x7FC5) Err bitreich.org 70 i- (#xE6C3 #x7FC6) Err bitreich.org 70 i- (#xE6C4 #x7FCA) Err bitreich.org 70 i- (#xE6C5 #x7FD5) Err bitreich.org 70 i- (#xE6C6 #x7FD4) Err bitreich.org 70 i- (#xE6C7 #x7FE1) Err bitreich.org 70 i- (#xE6C8 #x7FE6) Err bitreich.org 70 i- (#xE6C9 #x7FE9) Err bitreich.org 70 i- (#xE6CA #x7FF3) Err bitreich.org 70 i- (#xE6CB #x7FF9) Err bitreich.org 70 i- (#xE6CC #x98DC) Err bitreich.org 70 i- (#xE6CD #x8006) Err bitreich.org 70 i- (#xE6CE #x8004) Err bitreich.org 70 i- (#xE6CF #x800B) Err bitreich.org 70 i- (#xE6D0 #x8012) Err bitreich.org 70 i- (#xE6D1 #x8018) Err bitreich.org 70 i- (#xE6D2 #x8019) Err bitreich.org 70 i- (#xE6D3 #x801C) Err bitreich.org 70 i- (#xE6D4 #x8021) Err bitreich.org 70 i- (#xE6D5 #x8028) Err bitreich.org 70 i- (#xE6D6 #x803F) Err bitreich.org 70 i- (#xE6D7 #x803B) Err bitreich.org 70 i- (#xE6D8 #x804A) Err bitreich.org 70 i- (#xE6D9 #x8046) Err bitreich.org 70 i- (#xE6DA #x8052) Err bitreich.org 70 i- (#xE6DB #x8058) Err bitreich.org 70 i- (#xE6DC #x805A) Err bitreich.org 70 i- (#xE6DD #x805F) Err bitreich.org 70 i- (#xE6DE #x8062) Err bitreich.org 70 i- (#xE6DF #x8068) Err bitreich.org 70 i- (#xE6E0 #x8073) Err bitreich.org 70 i- (#xE6E1 #x8072) Err bitreich.org 70 i- (#xE6E2 #x8070) Err bitreich.org 70 i- (#xE6E3 #x8076) Err bitreich.org 70 i- (#xE6E4 #x8079) Err bitreich.org 70 i- (#xE6E5 #x807D) Err bitreich.org 70 i- (#xE6E6 #x807F) Err bitreich.org 70 i- (#xE6E7 #x8084) Err bitreich.org 70 i- (#xE6E8 #x8086) Err bitreich.org 70 i- (#xE6E9 #x8085) Err bitreich.org 70 i- (#xE6EA #x809B) Err bitreich.org 70 i- (#xE6EB #x8093) Err bitreich.org 70 i- (#xE6EC #x809A) Err bitreich.org 70 i- (#xE6ED #x80AD) Err bitreich.org 70 i- (#xE6EE #x5190) Err bitreich.org 70 i- (#xE6EF #x80AC) Err bitreich.org 70 i- (#xE6F0 #x80DB) Err bitreich.org 70 i- (#xE6F1 #x80E5) Err bitreich.org 70 i- (#xE6F2 #x80D9) Err bitreich.org 70 i- (#xE6F3 #x80DD) Err bitreich.org 70 i- (#xE6F4 #x80C4) Err bitreich.org 70 i- (#xE6F5 #x80DA) Err bitreich.org 70 i- (#xE6F6 #x80D6) Err bitreich.org 70 i- (#xE6F7 #x8109) Err bitreich.org 70 i- (#xE6F8 #x80EF) Err bitreich.org 70 i- (#xE6F9 #x80F1) Err bitreich.org 70 i- (#xE6FA #x811B) Err bitreich.org 70 i- (#xE6FB #x8129) Err bitreich.org 70 i- (#xE6FC #x8123) Err bitreich.org 70 i- (#xE6FD #x812F) Err bitreich.org 70 i- (#xE6FE #x814B) Err bitreich.org 70 i- (#xE7A1 #x968B) Err bitreich.org 70 i- (#xE7A2 #x8146) Err bitreich.org 70 i- (#xE7A3 #x813E) Err bitreich.org 70 i- (#xE7A4 #x8153) Err bitreich.org 70 i- (#xE7A5 #x8151) Err bitreich.org 70 i- (#xE7A6 #x80FC) Err bitreich.org 70 i- (#xE7A7 #x8171) Err bitreich.org 70 i- (#xE7A8 #x816E) Err bitreich.org 70 i- (#xE7A9 #x8165) Err bitreich.org 70 i- (#xE7AA #x8166) Err bitreich.org 70 i- (#xE7AB #x8174) Err bitreich.org 70 i- (#xE7AC #x8183) Err bitreich.org 70 i- (#xE7AD #x8188) Err bitreich.org 70 i- (#xE7AE #x818A) Err bitreich.org 70 i- (#xE7AF #x8180) Err bitreich.org 70 i- (#xE7B0 #x8182) Err bitreich.org 70 i- (#xE7B1 #x81A0) Err bitreich.org 70 i- (#xE7B2 #x8195) Err bitreich.org 70 i- (#xE7B3 #x81A4) Err bitreich.org 70 i- (#xE7B4 #x81A3) Err bitreich.org 70 i- (#xE7B5 #x815F) Err bitreich.org 70 i- (#xE7B6 #x8193) Err bitreich.org 70 i- (#xE7B7 #x81A9) Err bitreich.org 70 i- (#xE7B8 #x81B0) Err bitreich.org 70 i- (#xE7B9 #x81B5) Err bitreich.org 70 i- (#xE7BA #x81BE) Err bitreich.org 70 i- (#xE7BB #x81B8) Err bitreich.org 70 i- (#xE7BC #x81BD) Err bitreich.org 70 i- (#xE7BD #x81C0) Err bitreich.org 70 i- (#xE7BE #x81C2) Err bitreich.org 70 i- (#xE7BF #x81BA) Err bitreich.org 70 i- (#xE7C0 #x81C9) Err bitreich.org 70 i- (#xE7C1 #x81CD) Err bitreich.org 70 i- (#xE7C2 #x81D1) Err bitreich.org 70 i- (#xE7C3 #x81D9) Err bitreich.org 70 i- (#xE7C4 #x81D8) Err bitreich.org 70 i- (#xE7C5 #x81C8) Err bitreich.org 70 i- (#xE7C6 #x81DA) Err bitreich.org 70 i- (#xE7C7 #x81DF) Err bitreich.org 70 i- (#xE7C8 #x81E0) Err bitreich.org 70 i- (#xE7C9 #x81E7) Err bitreich.org 70 i- (#xE7CA #x81FA) Err bitreich.org 70 i- (#xE7CB #x81FB) Err bitreich.org 70 i- (#xE7CC #x81FE) Err bitreich.org 70 i- (#xE7CD #x8201) Err bitreich.org 70 i- (#xE7CE #x8202) Err bitreich.org 70 i- (#xE7CF #x8205) Err bitreich.org 70 i- (#xE7D0 #x8207) Err bitreich.org 70 i- (#xE7D1 #x820A) Err bitreich.org 70 i- (#xE7D2 #x820D) Err bitreich.org 70 i- (#xE7D3 #x8210) Err bitreich.org 70 i- (#xE7D4 #x8216) Err bitreich.org 70 i- (#xE7D5 #x8229) Err bitreich.org 70 i- (#xE7D6 #x822B) Err bitreich.org 70 i- (#xE7D7 #x8238) Err bitreich.org 70 i- (#xE7D8 #x8233) Err bitreich.org 70 i- (#xE7D9 #x8240) Err bitreich.org 70 i- (#xE7DA #x8259) Err bitreich.org 70 i- (#xE7DB #x8258) Err bitreich.org 70 i- (#xE7DC #x825D) Err bitreich.org 70 i- (#xE7DD #x825A) Err bitreich.org 70 i- (#xE7DE #x825F) Err bitreich.org 70 i- (#xE7DF #x8264) Err bitreich.org 70 i- (#xE7E0 #x8262) Err bitreich.org 70 i- (#xE7E1 #x8268) Err bitreich.org 70 i- (#xE7E2 #x826A) Err bitreich.org 70 i- (#xE7E3 #x826B) Err bitreich.org 70 i- (#xE7E4 #x822E) Err bitreich.org 70 i- (#xE7E5 #x8271) Err bitreich.org 70 i- (#xE7E6 #x8277) Err bitreich.org 70 i- (#xE7E7 #x8278) Err bitreich.org 70 i- (#xE7E8 #x827E) Err bitreich.org 70 i- (#xE7E9 #x828D) Err bitreich.org 70 i- (#xE7EA #x8292) Err bitreich.org 70 i- (#xE7EB #x82AB) Err bitreich.org 70 i- (#xE7EC #x829F) Err bitreich.org 70 i- (#xE7ED #x82BB) Err bitreich.org 70 i- (#xE7EE #x82AC) Err bitreich.org 70 i- (#xE7EF #x82E1) Err bitreich.org 70 i- (#xE7F0 #x82E3) Err bitreich.org 70 i- (#xE7F1 #x82DF) Err bitreich.org 70 i- (#xE7F2 #x82D2) Err bitreich.org 70 i- (#xE7F3 #x82F4) Err bitreich.org 70 i- (#xE7F4 #x82F3) Err bitreich.org 70 i- (#xE7F5 #x82FA) Err bitreich.org 70 i- (#xE7F6 #x8393) Err bitreich.org 70 i- (#xE7F7 #x8303) Err bitreich.org 70 i- (#xE7F8 #x82FB) Err bitreich.org 70 i- (#xE7F9 #x82F9) Err bitreich.org 70 i- (#xE7FA #x82DE) Err bitreich.org 70 i- (#xE7FB #x8306) Err bitreich.org 70 i- (#xE7FC #x82DC) Err bitreich.org 70 i- (#xE7FD #x8309) Err bitreich.org 70 i- (#xE7FE #x82D9) Err bitreich.org 70 i- (#xE8A1 #x8335) Err bitreich.org 70 i- (#xE8A2 #x8334) Err bitreich.org 70 i- (#xE8A3 #x8316) Err bitreich.org 70 i- (#xE8A4 #x8332) Err bitreich.org 70 i- (#xE8A5 #x8331) Err bitreich.org 70 i- (#xE8A6 #x8340) Err bitreich.org 70 i- (#xE8A7 #x8339) Err bitreich.org 70 i- (#xE8A8 #x8350) Err bitreich.org 70 i- (#xE8A9 #x8345) Err bitreich.org 70 i- (#xE8AA #x832F) Err bitreich.org 70 i- (#xE8AB #x832B) Err bitreich.org 70 i- (#xE8AC #x8317) Err bitreich.org 70 i- (#xE8AD #x8318) Err bitreich.org 70 i- (#xE8AE #x8385) Err bitreich.org 70 i- (#xE8AF #x839A) Err bitreich.org 70 i- (#xE8B0 #x83AA) Err bitreich.org 70 i- (#xE8B1 #x839F) Err bitreich.org 70 i- (#xE8B2 #x83A2) Err bitreich.org 70 i- (#xE8B3 #x8396) Err bitreich.org 70 i- (#xE8B4 #x8323) Err bitreich.org 70 i- (#xE8B5 #x838E) Err bitreich.org 70 i- (#xE8B6 #x8387) Err bitreich.org 70 i- (#xE8B7 #x838A) Err bitreich.org 70 i- (#xE8B8 #x837C) Err bitreich.org 70 i- (#xE8B9 #x83B5) Err bitreich.org 70 i- (#xE8BA #x8373) Err bitreich.org 70 i- (#xE8BB #x8375) Err bitreich.org 70 i- (#xE8BC #x83A0) Err bitreich.org 70 i- (#xE8BD #x8389) Err bitreich.org 70 i- (#xE8BE #x83A8) Err bitreich.org 70 i- (#xE8BF #x83F4) Err bitreich.org 70 i- (#xE8C0 #x8413) Err bitreich.org 70 i- (#xE8C1 #x83EB) Err bitreich.org 70 i- (#xE8C2 #x83CE) Err bitreich.org 70 i- (#xE8C3 #x83FD) Err bitreich.org 70 i- (#xE8C4 #x8403) Err bitreich.org 70 i- (#xE8C5 #x83D8) Err bitreich.org 70 i- (#xE8C6 #x840B) Err bitreich.org 70 i- (#xE8C7 #x83C1) Err bitreich.org 70 i- (#xE8C8 #x83F7) Err bitreich.org 70 i- (#xE8C9 #x8407) Err bitreich.org 70 i- (#xE8CA #x83E0) Err bitreich.org 70 i- (#xE8CB #x83F2) Err bitreich.org 70 i- (#xE8CC #x840D) Err bitreich.org 70 i- (#xE8CD #x8422) Err bitreich.org 70 i- (#xE8CE #x8420) Err bitreich.org 70 i- (#xE8CF #x83BD) Err bitreich.org 70 i- (#xE8D0 #x8438) Err bitreich.org 70 i- (#xE8D1 #x8506) Err bitreich.org 70 i- (#xE8D2 #x83FB) Err bitreich.org 70 i- (#xE8D3 #x846D) Err bitreich.org 70 i- (#xE8D4 #x842A) Err bitreich.org 70 i- (#xE8D5 #x843C) Err bitreich.org 70 i- (#xE8D6 #x855A) Err bitreich.org 70 i- (#xE8D7 #x8484) Err bitreich.org 70 i- (#xE8D8 #x8477) Err bitreich.org 70 i- (#xE8D9 #x846B) Err bitreich.org 70 i- (#xE8DA #x84AD) Err bitreich.org 70 i- (#xE8DB #x846E) Err bitreich.org 70 i- (#xE8DC #x8482) Err bitreich.org 70 i- (#xE8DD #x8469) Err bitreich.org 70 i- (#xE8DE #x8446) Err bitreich.org 70 i- (#xE8DF #x842C) Err bitreich.org 70 i- (#xE8E0 #x846F) Err bitreich.org 70 i- (#xE8E1 #x8479) Err bitreich.org 70 i- (#xE8E2 #x8435) Err bitreich.org 70 i- (#xE8E3 #x84CA) Err bitreich.org 70 i- (#xE8E4 #x8462) Err bitreich.org 70 i- (#xE8E5 #x84B9) Err bitreich.org 70 i- (#xE8E6 #x84BF) Err bitreich.org 70 i- (#xE8E7 #x849F) Err bitreich.org 70 i- (#xE8E8 #x84D9) Err bitreich.org 70 i- (#xE8E9 #x84CD) Err bitreich.org 70 i- (#xE8EA #x84BB) Err bitreich.org 70 i- (#xE8EB #x84DA) Err bitreich.org 70 i- (#xE8EC #x84D0) Err bitreich.org 70 i- (#xE8ED #x84C1) Err bitreich.org 70 i- (#xE8EE #x84C6) Err bitreich.org 70 i- (#xE8EF #x84D6) Err bitreich.org 70 i- (#xE8F0 #x84A1) Err bitreich.org 70 i- (#xE8F1 #x8521) Err bitreich.org 70 i- (#xE8F2 #x84FF) Err bitreich.org 70 i- (#xE8F3 #x84F4) Err bitreich.org 70 i- (#xE8F4 #x8517) Err bitreich.org 70 i- (#xE8F5 #x8518) Err bitreich.org 70 i- (#xE8F6 #x852C) Err bitreich.org 70 i- (#xE8F7 #x851F) Err bitreich.org 70 i- (#xE8F8 #x8515) Err bitreich.org 70 i- (#xE8F9 #x8514) Err bitreich.org 70 i- (#xE8FA #x84FC) Err bitreich.org 70 i- (#xE8FB #x8540) Err bitreich.org 70 i- (#xE8FC #x8563) Err bitreich.org 70 i- (#xE8FD #x8558) Err bitreich.org 70 i- (#xE8FE #x8548) Err bitreich.org 70 i- (#xE9A1 #x8541) Err bitreich.org 70 i- (#xE9A2 #x8602) Err bitreich.org 70 i- (#xE9A3 #x854B) Err bitreich.org 70 i- (#xE9A4 #x8555) Err bitreich.org 70 i- (#xE9A5 #x8580) Err bitreich.org 70 i- (#xE9A6 #x85A4) Err bitreich.org 70 i- (#xE9A7 #x8588) Err bitreich.org 70 i- (#xE9A8 #x8591) Err bitreich.org 70 i- (#xE9A9 #x858A) Err bitreich.org 70 i- (#xE9AA #x85A8) Err bitreich.org 70 i- (#xE9AB #x856D) Err bitreich.org 70 i- (#xE9AC #x8594) Err bitreich.org 70 i- (#xE9AD #x859B) Err bitreich.org 70 i- (#xE9AE #x85EA) Err bitreich.org 70 i- (#xE9AF #x8587) Err bitreich.org 70 i- (#xE9B0 #x859C) Err bitreich.org 70 i- (#xE9B1 #x8577) Err bitreich.org 70 i- (#xE9B2 #x857E) Err bitreich.org 70 i- (#xE9B3 #x8590) Err bitreich.org 70 i- (#xE9B4 #x85C9) Err bitreich.org 70 i- (#xE9B5 #x85BA) Err bitreich.org 70 i- (#xE9B6 #x85CF) Err bitreich.org 70 i- (#xE9B7 #x85B9) Err bitreich.org 70 i- (#xE9B8 #x85D0) Err bitreich.org 70 i- (#xE9B9 #x85D5) Err bitreich.org 70 i- (#xE9BA #x85DD) Err bitreich.org 70 i- (#xE9BB #x85E5) Err bitreich.org 70 i- (#xE9BC #x85DC) Err bitreich.org 70 i- (#xE9BD #x85F9) Err bitreich.org 70 i- (#xE9BE #x860A) Err bitreich.org 70 i- (#xE9BF #x8613) Err bitreich.org 70 i- (#xE9C0 #x860B) Err bitreich.org 70 i- (#xE9C1 #x85FE) Err bitreich.org 70 i- (#xE9C2 #x85FA) Err bitreich.org 70 i- (#xE9C3 #x8606) Err bitreich.org 70 i- (#xE9C4 #x8622) Err bitreich.org 70 i- (#xE9C5 #x861A) Err bitreich.org 70 i- (#xE9C6 #x8630) Err bitreich.org 70 i- (#xE9C7 #x863F) Err bitreich.org 70 i- (#xE9C8 #x864D) Err bitreich.org 70 i- (#xE9C9 #x4E55) Err bitreich.org 70 i- (#xE9CA #x8654) Err bitreich.org 70 i- (#xE9CB #x865F) Err bitreich.org 70 i- (#xE9CC #x8667) Err bitreich.org 70 i- (#xE9CD #x8671) Err bitreich.org 70 i- (#xE9CE #x8693) Err bitreich.org 70 i- (#xE9CF #x86A3) Err bitreich.org 70 i- (#xE9D0 #x86A9) Err bitreich.org 70 i- (#xE9D1 #x86AA) Err bitreich.org 70 i- (#xE9D2 #x868B) Err bitreich.org 70 i- (#xE9D3 #x868C) Err bitreich.org 70 i- (#xE9D4 #x86B6) Err bitreich.org 70 i- (#xE9D5 #x86AF) Err bitreich.org 70 i- (#xE9D6 #x86C4) Err bitreich.org 70 i- (#xE9D7 #x86C6) Err bitreich.org 70 i- (#xE9D8 #x86B0) Err bitreich.org 70 i- (#xE9D9 #x86C9) Err bitreich.org 70 i- (#xE9DA #x8823) Err bitreich.org 70 i- (#xE9DB #x86AB) Err bitreich.org 70 i- (#xE9DC #x86D4) Err bitreich.org 70 i- (#xE9DD #x86DE) Err bitreich.org 70 i- (#xE9DE #x86E9) Err bitreich.org 70 i- (#xE9DF #x86EC) Err bitreich.org 70 i- (#xE9E0 #x86DF) Err bitreich.org 70 i- (#xE9E1 #x86DB) Err bitreich.org 70 i- (#xE9E2 #x86EF) Err bitreich.org 70 i- (#xE9E3 #x8712) Err bitreich.org 70 i- (#xE9E4 #x8706) Err bitreich.org 70 i- (#xE9E5 #x8708) Err bitreich.org 70 i- (#xE9E6 #x8700) Err bitreich.org 70 i- (#xE9E7 #x8703) Err bitreich.org 70 i- (#xE9E8 #x86FB) Err bitreich.org 70 i- (#xE9E9 #x8711) Err bitreich.org 70 i- (#xE9EA #x8709) Err bitreich.org 70 i- (#xE9EB #x870D) Err bitreich.org 70 i- (#xE9EC #x86F9) Err bitreich.org 70 i- (#xE9ED #x870A) Err bitreich.org 70 i- (#xE9EE #x8734) Err bitreich.org 70 i- (#xE9EF #x873F) Err bitreich.org 70 i- (#xE9F0 #x8737) Err bitreich.org 70 i- (#xE9F1 #x873B) Err bitreich.org 70 i- (#xE9F2 #x8725) Err bitreich.org 70 i- (#xE9F3 #x8729) Err bitreich.org 70 i- (#xE9F4 #x871A) Err bitreich.org 70 i- (#xE9F5 #x8760) Err bitreich.org 70 i- (#xE9F6 #x875F) Err bitreich.org 70 i- (#xE9F7 #x8778) Err bitreich.org 70 i- (#xE9F8 #x874C) Err bitreich.org 70 i- (#xE9F9 #x874E) Err bitreich.org 70 i- (#xE9FA #x8774) Err bitreich.org 70 i- (#xE9FB #x8757) Err bitreich.org 70 i- (#xE9FC #x8768) Err bitreich.org 70 i- (#xE9FD #x876E) Err bitreich.org 70 i- (#xE9FE #x8759) Err bitreich.org 70 i- (#xEAA1 #x8753) Err bitreich.org 70 i- (#xEAA2 #x8763) Err bitreich.org 70 i- (#xEAA3 #x876A) Err bitreich.org 70 i- (#xEAA4 #x8805) Err bitreich.org 70 i- (#xEAA5 #x87A2) Err bitreich.org 70 i- (#xEAA6 #x879F) Err bitreich.org 70 i- (#xEAA7 #x8782) Err bitreich.org 70 i- (#xEAA8 #x87AF) Err bitreich.org 70 i- (#xEAA9 #x87CB) Err bitreich.org 70 i- (#xEAAA #x87BD) Err bitreich.org 70 i- (#xEAAB #x87C0) Err bitreich.org 70 i- (#xEAAC #x87D0) Err bitreich.org 70 i- (#xEAAD #x96D6) Err bitreich.org 70 i- (#xEAAE #x87AB) Err bitreich.org 70 i- (#xEAAF #x87C4) Err bitreich.org 70 i- (#xEAB0 #x87B3) Err bitreich.org 70 i- (#xEAB1 #x87C7) Err bitreich.org 70 i- (#xEAB2 #x87C6) Err bitreich.org 70 i- (#xEAB3 #x87BB) Err bitreich.org 70 i- (#xEAB4 #x87EF) Err bitreich.org 70 i- (#xEAB5 #x87F2) Err bitreich.org 70 i- (#xEAB6 #x87E0) Err bitreich.org 70 i- (#xEAB7 #x880F) Err bitreich.org 70 i- (#xEAB8 #x880D) Err bitreich.org 70 i- (#xEAB9 #x87FE) Err bitreich.org 70 i- (#xEABA #x87F6) Err bitreich.org 70 i- (#xEABB #x87F7) Err bitreich.org 70 i- (#xEABC #x880E) Err bitreich.org 70 i- (#xEABD #x87D2) Err bitreich.org 70 i- (#xEABE #x8811) Err bitreich.org 70 i- (#xEABF #x8816) Err bitreich.org 70 i- (#xEAC0 #x8815) Err bitreich.org 70 i- (#xEAC1 #x8822) Err bitreich.org 70 i- (#xEAC2 #x8821) Err bitreich.org 70 i- (#xEAC3 #x8831) Err bitreich.org 70 i- (#xEAC4 #x8836) Err bitreich.org 70 i- (#xEAC5 #x8839) Err bitreich.org 70 i- (#xEAC6 #x8827) Err bitreich.org 70 i- (#xEAC7 #x883B) Err bitreich.org 70 i- (#xEAC8 #x8844) Err bitreich.org 70 i- (#xEAC9 #x8842) Err bitreich.org 70 i- (#xEACA #x8852) Err bitreich.org 70 i- (#xEACB #x8859) Err bitreich.org 70 i- (#xEACC #x885E) Err bitreich.org 70 i- (#xEACD #x8862) Err bitreich.org 70 i- (#xEACE #x886B) Err bitreich.org 70 i- (#xEACF #x8881) Err bitreich.org 70 i- (#xEAD0 #x887E) Err bitreich.org 70 i- (#xEAD1 #x889E) Err bitreich.org 70 i- (#xEAD2 #x8875) Err bitreich.org 70 i- (#xEAD3 #x887D) Err bitreich.org 70 i- (#xEAD4 #x88B5) Err bitreich.org 70 i- (#xEAD5 #x8872) Err bitreich.org 70 i- (#xEAD6 #x8882) Err bitreich.org 70 i- (#xEAD7 #x8897) Err bitreich.org 70 i- (#xEAD8 #x8892) Err bitreich.org 70 i- (#xEAD9 #x88AE) Err bitreich.org 70 i- (#xEADA #x8899) Err bitreich.org 70 i- (#xEADB #x88A2) Err bitreich.org 70 i- (#xEADC #x888D) Err bitreich.org 70 i- (#xEADD #x88A4) Err bitreich.org 70 i- (#xEADE #x88B0) Err bitreich.org 70 i- (#xEADF #x88BF) Err bitreich.org 70 i- (#xEAE0 #x88B1) Err bitreich.org 70 i- (#xEAE1 #x88C3) Err bitreich.org 70 i- (#xEAE2 #x88C4) Err bitreich.org 70 i- (#xEAE3 #x88D4) Err bitreich.org 70 i- (#xEAE4 #x88D8) Err bitreich.org 70 i- (#xEAE5 #x88D9) Err bitreich.org 70 i- (#xEAE6 #x88DD) Err bitreich.org 70 i- (#xEAE7 #x88F9) Err bitreich.org 70 i- (#xEAE8 #x8902) Err bitreich.org 70 i- (#xEAE9 #x88FC) Err bitreich.org 70 i- (#xEAEA #x88F4) Err bitreich.org 70 i- (#xEAEB #x88E8) Err bitreich.org 70 i- (#xEAEC #x88F2) Err bitreich.org 70 i- (#xEAED #x8904) Err bitreich.org 70 i- (#xEAEE #x890C) Err bitreich.org 70 i- (#xEAEF #x890A) Err bitreich.org 70 i- (#xEAF0 #x8913) Err bitreich.org 70 i- (#xEAF1 #x8943) Err bitreich.org 70 i- (#xEAF2 #x891E) Err bitreich.org 70 i- (#xEAF3 #x8925) Err bitreich.org 70 i- (#xEAF4 #x892A) Err bitreich.org 70 i- (#xEAF5 #x892B) Err bitreich.org 70 i- (#xEAF6 #x8941) Err bitreich.org 70 i- (#xEAF7 #x8944) Err bitreich.org 70 i- (#xEAF8 #x893B) Err bitreich.org 70 i- (#xEAF9 #x8936) Err bitreich.org 70 i- (#xEAFA #x8938) Err bitreich.org 70 i- (#xEAFB #x894C) Err bitreich.org 70 i- (#xEAFC #x891D) Err bitreich.org 70 i- (#xEAFD #x8960) Err bitreich.org 70 i- (#xEAFE #x895E) Err bitreich.org 70 i- (#xEBA1 #x8966) Err bitreich.org 70 i- (#xEBA2 #x8964) Err bitreich.org 70 i- (#xEBA3 #x896D) Err bitreich.org 70 i- (#xEBA4 #x896A) Err bitreich.org 70 i- (#xEBA5 #x896F) Err bitreich.org 70 i- (#xEBA6 #x8974) Err bitreich.org 70 i- (#xEBA7 #x8977) Err bitreich.org 70 i- (#xEBA8 #x897E) Err bitreich.org 70 i- (#xEBA9 #x8983) Err bitreich.org 70 i- (#xEBAA #x8988) Err bitreich.org 70 i- (#xEBAB #x898A) Err bitreich.org 70 i- (#xEBAC #x8993) Err bitreich.org 70 i- (#xEBAD #x8998) Err bitreich.org 70 i- (#xEBAE #x89A1) Err bitreich.org 70 i- (#xEBAF #x89A9) Err bitreich.org 70 i- (#xEBB0 #x89A6) Err bitreich.org 70 i- (#xEBB1 #x89AC) Err bitreich.org 70 i- (#xEBB2 #x89AF) Err bitreich.org 70 i- (#xEBB3 #x89B2) Err bitreich.org 70 i- (#xEBB4 #x89BA) Err bitreich.org 70 i- (#xEBB5 #x89BD) Err bitreich.org 70 i- (#xEBB6 #x89BF) Err bitreich.org 70 i- (#xEBB7 #x89C0) Err bitreich.org 70 i- (#xEBB8 #x89DA) Err bitreich.org 70 i- (#xEBB9 #x89DC) Err bitreich.org 70 i- (#xEBBA #x89DD) Err bitreich.org 70 i- (#xEBBB #x89E7) Err bitreich.org 70 i- (#xEBBC #x89F4) Err bitreich.org 70 i- (#xEBBD #x89F8) Err bitreich.org 70 i- (#xEBBE #x8A03) Err bitreich.org 70 i- (#xEBBF #x8A16) Err bitreich.org 70 i- (#xEBC0 #x8A10) Err bitreich.org 70 i- (#xEBC1 #x8A0C) Err bitreich.org 70 i- (#xEBC2 #x8A1B) Err bitreich.org 70 i- (#xEBC3 #x8A1D) Err bitreich.org 70 i- (#xEBC4 #x8A25) Err bitreich.org 70 i- (#xEBC5 #x8A36) Err bitreich.org 70 i- (#xEBC6 #x8A41) Err bitreich.org 70 i- (#xEBC7 #x8A5B) Err bitreich.org 70 i- (#xEBC8 #x8A52) Err bitreich.org 70 i- (#xEBC9 #x8A46) Err bitreich.org 70 i- (#xEBCA #x8A48) Err bitreich.org 70 i- (#xEBCB #x8A7C) Err bitreich.org 70 i- (#xEBCC #x8A6D) Err bitreich.org 70 i- (#xEBCD #x8A6C) Err bitreich.org 70 i- (#xEBCE #x8A62) Err bitreich.org 70 i- (#xEBCF #x8A85) Err bitreich.org 70 i- (#xEBD0 #x8A82) Err bitreich.org 70 i- (#xEBD1 #x8A84) Err bitreich.org 70 i- (#xEBD2 #x8AA8) Err bitreich.org 70 i- (#xEBD3 #x8AA1) Err bitreich.org 70 i- (#xEBD4 #x8A91) Err bitreich.org 70 i- (#xEBD5 #x8AA5) Err bitreich.org 70 i- (#xEBD6 #x8AA6) Err bitreich.org 70 i- (#xEBD7 #x8A9A) Err bitreich.org 70 i- (#xEBD8 #x8AA3) Err bitreich.org 70 i- (#xEBD9 #x8AC4) Err bitreich.org 70 i- (#xEBDA #x8ACD) Err bitreich.org 70 i- (#xEBDB #x8AC2) Err bitreich.org 70 i- (#xEBDC #x8ADA) Err bitreich.org 70 i- (#xEBDD #x8AEB) Err bitreich.org 70 i- (#xEBDE #x8AF3) Err bitreich.org 70 i- (#xEBDF #x8AE7) Err bitreich.org 70 i- (#xEBE0 #x8AE4) Err bitreich.org 70 i- (#xEBE1 #x8AF1) Err bitreich.org 70 i- (#xEBE2 #x8B14) Err bitreich.org 70 i- (#xEBE3 #x8AE0) Err bitreich.org 70 i- (#xEBE4 #x8AE2) Err bitreich.org 70 i- (#xEBE5 #x8AF7) Err bitreich.org 70 i- (#xEBE6 #x8ADE) Err bitreich.org 70 i- (#xEBE7 #x8ADB) Err bitreich.org 70 i- (#xEBE8 #x8B0C) Err bitreich.org 70 i- (#xEBE9 #x8B07) Err bitreich.org 70 i- (#xEBEA #x8B1A) Err bitreich.org 70 i- (#xEBEB #x8AE1) Err bitreich.org 70 i- (#xEBEC #x8B16) Err bitreich.org 70 i- (#xEBED #x8B10) Err bitreich.org 70 i- (#xEBEE #x8B17) Err bitreich.org 70 i- (#xEBEF #x8B20) Err bitreich.org 70 i- (#xEBF0 #x8B33) Err bitreich.org 70 i- (#xEBF1 #x97AB) Err bitreich.org 70 i- (#xEBF2 #x8B26) Err bitreich.org 70 i- (#xEBF3 #x8B2B) Err bitreich.org 70 i- (#xEBF4 #x8B3E) Err bitreich.org 70 i- (#xEBF5 #x8B28) Err bitreich.org 70 i- (#xEBF6 #x8B41) Err bitreich.org 70 i- (#xEBF7 #x8B4C) Err bitreich.org 70 i- (#xEBF8 #x8B4F) Err bitreich.org 70 i- (#xEBF9 #x8B4E) Err bitreich.org 70 i- (#xEBFA #x8B49) Err bitreich.org 70 i- (#xEBFB #x8B56) Err bitreich.org 70 i- (#xEBFC #x8B5B) Err bitreich.org 70 i- (#xEBFD #x8B5A) Err bitreich.org 70 i- (#xEBFE #x8B6B) Err bitreich.org 70 i- (#xECA1 #x8B5F) Err bitreich.org 70 i- (#xECA2 #x8B6C) Err bitreich.org 70 i- (#xECA3 #x8B6F) Err bitreich.org 70 i- (#xECA4 #x8B74) Err bitreich.org 70 i- (#xECA5 #x8B7D) Err bitreich.org 70 i- (#xECA6 #x8B80) Err bitreich.org 70 i- (#xECA7 #x8B8C) Err bitreich.org 70 i- (#xECA8 #x8B8E) Err bitreich.org 70 i- (#xECA9 #x8B92) Err bitreich.org 70 i- (#xECAA #x8B93) Err bitreich.org 70 i- (#xECAB #x8B96) Err bitreich.org 70 i- (#xECAC #x8B99) Err bitreich.org 70 i- (#xECAD #x8B9A) Err bitreich.org 70 i- (#xECAE #x8C3A) Err bitreich.org 70 i- (#xECAF #x8C41) Err bitreich.org 70 i- (#xECB0 #x8C3F) Err bitreich.org 70 i- (#xECB1 #x8C48) Err bitreich.org 70 i- (#xECB2 #x8C4C) Err bitreich.org 70 i- (#xECB3 #x8C4E) Err bitreich.org 70 i- (#xECB4 #x8C50) Err bitreich.org 70 i- (#xECB5 #x8C55) Err bitreich.org 70 i- (#xECB6 #x8C62) Err bitreich.org 70 i- (#xECB7 #x8C6C) Err bitreich.org 70 i- (#xECB8 #x8C78) Err bitreich.org 70 i- (#xECB9 #x8C7A) Err bitreich.org 70 i- (#xECBA #x8C82) Err bitreich.org 70 i- (#xECBB #x8C89) Err bitreich.org 70 i- (#xECBC #x8C85) Err bitreich.org 70 i- (#xECBD #x8C8A) Err bitreich.org 70 i- (#xECBE #x8C8D) Err bitreich.org 70 i- (#xECBF #x8C8E) Err bitreich.org 70 i- (#xECC0 #x8C94) Err bitreich.org 70 i- (#xECC1 #x8C7C) Err bitreich.org 70 i- (#xECC2 #x8C98) Err bitreich.org 70 i- (#xECC3 #x621D) Err bitreich.org 70 i- (#xECC4 #x8CAD) Err bitreich.org 70 i- (#xECC5 #x8CAA) Err bitreich.org 70 i- (#xECC6 #x8CBD) Err bitreich.org 70 i- (#xECC7 #x8CB2) Err bitreich.org 70 i- (#xECC8 #x8CB3) Err bitreich.org 70 i- (#xECC9 #x8CAE) Err bitreich.org 70 i- (#xECCA #x8CB6) Err bitreich.org 70 i- (#xECCB #x8CC8) Err bitreich.org 70 i- (#xECCC #x8CC1) Err bitreich.org 70 i- (#xECCD #x8CE4) Err bitreich.org 70 i- (#xECCE #x8CE3) Err bitreich.org 70 i- (#xECCF #x8CDA) Err bitreich.org 70 i- (#xECD0 #x8CFD) Err bitreich.org 70 i- (#xECD1 #x8CFA) Err bitreich.org 70 i- (#xECD2 #x8CFB) Err bitreich.org 70 i- (#xECD3 #x8D04) Err bitreich.org 70 i- (#xECD4 #x8D05) Err bitreich.org 70 i- (#xECD5 #x8D0A) Err bitreich.org 70 i- (#xECD6 #x8D07) Err bitreich.org 70 i- (#xECD7 #x8D0F) Err bitreich.org 70 i- (#xECD8 #x8D0D) Err bitreich.org 70 i- (#xECD9 #x8D10) Err bitreich.org 70 i- (#xECDA #x9F4E) Err bitreich.org 70 i- (#xECDB #x8D13) Err bitreich.org 70 i- (#xECDC #x8CCD) Err bitreich.org 70 i- (#xECDD #x8D14) Err bitreich.org 70 i- (#xECDE #x8D16) Err bitreich.org 70 i- (#xECDF #x8D67) Err bitreich.org 70 i- (#xECE0 #x8D6D) Err bitreich.org 70 i- (#xECE1 #x8D71) Err bitreich.org 70 i- (#xECE2 #x8D73) Err bitreich.org 70 i- (#xECE3 #x8D81) Err bitreich.org 70 i- (#xECE4 #x8D99) Err bitreich.org 70 i- (#xECE5 #x8DC2) Err bitreich.org 70 i- (#xECE6 #x8DBE) Err bitreich.org 70 i- (#xECE7 #x8DBA) Err bitreich.org 70 i- (#xECE8 #x8DCF) Err bitreich.org 70 i- (#xECE9 #x8DDA) Err bitreich.org 70 i- (#xECEA #x8DD6) Err bitreich.org 70 i- (#xECEB #x8DCC) Err bitreich.org 70 i- (#xECEC #x8DDB) Err bitreich.org 70 i- (#xECED #x8DCB) Err bitreich.org 70 i- (#xECEE #x8DEA) Err bitreich.org 70 i- (#xECEF #x8DEB) Err bitreich.org 70 i- (#xECF0 #x8DDF) Err bitreich.org 70 i- (#xECF1 #x8DE3) Err bitreich.org 70 i- (#xECF2 #x8DFC) Err bitreich.org 70 i- (#xECF3 #x8E08) Err bitreich.org 70 i- (#xECF4 #x8E09) Err bitreich.org 70 i- (#xECF5 #x8DFF) Err bitreich.org 70 i- (#xECF6 #x8E1D) Err bitreich.org 70 i- (#xECF7 #x8E1E) Err bitreich.org 70 i- (#xECF8 #x8E10) Err bitreich.org 70 i- (#xECF9 #x8E1F) Err bitreich.org 70 i- (#xECFA #x8E42) Err bitreich.org 70 i- (#xECFB #x8E35) Err bitreich.org 70 i- (#xECFC #x8E30) Err bitreich.org 70 i- (#xECFD #x8E34) Err bitreich.org 70 i- (#xECFE #x8E4A) Err bitreich.org 70 i- (#xEDA1 #x8E47) Err bitreich.org 70 i- (#xEDA2 #x8E49) Err bitreich.org 70 i- (#xEDA3 #x8E4C) Err bitreich.org 70 i- (#xEDA4 #x8E50) Err bitreich.org 70 i- (#xEDA5 #x8E48) Err bitreich.org 70 i- (#xEDA6 #x8E59) Err bitreich.org 70 i- (#xEDA7 #x8E64) Err bitreich.org 70 i- (#xEDA8 #x8E60) Err bitreich.org 70 i- (#xEDA9 #x8E2A) Err bitreich.org 70 i- (#xEDAA #x8E63) Err bitreich.org 70 i- (#xEDAB #x8E55) Err bitreich.org 70 i- (#xEDAC #x8E76) Err bitreich.org 70 i- (#xEDAD #x8E72) Err bitreich.org 70 i- (#xEDAE #x8E7C) Err bitreich.org 70 i- (#xEDAF #x8E81) Err bitreich.org 70 i- (#xEDB0 #x8E87) Err bitreich.org 70 i- (#xEDB1 #x8E85) Err bitreich.org 70 i- (#xEDB2 #x8E84) Err bitreich.org 70 i- (#xEDB3 #x8E8B) Err bitreich.org 70 i- (#xEDB4 #x8E8A) Err bitreich.org 70 i- (#xEDB5 #x8E93) Err bitreich.org 70 i- (#xEDB6 #x8E91) Err bitreich.org 70 i- (#xEDB7 #x8E94) Err bitreich.org 70 i- (#xEDB8 #x8E99) Err bitreich.org 70 i- (#xEDB9 #x8EAA) Err bitreich.org 70 i- (#xEDBA #x8EA1) Err bitreich.org 70 i- (#xEDBB #x8EAC) Err bitreich.org 70 i- (#xEDBC #x8EB0) Err bitreich.org 70 i- (#xEDBD #x8EC6) Err bitreich.org 70 i- (#xEDBE #x8EB1) Err bitreich.org 70 i- (#xEDBF #x8EBE) Err bitreich.org 70 i- (#xEDC0 #x8EC5) Err bitreich.org 70 i- (#xEDC1 #x8EC8) Err bitreich.org 70 i- (#xEDC2 #x8ECB) Err bitreich.org 70 i- (#xEDC3 #x8EDB) Err bitreich.org 70 i- (#xEDC4 #x8EE3) Err bitreich.org 70 i- (#xEDC5 #x8EFC) Err bitreich.org 70 i- (#xEDC6 #x8EFB) Err bitreich.org 70 i- (#xEDC7 #x8EEB) Err bitreich.org 70 i- (#xEDC8 #x8EFE) Err bitreich.org 70 i- (#xEDC9 #x8F0A) Err bitreich.org 70 i- (#xEDCA #x8F05) Err bitreich.org 70 i- (#xEDCB #x8F15) Err bitreich.org 70 i- (#xEDCC #x8F12) Err bitreich.org 70 i- (#xEDCD #x8F19) Err bitreich.org 70 i- (#xEDCE #x8F13) Err bitreich.org 70 i- (#xEDCF #x8F1C) Err bitreich.org 70 i- (#xEDD0 #x8F1F) Err bitreich.org 70 i- (#xEDD1 #x8F1B) Err bitreich.org 70 i- (#xEDD2 #x8F0C) Err bitreich.org 70 i- (#xEDD3 #x8F26) Err bitreich.org 70 i- (#xEDD4 #x8F33) Err bitreich.org 70 i- (#xEDD5 #x8F3B) Err bitreich.org 70 i- (#xEDD6 #x8F39) Err bitreich.org 70 i- (#xEDD7 #x8F45) Err bitreich.org 70 i- (#xEDD8 #x8F42) Err bitreich.org 70 i- (#xEDD9 #x8F3E) Err bitreich.org 70 i- (#xEDDA #x8F4C) Err bitreich.org 70 i- (#xEDDB #x8F49) Err bitreich.org 70 i- (#xEDDC #x8F46) Err bitreich.org 70 i- (#xEDDD #x8F4E) Err bitreich.org 70 i- (#xEDDE #x8F57) Err bitreich.org 70 i- (#xEDDF #x8F5C) Err bitreich.org 70 i- (#xEDE0 #x8F62) Err bitreich.org 70 i- (#xEDE1 #x8F63) Err bitreich.org 70 i- (#xEDE2 #x8F64) Err bitreich.org 70 i- (#xEDE3 #x8F9C) Err bitreich.org 70 i- (#xEDE4 #x8F9F) Err bitreich.org 70 i- (#xEDE5 #x8FA3) Err bitreich.org 70 i- (#xEDE6 #x8FAD) Err bitreich.org 70 i- (#xEDE7 #x8FAF) Err bitreich.org 70 i- (#xEDE8 #x8FB7) Err bitreich.org 70 i- (#xEDE9 #x8FDA) Err bitreich.org 70 i- (#xEDEA #x8FE5) Err bitreich.org 70 i- (#xEDEB #x8FE2) Err bitreich.org 70 i- (#xEDEC #x8FEA) Err bitreich.org 70 i- (#xEDED #x8FEF) Err bitreich.org 70 i- (#xEDEE #x9087) Err bitreich.org 70 i- (#xEDEF #x8FF4) Err bitreich.org 70 i- (#xEDF0 #x9005) Err bitreich.org 70 i- (#xEDF1 #x8FF9) Err bitreich.org 70 i- (#xEDF2 #x8FFA) Err bitreich.org 70 i- (#xEDF3 #x9011) Err bitreich.org 70 i- (#xEDF4 #x9015) Err bitreich.org 70 i- (#xEDF5 #x9021) Err bitreich.org 70 i- (#xEDF6 #x900D) Err bitreich.org 70 i- (#xEDF7 #x901E) Err bitreich.org 70 i- (#xEDF8 #x9016) Err bitreich.org 70 i- (#xEDF9 #x900B) Err bitreich.org 70 i- (#xEDFA #x9027) Err bitreich.org 70 i- (#xEDFB #x9036) Err bitreich.org 70 i- (#xEDFC #x9035) Err bitreich.org 70 i- (#xEDFD #x9039) Err bitreich.org 70 i- (#xEDFE #x8FF8) Err bitreich.org 70 i- (#xEEA1 #x904F) Err bitreich.org 70 i- (#xEEA2 #x9050) Err bitreich.org 70 i- (#xEEA3 #x9051) Err bitreich.org 70 i- (#xEEA4 #x9052) Err bitreich.org 70 i- (#xEEA5 #x900E) Err bitreich.org 70 i- (#xEEA6 #x9049) Err bitreich.org 70 i- (#xEEA7 #x903E) Err bitreich.org 70 i- (#xEEA8 #x9056) Err bitreich.org 70 i- (#xEEA9 #x9058) Err bitreich.org 70 i- (#xEEAA #x905E) Err bitreich.org 70 i- (#xEEAB #x9068) Err bitreich.org 70 i- (#xEEAC #x906F) Err bitreich.org 70 i- (#xEEAD #x9076) Err bitreich.org 70 i- (#xEEAE #x96A8) Err bitreich.org 70 i- (#xEEAF #x9072) Err bitreich.org 70 i- (#xEEB0 #x9082) Err bitreich.org 70 i- (#xEEB1 #x907D) Err bitreich.org 70 i- (#xEEB2 #x9081) Err bitreich.org 70 i- (#xEEB3 #x9080) Err bitreich.org 70 i- (#xEEB4 #x908A) Err bitreich.org 70 i- (#xEEB5 #x9089) Err bitreich.org 70 i- (#xEEB6 #x908F) Err bitreich.org 70 i- (#xEEB7 #x90A8) Err bitreich.org 70 i- (#xEEB8 #x90AF) Err bitreich.org 70 i- (#xEEB9 #x90B1) Err bitreich.org 70 i- (#xEEBA #x90B5) Err bitreich.org 70 i- (#xEEBB #x90E2) Err bitreich.org 70 i- (#xEEBC #x90E4) Err bitreich.org 70 i- (#xEEBD #x6248) Err bitreich.org 70 i- (#xEEBE #x90DB) Err bitreich.org 70 i- (#xEEBF #x9102) Err bitreich.org 70 i- (#xEEC0 #x9112) Err bitreich.org 70 i- (#xEEC1 #x9119) Err bitreich.org 70 i- (#xEEC2 #x9132) Err bitreich.org 70 i- (#xEEC3 #x9130) Err bitreich.org 70 i- (#xEEC4 #x914A) Err bitreich.org 70 i- (#xEEC5 #x9156) Err bitreich.org 70 i- (#xEEC6 #x9158) Err bitreich.org 70 i- (#xEEC7 #x9163) Err bitreich.org 70 i- (#xEEC8 #x9165) Err bitreich.org 70 i- (#xEEC9 #x9169) Err bitreich.org 70 i- (#xEECA #x9173) Err bitreich.org 70 i- (#xEECB #x9172) Err bitreich.org 70 i- (#xEECC #x918B) Err bitreich.org 70 i- (#xEECD #x9189) Err bitreich.org 70 i- (#xEECE #x9182) Err bitreich.org 70 i- (#xEECF #x91A2) Err bitreich.org 70 i- (#xEED0 #x91AB) Err bitreich.org 70 i- (#xEED1 #x91AF) Err bitreich.org 70 i- (#xEED2 #x91AA) Err bitreich.org 70 i- (#xEED3 #x91B5) Err bitreich.org 70 i- (#xEED4 #x91B4) Err bitreich.org 70 i- (#xEED5 #x91BA) Err bitreich.org 70 i- (#xEED6 #x91C0) Err bitreich.org 70 i- (#xEED7 #x91C1) Err bitreich.org 70 i- (#xEED8 #x91C9) Err bitreich.org 70 i- (#xEED9 #x91CB) Err bitreich.org 70 i- (#xEEDA #x91D0) Err bitreich.org 70 i- (#xEEDB #x91D6) Err bitreich.org 70 i- (#xEEDC #x91DF) Err bitreich.org 70 i- (#xEEDD #x91E1) Err bitreich.org 70 i- (#xEEDE #x91DB) Err bitreich.org 70 i- (#xEEDF #x91FC) Err bitreich.org 70 i- (#xEEE0 #x91F5) Err bitreich.org 70 i- (#xEEE1 #x91F6) Err bitreich.org 70 i- (#xEEE2 #x921E) Err bitreich.org 70 i- (#xEEE3 #x91FF) Err bitreich.org 70 i- (#xEEE4 #x9214) Err bitreich.org 70 i- (#xEEE5 #x922C) Err bitreich.org 70 i- (#xEEE6 #x9215) Err bitreich.org 70 i- (#xEEE7 #x9211) Err bitreich.org 70 i- (#xEEE8 #x925E) Err bitreich.org 70 i- (#xEEE9 #x9257) Err bitreich.org 70 i- (#xEEEA #x9245) Err bitreich.org 70 i- (#xEEEB #x9249) Err bitreich.org 70 i- (#xEEEC #x9264) Err bitreich.org 70 i- (#xEEED #x9248) Err bitreich.org 70 i- (#xEEEE #x9295) Err bitreich.org 70 i- (#xEEEF #x923F) Err bitreich.org 70 i- (#xEEF0 #x924B) Err bitreich.org 70 i- (#xEEF1 #x9250) Err bitreich.org 70 i- (#xEEF2 #x929C) Err bitreich.org 70 i- (#xEEF3 #x9296) Err bitreich.org 70 i- (#xEEF4 #x9293) Err bitreich.org 70 i- (#xEEF5 #x929B) Err bitreich.org 70 i- (#xEEF6 #x925A) Err bitreich.org 70 i- (#xEEF7 #x92CF) Err bitreich.org 70 i- (#xEEF8 #x92B9) Err bitreich.org 70 i- (#xEEF9 #x92B7) Err bitreich.org 70 i- (#xEEFA #x92E9) Err bitreich.org 70 i- (#xEEFB #x930F) Err bitreich.org 70 i- (#xEEFC #x92FA) Err bitreich.org 70 i- (#xEEFD #x9344) Err bitreich.org 70 i- (#xEEFE #x932E) Err bitreich.org 70 i- (#xEFA1 #x9319) Err bitreich.org 70 i- (#xEFA2 #x9322) Err bitreich.org 70 i- (#xEFA3 #x931A) Err bitreich.org 70 i- (#xEFA4 #x9323) Err bitreich.org 70 i- (#xEFA5 #x933A) Err bitreich.org 70 i- (#xEFA6 #x9335) Err bitreich.org 70 i- (#xEFA7 #x933B) Err bitreich.org 70 i- (#xEFA8 #x935C) Err bitreich.org 70 i- (#xEFA9 #x9360) Err bitreich.org 70 i- (#xEFAA #x937C) Err bitreich.org 70 i- (#xEFAB #x936E) Err bitreich.org 70 i- (#xEFAC #x9356) Err bitreich.org 70 i- (#xEFAD #x93B0) Err bitreich.org 70 i- (#xEFAE #x93AC) Err bitreich.org 70 i- (#xEFAF #x93AD) Err bitreich.org 70 i- (#xEFB0 #x9394) Err bitreich.org 70 i- (#xEFB1 #x93B9) Err bitreich.org 70 i- (#xEFB2 #x93D6) Err bitreich.org 70 i- (#xEFB3 #x93D7) Err bitreich.org 70 i- (#xEFB4 #x93E8) Err bitreich.org 70 i- (#xEFB5 #x93E5) Err bitreich.org 70 i- (#xEFB6 #x93D8) Err bitreich.org 70 i- (#xEFB7 #x93C3) Err bitreich.org 70 i- (#xEFB8 #x93DD) Err bitreich.org 70 i- (#xEFB9 #x93D0) Err bitreich.org 70 i- (#xEFBA #x93C8) Err bitreich.org 70 i- (#xEFBB #x93E4) Err bitreich.org 70 i- (#xEFBC #x941A) Err bitreich.org 70 i- (#xEFBD #x9414) Err bitreich.org 70 i- (#xEFBE #x9413) Err bitreich.org 70 i- (#xEFBF #x9403) Err bitreich.org 70 i- (#xEFC0 #x9407) Err bitreich.org 70 i- (#xEFC1 #x9410) Err bitreich.org 70 i- (#xEFC2 #x9436) Err bitreich.org 70 i- (#xEFC3 #x942B) Err bitreich.org 70 i- (#xEFC4 #x9435) Err bitreich.org 70 i- (#xEFC5 #x9421) Err bitreich.org 70 i- (#xEFC6 #x943A) Err bitreich.org 70 i- (#xEFC7 #x9441) Err bitreich.org 70 i- (#xEFC8 #x9452) Err bitreich.org 70 i- (#xEFC9 #x9444) Err bitreich.org 70 i- (#xEFCA #x945B) Err bitreich.org 70 i- (#xEFCB #x9460) Err bitreich.org 70 i- (#xEFCC #x9462) Err bitreich.org 70 i- (#xEFCD #x945E) Err bitreich.org 70 i- (#xEFCE #x946A) Err bitreich.org 70 i- (#xEFCF #x9229) Err bitreich.org 70 i- (#xEFD0 #x9470) Err bitreich.org 70 i- (#xEFD1 #x9475) Err bitreich.org 70 i- (#xEFD2 #x9477) Err bitreich.org 70 i- (#xEFD3 #x947D) Err bitreich.org 70 i- (#xEFD4 #x945A) Err bitreich.org 70 i- (#xEFD5 #x947C) Err bitreich.org 70 i- (#xEFD6 #x947E) Err bitreich.org 70 i- (#xEFD7 #x9481) Err bitreich.org 70 i- (#xEFD8 #x947F) Err bitreich.org 70 i- (#xEFD9 #x9582) Err bitreich.org 70 i- (#xEFDA #x9587) Err bitreich.org 70 i- (#xEFDB #x958A) Err bitreich.org 70 i- (#xEFDC #x9594) Err bitreich.org 70 i- (#xEFDD #x9596) Err bitreich.org 70 i- (#xEFDE #x9598) Err bitreich.org 70 i- (#xEFDF #x9599) Err bitreich.org 70 i- (#xEFE0 #x95A0) Err bitreich.org 70 i- (#xEFE1 #x95A8) Err bitreich.org 70 i- (#xEFE2 #x95A7) Err bitreich.org 70 i- (#xEFE3 #x95AD) Err bitreich.org 70 i- (#xEFE4 #x95BC) Err bitreich.org 70 i- (#xEFE5 #x95BB) Err bitreich.org 70 i- (#xEFE6 #x95B9) Err bitreich.org 70 i- (#xEFE7 #x95BE) Err bitreich.org 70 i- (#xEFE8 #x95CA) Err bitreich.org 70 i- (#xEFE9 #x6FF6) Err bitreich.org 70 i- (#xEFEA #x95C3) Err bitreich.org 70 i- (#xEFEB #x95CD) Err bitreich.org 70 i- (#xEFEC #x95CC) Err bitreich.org 70 i- (#xEFED #x95D5) Err bitreich.org 70 i- (#xEFEE #x95D4) Err bitreich.org 70 i- (#xEFEF #x95D6) Err bitreich.org 70 i- (#xEFF0 #x95DC) Err bitreich.org 70 i- (#xEFF1 #x95E1) Err bitreich.org 70 i- (#xEFF2 #x95E5) Err bitreich.org 70 i- (#xEFF3 #x95E2) Err bitreich.org 70 i- (#xEFF4 #x9621) Err bitreich.org 70 i- (#xEFF5 #x9628) Err bitreich.org 70 i- (#xEFF6 #x962E) Err bitreich.org 70 i- (#xEFF7 #x962F) Err bitreich.org 70 i- (#xEFF8 #x9642) Err bitreich.org 70 i- (#xEFF9 #x964C) Err bitreich.org 70 i- (#xEFFA #x964F) Err bitreich.org 70 i- (#xEFFB #x964B) Err bitreich.org 70 i- (#xEFFC #x9677) Err bitreich.org 70 i- (#xEFFD #x965C) Err bitreich.org 70 i- (#xEFFE #x965E) Err bitreich.org 70 i- (#xF0A1 #x965D) Err bitreich.org 70 i- (#xF0A2 #x965F) Err bitreich.org 70 i- (#xF0A3 #x9666) Err bitreich.org 70 i- (#xF0A4 #x9672) Err bitreich.org 70 i- (#xF0A5 #x966C) Err bitreich.org 70 i- (#xF0A6 #x968D) Err bitreich.org 70 i- (#xF0A7 #x9698) Err bitreich.org 70 i- (#xF0A8 #x9695) Err bitreich.org 70 i- (#xF0A9 #x9697) Err bitreich.org 70 i- (#xF0AA #x96AA) Err bitreich.org 70 i- (#xF0AB #x96A7) Err bitreich.org 70 i- (#xF0AC #x96B1) Err bitreich.org 70 i- (#xF0AD #x96B2) Err bitreich.org 70 i- (#xF0AE #x96B0) Err bitreich.org 70 i- (#xF0AF #x96B4) Err bitreich.org 70 i- (#xF0B0 #x96B6) Err bitreich.org 70 i- (#xF0B1 #x96B8) Err bitreich.org 70 i- (#xF0B2 #x96B9) Err bitreich.org 70 i- (#xF0B3 #x96CE) Err bitreich.org 70 i- (#xF0B4 #x96CB) Err bitreich.org 70 i- (#xF0B5 #x96C9) Err bitreich.org 70 i- (#xF0B6 #x96CD) Err bitreich.org 70 i- (#xF0B7 #x894D) Err bitreich.org 70 i- (#xF0B8 #x96DC) Err bitreich.org 70 i- (#xF0B9 #x970D) Err bitreich.org 70 i- (#xF0BA #x96D5) Err bitreich.org 70 i- (#xF0BB #x96F9) Err bitreich.org 70 i- (#xF0BC #x9704) Err bitreich.org 70 i- (#xF0BD #x9706) Err bitreich.org 70 i- (#xF0BE #x9708) Err bitreich.org 70 i- (#xF0BF #x9713) Err bitreich.org 70 i- (#xF0C0 #x970E) Err bitreich.org 70 i- (#xF0C1 #x9711) Err bitreich.org 70 i- (#xF0C2 #x970F) Err bitreich.org 70 i- (#xF0C3 #x9716) Err bitreich.org 70 i- (#xF0C4 #x9719) Err bitreich.org 70 i- (#xF0C5 #x9724) Err bitreich.org 70 i- (#xF0C6 #x972A) Err bitreich.org 70 i- (#xF0C7 #x9730) Err bitreich.org 70 i- (#xF0C8 #x9739) Err bitreich.org 70 i- (#xF0C9 #x973D) Err bitreich.org 70 i- (#xF0CA #x973E) Err bitreich.org 70 i- (#xF0CB #x9744) Err bitreich.org 70 i- (#xF0CC #x9746) Err bitreich.org 70 i- (#xF0CD #x9748) Err bitreich.org 70 i- (#xF0CE #x9742) Err bitreich.org 70 i- (#xF0CF #x9749) Err bitreich.org 70 i- (#xF0D0 #x975C) Err bitreich.org 70 i- (#xF0D1 #x9760) Err bitreich.org 70 i- (#xF0D2 #x9764) Err bitreich.org 70 i- (#xF0D3 #x9766) Err bitreich.org 70 i- (#xF0D4 #x9768) Err bitreich.org 70 i- (#xF0D5 #x52D2) Err bitreich.org 70 i- (#xF0D6 #x976B) Err bitreich.org 70 i- (#xF0D7 #x9771) Err bitreich.org 70 i- (#xF0D8 #x9779) Err bitreich.org 70 i- (#xF0D9 #x9785) Err bitreich.org 70 i- (#xF0DA #x977C) Err bitreich.org 70 i- (#xF0DB #x9781) Err bitreich.org 70 i- (#xF0DC #x977A) Err bitreich.org 70 i- (#xF0DD #x9786) Err bitreich.org 70 i- (#xF0DE #x978B) Err bitreich.org 70 i- (#xF0DF #x978F) Err bitreich.org 70 i- (#xF0E0 #x9790) Err bitreich.org 70 i- (#xF0E1 #x979C) Err bitreich.org 70 i- (#xF0E2 #x97A8) Err bitreich.org 70 i- (#xF0E3 #x97A6) Err bitreich.org 70 i- (#xF0E4 #x97A3) Err bitreich.org 70 i- (#xF0E5 #x97B3) Err bitreich.org 70 i- (#xF0E6 #x97B4) Err bitreich.org 70 i- (#xF0E7 #x97C3) Err bitreich.org 70 i- (#xF0E8 #x97C6) Err bitreich.org 70 i- (#xF0E9 #x97C8) Err bitreich.org 70 i- (#xF0EA #x97CB) Err bitreich.org 70 i- (#xF0EB #x97DC) Err bitreich.org 70 i- (#xF0EC #x97ED) Err bitreich.org 70 i- (#xF0ED #x9F4F) Err bitreich.org 70 i- (#xF0EE #x97F2) Err bitreich.org 70 i- (#xF0EF #x7ADF) Err bitreich.org 70 i- (#xF0F0 #x97F6) Err bitreich.org 70 i- (#xF0F1 #x97F5) Err bitreich.org 70 i- (#xF0F2 #x980F) Err bitreich.org 70 i- (#xF0F3 #x980C) Err bitreich.org 70 i- (#xF0F4 #x9838) Err bitreich.org 70 i- (#xF0F5 #x9824) Err bitreich.org 70 i- (#xF0F6 #x9821) Err bitreich.org 70 i- (#xF0F7 #x9837) Err bitreich.org 70 i- (#xF0F8 #x983D) Err bitreich.org 70 i- (#xF0F9 #x9846) Err bitreich.org 70 i- (#xF0FA #x984F) Err bitreich.org 70 i- (#xF0FB #x984B) Err bitreich.org 70 i- (#xF0FC #x986B) Err bitreich.org 70 i- (#xF0FD #x986F) Err bitreich.org 70 i- (#xF0FE #x9870) Err bitreich.org 70 i- (#xF1A1 #x9871) Err bitreich.org 70 i- (#xF1A2 #x9874) Err bitreich.org 70 i- (#xF1A3 #x9873) Err bitreich.org 70 i- (#xF1A4 #x98AA) Err bitreich.org 70 i- (#xF1A5 #x98AF) Err bitreich.org 70 i- (#xF1A6 #x98B1) Err bitreich.org 70 i- (#xF1A7 #x98B6) Err bitreich.org 70 i- (#xF1A8 #x98C4) Err bitreich.org 70 i- (#xF1A9 #x98C3) Err bitreich.org 70 i- (#xF1AA #x98C6) Err bitreich.org 70 i- (#xF1AB #x98E9) Err bitreich.org 70 i- (#xF1AC #x98EB) Err bitreich.org 70 i- (#xF1AD #x9903) Err bitreich.org 70 i- (#xF1AE #x9909) Err bitreich.org 70 i- (#xF1AF #x9912) Err bitreich.org 70 i- (#xF1B0 #x9914) Err bitreich.org 70 i- (#xF1B1 #x9918) Err bitreich.org 70 i- (#xF1B2 #x9921) Err bitreich.org 70 i- (#xF1B3 #x991D) Err bitreich.org 70 i- (#xF1B4 #x991E) Err bitreich.org 70 i- (#xF1B5 #x9924) Err bitreich.org 70 i- (#xF1B6 #x9920) Err bitreich.org 70 i- (#xF1B7 #x992C) Err bitreich.org 70 i- (#xF1B8 #x992E) Err bitreich.org 70 i- (#xF1B9 #x993D) Err bitreich.org 70 i- (#xF1BA #x993E) Err bitreich.org 70 i- (#xF1BB #x9942) Err bitreich.org 70 i- (#xF1BC #x9949) Err bitreich.org 70 i- (#xF1BD #x9945) Err bitreich.org 70 i- (#xF1BE #x9950) Err bitreich.org 70 i- (#xF1BF #x994B) Err bitreich.org 70 i- (#xF1C0 #x9951) Err bitreich.org 70 i- (#xF1C1 #x9952) Err bitreich.org 70 i- (#xF1C2 #x994C) Err bitreich.org 70 i- (#xF1C3 #x9955) Err bitreich.org 70 i- (#xF1C4 #x9997) Err bitreich.org 70 i- (#xF1C5 #x9998) Err bitreich.org 70 i- (#xF1C6 #x99A5) Err bitreich.org 70 i- (#xF1C7 #x99AD) Err bitreich.org 70 i- (#xF1C8 #x99AE) Err bitreich.org 70 i- (#xF1C9 #x99BC) Err bitreich.org 70 i- (#xF1CA #x99DF) Err bitreich.org 70 i- (#xF1CB #x99DB) Err bitreich.org 70 i- (#xF1CC #x99DD) Err bitreich.org 70 i- (#xF1CD #x99D8) Err bitreich.org 70 i- (#xF1CE #x99D1) Err bitreich.org 70 i- (#xF1CF #x99ED) Err bitreich.org 70 i- (#xF1D0 #x99EE) Err bitreich.org 70 i- (#xF1D1 #x99F1) Err bitreich.org 70 i- (#xF1D2 #x99F2) Err bitreich.org 70 i- (#xF1D3 #x99FB) Err bitreich.org 70 i- (#xF1D4 #x99F8) Err bitreich.org 70 i- (#xF1D5 #x9A01) Err bitreich.org 70 i- (#xF1D6 #x9A0F) Err bitreich.org 70 i- (#xF1D7 #x9A05) Err bitreich.org 70 i- (#xF1D8 #x99E2) Err bitreich.org 70 i- (#xF1D9 #x9A19) Err bitreich.org 70 i- (#xF1DA #x9A2B) Err bitreich.org 70 i- (#xF1DB #x9A37) Err bitreich.org 70 i- (#xF1DC #x9A45) Err bitreich.org 70 i- (#xF1DD #x9A42) Err bitreich.org 70 i- (#xF1DE #x9A40) Err bitreich.org 70 i- (#xF1DF #x9A43) Err bitreich.org 70 i- (#xF1E0 #x9A3E) Err bitreich.org 70 i- (#xF1E1 #x9A55) Err bitreich.org 70 i- (#xF1E2 #x9A4D) Err bitreich.org 70 i- (#xF1E3 #x9A5B) Err bitreich.org 70 i- (#xF1E4 #x9A57) Err bitreich.org 70 i- (#xF1E5 #x9A5F) Err bitreich.org 70 i- (#xF1E6 #x9A62) Err bitreich.org 70 i- (#xF1E7 #x9A65) Err bitreich.org 70 i- (#xF1E8 #x9A64) Err bitreich.org 70 i- (#xF1E9 #x9A69) Err bitreich.org 70 i- (#xF1EA #x9A6B) Err bitreich.org 70 i- (#xF1EB #x9A6A) Err bitreich.org 70 i- (#xF1EC #x9AAD) Err bitreich.org 70 i- (#xF1ED #x9AB0) Err bitreich.org 70 i- (#xF1EE #x9ABC) Err bitreich.org 70 i- (#xF1EF #x9AC0) Err bitreich.org 70 i- (#xF1F0 #x9ACF) Err bitreich.org 70 i- (#xF1F1 #x9AD1) Err bitreich.org 70 i- (#xF1F2 #x9AD3) Err bitreich.org 70 i- (#xF1F3 #x9AD4) Err bitreich.org 70 i- (#xF1F4 #x9ADE) Err bitreich.org 70 i- (#xF1F5 #x9ADF) Err bitreich.org 70 i- (#xF1F6 #x9AE2) Err bitreich.org 70 i- (#xF1F7 #x9AE3) Err bitreich.org 70 i- (#xF1F8 #x9AE6) Err bitreich.org 70 i- (#xF1F9 #x9AEF) Err bitreich.org 70 i- (#xF1FA #x9AEB) Err bitreich.org 70 i- (#xF1FB #x9AEE) Err bitreich.org 70 i- (#xF1FC #x9AF4) Err bitreich.org 70 i- (#xF1FD #x9AF1) Err bitreich.org 70 i- (#xF1FE #x9AF7) Err bitreich.org 70 i- (#xF2A1 #x9AFB) Err bitreich.org 70 i- (#xF2A2 #x9B06) Err bitreich.org 70 i- (#xF2A3 #x9B18) Err bitreich.org 70 i- (#xF2A4 #x9B1A) Err bitreich.org 70 i- (#xF2A5 #x9B1F) Err bitreich.org 70 i- (#xF2A6 #x9B22) Err bitreich.org 70 i- (#xF2A7 #x9B23) Err bitreich.org 70 i- (#xF2A8 #x9B25) Err bitreich.org 70 i- (#xF2A9 #x9B27) Err bitreich.org 70 i- (#xF2AA #x9B28) Err bitreich.org 70 i- (#xF2AB #x9B29) Err bitreich.org 70 i- (#xF2AC #x9B2A) Err bitreich.org 70 i- (#xF2AD #x9B2E) Err bitreich.org 70 i- (#xF2AE #x9B2F) Err bitreich.org 70 i- (#xF2AF #x9B32) Err bitreich.org 70 i- (#xF2B0 #x9B44) Err bitreich.org 70 i- (#xF2B1 #x9B43) Err bitreich.org 70 i- (#xF2B2 #x9B4F) Err bitreich.org 70 i- (#xF2B3 #x9B4D) Err bitreich.org 70 i- (#xF2B4 #x9B4E) Err bitreich.org 70 i- (#xF2B5 #x9B51) Err bitreich.org 70 i- (#xF2B6 #x9B58) Err bitreich.org 70 i- (#xF2B7 #x9B74) Err bitreich.org 70 i- (#xF2B8 #x9B93) Err bitreich.org 70 i- (#xF2B9 #x9B83) Err bitreich.org 70 i- (#xF2BA #x9B91) Err bitreich.org 70 i- (#xF2BB #x9B96) Err bitreich.org 70 i- (#xF2BC #x9B97) Err bitreich.org 70 i- (#xF2BD #x9B9F) Err bitreich.org 70 i- (#xF2BE #x9BA0) Err bitreich.org 70 i- (#xF2BF #x9BA8) Err bitreich.org 70 i- (#xF2C0 #x9BB4) Err bitreich.org 70 i- (#xF2C1 #x9BC0) Err bitreich.org 70 i- (#xF2C2 #x9BCA) Err bitreich.org 70 i- (#xF2C3 #x9BB9) Err bitreich.org 70 i- (#xF2C4 #x9BC6) Err bitreich.org 70 i- (#xF2C5 #x9BCF) Err bitreich.org 70 i- (#xF2C6 #x9BD1) Err bitreich.org 70 i- (#xF2C7 #x9BD2) Err bitreich.org 70 i- (#xF2C8 #x9BE3) Err bitreich.org 70 i- (#xF2C9 #x9BE2) Err bitreich.org 70 i- (#xF2CA #x9BE4) Err bitreich.org 70 i- (#xF2CB #x9BD4) Err bitreich.org 70 i- (#xF2CC #x9BE1) Err bitreich.org 70 i- (#xF2CD #x9C3A) Err bitreich.org 70 i- (#xF2CE #x9BF2) Err bitreich.org 70 i- (#xF2CF #x9BF1) Err bitreich.org 70 i- (#xF2D0 #x9BF0) Err bitreich.org 70 i- (#xF2D1 #x9C15) Err bitreich.org 70 i- (#xF2D2 #x9C14) Err bitreich.org 70 i- (#xF2D3 #x9C09) Err bitreich.org 70 i- (#xF2D4 #x9C13) Err bitreich.org 70 i- (#xF2D5 #x9C0C) Err bitreich.org 70 i- (#xF2D6 #x9C06) Err bitreich.org 70 i- (#xF2D7 #x9C08) Err bitreich.org 70 i- (#xF2D8 #x9C12) Err bitreich.org 70 i- (#xF2D9 #x9C0A) Err bitreich.org 70 i- (#xF2DA #x9C04) Err bitreich.org 70 i- (#xF2DB #x9C2E) Err bitreich.org 70 i- (#xF2DC #x9C1B) Err bitreich.org 70 i- (#xF2DD #x9C25) Err bitreich.org 70 i- (#xF2DE #x9C24) Err bitreich.org 70 i- (#xF2DF #x9C21) Err bitreich.org 70 i- (#xF2E0 #x9C30) Err bitreich.org 70 i- (#xF2E1 #x9C47) Err bitreich.org 70 i- (#xF2E2 #x9C32) Err bitreich.org 70 i- (#xF2E3 #x9C46) Err bitreich.org 70 i- (#xF2E4 #x9C3E) Err bitreich.org 70 i- (#xF2E5 #x9C5A) Err bitreich.org 70 i- (#xF2E6 #x9C60) Err bitreich.org 70 i- (#xF2E7 #x9C67) Err bitreich.org 70 i- (#xF2E8 #x9C76) Err bitreich.org 70 i- (#xF2E9 #x9C78) Err bitreich.org 70 i- (#xF2EA #x9CE7) Err bitreich.org 70 i- (#xF2EB #x9CEC) Err bitreich.org 70 i- (#xF2EC #x9CF0) Err bitreich.org 70 i- (#xF2ED #x9D09) Err bitreich.org 70 i- (#xF2EE #x9D08) Err bitreich.org 70 i- (#xF2EF #x9CEB) Err bitreich.org 70 i- (#xF2F0 #x9D03) Err bitreich.org 70 i- (#xF2F1 #x9D06) Err bitreich.org 70 i- (#xF2F2 #x9D2A) Err bitreich.org 70 i- (#xF2F3 #x9D26) Err bitreich.org 70 i- (#xF2F4 #x9DAF) Err bitreich.org 70 i- (#xF2F5 #x9D23) Err bitreich.org 70 i- (#xF2F6 #x9D1F) Err bitreich.org 70 i- (#xF2F7 #x9D44) Err bitreich.org 70 i- (#xF2F8 #x9D15) Err bitreich.org 70 i- (#xF2F9 #x9D12) Err bitreich.org 70 i- (#xF2FA #x9D41) Err bitreich.org 70 i- (#xF2FB #x9D3F) Err bitreich.org 70 i- (#xF2FC #x9D3E) Err bitreich.org 70 i- (#xF2FD #x9D46) Err bitreich.org 70 i- (#xF2FE #x9D48) Err bitreich.org 70 i- (#xF3A1 #x9D5D) Err bitreich.org 70 i- (#xF3A2 #x9D5E) Err bitreich.org 70 i- (#xF3A3 #x9D64) Err bitreich.org 70 i- (#xF3A4 #x9D51) Err bitreich.org 70 i- (#xF3A5 #x9D50) Err bitreich.org 70 i- (#xF3A6 #x9D59) Err bitreich.org 70 i- (#xF3A7 #x9D72) Err bitreich.org 70 i- (#xF3A8 #x9D89) Err bitreich.org 70 i- (#xF3A9 #x9D87) Err bitreich.org 70 i- (#xF3AA #x9DAB) Err bitreich.org 70 i- (#xF3AB #x9D6F) Err bitreich.org 70 i- (#xF3AC #x9D7A) Err bitreich.org 70 i- (#xF3AD #x9D9A) Err bitreich.org 70 i- (#xF3AE #x9DA4) Err bitreich.org 70 i- (#xF3AF #x9DA9) Err bitreich.org 70 i- (#xF3B0 #x9DB2) Err bitreich.org 70 i- (#xF3B1 #x9DC4) Err bitreich.org 70 i- (#xF3B2 #x9DC1) Err bitreich.org 70 i- (#xF3B3 #x9DBB) Err bitreich.org 70 i- (#xF3B4 #x9DB8) Err bitreich.org 70 i- (#xF3B5 #x9DBA) Err bitreich.org 70 i- (#xF3B6 #x9DC6) Err bitreich.org 70 i- (#xF3B7 #x9DCF) Err bitreich.org 70 i- (#xF3B8 #x9DC2) Err bitreich.org 70 i- (#xF3B9 #x9DD9) Err bitreich.org 70 i- (#xF3BA #x9DD3) Err bitreich.org 70 i- (#xF3BB #x9DF8) Err bitreich.org 70 i- (#xF3BC #x9DE6) Err bitreich.org 70 i- (#xF3BD #x9DED) Err bitreich.org 70 i- (#xF3BE #x9DEF) Err bitreich.org 70 i- (#xF3BF #x9DFD) Err bitreich.org 70 i- (#xF3C0 #x9E1A) Err bitreich.org 70 i- (#xF3C1 #x9E1B) Err bitreich.org 70 i- (#xF3C2 #x9E1E) Err bitreich.org 70 i- (#xF3C3 #x9E75) Err bitreich.org 70 i- (#xF3C4 #x9E79) Err bitreich.org 70 i- (#xF3C5 #x9E7D) Err bitreich.org 70 i- (#xF3C6 #x9E81) Err bitreich.org 70 i- (#xF3C7 #x9E88) Err bitreich.org 70 i- (#xF3C8 #x9E8B) Err bitreich.org 70 i- (#xF3C9 #x9E8C) Err bitreich.org 70 i- (#xF3CA #x9E92) Err bitreich.org 70 i- (#xF3CB #x9E95) Err bitreich.org 70 i- (#xF3CC #x9E91) Err bitreich.org 70 i- (#xF3CD #x9E9D) Err bitreich.org 70 i- (#xF3CE #x9EA5) Err bitreich.org 70 i- (#xF3CF #x9EA9) Err bitreich.org 70 i- (#xF3D0 #x9EB8) Err bitreich.org 70 i- (#xF3D1 #x9EAA) Err bitreich.org 70 i- (#xF3D2 #x9EAD) Err bitreich.org 70 i- (#xF3D3 #x9761) Err bitreich.org 70 i- (#xF3D4 #x9ECC) Err bitreich.org 70 i- (#xF3D5 #x9ECE) Err bitreich.org 70 i- (#xF3D6 #x9ECF) Err bitreich.org 70 i- (#xF3D7 #x9ED0) Err bitreich.org 70 i- (#xF3D8 #x9ED4) Err bitreich.org 70 i- (#xF3D9 #x9EDC) Err bitreich.org 70 i- (#xF3DA #x9EDE) Err bitreich.org 70 i- (#xF3DB #x9EDD) Err bitreich.org 70 i- (#xF3DC #x9EE0) Err bitreich.org 70 i- (#xF3DD #x9EE5) Err bitreich.org 70 i- (#xF3DE #x9EE8) Err bitreich.org 70 i- (#xF3DF #x9EEF) Err bitreich.org 70 i- (#xF3E0 #x9EF4) Err bitreich.org 70 i- (#xF3E1 #x9EF6) Err bitreich.org 70 i- (#xF3E2 #x9EF7) Err bitreich.org 70 i- (#xF3E3 #x9EF9) Err bitreich.org 70 i- (#xF3E4 #x9EFB) Err bitreich.org 70 i- (#xF3E5 #x9EFC) Err bitreich.org 70 i- (#xF3E6 #x9EFD) Err bitreich.org 70 i- (#xF3E7 #x9F07) Err bitreich.org 70 i- (#xF3E8 #x9F08) Err bitreich.org 70 i- (#xF3E9 #x76B7) Err bitreich.org 70 i- (#xF3EA #x9F15) Err bitreich.org 70 i- (#xF3EB #x9F21) Err bitreich.org 70 i- (#xF3EC #x9F2C) Err bitreich.org 70 i- (#xF3ED #x9F3E) Err bitreich.org 70 i- (#xF3EE #x9F4A) Err bitreich.org 70 i- (#xF3EF #x9F52) Err bitreich.org 70 i- (#xF3F0 #x9F54) Err bitreich.org 70 i- (#xF3F1 #x9F63) Err bitreich.org 70 i- (#xF3F2 #x9F5F) Err bitreich.org 70 i- (#xF3F3 #x9F60) Err bitreich.org 70 i- (#xF3F4 #x9F61) Err bitreich.org 70 i- (#xF3F5 #x9F66) Err bitreich.org 70 i- (#xF3F6 #x9F67) Err bitreich.org 70 i- (#xF3F7 #x9F6C) Err bitreich.org 70 i- (#xF3F8 #x9F6A) Err bitreich.org 70 i- (#xF3F9 #x9F77) Err bitreich.org 70 i- (#xF3FA #x9F72) Err bitreich.org 70 i- (#xF3FB #x9F76) Err bitreich.org 70 i- (#xF3FC #x9F95) Err bitreich.org 70 i- (#xF3FD #x9F9C) Err bitreich.org 70 i- (#xF3FE #x9FA0) Err bitreich.org 70 i- (#xF4A1 #x582F) Err bitreich.org 70 i- (#xF4A2 #x69C7) Err bitreich.org 70 i- (#xF4A3 #x9059) Err bitreich.org 70 i- (#xF4A4 #x7464) Err bitreich.org 70 i- (#xF4A5 #x51DC) Err bitreich.org 70 i- (#xF4A6 #x7199) Err bitreich.org 70 i- )) Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/src/packages.lisp b/3rdparties/software/babel-20171227-git/src/packages.lisp /scm/clic/file/3rdparties/software/babel-20171227-git/src/packages.lisp.gph bitreich.org 70 i@@ -1,115 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; package.lisp --- Package definition for Babel Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cl-user) Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:babel-encodings Err bitreich.org 70 i- (:use #:common-lisp #:alexandria) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- ;; character encoding objects Err bitreich.org 70 i- #:list-character-encodings Err bitreich.org 70 i- #:character-encoding Err bitreich.org 70 i- #:*default-character-encoding* Err bitreich.org 70 i- #:get-character-encoding Err bitreich.org 70 i- #:enc-name Err bitreich.org 70 i- #:enc-aliases Err bitreich.org 70 i- #:enc-code-unit-size Err bitreich.org 70 i- #:enc-max-units-per-char Err bitreich.org 70 i- #:enc-native-endianness Err bitreich.org 70 i- #:enc-decode-literal-code-unit-limit Err bitreich.org 70 i- #:enc-encode-literal-code-unit-limit Err bitreich.org 70 i- #:enc-use-bom Err bitreich.org 70 i- #:enc-bom-encoding Err bitreich.org 70 i- #:enc-nul-encoding Err bitreich.org 70 i- #:enc-default-replacement Err bitreich.org 70 i- #:ambiguous-encoding-p Err bitreich.org 70 i- ;; concrete mappings Err bitreich.org 70 i- #:instantiate-concrete-mappings Err bitreich.org 70 i- #:encoder Err bitreich.org 70 i- #:decoder Err bitreich.org 70 i- #:octet-counter Err bitreich.org 70 i- #:code-point-counter Err bitreich.org 70 i- #:lookup-mapping Err bitreich.org 70 i- #:with-simple-vector Err bitreich.org 70 i- #:with-checked-simple-vector Err bitreich.org 70 i- #:*suppress-character-coding-errors* Err bitreich.org 70 i- ;; errors Err bitreich.org 70 i- #:character-coding-error Err bitreich.org 70 i- #:character-coding-error-encoding ; accessor Err bitreich.org 70 i- #:character-coding-error-buffer ; accessor Err bitreich.org 70 i- #:character-coding-error-position ; accessor Err bitreich.org 70 i- #:character-decoding-error Err bitreich.org 70 i- #:character-decoding-error-octets ; accessor Err bitreich.org 70 i- #:character-encoding-error Err bitreich.org 70 i- #:character-encoding-error-code ; accessor Err bitreich.org 70 i- #:end-of-input-in-character Err bitreich.org 70 i- #:character-out-of-range Err bitreich.org 70 i- #:invalid-utf8-starter-byte Err bitreich.org 70 i- #:invalid-utf8-continuation-byte Err bitreich.org 70 i- #:overlong-utf8-sequence)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:babel Err bitreich.org 70 i- (:use #:common-lisp #:babel-encodings #:alexandria) Err bitreich.org 70 i- (:import-from #:babel-encodings) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- ;; types Err bitreich.org 70 i- #:unicode-char Err bitreich.org 70 i- #:unicode-char-code-limit Err bitreich.org 70 i- #:unicode-string Err bitreich.org 70 i- #:simple-unicode-string Err bitreich.org 70 i- ;; fixed sharp-backslash reader Err bitreich.org 70 i- #:enable-sharp-backslash-syntax Err bitreich.org 70 i- #:set-sharp-backslash-syntax-in-readtable Err bitreich.org 70 i- ;; external formats Err bitreich.org 70 i- #:external-format Err bitreich.org 70 i- #:make-external-format Err bitreich.org 70 i- #:ensure-external-format Err bitreich.org 70 i- #:external-format-encoding Err bitreich.org 70 i- #:external-format-eol-style Err bitreich.org 70 i- #:external-format-equal Err bitreich.org 70 i- #:*default-eol-style* Err bitreich.org 70 i- ;; general user API Err bitreich.org 70 i- #:*default-character-encoding* Err bitreich.org 70 i- #:list-character-encodings Err bitreich.org 70 i- #:string-to-octets Err bitreich.org 70 i- #:octets-to-string Err bitreich.org 70 i- #:concatenate-strings-to-octets Err bitreich.org 70 i- #:string-size-in-octets Err bitreich.org 70 i- #:vector-size-in-chars Err bitreich.org 70 i- ;; errors Err bitreich.org 70 i- #:character-coding-error Err bitreich.org 70 i- #:character-coding-error-encoding ; accessor Err bitreich.org 70 i- #:character-coding-error-buffer ; accessor Err bitreich.org 70 i- #:character-coding-error-position ; accessor Err bitreich.org 70 i- #:character-decoding-error Err bitreich.org 70 i- #:character-decoding-error-octets ; accessor Err bitreich.org 70 i- #:character-encoding-error Err bitreich.org 70 i- #:character-encoding-error-code ; accessor Err bitreich.org 70 i- #:end-of-input-in-character Err bitreich.org 70 i- #:character-out-of-range Err bitreich.org 70 i- #:invalid-utf8-starter-byte Err bitreich.org 70 i- #:invalid-utf8-continuation-byte Err bitreich.org 70 i- #:overlong-utf8-sequence)) Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/src/sharp-backslash.lisp b/3rdparties/software/babel-20171227-git/src/sharp-backslash.lisp /scm/clic/file/3rdparties/software/babel-20171227-git/src/sharp-backslash.lisp.gph bitreich.org 70 i@@ -1,82 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; sharp-backslash.lisp --- Alternative #\ dispatch code. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007-2009, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:babel) Err bitreich.org 70 i- Err bitreich.org 70 i-#-allegro Err bitreich.org 70 i-(defun sharp-backslash-reader (original-reader stream char numarg) Err bitreich.org 70 i- (let ((1st-char (read-char stream))) Err bitreich.org 70 i- (if (and (char-equal 1st-char #\u) Err bitreich.org 70 i- ;; because #\z is not a digit char... Err bitreich.org 70 i- (digit-char-p (peek-char nil stream nil #\z) 16)) Err bitreich.org 70 i- ;; something better than READ would be nice here Err bitreich.org 70 i- (let ((token (let ((*read-base* 16)) (read stream)))) Err bitreich.org 70 i- (if (typep token 'babel-encodings::code-point) Err bitreich.org 70 i- (code-char token) Err bitreich.org 70 i- (if *read-suppress* Err bitreich.org 70 i- nil Err bitreich.org 70 i- (simple-reader-error Err bitreich.org 70 i- stream "Unrecognized character name: u~A" token)))) Err bitreich.org 70 i- (funcall original-reader Err bitreich.org 70 i- (make-concatenated-stream (make-string-input-stream Err bitreich.org 70 i- (string 1st-char)) Err bitreich.org 70 i- stream) Err bitreich.org 70 i- char Err bitreich.org 70 i- numarg)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Allegro's PEEK-CHAR seems broken in some situations, and the code Err bitreich.org 70 i-;;; above would generate an error about too many calls to UNREAD-CHAR. Err bitreich.org 70 i-;;; Then Allegro's original SHARP-BACKSLASH wants to UNREAD-CHAR Err bitreich.org 70 i-;;; twice, very weird. This is the best workaround I could think of. Err bitreich.org 70 i-;;; It sucks. Err bitreich.org 70 i-#+allegro Err bitreich.org 70 i-(defun sharp-backslash-reader (original-reader stream char numarg) Err bitreich.org 70 i- (let* ((1st-char (read-char stream)) Err bitreich.org 70 i- (rest (ignore-errors (excl::read-extended-token stream))) Err bitreich.org 70 i- (code (when (and rest (char-equal 1st-char #\u)) Err bitreich.org 70 i- (ignore-errors (parse-integer rest :radix 16))))) Err bitreich.org 70 i- (if code Err bitreich.org 70 i- (code-char code) Err bitreich.org 70 i- (with-input-from-string Err bitreich.org 70 i- (s (concatenate 'string "#\\" (string 1st-char) rest)) Err bitreich.org 70 i- (read-char s) Err bitreich.org 70 i- (read-char s) Err bitreich.org 70 i- (funcall original-reader s char numarg))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-sharp-backslash-reader () Err bitreich.org 70 i- (let ((original-sharp-backslash (get-dispatch-macro-character #\# #\\))) Err bitreich.org 70 i- (lambda (stream char numarg) Err bitreich.org 70 i- (sharp-backslash-reader original-sharp-backslash stream char numarg)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro enable-sharp-backslash-syntax () Err bitreich.org 70 i- `(eval-when (:compile-toplevel :execute) Err bitreich.org 70 i- (setf *readtable* (copy-readtable *readtable*)) Err bitreich.org 70 i- (set-sharp-backslash-syntax-in-readtable) Err bitreich.org 70 i- (values))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun set-sharp-backslash-syntax-in-readtable () Err bitreich.org 70 i- (set-dispatch-macro-character #\# #\\ (make-sharp-backslash-reader)) Err bitreich.org 70 i- (values)) Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/src/streams.lisp b/3rdparties/software/babel-20171227-git/src/streams.lisp /scm/clic/file/3rdparties/software/babel-20171227-git/src/streams.lisp.gph bitreich.org 70 i@@ -1,436 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; streams.lisp --- Conversions between strings and UB8 vectors. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (c) 2005-2007, Dr. Edmund Weitz. All rights reserved. Err bitreich.org 70 i-;;; Copyright (c) 2008, Attila Lendvai. All rights reserved. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Redistribution and use in source and binary forms, with or without Err bitreich.org 70 i-;;; modification, are permitted provided that the following conditions Err bitreich.org 70 i-;;; are met: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; * Redistributions of source code must retain the above copyright Err bitreich.org 70 i-;;; notice, this list of conditions and the following disclaimer. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; * Redistributions in binary form must reproduce the above Err bitreich.org 70 i-;;; copyright notice, this list of conditions and the following Err bitreich.org 70 i-;;; disclaimer in the documentation and/or other materials Err bitreich.org 70 i-;;; provided with the distribution. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED Err bitreich.org 70 i-;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED Err bitreich.org 70 i-;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE Err bitreich.org 70 i-;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY Err bitreich.org 70 i-;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL Err bitreich.org 70 i-;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE Err bitreich.org 70 i-;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS Err bitreich.org 70 i-;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING Err bitreich.org 70 i-;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS Err bitreich.org 70 i-;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; STATUS Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; - in-memory output streams support binary/bivalent/character Err bitreich.org 70 i-;;; element-types and file-position Err bitreich.org 70 i- Err bitreich.org 70 i-;;; TODO Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; - filter-stream types/mixins that can wrap a binary stream and Err bitreich.org 70 i-;;; turn it into a bivalent/character stream Err bitreich.org 70 i-;;; - in-memory input streams with file-position similar to in-memory Err bitreich.org 70 i-;;; output streams Err bitreich.org 70 i-;;; - in-memory input/output streams? Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:babel) Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:babel-streams Err bitreich.org 70 i- (:use #:common-lisp #:babel #:trivial-gray-streams #:alexandria) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- #:in-memory-stream Err bitreich.org 70 i- #:vector-output-stream Err bitreich.org 70 i- #:vector-input-stream Err bitreich.org 70 i- #:make-in-memory-output-stream Err bitreich.org 70 i- #:make-in-memory-input-stream Err bitreich.org 70 i- #:get-output-stream-sequence Err bitreich.org 70 i- #:with-output-to-sequence Err bitreich.org 70 i- #:with-input-from-sequence)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :babel-streams) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline check-if-open check-if-accepts-octets Err bitreich.org 70 i- check-if-accepts-characters stream-accepts-characters? Err bitreich.org 70 i- stream-accepts-octets? vector-extend Err bitreich.org 70 i- extend-vector-output-stream-buffer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric get-output-stream-sequence (stream &key &allow-other-keys)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Some utilities (on top due to inlining) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun vector-extend (extension vector &key (start 0) (end (length extension))) Err bitreich.org 70 i- ;; copied over from cl-quasi-quote Err bitreich.org 70 i- (declare (optimize speed) Err bitreich.org 70 i- (type vector extension vector) Err bitreich.org 70 i- (type array-index start end)) Err bitreich.org 70 i- (let* ((original-length (length vector)) Err bitreich.org 70 i- (extension-length (- end start)) Err bitreich.org 70 i- (new-length (+ original-length extension-length)) Err bitreich.org 70 i- (original-dimension (array-dimension vector 0))) Err bitreich.org 70 i- (when (< original-dimension new-length) Err bitreich.org 70 i- (setf vector Err bitreich.org 70 i- (adjust-array vector (max (* 2 original-dimension) new-length)))) Err bitreich.org 70 i- (setf (fill-pointer vector) new-length) Err bitreich.org 70 i- (replace vector extension :start1 original-length :start2 start :end2 end) Err bitreich.org 70 i- vector)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass in-memory-stream (trivial-gray-stream-mixin) Err bitreich.org 70 i- ((element-type ; :default means bivalent Err bitreich.org 70 i- :initform :default :initarg :element-type :accessor element-type-of) Err bitreich.org 70 i- (external-format Err bitreich.org 70 i- :initform (ensure-external-format *default-character-encoding*) Err bitreich.org 70 i- :initarg :external-format :accessor external-format-of) Err bitreich.org 70 i- #+cmu Err bitreich.org 70 i- (open-p Err bitreich.org 70 i- :initform t :accessor in-memory-stream-open-p Err bitreich.org 70 i- :documentation "For CMUCL we have to keep track of this manually.")) Err bitreich.org 70 i- (:documentation "An IN-MEMORY-STREAM is a binary stream that reads octets Err bitreich.org 70 i- from or writes octets to a sequence in RAM.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-element-type ((self in-memory-stream)) Err bitreich.org 70 i- ;; stream-element-type is a CL symbol, we may not install an accessor on it. Err bitreich.org 70 i- ;; so, go through this extra step. Err bitreich.org 70 i- (element-type-of self)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun stream-accepts-octets? (stream) Err bitreich.org 70 i- (let ((element-type (element-type-of stream))) Err bitreich.org 70 i- (or (eq element-type :default) Err bitreich.org 70 i- (equal element-type '(unsigned-byte 8)) Err bitreich.org 70 i- (subtypep element-type '(unsigned-byte 8))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun stream-accepts-characters? (stream) Err bitreich.org 70 i- (let ((element-type (element-type-of stream))) Err bitreich.org 70 i- (member element-type '(:default character base-char)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass in-memory-input-stream (in-memory-stream fundamental-binary-input-stream) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "An IN-MEMORY-INPUT-STREAM is a binary stream that reads Err bitreich.org 70 i- octets from a sequence in RAM.")) Err bitreich.org 70 i- Err bitreich.org 70 i-#+cmu Err bitreich.org 70 i-(defmethod output-stream-p ((stream in-memory-input-stream)) Err bitreich.org 70 i- "Explicitly states whether this is an output stream." Err bitreich.org 70 i- (declare (optimize speed)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass in-memory-output-stream (in-memory-stream Err bitreich.org 70 i- fundamental-binary-output-stream) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "An IN-MEMORY-OUTPUT-STREAM is a binary stream that Err bitreich.org 70 i- writes octets to a sequence in RAM.")) Err bitreich.org 70 i- Err bitreich.org 70 i-#+cmu Err bitreich.org 70 i-(defmethod input-stream-p ((stream in-memory-output-stream)) Err bitreich.org 70 i- "Explicitly states whether this is an input stream." Err bitreich.org 70 i- (declare (optimize speed)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-in-memory-output-stream (&key (element-type :default) Err bitreich.org 70 i- external-format Err bitreich.org 70 i- initial-buffer-size) Err bitreich.org 70 i- "Returns a binary output stream which accepts objects of type Err bitreich.org 70 i-ELEMENT-TYPE \(a subtype of OCTET) and makes available a sequence that Err bitreich.org 70 i-contains the octes that were actually output." Err bitreich.org 70 i- (declare (optimize speed)) Err bitreich.org 70 i- (unless external-format Err bitreich.org 70 i- (setf external-format *default-character-encoding*)) Err bitreich.org 70 i- (when (eq element-type :bivalent) Err bitreich.org 70 i- (setf element-type :default)) Err bitreich.org 70 i- (make-instance 'vector-output-stream Err bitreich.org 70 i- :vector (make-vector-stream-buffer Err bitreich.org 70 i- :element-type Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((or (eq element-type :default) Err bitreich.org 70 i- (equal element-type '(unsigned-byte 8))) Err bitreich.org 70 i- '(unsigned-byte 8)) Err bitreich.org 70 i- ((eq element-type 'character) Err bitreich.org 70 i- 'character) Err bitreich.org 70 i- ((subtypep element-type '(unsigned-byte 8)) Err bitreich.org 70 i- '(unsigned-byte 8)) Err bitreich.org 70 i- (t (error "Illegal element-type ~S" element-type))) Err bitreich.org 70 i- :initial-size initial-buffer-size) Err bitreich.org 70 i- :element-type element-type Err bitreich.org 70 i- :external-format (ensure-external-format external-format))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-in-memory-input-stream (data &key (element-type :default) Err bitreich.org 70 i- external-format) Err bitreich.org 70 i- "Returns a binary input stream which provides the elements of DATA when read." Err bitreich.org 70 i- (declare (optimize speed)) Err bitreich.org 70 i- (unless external-format Err bitreich.org 70 i- (setf external-format *default-character-encoding*)) Err bitreich.org 70 i- (when (eq element-type :bivalent) Err bitreich.org 70 i- (setf element-type :default)) Err bitreich.org 70 i- (make-instance 'vector-input-stream Err bitreich.org 70 i- :vector data Err bitreich.org 70 i- :element-type element-type Err bitreich.org 70 i- :end (length data) Err bitreich.org 70 i- :external-format (ensure-external-format external-format))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass vector-stream () Err bitreich.org 70 i- ((vector Err bitreich.org 70 i- :initarg :vector :accessor vector-stream-vector Err bitreich.org 70 i- :documentation "The underlying vector of the stream which \(for output) Err bitreich.org 70 i- must always be adjustable and have a fill pointer.") Err bitreich.org 70 i- (index Err bitreich.org 70 i- :initform 0 :initarg :index :accessor vector-stream-index Err bitreich.org 70 i- :type (integer 0 #.array-dimension-limit) Err bitreich.org 70 i- :documentation "An index into the underlying vector denoting the Err bitreich.org 70 i- current position.")) Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "A VECTOR-STREAM is a mixin for IN-MEMORY streams where the underlying Err bitreich.org 70 i- sequence is a vector.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass vector-input-stream (vector-stream in-memory-input-stream) Err bitreich.org 70 i- ((end Err bitreich.org 70 i- :initarg :end :accessor vector-stream-end Err bitreich.org 70 i- :type (integer 0 #.array-dimension-limit) Err bitreich.org 70 i- :documentation "An index into the underlying vector denoting the end Err bitreich.org 70 i- of the available data.")) Err bitreich.org 70 i- (:documentation "A binary input stream that gets its data from an Err bitreich.org 70 i- associated vector of octets.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass vector-output-stream (vector-stream in-memory-output-stream) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "A binary output stream that writes its data to an associated vector.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition in-memory-stream-error (stream-error) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Superclass for all errors related to IN-MEMORY streams.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition in-memory-stream-closed-error (in-memory-stream-error) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:report (lambda (condition stream) Err bitreich.org 70 i- (format stream "~S is closed." Err bitreich.org 70 i- (stream-error-stream condition)))) Err bitreich.org 70 i- (:documentation "An error that is signalled when someone is trying to read Err bitreich.org 70 i- from or write to a closed IN-MEMORY stream.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition wrong-element-type-stream-error (stream-error) Err bitreich.org 70 i- ((expected-type :accessor expected-type-of :initarg :expected-type)) Err bitreich.org 70 i- (:report (lambda (condition output) Err bitreich.org 70 i- (let ((stream (stream-error-stream condition))) Err bitreich.org 70 i- (format output "The element-type of ~S is ~S while expecting ~ Err bitreich.org 70 i- a stream that accepts ~S." Err bitreich.org 70 i- stream (element-type-of stream) Err bitreich.org 70 i- (expected-type-of condition)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun wrong-element-type-stream-error (stream expected-type) Err bitreich.org 70 i- (error 'wrong-element-type-stream-error Err bitreich.org 70 i- :stream stream :expected-type expected-type)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+cmu Err bitreich.org 70 i-(defmethod open-stream-p ((stream in-memory-stream)) Err bitreich.org 70 i- "Returns a true value if STREAM is open. See ANSI standard." Err bitreich.org 70 i- (declare (optimize speed)) Err bitreich.org 70 i- (in-memory-stream-open-p stream)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+cmu Err bitreich.org 70 i-(defmethod close ((stream in-memory-stream) &key abort) Err bitreich.org 70 i- "Closes the stream STREAM. See ANSI standard." Err bitreich.org 70 i- (declare (ignore abort) (optimize speed)) Err bitreich.org 70 i- (prog1 Err bitreich.org 70 i- (in-memory-stream-open-p stream) Err bitreich.org 70 i- (setf (in-memory-stream-open-p stream) nil))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun check-if-open (stream) Err bitreich.org 70 i- "Checks if STREAM is open and signals an error otherwise." Err bitreich.org 70 i- (declare (optimize speed)) Err bitreich.org 70 i- (unless (open-stream-p stream) Err bitreich.org 70 i- (error 'in-memory-stream-closed-error :stream stream))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun check-if-accepts-octets (stream) Err bitreich.org 70 i- (declare (optimize speed)) Err bitreich.org 70 i- (unless (stream-accepts-octets? stream) Err bitreich.org 70 i- (wrong-element-type-stream-error stream '(unsigned-byte 8)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun check-if-accepts-characters (stream) Err bitreich.org 70 i- (declare (optimize speed)) Err bitreich.org 70 i- (unless (stream-accepts-characters? stream) Err bitreich.org 70 i- (wrong-element-type-stream-error stream 'character))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-read-byte ((stream vector-input-stream)) Err bitreich.org 70 i- "Reads one byte and increments INDEX pointer unless we're beyond END pointer." Err bitreich.org 70 i- (declare (optimize speed)) Err bitreich.org 70 i- (check-if-open stream) Err bitreich.org 70 i- (let ((index (vector-stream-index stream))) Err bitreich.org 70 i- (cond ((< index (vector-stream-end stream)) Err bitreich.org 70 i- (incf (vector-stream-index stream)) Err bitreich.org 70 i- (aref (vector-stream-vector stream) index)) Err bitreich.org 70 i- (t :eof)))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+#:ignore Err bitreich.org 70 i-(defmethod stream-read-char ((stream vector-input-stream)) Err bitreich.org 70 i- ;; TODO Err bitreich.org 70 i- ) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-listen ((stream vector-input-stream)) Err bitreich.org 70 i- "Checking whether INDEX is beyond END." Err bitreich.org 70 i- (declare (optimize speed)) Err bitreich.org 70 i- (check-if-open stream) Err bitreich.org 70 i- (< (vector-stream-index stream) (vector-stream-end stream))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-read-sequence ((stream vector-input-stream) Err bitreich.org 70 i- sequence start end &key) Err bitreich.org 70 i- (declare (optimize speed) (type array-index start end)) Err bitreich.org 70 i- ;; TODO check the sequence type, assert for the element-type and use Err bitreich.org 70 i- ;; the external-format. Err bitreich.org 70 i- (loop with vector-end of-type array-index = (vector-stream-end stream) Err bitreich.org 70 i- with vector = (vector-stream-vector stream) Err bitreich.org 70 i- for index from start below end Err bitreich.org 70 i- for vector-index of-type array-index = (vector-stream-index stream) Err bitreich.org 70 i- while (< vector-index vector-end) Err bitreich.org 70 i- do (setf (elt sequence index) Err bitreich.org 70 i- (aref vector vector-index)) Err bitreich.org 70 i- (incf (vector-stream-index stream)) Err bitreich.org 70 i- finally (return index))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-write-byte ((stream vector-output-stream) byte) Err bitreich.org 70 i- "Writes a byte \(octet) by extending the underlying vector." Err bitreich.org 70 i- (declare (optimize speed)) Err bitreich.org 70 i- (check-if-open stream) Err bitreich.org 70 i- (check-if-accepts-octets stream) Err bitreich.org 70 i- (vector-push-extend byte (vector-stream-vector stream)) Err bitreich.org 70 i- (incf (vector-stream-index stream)) Err bitreich.org 70 i- byte) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun extend-vector-output-stream-buffer (extension stream &key (start 0) Err bitreich.org 70 i- (end (length extension))) Err bitreich.org 70 i- (declare (optimize speed) Err bitreich.org 70 i- (type array-index start end) Err bitreich.org 70 i- (type vector extension)) Err bitreich.org 70 i- (vector-extend extension (vector-stream-vector stream) :start start :end end) Err bitreich.org 70 i- (incf (vector-stream-index stream) (- end start)) Err bitreich.org 70 i- (values)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-write-char ((stream vector-output-stream) char) Err bitreich.org 70 i- (declare (optimize speed)) Err bitreich.org 70 i- (check-if-open stream) Err bitreich.org 70 i- (check-if-accepts-characters stream) Err bitreich.org 70 i- ;; TODO this is naiive here, there's room for optimization Err bitreich.org 70 i- (let ((octets (string-to-octets (string char) Err bitreich.org 70 i- :encoding (external-format-of stream)))) Err bitreich.org 70 i- (extend-vector-output-stream-buffer octets stream)) Err bitreich.org 70 i- char) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-write-sequence ((stream vector-output-stream) Err bitreich.org 70 i- sequence start end &key) Err bitreich.org 70 i- "Just calls VECTOR-PUSH-EXTEND repeatedly." Err bitreich.org 70 i- (declare (optimize speed) Err bitreich.org 70 i- (type array-index start end)) Err bitreich.org 70 i- (etypecase sequence Err bitreich.org 70 i- (string Err bitreich.org 70 i- (if (stream-accepts-octets? stream) Err bitreich.org 70 i- ;; TODO this is naiive here, there's room for optimization Err bitreich.org 70 i- (let ((octets (string-to-octets sequence Err bitreich.org 70 i- :encoding (external-format-of stream) Err bitreich.org 70 i- :start start Err bitreich.org 70 i- :end end))) Err bitreich.org 70 i- (extend-vector-output-stream-buffer octets stream)) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (assert (stream-accepts-characters? stream)) Err bitreich.org 70 i- (extend-vector-output-stream-buffer sequence stream Err bitreich.org 70 i- :start start :end end)))) Err bitreich.org 70 i- ((vector (unsigned-byte 8)) Err bitreich.org 70 i- ;; specialized branch to help inlining Err bitreich.org 70 i- (check-if-accepts-octets stream) Err bitreich.org 70 i- (extend-vector-output-stream-buffer sequence stream :start start :end end)) Err bitreich.org 70 i- (vector Err bitreich.org 70 i- (check-if-accepts-octets stream) Err bitreich.org 70 i- (extend-vector-output-stream-buffer sequence stream :start start :end end))) Err bitreich.org 70 i- sequence) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-write-string ((stream vector-output-stream) Err bitreich.org 70 i- string &optional (start 0) (end (length string))) Err bitreich.org 70 i- (stream-write-sequence stream string start (or end (length string)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-line-column ((stream vector-output-stream)) Err bitreich.org 70 i- "Dummy line-column method that always returns NIL. Needed for Err bitreich.org 70 i-character output streams." Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-file-position ((stream vector-stream)) Err bitreich.org 70 i- "Simply returns the index into the underlying vector." Err bitreich.org 70 i- (declare (optimize speed)) Err bitreich.org 70 i- (vector-stream-index stream)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-vector-stream-buffer (&key (element-type '(unsigned-byte 8)) Err bitreich.org 70 i- initial-size) Err bitreich.org 70 i- "Creates and returns an array which can be used as the underlying vector Err bitreich.org 70 i- for a VECTOR-OUTPUT-STREAM." Err bitreich.org 70 i- (declare (optimize speed) Err bitreich.org 70 i- (type (or null array-index) initial-size)) Err bitreich.org 70 i- (make-array (the array-index (or initial-size 32)) Err bitreich.org 70 i- :adjustable t Err bitreich.org 70 i- :fill-pointer 0 Err bitreich.org 70 i- :element-type element-type)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-output-stream-sequence ((stream in-memory-output-stream) &key (return-as 'vector)) Err bitreich.org 70 i- "Returns a vector containing, in order, all the octets that have Err bitreich.org 70 i-been output to the IN-MEMORY stream STREAM. This operation clears any Err bitreich.org 70 i-octets on STREAM, so the vector contains only those octets which have Err bitreich.org 70 i-been output since the last call to GET-OUTPUT-STREAM-SEQUENCE or since Err bitreich.org 70 i-the creation of the stream, whichever occurred most recently. If Err bitreich.org 70 i-AS-LIST is true the return value is coerced to a list." Err bitreich.org 70 i- (declare (optimize speed)) Err bitreich.org 70 i- (prog1 Err bitreich.org 70 i- (ecase return-as Err bitreich.org 70 i- (vector (vector-stream-vector stream)) Err bitreich.org 70 i- (string (octets-to-string (vector-stream-vector stream) Err bitreich.org 70 i- :encoding (external-format-of stream))) Err bitreich.org 70 i- (list (coerce (vector-stream-vector stream) 'list))) Err bitreich.org 70 i- (setf (vector-stream-vector stream) (make-vector-stream-buffer)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-output-to-sequence Err bitreich.org 70 i- ((var &key (return-as ''vector) (element-type '':default) Err bitreich.org 70 i- (external-format '*default-character-encoding*) initial-buffer-size) Err bitreich.org 70 i- &body body) Err bitreich.org 70 i- "Creates an IN-MEMORY output stream, binds VAR to this stream and Err bitreich.org 70 i-then executes the code in BODY. The stream stores data of type Err bitreich.org 70 i-ELEMENT-TYPE \(a subtype of OCTET). The stream is automatically closed Err bitreich.org 70 i-on exit from WITH-OUTPUT-TO-SEQUENCE, no matter whether the exit is Err bitreich.org 70 i-normal or abnormal. The return value of this macro is a vector \(or a Err bitreich.org 70 i-list if AS-LIST is true) containing the octets that were sent to the Err bitreich.org 70 i-stream within BODY." Err bitreich.org 70 i- (multiple-value-bind (body declarations) (parse-body body) Err bitreich.org 70 i- ;; this is here to stop SBCL complaining about binding them to NIL Err bitreich.org 70 i- `(let ((,var (make-in-memory-output-stream Err bitreich.org 70 i- :element-type ,element-type Err bitreich.org 70 i- :external-format ,external-format Err bitreich.org 70 i- :initial-buffer-size ,initial-buffer-size))) Err bitreich.org 70 i- ,@declarations Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn Err bitreich.org 70 i- ,@body Err bitreich.org 70 i- (get-output-stream-sequence ,var :return-as ,return-as)) Err bitreich.org 70 i- (close ,var))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-input-from-sequence Err bitreich.org 70 i- ((var data &key (element-type '':default) Err bitreich.org 70 i- (external-format '*default-character-encoding*)) Err bitreich.org 70 i- &body body) Err bitreich.org 70 i- "Creates an IN-MEMORY input stream that will return the values Err bitreich.org 70 i-available in DATA, binds VAR to this stream and then executes the code Err bitreich.org 70 i-in BODY. The stream stores data of type ELEMENT-TYPE \(a subtype of Err bitreich.org 70 i-OCTET). The stream is automatically closed on exit from Err bitreich.org 70 i-WITH-INPUT-FROM-SEQUENCE, no matter whether the exit is normal or Err bitreich.org 70 i-abnormal. The return value of this macro is the return value of BODY." Err bitreich.org 70 i- (multiple-value-bind (body declarations) (parse-body body) Err bitreich.org 70 i- ;; this is here to stop SBCL complaining about binding them to NIL Err bitreich.org 70 i- `(let ((,var (make-in-memory-input-stream Err bitreich.org 70 i- ,data :element-type ,element-type Err bitreich.org 70 i- :external-format ,external-format))) Err bitreich.org 70 i- ,@declarations Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn Err bitreich.org 70 i- ,@body) Err bitreich.org 70 i- (close ,var))))) Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/src/strings.lisp b/3rdparties/software/babel-20171227-git/src/strings.lisp /scm/clic/file/3rdparties/software/babel-20171227-git/src/strings.lisp.gph bitreich.org 70 i@@ -1,353 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; strings.lisp --- Conversions between strings and UB8 vectors. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:babel) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; The usefulness of this string/octets interface of Babel's is very Err bitreich.org 70 i-;;; limited on Lisps with 8-bit characters which will in effect only Err bitreich.org 70 i-;;; support the latin-1 subset of Unicode. That is, all encodings are Err bitreich.org 70 i-;;; supported but we can only store the first 256 code points in Lisp Err bitreich.org 70 i-;;; strings. Support for using other 8-bit encodings for strings on Err bitreich.org 70 i-;;; these Lisps could be added with an extra encoding/decoding step. Err bitreich.org 70 i-;;; Supporting other encodings with larger code units would be silly Err bitreich.org 70 i-;;; (it would break expectations about common string operations) and Err bitreich.org 70 i-;;; better done with something like Closure's runes. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Can we handle unicode fully? Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- ;; The EVAL is just here to avoid warnings... Err bitreich.org 70 i- (case (eval char-code-limit) Err bitreich.org 70 i- (#x100 (pushnew '8-bit-chars *features*)) Err bitreich.org 70 i- (#x10000 (pushnew 'ucs-2-chars *features*)) Err bitreich.org 70 i- (#x110000 #| yay |#) Err bitreich.org 70 i- ;; This is here mostly because if the CHAR-CODE-LIMIT is bigger Err bitreich.org 70 i- ;; than #x11000, strange things might happen but we probably Err bitreich.org 70 i- ;; shouldn't descriminate against other, smaller, values. Err bitreich.org 70 i- (t (error "Strange CHAR-CODE-LIMIT (#x~X), bailing out." Err bitreich.org 70 i- char-code-limit)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Adapted from Ironclad. TODO: check if it's worthwhile adding Err bitreich.org 70 i-;;; implementation-specific accessors such as SAP-REF-* for SBCL. Err bitreich.org 70 i-(defmacro ub-get (vector index &optional (bytes 1) (endianness :ne)) Err bitreich.org 70 i- (let ((big-endian (member endianness Err bitreich.org 70 i- '(:be #+big-endian :ne #+little-endian :re)))) Err bitreich.org 70 i- (once-only (vector index) Err bitreich.org 70 i- `(logand Err bitreich.org 70 i- ,(1- (ash 1 (* 8 bytes))) Err bitreich.org 70 i- (logior Err bitreich.org 70 i- ,@(loop for i from 0 below bytes Err bitreich.org 70 i- for offset = (if big-endian i (- bytes i 1)) Err bitreich.org 70 i- for shift = (if big-endian Err bitreich.org 70 i- (* (- bytes i 1) 8) Err bitreich.org 70 i- (* offset 8)) Err bitreich.org 70 i- collect `(ash (aref ,vector (+ ,index ,offset)) ,shift))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro ub-set (value vector index &optional (bytes 1) (endianness :ne)) Err bitreich.org 70 i- (let ((big-endian (member endianness Err bitreich.org 70 i- '(:be #+big-endian :ne #+little-endian :re)))) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- ,@(loop for i from 1 to bytes Err bitreich.org 70 i- for offset = (if big-endian (- bytes i) (1- i)) collect Err bitreich.org 70 i- `(setf (aref ,vector (+ ,index ,offset)) Err bitreich.org 70 i- (ldb (byte 8 ,(* 8 (1- i))) ,value))) Err bitreich.org 70 i- (values)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro string-get (string index) Err bitreich.org 70 i- `(char-code (schar ,string ,index))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro string-set (code string index) Err bitreich.org 70 i- `(setf (schar ,string ,index) (code-char ,code))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; SIMPLE-BASE-STRING would also be a subtype of SIMPLE-STRING so we Err bitreich.org 70 i-;;; don't use that because on SBCL BASE-CHARs can only hold ASCII. Err bitreich.org 70 i-;;; Also, with (> SPEED SAFETY) (setf (schar base-str n) big-char) Err bitreich.org 70 i-;;; will quietly work, sort of. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; XXX: test this on various lisps. Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant unicode-char-code-limit Err bitreich.org 70 i- char-code-limit Err bitreich.org 70 i- "An alias for CL:CHAR-CODE-LIMIT which might be lower than Err bitreich.org 70 i-#x110000 on some Lisps.") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype unicode-char () Err bitreich.org 70 i- "This character type can hold any characters whose CHAR-CODEs Err bitreich.org 70 i-are less than UNICODE-CHAR-CODE-LIMIT." Err bitreich.org 70 i- #+lispworks 'lw:simple-char Err bitreich.org 70 i- #-lispworks 'character) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype simple-unicode-string () Err bitreich.org 70 i- "Alias for (SIMPLE-ARRAY UNICODE-CHAR (*))." Err bitreich.org 70 i- '(simple-array unicode-char (*))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype unicode-string () Err bitreich.org 70 i- "Alias for (VECTOR UNICODE-CHAR *)." Err bitreich.org 70 i- '(vector unicode-char *)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *string-vector-mappings* Err bitreich.org 70 i- (instantiate-concrete-mappings Err bitreich.org 70 i- ;; :optimize ((speed 3) (safety 0) (debug 0) (compilation-speed 0)) Err bitreich.org 70 i- :octet-seq-setter ub-set Err bitreich.org 70 i- :octet-seq-getter ub-get Err bitreich.org 70 i- :octet-seq-type (simple-array (unsigned-byte 8) (*)) Err bitreich.org 70 i- :code-point-seq-setter string-set Err bitreich.org 70 i- :code-point-seq-getter string-get Err bitreich.org 70 i- :code-point-seq-type simple-unicode-string)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+sbcl Err bitreich.org 70 i-(defparameter *simple-base-string-vector-mappings* Err bitreich.org 70 i- (instantiate-concrete-mappings Err bitreich.org 70 i- ;; :optimize ((speed 3) (safety 0) (debug 0) (compilation-speed 0)) Err bitreich.org 70 i- :instantiate-decoders nil Err bitreich.org 70 i- :octet-seq-setter ub-set Err bitreich.org 70 i- :octet-seq-getter ub-get Err bitreich.org 70 i- :octet-seq-type (simple-array (unsigned-byte 8) (*)) Err bitreich.org 70 i- :code-point-seq-setter string-set Err bitreich.org 70 i- :code-point-seq-getter string-get Err bitreich.org 70 i- :code-point-seq-type simple-base-string)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Do we want a more a specific error condition here? Err bitreich.org 70 i-(defun check-vector-bounds (vector start end) Err bitreich.org 70 i- (unless (<= 0 start end (length vector)) Err bitreich.org 70 i- (error "Invalid start (~A) and end (~A) values for vector of length ~A." Err bitreich.org 70 i- start end (length vector)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-simple-vector (((v vector) (s start) (e end)) &body body) Err bitreich.org 70 i- "If VECTOR is a displaced or adjustable array, binds V to the Err bitreich.org 70 i-underlying simple vector, adds an adequate offset to START and Err bitreich.org 70 i-END and binds those offset values to S and E. Otherwise, if Err bitreich.org 70 i-VECTOR is already a simple array, it's simply bound to V with no Err bitreich.org 70 i-further changes. Err bitreich.org 70 i- Err bitreich.org 70 i-START and END are unchecked and assumed to be within bounds. Err bitreich.org 70 i- Err bitreich.org 70 i-Note that in some Lisps, a slow copying implementation is Err bitreich.org 70 i-necessary to obtain a simple vector thus V will be bound to a Err bitreich.org 70 i-copy of VECTOR coerced to a simple-vector. Therefore, you Err bitreich.org 70 i-shouldn't attempt to modify V." Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- `(sb-kernel:with-array-data ((,v ,vector) (,s ,start) (,e ,end)) Err bitreich.org 70 i- ,@body) Err bitreich.org 70 i- #+(or cmu scl) Err bitreich.org 70 i- `(lisp::with-array-data ((,v ,vector) (,s ,start) (,e ,end)) Err bitreich.org 70 i- ,@body) Err bitreich.org 70 i- #+openmcl Err bitreich.org 70 i- (with-unique-names (offset) Err bitreich.org 70 i- `(multiple-value-bind (,v ,offset) Err bitreich.org 70 i- (ccl::array-data-and-offset ,vector) Err bitreich.org 70 i- (let ((,s (+ ,start ,offset)) Err bitreich.org 70 i- (,e (+ ,end ,offset))) Err bitreich.org 70 i- ,@body))) Err bitreich.org 70 i- #+allegro Err bitreich.org 70 i- (with-unique-names (offset) Err bitreich.org 70 i- `(excl::with-underlying-simple-vector (,vector ,v ,offset) Err bitreich.org 70 i- (let ((,e (+ ,end ,offset)) Err bitreich.org 70 i- (,s (+ ,start ,offset))) Err bitreich.org 70 i- ,@body))) Err bitreich.org 70 i- ;; slow, copying implementation Err bitreich.org 70 i- #-(or sbcl cmu scl openmcl allegro) Err bitreich.org 70 i- (once-only (vector) Err bitreich.org 70 i- `(funcall (if (adjustable-array-p ,vector) Err bitreich.org 70 i- #'call-with-array-data/copy Err bitreich.org 70 i- #'call-with-array-data/fast) Err bitreich.org 70 i- ,vector ,start ,end Err bitreich.org 70 i- (lambda (,v ,s ,e) ,@body)))) Err bitreich.org 70 i- Err bitreich.org 70 i-#-(or sbcl cmu scl openmcl allegro) Err bitreich.org 70 i-(progn Err bitreich.org 70 i- ;; Stolen from f2cl. Err bitreich.org 70 i- (defun array-data-and-offset (array) Err bitreich.org 70 i- (loop with offset = 0 do Err bitreich.org 70 i- (multiple-value-bind (displaced-to index-offset) Err bitreich.org 70 i- (array-displacement array) Err bitreich.org 70 i- (when (null displaced-to) Err bitreich.org 70 i- (return-from array-data-and-offset Err bitreich.org 70 i- (values array offset))) Err bitreich.org 70 i- (incf offset index-offset) Err bitreich.org 70 i- (setf array displaced-to)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun call-with-array-data/fast (vector start end fn) Err bitreich.org 70 i- (multiple-value-bind (data offset) Err bitreich.org 70 i- (array-data-and-offset vector) Err bitreich.org 70 i- (funcall fn data (+ offset start) (+ offset end)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun call-with-array-data/copy (vector start end fn) Err bitreich.org 70 i- (funcall fn (replace (make-array (- end start) :element-type Err bitreich.org 70 i- (array-element-type vector)) Err bitreich.org 70 i- vector :start2 start :end2 end) Err bitreich.org 70 i- 0 (- end start)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-checked-simple-vector (((v vector) (s start) (e end)) &body body) Err bitreich.org 70 i- "Like WITH-SIMPLE-VECTOR but bound-checks START and END." Err bitreich.org 70 i- (once-only (vector start) Err bitreich.org 70 i- `(let ((,e (or ,end (length ,vector)))) Err bitreich.org 70 i- (check-vector-bounds ,vector ,start ,e) Err bitreich.org 70 i- (with-simple-vector ((,v ,vector) (,s ,start) (,e ,e)) Err bitreich.org 70 i- ,@body)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Future features these functions should have: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; * null-terminate Err bitreich.org 70 i-;;; * specify target vector/string + offset Err bitreich.org 70 i-;;; * documentation :) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline octets-to-string string-to-octets string-size-in-octets Err bitreich.org 70 i- vector-size-in-chars concatenate-strings-to-octets Err bitreich.org 70 i- bom-vector)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun octets-to-string (vector &key (start 0) end Err bitreich.org 70 i- (errorp (not *suppress-character-coding-errors*)) Err bitreich.org 70 i- (encoding *default-character-encoding*)) Err bitreich.org 70 i- (check-type vector (vector (unsigned-byte 8))) Err bitreich.org 70 i- (with-checked-simple-vector ((vector vector) (start start) (end end)) Err bitreich.org 70 i- (declare (type (simple-array (unsigned-byte 8) (*)) vector)) Err bitreich.org 70 i- (let ((*suppress-character-coding-errors* (not errorp)) Err bitreich.org 70 i- (mapping (lookup-mapping *string-vector-mappings* encoding))) Err bitreich.org 70 i- (multiple-value-bind (size new-end) Err bitreich.org 70 i- (funcall (code-point-counter mapping) vector start end -1) Err bitreich.org 70 i- ;; TODO we could optimize ASCII here: the result should Err bitreich.org 70 i- ;; be a simple-base-string filled using code-char... Err bitreich.org 70 i- (let ((string (make-string size :element-type 'unicode-char))) Err bitreich.org 70 i- (funcall (decoder mapping) vector start new-end string 0) Err bitreich.org 70 i- string))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun bom-vector (encoding use-bom) Err bitreich.org 70 i- (check-type use-bom (member :default t nil)) Err bitreich.org 70 i- (the simple-vector Err bitreich.org 70 i- (if (null use-bom) Err bitreich.org 70 i- #() Err bitreich.org 70 i- (let ((enc (typecase encoding Err bitreich.org 70 i- (external-format (external-format-encoding encoding)) Err bitreich.org 70 i- (t (get-character-encoding encoding))))) Err bitreich.org 70 i- (if (or (eq use-bom t) Err bitreich.org 70 i- (and (eq use-bom :default) (enc-use-bom enc))) Err bitreich.org 70 i- ;; VALUES avoids a "type assertion too complex to check" note. Err bitreich.org 70 i- (values (enc-bom-encoding enc)) Err bitreich.org 70 i- #()))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun string-to-octets (string &key (encoding *default-character-encoding*) Err bitreich.org 70 i- (start 0) end (use-bom :default) Err bitreich.org 70 i- (errorp (not *suppress-character-coding-errors*))) Err bitreich.org 70 i- (declare (optimize (speed 3) (safety 2))) Err bitreich.org 70 i- (let ((*suppress-character-coding-errors* (not errorp))) Err bitreich.org 70 i- (etypecase string Err bitreich.org 70 i- ;; On some lisps (e.g. clisp and ccl) all strings are BASE-STRING and all Err bitreich.org 70 i- ;; characters are BASE-CHAR. So, only enable this optimization for Err bitreich.org 70 i- ;; selected targets. Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- (simple-base-string Err bitreich.org 70 i- (unless end Err bitreich.org 70 i- (setf end (length string))) Err bitreich.org 70 i- (check-vector-bounds string start end) Err bitreich.org 70 i- (let* ((mapping (lookup-mapping *simple-base-string-vector-mappings* Err bitreich.org 70 i- encoding)) Err bitreich.org 70 i- (bom (bom-vector encoding use-bom)) Err bitreich.org 70 i- (bom-length (length bom)) Err bitreich.org 70 i- ;; OPTIMIZE: we could use the (length string) information here Err bitreich.org 70 i- ;; because it's a simple-base-string where each character <= 127 Err bitreich.org 70 i- (result (make-array Err bitreich.org 70 i- (+ (the array-index Err bitreich.org 70 i- (funcall (the function (octet-counter mapping)) Err bitreich.org 70 i- string start end -1)) Err bitreich.org 70 i- bom-length) Err bitreich.org 70 i- :element-type '(unsigned-byte 8)))) Err bitreich.org 70 i- (replace result bom) Err bitreich.org 70 i- (funcall (the function (encoder mapping)) Err bitreich.org 70 i- string start end result bom-length) Err bitreich.org 70 i- result)) Err bitreich.org 70 i- (string Err bitreich.org 70 i- ;; FIXME: we shouldn't really need that coercion to UNICODE-STRING Err bitreich.org 70 i- ;; but we kind of because it's declared all over. To avoid that, Err bitreich.org 70 i- ;; we'd need different types for input and output strings. Or maybe Err bitreich.org 70 i- ;; this is not a problem; figure that out. Err bitreich.org 70 i- (with-checked-simple-vector ((string (coerce string 'unicode-string)) Err bitreich.org 70 i- (start start) (end end)) Err bitreich.org 70 i- (declare (type simple-unicode-string string)) Err bitreich.org 70 i- (let* ((mapping (lookup-mapping *string-vector-mappings* encoding)) Err bitreich.org 70 i- (bom (bom-vector encoding use-bom)) Err bitreich.org 70 i- (bom-length (length bom)) Err bitreich.org 70 i- (result (make-array Err bitreich.org 70 i- (+ (the array-index Err bitreich.org 70 i- (funcall (the function (octet-counter mapping)) Err bitreich.org 70 i- string start end -1)) Err bitreich.org 70 i- bom-length) Err bitreich.org 70 i- :element-type '(unsigned-byte 8)))) Err bitreich.org 70 i- (replace result bom) Err bitreich.org 70 i- (funcall (the function (encoder mapping)) Err bitreich.org 70 i- string start end result bom-length) Err bitreich.org 70 i- result)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun concatenate-strings-to-octets (encoding &rest strings) Err bitreich.org 70 i- "Optimized equivalent of Err bitreich.org 70 i-\(string-to-octets \(apply #'concatenate 'string strings) Err bitreich.org 70 i- :encoding encoding)" Err bitreich.org 70 i- (declare (dynamic-extent strings)) Err bitreich.org 70 i- (let* ((mapping (lookup-mapping *string-vector-mappings* encoding)) Err bitreich.org 70 i- (octet-counter (octet-counter mapping)) Err bitreich.org 70 i- (vector (make-array Err bitreich.org 70 i- (the array-index Err bitreich.org 70 i- (reduce #'+ strings Err bitreich.org 70 i- :key (lambda (string) Err bitreich.org 70 i- (funcall octet-counter Err bitreich.org 70 i- string 0 (length string) -1)))) Err bitreich.org 70 i- :element-type '(unsigned-byte 8))) Err bitreich.org 70 i- (current-index 0)) Err bitreich.org 70 i- (declare (type array-index current-index)) Err bitreich.org 70 i- (dolist (string strings) Err bitreich.org 70 i- (check-type string string) Err bitreich.org 70 i- (with-checked-simple-vector ((string (coerce string 'unicode-string)) Err bitreich.org 70 i- (start 0) (end (length string))) Err bitreich.org 70 i- (declare (type simple-unicode-string string)) Err bitreich.org 70 i- (incf current-index Err bitreich.org 70 i- (funcall (encoder mapping) Err bitreich.org 70 i- string start end vector current-index)))) Err bitreich.org 70 i- vector)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun string-size-in-octets (string &key (start 0) end (max -1 maxp) Err bitreich.org 70 i- (errorp (not *suppress-character-coding-errors*)) Err bitreich.org 70 i- (encoding *default-character-encoding*)) Err bitreich.org 70 i- (check-type string string) Err bitreich.org 70 i- (with-checked-simple-vector ((string (coerce string 'unicode-string)) Err bitreich.org 70 i- (start start) (end end)) Err bitreich.org 70 i- (declare (type simple-unicode-string string)) Err bitreich.org 70 i- (let ((mapping (lookup-mapping *string-vector-mappings* encoding)) Err bitreich.org 70 i- (*suppress-character-coding-errors* (not errorp))) Err bitreich.org 70 i- (when maxp (assert (plusp max))) Err bitreich.org 70 i- (funcall (octet-counter mapping) string start end max)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun vector-size-in-chars (vector &key (start 0) end (max -1 maxp) Err bitreich.org 70 i- (errorp (not *suppress-character-coding-errors*)) Err bitreich.org 70 i- (encoding *default-character-encoding*)) Err bitreich.org 70 i- (check-type vector (vector (unsigned-byte 8))) Err bitreich.org 70 i- (with-checked-simple-vector ((vector vector) (start start) (end end)) Err bitreich.org 70 i- (declare (type (simple-array (unsigned-byte 8) (*)) vector)) Err bitreich.org 70 i- (let ((mapping (lookup-mapping *string-vector-mappings* encoding)) Err bitreich.org 70 i- (*suppress-character-coding-errors* (not errorp))) Err bitreich.org 70 i- (when maxp (assert (plusp max))) Err bitreich.org 70 i- (funcall (code-point-counter mapping) vector start end max)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (notinline octets-to-string string-to-octets string-size-in-octets Err bitreich.org 70 i- vector-size-in-chars concatenate-strings-to-octets)) Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/tests/ascii.txt b/3rdparties/software/babel-20171227-git/tests/ascii.txt /scm/clic/file/3rdparties/software/babel-20171227-git/tests/ascii.txt.gph bitreich.org 70 i@@ -1,212 +0,0 @@ Err bitreich.org 70 i- Err bitreich.org 70 i-UTF-8 encoded sample plain-text file Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Markus Kuhn [maks kun] 2002-07-25 Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-The ASCII compatible UTF-8 encoding used in this plain-text file Err bitreich.org 70 i-is defined in Unicode, ISO 10646-1, and RFC 2279. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Using Unicode/UTF-8, you can write in emails and source code things such as Err bitreich.org 70 i- Err bitreich.org 70 i-Mathematics and sciences: Err bitreich.org 70 i- Err bitreich.org 70 i- Eda = Q, n , f(i) = g(i), Err bitreich.org 70 i- a+b Err bitreich.org 70 i- x: x = x, = ( ), Err bitreich.org 70 i- c Err bitreich.org 70 i- , Err bitreich.org 70 i- Err bitreich.org 70 i- < a b c d (A B), Err bitreich.org 70 i- a-b Err bitreich.org 70 i- 2H + O 2HO, R = 4.7 k, 200 mm i=1 Err bitreich.org 70 i- Err bitreich.org 70 i-Linguistics and dictionaries: Err bitreich.org 70 i- Err bitreich.org 70 i- i ntnnl fntk sosien Err bitreich.org 70 i- Y [psiln], Yen [jn], Yoga [jog] Err bitreich.org 70 i- Err bitreich.org 70 i-APL: Err bitreich.org 70 i- Err bitreich.org 70 i- ((VV)=V)/V,V Err bitreich.org 70 i- Err bitreich.org 70 i-Nicer typography in plain text files: Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- single and double quotes Err bitreich.org 70 i- Err bitreich.org 70 i- Curly apostrophes: Weve been here Err bitreich.org 70 i- Err bitreich.org 70 i- Latin-1 apostrophe and accents: '` Err bitreich.org 70 i- Err bitreich.org 70 i- deutsche Anfhrungszeichen Err bitreich.org 70 i- Err bitreich.org 70 i- , , , , 34, , 5/+5, , Err bitreich.org 70 i- Err bitreich.org 70 i- ASCII safety test: 1lI|, 0OD, 8B Err bitreich.org 70 i- Err bitreich.org 70 i- the euro symbol: 14.95 Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Combining characters: Err bitreich.org 70 i- Err bitreich.org 70 i- STARGTE SG-1, a = v = r, a b Err bitreich.org 70 i- Err bitreich.org 70 i-Greek (in Polytonic): Err bitreich.org 70 i- Err bitreich.org 70 i- The Greek anthem: Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- , Err bitreich.org 70 i- Err bitreich.org 70 i- . Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- , , ! Err bitreich.org 70 i- Err bitreich.org 70 i- From a speech of Demosthenes in the 4th century BC: Err bitreich.org 70 i- Err bitreich.org 70 i- , , Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- , Err bitreich.org 70 i- , Err bitreich.org 70 i- . Err bitreich.org 70 i- , , Err bitreich.org 70 i- . , Err bitreich.org 70 i- Err bitreich.org 70 i- , , Err bitreich.org 70 i- Err bitreich.org 70 i- , Err bitreich.org 70 i- . , Err bitreich.org 70 i- Err bitreich.org 70 i- , Err bitreich.org 70 i- . Err bitreich.org 70 i- Err bitreich.org 70 i- , Err bitreich.org 70 i- Err bitreich.org 70 i-Georgian: Err bitreich.org 70 i- Err bitreich.org 70 i- From a Unicode conference invitation: Err bitreich.org 70 i- Err bitreich.org 70 i- Unicode- Err bitreich.org 70 i- , 10-12 , Err bitreich.org 70 i- . , . Err bitreich.org 70 i- Unicode-, Err bitreich.org 70 i- , Unicode- Err bitreich.org 70 i- , , , Err bitreich.org 70 i- . Err bitreich.org 70 i- Err bitreich.org 70 i-Russian: Err bitreich.org 70 i- Err bitreich.org 70 i- From a Unicode conference invitation: Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Unicode, 10-12 1997 . Err bitreich.org 70 i- Err bitreich.org 70 i- Unicode, , Err bitreich.org 70 i- Unicode Err bitreich.org 70 i- , , . Err bitreich.org 70 i- Err bitreich.org 70 i-Thai (UCS Level 2): Err bitreich.org 70 i- Err bitreich.org 70 i- Excerpt from a poetry on The Romance of The Three Kingdoms (a Chinese Err bitreich.org 70 i- classic 'San Gua'): Err bitreich.org 70 i- Err bitreich.org 70 i- [----------------------------|------------------------] Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- (The above is a two-column text. If combining characters are handled Err bitreich.org 70 i- correctly, the lines of the second column should be aligned with the Err bitreich.org 70 i- | character above.) Err bitreich.org 70 i- Err bitreich.org 70 i-Ethiopian: Err bitreich.org 70 i- Err bitreich.org 70 i- Proverbs in the Amharic language: Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Runes: Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- (Old English, which transcribed into Latin reads 'He cwaeth that he Err bitreich.org 70 i- bude thaem lande northweardum with tha Westsae.' and means 'He said Err bitreich.org 70 i- that he lived in the northern land near the Western Sea.') Err bitreich.org 70 i- Err bitreich.org 70 i-Braille: Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- (The first couple of paragraphs of "A Christmas Carol" by Dickens) Err bitreich.org 70 i- Err bitreich.org 70 i-Compact font selection example text: Err bitreich.org 70 i- Err bitreich.org 70 i- ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789 Err bitreich.org 70 i- abcdefghijklmnopqrstuvwxyz Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Greetings in various languages: Err bitreich.org 70 i- Err bitreich.org 70 i- Hello world, , Err bitreich.org 70 i- Err bitreich.org 70 i-Box drawing alignment tests: Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/tests/ascii.txt-utf8 b/3rdparties/software/babel-20171227-git/tests/ascii.txt-utf8 /scm/clic/file/3rdparties/software/babel-20171227-git/tests/ascii.txt-utf8.gph bitreich.org 70 i@@ -1,212 +0,0 @@ Err bitreich.org 70 i- Err bitreich.org 70 i-UTF-8 encoded sample plain-text file Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Markus Kuhn [maks kun] 2002-07-25 Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-The ASCII compatible UTF-8 encoding used in this plain-text file Err bitreich.org 70 i-is defined in Unicode, ISO 10646-1, and RFC 2279. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Using Unicode/UTF-8, you can write in emails and source code things such as Err bitreich.org 70 i- Err bitreich.org 70 i-Mathematics and sciences: Err bitreich.org 70 i- Err bitreich.org 70 i- Eda = Q, n , f(i) = g(i), Err bitreich.org 70 i- a+b Err bitreich.org 70 i- x: x = x, = ( ), Err bitreich.org 70 i- c Err bitreich.org 70 i- , Err bitreich.org 70 i- Err bitreich.org 70 i- < a b c d (A B), Err bitreich.org 70 i- a-b Err bitreich.org 70 i- 2H + O 2HO, R = 4.7 k, 200 mm i=1 Err bitreich.org 70 i- Err bitreich.org 70 i-Linguistics and dictionaries: Err bitreich.org 70 i- Err bitreich.org 70 i- i ntnnl fntk sosien Err bitreich.org 70 i- Y [psiln], Yen [jn], Yoga [jog] Err bitreich.org 70 i- Err bitreich.org 70 i-APL: Err bitreich.org 70 i- Err bitreich.org 70 i- ((VV)=V)/V,V Err bitreich.org 70 i- Err bitreich.org 70 i-Nicer typography in plain text files: Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- single and double quotes Err bitreich.org 70 i- Err bitreich.org 70 i- Curly apostrophes: Weve been here Err bitreich.org 70 i- Err bitreich.org 70 i- Latin-1 apostrophe and accents: '` Err bitreich.org 70 i- Err bitreich.org 70 i- deutsche Anfhrungszeichen Err bitreich.org 70 i- Err bitreich.org 70 i- , , , , 34, , 5/+5, , Err bitreich.org 70 i- Err bitreich.org 70 i- ASCII safety test: 1lI|, 0OD, 8B Err bitreich.org 70 i- Err bitreich.org 70 i- the euro symbol: 14.95 Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Combining characters: Err bitreich.org 70 i- Err bitreich.org 70 i- STARGTE SG-1, a = v = r, a b Err bitreich.org 70 i- Err bitreich.org 70 i-Greek (in Polytonic): Err bitreich.org 70 i- Err bitreich.org 70 i- The Greek anthem: Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- , Err bitreich.org 70 i- Err bitreich.org 70 i- . Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- , , ! Err bitreich.org 70 i- Err bitreich.org 70 i- From a speech of Demosthenes in the 4th century BC: Err bitreich.org 70 i- Err bitreich.org 70 i- , , Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- , Err bitreich.org 70 i- , Err bitreich.org 70 i- . Err bitreich.org 70 i- , , Err bitreich.org 70 i- . , Err bitreich.org 70 i- Err bitreich.org 70 i- , , Err bitreich.org 70 i- Err bitreich.org 70 i- , Err bitreich.org 70 i- . , Err bitreich.org 70 i- Err bitreich.org 70 i- , Err bitreich.org 70 i- . Err bitreich.org 70 i- Err bitreich.org 70 i- , Err bitreich.org 70 i- Err bitreich.org 70 i-Georgian: Err bitreich.org 70 i- Err bitreich.org 70 i- From a Unicode conference invitation: Err bitreich.org 70 i- Err bitreich.org 70 i- Unicode- Err bitreich.org 70 i- , 10-12 , Err bitreich.org 70 i- . , . Err bitreich.org 70 i- Unicode-, Err bitreich.org 70 i- , Unicode- Err bitreich.org 70 i- , , , Err bitreich.org 70 i- . Err bitreich.org 70 i- Err bitreich.org 70 i-Russian: Err bitreich.org 70 i- Err bitreich.org 70 i- From a Unicode conference invitation: Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Unicode, 10-12 1997 . Err bitreich.org 70 i- Err bitreich.org 70 i- Unicode, , Err bitreich.org 70 i- Unicode Err bitreich.org 70 i- , , . Err bitreich.org 70 i- Err bitreich.org 70 i-Thai (UCS Level 2): Err bitreich.org 70 i- Err bitreich.org 70 i- Excerpt from a poetry on The Romance of The Three Kingdoms (a Chinese Err bitreich.org 70 i- classic 'San Gua'): Err bitreich.org 70 i- Err bitreich.org 70 i- [----------------------------|------------------------] Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- (The above is a two-column text. If combining characters are handled Err bitreich.org 70 i- correctly, the lines of the second column should be aligned with the Err bitreich.org 70 i- | character above.) Err bitreich.org 70 i- Err bitreich.org 70 i-Ethiopian: Err bitreich.org 70 i- Err bitreich.org 70 i- Proverbs in the Amharic language: Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Runes: Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- (Old English, which transcribed into Latin reads 'He cwaeth that he Err bitreich.org 70 i- bude thaem lande northweardum with tha Westsae.' and means 'He said Err bitreich.org 70 i- that he lived in the northern land near the Western Sea.') Err bitreich.org 70 i- Err bitreich.org 70 i-Braille: Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- (The first couple of paragraphs of "A Christmas Carol" by Dickens) Err bitreich.org 70 i- Err bitreich.org 70 i-Compact font selection example text: Err bitreich.org 70 i- Err bitreich.org 70 i- ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789 Err bitreich.org 70 i- abcdefghijklmnopqrstuvwxyz Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Greetings in various languages: Err bitreich.org 70 i- Err bitreich.org 70 i- Hello world, , Err bitreich.org 70 i- Err bitreich.org 70 i-Box drawing alignment tests: Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/tests/benchmarks.lisp b/3rdparties/software/babel-20171227-git/tests/benchmarks.lisp /scm/clic/file/3rdparties/software/babel-20171227-git/tests/benchmarks.lisp.gph bitreich.org 70 i@@ -1,43 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; benchmarks.lisp --- Benchmarks, Babel vs. other implementations. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:babel-benchmarks Err bitreich.org 70 i- (:use #:cl #:babel)) Err bitreich.org 70 i-(in-package #:babel-benchmarks) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun benchmark (enc file-name file-type &optional (n 100)) Err bitreich.org 70 i- (let* ((octets (read-test-file file-name file-type)) Err bitreich.org 70 i- (string (octets-to-string octets :encoding enc))) Err bitreich.org 70 i- (write-line ";; testing SB-EXT:STRING-TO-OCTETS") Err bitreich.org 70 i- (time (loop repeat n do Err bitreich.org 70 i- (sb-ext:string-to-octets string :external-format enc))) Err bitreich.org 70 i- (write-line ";; testing BABEL:STRING-TO-OCTETS") Err bitreich.org 70 i- (time (loop repeat n do (string-to-octets string :encoding enc))) Err bitreich.org 70 i- (write-line ";; testing SB-EXT:OCTETS-TO-STRING") Err bitreich.org 70 i- (time (loop repeat n do Err bitreich.org 70 i- (sb-ext:octets-to-string octets :external-format enc))) Err bitreich.org 70 i- (write-line ";; testing BABEL:OCTETS-TO-STRING") Err bitreich.org 70 i- (time (loop repeat n do (octets-to-string octets :encoding enc))))) Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/tests/ebcdic-us.txt b/3rdparties/software/babel-20171227-git/tests/ebcdic-us.txt /scm/clic/file/3rdparties/software/babel-20171227-git/tests/ebcdic-us.txt.gph bitreich.org 70 i@@ -1 +0,0 @@ Err bitreich.org 70 i-%`@@@`@%%%ԁ@Ҥ@@@LzaaKKKKaan@@``%%%㈅@@@`@@@@@`@%@@@䕉k@@`k@@@K%%%䢉@䕉a`k@@@@@@@@@@@%%ԁ@@z%%@@@ń@~@k@@@@k@@M]@~@@M]k@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N@%@@z@@~@k@@@_@~@_M_@@]k@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@k@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@L@@@@@@@@@@@M@@]k@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`%@@@N@@@k@@~@K@k@@@@@@@@~@@@@%%Ӊ@@z%%@@@@@%@@@k@腕@k@薇@%%z%%@@MM]~]ak@@@@%%Չ@@@@@z%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@ä@z@慥@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@Ӂ`@@@z@}y@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@k@k@k@k@k@k@aNk@k@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@z@Ok@k@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@z@@K@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%Ö@z%%@@@`k@@~@@~@k@@@%%Ǚ@M@ז]z%%@@㈅@Ǚ@z%%@@@@@@%@@@@@k%@@@@@@%@@@@@@@K%%@@@@@%@@@@@%@@@@@%@@k@@k@Z%%@@ƙ@@@@ą@@@@@z%%@@@@@@k@@@k%@@@@@@@@@@@%@@@@@@@@@@%@@@@@k@@@%@@@@k@@@@@@%@@@@@K@@@@@%@@@@@@@@k@@@k%@@@@@@@K@@k@@%@@@@@@@@@@@@%@@k@@@@@@@k@@%@@@@@@@@@%@@@@@@k@@@%@@K@@@@@k@@@@%@@@@@@@@@@@%@@@@@k@@@@%@@@@@K%%@@k@@%%Džz%%@@ƙ@@䕉@@z%%@@@@@@䕉`@@%@@@k@@@`@k%@@K@k@K@@@@%@@@@@@@@䕉`k%@@@@k@䕉`@%@@@k@@@k@k%@@@@@@@K%%٤z%%@@ƙ@@䕉@@z%%@@@@@@@@%@@䕉k@@@`@@@@@@@K%@@@@@@@@@@%@@@@䕉k@@@k@@%@@@䕉@@@@@@%@@k@k@@@@@K%%㈁@M@Ӆ@]z%%@@ŧ@@@@@㈅@ٖ@@㈅@㈙@҉@M@È%@@@}⁕@Ǥ}]z%%@@````````````````````````````O````````````````````````%@@@@@@@%@@@@@@@@@%@@@@@@@@@@@@@@@%@@@@@@@@@@@%@@@@@@@@@@%@@@@@@@@@@@@%@@@@@@@@@@@@@@%@@@@@@@@@@@@@@%%@@M㈅@@@@`@K@Ɇ@@@@%@@k@@@@@@@@@@@%@@O@@K]%%ţz%%@@י@@@@z%%@@@@@%@@@@@%@@@@@%@@@@@@@%@@@@@%@@@@@%@@@%@@@@@@%@@@@@%@@@@@@@%@@@@@@%@@@@@@@%@@@@@%@@@@@@@%@@@@@@@%@@@@@%@@@@@@%@@@@@%%٤z%%@@@@@@@@@@@@@%%@@M֓@ŕk@@@@Ӂ@@}ȅ@@@%@@@@@@@@慢K}@@@}ȅ@%@@@@@@@@@@@慢@⅁K}]%%™z%%@@@@@@%%@@@@@@@@@@@%@@@@@@@@@@%@@@@@@@@@%@@@@@@@@@%@@@@@@@@@@%@@@@@@@%%@@@@@@@@@%%@@@@@@@@@@@@%@@@@@@@@@%@@@@@@@@@@%@@@@@@@@@@%@@@@@@@@@@%@@@@@@@@@%@@@@@@@@@@@%@@@@@@@@@%@@@@@@@@%%@@M㈅@@@@@@@È@Á@@ĉ]%%Ö@@@@z%%@@@a%@@@%@@@@%@@@@@%%Ǚ@@@z%%@@ȅ@k@@k@%%–@@@z@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@% Err bitreich.org 70 i-\ No newline at end of file Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/tests/ebcdic-us.txt-utf8 b/3rdparties/software/babel-20171227-git/tests/ebcdic-us.txt-utf8 /scm/clic/file/3rdparties/software/babel-20171227-git/tests/ebcdic-us.txt-utf8.gph bitreich.org 70 i@@ -1,212 +0,0 @@ Err bitreich.org 70 i- Err bitreich.org 70 i-UTF-8 encoded sample plain-text file Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Markus Kuhn maks kun 2002-07-25 Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-The ASCII compatible UTF-8 encoding used in this plain-text file Err bitreich.org 70 i-is defined in Unicode, ISO 10646-1, and RFC 2279. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Using Unicode/UTF-8, you can write in emails and source code things such as Err bitreich.org 70 i- Err bitreich.org 70 i-Mathematics and sciences: Err bitreich.org 70 i- Err bitreich.org 70 i- Eda = Q, n , f(i) = g(i), Err bitreich.org 70 i- a+b Err bitreich.org 70 i- x: x = x, ¬ = ¬(¬ ), Err bitreich.org 70 i- c Err bitreich.org 70 i- , Err bitreich.org 70 i- Err bitreich.org 70 i- < a b c d (A B), Err bitreich.org 70 i- a-b Err bitreich.org 70 i- 2H + O 2HO, R = 4.7 k, 200 mm i=1 Err bitreich.org 70 i- Err bitreich.org 70 i-Linguistics and dictionaries: Err bitreich.org 70 i- Err bitreich.org 70 i- i ntnnl fntk sosien Err bitreich.org 70 i- Y psiln, Yen jn, Yoga jog Err bitreich.org 70 i- Err bitreich.org 70 i-APL: Err bitreich.org 70 i- Err bitreich.org 70 i- ((VV)=V)/V,V Err bitreich.org 70 i- Err bitreich.org 70 i-Nicer typography in plain text files: Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- single and double quotes Err bitreich.org 70 i- Err bitreich.org 70 i- Curly apostrophes: Weve been here Err bitreich.org 70 i- Err bitreich.org 70 i- Latin-1 apostrophe and accents: '` Err bitreich.org 70 i- Err bitreich.org 70 i- deutsche Anfhrungszeichen Err bitreich.org 70 i- Err bitreich.org 70 i- , , , , 34, , 5/+5, , Err bitreich.org 70 i- Err bitreich.org 70 i- ASCII safety test: 1lI|, 0OD, 8B Err bitreich.org 70 i- Err bitreich.org 70 i- the euro symbol: 14.95 Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Combining characters: Err bitreich.org 70 i- Err bitreich.org 70 i- STARGTE SG-1, a = v = r, a b Err bitreich.org 70 i- Err bitreich.org 70 i-Greek (in Polytonic): Err bitreich.org 70 i- Err bitreich.org 70 i- The Greek anthem: Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- , Err bitreich.org 70 i- Err bitreich.org 70 i- . Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- , , ! Err bitreich.org 70 i- Err bitreich.org 70 i- From a speech of Demosthenes in the 4th century BC: Err bitreich.org 70 i- Err bitreich.org 70 i- , , Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- , Err bitreich.org 70 i- , Err bitreich.org 70 i- . Err bitreich.org 70 i- , , Err bitreich.org 70 i- . , Err bitreich.org 70 i- Err bitreich.org 70 i- , , Err bitreich.org 70 i- Err bitreich.org 70 i- , Err bitreich.org 70 i- . , Err bitreich.org 70 i- Err bitreich.org 70 i- , Err bitreich.org 70 i- . Err bitreich.org 70 i- Err bitreich.org 70 i- , Err bitreich.org 70 i- Err bitreich.org 70 i-Georgian: Err bitreich.org 70 i- Err bitreich.org 70 i- From a Unicode conference invitation: Err bitreich.org 70 i- Err bitreich.org 70 i- Unicode- Err bitreich.org 70 i- , 10-12 , Err bitreich.org 70 i- . , . Err bitreich.org 70 i- Unicode-, Err bitreich.org 70 i- , Unicode- Err bitreich.org 70 i- , , , Err bitreich.org 70 i- . Err bitreich.org 70 i- Err bitreich.org 70 i-Russian: Err bitreich.org 70 i- Err bitreich.org 70 i- From a Unicode conference invitation: Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Unicode, 10-12 1997 . Err bitreich.org 70 i- Err bitreich.org 70 i- Unicode, , Err bitreich.org 70 i- Unicode Err bitreich.org 70 i- , , . Err bitreich.org 70 i- Err bitreich.org 70 i-Thai (UCS Level 2): Err bitreich.org 70 i- Err bitreich.org 70 i- Excerpt from a poetry on The Romance of The Three Kingdoms (a Chinese Err bitreich.org 70 i- classic 'San Gua'): Err bitreich.org 70 i- Err bitreich.org 70 i- ----------------------------|------------------------ Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- (The above is a two-column text. If combining characters are handled Err bitreich.org 70 i- correctly, the lines of the second column should be aligned with the Err bitreich.org 70 i- | character above.) Err bitreich.org 70 i- Err bitreich.org 70 i-Ethiopian: Err bitreich.org 70 i- Err bitreich.org 70 i- Proverbs in the Amharic language: Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Runes: Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- (Old English, which transcribed into Latin reads 'He cwaeth that he Err bitreich.org 70 i- bude thaem lande northweardum with tha Westsae.' and means 'He said Err bitreich.org 70 i- that he lived in the northern land near the Western Sea.') Err bitreich.org 70 i- Err bitreich.org 70 i-Braille: Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- (The first couple of paragraphs of "A Christmas Carol" by Dickens) Err bitreich.org 70 i- Err bitreich.org 70 i-Compact font selection example text: Err bitreich.org 70 i- Err bitreich.org 70 i- ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789 Err bitreich.org 70 i- abcdefghijklmnopqrstuvwxyz Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Greetings in various languages: Err bitreich.org 70 i- Err bitreich.org 70 i- Hello world, , Err bitreich.org 70 i- Err bitreich.org 70 i-Box drawing alignment tests: Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/tests/gen-test-files.sh b/3rdparties/software/babel-20171227-git/tests/gen-test-files.sh /scm/clic/file/3rdparties/software/babel-20171227-git/tests/gen-test-files.sh.gph bitreich.org 70 i@@ -1,37 +0,0 @@ Err bitreich.org 70 i-#!/bin/sh Err bitreich.org 70 i-# -*- indent-tabs-mode: nil -*- Err bitreich.org 70 i-# Err bitreich.org 70 i-# gen-test-files.sh --- Generates test files with iconv. Err bitreich.org 70 i-# Err bitreich.org 70 i-# Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-# Err bitreich.org 70 i-# Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-# obtaining a copy of this software and associated documentation Err bitreich.org 70 i-# files (the "Software"), to deal in the Software without Err bitreich.org 70 i-# restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-# modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-# of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-# furnished to do so, subject to the following conditions: Err bitreich.org 70 i-# Err bitreich.org 70 i-# The above copyright notice and this permission notice shall be Err bitreich.org 70 i-# included in all copies or substantial portions of the Software. Err bitreich.org 70 i-# Err bitreich.org 70 i-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-# DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-INPUT_FILE="utf-8.txt" Err bitreich.org 70 i-INPUT_ENC="utf-8" Err bitreich.org 70 i-CHARSETS=('ebcdic-us' 'ascii' 'iso-8859-1' 'utf-16' 'utf-32') Err bitreich.org 70 i- Err bitreich.org 70 i-echo "Converting $INPUT_FILE..." Err bitreich.org 70 i-for c in ${CHARSETS[@]}; do Err bitreich.org 70 i- echo " ${c}.txt"; Err bitreich.org 70 i- iconv -c -f $INPUT_ENC -t $c $INPUT_FILE > ${c}.txt; Err bitreich.org 70 i- iconv -f $c -t 'utf-8' ${c}.txt > ${c}.txt-utf8; Err bitreich.org 70 i-done Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/tests/streams.lisp b/3rdparties/software/babel-20171227-git/tests/streams.lisp /scm/clic/file/3rdparties/software/babel-20171227-git/tests/streams.lisp.gph bitreich.org 70 i@@ -1,45 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; streams.lisp --- Unit and regression tests for Babel streams. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, Attila Lendva Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:babel-tests) Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (use-package :babel-streams)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest in-memory-vector-stream Err bitreich.org 70 i- (with-output-to-sequence (output) Err bitreich.org 70 i- ;; TODO use a better test lib and inject asserts for the file position Err bitreich.org 70 i- ;(print (file-position output)) Err bitreich.org 70 i- (write-sequence "éáőűú" output) Err bitreich.org 70 i- ;(print (file-position output)) Err bitreich.org 70 i- (write-char #\ű output) Err bitreich.org 70 i- ;(print (file-position output)) Err bitreich.org 70 i- (write-byte 12 output) Err bitreich.org 70 i- (write-sequence (string-to-octets "körte") output) Err bitreich.org 70 i- (write-string "körte" output) Err bitreich.org 70 i- ;(print (file-position output)) Err bitreich.org 70 i- ) Err bitreich.org 70 i- #(195 169 195 161 197 145 197 177 195 186 197 177 12 107 195 182 114 116 101)) Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/tests/tests.lisp b/3rdparties/software/babel-20171227-git/tests/tests.lisp /scm/clic/file/3rdparties/software/babel-20171227-git/tests/tests.lisp.gph bitreich.org 70 i@@ -1,911 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; tests.lisp --- Unit and regression tests for Babel. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007-2009, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cl-user) Err bitreich.org 70 i-(defpackage #:babel-tests Err bitreich.org 70 i- (:use #:common-lisp #:babel #:babel-encodings #:hu.dwim.stefil) Err bitreich.org 70 i- (:import-from #:alexandria #:ignore-some-conditions) Err bitreich.org 70 i- (:export #:run)) Err bitreich.org 70 i-(in-package #:babel-tests) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun indented-format (level stream format-control &rest format-arguments) Err bitreich.org 70 i- (let ((line-prefix (make-string level :initial-element #\Space))) Err bitreich.org 70 i- (let ((output (format nil "~?~%" format-control format-arguments))) Err bitreich.org 70 i- (with-input-from-string (s output) Err bitreich.org 70 i- (loop for line = (read-line s nil nil) until (null line) Err bitreich.org 70 i- do (format stream "~A~A~%" line-prefix line)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; adapted from https://github.com/luismbo/stefil/blob/master/source/suite.lisp Err bitreich.org 70 i-(defun describe-failed-tests (&key (result *last-test-result*) (stream t)) Err bitreich.org 70 i- "Prints out a report for RESULT in STREAM. Err bitreich.org 70 i- Err bitreich.org 70 i-RESULT defaults to `*last-test-result*' and STREAM defaults to t" Err bitreich.org 70 i- (let ((descs (hu.dwim.stefil::failure-descriptions-of result))) Err bitreich.org 70 i- (cond ((zerop (length descs)) Err bitreich.org 70 i- (format stream "~&~%[no failures!]")) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (format stream "~&~%Test failures:~%") Err bitreich.org 70 i- (dotimes (i (length descs)) Err bitreich.org 70 i- (let ((desc (aref descs i)) Err bitreich.org 70 i- format-control format-arguments) Err bitreich.org 70 i- ;; XXX: most of Stefil's conditions specialise DESCRIBE-OBJECT Err bitreich.org 70 i- ;; with nice human-readable messages. We should add any missing Err bitreich.org 70 i- ;; ones (like UNEXPECTED-ERROR) and ditch this code. Err bitreich.org 70 i- (etypecase desc Err bitreich.org 70 i- (hu.dwim.stefil::unexpected-error Err bitreich.org 70 i- (let ((c (hu.dwim.stefil::condition-of desc))) Err bitreich.org 70 i- (typecase c Err bitreich.org 70 i- (simple-condition Err bitreich.org 70 i- (setf format-control (simple-condition-format-control c)) Err bitreich.org 70 i- (setf format-arguments Err bitreich.org 70 i- (simple-condition-format-arguments c))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (setf format-control "~S" Err bitreich.org 70 i- format-arguments (list c)))))) Err bitreich.org 70 i- (hu.dwim.stefil::failed-assertion Err bitreich.org 70 i- (setf format-control (hu.dwim.stefil::format-control-of desc) Err bitreich.org 70 i- format-arguments (hu.dwim.stefil::format-arguments-of desc))) Err bitreich.org 70 i- (hu.dwim.stefil::missing-condition Err bitreich.org 70 i- (setf format-control "~A" Err bitreich.org 70 i- format-arguments (list (with-output-to-string (stream) Err bitreich.org 70 i- (describe desc stream))))) Err bitreich.org 70 i- (null Err bitreich.org 70 i- (setf format-control "Test succeeded!"))) Err bitreich.org 70 i- (format stream "~%Failure ~A: ~A when running ~S~%~%" Err bitreich.org 70 i- (1+ i) Err bitreich.org 70 i- (type-of desc) Err bitreich.org 70 i- (hu.dwim.stefil::name-of (hu.dwim.stefil::test-of (first (hu.dwim.stefil::test-context-backtrace-of desc))))) Err bitreich.org 70 i- (indented-format 4 stream "~?" format-control format-arguments))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun run () Err bitreich.org 70 i- (let ((test-run (without-debugging (babel-tests)))) Err bitreich.org 70 i- (print test-run) Err bitreich.org 70 i- (describe-failed-tests :result test-run) Err bitreich.org 70 i- (values (zerop (length (hu.dwim.stefil::failure-descriptions-of test-run))) Err bitreich.org 70 i- test-run))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defsuite* (babel-tests :in root-suite)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ub8v (&rest contents) Err bitreich.org 70 i- (make-array (length contents) :element-type '(unsigned-byte 8) Err bitreich.org 70 i- :initial-contents contents)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-ub8-vector (size) Err bitreich.org 70 i- (make-array size :element-type '(unsigned-byte 8) Err bitreich.org 70 i- :initial-element 0)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro returns (form &rest values) Err bitreich.org 70 i- "Asserts, through EQUALP, that FORM returns VALUES." Err bitreich.org 70 i- `(is (equalp (multiple-value-list ,form) (list ,@values)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro defstest (name form &body return-values) Err bitreich.org 70 i- "Similar to RT's DEFTEST." Err bitreich.org 70 i- `(deftest ,name () Err bitreich.org 70 i- (returns ,form ,@(mapcar (lambda (x) `',x) return-values)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun fail (control-string &rest arguments) Err bitreich.org 70 i- (hu.dwim.stefil::record/failure 'hu.dwim.stefil::failed-assertion Err bitreich.org 70 i- :format-control control-string Err bitreich.org 70 i- :format-arguments arguments)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun expected (expected &key got) Err bitreich.org 70 i- (fail "expected ~A, got ~A instead" expected got)) Err bitreich.org 70 i- Err bitreich.org 70 i-(enable-sharp-backslash-syntax) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Simple tests using ASCII Err bitreich.org 70 i- Err bitreich.org 70 i-(defstest enc.ascii.1 Err bitreich.org 70 i- (string-to-octets "abc" :encoding :ascii) Err bitreich.org 70 i- #(97 98 99)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defstest enc.ascii.2 Err bitreich.org 70 i- (string-to-octets (string #\uED) :encoding :ascii :errorp nil) Err bitreich.org 70 i- #(#x1a)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest enc.ascii.3 () Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (string-to-octets (string #\uED) :encoding :ascii :errorp t) Err bitreich.org 70 i- (character-encoding-error (c) Err bitreich.org 70 i- (is (eql 0 (character-coding-error-position c))) Err bitreich.org 70 i- (is (eq :ascii (character-coding-error-encoding c))) Err bitreich.org 70 i- (is (eql #xed (character-encoding-error-code c)))) Err bitreich.org 70 i- (:no-error (result) Err bitreich.org 70 i- (expected 'character-encoding-error :got result)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defstest dec.ascii.1 Err bitreich.org 70 i- (octets-to-string (ub8v 97 98 99) :encoding :ascii) Err bitreich.org 70 i- "abc") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest dec.ascii.2 () Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (octets-to-string (ub8v 97 128 99) :encoding :ascii :errorp t) Err bitreich.org 70 i- (character-decoding-error (c) Err bitreich.org 70 i- (is (equalp #(128) (character-decoding-error-octets c))) Err bitreich.org 70 i- (is (eql 1 (character-coding-error-position c))) Err bitreich.org 70 i- (is (eq :ascii (character-coding-error-encoding c)))) Err bitreich.org 70 i- (:no-error (result) Err bitreich.org 70 i- (expected 'character-decoding-error :got result)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defstest dec.ascii.3 Err bitreich.org 70 i- (octets-to-string (ub8v 97 255 98 99) :encoding :ascii :errorp nil) Err bitreich.org 70 i- #(#\a #\Sub #\b #\c)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defstest oct-count.ascii.1 Err bitreich.org 70 i- (string-size-in-octets "abc" :encoding :ascii) Err bitreich.org 70 i- 3 3) Err bitreich.org 70 i- Err bitreich.org 70 i-(defstest char-count.ascii.1 Err bitreich.org 70 i- (vector-size-in-chars (ub8v 97 98 99) :encoding :ascii) Err bitreich.org 70 i- 3 3) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; UTF-8 Err bitreich.org 70 i- Err bitreich.org 70 i-(defstest char-count.utf-8.1 Err bitreich.org 70 i- ;; "ni hao" in hanzi with the last octet missing Err bitreich.org 70 i- (vector-size-in-chars (ub8v 228 189 160 229 165) :errorp nil) Err bitreich.org 70 i- 2 5) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest char-count.utf-8.2 () Err bitreich.org 70 i- ;; same as above with the last 2 octets missing Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (vector-size-in-chars (ub8v 228 189 160 229) :errorp t) Err bitreich.org 70 i- (end-of-input-in-character (c) Err bitreich.org 70 i- (is (equalp #(229) (character-decoding-error-octets c))) Err bitreich.org 70 i- (is (eql 3 (character-coding-error-position c))) Err bitreich.org 70 i- (is (eq :utf-8 (character-coding-error-encoding c)))) Err bitreich.org 70 i- (:no-error (result) Err bitreich.org 70 i- (expected 'end-of-input-in-character :got result)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Lispworks bug? Err bitreich.org 70 i-;; #+lispworks Err bitreich.org 70 i-;; (pushnew 'dec.utf-8.1 rtest::*expected-failures*) Err bitreich.org 70 i- Err bitreich.org 70 i-(defstest dec.utf-8.1 Err bitreich.org 70 i- (octets-to-string (ub8v 228 189 160 229) :errorp nil) Err bitreich.org 70 i- #(#\u4f60 #\ufffd)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest dec.utf-8.2 () Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (octets-to-string (ub8v 228 189 160 229) :errorp t) Err bitreich.org 70 i- (end-of-input-in-character (c) Err bitreich.org 70 i- (is (equalp #(229) (character-decoding-error-octets c))) Err bitreich.org 70 i- (is (eql 3 (character-coding-error-position c))) Err bitreich.org 70 i- (is (eq :utf-8 (character-coding-error-encoding c)))) Err bitreich.org 70 i- (:no-error (result) Err bitreich.org 70 i- (expected 'end-of-input-in-character :got result)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; UTF-16 Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Test that the BOM is not being counted as a character. Err bitreich.org 70 i-(deftest char-count.utf-16.bom () Err bitreich.org 70 i- (is (eql (vector-size-in-chars (ub8v #xfe #xff #x00 #x55 #x00 #x54 #x00 #x46) Err bitreich.org 70 i- :encoding :utf-16) Err bitreich.org 70 i- 3)) Err bitreich.org 70 i- (is (eql (vector-size-in-chars (ub8v #xff #xfe #x00 #x55 #x00 #x54 #x00 #x46) Err bitreich.org 70 i- :encoding :utf-16) Err bitreich.org 70 i- 3))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; UTF-32 Err bitreich.org 70 i- Err bitreich.org 70 i-;;; RT: check that UTF-32 characters without a BOM are treated as Err bitreich.org 70 i-;;; little-endian. Err bitreich.org 70 i-(deftest endianness.utf-32.no-bom () Err bitreich.org 70 i- (is (string= "a" (octets-to-string (ub8v 0 0 0 97) :encoding :utf-32)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; MORE TESTS Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *standard-characters* Err bitreich.org 70 i- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!$\"'(),_-./:;?+<=>#%&*@[\\]{|}`^~") Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Testing consistency by encoding and decoding a simple string for Err bitreich.org 70 i-;;; all character encodings. Err bitreich.org 70 i-(deftest rw-equiv.1 () Err bitreich.org 70 i- (let ((compatible-encodings (remove :ebcdic-international (list-character-encodings)))) Err bitreich.org 70 i- (dolist (*default-character-encoding* compatible-encodings) Err bitreich.org 70 i- (let ((octets (string-to-octets *standard-characters*))) Err bitreich.org 70 i- (is (string= (octets-to-string octets) *standard-characters*)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; FIXME: assumes little-endianness. Easily fixable when we Err bitreich.org 70 i-;;; implement the BE and LE variants of :UTF-16. Err bitreich.org 70 i-(deftest concatenate-strings-to-octets-equiv.1 () Err bitreich.org 70 i- (let ((foo (octets-to-string (ub8v 102 195 186 195 186) Err bitreich.org 70 i- :encoding :utf-8)) Err bitreich.org 70 i- (bar (octets-to-string (ub8v 98 195 161 114) Err bitreich.org 70 i- :encoding :utf-8))) Err bitreich.org 70 i- ;; note: FOO and BAR are not ascii Err bitreich.org 70 i- (is (equalp (concatenate-strings-to-octets :utf-8 foo bar) Err bitreich.org 70 i- (ub8v 102 195 186 195 186 98 195 161 114))) Err bitreich.org 70 i- (is (equalp (concatenate-strings-to-octets :utf-16 foo bar) Err bitreich.org 70 i- (ub8v 102 0 250 0 250 0 98 0 225 0 114 0))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Testing against files generated by GNU iconv. Err bitreich.org 70 i- Err bitreich.org 70 i-(defun test-file (name type) Err bitreich.org 70 i- (uiop:subpathname (asdf:system-relative-pathname "babel-tests" "tests/") Err bitreich.org 70 i- name :type type)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun read-test-file (name type) Err bitreich.org 70 i- (with-open-file (in (test-file name type) :element-type '(unsigned-byte 8)) Err bitreich.org 70 i- (let* ((data (loop for byte = (read-byte in nil nil) Err bitreich.org 70 i- until (null byte) collect byte))) Err bitreich.org 70 i- (make-array (length data) :element-type '(unsigned-byte 8) Err bitreich.org 70 i- :initial-contents data)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest test-encoding (enc &optional input-enc-name) Err bitreich.org 70 i- (let* ((*default-character-encoding* enc) Err bitreich.org 70 i- (enc-name (string-downcase (symbol-name enc))) Err bitreich.org 70 i- (utf8-octets (read-test-file enc-name "txt-utf8")) Err bitreich.org 70 i- (foo-octets (read-test-file (or input-enc-name enc-name) "txt")) Err bitreich.org 70 i- (utf8-string (octets-to-string utf8-octets :encoding :utf-8 :errorp t)) Err bitreich.org 70 i- (foo-string (octets-to-string foo-octets :errorp t))) Err bitreich.org 70 i- (is (string= utf8-string foo-string)) Err bitreich.org 70 i- (is (= (length foo-string) (vector-size-in-chars foo-octets :errorp t))) Err bitreich.org 70 i- (unless (member enc '(:utf-16 :utf-32)) Err bitreich.org 70 i- ;; FIXME: skipping UTF-16 and UTF-32 because of the BOMs and Err bitreich.org 70 i- ;; because the input might not be in native-endian order so the Err bitreich.org 70 i- ;; comparison will fail there. Err bitreich.org 70 i- (let ((new-octets (string-to-octets foo-string :errorp t))) Err bitreich.org 70 i- (is (equalp new-octets foo-octets)) Err bitreich.org 70 i- (is (eql (length foo-octets) Err bitreich.org 70 i- (string-size-in-octets foo-string :errorp t))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest iconv-test () Err bitreich.org 70 i- (dolist (enc '(:ascii :ebcdic-us :utf-8 :utf-16 :utf-32)) Err bitreich.org 70 i- (case enc Err bitreich.org 70 i- (:utf-16 (test-encoding :utf-16 "utf-16-with-le-bom")) Err bitreich.org 70 i- (:utf-32 (test-encoding :utf-32 "utf-32-with-le-bom"))) Err bitreich.org 70 i- (test-encoding enc))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; RT: accept encoding objects in LOOKUP-MAPPING etc. Err bitreich.org 70 i-(defstest encoding-objects.1 Err bitreich.org 70 i- (string-to-octets "abc" :encoding (get-character-encoding :ascii)) Err bitreich.org 70 i- #(97 98 99)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-sharp-backslash-syntax (&body body) Err bitreich.org 70 i- `(let ((*readtable* (copy-readtable *readtable*))) Err bitreich.org 70 i- (set-sharp-backslash-syntax-in-readtable) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defstest sharp-backslash.1 Err bitreich.org 70 i- (with-sharp-backslash-syntax Err bitreich.org 70 i- (loop for string in '("#\\a" "#\\u" "#\\ued") Err bitreich.org 70 i- collect (char-code (read-from-string string)))) Err bitreich.org 70 i- (97 117 #xed)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest sharp-backslash.2 () Err bitreich.org 70 i- (signals reader-error (with-sharp-backslash-syntax Err bitreich.org 70 i- (read-from-string "#\\u12zz")))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest test-read-from-string (string object position) Err bitreich.org 70 i- "Test that (read-from-string STRING) returns values OBJECT and POSITION." Err bitreich.org 70 i- (multiple-value-bind (obj pos) Err bitreich.org 70 i- (read-from-string string) Err bitreich.org 70 i- (is (eql object obj)) Err bitreich.org 70 i- (is (eql position pos)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; RT: our #\ reader didn't honor *READ-SUPPRESS*. Err bitreich.org 70 i-(deftest sharp-backslash.3 () Err bitreich.org 70 i- (with-sharp-backslash-syntax Err bitreich.org 70 i- (let ((*read-suppress* t)) Err bitreich.org 70 i- (test-read-from-string "#\\ujunk" nil 7) Err bitreich.org 70 i- (test-read-from-string "#\\u12zz" nil 7)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; RT: the slow implementation of with-simple-vector was buggy. Err bitreich.org 70 i-(defstest string-to-octets.1 Err bitreich.org 70 i- (code-char (aref (string-to-octets "abc" :start 1 :end 2) 0)) Err bitreich.org 70 i- #\b) Err bitreich.org 70 i- Err bitreich.org 70 i-(defstest simple-base-string.1 Err bitreich.org 70 i- (string-to-octets (coerce "abc" 'base-string) :encoding :ascii) Err bitreich.org 70 i- #(97 98 99)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; For now, disable this tests for Lisps that are strict about Err bitreich.org 70 i-;;; non-character code points. In the future, simply mark them as Err bitreich.org 70 i-;;; expected failures. Err bitreich.org 70 i-#-(or abcl ccl) Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (defstest utf-8b.1 Err bitreich.org 70 i- (string-to-octets (coerce #(#\a #\b #\udcf0) 'unicode-string) Err bitreich.org 70 i- :encoding :utf-8b) Err bitreich.org 70 i- #(97 98 #xf0)) Err bitreich.org 70 i- Err bitreich.org 70 i- #+#:temporarily-disabled Err bitreich.org 70 i- (defstest utf-8b.2 Err bitreich.org 70 i- (octets-to-string (ub8v 97 98 #xcd) :encoding :utf-8b) Err bitreich.org 70 i- #(#\a #\b #\udccd)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defstest utf-8b.3 Err bitreich.org 70 i- (octets-to-string (ub8v 97 #xf0 #xf1 #xff #x01) :encoding :utf-8b) Err bitreich.org 70 i- #(#\a #\udcf0 #\udcf1 #\udcff #\udc01)) Err bitreich.org 70 i- Err bitreich.org 70 i- (deftest utf-8b.4 () Err bitreich.org 70 i- (let* ((octets (coerce (loop repeat 8192 collect (random (+ #x82))) Err bitreich.org 70 i- '(array (unsigned-byte 8) (*)))) Err bitreich.org 70 i- (string (octets-to-string octets :encoding :utf-8b))) Err bitreich.org 70 i- (is (equalp octets (string-to-octets string :encoding :utf-8b)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; The following tests have been adapted from SBCL's Err bitreich.org 70 i-;;; tests/octets.pure.lisp file. Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest ensure-roundtrip-ascii () Err bitreich.org 70 i- (let ((octets (make-ub8-vector 128))) Err bitreich.org 70 i- (dotimes (i 128) Err bitreich.org 70 i- (setf (aref octets i) i)) Err bitreich.org 70 i- (let* ((str (octets-to-string octets :encoding :ascii)) Err bitreich.org 70 i- (oct2 (string-to-octets str :encoding :ascii))) Err bitreich.org 70 i- (is (= (length octets) (length oct2))) Err bitreich.org 70 i- (is (every #'= octets oct2))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest test-8bit-roundtrip (enc) Err bitreich.org 70 i- (let ((octets (make-ub8-vector 256))) Err bitreich.org 70 i- (dotimes (i 256) Err bitreich.org 70 i- (setf (aref octets i) i)) Err bitreich.org 70 i- (let* ((str (octets-to-string octets :encoding enc))) Err bitreich.org 70 i- ;; remove the undefined code-points because they translate Err bitreich.org 70 i- ;; to #xFFFD and string-to-octets raises an error when Err bitreich.org 70 i- ;; encoding #xFFFD Err bitreich.org 70 i- (multiple-value-bind (filtered-str filtered-octets) Err bitreich.org 70 i- (let ((s (make-array 0 :element-type 'character Err bitreich.org 70 i- :adjustable t :fill-pointer 0)) Err bitreich.org 70 i- (o (make-array 0 :element-type '(unsigned-byte 16) Err bitreich.org 70 i- :adjustable t :fill-pointer 0))) Err bitreich.org 70 i- (loop for i below 256 Err bitreich.org 70 i- for c = (aref str i) Err bitreich.org 70 i- when (/= (char-code c) #xFFFD) Err bitreich.org 70 i- do (vector-push-extend c s) Err bitreich.org 70 i- (vector-push-extend (aref octets i) o)) Err bitreich.org 70 i- (values s o)) Err bitreich.org 70 i- (let ((oct2 (string-to-octets filtered-str :encoding enc))) Err bitreich.org 70 i- (is (eql (length filtered-octets) (length oct2))) Err bitreich.org 70 i- (is (every #'eql filtered-octets oct2))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *iso-8859-charsets* Err bitreich.org 70 i- '(:iso-8859-1 :iso-8859-2 :iso-8859-3 :iso-8859-4 :iso-8859-5 :iso-8859-6 Err bitreich.org 70 i- :iso-8859-7 :iso-8859-8 :iso-8859-9 :iso-8859-10 :iso-8859-11 :iso-8859-13 Err bitreich.org 70 i- :iso-8859-14 :iso-8859-15 :iso-8859-16)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Don't actually see what comes out, but there shouldn't be any Err bitreich.org 70 i-;;; errors. Err bitreich.org 70 i-(deftest iso-8859-roundtrip-no-checking () Err bitreich.org 70 i- (loop for enc in *iso-8859-charsets* do (test-8bit-roundtrip enc))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest ensure-roundtrip-latin () Err bitreich.org 70 i- (loop for enc in '(:latin1 :latin9) do (test-8bit-roundtrip enc))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Latin-9 chars; the previous test checked roundtrip from Err bitreich.org 70 i-;;; octets->char and back, now test that the latin-9 characters did in Err bitreich.org 70 i-;;; fact appear during that trip. Err bitreich.org 70 i-(deftest ensure-roundtrip-latin9 () Err bitreich.org 70 i- (let ((l9c (map 'string #'code-char '(8364 352 353 381 382 338 339 376)))) Err bitreich.org 70 i- (is (string= (octets-to-string (string-to-octets l9c :encoding :latin9) Err bitreich.org 70 i- :encoding :latin9) Err bitreich.org 70 i- l9c)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Expected to fail on Lisps that are strict about non-character code Err bitreich.org 70 i-;; points. Mark this as an expected failure when Stefil supports such Err bitreich.org 70 i-;; a feature. Err bitreich.org 70 i-#-(or abcl ccl) Err bitreich.org 70 i-(deftest code-char-nilness () Err bitreich.org 70 i- (is (loop for i below unicode-char-code-limit Err bitreich.org 70 i- never (null (code-char i))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest test-unicode-roundtrip (enc) Err bitreich.org 70 i- (let ((string (make-string unicode-char-code-limit))) Err bitreich.org 70 i- (dotimes (i unicode-char-code-limit) Err bitreich.org 70 i- (setf (char string i) Err bitreich.org 70 i- (if (or (<= #xD800 i #xDFFF) Err bitreich.org 70 i- (<= #xFDD0 i #xFDEF) Err bitreich.org 70 i- (eql (logand i #xFFFF) #xFFFF) Err bitreich.org 70 i- (eql (logand i #xFFFF) #xFFFE)) Err bitreich.org 70 i- #\? ; don't try to encode non-characters. Err bitreich.org 70 i- (code-char i)))) Err bitreich.org 70 i- (let ((string2 (octets-to-string Err bitreich.org 70 i- (string-to-octets string :encoding enc :errorp t) Err bitreich.org 70 i- :encoding enc :errorp t))) Err bitreich.org 70 i- (is (eql (length string2) (length string))) Err bitreich.org 70 i- (is (string= string string2))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest ensure-roundtrip.utf8 () Err bitreich.org 70 i- (test-unicode-roundtrip :utf-8)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest ensure-roundtrip.utf16 () Err bitreich.org 70 i- (test-unicode-roundtrip :utf-16)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest ensure-roundtrip.utf32 () Err bitreich.org 70 i- (test-unicode-roundtrip :utf-32)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+sbcl Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (deftest test-encode-against-sbcl (enc) Err bitreich.org 70 i- (let ((string (make-string unicode-char-code-limit))) Err bitreich.org 70 i- (dotimes (i unicode-char-code-limit) Err bitreich.org 70 i- (setf (char string i) (code-char i))) Err bitreich.org 70 i- (loop for ch across string Err bitreich.org 70 i- for babel = (string-to-octets (string ch) :encoding enc) Err bitreich.org 70 i- for sbcl = (sb-ext:string-to-octets (string ch) Err bitreich.org 70 i- :external-format enc) Err bitreich.org 70 i- do (is (equalp babel sbcl))))) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; not run automatically because it's a bit slow (1114112 assertions) Err bitreich.org 70 i- (deftest (test-encode-against-sbcl.utf-8 :auto-call nil) () Err bitreich.org 70 i- (test-encode-against-sbcl :utf-8))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest non-ascii-bytes () Err bitreich.org 70 i- (let ((octets (make-array 128 Err bitreich.org 70 i- :element-type '(unsigned-byte 8) Err bitreich.org 70 i- :initial-contents (loop for i from 128 below 256 Err bitreich.org 70 i- collect i)))) Err bitreich.org 70 i- (is (string= (octets-to-string octets :encoding :ascii :errorp nil) Err bitreich.org 70 i- (make-string 128 :initial-element #\Sub))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest non-ascii-chars () Err bitreich.org 70 i- (let ((string (make-array 128 Err bitreich.org 70 i- :element-type 'character Err bitreich.org 70 i- :initial-contents (loop for i from 128 below 256 Err bitreich.org 70 i- collect (code-char i))))) Err bitreich.org 70 i- (is (equalp (string-to-octets string :encoding :ascii :errorp nil) Err bitreich.org 70 i- (make-array 128 :initial-element (char-code #\Sub)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; The following UTF-8 decoding tests are adapted from Err bitreich.org 70 i-;;;; . Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest utf8-decode-test (octets expected-results expected-errors) Err bitreich.org 70 i- (let ((string (octets-to-string (coerce octets '(vector (unsigned-byte 8) *)) Err bitreich.org 70 i- :encoding :utf-8 :errorp nil))) Err bitreich.org 70 i- (is (string= expected-results string)) Err bitreich.org 70 i- (is (= (count #\ufffd string) expected-errors)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest utf8-decode-tests (octets expected-results) Err bitreich.org 70 i- (let ((expected-errors (count #\? expected-results)) Err bitreich.org 70 i- (expected-results (substitute #\ufffd #\? expected-results))) Err bitreich.org 70 i- (utf8-decode-test octets expected-results expected-errors) Err bitreich.org 70 i- (utf8-decode-test (concatenate 'vector '(34) octets '(34)) Err bitreich.org 70 i- (format nil "\"~A\"" expected-results) Err bitreich.org 70 i- expected-errors))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest utf8-too-big-characters () Err bitreich.org 70 i- (utf8-decode-tests #(#xf4 #x90 #x80 #x80) "?") ; #x110000 Err bitreich.org 70 i- (utf8-decode-tests #(#xf7 #xbf #xbf #xbf) "?") ; #x1fffff Err bitreich.org 70 i- (utf8-decode-tests #(#xf8 #x88 #x80 #x80 #x80) "?") ; #x200000 Err bitreich.org 70 i- (utf8-decode-tests #(#xfb #xbf #xbf #xbf #xbf) "?") ; #x3ffffff Err bitreich.org 70 i- (utf8-decode-tests #(#xfc #x84 #x80 #x80 #x80 #x80) "?") ; #x4000000e Err bitreich.org 70 i- (utf8-decode-tests #(#xfd #xbf #xbf #xbf #xbf #xbf) "?")) ; #x7fffffff Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest utf8-unexpected-continuation-bytes () Err bitreich.org 70 i- (utf8-decode-tests #(#x80) "?") Err bitreich.org 70 i- (utf8-decode-tests #(#xbf) "?") Err bitreich.org 70 i- (utf8-decode-tests #(#x80 #xbf) "??") Err bitreich.org 70 i- (utf8-decode-tests #(#x80 #xbf #x80) "???") Err bitreich.org 70 i- (utf8-decode-tests #(#x80 #xbf #x80 #xbf) "????") Err bitreich.org 70 i- (utf8-decode-tests #(#x80 #xbf #x80 #xbf #x80) "?????") Err bitreich.org 70 i- (utf8-decode-tests #(#x80 #xbf #x80 #xbf #x80 #xbf) "??????") Err bitreich.org 70 i- (utf8-decode-tests #(#x80 #xbf #x80 #xbf #x80 #xbf #x80) "???????")) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; All 64 continuation bytes in a row. Err bitreich.org 70 i-(deftest utf8-continuation-bytes () Err bitreich.org 70 i- (apply #'utf8-decode-tests Err bitreich.org 70 i- (loop for i from #x80 to #xbf Err bitreich.org 70 i- collect i into bytes Err bitreich.org 70 i- collect #\? into chars Err bitreich.org 70 i- finally (return (list bytes Err bitreich.org 70 i- (coerce chars 'string)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest utf8-lonely-start-characters () Err bitreich.org 70 i- (flet ((lsc (first last) Err bitreich.org 70 i- (apply #'utf8-decode-tests Err bitreich.org 70 i- (loop for i from first to last Err bitreich.org 70 i- nconc (list i 32) into bytes Err bitreich.org 70 i- nconc (list #\? #\Space) into chars Err bitreich.org 70 i- finally (return (list bytes (coerce chars 'string))))) Err bitreich.org 70 i- (apply #'utf8-decode-tests Err bitreich.org 70 i- (loop for i from first to last Err bitreich.org 70 i- collect i into bytes Err bitreich.org 70 i- collect #\? into chars Err bitreich.org 70 i- finally (return Err bitreich.org 70 i- (list bytes (coerce chars 'string))))))) Err bitreich.org 70 i- (lsc #xc0 #xdf) ; 2-byte sequence start chars Err bitreich.org 70 i- (lsc #xe0 #xef) ; 3-byte Err bitreich.org 70 i- (lsc #xf0 #xf7) ; 4-byte Err bitreich.org 70 i- (lsc #xf8 #xfb) ; 5-byte Err bitreich.org 70 i- (lsc #xfc #xfd))) ; 6-byte Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Otherwise incomplete sequences (last continuation byte missing) Err bitreich.org 70 i-(deftest utf8-incomplete-sequences () Err bitreich.org 70 i- (utf8-decode-tests #0=#(#xc0) "?") Err bitreich.org 70 i- (utf8-decode-tests #1=#(#xe0 #x80) "?") Err bitreich.org 70 i- (utf8-decode-tests #2=#(#xf0 #x80 #x80) "?") Err bitreich.org 70 i- (utf8-decode-tests #3=#(#xf8 #x80 #x80 #x80) "?") Err bitreich.org 70 i- (utf8-decode-tests #4=#(#xfc #x80 #x80 #x80 #x80) "?") Err bitreich.org 70 i- (utf8-decode-tests #5=#(#xdf) "?") Err bitreich.org 70 i- (utf8-decode-tests #6=#(#xef #xbf) "?") Err bitreich.org 70 i- (utf8-decode-tests #7=#(#xf7 #xbf #xbf) "?") Err bitreich.org 70 i- (utf8-decode-tests #8=#(#xfb #xbf #xbf #xbf) "?") Err bitreich.org 70 i- (utf8-decode-tests #9=#(#xfd #xbf #xbf #xbf #xbf) "?") Err bitreich.org 70 i- ;; All ten previous tests concatenated Err bitreich.org 70 i- (utf8-decode-tests (concatenate 'vector Err bitreich.org 70 i- #0# #1# #2# #3# #4# #5# #6# #7# #8# #9#) Err bitreich.org 70 i- "??????????")) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest utf8-random-impossible-bytes () Err bitreich.org 70 i- (utf8-decode-tests #(#xfe) "?") Err bitreich.org 70 i- (utf8-decode-tests #(#xff) "?") Err bitreich.org 70 i- (utf8-decode-tests #(#xfe #xfe #xff #xff) "????")) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest utf8-overlong-sequences-/ () Err bitreich.org 70 i- (utf8-decode-tests #(#xc0 #xaf) "?") Err bitreich.org 70 i- (utf8-decode-tests #(#xe0 #x80 #xaf) "?") Err bitreich.org 70 i- (utf8-decode-tests #(#xf0 #x80 #x80 #xaf) "?") Err bitreich.org 70 i- (utf8-decode-tests #(#xf8 #x80 #x80 #x80 #xaf) "?") Err bitreich.org 70 i- (utf8-decode-tests #(#xfc #x80 #x80 #x80 #x80 #xaf) "?")) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest utf8-overlong-sequences-rubout () Err bitreich.org 70 i- (utf8-decode-tests #(#xc1 #xbf) "?") Err bitreich.org 70 i- (utf8-decode-tests #(#xe0 #x9f #xbf) "?") Err bitreich.org 70 i- (utf8-decode-tests #(#xf0 #x8f #xbf #xbf) "?") Err bitreich.org 70 i- (utf8-decode-tests #(#xf8 #x87 #xbf #xbf #xbf) "?") Err bitreich.org 70 i- (utf8-decode-tests #(#xfc #x83 #xbf #xbf #xbf #xbf) "?")) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest utf8-overlong-sequences-null () Err bitreich.org 70 i- (utf8-decode-tests #(#xc0 #x80) "?") Err bitreich.org 70 i- (utf8-decode-tests #(#xe0 #x80 #x80) "?") Err bitreich.org 70 i- (utf8-decode-tests #(#xf0 #x80 #x80 #x80) "?") Err bitreich.org 70 i- (utf8-decode-tests #(#xf8 #x80 #x80 #x80 #x80) "?") Err bitreich.org 70 i- (utf8-decode-tests #(#xfc #x80 #x80 #x80 #x80 #x80) "?")) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; End of adapted SBCL tests. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Expected to fail, for now. Err bitreich.org 70 i-#+#:ignore Err bitreich.org 70 i-(deftest utf8-illegal-code-positions () Err bitreich.org 70 i- ;; single UTF-16 surrogates Err bitreich.org 70 i- (utf8-decode-tests #(#xed #xa0 #x80) "?") Err bitreich.org 70 i- (utf8-decode-tests #(#xed #xad #xbf) "?") Err bitreich.org 70 i- (utf8-decode-tests #(#xed #xae #x80) "?") Err bitreich.org 70 i- (utf8-decode-tests #(#xed #xaf #xbf) "?") Err bitreich.org 70 i- (utf8-decode-tests #(#xed #xb0 #x80) "?") Err bitreich.org 70 i- (utf8-decode-tests #(#xed #xbe #x80) "?") Err bitreich.org 70 i- (utf8-decode-tests #(#xed #xbf #xbf) "?") Err bitreich.org 70 i- ;; paired UTF-16 surrogates Err bitreich.org 70 i- (utf8-decode-tests #(ed a0 80 ed b0 80) "??") Err bitreich.org 70 i- (utf8-decode-tests #(ed a0 80 ed bf bf) "??") Err bitreich.org 70 i- (utf8-decode-tests #(ed ad bf ed b0 80) "??") Err bitreich.org 70 i- (utf8-decode-tests #(ed ad bf ed bf bf) "??") Err bitreich.org 70 i- (utf8-decode-tests #(ed ae 80 ed b0 80) "??") Err bitreich.org 70 i- (utf8-decode-tests #(ed ae 80 ed bf bf) "??") Err bitreich.org 70 i- (utf8-decode-tests #(ed af bf ed b0 80) "??") Err bitreich.org 70 i- (utf8-decode-tests #(ed af bf ed bf bf) "??") Err bitreich.org 70 i- ;; other illegal code positions Err bitreich.org 70 i- (utf8-decode-tests #(#xef #xbf #xbe) "?") ; #\uFFFE Err bitreich.org 70 i- (utf8-decode-tests #(#xef #xbf #xbf) "?")) ; #\uFFFF Err bitreich.org 70 i- Err bitreich.org 70 i-;;; A list of the ISO-8859 encodings where each element is a cons with Err bitreich.org 70 i-;;; the car being a keyword denoting the encoding and the cdr being a Err bitreich.org 70 i-;;; vector enumerating the corresponding character codes. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; It was auto-generated from files which can be found at Err bitreich.org 70 i-;;; . Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Taken from flexi-streams. Err bitreich.org 70 i-(defparameter *iso-8859-tables* Err bitreich.org 70 i- '((:iso-8859-1 . Err bitreich.org 70 i- #(0 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 Err bitreich.org 70 i- 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 Err bitreich.org 70 i- 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 Err bitreich.org 70 i- 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 Err bitreich.org 70 i- 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 Err bitreich.org 70 i- 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 Err bitreich.org 70 i- 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 Err bitreich.org 70 i- 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 Err bitreich.org 70 i- 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 Err bitreich.org 70 i- 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 Err bitreich.org 70 i- 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 Err bitreich.org 70 i- 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 Err bitreich.org 70 i- 243 244 245 246 247 248 249 250 251 252 253 254 255)) Err bitreich.org 70 i- Err bitreich.org 70 i- (:iso-8859-2 . Err bitreich.org 70 i- #(0 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 Err bitreich.org 70 i- 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 Err bitreich.org 70 i- 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 Err bitreich.org 70 i- 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 Err bitreich.org 70 i- 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 Err bitreich.org 70 i- 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 Err bitreich.org 70 i- 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 Err bitreich.org 70 i- 153 154 155 156 157 158 159 160 260 728 321 164 317 346 167 168 352 350 Err bitreich.org 70 i- 356 377 173 381 379 176 261 731 322 180 318 347 711 184 353 351 357 378 Err bitreich.org 70 i- 733 382 380 340 193 194 258 196 313 262 199 268 201 280 203 282 205 206 Err bitreich.org 70 i- 270 272 323 327 211 212 336 214 215 344 366 218 368 220 221 354 223 341 Err bitreich.org 70 i- 225 226 259 228 314 263 231 269 233 281 235 283 237 238 271 273 324 328 Err bitreich.org 70 i- 243 244 337 246 247 345 367 250 369 252 253 355 729)) Err bitreich.org 70 i- Err bitreich.org 70 i- (:iso-8859-3 . Err bitreich.org 70 i- #(0 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 Err bitreich.org 70 i- 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 Err bitreich.org 70 i- 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 Err bitreich.org 70 i- 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 Err bitreich.org 70 i- 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 Err bitreich.org 70 i- 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 Err bitreich.org 70 i- 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 Err bitreich.org 70 i- 153 154 155 156 157 158 159 160 294 728 163 164 65533 292 167 168 304 Err bitreich.org 70 i- 350 286 308 173 65533 379 176 295 178 179 180 181 293 183 184 305 351 Err bitreich.org 70 i- 287 309 189 65533 380 192 193 194 65533 196 266 264 199 200 201 202 203 Err bitreich.org 70 i- 204 205 206 207 65533 209 210 211 212 288 214 215 284 217 218 219 220 Err bitreich.org 70 i- 364 348 223 224 225 226 65533 228 267 265 231 232 233 234 235 236 237 Err bitreich.org 70 i- 238 239 65533 241 242 243 244 289 246 247 285 249 250 251 252 365 349 Err bitreich.org 70 i- 729)) Err bitreich.org 70 i- Err bitreich.org 70 i- (:iso-8859-4 . Err bitreich.org 70 i- #(0 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 Err bitreich.org 70 i- 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 Err bitreich.org 70 i- 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 Err bitreich.org 70 i- 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 Err bitreich.org 70 i- 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 Err bitreich.org 70 i- 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 Err bitreich.org 70 i- 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 Err bitreich.org 70 i- 153 154 155 156 157 158 159 160 260 312 342 164 296 315 167 168 352 274 Err bitreich.org 70 i- 290 358 173 381 175 176 261 731 343 180 297 316 711 184 353 275 291 359 Err bitreich.org 70 i- 330 382 331 256 193 194 195 196 197 198 302 268 201 280 203 278 205 206 Err bitreich.org 70 i- 298 272 325 332 310 212 213 214 215 216 370 218 219 220 360 362 223 257 Err bitreich.org 70 i- 225 226 227 228 229 230 303 269 233 281 235 279 237 238 299 273 326 333 Err bitreich.org 70 i- 311 244 245 246 247 248 371 250 251 252 361 363 729)) Err bitreich.org 70 i- Err bitreich.org 70 i- (:iso-8859-5 . Err bitreich.org 70 i- #(0 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 Err bitreich.org 70 i- 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 Err bitreich.org 70 i- 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 Err bitreich.org 70 i- 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 Err bitreich.org 70 i- 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 Err bitreich.org 70 i- 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 Err bitreich.org 70 i- 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 Err bitreich.org 70 i- 153 154 155 156 157 158 159 160 1025 1026 1027 1028 1029 1030 1031 1032 Err bitreich.org 70 i- 1033 1034 1035 1036 173 1038 1039 1040 1041 1042 1043 1044 1045 1046 Err bitreich.org 70 i- 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 Err bitreich.org 70 i- 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 Err bitreich.org 70 i- 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 Err bitreich.org 70 i- 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 Err bitreich.org 70 i- 1103 8470 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 Err bitreich.org 70 i- 167 1118 1119)) Err bitreich.org 70 i- Err bitreich.org 70 i- (:iso-8859-6 . Err bitreich.org 70 i- #(0 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 Err bitreich.org 70 i- 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 Err bitreich.org 70 i- 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 Err bitreich.org 70 i- 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 Err bitreich.org 70 i- 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 Err bitreich.org 70 i- 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 Err bitreich.org 70 i- 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 Err bitreich.org 70 i- 153 154 155 156 157 158 159 160 65533 65533 65533 164 65533 65533 65533 Err bitreich.org 70 i- 65533 65533 65533 65533 1548 173 65533 65533 65533 65533 65533 65533 Err bitreich.org 70 i- 65533 65533 65533 65533 65533 65533 65533 1563 65533 65533 65533 1567 Err bitreich.org 70 i- 65533 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 Err bitreich.org 70 i- 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 65533 Err bitreich.org 70 i- 65533 65533 65533 65533 1600 1601 1602 1603 1604 1605 1606 1607 1608 Err bitreich.org 70 i- 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 65533 65533 65533 Err bitreich.org 70 i- 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533)) Err bitreich.org 70 i- Err bitreich.org 70 i- (:iso-8859-7 . Err bitreich.org 70 i- #(0 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 Err bitreich.org 70 i- 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 Err bitreich.org 70 i- 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 Err bitreich.org 70 i- 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 Err bitreich.org 70 i- 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 Err bitreich.org 70 i- 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 Err bitreich.org 70 i- 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 Err bitreich.org 70 i- 153 154 155 156 157 158 159 160 8216 8217 163 8364 8367 166 167 168 169 Err bitreich.org 70 i- 890 171 172 173 65533 8213 176 177 178 179 900 901 902 183 904 905 906 Err bitreich.org 70 i- 187 908 189 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 Err bitreich.org 70 i- 925 926 927 928 929 65533 931 932 933 934 935 936 937 938 939 940 941 Err bitreich.org 70 i- 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 Err bitreich.org 70 i- 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 65533)) Err bitreich.org 70 i- Err bitreich.org 70 i- (:iso-8859-8 . Err bitreich.org 70 i- #(0 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 Err bitreich.org 70 i- 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 Err bitreich.org 70 i- 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 Err bitreich.org 70 i- 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 Err bitreich.org 70 i- 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 Err bitreich.org 70 i- 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 Err bitreich.org 70 i- 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 Err bitreich.org 70 i- 153 154 155 156 157 158 159 160 65533 162 163 164 165 166 167 168 169 Err bitreich.org 70 i- 215 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 247 187 Err bitreich.org 70 i- 188 189 190 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 Err bitreich.org 70 i- 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 Err bitreich.org 70 i- 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 8215 1488 Err bitreich.org 70 i- 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 Err bitreich.org 70 i- 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 65533 65533 Err bitreich.org 70 i- 8206 8207 65533)) Err bitreich.org 70 i- Err bitreich.org 70 i- (:iso-8859-9 . Err bitreich.org 70 i- #(0 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 Err bitreich.org 70 i- 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 Err bitreich.org 70 i- 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 Err bitreich.org 70 i- 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 Err bitreich.org 70 i- 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 Err bitreich.org 70 i- 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 Err bitreich.org 70 i- 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 Err bitreich.org 70 i- 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 Err bitreich.org 70 i- 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 Err bitreich.org 70 i- 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 Err bitreich.org 70 i- 207 286 209 210 211 212 213 214 215 216 217 218 219 220 304 350 223 224 Err bitreich.org 70 i- 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 287 241 242 Err bitreich.org 70 i- 243 244 245 246 247 248 249 250 251 252 305 351 255)) Err bitreich.org 70 i- Err bitreich.org 70 i- (:iso-8859-10 . Err bitreich.org 70 i- #(0 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 Err bitreich.org 70 i- 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 Err bitreich.org 70 i- 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 Err bitreich.org 70 i- 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 Err bitreich.org 70 i- 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 Err bitreich.org 70 i- 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 Err bitreich.org 70 i- 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 Err bitreich.org 70 i- 153 154 155 156 157 158 159 160 260 274 290 298 296 310 167 315 272 352 Err bitreich.org 70 i- 358 381 173 362 330 176 261 275 291 299 297 311 183 316 273 353 359 382 Err bitreich.org 70 i- 8213 363 331 256 193 194 195 196 197 198 302 268 201 280 203 278 205 206 Err bitreich.org 70 i- 207 208 325 332 211 212 213 214 360 216 370 218 219 220 221 222 223 257 Err bitreich.org 70 i- 225 226 227 228 229 230 303 269 233 281 235 279 237 238 239 240 326 333 Err bitreich.org 70 i- 243 244 245 246 361 248 371 250 251 252 253 254 312)) Err bitreich.org 70 i- Err bitreich.org 70 i- (:iso-8859-11 . Err bitreich.org 70 i- #(0 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 Err bitreich.org 70 i- 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 Err bitreich.org 70 i- 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 Err bitreich.org 70 i- 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 Err bitreich.org 70 i- 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 Err bitreich.org 70 i- 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 Err bitreich.org 70 i- 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 Err bitreich.org 70 i- 153 154 155 156 157 158 159 160 3585 3586 3587 3588 3589 3590 3591 3592 Err bitreich.org 70 i- 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 Err bitreich.org 70 i- 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 Err bitreich.org 70 i- 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 Err bitreich.org 70 i- 3635 3636 3637 3638 3639 3640 3641 3642 65533 65533 65533 65533 3647 Err bitreich.org 70 i- 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 Err bitreich.org 70 i- 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 Err bitreich.org 70 i- 65533 65533 65533 65533)) Err bitreich.org 70 i- Err bitreich.org 70 i- (:iso-8859-13 . Err bitreich.org 70 i- #(0 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 Err bitreich.org 70 i- 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 Err bitreich.org 70 i- 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 Err bitreich.org 70 i- 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 Err bitreich.org 70 i- 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 Err bitreich.org 70 i- 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 Err bitreich.org 70 i- 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 Err bitreich.org 70 i- 153 154 155 156 157 158 159 160 8221 162 163 164 8222 166 167 216 169 Err bitreich.org 70 i- 342 171 172 173 174 198 176 177 178 179 8220 181 182 183 248 185 343 187 Err bitreich.org 70 i- 188 189 190 230 260 302 256 262 196 197 280 274 268 201 377 278 290 310 Err bitreich.org 70 i- 298 315 352 323 325 211 332 213 214 215 370 321 346 362 220 379 381 223 Err bitreich.org 70 i- 261 303 257 263 228 229 281 275 269 233 378 279 291 311 299 316 353 324 Err bitreich.org 70 i- 326 243 333 245 246 247 371 322 347 363 252 380 382 8217)) Err bitreich.org 70 i- Err bitreich.org 70 i- (:iso-8859-14 . Err bitreich.org 70 i- #(0 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 Err bitreich.org 70 i- 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 Err bitreich.org 70 i- 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 Err bitreich.org 70 i- 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 Err bitreich.org 70 i- 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 Err bitreich.org 70 i- 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 Err bitreich.org 70 i- 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 Err bitreich.org 70 i- 153 154 155 156 157 158 159 160 7682 7683 163 266 267 7690 167 7808 169 Err bitreich.org 70 i- 7810 7691 7922 173 174 376 7710 7711 288 289 7744 7745 182 7766 7809 Err bitreich.org 70 i- 7767 7811 7776 7923 7812 7813 7777 192 193 194 195 196 197 198 199 200 Err bitreich.org 70 i- 201 202 203 204 205 206 207 372 209 210 211 212 213 214 7786 216 217 218 Err bitreich.org 70 i- 219 220 221 374 223 224 225 226 227 228 229 230 231 232 233 234 235 236 Err bitreich.org 70 i- 237 238 239 373 241 242 243 244 245 246 7787 248 249 250 251 252 253 375 Err bitreich.org 70 i- 255)) Err bitreich.org 70 i- Err bitreich.org 70 i- (:iso-8859-15 . Err bitreich.org 70 i- #(0 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 Err bitreich.org 70 i- 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 Err bitreich.org 70 i- 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 Err bitreich.org 70 i- 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 Err bitreich.org 70 i- 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 Err bitreich.org 70 i- 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 Err bitreich.org 70 i- 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 Err bitreich.org 70 i- 153 154 155 156 157 158 159 160 161 162 163 8364 165 352 167 353 169 170 Err bitreich.org 70 i- 171 172 173 174 175 176 177 178 179 381 181 182 183 382 185 186 187 338 Err bitreich.org 70 i- 339 376 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 Err bitreich.org 70 i- 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 Err bitreich.org 70 i- 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 Err bitreich.org 70 i- 243 244 245 246 247 248 249 250 251 252 253 254 255)) Err bitreich.org 70 i- Err bitreich.org 70 i- (:iso-8859-16 . Err bitreich.org 70 i- #(0 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 Err bitreich.org 70 i- 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 Err bitreich.org 70 i- 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 Err bitreich.org 70 i- 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 Err bitreich.org 70 i- 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 Err bitreich.org 70 i- 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 Err bitreich.org 70 i- 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 Err bitreich.org 70 i- 153 154 155 156 157 158 159 160 260 261 321 8364 8222 352 167 353 169 Err bitreich.org 70 i- 536 171 377 173 378 379 176 177 268 322 381 8221 182 183 382 269 537 187 Err bitreich.org 70 i- 338 339 376 380 192 193 194 258 196 262 198 199 200 201 202 203 204 205 Err bitreich.org 70 i- 206 207 272 323 210 211 212 336 214 346 368 217 218 219 220 280 538 223 Err bitreich.org 70 i- 224 225 226 259 228 263 230 231 232 233 234 235 236 237 238 239 273 324 Err bitreich.org 70 i- 242 243 244 337 246 347 369 249 250 251 252 281 539 255)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest iso-8859-decode-check () Err bitreich.org 70 i- (loop for enc in *iso-8859-charsets* Err bitreich.org 70 i- for octets = (let ((octets (make-ub8-vector 256))) Err bitreich.org 70 i- (dotimes (i 256 octets) Err bitreich.org 70 i- (setf (aref octets i) i))) Err bitreich.org 70 i- for string = (octets-to-string octets :encoding enc) Err bitreich.org 70 i- do (is (equalp (map 'vector #'char-code string) Err bitreich.org 70 i- (cdr (assoc enc *iso-8859-tables*)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest character-out-of-range.utf-32 () Err bitreich.org 70 i- (signals character-out-of-range Err bitreich.org 70 i- (octets-to-string (ub8v 0 0 #xfe #xff 0 #x11 0 0) Err bitreich.org 70 i- :encoding :utf-32 :errorp t))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; RT: encoders and decoders were returning bogus values. Err bitreich.org 70 i-(deftest encoder/decoder-retvals (encoding &optional (test-string "abc")) Err bitreich.org 70 i- (let* ((mapping (lookup-mapping babel::*string-vector-mappings* encoding)) Err bitreich.org 70 i- (strlen (length test-string)) Err bitreich.org 70 i- ;; encoding Err bitreich.org 70 i- (octet-precount (funcall (octet-counter mapping) Err bitreich.org 70 i- test-string 0 strlen -1)) Err bitreich.org 70 i- (array (make-array octet-precount :element-type '(unsigned-byte 8))) Err bitreich.org 70 i- (encoded-octet-count (funcall (encoder mapping) Err bitreich.org 70 i- test-string 0 strlen array 0)) Err bitreich.org 70 i- ;; decoding Err bitreich.org 70 i- (string (make-string strlen)) Err bitreich.org 70 i- (char-precount (funcall (code-point-counter mapping) Err bitreich.org 70 i- array 0 octet-precount -1)) Err bitreich.org 70 i- (char-count (funcall (decoder mapping) Err bitreich.org 70 i- array 0 octet-precount string 0))) Err bitreich.org 70 i- (is (= octet-precount encoded-octet-count)) Err bitreich.org 70 i- (is (= char-precount char-count)) Err bitreich.org 70 i- (is (string= test-string string)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest encoder-and-decoder-return-values () Err bitreich.org 70 i- (mapcar 'encoder/decoder-retvals Err bitreich.org 70 i- (remove-if 'ambiguous-encoding-p Err bitreich.org 70 i- (list-character-encodings)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest code-point-sweep (encoding) Err bitreich.org 70 i- (finishes Err bitreich.org 70 i- (dotimes (i char-code-limit) Err bitreich.org 70 i- (let ((char (ignore-errors (code-char i)))) Err bitreich.org 70 i- (when char Err bitreich.org 70 i- (ignore-some-conditions (character-encoding-error) Err bitreich.org 70 i- (string-to-octets (string char) :encoding encoding))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+enable-slow-babel-tests Err bitreich.org 70 i-(deftest code-point-sweep-all-encodings () Err bitreich.org 70 i- (mapc #'code-point-sweep (list-character-encodings))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest octet-sweep (encoding) Err bitreich.org 70 i- (finishes Err bitreich.org 70 i- (loop for b1 upto #xff do Err bitreich.org 70 i- (loop for b2 upto #xff do Err bitreich.org 70 i- (loop for b3 upto #xff do Err bitreich.org 70 i- (loop for b4 upto #xff do Err bitreich.org 70 i- (ignore-some-conditions (character-decoding-error) Err bitreich.org 70 i- (octets-to-string (ub8v b1 b2 b3 b4) :encoding encoding)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+enable-slow-babel-tests Err bitreich.org 70 i-(deftest octet-sweep-all-encodings () Err bitreich.org 70 i- (mapc #'octet-sweep (list-character-encodings))) Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/tests/utf-16-with-le-bom.txt b/3rdparties/software/babel-20171227-git/tests/utf-16-with-le-bom.txt /scm/clic/file/3rdparties/software/babel-20171227-git/tests/utf-16-with-le-bom.txt.gph bitreich.org 70 iBinary files differ. Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/tests/utf-16.txt b/3rdparties/software/babel-20171227-git/tests/utf-16.txt /scm/clic/file/3rdparties/software/babel-20171227-git/tests/utf-16.txt.gph bitreich.org 70 iBinary files differ. Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/tests/utf-16.txt-utf8 b/3rdparties/software/babel-20171227-git/tests/utf-16.txt-utf8 /scm/clic/file/3rdparties/software/babel-20171227-git/tests/utf-16.txt-utf8.gph bitreich.org 70 i@@ -1,212 +0,0 @@ Err bitreich.org 70 i- Err bitreich.org 70 i-UTF-8 encoded sample plain-text file Err bitreich.org 70 i-‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ Err bitreich.org 70 i- Err bitreich.org 70 i-Markus Kuhn [ˈmaʳkʊs kuːn] — 2002-07-25 Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-The ASCII compatible UTF-8 encoding used in this plain-text file Err bitreich.org 70 i-is defined in Unicode, ISO 10646-1, and RFC 2279. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Using Unicode/UTF-8, you can write in emails and source code things such as Err bitreich.org 70 i- Err bitreich.org 70 i-Mathematics and sciences: Err bitreich.org 70 i- Err bitreich.org 70 i- ∮ E⋅da = Q, n → ∞, ∑ f(i) = ∏ g(i), ⎧⎡⎛┌─────┐⎞⎤⎫ Err bitreich.org 70 i- ⎪⎢⎜│a²+b³ ⎟⎥⎪ Err bitreich.org 70 i- ∀x∈ℝ: ⌈x⌉ = −⌊−x⌋, α ∧ ¬β = ¬(¬α ∨ β), ⎪⎢⎜│───── ⎟⎥⎪ Err bitreich.org 70 i- ⎪⎢⎜⎷ c₈ ⎟⎥⎪ Err bitreich.org 70 i- ℕ ⊆ ℕ₀ ⊂ ℤ ⊂ ℚ ⊂ ℝ ⊂ ℂ, ⎨⎢⎜ ⎟⎥⎬ Err bitreich.org 70 i- ⎪⎢⎜ ∞ ⎟⎥⎪ Err bitreich.org 70 i- ⊥ < a ≠ b ≡ c ≤ d ≪ ⊤ ⇒ (⟦A⟧ ⇔ ⟪B⟫), ⎪⎢⎜ ⎲ ⎟⎥⎪ Err bitreich.org 70 i- ⎪⎢⎜ ⎳aⁱ-bⁱ⎟⎥⎪ Err bitreich.org 70 i- 2H₂ + O₂ ⇌ 2H₂O, R = 4.7 kΩ, ⌀ 200 mm ⎩⎣⎝i=1 ⎠⎦⎭ Err bitreich.org 70 i- Err bitreich.org 70 i-Linguistics and dictionaries: Err bitreich.org 70 i- Err bitreich.org 70 i- ði ıntəˈnæʃənəl fəˈnɛtık əsoʊsiˈeıʃn Err bitreich.org 70 i- Y [ˈʏpsilɔn], Yen [jɛn], Yoga [ˈjoːgɑ] Err bitreich.org 70 i- Err bitreich.org 70 i-APL: Err bitreich.org 70 i- Err bitreich.org 70 i- ((V⍳V)=⍳⍴V)/V←,V ⌷←⍳→⍴∆∇⊃‾⍎⍕⌈ Err bitreich.org 70 i- Err bitreich.org 70 i-Nicer typography in plain text files: Err bitreich.org 70 i- Err bitreich.org 70 i- ╔══════════════════════════════════════════╗ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • ‘single’ and “double” quotes ║ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • Curly apostrophes: “We’ve been here” ║ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • Latin-1 apostrophe and accents: '´` ║ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • ‚deutsche‘ „Anführungszeichen“ ║ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • †, ‡, ‰, •, 3–4, —, −5/+5, ™, … ║ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • ASCII safety test: 1lI|, 0OD, 8B ║ Err bitreich.org 70 i- ║ ╭─────────╮ ║ Err bitreich.org 70 i- ║ • the euro symbol: │ 14.95 € │ ║ Err bitreich.org 70 i- ║ ╰─────────╯ ║ Err bitreich.org 70 i- ╚══════════════════════════════════════════╝ Err bitreich.org 70 i- Err bitreich.org 70 i-Combining characters: Err bitreich.org 70 i- Err bitreich.org 70 i- STARGΛ̊TE SG-1, a = v̇ = r̈, a⃑ ⊥ b⃑ Err bitreich.org 70 i- Err bitreich.org 70 i-Greek (in Polytonic): Err bitreich.org 70 i- Err bitreich.org 70 i- The Greek anthem: Err bitreich.org 70 i- Err bitreich.org 70 i- Σὲ γνωρίζω ἀπὸ τὴν κόψη Err bitreich.org 70 i- τοῦ σπαθιοῦ τὴν τρομερή, Err bitreich.org 70 i- σὲ γνωρίζω ἀπὸ τὴν ὄψη Err bitreich.org 70 i- ποὺ μὲ βία μετράει τὴ γῆ. Err bitreich.org 70 i- Err bitreich.org 70 i- ᾿Απ᾿ τὰ κόκκαλα βγαλμένη Err bitreich.org 70 i- τῶν ῾Ελλήνων τὰ ἱερά Err bitreich.org 70 i- καὶ σὰν πρῶτα ἀνδρειωμένη Err bitreich.org 70 i- χαῖρε, ὦ χαῖρε, ᾿Ελευθεριά! Err bitreich.org 70 i- Err bitreich.org 70 i- From a speech of Demosthenes in the 4th century BC: Err bitreich.org 70 i- Err bitreich.org 70 i- Οὐχὶ ταὐτὰ παρίσταταί μοι γιγνώσκειν, ὦ ἄνδρες ᾿Αθηναῖοι, Err bitreich.org 70 i- ὅταν τ᾿ εἰς τὰ πράγματα ἀποβλέψω καὶ ὅταν πρὸς τοὺς Err bitreich.org 70 i- λόγους οὓς ἀκούω· τοὺς μὲν γὰρ λόγους περὶ τοῦ Err bitreich.org 70 i- τιμωρήσασθαι Φίλιππον ὁρῶ γιγνομένους, τὰ δὲ πράγματ᾿ Err bitreich.org 70 i- εἰς τοῦτο προήκοντα, ὥσθ᾿ ὅπως μὴ πεισόμεθ᾿ αὐτοὶ Err bitreich.org 70 i- πρότερον κακῶς σκέψασθαι δέον. οὐδέν οὖν ἄλλο μοι δοκοῦσιν Err bitreich.org 70 i- οἱ τὰ τοιαῦτα λέγοντες ἢ τὴν ὑπόθεσιν, περὶ ἧς βουλεύεσθαι, Err bitreich.org 70 i- οὐχὶ τὴν οὖσαν παριστάντες ὑμῖν ἁμαρτάνειν. ἐγὼ δέ, ὅτι μέν Err bitreich.org 70 i- ποτ᾿ ἐξῆν τῇ πόλει καὶ τὰ αὑτῆς ἔχειν ἀσφαλῶς καὶ Φίλιππον Err bitreich.org 70 i- τιμωρήσασθαι, καὶ μάλ᾿ ἀκριβῶς οἶδα· ἐπ᾿ ἐμοῦ γάρ, οὐ πάλαι Err bitreich.org 70 i- γέγονεν ταῦτ᾿ ἀμφότερα· νῦν μέντοι πέπεισμαι τοῦθ᾿ ἱκανὸν Err bitreich.org 70 i- προλαβεῖν ἡμῖν εἶναι τὴν πρώτην, ὅπως τοὺς συμμάχους Err bitreich.org 70 i- σώσομεν. ἐὰν γὰρ τοῦτο βεβαίως ὑπάρξῃ, τότε καὶ περὶ τοῦ Err bitreich.org 70 i- τίνα τιμωρήσεταί τις καὶ ὃν τρόπον ἐξέσται σκοπεῖν· πρὶν δὲ Err bitreich.org 70 i- τὴν ἀρχὴν ὀρθῶς ὑποθέσθαι, μάταιον ἡγοῦμαι περὶ τῆς Err bitreich.org 70 i- τελευτῆς ὁντινοῦν ποιεῖσθαι λόγον. Err bitreich.org 70 i- Err bitreich.org 70 i- Δημοσθένους, Γ´ ᾿Ολυνθιακὸς Err bitreich.org 70 i- Err bitreich.org 70 i-Georgian: Err bitreich.org 70 i- Err bitreich.org 70 i- From a Unicode conference invitation: Err bitreich.org 70 i- Err bitreich.org 70 i- გთხოვთ ახლავე გაიაროთ რეგისტრაცია Unicode-ის მეათე საერთაშორისო Err bitreich.org 70 i- კონფერენციაზე დასასწრებად, რომელიც გაიმართება 10-12 მარტს, Err bitreich.org 70 i- ქ. მაინცში, გერმანიაში. კონფერენცია შეჰკრებს ერთად მსოფლიოს Err bitreich.org 70 i- ექსპერტებს ისეთ დარგებში როგორიცაა ინტერნეტი და Unicode-ი, Err bitreich.org 70 i- ინტერნაციონალიზაცია და ლოკალიზაცია, Unicode-ის გამოყენება Err bitreich.org 70 i- ოპერაციულ სისტემებსა, და გამოყენებით პროგრამებში, შრიფტებში, Err bitreich.org 70 i- ტექსტების დამუშავებასა და მრავალენოვან კომპიუტერულ სისტემებში. Err bitreich.org 70 i- Err bitreich.org 70 i-Russian: Err bitreich.org 70 i- Err bitreich.org 70 i- From a Unicode conference invitation: Err bitreich.org 70 i- Err bitreich.org 70 i- Зарегистрируйтесь сейчас на Десятую Международную Конференцию по Err bitreich.org 70 i- Unicode, которая состоится 10-12 марта 1997 года в Майнце в Германии. Err bitreich.org 70 i- Конференция соберет широкий круг экспертов по вопросам глобального Err bitreich.org 70 i- Интернета и Unicode, локализации и интернационализации, воплощению и Err bitreich.org 70 i- применению Unicode в различных операционных системах и программных Err bitreich.org 70 i- приложениях, шрифтах, верстке и многоязычных компьютерных системах. Err bitreich.org 70 i- Err bitreich.org 70 i-Thai (UCS Level 2): Err bitreich.org 70 i- Err bitreich.org 70 i- Excerpt from a poetry on The Romance of The Three Kingdoms (a Chinese Err bitreich.org 70 i- classic 'San Gua'): Err bitreich.org 70 i- Err bitreich.org 70 i- [----------------------------|------------------------] Err bitreich.org 70 i- ๏ แผ่นดินฮั่นเสื่อมโทรมแสนสังเวช พระปกเกศกองบู๊กู้ขึ้นใหม่ Err bitreich.org 70 i- สิบสองกษัตริย์ก่อนหน้าแลถัดไป สององค์ไซร้โง่เขลาเบาปัญญา Err bitreich.org 70 i- ทรงนับถือขันทีเป็นที่พึ่ง บ้านเมืองจึงวิปริตเป็นนักหนา Err bitreich.org 70 i- โฮจิ๋นเรียกทัพทั่วหัวเมืองมา หมายจะฆ่ามดชั่วตัวสำคัญ Err bitreich.org 70 i- เหมือนขับไสไล่เสือจากเคหา รับหมาป่าเข้ามาเลยอาสัญ Err bitreich.org 70 i- ฝ่ายอ้องอุ้นยุแยกให้แตกกัน ใช้สาวนั้นเป็นชนวนชื่นชวนใจ Err bitreich.org 70 i- พลันลิฉุยกุยกีกลับก่อเหตุ ช่างอาเพศจริงหนาฟ้าร้องไห้ Err bitreich.org 70 i- ต้องรบราฆ่าฟันจนบรรลัย ฤๅหาใครค้ำชูกู้บรรลังก์ ฯ Err bitreich.org 70 i- Err bitreich.org 70 i- (The above is a two-column text. If combining characters are handled Err bitreich.org 70 i- correctly, the lines of the second column should be aligned with the Err bitreich.org 70 i- | character above.) Err bitreich.org 70 i- Err bitreich.org 70 i-Ethiopian: Err bitreich.org 70 i- Err bitreich.org 70 i- Proverbs in the Amharic language: Err bitreich.org 70 i- Err bitreich.org 70 i- ሰማይ አይታረስ ንጉሥ አይከሰስ። Err bitreich.org 70 i- ብላ ካለኝ እንደአባቴ በቆመጠኝ። Err bitreich.org 70 i- ጌጥ ያለቤቱ ቁምጥና ነው። Err bitreich.org 70 i- ደሀ በሕልሙ ቅቤ ባይጠጣ ንጣት በገደለው። Err bitreich.org 70 i- የአፍ ወለምታ በቅቤ አይታሽም። Err bitreich.org 70 i- አይጥ በበላ ዳዋ ተመታ። Err bitreich.org 70 i- ሲተረጉሙ ይደረግሙ። Err bitreich.org 70 i- ቀስ በቀስ፥ ዕንቁላል በእግሩ ይሄዳል። Err bitreich.org 70 i- ድር ቢያብር አንበሳ ያስር። Err bitreich.org 70 i- ሰው እንደቤቱ እንጅ እንደ ጉረቤቱ አይተዳደርም። Err bitreich.org 70 i- እግዜር የከፈተውን ጉሮሮ ሳይዘጋው አይድርም። Err bitreich.org 70 i- የጎረቤት ሌባ፥ ቢያዩት ይስቅ ባያዩት ያጠልቅ። Err bitreich.org 70 i- ሥራ ከመፍታት ልጄን ላፋታት። Err bitreich.org 70 i- ዓባይ ማደሪያ የለው፥ ግንድ ይዞ ይዞራል። Err bitreich.org 70 i- የእስላም አገሩ መካ የአሞራ አገሩ ዋርካ። Err bitreich.org 70 i- ተንጋሎ ቢተፉ ተመልሶ ባፉ። Err bitreich.org 70 i- ወዳጅህ ማር ቢሆን ጨርስህ አትላሰው። Err bitreich.org 70 i- እግርህን በፍራሽህ ልክ ዘርጋ። Err bitreich.org 70 i- Err bitreich.org 70 i-Runes: Err bitreich.org 70 i- Err bitreich.org 70 i- ᚻᛖ ᚳᚹᚫᚦ ᚦᚫᛏ ᚻᛖ ᛒᚢᛞᛖ ᚩᚾ ᚦᚫᛗ ᛚᚪᚾᛞᛖ ᚾᚩᚱᚦᚹᛖᚪᚱᛞᚢᛗ ᚹᛁᚦ ᚦᚪ ᚹᛖᛥᚫ Err bitreich.org 70 i- Err bitreich.org 70 i- (Old English, which transcribed into Latin reads 'He cwaeth that he Err bitreich.org 70 i- bude thaem lande northweardum with tha Westsae.' and means 'He said Err bitreich.org 70 i- that he lived in the northern land near the Western Sea.') Err bitreich.org 70 i- Err bitreich.org 70 i-Braille: Err bitreich.org 70 i- Err bitreich.org 70 i- ⡌⠁⠧⠑ ⠼⠁⠒ ⡍⠜⠇⠑⠹⠰⠎ ⡣⠕⠌ Err bitreich.org 70 i- Err bitreich.org 70 i- ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠙⠑⠁⠙⠒ ⠞⠕ ⠃⠑⠛⠔ ⠺⠊⠹⠲ ⡹⠻⠑ ⠊⠎ ⠝⠕ ⠙⠳⠃⠞ Err bitreich.org 70 i- ⠱⠁⠞⠑⠧⠻ ⠁⠃⠳⠞ ⠹⠁⠞⠲ ⡹⠑ ⠗⠑⠛⠊⠌⠻ ⠕⠋ ⠙⠊⠎ ⠃⠥⠗⠊⠁⠇ ⠺⠁⠎ Err bitreich.org 70 i- ⠎⠊⠛⠝⠫ ⠃⠹ ⠹⠑ ⠊⠇⠻⠛⠹⠍⠁⠝⠂ ⠹⠑ ⠊⠇⠻⠅⠂ ⠹⠑ ⠥⠝⠙⠻⠞⠁⠅⠻⠂ Err bitreich.org 70 i- ⠁⠝⠙ ⠹⠑ ⠡⠊⠑⠋ ⠍⠳⠗⠝⠻⠲ ⡎⠊⠗⠕⠕⠛⠑ ⠎⠊⠛⠝⠫ ⠊⠞⠲ ⡁⠝⠙ Err bitreich.org 70 i- ⡎⠊⠗⠕⠕⠛⠑⠰⠎ ⠝⠁⠍⠑ ⠺⠁⠎ ⠛⠕⠕⠙ ⠥⠏⠕⠝ ⠰⡡⠁⠝⠛⠑⠂ ⠋⠕⠗ ⠁⠝⠹⠹⠔⠛ ⠙⠑ Err bitreich.org 70 i- ⠡⠕⠎⠑ ⠞⠕ ⠏⠥⠞ ⠙⠊⠎ ⠙⠁⠝⠙ ⠞⠕⠲ Err bitreich.org 70 i- Err bitreich.org 70 i- ⡕⠇⠙ ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ Err bitreich.org 70 i- Err bitreich.org 70 i- ⡍⠔⠙⠖ ⡊ ⠙⠕⠝⠰⠞ ⠍⠑⠁⠝ ⠞⠕ ⠎⠁⠹ ⠹⠁⠞ ⡊ ⠅⠝⠪⠂ ⠕⠋ ⠍⠹ Err bitreich.org 70 i- ⠪⠝ ⠅⠝⠪⠇⠫⠛⠑⠂ ⠱⠁⠞ ⠹⠻⠑ ⠊⠎ ⠏⠜⠞⠊⠊⠥⠇⠜⠇⠹ ⠙⠑⠁⠙ ⠁⠃⠳⠞ Err bitreich.org 70 i- ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ ⡊ ⠍⠊⠣⠞ ⠙⠁⠧⠑ ⠃⠑⠲ ⠔⠊⠇⠔⠫⠂ ⠍⠹⠎⠑⠇⠋⠂ ⠞⠕ Err bitreich.org 70 i- ⠗⠑⠛⠜⠙ ⠁ ⠊⠕⠋⠋⠔⠤⠝⠁⠊⠇ ⠁⠎ ⠹⠑ ⠙⠑⠁⠙⠑⠌ ⠏⠊⠑⠊⠑ ⠕⠋ ⠊⠗⠕⠝⠍⠕⠝⠛⠻⠹ Err bitreich.org 70 i- ⠔ ⠹⠑ ⠞⠗⠁⠙⠑⠲ ⡃⠥⠞ ⠹⠑ ⠺⠊⠎⠙⠕⠍ ⠕⠋ ⠳⠗ ⠁⠝⠊⠑⠌⠕⠗⠎ Err bitreich.org 70 i- ⠊⠎ ⠔ ⠹⠑ ⠎⠊⠍⠊⠇⠑⠆ ⠁⠝⠙ ⠍⠹ ⠥⠝⠙⠁⠇⠇⠪⠫ ⠙⠁⠝⠙⠎ Err bitreich.org 70 i- ⠩⠁⠇⠇ ⠝⠕⠞ ⠙⠊⠌⠥⠗⠃ ⠊⠞⠂ ⠕⠗ ⠹⠑ ⡊⠳⠝⠞⠗⠹⠰⠎ ⠙⠕⠝⠑ ⠋⠕⠗⠲ ⡹⠳ Err bitreich.org 70 i- ⠺⠊⠇⠇ ⠹⠻⠑⠋⠕⠗⠑ ⠏⠻⠍⠊⠞ ⠍⠑ ⠞⠕ ⠗⠑⠏⠑⠁⠞⠂ ⠑⠍⠏⠙⠁⠞⠊⠊⠁⠇⠇⠹⠂ ⠹⠁⠞ Err bitreich.org 70 i- ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ Err bitreich.org 70 i- Err bitreich.org 70 i- (The first couple of paragraphs of "A Christmas Carol" by Dickens) Err bitreich.org 70 i- Err bitreich.org 70 i-Compact font selection example text: Err bitreich.org 70 i- Err bitreich.org 70 i- ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789 Err bitreich.org 70 i- abcdefghijklmnopqrstuvwxyz £©µÀÆÖÞßéöÿ Err bitreich.org 70 i- –—‘“”„†•…‰™œŠŸž€ ΑΒΓΔΩαβγδω АБВГДабвгд Err bitreich.org 70 i- ∀∂∈ℝ∧∪≡∞ ↑↗↨↻⇣ ┐┼╔╘░►☺♀ fi�⑀₂ἠḂӥẄɐː⍎אԱა Err bitreich.org 70 i- Err bitreich.org 70 i-Greetings in various languages: Err bitreich.org 70 i- Err bitreich.org 70 i- Hello world, Καλημέρα κόσμε, コンニチハ Err bitreich.org 70 i- Err bitreich.org 70 i-Box drawing alignment tests: █ Err bitreich.org 70 i- ▉ Err bitreich.org 70 i- ╔══╦══╗ ┌──┬──┐ ╭──┬──╮ ╭──┬──╮ ┏━━┳━━┓ ┎┒┏┑ ╷ ╻ ┏┯┓ ┌┰┐ ▊ ╱╲╱╲╳╳╳ Err bitreich.org 70 i- ║┌─╨─┐║ │╔═╧═╗│ │╒═╪═╕│ │╓─╁─╖│ ┃┌─╂─┐┃ ┗╃╄┙ ╶┼╴╺╋╸┠┼┨ ┝╋┥ ▋ ╲╱╲╱╳╳╳ Err bitreich.org 70 i- ║│╲ ╱│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╿ │┃ ┍╅╆┓ ╵ ╹ ┗┷┛ └┸┘ ▌ ╱╲╱╲╳╳╳ Err bitreich.org 70 i- ╠╡ ╳ ╞╣ ├╢ ╟┤ ├┼─┼─┼┤ ├╫─╂─╫┤ ┣┿╾┼╼┿┫ ┕┛┖┚ ┌┄┄┐ ╎ ┏┅┅┓ ┋ ▍ ╲╱╲╱╳╳╳ Err bitreich.org 70 i- ║│╱ ╲│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╽ │┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╏ ┇ ┋ ▎ Err bitreich.org 70 i- ║└─╥─┘║ │╚═╤═╝│ │╘═╪═╛│ │╙─╀─╜│ ┃└─╂─┘┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╏ ┇ ┋ ▏ Err bitreich.org 70 i- ╚══╩══╝ └──┴──┘ ╰──┴──╯ ╰──┴──╯ ┗━━┻━━┛ ▗▄▖▛▀▜ └╌╌┘ ╎ ┗╍╍┛ ┋ ▁▂▃▄▅▆▇█ Err bitreich.org 70 i- ▝▀▘▙▄▟ Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/tests/utf-32-with-le-bom.txt b/3rdparties/software/babel-20171227-git/tests/utf-32-with-le-bom.txt /scm/clic/file/3rdparties/software/babel-20171227-git/tests/utf-32-with-le-bom.txt.gph bitreich.org 70 iBinary files differ. Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/tests/utf-32.txt b/3rdparties/software/babel-20171227-git/tests/utf-32.txt /scm/clic/file/3rdparties/software/babel-20171227-git/tests/utf-32.txt.gph bitreich.org 70 iBinary files differ. Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/tests/utf-32.txt-utf8 b/3rdparties/software/babel-20171227-git/tests/utf-32.txt-utf8 /scm/clic/file/3rdparties/software/babel-20171227-git/tests/utf-32.txt-utf8.gph bitreich.org 70 i@@ -1,212 +0,0 @@ Err bitreich.org 70 i- Err bitreich.org 70 i-UTF-8 encoded sample plain-text file Err bitreich.org 70 i-‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ Err bitreich.org 70 i- Err bitreich.org 70 i-Markus Kuhn [ˈmaʳkʊs kuːn] — 2002-07-25 Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-The ASCII compatible UTF-8 encoding used in this plain-text file Err bitreich.org 70 i-is defined in Unicode, ISO 10646-1, and RFC 2279. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Using Unicode/UTF-8, you can write in emails and source code things such as Err bitreich.org 70 i- Err bitreich.org 70 i-Mathematics and sciences: Err bitreich.org 70 i- Err bitreich.org 70 i- ∮ E⋅da = Q, n → ∞, ∑ f(i) = ∏ g(i), ⎧⎡⎛┌─────┐⎞⎤⎫ Err bitreich.org 70 i- ⎪⎢⎜│a²+b³ ⎟⎥⎪ Err bitreich.org 70 i- ∀x∈ℝ: ⌈x⌉ = −⌊−x⌋, α ∧ ¬β = ¬(¬α ∨ β), ⎪⎢⎜│───── ⎟⎥⎪ Err bitreich.org 70 i- ⎪⎢⎜⎷ c₈ ⎟⎥⎪ Err bitreich.org 70 i- ℕ ⊆ ℕ₀ ⊂ ℤ ⊂ ℚ ⊂ ℝ ⊂ ℂ, ⎨⎢⎜ ⎟⎥⎬ Err bitreich.org 70 i- ⎪⎢⎜ ∞ ⎟⎥⎪ Err bitreich.org 70 i- ⊥ < a ≠ b ≡ c ≤ d ≪ ⊤ ⇒ (⟦A⟧ ⇔ ⟪B⟫), ⎪⎢⎜ ⎲ ⎟⎥⎪ Err bitreich.org 70 i- ⎪⎢⎜ ⎳aⁱ-bⁱ⎟⎥⎪ Err bitreich.org 70 i- 2H₂ + O₂ ⇌ 2H₂O, R = 4.7 kΩ, ⌀ 200 mm ⎩⎣⎝i=1 ⎠⎦⎭ Err bitreich.org 70 i- Err bitreich.org 70 i-Linguistics and dictionaries: Err bitreich.org 70 i- Err bitreich.org 70 i- ði ıntəˈnæʃənəl fəˈnɛtık əsoʊsiˈeıʃn Err bitreich.org 70 i- Y [ˈʏpsilɔn], Yen [jɛn], Yoga [ˈjoːgɑ] Err bitreich.org 70 i- Err bitreich.org 70 i-APL: Err bitreich.org 70 i- Err bitreich.org 70 i- ((V⍳V)=⍳⍴V)/V←,V ⌷←⍳→⍴∆∇⊃‾⍎⍕⌈ Err bitreich.org 70 i- Err bitreich.org 70 i-Nicer typography in plain text files: Err bitreich.org 70 i- Err bitreich.org 70 i- ╔══════════════════════════════════════════╗ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • ‘single’ and “double” quotes ║ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • Curly apostrophes: “We’ve been here” ║ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • Latin-1 apostrophe and accents: '´` ║ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • ‚deutsche‘ „Anführungszeichen“ ║ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • †, ‡, ‰, •, 3–4, —, −5/+5, ™, … ║ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • ASCII safety test: 1lI|, 0OD, 8B ║ Err bitreich.org 70 i- ║ ╭─────────╮ ║ Err bitreich.org 70 i- ║ • the euro symbol: │ 14.95 € │ ║ Err bitreich.org 70 i- ║ ╰─────────╯ ║ Err bitreich.org 70 i- ╚══════════════════════════════════════════╝ Err bitreich.org 70 i- Err bitreich.org 70 i-Combining characters: Err bitreich.org 70 i- Err bitreich.org 70 i- STARGΛ̊TE SG-1, a = v̇ = r̈, a⃑ ⊥ b⃑ Err bitreich.org 70 i- Err bitreich.org 70 i-Greek (in Polytonic): Err bitreich.org 70 i- Err bitreich.org 70 i- The Greek anthem: Err bitreich.org 70 i- Err bitreich.org 70 i- Σὲ γνωρίζω ἀπὸ τὴν κόψη Err bitreich.org 70 i- τοῦ σπαθιοῦ τὴν τρομερή, Err bitreich.org 70 i- σὲ γνωρίζω ἀπὸ τὴν ὄψη Err bitreich.org 70 i- ποὺ μὲ βία μετράει τὴ γῆ. Err bitreich.org 70 i- Err bitreich.org 70 i- ᾿Απ᾿ τὰ κόκκαλα βγαλμένη Err bitreich.org 70 i- τῶν ῾Ελλήνων τὰ ἱερά Err bitreich.org 70 i- καὶ σὰν πρῶτα ἀνδρειωμένη Err bitreich.org 70 i- χαῖρε, ὦ χαῖρε, ᾿Ελευθεριά! Err bitreich.org 70 i- Err bitreich.org 70 i- From a speech of Demosthenes in the 4th century BC: Err bitreich.org 70 i- Err bitreich.org 70 i- Οὐχὶ ταὐτὰ παρίσταταί μοι γιγνώσκειν, ὦ ἄνδρες ᾿Αθηναῖοι, Err bitreich.org 70 i- ὅταν τ᾿ εἰς τὰ πράγματα ἀποβλέψω καὶ ὅταν πρὸς τοὺς Err bitreich.org 70 i- λόγους οὓς ἀκούω· τοὺς μὲν γὰρ λόγους περὶ τοῦ Err bitreich.org 70 i- τιμωρήσασθαι Φίλιππον ὁρῶ γιγνομένους, τὰ δὲ πράγματ᾿ Err bitreich.org 70 i- εἰς τοῦτο προήκοντα, ὥσθ᾿ ὅπως μὴ πεισόμεθ᾿ αὐτοὶ Err bitreich.org 70 i- πρότερον κακῶς σκέψασθαι δέον. οὐδέν οὖν ἄλλο μοι δοκοῦσιν Err bitreich.org 70 i- οἱ τὰ τοιαῦτα λέγοντες ἢ τὴν ὑπόθεσιν, περὶ ἧς βουλεύεσθαι, Err bitreich.org 70 i- οὐχὶ τὴν οὖσαν παριστάντες ὑμῖν ἁμαρτάνειν. ἐγὼ δέ, ὅτι μέν Err bitreich.org 70 i- ποτ᾿ ἐξῆν τῇ πόλει καὶ τὰ αὑτῆς ἔχειν ἀσφαλῶς καὶ Φίλιππον Err bitreich.org 70 i- τιμωρήσασθαι, καὶ μάλ᾿ ἀκριβῶς οἶδα· ἐπ᾿ ἐμοῦ γάρ, οὐ πάλαι Err bitreich.org 70 i- γέγονεν ταῦτ᾿ ἀμφότερα· νῦν μέντοι πέπεισμαι τοῦθ᾿ ἱκανὸν Err bitreich.org 70 i- προλαβεῖν ἡμῖν εἶναι τὴν πρώτην, ὅπως τοὺς συμμάχους Err bitreich.org 70 i- σώσομεν. ἐὰν γὰρ τοῦτο βεβαίως ὑπάρξῃ, τότε καὶ περὶ τοῦ Err bitreich.org 70 i- τίνα τιμωρήσεταί τις καὶ ὃν τρόπον ἐξέσται σκοπεῖν· πρὶν δὲ Err bitreich.org 70 i- τὴν ἀρχὴν ὀρθῶς ὑποθέσθαι, μάταιον ἡγοῦμαι περὶ τῆς Err bitreich.org 70 i- τελευτῆς ὁντινοῦν ποιεῖσθαι λόγον. Err bitreich.org 70 i- Err bitreich.org 70 i- Δημοσθένους, Γ´ ᾿Ολυνθιακὸς Err bitreich.org 70 i- Err bitreich.org 70 i-Georgian: Err bitreich.org 70 i- Err bitreich.org 70 i- From a Unicode conference invitation: Err bitreich.org 70 i- Err bitreich.org 70 i- გთხოვთ ახლავე გაიაროთ რეგისტრაცია Unicode-ის მეათე საერთაშორისო Err bitreich.org 70 i- კონფერენციაზე დასასწრებად, რომელიც გაიმართება 10-12 მარტს, Err bitreich.org 70 i- ქ. მაინცში, გერმანიაში. კონფერენცია შეჰკრებს ერთად მსოფლიოს Err bitreich.org 70 i- ექსპერტებს ისეთ დარგებში როგორიცაა ინტერნეტი და Unicode-ი, Err bitreich.org 70 i- ინტერნაციონალიზაცია და ლოკალიზაცია, Unicode-ის გამოყენება Err bitreich.org 70 i- ოპერაციულ სისტემებსა, და გამოყენებით პროგრამებში, შრიფტებში, Err bitreich.org 70 i- ტექსტების დამუშავებასა და მრავალენოვან კომპიუტერულ სისტემებში. Err bitreich.org 70 i- Err bitreich.org 70 i-Russian: Err bitreich.org 70 i- Err bitreich.org 70 i- From a Unicode conference invitation: Err bitreich.org 70 i- Err bitreich.org 70 i- Зарегистрируйтесь сейчас на Десятую Международную Конференцию по Err bitreich.org 70 i- Unicode, которая состоится 10-12 марта 1997 года в Майнце в Германии. Err bitreich.org 70 i- Конференция соберет широкий круг экспертов по вопросам глобального Err bitreich.org 70 i- Интернета и Unicode, локализации и интернационализации, воплощению и Err bitreich.org 70 i- применению Unicode в различных операционных системах и программных Err bitreich.org 70 i- приложениях, шрифтах, верстке и многоязычных компьютерных системах. Err bitreich.org 70 i- Err bitreich.org 70 i-Thai (UCS Level 2): Err bitreich.org 70 i- Err bitreich.org 70 i- Excerpt from a poetry on The Romance of The Three Kingdoms (a Chinese Err bitreich.org 70 i- classic 'San Gua'): Err bitreich.org 70 i- Err bitreich.org 70 i- [----------------------------|------------------------] Err bitreich.org 70 i- ๏ แผ่นดินฮั่นเสื่อมโทรมแสนสังเวช พระปกเกศกองบู๊กู้ขึ้นใหม่ Err bitreich.org 70 i- สิบสองกษัตริย์ก่อนหน้าแลถัดไป สององค์ไซร้โง่เขลาเบาปัญญา Err bitreich.org 70 i- ทรงนับถือขันทีเป็นที่พึ่ง บ้านเมืองจึงวิปริตเป็นนักหนา Err bitreich.org 70 i- โฮจิ๋นเรียกทัพทั่วหัวเมืองมา หมายจะฆ่ามดชั่วตัวสำคัญ Err bitreich.org 70 i- เหมือนขับไสไล่เสือจากเคหา รับหมาป่าเข้ามาเลยอาสัญ Err bitreich.org 70 i- ฝ่ายอ้องอุ้นยุแยกให้แตกกัน ใช้สาวนั้นเป็นชนวนชื่นชวนใจ Err bitreich.org 70 i- พลันลิฉุยกุยกีกลับก่อเหตุ ช่างอาเพศจริงหนาฟ้าร้องไห้ Err bitreich.org 70 i- ต้องรบราฆ่าฟันจนบรรลัย ฤๅหาใครค้ำชูกู้บรรลังก์ ฯ Err bitreich.org 70 i- Err bitreich.org 70 i- (The above is a two-column text. If combining characters are handled Err bitreich.org 70 i- correctly, the lines of the second column should be aligned with the Err bitreich.org 70 i- | character above.) Err bitreich.org 70 i- Err bitreich.org 70 i-Ethiopian: Err bitreich.org 70 i- Err bitreich.org 70 i- Proverbs in the Amharic language: Err bitreich.org 70 i- Err bitreich.org 70 i- ሰማይ አይታረስ ንጉሥ አይከሰስ። Err bitreich.org 70 i- ብላ ካለኝ እንደአባቴ በቆመጠኝ። Err bitreich.org 70 i- ጌጥ ያለቤቱ ቁምጥና ነው። Err bitreich.org 70 i- ደሀ በሕልሙ ቅቤ ባይጠጣ ንጣት በገደለው። Err bitreich.org 70 i- የአፍ ወለምታ በቅቤ አይታሽም። Err bitreich.org 70 i- አይጥ በበላ ዳዋ ተመታ። Err bitreich.org 70 i- ሲተረጉሙ ይደረግሙ። Err bitreich.org 70 i- ቀስ በቀስ፥ ዕንቁላል በእግሩ ይሄዳል። Err bitreich.org 70 i- ድር ቢያብር አንበሳ ያስር። Err bitreich.org 70 i- ሰው እንደቤቱ እንጅ እንደ ጉረቤቱ አይተዳደርም። Err bitreich.org 70 i- እግዜር የከፈተውን ጉሮሮ ሳይዘጋው አይድርም። Err bitreich.org 70 i- የጎረቤት ሌባ፥ ቢያዩት ይስቅ ባያዩት ያጠልቅ። Err bitreich.org 70 i- ሥራ ከመፍታት ልጄን ላፋታት። Err bitreich.org 70 i- ዓባይ ማደሪያ የለው፥ ግንድ ይዞ ይዞራል። Err bitreich.org 70 i- የእስላም አገሩ መካ የአሞራ አገሩ ዋርካ። Err bitreich.org 70 i- ተንጋሎ ቢተፉ ተመልሶ ባፉ። Err bitreich.org 70 i- ወዳጅህ ማር ቢሆን ጨርስህ አትላሰው። Err bitreich.org 70 i- እግርህን በፍራሽህ ልክ ዘርጋ። Err bitreich.org 70 i- Err bitreich.org 70 i-Runes: Err bitreich.org 70 i- Err bitreich.org 70 i- ᚻᛖ ᚳᚹᚫᚦ ᚦᚫᛏ ᚻᛖ ᛒᚢᛞᛖ ᚩᚾ ᚦᚫᛗ ᛚᚪᚾᛞᛖ ᚾᚩᚱᚦᚹᛖᚪᚱᛞᚢᛗ ᚹᛁᚦ ᚦᚪ ᚹᛖᛥᚫ Err bitreich.org 70 i- Err bitreich.org 70 i- (Old English, which transcribed into Latin reads 'He cwaeth that he Err bitreich.org 70 i- bude thaem lande northweardum with tha Westsae.' and means 'He said Err bitreich.org 70 i- that he lived in the northern land near the Western Sea.') Err bitreich.org 70 i- Err bitreich.org 70 i-Braille: Err bitreich.org 70 i- Err bitreich.org 70 i- ⡌⠁⠧⠑ ⠼⠁⠒ ⡍⠜⠇⠑⠹⠰⠎ ⡣⠕⠌ Err bitreich.org 70 i- Err bitreich.org 70 i- ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠙⠑⠁⠙⠒ ⠞⠕ ⠃⠑⠛⠔ ⠺⠊⠹⠲ ⡹⠻⠑ ⠊⠎ ⠝⠕ ⠙⠳⠃⠞ Err bitreich.org 70 i- ⠱⠁⠞⠑⠧⠻ ⠁⠃⠳⠞ ⠹⠁⠞⠲ ⡹⠑ ⠗⠑⠛⠊⠌⠻ ⠕⠋ ⠙⠊⠎ ⠃⠥⠗⠊⠁⠇ ⠺⠁⠎ Err bitreich.org 70 i- ⠎⠊⠛⠝⠫ ⠃⠹ ⠹⠑ ⠊⠇⠻⠛⠹⠍⠁⠝⠂ ⠹⠑ ⠊⠇⠻⠅⠂ ⠹⠑ ⠥⠝⠙⠻⠞⠁⠅⠻⠂ Err bitreich.org 70 i- ⠁⠝⠙ ⠹⠑ ⠡⠊⠑⠋ ⠍⠳⠗⠝⠻⠲ ⡎⠊⠗⠕⠕⠛⠑ ⠎⠊⠛⠝⠫ ⠊⠞⠲ ⡁⠝⠙ Err bitreich.org 70 i- ⡎⠊⠗⠕⠕⠛⠑⠰⠎ ⠝⠁⠍⠑ ⠺⠁⠎ ⠛⠕⠕⠙ ⠥⠏⠕⠝ ⠰⡡⠁⠝⠛⠑⠂ ⠋⠕⠗ ⠁⠝⠹⠹⠔⠛ ⠙⠑ Err bitreich.org 70 i- ⠡⠕⠎⠑ ⠞⠕ ⠏⠥⠞ ⠙⠊⠎ ⠙⠁⠝⠙ ⠞⠕⠲ Err bitreich.org 70 i- Err bitreich.org 70 i- ⡕⠇⠙ ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ Err bitreich.org 70 i- Err bitreich.org 70 i- ⡍⠔⠙⠖ ⡊ ⠙⠕⠝⠰⠞ ⠍⠑⠁⠝ ⠞⠕ ⠎⠁⠹ ⠹⠁⠞ ⡊ ⠅⠝⠪⠂ ⠕⠋ ⠍⠹ Err bitreich.org 70 i- ⠪⠝ ⠅⠝⠪⠇⠫⠛⠑⠂ ⠱⠁⠞ ⠹⠻⠑ ⠊⠎ ⠏⠜⠞⠊⠊⠥⠇⠜⠇⠹ ⠙⠑⠁⠙ ⠁⠃⠳⠞ Err bitreich.org 70 i- ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ ⡊ ⠍⠊⠣⠞ ⠙⠁⠧⠑ ⠃⠑⠲ ⠔⠊⠇⠔⠫⠂ ⠍⠹⠎⠑⠇⠋⠂ ⠞⠕ Err bitreich.org 70 i- ⠗⠑⠛⠜⠙ ⠁ ⠊⠕⠋⠋⠔⠤⠝⠁⠊⠇ ⠁⠎ ⠹⠑ ⠙⠑⠁⠙⠑⠌ ⠏⠊⠑⠊⠑ ⠕⠋ ⠊⠗⠕⠝⠍⠕⠝⠛⠻⠹ Err bitreich.org 70 i- ⠔ ⠹⠑ ⠞⠗⠁⠙⠑⠲ ⡃⠥⠞ ⠹⠑ ⠺⠊⠎⠙⠕⠍ ⠕⠋ ⠳⠗ ⠁⠝⠊⠑⠌⠕⠗⠎ Err bitreich.org 70 i- ⠊⠎ ⠔ ⠹⠑ ⠎⠊⠍⠊⠇⠑⠆ ⠁⠝⠙ ⠍⠹ ⠥⠝⠙⠁⠇⠇⠪⠫ ⠙⠁⠝⠙⠎ Err bitreich.org 70 i- ⠩⠁⠇⠇ ⠝⠕⠞ ⠙⠊⠌⠥⠗⠃ ⠊⠞⠂ ⠕⠗ ⠹⠑ ⡊⠳⠝⠞⠗⠹⠰⠎ ⠙⠕⠝⠑ ⠋⠕⠗⠲ ⡹⠳ Err bitreich.org 70 i- ⠺⠊⠇⠇ ⠹⠻⠑⠋⠕⠗⠑ ⠏⠻⠍⠊⠞ ⠍⠑ ⠞⠕ ⠗⠑⠏⠑⠁⠞⠂ ⠑⠍⠏⠙⠁⠞⠊⠊⠁⠇⠇⠹⠂ ⠹⠁⠞ Err bitreich.org 70 i- ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ Err bitreich.org 70 i- Err bitreich.org 70 i- (The first couple of paragraphs of "A Christmas Carol" by Dickens) Err bitreich.org 70 i- Err bitreich.org 70 i-Compact font selection example text: Err bitreich.org 70 i- Err bitreich.org 70 i- ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789 Err bitreich.org 70 i- abcdefghijklmnopqrstuvwxyz £©µÀÆÖÞßéöÿ Err bitreich.org 70 i- –—‘“”„†•…‰™œŠŸž€ ΑΒΓΔΩαβγδω АБВГДабвгд Err bitreich.org 70 i- ∀∂∈ℝ∧∪≡∞ ↑↗↨↻⇣ ┐┼╔╘░►☺♀ fi�⑀₂ἠḂӥẄɐː⍎אԱა Err bitreich.org 70 i- Err bitreich.org 70 i-Greetings in various languages: Err bitreich.org 70 i- Err bitreich.org 70 i- Hello world, Καλημέρα κόσμε, コンニチハ Err bitreich.org 70 i- Err bitreich.org 70 i-Box drawing alignment tests: █ Err bitreich.org 70 i- ▉ Err bitreich.org 70 i- ╔══╦══╗ ┌──┬──┐ ╭──┬──╮ ╭──┬──╮ ┏━━┳━━┓ ┎┒┏┑ ╷ ╻ ┏┯┓ ┌┰┐ ▊ ╱╲╱╲╳╳╳ Err bitreich.org 70 i- ║┌─╨─┐║ │╔═╧═╗│ │╒═╪═╕│ │╓─╁─╖│ ┃┌─╂─┐┃ ┗╃╄┙ ╶┼╴╺╋╸┠┼┨ ┝╋┥ ▋ ╲╱╲╱╳╳╳ Err bitreich.org 70 i- ║│╲ ╱│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╿ │┃ ┍╅╆┓ ╵ ╹ ┗┷┛ └┸┘ ▌ ╱╲╱╲╳╳╳ Err bitreich.org 70 i- ╠╡ ╳ ╞╣ ├╢ ╟┤ ├┼─┼─┼┤ ├╫─╂─╫┤ ┣┿╾┼╼┿┫ ┕┛┖┚ ┌┄┄┐ ╎ ┏┅┅┓ ┋ ▍ ╲╱╲╱╳╳╳ Err bitreich.org 70 i- ║│╱ ╲│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╽ │┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╏ ┇ ┋ ▎ Err bitreich.org 70 i- ║└─╥─┘║ │╚═╤═╝│ │╘═╪═╛│ │╙─╀─╜│ ┃└─╂─┘┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╏ ┇ ┋ ▏ Err bitreich.org 70 i- ╚══╩══╝ └──┴──┘ ╰──┴──╯ ╰──┴──╯ ┗━━┻━━┛ ▗▄▖▛▀▜ └╌╌┘ ╎ ┗╍╍┛ ┋ ▁▂▃▄▅▆▇█ Err bitreich.org 70 i- ▝▀▘▙▄▟ Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/tests/utf-8.txt b/3rdparties/software/babel-20171227-git/tests/utf-8.txt /scm/clic/file/3rdparties/software/babel-20171227-git/tests/utf-8.txt.gph bitreich.org 70 i@@ -1,212 +0,0 @@ Err bitreich.org 70 i- Err bitreich.org 70 i-UTF-8 encoded sample plain-text file Err bitreich.org 70 i-‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ Err bitreich.org 70 i- Err bitreich.org 70 i-Markus Kuhn [ˈmaʳkʊs kuːn] — 2002-07-25 Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-The ASCII compatible UTF-8 encoding used in this plain-text file Err bitreich.org 70 i-is defined in Unicode, ISO 10646-1, and RFC 2279. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Using Unicode/UTF-8, you can write in emails and source code things such as Err bitreich.org 70 i- Err bitreich.org 70 i-Mathematics and sciences: Err bitreich.org 70 i- Err bitreich.org 70 i- ∮ E⋅da = Q, n → ∞, ∑ f(i) = ∏ g(i), ⎧⎡⎛┌─────┐⎞⎤⎫ Err bitreich.org 70 i- ⎪⎢⎜│a²+b³ ⎟⎥⎪ Err bitreich.org 70 i- ∀x∈ℝ: ⌈x⌉ = −⌊−x⌋, α ∧ ¬β = ¬(¬α ∨ β), ⎪⎢⎜│───── ⎟⎥⎪ Err bitreich.org 70 i- ⎪⎢⎜⎷ c₈ ⎟⎥⎪ Err bitreich.org 70 i- ℕ ⊆ ℕ₀ ⊂ ℤ ⊂ ℚ ⊂ ℝ ⊂ ℂ, ⎨⎢⎜ ⎟⎥⎬ Err bitreich.org 70 i- ⎪⎢⎜ ∞ ⎟⎥⎪ Err bitreich.org 70 i- ⊥ < a ≠ b ≡ c ≤ d ≪ ⊤ ⇒ (⟦A⟧ ⇔ ⟪B⟫), ⎪⎢⎜ ⎲ ⎟⎥⎪ Err bitreich.org 70 i- ⎪⎢⎜ ⎳aⁱ-bⁱ⎟⎥⎪ Err bitreich.org 70 i- 2H₂ + O₂ ⇌ 2H₂O, R = 4.7 kΩ, ⌀ 200 mm ⎩⎣⎝i=1 ⎠⎦⎭ Err bitreich.org 70 i- Err bitreich.org 70 i-Linguistics and dictionaries: Err bitreich.org 70 i- Err bitreich.org 70 i- ði ıntəˈnæʃənəl fəˈnɛtık əsoʊsiˈeıʃn Err bitreich.org 70 i- Y [ˈʏpsilɔn], Yen [jɛn], Yoga [ˈjoːgɑ] Err bitreich.org 70 i- Err bitreich.org 70 i-APL: Err bitreich.org 70 i- Err bitreich.org 70 i- ((V⍳V)=⍳⍴V)/V←,V ⌷←⍳→⍴∆∇⊃‾⍎⍕⌈ Err bitreich.org 70 i- Err bitreich.org 70 i-Nicer typography in plain text files: Err bitreich.org 70 i- Err bitreich.org 70 i- ╔══════════════════════════════════════════╗ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • ‘single’ and “double” quotes ║ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • Curly apostrophes: “We’ve been here” ║ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • Latin-1 apostrophe and accents: '´` ║ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • ‚deutsche‘ „Anführungszeichen“ ║ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • †, ‡, ‰, •, 3–4, —, −5/+5, ™, … ║ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • ASCII safety test: 1lI|, 0OD, 8B ║ Err bitreich.org 70 i- ║ ╭─────────╮ ║ Err bitreich.org 70 i- ║ • the euro symbol: │ 14.95 € │ ║ Err bitreich.org 70 i- ║ ╰─────────╯ ║ Err bitreich.org 70 i- ╚══════════════════════════════════════════╝ Err bitreich.org 70 i- Err bitreich.org 70 i-Combining characters: Err bitreich.org 70 i- Err bitreich.org 70 i- STARGΛ̊TE SG-1, a = v̇ = r̈, a⃑ ⊥ b⃑ Err bitreich.org 70 i- Err bitreich.org 70 i-Greek (in Polytonic): Err bitreich.org 70 i- Err bitreich.org 70 i- The Greek anthem: Err bitreich.org 70 i- Err bitreich.org 70 i- Σὲ γνωρίζω ἀπὸ τὴν κόψη Err bitreich.org 70 i- τοῦ σπαθιοῦ τὴν τρομερή, Err bitreich.org 70 i- σὲ γνωρίζω ἀπὸ τὴν ὄψη Err bitreich.org 70 i- ποὺ μὲ βία μετράει τὴ γῆ. Err bitreich.org 70 i- Err bitreich.org 70 i- ᾿Απ᾿ τὰ κόκκαλα βγαλμένη Err bitreich.org 70 i- τῶν ῾Ελλήνων τὰ ἱερά Err bitreich.org 70 i- καὶ σὰν πρῶτα ἀνδρειωμένη Err bitreich.org 70 i- χαῖρε, ὦ χαῖρε, ᾿Ελευθεριά! Err bitreich.org 70 i- Err bitreich.org 70 i- From a speech of Demosthenes in the 4th century BC: Err bitreich.org 70 i- Err bitreich.org 70 i- Οὐχὶ ταὐτὰ παρίσταταί μοι γιγνώσκειν, ὦ ἄνδρες ᾿Αθηναῖοι, Err bitreich.org 70 i- ὅταν τ᾿ εἰς τὰ πράγματα ἀποβλέψω καὶ ὅταν πρὸς τοὺς Err bitreich.org 70 i- λόγους οὓς ἀκούω· τοὺς μὲν γὰρ λόγους περὶ τοῦ Err bitreich.org 70 i- τιμωρήσασθαι Φίλιππον ὁρῶ γιγνομένους, τὰ δὲ πράγματ᾿ Err bitreich.org 70 i- εἰς τοῦτο προήκοντα, ὥσθ᾿ ὅπως μὴ πεισόμεθ᾿ αὐτοὶ Err bitreich.org 70 i- πρότερον κακῶς σκέψασθαι δέον. οὐδέν οὖν ἄλλο μοι δοκοῦσιν Err bitreich.org 70 i- οἱ τὰ τοιαῦτα λέγοντες ἢ τὴν ὑπόθεσιν, περὶ ἧς βουλεύεσθαι, Err bitreich.org 70 i- οὐχὶ τὴν οὖσαν παριστάντες ὑμῖν ἁμαρτάνειν. ἐγὼ δέ, ὅτι μέν Err bitreich.org 70 i- ποτ᾿ ἐξῆν τῇ πόλει καὶ τὰ αὑτῆς ἔχειν ἀσφαλῶς καὶ Φίλιππον Err bitreich.org 70 i- τιμωρήσασθαι, καὶ μάλ᾿ ἀκριβῶς οἶδα· ἐπ᾿ ἐμοῦ γάρ, οὐ πάλαι Err bitreich.org 70 i- γέγονεν ταῦτ᾿ ἀμφότερα· νῦν μέντοι πέπεισμαι τοῦθ᾿ ἱκανὸν Err bitreich.org 70 i- προλαβεῖν ἡμῖν εἶναι τὴν πρώτην, ὅπως τοὺς συμμάχους Err bitreich.org 70 i- σώσομεν. ἐὰν γὰρ τοῦτο βεβαίως ὑπάρξῃ, τότε καὶ περὶ τοῦ Err bitreich.org 70 i- τίνα τιμωρήσεταί τις καὶ ὃν τρόπον ἐξέσται σκοπεῖν· πρὶν δὲ Err bitreich.org 70 i- τὴν ἀρχὴν ὀρθῶς ὑποθέσθαι, μάταιον ἡγοῦμαι περὶ τῆς Err bitreich.org 70 i- τελευτῆς ὁντινοῦν ποιεῖσθαι λόγον. Err bitreich.org 70 i- Err bitreich.org 70 i- Δημοσθένους, Γ´ ᾿Ολυνθιακὸς Err bitreich.org 70 i- Err bitreich.org 70 i-Georgian: Err bitreich.org 70 i- Err bitreich.org 70 i- From a Unicode conference invitation: Err bitreich.org 70 i- Err bitreich.org 70 i- გთხოვთ ახლავე გაიაროთ რეგისტრაცია Unicode-ის მეათე საერთაშორისო Err bitreich.org 70 i- კონფერენციაზე დასასწრებად, რომელიც გაიმართება 10-12 მარტს, Err bitreich.org 70 i- ქ. მაინცში, გერმანიაში. კონფერენცია შეჰკრებს ერთად მსოფლიოს Err bitreich.org 70 i- ექსპერტებს ისეთ დარგებში როგორიცაა ინტერნეტი და Unicode-ი, Err bitreich.org 70 i- ინტერნაციონალიზაცია და ლოკალიზაცია, Unicode-ის გამოყენება Err bitreich.org 70 i- ოპერაციულ სისტემებსა, და გამოყენებით პროგრამებში, შრიფტებში, Err bitreich.org 70 i- ტექსტების დამუშავებასა და მრავალენოვან კომპიუტერულ სისტემებში. Err bitreich.org 70 i- Err bitreich.org 70 i-Russian: Err bitreich.org 70 i- Err bitreich.org 70 i- From a Unicode conference invitation: Err bitreich.org 70 i- Err bitreich.org 70 i- Зарегистрируйтесь сейчас на Десятую Международную Конференцию по Err bitreich.org 70 i- Unicode, которая состоится 10-12 марта 1997 года в Майнце в Германии. Err bitreich.org 70 i- Конференция соберет широкий круг экспертов по вопросам глобального Err bitreich.org 70 i- Интернета и Unicode, локализации и интернационализации, воплощению и Err bitreich.org 70 i- применению Unicode в различных операционных системах и программных Err bitreich.org 70 i- приложениях, шрифтах, верстке и многоязычных компьютерных системах. Err bitreich.org 70 i- Err bitreich.org 70 i-Thai (UCS Level 2): Err bitreich.org 70 i- Err bitreich.org 70 i- Excerpt from a poetry on The Romance of The Three Kingdoms (a Chinese Err bitreich.org 70 i- classic 'San Gua'): Err bitreich.org 70 i- Err bitreich.org 70 i- [----------------------------|------------------------] Err bitreich.org 70 i- ๏ แผ่นดินฮั่นเสื่อมโทรมแสนสังเวช พระปกเกศกองบู๊กู้ขึ้นใหม่ Err bitreich.org 70 i- สิบสองกษัตริย์ก่อนหน้าแลถัดไป สององค์ไซร้โง่เขลาเบาปัญญา Err bitreich.org 70 i- ทรงนับถือขันทีเป็นที่พึ่ง บ้านเมืองจึงวิปริตเป็นนักหนา Err bitreich.org 70 i- โฮจิ๋นเรียกทัพทั่วหัวเมืองมา หมายจะฆ่ามดชั่วตัวสำคัญ Err bitreich.org 70 i- เหมือนขับไสไล่เสือจากเคหา รับหมาป่าเข้ามาเลยอาสัญ Err bitreich.org 70 i- ฝ่ายอ้องอุ้นยุแยกให้แตกกัน ใช้สาวนั้นเป็นชนวนชื่นชวนใจ Err bitreich.org 70 i- พลันลิฉุยกุยกีกลับก่อเหตุ ช่างอาเพศจริงหนาฟ้าร้องไห้ Err bitreich.org 70 i- ต้องรบราฆ่าฟันจนบรรลัย ฤๅหาใครค้ำชูกู้บรรลังก์ ฯ Err bitreich.org 70 i- Err bitreich.org 70 i- (The above is a two-column text. If combining characters are handled Err bitreich.org 70 i- correctly, the lines of the second column should be aligned with the Err bitreich.org 70 i- | character above.) Err bitreich.org 70 i- Err bitreich.org 70 i-Ethiopian: Err bitreich.org 70 i- Err bitreich.org 70 i- Proverbs in the Amharic language: Err bitreich.org 70 i- Err bitreich.org 70 i- ሰማይ አይታረስ ንጉሥ አይከሰስ። Err bitreich.org 70 i- ብላ ካለኝ እንደአባቴ በቆመጠኝ። Err bitreich.org 70 i- ጌጥ ያለቤቱ ቁምጥና ነው። Err bitreich.org 70 i- ደሀ በሕልሙ ቅቤ ባይጠጣ ንጣት በገደለው። Err bitreich.org 70 i- የአፍ ወለምታ በቅቤ አይታሽም። Err bitreich.org 70 i- አይጥ በበላ ዳዋ ተመታ። Err bitreich.org 70 i- ሲተረጉሙ ይደረግሙ። Err bitreich.org 70 i- ቀስ በቀስ፥ ዕንቁላል በእግሩ ይሄዳል። Err bitreich.org 70 i- ድር ቢያብር አንበሳ ያስር። Err bitreich.org 70 i- ሰው እንደቤቱ እንጅ እንደ ጉረቤቱ አይተዳደርም። Err bitreich.org 70 i- እግዜር የከፈተውን ጉሮሮ ሳይዘጋው አይድርም። Err bitreich.org 70 i- የጎረቤት ሌባ፥ ቢያዩት ይስቅ ባያዩት ያጠልቅ። Err bitreich.org 70 i- ሥራ ከመፍታት ልጄን ላፋታት። Err bitreich.org 70 i- ዓባይ ማደሪያ የለው፥ ግንድ ይዞ ይዞራል። Err bitreich.org 70 i- የእስላም አገሩ መካ የአሞራ አገሩ ዋርካ። Err bitreich.org 70 i- ተንጋሎ ቢተፉ ተመልሶ ባፉ። Err bitreich.org 70 i- ወዳጅህ ማር ቢሆን ጨርስህ አትላሰው። Err bitreich.org 70 i- እግርህን በፍራሽህ ልክ ዘርጋ። Err bitreich.org 70 i- Err bitreich.org 70 i-Runes: Err bitreich.org 70 i- Err bitreich.org 70 i- ᚻᛖ ᚳᚹᚫᚦ ᚦᚫᛏ ᚻᛖ ᛒᚢᛞᛖ ᚩᚾ ᚦᚫᛗ ᛚᚪᚾᛞᛖ ᚾᚩᚱᚦᚹᛖᚪᚱᛞᚢᛗ ᚹᛁᚦ ᚦᚪ ᚹᛖᛥᚫ Err bitreich.org 70 i- Err bitreich.org 70 i- (Old English, which transcribed into Latin reads 'He cwaeth that he Err bitreich.org 70 i- bude thaem lande northweardum with tha Westsae.' and means 'He said Err bitreich.org 70 i- that he lived in the northern land near the Western Sea.') Err bitreich.org 70 i- Err bitreich.org 70 i-Braille: Err bitreich.org 70 i- Err bitreich.org 70 i- ⡌⠁⠧⠑ ⠼⠁⠒ ⡍⠜⠇⠑⠹⠰⠎ ⡣⠕⠌ Err bitreich.org 70 i- Err bitreich.org 70 i- ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠙⠑⠁⠙⠒ ⠞⠕ ⠃⠑⠛⠔ ⠺⠊⠹⠲ ⡹⠻⠑ ⠊⠎ ⠝⠕ ⠙⠳⠃⠞ Err bitreich.org 70 i- ⠱⠁⠞⠑⠧⠻ ⠁⠃⠳⠞ ⠹⠁⠞⠲ ⡹⠑ ⠗⠑⠛⠊⠌⠻ ⠕⠋ ⠙⠊⠎ ⠃⠥⠗⠊⠁⠇ ⠺⠁⠎ Err bitreich.org 70 i- ⠎⠊⠛⠝⠫ ⠃⠹ ⠹⠑ ⠊⠇⠻⠛⠹⠍⠁⠝⠂ ⠹⠑ ⠊⠇⠻⠅⠂ ⠹⠑ ⠥⠝⠙⠻⠞⠁⠅⠻⠂ Err bitreich.org 70 i- ⠁⠝⠙ ⠹⠑ ⠡⠊⠑⠋ ⠍⠳⠗⠝⠻⠲ ⡎⠊⠗⠕⠕⠛⠑ ⠎⠊⠛⠝⠫ ⠊⠞⠲ ⡁⠝⠙ Err bitreich.org 70 i- ⡎⠊⠗⠕⠕⠛⠑⠰⠎ ⠝⠁⠍⠑ ⠺⠁⠎ ⠛⠕⠕⠙ ⠥⠏⠕⠝ ⠰⡡⠁⠝⠛⠑⠂ ⠋⠕⠗ ⠁⠝⠹⠹⠔⠛ ⠙⠑ Err bitreich.org 70 i- ⠡⠕⠎⠑ ⠞⠕ ⠏⠥⠞ ⠙⠊⠎ ⠙⠁⠝⠙ ⠞⠕⠲ Err bitreich.org 70 i- Err bitreich.org 70 i- ⡕⠇⠙ ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ Err bitreich.org 70 i- Err bitreich.org 70 i- ⡍⠔⠙⠖ ⡊ ⠙⠕⠝⠰⠞ ⠍⠑⠁⠝ ⠞⠕ ⠎⠁⠹ ⠹⠁⠞ ⡊ ⠅⠝⠪⠂ ⠕⠋ ⠍⠹ Err bitreich.org 70 i- ⠪⠝ ⠅⠝⠪⠇⠫⠛⠑⠂ ⠱⠁⠞ ⠹⠻⠑ ⠊⠎ ⠏⠜⠞⠊⠊⠥⠇⠜⠇⠹ ⠙⠑⠁⠙ ⠁⠃⠳⠞ Err bitreich.org 70 i- ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ ⡊ ⠍⠊⠣⠞ ⠙⠁⠧⠑ ⠃⠑⠲ ⠔⠊⠇⠔⠫⠂ ⠍⠹⠎⠑⠇⠋⠂ ⠞⠕ Err bitreich.org 70 i- ⠗⠑⠛⠜⠙ ⠁ ⠊⠕⠋⠋⠔⠤⠝⠁⠊⠇ ⠁⠎ ⠹⠑ ⠙⠑⠁⠙⠑⠌ ⠏⠊⠑⠊⠑ ⠕⠋ ⠊⠗⠕⠝⠍⠕⠝⠛⠻⠹ Err bitreich.org 70 i- ⠔ ⠹⠑ ⠞⠗⠁⠙⠑⠲ ⡃⠥⠞ ⠹⠑ ⠺⠊⠎⠙⠕⠍ ⠕⠋ ⠳⠗ ⠁⠝⠊⠑⠌⠕⠗⠎ Err bitreich.org 70 i- ⠊⠎ ⠔ ⠹⠑ ⠎⠊⠍⠊⠇⠑⠆ ⠁⠝⠙ ⠍⠹ ⠥⠝⠙⠁⠇⠇⠪⠫ ⠙⠁⠝⠙⠎ Err bitreich.org 70 i- ⠩⠁⠇⠇ ⠝⠕⠞ ⠙⠊⠌⠥⠗⠃ ⠊⠞⠂ ⠕⠗ ⠹⠑ ⡊⠳⠝⠞⠗⠹⠰⠎ ⠙⠕⠝⠑ ⠋⠕⠗⠲ ⡹⠳ Err bitreich.org 70 i- ⠺⠊⠇⠇ ⠹⠻⠑⠋⠕⠗⠑ ⠏⠻⠍⠊⠞ ⠍⠑ ⠞⠕ ⠗⠑⠏⠑⠁⠞⠂ ⠑⠍⠏⠙⠁⠞⠊⠊⠁⠇⠇⠹⠂ ⠹⠁⠞ Err bitreich.org 70 i- ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ Err bitreich.org 70 i- Err bitreich.org 70 i- (The first couple of paragraphs of "A Christmas Carol" by Dickens) Err bitreich.org 70 i- Err bitreich.org 70 i-Compact font selection example text: Err bitreich.org 70 i- Err bitreich.org 70 i- ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789 Err bitreich.org 70 i- abcdefghijklmnopqrstuvwxyz £©µÀÆÖÞßéöÿ Err bitreich.org 70 i- –—‘“”„†•…‰™œŠŸž€ ΑΒΓΔΩαβγδω АБВГДабвгд Err bitreich.org 70 i- ∀∂∈ℝ∧∪≡∞ ↑↗↨↻⇣ ┐┼╔╘░►☺♀ fi�⑀₂ἠḂӥẄɐː⍎אԱა Err bitreich.org 70 i- Err bitreich.org 70 i-Greetings in various languages: Err bitreich.org 70 i- Err bitreich.org 70 i- Hello world, Καλημέρα κόσμε, コンニチハ Err bitreich.org 70 i- Err bitreich.org 70 i-Box drawing alignment tests: █ Err bitreich.org 70 i- ▉ Err bitreich.org 70 i- ╔══╦══╗ ┌──┬──┐ ╭──┬──╮ ╭──┬──╮ ┏━━┳━━┓ ┎┒┏┑ ╷ ╻ ┏┯┓ ┌┰┐ ▊ ╱╲╱╲╳╳╳ Err bitreich.org 70 i- ║┌─╨─┐║ │╔═╧═╗│ │╒═╪═╕│ │╓─╁─╖│ ┃┌─╂─┐┃ ┗╃╄┙ ╶┼╴╺╋╸┠┼┨ ┝╋┥ ▋ ╲╱╲╱╳╳╳ Err bitreich.org 70 i- ║│╲ ╱│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╿ │┃ ┍╅╆┓ ╵ ╹ ┗┷┛ └┸┘ ▌ ╱╲╱╲╳╳╳ Err bitreich.org 70 i- ╠╡ ╳ ╞╣ ├╢ ╟┤ ├┼─┼─┼┤ ├╫─╂─╫┤ ┣┿╾┼╼┿┫ ┕┛┖┚ ┌┄┄┐ ╎ ┏┅┅┓ ┋ ▍ ╲╱╲╱╳╳╳ Err bitreich.org 70 i- ║│╱ ╲│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╽ │┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╏ ┇ ┋ ▎ Err bitreich.org 70 i- ║└─╥─┘║ │╚═╤═╝│ │╘═╪═╛│ │╙─╀─╜│ ┃└─╂─┘┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╏ ┇ ┋ ▏ Err bitreich.org 70 i- ╚══╩══╝ └──┴──┘ ╰──┴──╯ ╰──┴──╯ ┗━━┻━━┛ ▗▄▖▛▀▜ └╌╌┘ ╎ ┗╍╍┛ ┋ ▁▂▃▄▅▆▇█ Err bitreich.org 70 i- ▝▀▘▙▄▟ Err bitreich.org 70 1diff --git a/3rdparties/software/babel-20171227-git/tests/utf-8.txt-utf8 b/3rdparties/software/babel-20171227-git/tests/utf-8.txt-utf8 /scm/clic/file/3rdparties/software/babel-20171227-git/tests/utf-8.txt-utf8.gph bitreich.org 70 i@@ -1,212 +0,0 @@ Err bitreich.org 70 i- Err bitreich.org 70 i-UTF-8 encoded sample plain-text file Err bitreich.org 70 i-‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ Err bitreich.org 70 i- Err bitreich.org 70 i-Markus Kuhn [ˈmaʳkʊs kuːn] — 2002-07-25 Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-The ASCII compatible UTF-8 encoding used in this plain-text file Err bitreich.org 70 i-is defined in Unicode, ISO 10646-1, and RFC 2279. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Using Unicode/UTF-8, you can write in emails and source code things such as Err bitreich.org 70 i- Err bitreich.org 70 i-Mathematics and sciences: Err bitreich.org 70 i- Err bitreich.org 70 i- ∮ E⋅da = Q, n → ∞, ∑ f(i) = ∏ g(i), ⎧⎡⎛┌─────┐⎞⎤⎫ Err bitreich.org 70 i- ⎪⎢⎜│a²+b³ ⎟⎥⎪ Err bitreich.org 70 i- ∀x∈ℝ: ⌈x⌉ = −⌊−x⌋, α ∧ ¬β = ¬(¬α ∨ β), ⎪⎢⎜│───── ⎟⎥⎪ Err bitreich.org 70 i- ⎪⎢⎜⎷ c₈ ⎟⎥⎪ Err bitreich.org 70 i- ℕ ⊆ ℕ₀ ⊂ ℤ ⊂ ℚ ⊂ ℝ ⊂ ℂ, ⎨⎢⎜ ⎟⎥⎬ Err bitreich.org 70 i- ⎪⎢⎜ ∞ ⎟⎥⎪ Err bitreich.org 70 i- ⊥ < a ≠ b ≡ c ≤ d ≪ ⊤ ⇒ (⟦A⟧ ⇔ ⟪B⟫), ⎪⎢⎜ ⎲ ⎟⎥⎪ Err bitreich.org 70 i- ⎪⎢⎜ ⎳aⁱ-bⁱ⎟⎥⎪ Err bitreich.org 70 i- 2H₂ + O₂ ⇌ 2H₂O, R = 4.7 kΩ, ⌀ 200 mm ⎩⎣⎝i=1 ⎠⎦⎭ Err bitreich.org 70 i- Err bitreich.org 70 i-Linguistics and dictionaries: Err bitreich.org 70 i- Err bitreich.org 70 i- ði ıntəˈnæʃənəl fəˈnɛtık əsoʊsiˈeıʃn Err bitreich.org 70 i- Y [ˈʏpsilɔn], Yen [jɛn], Yoga [ˈjoːgɑ] Err bitreich.org 70 i- Err bitreich.org 70 i-APL: Err bitreich.org 70 i- Err bitreich.org 70 i- ((V⍳V)=⍳⍴V)/V←,V ⌷←⍳→⍴∆∇⊃‾⍎⍕⌈ Err bitreich.org 70 i- Err bitreich.org 70 i-Nicer typography in plain text files: Err bitreich.org 70 i- Err bitreich.org 70 i- ╔══════════════════════════════════════════╗ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • ‘single’ and “double” quotes ║ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • Curly apostrophes: “We’ve been here” ║ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • Latin-1 apostrophe and accents: '´` ║ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • ‚deutsche‘ „Anführungszeichen“ ║ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • †, ‡, ‰, •, 3–4, —, −5/+5, ™, … ║ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • ASCII safety test: 1lI|, 0OD, 8B ║ Err bitreich.org 70 i- ║ ╭─────────╮ ║ Err bitreich.org 70 i- ║ • the euro symbol: │ 14.95 € │ ║ Err bitreich.org 70 i- ║ ╰─────────╯ ║ Err bitreich.org 70 i- ╚══════════════════════════════════════════╝ Err bitreich.org 70 i- Err bitreich.org 70 i-Combining characters: Err bitreich.org 70 i- Err bitreich.org 70 i- STARGΛ̊TE SG-1, a = v̇ = r̈, a⃑ ⊥ b⃑ Err bitreich.org 70 i- Err bitreich.org 70 i-Greek (in Polytonic): Err bitreich.org 70 i- Err bitreich.org 70 i- The Greek anthem: Err bitreich.org 70 i- Err bitreich.org 70 i- Σὲ γνωρίζω ἀπὸ τὴν κόψη Err bitreich.org 70 i- τοῦ σπαθιοῦ τὴν τρομερή, Err bitreich.org 70 i- σὲ γνωρίζω ἀπὸ τὴν ὄψη Err bitreich.org 70 i- ποὺ μὲ βία μετράει τὴ γῆ. Err bitreich.org 70 i- Err bitreich.org 70 i- ᾿Απ᾿ τὰ κόκκαλα βγαλμένη Err bitreich.org 70 i- τῶν ῾Ελλήνων τὰ ἱερά Err bitreich.org 70 i- καὶ σὰν πρῶτα ἀνδρειωμένη Err bitreich.org 70 i- χαῖρε, ὦ χαῖρε, ᾿Ελευθεριά! Err bitreich.org 70 i- Err bitreich.org 70 i- From a speech of Demosthenes in the 4th century BC: Err bitreich.org 70 i- Err bitreich.org 70 i- Οὐχὶ ταὐτὰ παρίσταταί μοι γιγνώσκειν, ὦ ἄνδρες ᾿Αθηναῖοι, Err bitreich.org 70 i- ὅταν τ᾿ εἰς τὰ πράγματα ἀποβλέψω καὶ ὅταν πρὸς τοὺς Err bitreich.org 70 i- λόγους οὓς ἀκούω· τοὺς μὲν γὰρ λόγους περὶ τοῦ Err bitreich.org 70 i- τιμωρήσασθαι Φίλιππον ὁρῶ γιγνομένους, τὰ δὲ πράγματ᾿ Err bitreich.org 70 i- εἰς τοῦτο προήκοντα, ὥσθ᾿ ὅπως μὴ πεισόμεθ᾿ αὐτοὶ Err bitreich.org 70 i- πρότερον κακῶς σκέψασθαι δέον. οὐδέν οὖν ἄλλο μοι δοκοῦσιν Err bitreich.org 70 i- οἱ τὰ τοιαῦτα λέγοντες ἢ τὴν ὑπόθεσιν, περὶ ἧς βουλεύεσθαι, Err bitreich.org 70 i- οὐχὶ τὴν οὖσαν παριστάντες ὑμῖν ἁμαρτάνειν. ἐγὼ δέ, ὅτι μέν Err bitreich.org 70 i- ποτ᾿ ἐξῆν τῇ πόλει καὶ τὰ αὑτῆς ἔχειν ἀσφαλῶς καὶ Φίλιππον Err bitreich.org 70 i- τιμωρήσασθαι, καὶ μάλ᾿ ἀκριβῶς οἶδα· ἐπ᾿ ἐμοῦ γάρ, οὐ πάλαι Err bitreich.org 70 i- γέγονεν ταῦτ᾿ ἀμφότερα· νῦν μέντοι πέπεισμαι τοῦθ᾿ ἱκανὸν Err bitreich.org 70 i- προλαβεῖν ἡμῖν εἶναι τὴν πρώτην, ὅπως τοὺς συμμάχους Err bitreich.org 70 i- σώσομεν. ἐὰν γὰρ τοῦτο βεβαίως ὑπάρξῃ, τότε καὶ περὶ τοῦ Err bitreich.org 70 i- τίνα τιμωρήσεταί τις καὶ ὃν τρόπον ἐξέσται σκοπεῖν· πρὶν δὲ Err bitreich.org 70 i- τὴν ἀρχὴν ὀρθῶς ὑποθέσθαι, μάταιον ἡγοῦμαι περὶ τῆς Err bitreich.org 70 i- τελευτῆς ὁντινοῦν ποιεῖσθαι λόγον. Err bitreich.org 70 i- Err bitreich.org 70 i- Δημοσθένους, Γ´ ᾿Ολυνθιακὸς Err bitreich.org 70 i- Err bitreich.org 70 i-Georgian: Err bitreich.org 70 i- Err bitreich.org 70 i- From a Unicode conference invitation: Err bitreich.org 70 i- Err bitreich.org 70 i- გთხოვთ ახლავე გაიაროთ რეგისტრაცია Unicode-ის მეათე საერთაშორისო Err bitreich.org 70 i- კონფერენციაზე დასასწრებად, რომელიც გაიმართება 10-12 მარტს, Err bitreich.org 70 i- ქ. მაინცში, გერმანიაში. კონფერენცია შეჰკრებს ერთად მსოფლიოს Err bitreich.org 70 i- ექსპერტებს ისეთ დარგებში როგორიცაა ინტერნეტი და Unicode-ი, Err bitreich.org 70 i- ინტერნაციონალიზაცია და ლოკალიზაცია, Unicode-ის გამოყენება Err bitreich.org 70 i- ოპერაციულ სისტემებსა, და გამოყენებით პროგრამებში, შრიფტებში, Err bitreich.org 70 i- ტექსტების დამუშავებასა და მრავალენოვან კომპიუტერულ სისტემებში. Err bitreich.org 70 i- Err bitreich.org 70 i-Russian: Err bitreich.org 70 i- Err bitreich.org 70 i- From a Unicode conference invitation: Err bitreich.org 70 i- Err bitreich.org 70 i- Зарегистрируйтесь сейчас на Десятую Международную Конференцию по Err bitreich.org 70 i- Unicode, которая состоится 10-12 марта 1997 года в Майнце в Германии. Err bitreich.org 70 i- Конференция соберет широкий круг экспертов по вопросам глобального Err bitreich.org 70 i- Интернета и Unicode, локализации и интернационализации, воплощению и Err bitreich.org 70 i- применению Unicode в различных операционных системах и программных Err bitreich.org 70 i- приложениях, шрифтах, верстке и многоязычных компьютерных системах. Err bitreich.org 70 i- Err bitreich.org 70 i-Thai (UCS Level 2): Err bitreich.org 70 i- Err bitreich.org 70 i- Excerpt from a poetry on The Romance of The Three Kingdoms (a Chinese Err bitreich.org 70 i- classic 'San Gua'): Err bitreich.org 70 i- Err bitreich.org 70 i- [----------------------------|------------------------] Err bitreich.org 70 i- ๏ แผ่นดินฮั่นเสื่อมโทรมแสนสังเวช พระปกเกศกองบู๊กู้ขึ้นใหม่ Err bitreich.org 70 i- สิบสองกษัตริย์ก่อนหน้าแลถัดไป สององค์ไซร้โง่เขลาเบาปัญญา Err bitreich.org 70 i- ทรงนับถือขันทีเป็นที่พึ่ง บ้านเมืองจึงวิปริตเป็นนักหนา Err bitreich.org 70 i- โฮจิ๋นเรียกทัพทั่วหัวเมืองมา หมายจะฆ่ามดชั่วตัวสำคัญ Err bitreich.org 70 i- เหมือนขับไสไล่เสือจากเคหา รับหมาป่าเข้ามาเลยอาสัญ Err bitreich.org 70 i- ฝ่ายอ้องอุ้นยุแยกให้แตกกัน ใช้สาวนั้นเป็นชนวนชื่นชวนใจ Err bitreich.org 70 i- พลันลิฉุยกุยกีกลับก่อเหตุ ช่างอาเพศจริงหนาฟ้าร้องไห้ Err bitreich.org 70 i- ต้องรบราฆ่าฟันจนบรรลัย ฤๅหาใครค้ำชูกู้บรรลังก์ ฯ Err bitreich.org 70 i- Err bitreich.org 70 i- (The above is a two-column text. If combining characters are handled Err bitreich.org 70 i- correctly, the lines of the second column should be aligned with the Err bitreich.org 70 i- | character above.) Err bitreich.org 70 i- Err bitreich.org 70 i-Ethiopian: Err bitreich.org 70 i- Err bitreich.org 70 i- Proverbs in the Amharic language: Err bitreich.org 70 i- Err bitreich.org 70 i- ሰማይ አይታረስ ንጉሥ አይከሰስ። Err bitreich.org 70 i- ብላ ካለኝ እንደአባቴ በቆመጠኝ። Err bitreich.org 70 i- ጌጥ ያለቤቱ ቁምጥና ነው። Err bitreich.org 70 i- ደሀ በሕልሙ ቅቤ ባይጠጣ ንጣት በገደለው። Err bitreich.org 70 i- የአፍ ወለምታ በቅቤ አይታሽም። Err bitreich.org 70 i- አይጥ በበላ ዳዋ ተመታ። Err bitreich.org 70 i- ሲተረጉሙ ይደረግሙ። Err bitreich.org 70 i- ቀስ በቀስ፥ ዕንቁላል በእግሩ ይሄዳል። Err bitreich.org 70 i- ድር ቢያብር አንበሳ ያስር። Err bitreich.org 70 i- ሰው እንደቤቱ እንጅ እንደ ጉረቤቱ አይተዳደርም። Err bitreich.org 70 i- እግዜር የከፈተውን ጉሮሮ ሳይዘጋው አይድርም። Err bitreich.org 70 i- የጎረቤት ሌባ፥ ቢያዩት ይስቅ ባያዩት ያጠልቅ። Err bitreich.org 70 i- ሥራ ከመፍታት ልጄን ላፋታት። Err bitreich.org 70 i- ዓባይ ማደሪያ የለው፥ ግንድ ይዞ ይዞራል። Err bitreich.org 70 i- የእስላም አገሩ መካ የአሞራ አገሩ ዋርካ። Err bitreich.org 70 i- ተንጋሎ ቢተፉ ተመልሶ ባፉ። Err bitreich.org 70 i- ወዳጅህ ማር ቢሆን ጨርስህ አትላሰው። Err bitreich.org 70 i- እግርህን በፍራሽህ ልክ ዘርጋ። Err bitreich.org 70 i- Err bitreich.org 70 i-Runes: Err bitreich.org 70 i- Err bitreich.org 70 i- ᚻᛖ ᚳᚹᚫᚦ ᚦᚫᛏ ᚻᛖ ᛒᚢᛞᛖ ᚩᚾ ᚦᚫᛗ ᛚᚪᚾᛞᛖ ᚾᚩᚱᚦᚹᛖᚪᚱᛞᚢᛗ ᚹᛁᚦ ᚦᚪ ᚹᛖᛥᚫ Err bitreich.org 70 i- Err bitreich.org 70 i- (Old English, which transcribed into Latin reads 'He cwaeth that he Err bitreich.org 70 i- bude thaem lande northweardum with tha Westsae.' and means 'He said Err bitreich.org 70 i- that he lived in the northern land near the Western Sea.') Err bitreich.org 70 i- Err bitreich.org 70 i-Braille: Err bitreich.org 70 i- Err bitreich.org 70 i- ⡌⠁⠧⠑ ⠼⠁⠒ ⡍⠜⠇⠑⠹⠰⠎ ⡣⠕⠌ Err bitreich.org 70 i- Err bitreich.org 70 i- ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠙⠑⠁⠙⠒ ⠞⠕ ⠃⠑⠛⠔ ⠺⠊⠹⠲ ⡹⠻⠑ ⠊⠎ ⠝⠕ ⠙⠳⠃⠞ Err bitreich.org 70 i- ⠱⠁⠞⠑⠧⠻ ⠁⠃⠳⠞ ⠹⠁⠞⠲ ⡹⠑ ⠗⠑⠛⠊⠌⠻ ⠕⠋ ⠙⠊⠎ ⠃⠥⠗⠊⠁⠇ ⠺⠁⠎ Err bitreich.org 70 i- ⠎⠊⠛⠝⠫ ⠃⠹ ⠹⠑ ⠊⠇⠻⠛⠹⠍⠁⠝⠂ ⠹⠑ ⠊⠇⠻⠅⠂ ⠹⠑ ⠥⠝⠙⠻⠞⠁⠅⠻⠂ Err bitreich.org 70 i- ⠁⠝⠙ ⠹⠑ ⠡⠊⠑⠋ ⠍⠳⠗⠝⠻⠲ ⡎⠊⠗⠕⠕⠛⠑ ⠎⠊⠛⠝⠫ ⠊⠞⠲ ⡁⠝⠙ Err bitreich.org 70 i- ⡎⠊⠗⠕⠕⠛⠑⠰⠎ ⠝⠁⠍⠑ ⠺⠁⠎ ⠛⠕⠕⠙ ⠥⠏⠕⠝ ⠰⡡⠁⠝⠛⠑⠂ ⠋⠕⠗ ⠁⠝⠹⠹⠔⠛ ⠙⠑ Err bitreich.org 70 i- ⠡⠕⠎⠑ ⠞⠕ ⠏⠥⠞ ⠙⠊⠎ ⠙⠁⠝⠙ ⠞⠕⠲ Err bitreich.org 70 i- Err bitreich.org 70 i- ⡕⠇⠙ ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ Err bitreich.org 70 i- Err bitreich.org 70 i- ⡍⠔⠙⠖ ⡊ ⠙⠕⠝⠰⠞ ⠍⠑⠁⠝ ⠞⠕ ⠎⠁⠹ ⠹⠁⠞ ⡊ ⠅⠝⠪⠂ ⠕⠋ ⠍⠹ Err bitreich.org 70 i- ⠪⠝ ⠅⠝⠪⠇⠫⠛⠑⠂ ⠱⠁⠞ ⠹⠻⠑ ⠊⠎ ⠏⠜⠞⠊⠊⠥⠇⠜⠇⠹ ⠙⠑⠁⠙ ⠁⠃⠳⠞ Err bitreich.org 70 i- ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ ⡊ ⠍⠊⠣⠞ ⠙⠁⠧⠑ ⠃⠑⠲ ⠔⠊⠇⠔⠫⠂ ⠍⠹⠎⠑⠇⠋⠂ ⠞⠕ Err bitreich.org 70 i- ⠗⠑⠛⠜⠙ ⠁ ⠊⠕⠋⠋⠔⠤⠝⠁⠊⠇ ⠁⠎ ⠹⠑ ⠙⠑⠁⠙⠑⠌ ⠏⠊⠑⠊⠑ ⠕⠋ ⠊⠗⠕⠝⠍⠕⠝⠛⠻⠹ Err bitreich.org 70 i- ⠔ ⠹⠑ ⠞⠗⠁⠙⠑⠲ ⡃⠥⠞ ⠹⠑ ⠺⠊⠎⠙⠕⠍ ⠕⠋ ⠳⠗ ⠁⠝⠊⠑⠌⠕⠗⠎ Err bitreich.org 70 i- ⠊⠎ ⠔ ⠹⠑ ⠎⠊⠍⠊⠇⠑⠆ ⠁⠝⠙ ⠍⠹ ⠥⠝⠙⠁⠇⠇⠪⠫ ⠙⠁⠝⠙⠎ Err bitreich.org 70 i- ⠩⠁⠇⠇ ⠝⠕⠞ ⠙⠊⠌⠥⠗⠃ ⠊⠞⠂ ⠕⠗ ⠹⠑ ⡊⠳⠝⠞⠗⠹⠰⠎ ⠙⠕⠝⠑ ⠋⠕⠗⠲ ⡹⠳ Err bitreich.org 70 i- ⠺⠊⠇⠇ ⠹⠻⠑⠋⠕⠗⠑ ⠏⠻⠍⠊⠞ ⠍⠑ ⠞⠕ ⠗⠑⠏⠑⠁⠞⠂ ⠑⠍⠏⠙⠁⠞⠊⠊⠁⠇⠇⠹⠂ ⠹⠁⠞ Err bitreich.org 70 i- ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ Err bitreich.org 70 i- Err bitreich.org 70 i- (The first couple of paragraphs of "A Christmas Carol" by Dickens) Err bitreich.org 70 i- Err bitreich.org 70 i-Compact font selection example text: Err bitreich.org 70 i- Err bitreich.org 70 i- ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789 Err bitreich.org 70 i- abcdefghijklmnopqrstuvwxyz £©µÀÆÖÞßéöÿ Err bitreich.org 70 i- –—‘“”„†•…‰™œŠŸž€ ΑΒΓΔΩαβγδω АБВГДабвгд Err bitreich.org 70 i- ∀∂∈ℝ∧∪≡∞ ↑↗↨↻⇣ ┐┼╔╘░►☺♀ fi�⑀₂ἠḂӥẄɐː⍎אԱა Err bitreich.org 70 i- Err bitreich.org 70 i-Greetings in various languages: Err bitreich.org 70 i- Err bitreich.org 70 i- Hello world, Καλημέρα κόσμε, コンニチハ Err bitreich.org 70 i- Err bitreich.org 70 i-Box drawing alignment tests: █ Err bitreich.org 70 i- ▉ Err bitreich.org 70 i- ╔══╦══╗ ┌──┬──┐ ╭──┬──╮ ╭──┬──╮ ┏━━┳━━┓ ┎┒┏┑ ╷ ╻ ┏┯┓ ┌┰┐ ▊ ╱╲╱╲╳╳╳ Err bitreich.org 70 i- ║┌─╨─┐║ │╔═╧═╗│ │╒═╪═╕│ │╓─╁─╖│ ┃┌─╂─┐┃ ┗╃╄┙ ╶┼╴╺╋╸┠┼┨ ┝╋┥ ▋ ╲╱╲╱╳╳╳ Err bitreich.org 70 i- ║│╲ ╱│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╿ │┃ ┍╅╆┓ ╵ ╹ ┗┷┛ └┸┘ ▌ ╱╲╱╲╳╳╳ Err bitreich.org 70 i- ╠╡ ╳ ╞╣ ├╢ ╟┤ ├┼─┼─┼┤ ├╫─╂─╫┤ ┣┿╾┼╼┿┫ ┕┛┖┚ ┌┄┄┐ ╎ ┏┅┅┓ ┋ ▍ ╲╱╲╱╳╳╳ Err bitreich.org 70 i- ║│╱ ╲│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╽ │┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╏ ┇ ┋ ▎ Err bitreich.org 70 i- ║└─╥─┘║ │╚═╤═╝│ │╘═╪═╛│ │╙─╀─╜│ ┃└─╂─┘┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╏ ┇ ┋ ▏ Err bitreich.org 70 i- ╚══╩══╝ └──┴──┘ ╰──┴──╯ ╰──┴──╯ ┗━━┻━━┛ ▗▄▖▛▀▜ └╌╌┘ ╎ ┗╍╍┛ ┋ ▁▂▃▄▅▆▇█ Err bitreich.org 70 i- ▝▀▘▙▄▟ Err bitreich.org 70 1diff --git a/3rdparties/software/bordeaux-threads-v0.8.6/.travis.yml b/3rdparties/software/bordeaux-threads-v0.8.6/.travis.yml /scm/clic/file/3rdparties/software/bordeaux-threads-v0.8.6/.travis.yml.gph bitreich.org 70 i@@ -1,46 +0,0 @@ Err bitreich.org 70 i-language: lisp Err bitreich.org 70 i- Err bitreich.org 70 i-env: Err bitreich.org 70 i- matrix: Err bitreich.org 70 i- - LISP=allegro Err bitreich.org 70 i- - LISP=ccl Err bitreich.org 70 i- - LISP=ccl32 Err bitreich.org 70 i- - LISP=sbcl Err bitreich.org 70 i- - LISP=sbcl32 Err bitreich.org 70 i- - LISP=abcl Err bitreich.org 70 i- - LISP=cmucl Err bitreich.org 70 i- - LISP=ecl Err bitreich.org 70 i- Err bitreich.org 70 i-matrix: Err bitreich.org 70 i- allow_failures: Err bitreich.org 70 i- - env: LISP=abcl Err bitreich.org 70 i- - env: LISP=cmucl Err bitreich.org 70 i- - env: LISP=ecl Err bitreich.org 70 i- Err bitreich.org 70 i-notifications: Err bitreich.org 70 i- email: Err bitreich.org 70 i- on_success: change Err bitreich.org 70 i- on_failure: always Err bitreich.org 70 i- irc: Err bitreich.org 70 i- channels: Err bitreich.org 70 i- - "chat.freenode.net#iolib" Err bitreich.org 70 i- on_success: change Err bitreich.org 70 i- on_failure: always Err bitreich.org 70 i- use_notice: true Err bitreich.org 70 i- skip_join: true Err bitreich.org 70 i- Err bitreich.org 70 i-install: Err bitreich.org 70 i- - curl -L https://raw.githubusercontent.com/sionescu/cl-travis/master/install.sh | sh Err bitreich.org 70 i- - cl -e "(cl:in-package :cl-user) Err bitreich.org 70 i- (dolist (p '(:fiveam)) Err bitreich.org 70 i- (ql:quickload p :verbose t))" Err bitreich.org 70 i- Err bitreich.org 70 i-script: Err bitreich.org 70 i- - cl -e "(cl:in-package :cl-user) Err bitreich.org 70 i- (prin1 (lisp-implementation-type)) (terpri) (prin1 (lisp-implementation-version)) (terpri) Err bitreich.org 70 i- (ql:quickload :bordeaux-threads/test :verbose t) Err bitreich.org 70 i- (uiop:quit (if (some (lambda (x) (typep x '5am::test-failure)) Err bitreich.org 70 i- (5am:run :bordeaux-threads)) Err bitreich.org 70 i- 1 0))" Err bitreich.org 70 i- Err bitreich.org 70 i-sudo: required Err bitreich.org 70 1diff --git a/3rdparties/software/bordeaux-threads-v0.8.6/CONTRIBUTORS b/3rdparties/software/bordeaux-threads-v0.8.6/CONTRIBUTORS /scm/clic/file/3rdparties/software/bordeaux-threads-v0.8.6/CONTRIBUTORS.gph bitreich.org 70 i@@ -1,19 +0,0 @@ Err bitreich.org 70 i--*- outline -*- Err bitreich.org 70 i- Err bitreich.org 70 i-Based on original Bordeaux-MP spec by Dan Barlow Err bitreich.org 70 i- Err bitreich.org 70 i-Contributors: Err bitreich.org 70 i- Err bitreich.org 70 i-* Attila Lendvai Err bitreich.org 70 i- - better handling of unsupported Lisps Err bitreich.org 70 i-* Vladimir Sekissov Err bitreich.org 70 i- - fixes for CMUCL implementation Err bitreich.org 70 i-* Pierre Thierry Err bitreich.org 70 i- - added license information Err bitreich.org 70 i-* Stelian Ionescu Err bitreich.org 70 i- - finished conversion from generic functions Err bitreich.org 70 i- - enabled running thread-safe code in unthreaded lisps Err bitreich.org 70 i-* Douglas Crosher Err bitreich.org 70 i- - added Scieneer Common Lisp support Err bitreich.org 70 i-* Daniel Kochmański Err bitreich.org 70 i- - semaphores implementation Err bitreich.org 70 1diff --git a/3rdparties/software/bordeaux-threads-v0.8.6/LICENSE b/3rdparties/software/bordeaux-threads-v0.8.6/LICENSE /scm/clic/file/3rdparties/software/bordeaux-threads-v0.8.6/LICENSE.gph bitreich.org 70 i@@ -1,20 +0,0 @@ Err bitreich.org 70 i-Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-obtaining a copy of this software and associated documentation Err bitreich.org 70 i-files (the "Software"), to deal in the Software without Err bitreich.org 70 i-restriction, including without limitation the rights to use, Err bitreich.org 70 i-copy, modify, merge, publish, distribute, sublicense, and/or sell Err bitreich.org 70 i-copies of the Software, and to permit persons to whom the Err bitreich.org 70 i-Software is furnished to do so, subject to the following Err bitreich.org 70 i-conditions: Err bitreich.org 70 i- Err bitreich.org 70 i-The above copyright notice and this permission notice shall be Err bitreich.org 70 i-included in all copies or substantial portions of the Software. Err bitreich.org 70 i- Err bitreich.org 70 i-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES Err bitreich.org 70 i-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING Err bitreich.org 70 i-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR Err bitreich.org 70 i-OTHER DEALINGS IN THE SOFTWARE. Err bitreich.org 70 1diff --git a/3rdparties/software/bordeaux-threads-v0.8.6/README b/3rdparties/software/bordeaux-threads-v0.8.6/README /scm/clic/file/3rdparties/software/bordeaux-threads-v0.8.6/README.gph bitreich.org 70 i@@ -1,2 +0,0 @@ Err bitreich.org 70 i-You can find API documentation on the project's wiki: Err bitreich.org 70 i- http://trac.common-lisp.net/bordeaux-threads/wiki/ApiDocumentation Err bitreich.org 70 1diff --git a/3rdparties/software/bordeaux-threads-v0.8.6/bordeaux-threads.asd b/3rdparties/software/bordeaux-threads-v0.8.6/bordeaux-threads.asd /scm/clic/file/3rdparties/software/bordeaux-threads-v0.8.6/bordeaux-threads.asd.gph bitreich.org 70 i@@ -1,74 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: Lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i- Err bitreich.org 70 i-#| Err bitreich.org 70 i-Copyright 2006,2007 Greg Pfeil Err bitreich.org 70 i- Err bitreich.org 70 i-Distributed under the MIT license (see LICENSE file) Err bitreich.org 70 i-|# Err bitreich.org 70 i- Err bitreich.org 70 i-#.(unless (or #+asdf3.1 (version<= "3.1" (asdf-version))) Err bitreich.org 70 i- (error "You need ASDF >= 3.1 to load this system correctly.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- #+(or armedbear Err bitreich.org 70 i- (and allegro multiprocessing) Err bitreich.org 70 i- (and clisp mt) Err bitreich.org 70 i- (and openmcl openmcl-native-threads) Err bitreich.org 70 i- (and cmu mp) Err bitreich.org 70 i- corman Err bitreich.org 70 i- (and ecl threads) Err bitreich.org 70 i- genera Err bitreich.org 70 i- mkcl Err bitreich.org 70 i- lispworks Err bitreich.org 70 i- (and digitool ccl-5.1) Err bitreich.org 70 i- (and sbcl sb-thread) Err bitreich.org 70 i- scl) Err bitreich.org 70 i- (pushnew :thread-support *features*)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defsystem :bordeaux-threads Err bitreich.org 70 i- :author "Greg Pfeil " Err bitreich.org 70 i- :licence "MIT" Err bitreich.org 70 i- :description "Bordeaux Threads makes writing portable multi-threaded apps simple." Err bitreich.org 70 i- :version (:read-file-form "version.sexp") Err bitreich.org 70 i- :depends-on (:alexandria Err bitreich.org 70 i- #+(and allegro (version>= 9)) (:require "smputil") Err bitreich.org 70 i- #+(and allegro (not (version>= 9))) (:require "process") Err bitreich.org 70 i- #+corman (:require "threads")) Err bitreich.org 70 i- :components ((:static-file "version.sexp") Err bitreich.org 70 i- (:module "src" Err bitreich.org 70 i- :serial t Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:file "pkgdcl") Err bitreich.org 70 i- (:file "bordeaux-threads") Err bitreich.org 70 i- (:file #+(and thread-support armedbear) "impl-abcl" Err bitreich.org 70 i- #+(and thread-support allegro) "impl-allegro" Err bitreich.org 70 i- #+(and thread-support clisp) "impl-clisp" Err bitreich.org 70 i- #+(and thread-support openmcl) "impl-clozure" Err bitreich.org 70 i- #+(and thread-support cmu) "impl-cmucl" Err bitreich.org 70 i- #+(and thread-support corman) "impl-corman" Err bitreich.org 70 i- #+(and thread-support ecl) "impl-ecl" Err bitreich.org 70 i- #+(and thread-support genera) "impl-genera" Err bitreich.org 70 i- #+(and thread-support mkcl) "impl-mkcl" Err bitreich.org 70 i- #+(and thread-support lispworks) "impl-lispworks" Err bitreich.org 70 i- #+(and thread-support digitool) "impl-mcl" Err bitreich.org 70 i- #+(and thread-support sbcl) "impl-sbcl" Err bitreich.org 70 i- #+(and thread-support scl) "impl-scl" Err bitreich.org 70 i- #-thread-support "impl-null") Err bitreich.org 70 i- #+(and thread-support lispworks (or lispworks4 lispworks5)) Err bitreich.org 70 i- (:file "impl-lispworks-condition-variables") Err bitreich.org 70 i- #+(and thread-support digitool) Err bitreich.org 70 i- (:file "condition-variables") Err bitreich.org 70 i- (:file "default-implementations"))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defsystem :bordeaux-threads/test Err bitreich.org 70 i- :author "Greg Pfeil " Err bitreich.org 70 i- :description "Bordeaux Threads test suite." Err bitreich.org 70 i- :licence "MIT" Err bitreich.org 70 i- :version (:read-file-form "version.sexp") Err bitreich.org 70 i- :depends-on (:bordeaux-threads :fiveam) Err bitreich.org 70 i- :components ((:module "test" Err bitreich.org 70 i- :components ((:file "bordeaux-threads-test"))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod perform ((o test-op) (c (eql (find-system :bordeaux-threads)))) Err bitreich.org 70 i- (load-system :bordeaux-threads/test) Err bitreich.org 70 i- (symbol-call :5am :run! :bordeaux-threads)) Err bitreich.org 70 1diff --git a/3rdparties/software/bordeaux-threads-v0.8.6/site/index.html b/3rdparties/software/bordeaux-threads-v0.8.6/site/index.html /scm/clic/file/3rdparties/software/bordeaux-threads-v0.8.6/site/index.html.gph bitreich.org 70 i@@ -1,55 +0,0 @@ Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Bordeaux Threads project Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-
Err bitreich.org 70 i-

Bordeaux Threads

Err bitreich.org 70 i-

Portable shared-state concurrency for Common Lisp

Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-

Based on an original proposal by Dan Barlow (Bordeaux-MP) this Err bitreich.org 70 i- library is meant to make writing portable multi-threaded apps Err bitreich.org 70 i- simple.

Err bitreich.org 70 i- Err bitreich.org 70 i-

Read the current API documentation.

Err bitreich.org 70 i- Err bitreich.org 70 i-

Supports all major Common Lisp implementations: SBCL, CCL, Err bitreich.org 70 i- Lispworks, Allegro, ABCL, ECL, Clisp.
The MKCL, Corman, Err bitreich.org 70 i- MCL and Scieneer backends are not tested frequently(if ever) and Err bitreich.org 70 i- might not work.

Err bitreich.org 70 i- Err bitreich.org 70 i-

For discussion, use the mailing Err bitreich.org 70 i- list bordeaux-threads-devel Err bitreich.org 70 i- or the #lisp IRC channel on Freenode.

Err bitreich.org 70 i- Err bitreich.org 70 i-

Source repository

Err bitreich.org 70 i- Err bitreich.org 70 i-

Bordeaux-threads is developed Err bitreich.org 70 i- at Github. The Err bitreich.org 70 i- repository is also mirrored Err bitreich.org 70 i- to Gitlab Err bitreich.org 70 i- and Bitbucket.

Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-
Err bitreich.org 70 i- Valid XHTML 1.0 Strict Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/bordeaux-threads-v0.8.6/site/style.css b/3rdparties/software/bordeaux-threads-v0.8.6/site/style.css /scm/clic/file/3rdparties/software/bordeaux-threads-v0.8.6/site/style.css.gph bitreich.org 70 i@@ -1,86 +0,0 @@ Err bitreich.org 70 i-/* Err bitreich.org 70 i-Copyright 2006,2007 Greg Pfeil Err bitreich.org 70 i- Err bitreich.org 70 i-Distributed under the MIT license (see LICENSE file) Err bitreich.org 70 i-*/ Err bitreich.org 70 i- Err bitreich.org 70 i-tbody { Err bitreich.org 70 i- border-top: thin dotted black; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.failure { Err bitreich.org 70 i- background-color: #ff0; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.nonexistant { Err bitreich.org 70 i- background-color: #ccc; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.perfect { Err bitreich.org 70 i- background-color: #0f0; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.error { Err bitreich.org 70 i- background-color: #f00; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.header { Err bitreich.org 70 i- font-size: medium; Err bitreich.org 70 i- background-color:#336699; Err bitreich.org 70 i- color:#ffffff; Err bitreich.org 70 i- border-style:solid; Err bitreich.org 70 i- border-width: 5px; Err bitreich.org 70 i- border-color:#002244; Err bitreich.org 70 i- padding: 1mm 1mm 1mm 5mm; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.footer { Err bitreich.org 70 i- font-size: small; Err bitreich.org 70 i- font-style: italic; Err bitreich.org 70 i- text-align: right; Err bitreich.org 70 i- background-color:#336699; Err bitreich.org 70 i- color:#ffffff; Err bitreich.org 70 i- border-style:solid; Err bitreich.org 70 i- border-width: 2px; Err bitreich.org 70 i- border-color:#002244; Err bitreich.org 70 i- padding: 1mm 1mm 1mm 1mm; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.footer a:link { Err bitreich.org 70 i- font-weight:bold; Err bitreich.org 70 i- color:#ffffff; Err bitreich.org 70 i- background-color: #336699; Err bitreich.org 70 i- text-decoration:underline; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.footer a:visited { Err bitreich.org 70 i- font-weight:bold; Err bitreich.org 70 i- color:#ffffff; Err bitreich.org 70 i- background-color: #336699; Err bitreich.org 70 i- text-decoration:underline; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.footer a:hover { Err bitreich.org 70 i- font-weight:bold; Err bitreich.org 70 i- color:#002244; Err bitreich.org 70 i- background-color: #336699; Err bitreich.org 70 i- text-decoration:underline; } Err bitreich.org 70 i- Err bitreich.org 70 i-.check {font-size: x-small; Err bitreich.org 70 i- text-align:right;} Err bitreich.org 70 i- Err bitreich.org 70 i-.check a:link { font-weight:bold; Err bitreich.org 70 i- color:#a0a0ff; Err bitreich.org 70 i- background-color: #FFFFFF; Err bitreich.org 70 i- text-decoration:underline; } Err bitreich.org 70 i- Err bitreich.org 70 i-.check a:visited { font-weight:bold; Err bitreich.org 70 i- color:#a0a0ff; Err bitreich.org 70 i- background-color: #FFFFFF; Err bitreich.org 70 i- text-decoration:underline; } Err bitreich.org 70 i- Err bitreich.org 70 i-.check a:hover { font-weight:bold; Err bitreich.org 70 i- color:#000000; Err bitreich.org 70 i- background-color: #FFFFFF; Err bitreich.org 70 i- text-decoration:underline; } Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/bordeaux-threads-v0.8.6/src/bordeaux-threads.lisp b/3rdparties/software/bordeaux-threads-v0.8.6/src/bordeaux-threads.lisp /scm/clic/file/3rdparties/software/bordeaux-threads-v0.8.6/src/bordeaux-threads.lisp.gph bitreich.org 70 i@@ -1,170 +0,0 @@ Err bitreich.org 70 i-;;;; -*- indent-tabs-mode: nil -*- Err bitreich.org 70 i- Err bitreich.org 70 i-#| Err bitreich.org 70 i-Copyright 2006, 2007 Greg Pfeil Err bitreich.org 70 i- Err bitreich.org 70 i-Distributed under the MIT license (see LICENSE file) Err bitreich.org 70 i-|# Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:bordeaux-threads) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *supports-threads-p* nil Err bitreich.org 70 i- "This should be set to T if the running instance has thread support.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun mark-supported () Err bitreich.org 70 i- (setf *supports-threads-p* t) Err bitreich.org 70 i- (pushnew :bordeaux-threads *features*)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition bordeaux-mp-condition (error) Err bitreich.org 70 i- ((message :initarg :message :reader message)) Err bitreich.org 70 i- (:report (lambda (condition stream) Err bitreich.org 70 i- (format stream (message condition))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric make-threading-support-error () Err bitreich.org 70 i- (:documentation "Creates a BORDEAUX-THREADS condition which specifies Err bitreich.org 70 i- whether there is no BORDEAUX-THREADS support for the implementation, no Err bitreich.org 70 i- threads enabled for the system, or no support for a particular Err bitreich.org 70 i- function.") Err bitreich.org 70 i- (:method () Err bitreich.org 70 i- (make-condition Err bitreich.org 70 i- 'bordeaux-mp-condition Err bitreich.org 70 i- :message (if *supports-threads-p* Err bitreich.org 70 i- "There is no support for this method on this implementation." Err bitreich.org 70 i- "There is no thread support in this instance.")))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Timeouts Err bitreich.org 70 i- Err bitreich.org 70 i-#-sbcl Err bitreich.org 70 i-(define-condition timeout (serious-condition) Err bitreich.org 70 i- ((length :initform nil Err bitreich.org 70 i- :initarg :length Err bitreich.org 70 i- :reader timeout-length)) Err bitreich.org 70 i- (:report (lambda (c s) Err bitreich.org 70 i- (if (timeout-length c) Err bitreich.org 70 i- (format s "A timeout set to ~A seconds occurred." Err bitreich.org 70 i- (timeout-length c)) Err bitreich.org 70 i- (format s "A timeout occurred."))))) Err bitreich.org 70 i- Err bitreich.org 70 i-#-sbcl Err bitreich.org 70 i-(defmacro with-timeout ((timeout) &body body) Err bitreich.org 70 i- "Execute `BODY' and signal a condition of type TIMEOUT if the execution of Err bitreich.org 70 i-BODY does not complete within `TIMEOUT' seconds. On implementations which do not Err bitreich.org 70 i-support WITH-TIMEOUT natively and don't support threads either it has no effect." Err bitreich.org 70 i- (declare (ignorable timeout body)) Err bitreich.org 70 i- #+thread-support Err bitreich.org 70 i- (let ((ok-tag (gensym "OK")) Err bitreich.org 70 i- (timeout-tag (gensym "TIMEOUT")) Err bitreich.org 70 i- (caller (gensym "CALLER"))) Err bitreich.org 70 i- (once-only (timeout) Err bitreich.org 70 i- `(multiple-value-prog1 Err bitreich.org 70 i- (catch ',ok-tag Err bitreich.org 70 i- (catch ',timeout-tag Err bitreich.org 70 i- (let ((,caller (current-thread))) Err bitreich.org 70 i- (make-thread #'(lambda () Err bitreich.org 70 i- (sleep ,timeout) Err bitreich.org 70 i- (interrupt-thread ,caller Err bitreich.org 70 i- #'(lambda () Err bitreich.org 70 i- (ignore-errors Err bitreich.org 70 i- (throw ',timeout-tag nil))))) Err bitreich.org 70 i- :name (format nil "WITH-TIMEOUT thread serving: ~S." Err bitreich.org 70 i- (thread-name ,caller))) Err bitreich.org 70 i- (throw ',ok-tag (progn ,@body)))) Err bitreich.org 70 i- (error 'timeout :length ,timeout))))) Err bitreich.org 70 i- #-thread-support Err bitreich.org 70 i- `(error (make-threading-support-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Semaphores Err bitreich.org 70 i- Err bitreich.org 70 i-;;; We provide this structure definition unconditionally regardless of the fact Err bitreich.org 70 i-;;; it may not be used not to prevent warnings from compiling default functions Err bitreich.org 70 i-;;; for semaphore in default-implementations.lisp. Err bitreich.org 70 i-(defstruct %semaphore Err bitreich.org 70 i- lock Err bitreich.org 70 i- condition-variable Err bitreich.org 70 i- counter) Err bitreich.org 70 i- Err bitreich.org 70 i-#-(or ccl sbcl) Err bitreich.org 70 i-(deftype semaphore () Err bitreich.org 70 i- '%semaphore) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Thread Creation Err bitreich.org 70 i- Err bitreich.org 70 i-;;; See default-implementations.lisp for MAKE-THREAD. Err bitreich.org 70 i- Err bitreich.org 70 i-;; Forms are evaluated in the new thread or in the calling thread? Err bitreich.org 70 i-(defvar *default-special-bindings* nil Err bitreich.org 70 i- "This variable holds an alist associating special variable symbols Err bitreich.org 70 i- to forms to evaluate. Special variables named in this list will Err bitreich.org 70 i- be locally bound in the new thread before it begins executing user code. Err bitreich.org 70 i- Err bitreich.org 70 i- This variable may be rebound around calls to MAKE-THREAD to Err bitreich.org 70 i- add/alter default bindings. The effect of mutating this list is Err bitreich.org 70 i- undefined, but earlier forms take precedence over later forms for Err bitreich.org 70 i- the same symbol, so defaults may be overridden by consing to the Err bitreich.org 70 i- head of the list.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro defbindings (name docstring &body initforms) Err bitreich.org 70 i- (check-type docstring string) Err bitreich.org 70 i- `(defparameter ,name Err bitreich.org 70 i- (list Err bitreich.org 70 i- ,@(loop for (special form) in initforms Err bitreich.org 70 i- collect `(cons ',special ',form))) Err bitreich.org 70 i- ,docstring)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Forms are evaluated in the new thread or in the calling thread? Err bitreich.org 70 i-(defbindings *standard-io-bindings* Err bitreich.org 70 i- "Standard bindings of printer/reader control variables as per CL:WITH-STANDARD-IO-SYNTAX." Err bitreich.org 70 i- (*package* (find-package :common-lisp-user)) Err bitreich.org 70 i- (*print-array* t) Err bitreich.org 70 i- (*print-base* 10) Err bitreich.org 70 i- (*print-case* :upcase) Err bitreich.org 70 i- (*print-circle* nil) Err bitreich.org 70 i- (*print-escape* t) Err bitreich.org 70 i- (*print-gensym* t) Err bitreich.org 70 i- (*print-length* nil) Err bitreich.org 70 i- (*print-level* nil) Err bitreich.org 70 i- (*print-lines* nil) Err bitreich.org 70 i- (*print-miser-width* nil) Err bitreich.org 70 i- (*print-pprint-dispatch* (copy-pprint-dispatch nil)) Err bitreich.org 70 i- (*print-pretty* nil) Err bitreich.org 70 i- (*print-radix* nil) Err bitreich.org 70 i- (*print-readably* t) Err bitreich.org 70 i- (*print-right-margin* nil) Err bitreich.org 70 i- (*random-state* (make-random-state t)) Err bitreich.org 70 i- (*read-base* 10) Err bitreich.org 70 i- (*read-default-float-format* 'single-float) Err bitreich.org 70 i- (*read-eval* t) Err bitreich.org 70 i- (*read-suppress* nil) Err bitreich.org 70 i- (*readtable* (copy-readtable nil))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun binding-default-specials (function special-bindings) Err bitreich.org 70 i- "Return a closure that binds the symbols in SPECIAL-BINDINGS and calls Err bitreich.org 70 i-FUNCTION." Err bitreich.org 70 i- (let ((specials (remove-duplicates special-bindings :from-end t :key #'car))) Err bitreich.org 70 i- (lambda () Err bitreich.org 70 i- (progv (mapcar #'car specials) Err bitreich.org 70 i- (loop for (nil . form) in specials collect (eval form)) Err bitreich.org 70 i- (funcall function))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; FIXME: This test won't work if CURRENT-THREAD Err bitreich.org 70 i-;;; conses a new object each time Err bitreich.org 70 i-(defun signal-error-if-current-thread (thread) Err bitreich.org 70 i- (when (eq thread (current-thread)) Err bitreich.org 70 i- (error 'bordeaux-mp-condition Err bitreich.org 70 i- :message "Cannot destroy the current thread"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *no-condition-wait-timeout-message* Err bitreich.org 70 i- "CONDITION-WAIT with :TIMEOUT is not available for this Lisp implementation.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun signal-error-if-condition-wait-timeout (timeout) Err bitreich.org 70 i- (when timeout Err bitreich.org 70 i- (error 'bordeaux-mp-condition Err bitreich.org 70 i- :message *no-condition-wait-timeout-message*))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro define-condition-wait-compiler-macro () Err bitreich.org 70 i- `(define-compiler-macro condition-wait Err bitreich.org 70 i- (&whole whole condition-variable lock &key timeout) Err bitreich.org 70 i- (declare (ignore condition-variable lock)) Err bitreich.org 70 i- (when timeout Err bitreich.org 70 i- (simple-style-warning *no-condition-wait-timeout-message*)) Err bitreich.org 70 i- whole)) Err bitreich.org 70 1diff --git a/3rdparties/software/bordeaux-threads-v0.8.6/src/condition-variables.lisp b/3rdparties/software/bordeaux-threads-v0.8.6/src/condition-variables.lisp /scm/clic/file/3rdparties/software/bordeaux-threads-v0.8.6/src/condition-variables.lisp.gph bitreich.org 70 i@@ -1,38 +0,0 @@ Err bitreich.org 70 i-;;;; -*- indent-tabs-mode: nil -*- Err bitreich.org 70 i- Err bitreich.org 70 i-#| Err bitreich.org 70 i-Copyright 2006, 2007 Greg Pfeil Err bitreich.org 70 i- Err bitreich.org 70 i-Distributed under the MIT license (see LICENSE file) Err bitreich.org 70 i-|# Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:bordeaux-threads) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; This file provides a portable implementation of condition Err bitreich.org 70 i-;;; variables (given a working WITH-LOCK-HELD and THREAD-YIELD), and Err bitreich.org 70 i-;;; should be used if there is no condition variable implementation in Err bitreich.org 70 i-;;; the host Lisp. Err bitreich.org 70 i- Err bitreich.org 70 i-(defstruct condition-var Err bitreich.org 70 i- name Err bitreich.org 70 i- lock Err bitreich.org 70 i- active) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun condition-wait (condition-variable lock &key timeout) Err bitreich.org 70 i- (signal-error-if-condition-wait-timeout timeout) Err bitreich.org 70 i- (check-type condition-variable condition-var) Err bitreich.org 70 i- (setf (condition-var-active condition-variable) nil) Err bitreich.org 70 i- (release-lock lock) Err bitreich.org 70 i- (do () Err bitreich.org 70 i- ((when (condition-var-active condition-variable) Err bitreich.org 70 i- (acquire-lock lock) Err bitreich.org 70 i- t)) Err bitreich.org 70 i- (thread-yield)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition-wait-compiler-macro) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun condition-notify (condition-variable) Err bitreich.org 70 i- (check-type condition-variable condition-var) Err bitreich.org 70 i- (with-lock-held ((condition-var-lock condition-variable)) Err bitreich.org 70 i- (setf (condition-var-active condition-variable) t))) Err bitreich.org 70 1diff --git a/3rdparties/software/bordeaux-threads-v0.8.6/src/default-implementations.lisp b/3rdparties/software/bordeaux-threads-v0.8.6/src/default-implementations.lisp /scm/clic/file/3rdparties/software/bordeaux-threads-v0.8.6/src/default-implementations.lisp.gph bitreich.org 70 i@@ -1,361 +0,0 @@ Err bitreich.org 70 i-;;;; -*- indent-tabs-mode: nil -*- Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:bordeaux-threads) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Helper macros Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro defdfun (name args doc &body body) Err bitreich.org 70 i- `(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (unless (fboundp ',name) Err bitreich.org 70 i- (defun ,name ,args ,@body)) Err bitreich.org 70 i- (setf (documentation ',name 'function) Err bitreich.org 70 i- (or (documentation ',name 'function) ,doc)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro defdmacro (name args doc &body body) Err bitreich.org 70 i- `(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (unless (fboundp ',name) Err bitreich.org 70 i- (defmacro ,name ,args ,@body)) Err bitreich.org 70 i- (setf (documentation ',name 'function) Err bitreich.org 70 i- (or (documentation ',name 'function) ,doc)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Thread Creation Err bitreich.org 70 i- Err bitreich.org 70 i-(defdfun start-multiprocessing () Err bitreich.org 70 i- "If the host implementation uses user-level threads, start the Err bitreich.org 70 i-scheduler and multiprocessing, otherwise do nothing. Err bitreich.org 70 i-It is safe to call repeatedly." Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defdfun make-thread (function &key name Err bitreich.org 70 i- (initial-bindings *default-special-bindings*)) Err bitreich.org 70 i- "Creates and returns a thread named NAME, which will call the Err bitreich.org 70 i- function FUNCTION with no arguments: when FUNCTION returns, the Err bitreich.org 70 i- thread terminates. NAME defaults to \"Anonymous thread\" if unsupplied. Err bitreich.org 70 i- Err bitreich.org 70 i- On systems that do not support multi-threading, MAKE-THREAD will Err bitreich.org 70 i- signal an error. Err bitreich.org 70 i- Err bitreich.org 70 i- The interaction between threads and dynamic variables is in some Err bitreich.org 70 i- cases complex, and depends on whether the variable has only a global Err bitreich.org 70 i- binding (as established by e.g. DEFVAR/DEFPARAMETER/top-level SETQ) Err bitreich.org 70 i- or has been bound locally (e.g. with LET or LET*) in the calling Err bitreich.org 70 i- thread. Err bitreich.org 70 i- Err bitreich.org 70 i- - Global bindings are shared between threads: the initial value of a Err bitreich.org 70 i- global variable in the new thread will be the same as in the Err bitreich.org 70 i- parent, and an assignment to such a variable in any thread will be Err bitreich.org 70 i- visible to all threads in which the global binding is visible. Err bitreich.org 70 i- Err bitreich.org 70 i- - Local bindings, such as the ones introduced by INITIAL-BINDINGS, Err bitreich.org 70 i- are local to the thread they are introduced in, except that Err bitreich.org 70 i- Err bitreich.org 70 i- - Local bindings in the the caller of MAKE-THREAD may or may not be Err bitreich.org 70 i- shared with the new thread that it creates: this is Err bitreich.org 70 i- implementation-defined. Portable code should not depend on Err bitreich.org 70 i- particular behaviour in this case, nor should it assign to such Err bitreich.org 70 i- variables without first rebinding them in the new thread." Err bitreich.org 70 i- (%make-thread (binding-default-specials function initial-bindings) Err bitreich.org 70 i- (or name "Anonymous thread"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defdfun %make-thread (function name) Err bitreich.org 70 i- "The actual implementation-dependent function that creates threads." Err bitreich.org 70 i- (declare (ignore function name)) Err bitreich.org 70 i- (error (make-threading-support-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defdfun current-thread () Err bitreich.org 70 i- "Returns the thread object for the calling Err bitreich.org 70 i- thread. This is the same kind of object as would be returned by Err bitreich.org 70 i- MAKE-THREAD." Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defdfun threadp (object) Err bitreich.org 70 i- "Returns true if object is a thread, otherwise NIL." Err bitreich.org 70 i- (declare (ignore object)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defdfun thread-name (thread) Err bitreich.org 70 i- "Returns the name of the thread, as supplied to MAKE-THREAD." Err bitreich.org 70 i- (declare (ignore thread)) Err bitreich.org 70 i- "Main thread") Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Resource contention: locks and recursive locks Err bitreich.org 70 i- Err bitreich.org 70 i-(defdfun lock-p (object) Err bitreich.org 70 i- "Returns T if OBJECT is a lock; returns NIL otherwise." Err bitreich.org 70 i- (declare (ignore object)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defdfun recursive-lock-p (object) Err bitreich.org 70 i- "Returns T if OBJECT is a recursive lock; returns NIL otherwise." Err bitreich.org 70 i- (declare (ignore object)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defdfun make-lock (&optional name) Err bitreich.org 70 i- "Creates a lock (a mutex) whose name is NAME. If the system does not Err bitreich.org 70 i- support multiple threads this will still return some object, but it Err bitreich.org 70 i- may not be used for very much." Err bitreich.org 70 i- ;; In CLIM-SYS this is a freshly consed list (NIL). I don't know if Err bitreich.org 70 i- ;; there's some good reason it should be said structure or that it Err bitreich.org 70 i- ;; be freshly consed - EQ comparison of locks? Err bitreich.org 70 i- (declare (ignore name)) Err bitreich.org 70 i- (list nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defdfun acquire-lock (lock &optional wait-p) Err bitreich.org 70 i- "Acquire the lock LOCK for the calling thread. Err bitreich.org 70 i- WAIT-P governs what happens if the lock is not available: if WAIT-P Err bitreich.org 70 i- is true, the calling thread will wait until the lock is available Err bitreich.org 70 i- and then acquire it; if WAIT-P is NIL, ACQUIRE-LOCK will return Err bitreich.org 70 i- immediately. ACQUIRE-LOCK returns true if the lock was acquired and Err bitreich.org 70 i- NIL otherwise. Err bitreich.org 70 i- Err bitreich.org 70 i- This specification does not define what happens if a thread Err bitreich.org 70 i- attempts to acquire a lock that it already holds. For applications Err bitreich.org 70 i- that require locks to be safe when acquired recursively, see instead Err bitreich.org 70 i- MAKE-RECURSIVE-LOCK and friends." Err bitreich.org 70 i- (declare (ignore lock wait-p)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(defdfun release-lock (lock) Err bitreich.org 70 i- "Release LOCK. It is an error to call this unless Err bitreich.org 70 i- the lock has previously been acquired (and not released) by the same Err bitreich.org 70 i- thread. If other threads are waiting for the lock, the Err bitreich.org 70 i- ACQUIRE-LOCK call in one of them will now be able to continue. Err bitreich.org 70 i- Err bitreich.org 70 i- This function has no interesting return value." Err bitreich.org 70 i- (declare (ignore lock)) Err bitreich.org 70 i- (values)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defdmacro with-lock-held ((place) &body body) Err bitreich.org 70 i- "Evaluates BODY with the lock named by PLACE, the value of which Err bitreich.org 70 i- is a lock created by MAKE-LOCK. Before the forms in BODY are Err bitreich.org 70 i- evaluated, the lock is acquired as if by using ACQUIRE-LOCK. After the Err bitreich.org 70 i- forms in BODY have been evaluated, or if a non-local control transfer Err bitreich.org 70 i- is caused (e.g. by THROW or SIGNAL), the lock is released as if by Err bitreich.org 70 i- RELEASE-LOCK. Err bitreich.org 70 i- Err bitreich.org 70 i- Note that if the debugger is entered, it is unspecified whether the Err bitreich.org 70 i- lock is released at debugger entry or at debugger exit when execution Err bitreich.org 70 i- is restarted." Err bitreich.org 70 i- `(when (acquire-lock ,place t) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (locally ,@body) Err bitreich.org 70 i- (release-lock ,place)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defdfun make-recursive-lock (&optional name) Err bitreich.org 70 i- "Create and return a recursive lock whose name is NAME. A recursive Err bitreich.org 70 i- lock differs from an ordinary lock in that a thread that already Err bitreich.org 70 i- holds the recursive lock can acquire it again without blocking. The Err bitreich.org 70 i- thread must then release the lock twice before it becomes available Err bitreich.org 70 i- for another thread." Err bitreich.org 70 i- (declare (ignore name)) Err bitreich.org 70 i- (list nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defdfun acquire-recursive-lock (lock) Err bitreich.org 70 i- "As for ACQUIRE-LOCK, but for recursive locks." Err bitreich.org 70 i- (declare (ignore lock)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(defdfun release-recursive-lock (lock) Err bitreich.org 70 i- "Release the recursive LOCK. The lock will only Err bitreich.org 70 i- become free after as many Release operations as there have been Err bitreich.org 70 i- Acquire operations. See RELEASE-LOCK for other information." Err bitreich.org 70 i- (declare (ignore lock)) Err bitreich.org 70 i- (values)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defdmacro with-recursive-lock-held ((place &key timeout) &body body) Err bitreich.org 70 i- "Evaluates BODY with the recursive lock named by PLACE, which is a Err bitreich.org 70 i-reference to a recursive lock created by MAKE-RECURSIVE-LOCK. See Err bitreich.org 70 i-WITH-LOCK-HELD etc etc" Err bitreich.org 70 i- (declare (ignore timeout)) Err bitreich.org 70 i- `(when (acquire-recursive-lock ,place) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (locally ,@body) Err bitreich.org 70 i- (release-recursive-lock ,place)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Resource contention: condition variables Err bitreich.org 70 i- Err bitreich.org 70 i-;;; A condition variable provides a mechanism for threads to put Err bitreich.org 70 i-;;; themselves to sleep while waiting for the state of something to Err bitreich.org 70 i-;;; change, then to be subsequently woken by another thread which has Err bitreich.org 70 i-;;; changed the state. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; A condition variable must be used in conjunction with a lock to Err bitreich.org 70 i-;;; protect access to the state of the object of interest. The Err bitreich.org 70 i-;;; procedure is as follows: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Suppose two threads A and B, and some kind of notional event Err bitreich.org 70 i-;;; channel C. A is consuming events in C, and B is producing them. Err bitreich.org 70 i-;;; CV is a condition-variable Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; 1) A acquires the lock that safeguards access to C Err bitreich.org 70 i-;;; 2) A threads and removes all events that are available in C Err bitreich.org 70 i-;;; 3) When C is empty, A calls CONDITION-WAIT, which atomically Err bitreich.org 70 i-;;; releases the lock and puts A to sleep on CV Err bitreich.org 70 i-;;; 4) Wait to be notified; CONDITION-WAIT will acquire the lock again Err bitreich.org 70 i-;;; before returning Err bitreich.org 70 i-;;; 5) Loop back to step 2, for as long as threading should continue Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; When B generates an event E, it Err bitreich.org 70 i-;;; 1) acquires the lock guarding C Err bitreich.org 70 i-;;; 2) adds E to the channel Err bitreich.org 70 i-;;; 3) calls CONDITION-NOTIFY on CV to wake any sleeping thread Err bitreich.org 70 i-;;; 4) releases the lock Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; To avoid the "lost wakeup" problem, the implementation must Err bitreich.org 70 i-;;; guarantee that CONDITION-WAIT in thread A atomically releases the Err bitreich.org 70 i-;;; lock and sleeps. If this is not guaranteed there is the Err bitreich.org 70 i-;;; possibility that thread B can add an event and call Err bitreich.org 70 i-;;; CONDITION-NOTIFY between the lock release and the sleep - in this Err bitreich.org 70 i-;;; case the notify call would not see A, which would be left sleeping Err bitreich.org 70 i-;;; despite there being an event available. Err bitreich.org 70 i- Err bitreich.org 70 i-(defdfun thread-yield () Err bitreich.org 70 i- "Allows other threads to run. It may be necessary or desirable to Err bitreich.org 70 i- call this periodically in some implementations; others may schedule Err bitreich.org 70 i- threads automatically. On systems that do not support Err bitreich.org 70 i- multi-threading, this does nothing." Err bitreich.org 70 i- (values)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defdfun make-condition-variable (&key name) Err bitreich.org 70 i- "Returns a new condition-variable object for use Err bitreich.org 70 i- with CONDITION-WAIT and CONDITION-NOTIFY." Err bitreich.org 70 i- (declare (ignore name)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defdfun condition-wait (condition-variable lock &key timeout) Err bitreich.org 70 i- "Atomically release LOCK and enqueue the calling Err bitreich.org 70 i- thread waiting for CONDITION-VARIABLE. The thread will resume when Err bitreich.org 70 i- another thread has notified it using CONDITION-NOTIFY; it may also Err bitreich.org 70 i- resume if interrupted by some external event or in other Err bitreich.org 70 i- implementation-dependent circumstances: the caller must always test Err bitreich.org 70 i- on waking that there is threading to be done, instead of assuming Err bitreich.org 70 i- that it can go ahead. Err bitreich.org 70 i- Err bitreich.org 70 i- It is an error to call function this unless from the thread that Err bitreich.org 70 i- holds LOCK. Err bitreich.org 70 i- Err bitreich.org 70 i- If TIMEOUT is nil or not provided, the system always reacquires LOCK Err bitreich.org 70 i- before returning to the caller. In this case T is returned. Err bitreich.org 70 i- Err bitreich.org 70 i- If TIMEOUT is non-nil, the call will return after at most TIMEOUT Err bitreich.org 70 i- seconds (approximately), whether or not a notification has occurred. Err bitreich.org 70 i- Either NIL or T will be returned. A return of NIL indicates that the Err bitreich.org 70 i- lock is no longer held and that the timeout has expired. A return of Err bitreich.org 70 i- T indicates that the lock is held, in which case the timeout may or Err bitreich.org 70 i- may not have expired. Err bitreich.org 70 i- Err bitreich.org 70 i- **NOTE**: The behavior of CONDITION-WAIT with TIMEOUT diverges from Err bitreich.org 70 i- the POSIX function pthread_cond_timedwait. The former may return Err bitreich.org 70 i- without the lock being held while the latter always returns with the Err bitreich.org 70 i- lock held. Err bitreich.org 70 i- Err bitreich.org 70 i- In an implementation that does not support multiple threads, this Err bitreich.org 70 i- function signals an error." Err bitreich.org 70 i- (declare (ignore condition-variable lock timeout)) Err bitreich.org 70 i- (error (make-threading-support-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defdfun condition-notify (condition-variable) Err bitreich.org 70 i- "Notify at least one of the threads waiting for Err bitreich.org 70 i- CONDITION-VARIABLE. It is implementation-dependent whether one or Err bitreich.org 70 i- more than one (and possibly all) threads are woken, but if the Err bitreich.org 70 i- implementation is capable of waking only a single thread (not all Err bitreich.org 70 i- are) this is probably preferable for efficiency reasons. The order Err bitreich.org 70 i- of wakeup is unspecified and does not necessarily relate to the Err bitreich.org 70 i- order that the threads went to sleep in. Err bitreich.org 70 i- Err bitreich.org 70 i- CONDITION-NOTIFY has no useful return value. In an implementation Err bitreich.org 70 i- that does not support multiple threads, it has no effect." Err bitreich.org 70 i- (declare (ignore condition-variable)) Err bitreich.org 70 i- (values)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Resource contention: semaphores Err bitreich.org 70 i- Err bitreich.org 70 i-(defdfun make-semaphore (&key name (count 0)) Err bitreich.org 70 i- "Create a semaphore with the supplied NAME and initial counter value COUNT." Err bitreich.org 70 i- (make-%semaphore :lock (make-lock name) Err bitreich.org 70 i- :condition-variable (make-condition-variable :name name) Err bitreich.org 70 i- :counter count)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defdfun signal-semaphore (semaphore &key (count 1)) Err bitreich.org 70 i- "Increment SEMAPHORE by COUNT. If there are threads waiting on this Err bitreich.org 70 i-semaphore, then COUNT of them are woken up." Err bitreich.org 70 i- (with-lock-held ((%semaphore-lock semaphore)) Err bitreich.org 70 i- (incf (%semaphore-counter semaphore) count) Err bitreich.org 70 i- (dotimes (v count) Err bitreich.org 70 i- (condition-notify (%semaphore-condition-variable semaphore)))) Err bitreich.org 70 i- (values)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defdfun wait-on-semaphore (semaphore &key timeout) Err bitreich.org 70 i- "Decrement the count of SEMAPHORE by 1 if the count would not be negative. Err bitreich.org 70 i- Err bitreich.org 70 i-Else blocks until the semaphore can be decremented. Returns generalized boolean Err bitreich.org 70 i-T on success. Err bitreich.org 70 i- Err bitreich.org 70 i-If TIMEOUT is given, it is the maximum number of seconds to wait. If the count Err bitreich.org 70 i-cannot be decremented in that time, returns NIL without decrementing the count." Err bitreich.org 70 i- (with-lock-held ((%semaphore-lock semaphore)) Err bitreich.org 70 i- (if (>= (%semaphore-counter semaphore) 1) Err bitreich.org 70 i- (decf (%semaphore-counter semaphore)) Err bitreich.org 70 i- (let ((deadline (when timeout Err bitreich.org 70 i- (+ (get-internal-real-time) Err bitreich.org 70 i- (* timeout internal-time-units-per-second))))) Err bitreich.org 70 i- ;; we need this loop because of a spurious wakeup possibility Err bitreich.org 70 i- (loop until (>= (%semaphore-counter semaphore) 1) Err bitreich.org 70 i- do (cond Err bitreich.org 70 i- ((null (condition-wait (%semaphore-condition-variable semaphore) Err bitreich.org 70 i- (%semaphore-lock semaphore) Err bitreich.org 70 i- :timeout timeout)) Err bitreich.org 70 i- (return-from wait-on-semaphore)) Err bitreich.org 70 i- ;; unfortunately cv-wait may return T on timeout too Err bitreich.org 70 i- ((and deadline (>= (get-internal-real-time) deadline)) Err bitreich.org 70 i- (return-from wait-on-semaphore)) Err bitreich.org 70 i- (timeout Err bitreich.org 70 i- (setf timeout (/ (- deadline (get-internal-real-time)) Err bitreich.org 70 i- internal-time-units-per-second))))) Err bitreich.org 70 i- (decf (%semaphore-counter semaphore)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defdfun semaphore-p (object) Err bitreich.org 70 i- "Returns T if OBJECT is a semaphore; returns NIL otherwise." Err bitreich.org 70 i- (typep object 'semaphore)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Introspection/debugging Err bitreich.org 70 i- Err bitreich.org 70 i-;;; The following functions may be provided for debugging purposes, Err bitreich.org 70 i-;;; but are not advised to be called from normal user code. Err bitreich.org 70 i- Err bitreich.org 70 i-(defdfun all-threads () Err bitreich.org 70 i- "Returns a sequence of all of the threads. This may not Err bitreich.org 70 i- be freshly-allocated, so the caller should not modify it." Err bitreich.org 70 i- (error (make-threading-support-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defdfun interrupt-thread (thread function) Err bitreich.org 70 i- "Interrupt THREAD and cause it to evaluate FUNCTION Err bitreich.org 70 i- before continuing with the interrupted path of execution. This may Err bitreich.org 70 i- not be a good idea if THREAD is holding locks or doing anything Err bitreich.org 70 i- important. On systems that do not support multiple threads, this Err bitreich.org 70 i- function signals an error." Err bitreich.org 70 i- (declare (ignore thread function)) Err bitreich.org 70 i- (error (make-threading-support-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defdfun destroy-thread (thread) Err bitreich.org 70 i- "Terminates the thread THREAD, which is an object Err bitreich.org 70 i- as returned by MAKE-THREAD. This should be used with caution: it is Err bitreich.org 70 i- implementation-defined whether the thread runs cleanup forms or Err bitreich.org 70 i- releases its locks first. Err bitreich.org 70 i- Err bitreich.org 70 i- Destroying the calling thread is an error." Err bitreich.org 70 i- (declare (ignore thread)) Err bitreich.org 70 i- (error (make-threading-support-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defdfun thread-alive-p (thread) Err bitreich.org 70 i- "Returns true if THREAD is alive, that is, if Err bitreich.org 70 i- DESTROY-THREAD has not been called on it." Err bitreich.org 70 i- (declare (ignore thread)) Err bitreich.org 70 i- (error (make-threading-support-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defdfun join-thread (thread) Err bitreich.org 70 i- "Wait until THREAD terminates. If THREAD has already terminated, Err bitreich.org 70 i- return immediately. The return values of the thread function are Err bitreich.org 70 i- returned." Err bitreich.org 70 i- (declare (ignore thread)) Err bitreich.org 70 i- (error (make-threading-support-error))) Err bitreich.org 70 1diff --git a/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-abcl.lisp b/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-abcl.lisp /scm/clic/file/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-abcl.lisp.gph bitreich.org 70 i@@ -1,150 +0,0 @@ Err bitreich.org 70 i-;;;; -*- indent-tabs-mode: nil -*- Err bitreich.org 70 i- Err bitreich.org 70 i-#| Err bitreich.org 70 i-Copyright 2006, 2007 Greg Pfeil Err bitreich.org 70 i- Err bitreich.org 70 i-Reimplemented with java.util.concurrent.locks.ReentrantLock by Mark Evenson 2011. Err bitreich.org 70 i- Err bitreich.org 70 i-Distributed under the MIT license (see LICENSE file) Err bitreich.org 70 i-|# Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:bordeaux-threads) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; the implementation of the Armed Bear thread interface can be found in Err bitreich.org 70 i-;;; src/org/armedbear/lisp/LispThread.java Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype thread () Err bitreich.org 70 i- 'threads:thread) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Thread Creation Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %make-thread (function name) Err bitreich.org 70 i- (threads:make-thread function :name name)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun current-thread () Err bitreich.org 70 i- (threads:current-thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-name (thread) Err bitreich.org 70 i- (threads:thread-name thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun threadp (object) Err bitreich.org 70 i- (typep object 'thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Resource contention: locks and recursive locks Err bitreich.org 70 i- Err bitreich.org 70 i-(defstruct mutex name lock) Err bitreich.org 70 i-(defstruct (mutex-recursive (:include mutex))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Making methods constants in this manner avoids the runtime expense of Err bitreich.org 70 i-;; introspection involved in JCALL with string arguments. Err bitreich.org 70 i-(defconstant +lock+ Err bitreich.org 70 i- (jmethod "java.util.concurrent.locks.ReentrantLock" "lock")) Err bitreich.org 70 i-(defconstant +try-lock+ Err bitreich.org 70 i- (jmethod "java.util.concurrent.locks.ReentrantLock" "tryLock")) Err bitreich.org 70 i-(defconstant +is-held-by-current-thread+ Err bitreich.org 70 i- (jmethod "java.util.concurrent.locks.ReentrantLock" "isHeldByCurrentThread")) Err bitreich.org 70 i-(defconstant +unlock+ Err bitreich.org 70 i- (jmethod "java.util.concurrent.locks.ReentrantLock" "unlock")) Err bitreich.org 70 i-(defconstant +get-hold-count+ Err bitreich.org 70 i- (jmethod "java.util.concurrent.locks.ReentrantLock" "getHoldCount")) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype lock () 'mutex) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype recursive-lock () 'mutex-recursive) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun lock-p (object) Err bitreich.org 70 i- (typep object 'mutex)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun recursive-lock-p (object) Err bitreich.org 70 i- (typep object 'mutex-recursive)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-lock (&optional name) Err bitreich.org 70 i- (make-mutex Err bitreich.org 70 i- :name (or name "Anonymous lock") Err bitreich.org 70 i- :lock (jnew "java.util.concurrent.locks.ReentrantLock"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun acquire-lock (lock &optional (wait-p t)) Err bitreich.org 70 i- (check-type lock mutex) Err bitreich.org 70 i- (when (jcall +is-held-by-current-thread+ (mutex-lock lock)) Err bitreich.org 70 i- (error "Non-recursive lock being reacquired by owner.")) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- (wait-p Err bitreich.org 70 i- (jcall +lock+ (mutex-lock lock)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- (t (jcall +try-lock+ (mutex-lock lock))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun release-lock (lock) Err bitreich.org 70 i- (check-type lock mutex) Err bitreich.org 70 i- (unless (jcall +is-held-by-current-thread+ (mutex-lock lock)) Err bitreich.org 70 i- (error "Attempt to release lock not held by calling thread.")) Err bitreich.org 70 i- (jcall +unlock+ (mutex-lock lock)) Err bitreich.org 70 i- (values)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-recursive-lock (&optional name) Err bitreich.org 70 i- (make-mutex-recursive Err bitreich.org 70 i- :name (or name "Anonymous lock") Err bitreich.org 70 i- :lock (jnew "java.util.concurrent.locks.ReentrantLock"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun acquire-recursive-lock (lock &optional (wait-p t)) Err bitreich.org 70 i- (check-type lock mutex-recursive) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- (wait-p Err bitreich.org 70 i- (jcall +lock+ (mutex-recursive-lock lock)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- (t (jcall +try-lock+ (mutex-recursive-lock lock))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun release-recursive-lock (lock) Err bitreich.org 70 i- (check-type lock mutex-recursive) Err bitreich.org 70 i- (unless (jcall +is-held-by-current-thread+ (mutex-lock lock)) Err bitreich.org 70 i- (error "Attempt to release lock not held by calling thread.")) Err bitreich.org 70 i- (jcall +unlock+ (mutex-lock lock)) Err bitreich.org 70 i- (values)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Resource contention: condition variables Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-yield () Err bitreich.org 70 i- (java:jstatic "yield" "java.lang.Thread")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defstruct condition-variable Err bitreich.org 70 i- (name "Anonymous condition variable")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun condition-wait (condition lock &key timeout) Err bitreich.org 70 i- (threads:synchronized-on condition Err bitreich.org 70 i- (release-lock lock) Err bitreich.org 70 i- (if timeout Err bitreich.org 70 i- ;; Since giving a zero time value to threads:object-wait means Err bitreich.org 70 i- ;; an indefinite wait, use some arbitrary small number. Err bitreich.org 70 i- (threads:object-wait condition Err bitreich.org 70 i- (if (zerop timeout) Err bitreich.org 70 i- least-positive-single-float Err bitreich.org 70 i- timeout)) Err bitreich.org 70 i- (threads:object-wait condition))) Err bitreich.org 70 i- (acquire-lock lock) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun condition-notify (condition) Err bitreich.org 70 i- (threads:synchronized-on condition Err bitreich.org 70 i- (threads:object-notify condition))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Introspection/debugging Err bitreich.org 70 i- Err bitreich.org 70 i-(defun all-threads () Err bitreich.org 70 i- (let ((threads ())) Err bitreich.org 70 i- (threads:mapcar-threads (lambda (thread) Err bitreich.org 70 i- (push thread threads))) Err bitreich.org 70 i- (reverse threads))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun interrupt-thread (thread function &rest args) Err bitreich.org 70 i- (apply #'threads:interrupt-thread thread function args)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun destroy-thread (thread) Err bitreich.org 70 i- (signal-error-if-current-thread thread) Err bitreich.org 70 i- (threads:destroy-thread thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-alive-p (thread) Err bitreich.org 70 i- (threads:thread-alive-p thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun join-thread (thread) Err bitreich.org 70 i- (threads:thread-join thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(mark-supported) Err bitreich.org 70 1diff --git a/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-allegro.lisp b/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-allegro.lisp /scm/clic/file/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-allegro.lisp.gph bitreich.org 70 i@@ -1,143 +0,0 @@ Err bitreich.org 70 i-;;;; -*- indent-tabs-mode: nil -*- Err bitreich.org 70 i- Err bitreich.org 70 i-#| Err bitreich.org 70 i-Copyright 2006, 2007 Greg Pfeil Err bitreich.org 70 i- Err bitreich.org 70 i-Distributed under the MIT license (see LICENSE file) Err bitreich.org 70 i-|# Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:bordeaux-threads) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; documentation on the Allegro Multiprocessing interface can be found at Err bitreich.org 70 i-;;; http://www.franz.com/support/documentation/8.1/doc/multiprocessing.htm Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Resource contention: locks and recursive locks Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype lock () 'mp:process-lock) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype recursive-lock () 'mp:process-lock) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun lock-p (object) Err bitreich.org 70 i- (typep object 'mp:process-lock)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun recursive-lock-p (object) Err bitreich.org 70 i- (typep object 'mp:process-lock)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-lock (&optional name) Err bitreich.org 70 i- (mp:make-process-lock :name (or name "Anonymous lock"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-recursive-lock (&optional name) Err bitreich.org 70 i- (mp:make-process-lock :name (or name "Anonymous recursive lock"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun acquire-lock (lock &optional (wait-p t)) Err bitreich.org 70 i- (mp:process-lock lock mp:*current-process* "Lock" (if wait-p nil 0))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun release-lock (lock) Err bitreich.org 70 i- (mp:process-unlock lock)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-lock-held ((place) &body body) Err bitreich.org 70 i- `(mp:with-process-lock (,place :norecursive t) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-recursive-lock-held ((place &key timeout) &body body) Err bitreich.org 70 i- `(mp:with-process-lock (,place :timeout ,timeout) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Resource contention: condition variables Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-condition-variable (&key name) Err bitreich.org 70 i- (declare (ignorable name)) Err bitreich.org 70 i- #-(version>= 9) Err bitreich.org 70 i- (mp:make-gate nil) Err bitreich.org 70 i- #+(version>= 9) Err bitreich.org 70 i- (mp:make-condition-variable :name name)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun condition-wait (condition-variable lock &key timeout) Err bitreich.org 70 i- #-(version>= 9) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (release-lock lock) Err bitreich.org 70 i- (if timeout Err bitreich.org 70 i- (mp:process-wait-with-timeout "wait for message" timeout Err bitreich.org 70 i- #'mp:gate-open-p condition-variable) Err bitreich.org 70 i- (mp:process-wait "wait for message" #'mp:gate-open-p condition-variable)) Err bitreich.org 70 i- (acquire-lock lock) Err bitreich.org 70 i- (mp:close-gate condition-variable)) Err bitreich.org 70 i- #+(version>= 9) Err bitreich.org 70 i- (mp:condition-variable-wait condition-variable lock :timeout timeout) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun condition-notify (condition-variable) Err bitreich.org 70 i- #-(version>= 9) Err bitreich.org 70 i- (mp:open-gate condition-variable) Err bitreich.org 70 i- #+(version>= 9) Err bitreich.org 70 i- (mp:condition-variable-signal condition-variable)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-yield () Err bitreich.org 70 i- (mp:process-allow-schedule)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype thread () Err bitreich.org 70 i- 'mp:process) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Thread Creation Err bitreich.org 70 i- Err bitreich.org 70 i-(defun start-multiprocessing () Err bitreich.org 70 i- (mp:start-scheduler)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %make-thread (function name) Err bitreich.org 70 i- #+smp Err bitreich.org 70 i- (mp:process-run-function name function) Err bitreich.org 70 i- #-smp Err bitreich.org 70 i- (mp:process-run-function Err bitreich.org 70 i- name Err bitreich.org 70 i- (lambda () Err bitreich.org 70 i- (let ((return-values Err bitreich.org 70 i- (multiple-value-list (funcall function)))) Err bitreich.org 70 i- (setf (getf (mp:process-property-list mp:*current-process*) Err bitreich.org 70 i- 'return-values) Err bitreich.org 70 i- return-values) Err bitreich.org 70 i- (values-list return-values))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun current-thread () Err bitreich.org 70 i- mp:*current-process*) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun threadp (object) Err bitreich.org 70 i- (typep object 'mp:process)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-name (thread) Err bitreich.org 70 i- (mp:process-name thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Timeouts Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-timeout ((timeout) &body body) Err bitreich.org 70 i- (once-only (timeout) Err bitreich.org 70 i- `(mp:with-timeout (,timeout (error 'timeout :length ,timeout)) Err bitreich.org 70 i- ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Introspection/debugging Err bitreich.org 70 i- Err bitreich.org 70 i-(defun all-threads () Err bitreich.org 70 i- mp:*all-processes*) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun interrupt-thread (thread function &rest args) Err bitreich.org 70 i- (apply #'mp:process-interrupt thread function args)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun destroy-thread (thread) Err bitreich.org 70 i- (signal-error-if-current-thread thread) Err bitreich.org 70 i- (mp:process-kill thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-alive-p (thread) Err bitreich.org 70 i- (mp:process-alive-p thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun join-thread (thread) Err bitreich.org 70 i- #+smp Err bitreich.org 70 i- (values-list (mp:process-join thread)) Err bitreich.org 70 i- #-smp Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (mp:process-wait (format nil "Waiting for thread ~A to complete" thread) Err bitreich.org 70 i- (complement #'mp:process-alive-p) Err bitreich.org 70 i- thread) Err bitreich.org 70 i- (let ((return-values Err bitreich.org 70 i- (getf (mp:process-property-list thread) 'return-values))) Err bitreich.org 70 i- (values-list return-values)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(mark-supported) Err bitreich.org 70 1diff --git a/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-clisp.lisp b/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-clisp.lisp /scm/clic/file/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-clisp.lisp.gph bitreich.org 70 i@@ -1,105 +0,0 @@ Err bitreich.org 70 i-;;;; -*- indent-tabs-mode: nil -*- Err bitreich.org 70 i- Err bitreich.org 70 i-#| Err bitreich.org 70 i-Copyright 2006, 2007 Greg Pfeil Err bitreich.org 70 i- Err bitreich.org 70 i-Distributed under the MIT license (see LICENSE file) Err bitreich.org 70 i-|# Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:bordeaux-threads) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype thread () Err bitreich.org 70 i- 'mt:thread) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Thread Creation Err bitreich.org 70 i-(defun %make-thread (function name) Err bitreich.org 70 i- (mt:make-thread function Err bitreich.org 70 i- :name name Err bitreich.org 70 i- :initial-bindings mt:*default-special-bindings*)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun current-thread () Err bitreich.org 70 i- (mt:current-thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun threadp (object) Err bitreich.org 70 i- (mt:threadp object)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-name (thread) Err bitreich.org 70 i- (mt:thread-name thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Resource contention: locks and recursive locks Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype lock () 'mt:mt-mutex) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype recursive-lock () Err bitreich.org 70 i- '(and mt:mt-mutex (satisfies mt:mutex-recursive-p))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun lock-p (object) Err bitreich.org 70 i- (typep object 'mt:mt-mutex)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun recursive-lock-p (object) Err bitreich.org 70 i- (and (typep object 'mt:mt-mutex) Err bitreich.org 70 i- (mt:mutex-recursive-p object))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-lock (&optional name) Err bitreich.org 70 i- (mt:make-mutex :name (or name "Anonymous lock"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun acquire-lock (lock &optional (wait-p t)) Err bitreich.org 70 i- (mt:mutex-lock lock :timeout (if wait-p nil 0))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun release-lock (lock) Err bitreich.org 70 i- (mt:mutex-unlock lock)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-lock-held ((place) &body body) Err bitreich.org 70 i- `(mt:with-mutex-lock (,place) ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-recursive-lock (&optional name) Err bitreich.org 70 i- (mt:make-mutex :name (or name "Anonymous recursive lock") Err bitreich.org 70 i- :recursive-p t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-recursive-lock-held ((place) &body body) Err bitreich.org 70 i- `(mt:with-mutex-lock (,place) ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Resource contention: condition variables Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-condition-variable (&key name) Err bitreich.org 70 i- (mt:make-exemption :name (or name "Anonymous condition variable"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun condition-wait (condition-variable lock &key timeout) Err bitreich.org 70 i- (mt:exemption-wait condition-variable lock :timeout timeout) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun condition-notify (condition-variable) Err bitreich.org 70 i- (mt:exemption-signal condition-variable)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-yield () Err bitreich.org 70 i- (mt:thread-yield)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Timeouts Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-timeout ((timeout) &body body) Err bitreich.org 70 i- (once-only (timeout) Err bitreich.org 70 i- `(mt:with-timeout (,timeout (error 'timeout :length ,timeout)) Err bitreich.org 70 i- ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Introspection/debugging Err bitreich.org 70 i- Err bitreich.org 70 i-;;; VTZ: mt:list-threads returns all threads that are not garbage collected. Err bitreich.org 70 i-(defun all-threads () Err bitreich.org 70 i- (delete-if-not #'mt:thread-active-p (mt:list-threads))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun interrupt-thread (thread function &rest args) Err bitreich.org 70 i- (mt:thread-interrupt thread :function function :arguments args)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun destroy-thread (thread) Err bitreich.org 70 i- ;;; VTZ: actually we can kill ourselelf. Err bitreich.org 70 i- ;;; suicide is part of our contemporary life :) Err bitreich.org 70 i- (signal-error-if-current-thread thread) Err bitreich.org 70 i- (mt:thread-interrupt thread :function t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-alive-p (thread) Err bitreich.org 70 i- (mt:thread-active-p thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun join-thread (thread) Err bitreich.org 70 i- (mt:thread-join thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(mark-supported) Err bitreich.org 70 1diff --git a/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-clozure.lisp b/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-clozure.lisp /scm/clic/file/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-clozure.lisp.gph bitreich.org 70 i@@ -1,130 +0,0 @@ Err bitreich.org 70 i-;;;; -*- indent-tabs-mode: nil -*- Err bitreich.org 70 i- Err bitreich.org 70 i-#| Err bitreich.org 70 i-Copyright 2006, 2007 Greg Pfeil Err bitreich.org 70 i- Err bitreich.org 70 i-Distributed under the MIT license (see LICENSE file) Err bitreich.org 70 i-|# Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:bordeaux-threads) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; documentation on the OpenMCL Threads interface can be found at Err bitreich.org 70 i-;;; http://openmcl.clozure.com/Doc/Programming-with-Threads.html Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype thread () Err bitreich.org 70 i- 'ccl:process) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Thread Creation Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %make-thread (function name) Err bitreich.org 70 i- (ccl:process-run-function name function)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun current-thread () Err bitreich.org 70 i- ccl:*current-process*) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun threadp (object) Err bitreich.org 70 i- (typep object 'ccl:process)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-name (thread) Err bitreich.org 70 i- (ccl:process-name thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Resource contention: locks and recursive locks Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype lock () 'ccl:lock) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype recursive-lock () 'ccl:lock) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun lock-p (object) Err bitreich.org 70 i- (typep object 'ccl:lock)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun recursive-lock-p (object) Err bitreich.org 70 i- (typep object 'ccl:lock)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-lock (&optional name) Err bitreich.org 70 i- (ccl:make-lock (or name "Anonymous lock"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun acquire-lock (lock &optional (wait-p t)) Err bitreich.org 70 i- (if wait-p Err bitreich.org 70 i- (ccl:grab-lock lock) Err bitreich.org 70 i- (ccl:try-lock lock))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun release-lock (lock) Err bitreich.org 70 i- (ccl:release-lock lock)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-lock-held ((place) &body body) Err bitreich.org 70 i- `(ccl:with-lock-grabbed (,place) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-recursive-lock (&optional name) Err bitreich.org 70 i- (ccl:make-lock (or name "Anonymous recursive lock"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun acquire-recursive-lock (lock) Err bitreich.org 70 i- (ccl:grab-lock lock)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun release-recursive-lock (lock) Err bitreich.org 70 i- (ccl:release-lock lock)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-recursive-lock-held ((place) &body body) Err bitreich.org 70 i- `(ccl:with-lock-grabbed (,place) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Resource contention: condition variables Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-condition-variable (&key name) Err bitreich.org 70 i- (declare (ignore name)) Err bitreich.org 70 i- (ccl:make-semaphore)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun condition-wait (condition-variable lock &key timeout) Err bitreich.org 70 i- (release-lock lock) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (if timeout Err bitreich.org 70 i- (ccl:timed-wait-on-semaphore condition-variable timeout) Err bitreich.org 70 i- (ccl:wait-on-semaphore condition-variable)) Err bitreich.org 70 i- (acquire-lock lock t)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun condition-notify (condition-variable) Err bitreich.org 70 i- (ccl:signal-semaphore condition-variable)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-yield () Err bitreich.org 70 i- (ccl:process-allow-schedule)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Semaphores Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype semaphore () Err bitreich.org 70 i- 'ccl:semaphore) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-semaphore (&key name (count 0)) Err bitreich.org 70 i- (declare (ignore name)) Err bitreich.org 70 i- (let ((semaphore (ccl:make-semaphore))) Err bitreich.org 70 i- (dotimes (c count) (ccl:signal-semaphore semaphore)) Err bitreich.org 70 i- semaphore)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun signal-semaphore (semaphore &key (count 1)) Err bitreich.org 70 i- (dotimes (c count) (ccl:signal-semaphore semaphore))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun wait-on-semaphore (semaphore &key timeout) Err bitreich.org 70 i- (if timeout Err bitreich.org 70 i- (ccl:timed-wait-on-semaphore semaphore timeout) Err bitreich.org 70 i- (ccl:wait-on-semaphore semaphore))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Introspection/debugging Err bitreich.org 70 i- Err bitreich.org 70 i-(defun all-threads () Err bitreich.org 70 i- (ccl:all-processes)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun interrupt-thread (thread function &rest args) Err bitreich.org 70 i- (declare (dynamic-extent args)) Err bitreich.org 70 i- (apply #'ccl:process-interrupt thread function args)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun destroy-thread (thread) Err bitreich.org 70 i- (signal-error-if-current-thread thread) Err bitreich.org 70 i- (ccl:process-kill thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-alive-p (thread) Err bitreich.org 70 i- (not (ccl:process-exhausted-p thread))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun join-thread (thread) Err bitreich.org 70 i- (ccl:join-process thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(mark-supported) Err bitreich.org 70 1diff --git a/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-cmucl.lisp b/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-cmucl.lisp /scm/clic/file/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-cmucl.lisp.gph bitreich.org 70 i@@ -1,161 +0,0 @@ Err bitreich.org 70 i-;;;; -*- indent-tabs-mode: nil -*- Err bitreich.org 70 i- Err bitreich.org 70 i-#| Err bitreich.org 70 i-Copyright 2006, 2007 Greg Pfeil Err bitreich.org 70 i- Err bitreich.org 70 i-Distributed under the MIT license (see LICENSE file) Err bitreich.org 70 i-|# Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:bordeaux-threads) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype thread () Err bitreich.org 70 i- 'mp::process) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Thread Creation Err bitreich.org 70 i- Err bitreich.org 70 i-(defun start-multiprocessing () Err bitreich.org 70 i- (mp::startup-idle-and-top-level-loops)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %make-thread (function name) Err bitreich.org 70 i- #+#.(cl:if (cl:find-symbol (cl:string '#:process-join) :mp) '(and) '(or)) Err bitreich.org 70 i- (mp:make-process function :name name) Err bitreich.org 70 i- #-#.(cl:if (cl:find-symbol (cl:string '#:process-join) :mp) '(and) '(or)) Err bitreich.org 70 i- (mp:make-process (lambda () Err bitreich.org 70 i- (let ((return-values Err bitreich.org 70 i- (multiple-value-list (funcall function)))) Err bitreich.org 70 i- (setf (getf (mp:process-property-list mp:*current-process*) Err bitreich.org 70 i- 'return-values) Err bitreich.org 70 i- return-values) Err bitreich.org 70 i- (values-list return-values))) Err bitreich.org 70 i- :name name)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun current-thread () Err bitreich.org 70 i- mp:*current-process*) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod threadp (object) Err bitreich.org 70 i- (mp:processp object)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-name (thread) Err bitreich.org 70 i- (mp:process-name thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Resource contention: locks and recursive locks Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype lock () 'mp::error-check-lock) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype recursive-lock () 'mp::recursive-lock) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun lock-p (object) Err bitreich.org 70 i- (typep object 'mp::error-check-lock)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun recursive-lock-p (object) Err bitreich.org 70 i- (typep object 'mp::recursive-lock)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-lock (&optional name) Err bitreich.org 70 i- (mp:make-lock (or name "Anonymous lock") Err bitreich.org 70 i- :kind :error-check)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun acquire-lock (lock &optional (wait-p t)) Err bitreich.org 70 i- (if wait-p Err bitreich.org 70 i- (mp::lock-wait lock "Lock wait") Err bitreich.org 70 i- (mp::lock-wait-with-timeout lock "Lock wait" 0))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun release-lock (lock) Err bitreich.org 70 i- (setf (mp::lock-process lock) nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-lock-held ((place) &body body) Err bitreich.org 70 i- `(mp:with-lock-held (,place "Lock wait") ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-recursive-lock (&optional name) Err bitreich.org 70 i- (mp:make-lock (or name "Anonymous recursive lock") Err bitreich.org 70 i- :kind :recursive)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun acquire-recursive-lock (lock &optional (wait-p t)) Err bitreich.org 70 i- (acquire-lock lock)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun release-recursive-lock (lock) Err bitreich.org 70 i- (release-lock lock)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-recursive-lock-held ((place &key timeout) &body body) Err bitreich.org 70 i- `(mp:with-lock-held (,place "Lock Wait" :timeout ,timeout) ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Note that the locks _are_ recursive, but not "balanced", and only Err bitreich.org 70 i-;;; checked if they are being held by the same process by with-lock-held. Err bitreich.org 70 i-;;; The default with-lock-held in bordeaux-mp.lisp sort of works, in that Err bitreich.org 70 i-;;; it will wait for recursive locks by the same process as well. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Resource contention: condition variables Err bitreich.org 70 i- Err bitreich.org 70 i-;;; There's some stuff in x86-vm.lisp that might be worth investigating Err bitreich.org 70 i-;;; whether to build on. There's also process-wait and friends. Err bitreich.org 70 i- Err bitreich.org 70 i-(defstruct condition-var Err bitreich.org 70 i- "CMUCL doesn't have conditions, so we need to create our own type." Err bitreich.org 70 i- name Err bitreich.org 70 i- lock Err bitreich.org 70 i- active) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-condition-variable (&key name) Err bitreich.org 70 i- (make-condition-var :lock (make-lock) Err bitreich.org 70 i- :name (or name "Anonymous condition variable"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun condition-wait (condition-variable lock &key timeout) Err bitreich.org 70 i- (signal-error-if-condition-wait-timeout timeout) Err bitreich.org 70 i- (check-type condition-variable condition-var) Err bitreich.org 70 i- (with-lock-held ((condition-var-lock condition-variable)) Err bitreich.org 70 i- (setf (condition-var-active condition-variable) nil)) Err bitreich.org 70 i- (release-lock lock) Err bitreich.org 70 i- (mp:process-wait "Condition Wait" Err bitreich.org 70 i- #'(lambda () (condition-var-active condition-variable))) Err bitreich.org 70 i- (acquire-lock lock) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition-wait-compiler-macro) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun condition-notify (condition-variable) Err bitreich.org 70 i- (check-type condition-variable condition-var) Err bitreich.org 70 i- (with-lock-held ((condition-var-lock condition-variable)) Err bitreich.org 70 i- (setf (condition-var-active condition-variable) t)) Err bitreich.org 70 i- (thread-yield)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-yield () Err bitreich.org 70 i- (mp:process-yield)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Timeouts Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-timeout ((timeout) &body body) Err bitreich.org 70 i- (once-only (timeout) Err bitreich.org 70 i- `(mp:with-timeout (,timeout (error 'timeout :length ,timeout)) Err bitreich.org 70 i- ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Introspection/debugging Err bitreich.org 70 i- Err bitreich.org 70 i-(defun all-threads () Err bitreich.org 70 i- (mp:all-processes)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun interrupt-thread (thread function &rest args) Err bitreich.org 70 i- (flet ((apply-function () Err bitreich.org 70 i- (if args Err bitreich.org 70 i- (lambda () (apply function args)) Err bitreich.org 70 i- function))) Err bitreich.org 70 i- (declare (dynamic-extent #'apply-function)) Err bitreich.org 70 i- (mp:process-interrupt thread (apply-function)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun destroy-thread (thread) Err bitreich.org 70 i- (signal-error-if-current-thread thread) Err bitreich.org 70 i- (mp:destroy-process thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-alive-p (thread) Err bitreich.org 70 i- (mp:process-active-p thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun join-thread (thread) Err bitreich.org 70 i- #+#.(cl:if (cl:find-symbol (cl:string '#:process-join) :mp) '(and) '(or)) Err bitreich.org 70 i- (mp:process-join thread) Err bitreich.org 70 i- #-#.(cl:if (cl:find-symbol (cl:string '#:process-join) :mp) '(and) '(or)) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (mp:process-wait (format nil "Waiting for thread ~A to complete" thread) Err bitreich.org 70 i- (lambda () (not (mp:process-alive-p thread)))) Err bitreich.org 70 i- (let ((return-values Err bitreich.org 70 i- (getf (mp:process-property-list thread) 'return-values))) Err bitreich.org 70 i- (values-list return-values)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(mark-supported) Err bitreich.org 70 1diff --git a/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-corman.lisp b/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-corman.lisp /scm/clic/file/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-corman.lisp.gph bitreich.org 70 i@@ -1,26 +0,0 @@ Err bitreich.org 70 i-;;;; -*- indent-tabs-mode: nil -*- Err bitreich.org 70 i- Err bitreich.org 70 i-#| Err bitreich.org 70 i-Copyright 2006, 2007 Greg Pfeil Err bitreich.org 70 i- Err bitreich.org 70 i-Distributed under the MIT license (see LICENSE file) Err bitreich.org 70 i-|# Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:bordeaux-threads) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Thread Creation Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %make-thread (function name) Err bitreich.org 70 i- (declare (ignore name)) Err bitreich.org 70 i- (threads:create-thread function)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun current-thread () Err bitreich.org 70 i- threads:*current-thread*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Introspection/debugging Err bitreich.org 70 i- Err bitreich.org 70 i-(defun destroy-thread (thread) Err bitreich.org 70 i- (signal-error-if-current-thread thread) Err bitreich.org 70 i- (threads:terminate-thread thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(mark-supported) Err bitreich.org 70 1diff --git a/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-ecl.lisp b/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-ecl.lisp /scm/clic/file/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-ecl.lisp.gph bitreich.org 70 i@@ -1,111 +0,0 @@ Err bitreich.org 70 i-;;;; -*- indent-tabs-mode: nil -*- Err bitreich.org 70 i- Err bitreich.org 70 i-#| Err bitreich.org 70 i-Copyright 2006, 2007 Greg Pfeil Err bitreich.org 70 i- Err bitreich.org 70 i-Distributed under the MIT license (see LICENSE file) Err bitreich.org 70 i-|# Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:bordeaux-threads) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; documentation on the ECL Multiprocessing interface can be found at Err bitreich.org 70 i-;;; http://ecls.sourceforge.net/cgi-bin/view/Main/MultiProcessing Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype thread () Err bitreich.org 70 i- 'mp:process) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Thread Creation Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %make-thread (function name) Err bitreich.org 70 i- (mp:process-run-function name function)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun current-thread () Err bitreich.org 70 i- mp::*current-process*) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun threadp (object) Err bitreich.org 70 i- (typep object 'mp:process)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-name (thread) Err bitreich.org 70 i- (mp:process-name thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Resource contention: locks and recursive locks Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype lock () 'mp:lock) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype recursive-lock () Err bitreich.org 70 i- '(and mp:lock (satisfies mp:recursive-lock-p))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun lock-p (object) Err bitreich.org 70 i- (typep object 'mp:lock)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun recursive-lock-p (object) Err bitreich.org 70 i- (and (typep object 'mp:lock) Err bitreich.org 70 i- (mp:recursive-lock-p object))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-lock (&optional name) Err bitreich.org 70 i- (mp:make-lock :name (or name "Anonymous lock"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun acquire-lock (lock &optional (wait-p t)) Err bitreich.org 70 i- (mp:get-lock lock wait-p)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun release-lock (lock) Err bitreich.org 70 i- (mp:giveup-lock lock)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-lock-held ((place) &body body) Err bitreich.org 70 i- `(mp:with-lock (,place) ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-recursive-lock (&optional name) Err bitreich.org 70 i- (mp:make-lock :name (or name "Anonymous recursive lock") :recursive t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun acquire-recursive-lock (lock &optional (wait-p t)) Err bitreich.org 70 i- (mp:get-lock lock wait-p)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun release-recursive-lock (lock) Err bitreich.org 70 i- (mp:giveup-lock lock)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-recursive-lock-held ((place) &body body) Err bitreich.org 70 i- `(mp:with-lock (,place) ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Resource contention: condition variables Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-condition-variable (&key name) Err bitreich.org 70 i- (declare (ignore name)) Err bitreich.org 70 i- (mp:make-condition-variable)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun condition-wait (condition-variable lock &key timeout) Err bitreich.org 70 i- (if timeout Err bitreich.org 70 i- (handler-case (with-timeout (timeout) Err bitreich.org 70 i- (mp:condition-variable-wait condition-variable lock)) Err bitreich.org 70 i- (timeout () nil)) Err bitreich.org 70 i- (mp:condition-variable-wait condition-variable lock))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun condition-notify (condition-variable) Err bitreich.org 70 i- (mp:condition-variable-signal condition-variable)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-yield () Err bitreich.org 70 i- (mp:process-yield)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Introspection/debugging Err bitreich.org 70 i- Err bitreich.org 70 i-(defun all-threads () Err bitreich.org 70 i- (mp:all-processes)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun interrupt-thread (thread function &rest args) Err bitreich.org 70 i- (flet ((apply-function () Err bitreich.org 70 i- (if args Err bitreich.org 70 i- (lambda () (apply function args)) Err bitreich.org 70 i- function))) Err bitreich.org 70 i- (declare (dynamic-extent #'apply-function)) Err bitreich.org 70 i- (mp:interrupt-process thread (apply-function)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun destroy-thread (thread) Err bitreich.org 70 i- (signal-error-if-current-thread thread) Err bitreich.org 70 i- (mp:process-kill thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-alive-p (thread) Err bitreich.org 70 i- (mp:process-active-p thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun join-thread (thread) Err bitreich.org 70 i- (mp:process-join thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(mark-supported) Err bitreich.org 70 1diff --git a/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-genera.lisp b/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-genera.lisp /scm/clic/file/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-genera.lisp.gph bitreich.org 70 i@@ -1,136 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: LISP; Syntax: Ansi-Common-Lisp; Package: BORDEAUX-THREADS; Base: 10; -*- Err bitreich.org 70 i- Err bitreich.org 70 i-#| Err bitreich.org 70 i-Distributed under the MIT license (see LICENSE file) Err bitreich.org 70 i-|# Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:bordeaux-threads) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype thread () Err bitreich.org 70 i- 'process:process) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Thread Creation Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %make-thread (function name) Err bitreich.org 70 i- (process:process-run-function name function)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun current-thread () Err bitreich.org 70 i- scl:*current-process*) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun threadp (object) Err bitreich.org 70 i- (process:process-p object)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-name (thread) Err bitreich.org 70 i- (process:process-name thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Resource contention: locks and recursive locks Err bitreich.org 70 i- Err bitreich.org 70 i-(defstruct (lock (:constructor make-lock-internal)) Err bitreich.org 70 i- lock Err bitreich.org 70 i- lock-argument) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-lock (&optional name) Err bitreich.org 70 i- (let ((lock (process:make-lock (or name "Anonymous lock")))) Err bitreich.org 70 i- (make-lock-internal :lock lock Err bitreich.org 70 i- :lock-argument nil))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun acquire-lock (lock &optional (wait-p t)) Err bitreich.org 70 i- (check-type lock lock) Err bitreich.org 70 i- (setf (lock-lock-argument lock) (process:make-lock-argument (lock-lock lock))) Err bitreich.org 70 i- (if wait-p Err bitreich.org 70 i- (process:lock (lock-lock lock) (lock-lock-argument lock)) Err bitreich.org 70 i- (process:with-no-other-processes Err bitreich.org 70 i- (when (process:lock-lockable-p (lock-lock lock)) Err bitreich.org 70 i- (process:lock (lock-lock lock) (lock-lock-argument lock)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun release-lock (lock) Err bitreich.org 70 i- (check-type lock lock) Err bitreich.org 70 i- (process:unlock (lock-lock lock) (scl:shiftf (lock-lock-argument lock) nil))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-lock-held ((place) &body body) Err bitreich.org 70 i- `(process:with-lock ((lock-lock ,place)) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defstruct (recursive-lock (:constructor make-recursive-lock-internal)) Err bitreich.org 70 i- lock Err bitreich.org 70 i- lock-arguments) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-recursive-lock (&optional name) Err bitreich.org 70 i- (make-recursive-lock-internal :lock (process:make-lock (or name "Anonymous recursive lock") Err bitreich.org 70 i- :recursive t) Err bitreich.org 70 i- :lock-arguments nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun acquire-recursive-lock (lock) Err bitreich.org 70 i- (check-type lock recursive-lock) Err bitreich.org 70 i- (process:lock (recursive-lock-lock lock) Err bitreich.org 70 i- (car (push (process:make-lock-argument (recursive-lock-lock lock)) Err bitreich.org 70 i- (recursive-lock-lock-arguments lock))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun release-recursive-lock (lock) Err bitreich.org 70 i- (check-type lock recursive-lock) Err bitreich.org 70 i- (process:unlock (recursive-lock-lock lock) (pop (recursive-lock-lock-arguments lock)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-recursive-lock-held ((place) &body body) Err bitreich.org 70 i- `(process:with-lock ((recursive-lock-lock ,place)) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Resource contention: condition variables Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i-(defstruct (condition-variable (:constructor %make-condition-variable)) Err bitreich.org 70 i- name Err bitreich.org 70 i- (waiters nil)) Err bitreich.org 70 i-) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-condition-variable (&key name) Err bitreich.org 70 i- (%make-condition-variable :name name)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun condition-wait (condition-variable lock) Err bitreich.org 70 i- (check-type condition-variable condition-variable) Err bitreich.org 70 i- (check-type lock lock) Err bitreich.org 70 i- (process:with-no-other-processes Err bitreich.org 70 i- (let ((waiter (cons scl:*current-process* nil))) Err bitreich.org 70 i- (process:atomic-updatef (condition-variable-waiters condition-variable) Err bitreich.org 70 i- #'(lambda (waiters) Err bitreich.org 70 i- (append waiters (scl:ncons waiter)))) Err bitreich.org 70 i- (process:without-lock ((lock-lock lock)) Err bitreich.org 70 i- (process:process-block (format nil "Waiting~@[ on ~A~]" Err bitreich.org 70 i- (condition-variable-name condition-variable)) Err bitreich.org 70 i- #'(lambda (waiter) Err bitreich.org 70 i- (not (null (cdr waiter)))) Err bitreich.org 70 i- waiter))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun condition-notify (condition-variable) Err bitreich.org 70 i- (check-type condition-variable condition-variable) Err bitreich.org 70 i- (let ((waiter (process:atomic-pop (condition-variable-waiters condition-variable)))) Err bitreich.org 70 i- (when waiter Err bitreich.org 70 i- (setf (cdr waiter) t) Err bitreich.org 70 i- (process:wakeup (car waiter)))) Err bitreich.org 70 i- (values)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-yield () Err bitreich.org 70 i- (scl:process-allow-schedule)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Introspection/debugging Err bitreich.org 70 i- Err bitreich.org 70 i-(defun all-threads () Err bitreich.org 70 i- process:*all-processes*) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun interrupt-thread (thread function &rest args) Err bitreich.org 70 i- (declare (dynamic-extent args)) Err bitreich.org 70 i- (apply #'process:process-interrupt thread function args)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun destroy-thread (thread) Err bitreich.org 70 i- (signal-error-if-current-thread thread) Err bitreich.org 70 i- (process:process-kill thread :without-aborts :force)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-alive-p (thread) Err bitreich.org 70 i- (process:process-active-p thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun join-thread (thread) Err bitreich.org 70 i- (process:process-wait (format nil "Join ~S" thread) Err bitreich.org 70 i- #'(lambda (thread) Err bitreich.org 70 i- (not (process:process-active-p thread))) Err bitreich.org 70 i- thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(mark-supported) Err bitreich.org 70 1diff --git a/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-lispworks-condition-variables.lisp b/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-lispworks-condition-variables.lisp /scm/clic/file/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-lispworks-condition-variables.lisp.gph bitreich.org 70 i@@ -1,144 +0,0 @@ Err bitreich.org 70 i-;;;; -*- indent-tabs-mode: nil -*- Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:bordeaux-threads) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Lispworks condition support is simulated, albeit via a lightweight wrapper over Err bitreich.org 70 i-;; its own polling-based wait primitive. Waiters register with the condition variable, Err bitreich.org 70 i-;; and use MP:process-wait which queries for permission to proceed at its own (usspecified) interval. Err bitreich.org 70 i-;; http://www.lispworks.com/documentation/lw51/LWRM/html/lwref-445.htm Err bitreich.org 70 i-;; A wakeup callback (on notify) is provided to lighten this query to not have to do a hash lookup Err bitreich.org 70 i-;; on every poll (or have to serialize on the condition variable) and a mechanism is put Err bitreich.org 70 i-;; in place to unregister any waiter that exits wait for other reasons, Err bitreich.org 70 i-;; and to resend any (single) notification that may have been consumed before this (corner Err bitreich.org 70 i-;; case). Much of the complexity present is to support single notification (as recommended in Err bitreich.org 70 i-;; the spec); but a distinct condition-notify-all is provided for reference. Err bitreich.org 70 i-;; Single-notification follows a first-in first-out ordering Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; Performance: With 1000 threads waiting on one condition-variable, the steady-state hit (at least Err bitreich.org 70 i-;; as tested on a 3GHz Win32 box) is noise - hovering at 0% on Task manager. Err bitreich.org 70 i-;; While not true zero like a true native solution, the use of the Lispworks native checks appear Err bitreich.org 70 i-;; fast enough to be an equivalent substitute (thread count will cause issue before the Err bitreich.org 70 i-;; waiting overhead becomes significant) Err bitreich.org 70 i-(defstruct (condition-variable (:constructor make-lw-condition (name))) Err bitreich.org 70 i- name Err bitreich.org 70 i- (lock (mp:make-lock :name "For condition-variable") :type mp:lock :read-only t) Err bitreich.org 70 i- (wait-tlist (cons nil nil) :type cons :read-only t) Err bitreich.org 70 i- (wait-hash (make-hash-table :test 'eq) :type hash-table :read-only t) Err bitreich.org 70 i- ;; unconsumed-notifications is to track :remove-from-consideration Err bitreich.org 70 i- ;; for entries that may have exited prematurely - notification is sent through Err bitreich.org 70 i- ;; to someone else, and offender is removed from hash and list Err bitreich.org 70 i- (unconsumed-notifications (make-hash-table :test 'eq) :type hash-table :read-only t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-condition-variable (&key name) Err bitreich.org 70 i- (make-lw-condition name)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-cv-access (condition-variable &body body) Err bitreich.org 70 i- (let ((cv-sym (gensym)) Err bitreich.org 70 i- (slots '(lock wait-tlist wait-hash unconsumed-notifications))) Err bitreich.org 70 i- `(let ((,cv-sym ,condition-variable)) Err bitreich.org 70 i- (with-slots ,slots Err bitreich.org 70 i- ,cv-sym Err bitreich.org 70 i- (macrolet ((locked (&body body) `(mp:with-lock (lock) ,@body))) Err bitreich.org 70 i- (labels ((,(gensym) () ,@slots))) ; Trigger expansion of the symbol-macrolets to ignore Err bitreich.org 70 i- ,@body))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro defcvfun (function-name (condition-variable &rest args) &body body) Err bitreich.org 70 i- `(defun ,function-name (,condition-variable ,@args) Err bitreich.org 70 i- (with-cv-access ,condition-variable Err bitreich.org 70 i- ,@body))) Err bitreich.org 70 i-#+lispworks (editor:setup-indent "defcvfun" 2 2 7) ; indent defcvfun Err bitreich.org 70 i- Err bitreich.org 70 i-; utility function thath assumes process is locked on condition-variable's lock. Err bitreich.org 70 i-(defcvfun do-notify-single (condition-variable) ; assumes already locked Err bitreich.org 70 i- (let ((id (caar wait-tlist))) Err bitreich.org 70 i- (when id Err bitreich.org 70 i- (pop (car wait-tlist)) Err bitreich.org 70 i- (unless (car wait-tlist) ; check for empty Err bitreich.org 70 i- (setf (cdr wait-tlist) nil)) Err bitreich.org 70 i- (funcall (gethash id wait-hash)) ; call waiter-wakeup Err bitreich.org 70 i- (remhash id wait-hash) ; absence of entry = permission to proceed Err bitreich.org 70 i- (setf (gethash id unconsumed-notifications) t)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Added for completeness/to show how it's done in this paradigm; but Err bitreich.org 70 i-;; The symbol for this call is not exposed in the api Err bitreich.org 70 i-(defcvfun condition-notify-all (condition-variable) Err bitreich.org 70 i- (locked Err bitreich.org 70 i- (loop for waiter-wakeup being the hash-values in wait-hash do (funcall waiter-wakeup)) Err bitreich.org 70 i- (clrhash wait-hash) Err bitreich.org 70 i- (clrhash unconsumed-notifications) ; don't care as everyone just got notified Err bitreich.org 70 i- (setf (car wait-tlist) nil) Err bitreich.org 70 i- (setf (cdr wait-tlist) nil))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Currently implemented so as to notify only one waiting thread Err bitreich.org 70 i-(defcvfun condition-notify (condition-variable) Err bitreich.org 70 i- (locked (do-notify-single condition-variable))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun delete-from-tlist (tlist element) Err bitreich.org 70 i- (let ((deleter Err bitreich.org 70 i- (lambda () Err bitreich.org 70 i- (setf (car tlist) (cdar tlist)) Err bitreich.org 70 i- (unless (car tlist) Err bitreich.org 70 i- (setf (cdr tlist) nil))))) Err bitreich.org 70 i- (loop for cons in (car tlist) do Err bitreich.org 70 i- (if (eq element (car cons)) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (funcall deleter) Err bitreich.org 70 i- (return nil)) Err bitreich.org 70 i- (let ((cons cons)) Err bitreich.org 70 i- (setq deleter Err bitreich.org 70 i- (lambda () Err bitreich.org 70 i- (setf (cdr cons) (cddr cons)) Err bitreich.org 70 i- (unless (cdr cons) Err bitreich.org 70 i- (setf (cdr tlist) cons))))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun add-to-tlist-tail (tlist element) Err bitreich.org 70 i- (let ((new-link (cons element nil))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((car tlist) Err bitreich.org 70 i- (setf (cddr tlist) new-link) Err bitreich.org 70 i- (setf (cdr tlist) new-link)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (setf (car tlist) new-link) Err bitreich.org 70 i- (setf (cdr tlist) new-link))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcvfun condition-wait (condition-variable lock- &key timeout) Err bitreich.org 70 i- (signal-error-if-condition-wait-timeout timeout) Err bitreich.org 70 i- (mp:process-unlock lock-) Err bitreich.org 70 i- (unwind-protect ; for the re-taking of the lock. Guarding all of the code Err bitreich.org 70 i- (let ((wakeup-allowed-to-proceed nil) Err bitreich.org 70 i- (wakeup-lock (mp:make-lock :name "wakeup lock for condition-wait"))) Err bitreich.org 70 i- ;; wakeup-allowed-to-proceed is an optimisation to avoid having to serialize all waiters and Err bitreich.org 70 i- ;; search the hashtable. That it is locked is for safety/completeness, although Err bitreich.org 70 i- ;; as wakeup-allowed-to-proceed only transitions nil -> t, and that missing it once or twice is Err bitreich.org 70 i- ;; moot in this situation, it would be redundant even if ever a Lispworks implementation ever became Err bitreich.org 70 i- ;; non-atomic in its assigments Err bitreich.org 70 i- (let ((id (cons nil nil)) Err bitreich.org 70 i- (clean-exit nil)) Err bitreich.org 70 i- (locked Err bitreich.org 70 i- (add-to-tlist-tail wait-tlist id) Err bitreich.org 70 i- (setf (gethash id wait-hash) (lambda () (mp:with-lock (wakeup-lock) (setq wakeup-allowed-to-proceed t))))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (mp:process-wait Err bitreich.org 70 i- "Waiting for notification" Err bitreich.org 70 i- (lambda () Err bitreich.org 70 i- (when (mp:with-lock (wakeup-lock) wakeup-allowed-to-proceed) Err bitreich.org 70 i- (locked (not (gethash id wait-hash)))))) Err bitreich.org 70 i- (locked (remhash id unconsumed-notifications)) Err bitreich.org 70 i- (setq clean-exit t)) ; Notification was consumed Err bitreich.org 70 i- ;; Have to call remove-from-consideration just in case process was interrupted Err bitreich.org 70 i- ;; rather than having condition met Err bitreich.org 70 i- (unless clean-exit ; clean-exit is just an optimization Err bitreich.org 70 i- (locked Err bitreich.org 70 i- (when (gethash id wait-hash) ; not notified - must have been interrupted Err bitreich.org 70 i- ;; Have to unsubscribe Err bitreich.org 70 i- (remhash id wait-hash) Err bitreich.org 70 i- (delete-from-tlist wait-tlist id)) Err bitreich.org 70 i- ;; note - it's possible to be removed from wait-hash/wait-tlist (in notify-single); but still have an unconsumed notification! Err bitreich.org 70 i- (when (gethash id unconsumed-notifications) ; Must have exited for reasons unrelated to notification Err bitreich.org 70 i- (remhash id unconsumed-notifications) ; Have to pass on the notification to an eligible waiter Err bitreich.org 70 i- (do-notify-single condition-variable))))))) Err bitreich.org 70 i- (mp:process-lock lock-)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition-wait-compiler-macro) Err bitreich.org 70 1diff --git a/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-lispworks.lisp b/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-lispworks.lisp /scm/clic/file/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-lispworks.lisp.gph bitreich.org 70 i@@ -1,143 +0,0 @@ Err bitreich.org 70 i-;;;; -*- indent-tabs-mode: nil -*- Err bitreich.org 70 i- Err bitreich.org 70 i-#| Err bitreich.org 70 i-Copyright 2006, 2007 Greg Pfeil Err bitreich.org 70 i- Err bitreich.org 70 i-Distributed under the MIT license (see LICENSE file) Err bitreich.org 70 i-|# Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:bordeaux-threads) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; documentation on the LispWorks Multiprocessing interface can be found at Err bitreich.org 70 i-;;; http://www.lispworks.com/documentation/lw445/LWUG/html/lwuser-156.htm Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype thread () Err bitreich.org 70 i- 'mp:process) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Thread Creation Err bitreich.org 70 i- Err bitreich.org 70 i-(defun start-multiprocessing () Err bitreich.org 70 i- (mp:initialize-multiprocessing)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %make-thread (function name) Err bitreich.org 70 i- (mp:process-run-function Err bitreich.org 70 i- name nil Err bitreich.org 70 i- (lambda () Err bitreich.org 70 i- (let ((return-values Err bitreich.org 70 i- (multiple-value-list (funcall function)))) Err bitreich.org 70 i- (setf (mp:process-property 'return-values) Err bitreich.org 70 i- return-values) Err bitreich.org 70 i- (values-list return-values))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun current-thread () Err bitreich.org 70 i- #-#.(cl:if (cl:find-symbol (cl:string '#:get-current-process) :mp) '(and) '(or)) Err bitreich.org 70 i- mp:*current-process* Err bitreich.org 70 i- ;; introduced in LispWorks 5.1 Err bitreich.org 70 i- #+#.(cl:if (cl:find-symbol (cl:string '#:get-current-process) :mp) '(and) '(or)) Err bitreich.org 70 i- (mp:get-current-process)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun threadp (object) Err bitreich.org 70 i- (mp:process-p object)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-name (thread) Err bitreich.org 70 i- (mp:process-name thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Resource contention: locks and recursive locks Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype lock () 'mp:lock) Err bitreich.org 70 i- Err bitreich.org 70 i-#-(or lispworks4 lispworks5) Err bitreich.org 70 i-(deftype recursive-lock () Err bitreich.org 70 i- '(and mp:lock (satisfies mp:lock-recursive-p))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun lock-p (object) Err bitreich.org 70 i- (typep object 'mp:lock)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun recursive-lock-p (object) Err bitreich.org 70 i- #+(or lispworks4 lispworks5) Err bitreich.org 70 i- nil Err bitreich.org 70 i- #-(or lispworks4 lispworks5) ; version 6+ Err bitreich.org 70 i- (and (typep object 'mp:lock) Err bitreich.org 70 i- (mp:lock-recursive-p object))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-lock (&optional name) Err bitreich.org 70 i- (mp:make-lock :name (or name "Anonymous lock") Err bitreich.org 70 i- #-(or lispworks4 lispworks5) :recursivep Err bitreich.org 70 i- #-(or lispworks4 lispworks5) nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun acquire-lock (lock &optional (wait-p t)) Err bitreich.org 70 i- (mp:process-lock lock nil Err bitreich.org 70 i- (cond ((null wait-p) 0) Err bitreich.org 70 i- ((numberp wait-p) wait-p) Err bitreich.org 70 i- (t nil)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun release-lock (lock) Err bitreich.org 70 i- (mp:process-unlock lock)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-lock-held ((place) &body body) Err bitreich.org 70 i- `(mp:with-lock (,place) ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-recursive-lock (&optional name) Err bitreich.org 70 i- (mp:make-lock :name (or name "Anonymous recursive lock") Err bitreich.org 70 i- #-(or lispworks4 lispworks5) :recursivep Err bitreich.org 70 i- #-(or lispworks4 lispworks5) t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun acquire-recursive-lock (lock &optional (wait-p t)) Err bitreich.org 70 i- (acquire-lock lock wait-p)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun release-recursive-lock (lock) Err bitreich.org 70 i- (release-lock lock)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-recursive-lock-held ((place) &body body) Err bitreich.org 70 i- `(mp:with-lock (,place) ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Resource contention: condition variables Err bitreich.org 70 i- Err bitreich.org 70 i-#+(or lispworks6 lispworks7) Err bitreich.org 70 i-(defun make-condition-variable (&key name) Err bitreich.org 70 i- (mp:make-condition-variable :name (or name "Anonymous condition variable"))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(or lispworks6 lispworks7) Err bitreich.org 70 i-(defun condition-wait (condition-variable lock &key timeout) Err bitreich.org 70 i- (mp:condition-variable-wait condition-variable lock :timeout timeout) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(or lispworks6 lispworks7) Err bitreich.org 70 i-(defun condition-notify (condition-variable) Err bitreich.org 70 i- (mp:condition-variable-signal condition-variable)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-yield () Err bitreich.org 70 i- (mp:process-allow-scheduling)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Introspection/debugging Err bitreich.org 70 i- Err bitreich.org 70 i-(defun all-threads () Err bitreich.org 70 i- (mp:list-all-processes)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun interrupt-thread (thread function &rest args) Err bitreich.org 70 i- (apply #'mp:process-interrupt thread function args)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun destroy-thread (thread) Err bitreich.org 70 i- (signal-error-if-current-thread thread) Err bitreich.org 70 i- (mp:process-kill thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-alive-p (thread) Err bitreich.org 70 i- (mp:process-alive-p thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline %join-thread)) Err bitreich.org 70 i-(defun %join-thread (thread) Err bitreich.org 70 i- #-#.(cl:if (cl:find-symbol (cl:string '#:process-join) :mp) '(and) '(or)) Err bitreich.org 70 i- (mp:process-wait (format nil "Waiting for thread ~A to complete" thread) Err bitreich.org 70 i- (complement #'mp:process-alive-p) Err bitreich.org 70 i- thread) Err bitreich.org 70 i- #+#.(cl:if (cl:find-symbol (cl:string '#:process-join) :mp) '(and) '(or)) Err bitreich.org 70 i- (mp:process-join thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun join-thread (thread) Err bitreich.org 70 i- (%join-thread thread) Err bitreich.org 70 i- (let ((return-values Err bitreich.org 70 i- (mp:process-property 'return-values thread))) Err bitreich.org 70 i- (values-list return-values))) Err bitreich.org 70 i- Err bitreich.org 70 i-(mark-supported) Err bitreich.org 70 1diff --git a/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-mcl.lisp b/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-mcl.lisp /scm/clic/file/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-mcl.lisp.gph bitreich.org 70 i@@ -1,68 +0,0 @@ Err bitreich.org 70 i-;;;; -*- indent-tabs-mode: nil -*- Err bitreich.org 70 i- Err bitreich.org 70 i-#| Err bitreich.org 70 i-Copyright 2006, 2007 Greg Pfeil Err bitreich.org 70 i- Err bitreich.org 70 i-Distributed under the MIT license (see LICENSE file) Err bitreich.org 70 i-|# Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:bordeaux-threads) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype thread () Err bitreich.org 70 i- 'ccl::process) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Thread Creation Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %make-thread (function name) Err bitreich.org 70 i- (ccl:process-run-function name function)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun current-thread () Err bitreich.org 70 i- ccl:*current-process*) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun threadp (object) Err bitreich.org 70 i- (ccl::processp object)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-name (thread) Err bitreich.org 70 i- (ccl:process-name thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Resource contention: locks and recursive locks Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype lock () 'ccl:lock) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun lock-p (object) Err bitreich.org 70 i- (typep object 'ccl:lock)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-lock (&optional name) Err bitreich.org 70 i- (ccl:make-lock (or name "Anonymous lock"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun acquire-lock (lock &optional (wait-p t)) Err bitreich.org 70 i- (if wait-p Err bitreich.org 70 i- (ccl:process-lock lock ccl:*current-process*) Err bitreich.org 70 i- ;; this is broken, but it's better than a no-op Err bitreich.org 70 i- (ccl:without-interrupts Err bitreich.org 70 i- (when (null (ccl::lock.value lock)) Err bitreich.org 70 i- (ccl:process-lock lock ccl:*current-process*))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun release-lock (lock) Err bitreich.org 70 i- (ccl:process-unlock lock)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-lock-held ((place) &body body) Err bitreich.org 70 i- `(ccl:with-lock-grabbed (,place) ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-yield () Err bitreich.org 70 i- (ccl:process-allow-schedule)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Introspection/debugging Err bitreich.org 70 i- Err bitreich.org 70 i-(defun all-threads () Err bitreich.org 70 i- ccl:*all-processes*) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun interrupt-thread (thread function &rest args) Err bitreich.org 70 i- (declare (dynamic-extent args)) Err bitreich.org 70 i- (apply #'ccl:process-interrupt thread function args)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun destroy-thread (thread) Err bitreich.org 70 i- (signal-error-if-current-thread thread) Err bitreich.org 70 i- (ccl:process-kill thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(mark-supported) Err bitreich.org 70 1diff --git a/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-mkcl.lisp b/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-mkcl.lisp /scm/clic/file/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-mkcl.lisp.gph bitreich.org 70 i@@ -1,109 +0,0 @@ Err bitreich.org 70 i-;;;; -*- indent-tabs-mode: nil -*- Err bitreich.org 70 i- Err bitreich.org 70 i-#| Err bitreich.org 70 i-Copyright 2006, 2007 Greg Pfeil Err bitreich.org 70 i-Copyright 2010 Jean-Claude Beaudoin. Err bitreich.org 70 i- Err bitreich.org 70 i-Distributed under the MIT license (see LICENSE file) Err bitreich.org 70 i-|# Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:bordeaux-threads) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype thread () Err bitreich.org 70 i- 'mt:thread) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Thread Creation Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %make-thread (function name) Err bitreich.org 70 i- (mt:thread-run-function name function)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun current-thread () Err bitreich.org 70 i- mt::*thread*) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun threadp (object) Err bitreich.org 70 i- (typep object 'mt:thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-name (thread) Err bitreich.org 70 i- (mt:thread-name thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Resource contention: locks and recursive locks Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype lock () 'mt:lock) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype recursive-lock () Err bitreich.org 70 i- '(and mt:lock (satisfies mt:recursive-lock-p))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun lock-p (object) Err bitreich.org 70 i- (typep object 'mt:lock)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun recursive-lock-p (object) Err bitreich.org 70 i- (and (typep object 'mt:lock) Err bitreich.org 70 i- (mt:recursive-lock-p object))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-lock (&optional name) Err bitreich.org 70 i- (mt:make-lock :name (or name "Anonymous lock"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun acquire-lock (lock &optional (wait-p t)) Err bitreich.org 70 i- (mt:get-lock lock wait-p)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun release-lock (lock) Err bitreich.org 70 i- (mt:giveup-lock lock)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-lock-held ((place) &body body) Err bitreich.org 70 i- `(mt:with-lock (,place) ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-recursive-lock (&optional name) Err bitreich.org 70 i- (mt:make-lock :name (or name "Anonymous recursive lock") :recursive t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun acquire-recursive-lock (lock &optional (wait-p t)) Err bitreich.org 70 i- (mt:get-lock lock wait-p)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun release-recursive-lock (lock) Err bitreich.org 70 i- (mt:giveup-lock lock)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-recursive-lock-held ((place) &body body) Err bitreich.org 70 i- `(mt:with-lock (,place) ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Resource contention: condition variables Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-condition-variable (&key name) Err bitreich.org 70 i- (declare (ignore name)) Err bitreich.org 70 i- (mt:make-condition-variable)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun condition-wait (condition-variable lock &key timeout) Err bitreich.org 70 i- (signal-error-if-condition-wait-timeout timeout) Err bitreich.org 70 i- (mt:condition-wait condition-variable lock) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition-wait-compiler-macro) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun condition-notify (condition-variable) Err bitreich.org 70 i- (mt:condition-signal condition-variable)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-yield () Err bitreich.org 70 i- (mt:thread-yield)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Introspection/debugging Err bitreich.org 70 i- Err bitreich.org 70 i-(defun all-threads () Err bitreich.org 70 i- (mt:all-threads)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun interrupt-thread (thread function &rest args) Err bitreich.org 70 i- (flet ((apply-function () Err bitreich.org 70 i- (if args Err bitreich.org 70 i- (lambda () (apply function args)) Err bitreich.org 70 i- function))) Err bitreich.org 70 i- (declare (dynamic-extent #'apply-function)) Err bitreich.org 70 i- (mt:interrupt-thread thread (apply-function)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun destroy-thread (thread) Err bitreich.org 70 i- (signal-error-if-current-thread thread) Err bitreich.org 70 i- (mt:thread-kill thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-alive-p (thread) Err bitreich.org 70 i- (mt:thread-active-p thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun join-thread (thread) Err bitreich.org 70 i- (mt:thread-join thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(mark-supported) Err bitreich.org 70 1diff --git a/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-null.lisp b/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-null.lisp /scm/clic/file/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-null.lisp.gph bitreich.org 70 i@@ -1,3 +0,0 @@ Err bitreich.org 70 i-;;;; -*- indent-tabs-mode: nil -*- Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:bordeaux-threads) Err bitreich.org 70 1diff --git a/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-sbcl.lisp b/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-sbcl.lisp /scm/clic/file/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-sbcl.lisp.gph bitreich.org 70 i@@ -1,130 +0,0 @@ Err bitreich.org 70 i-;;;; -*- indent-tabs-mode: nil -*- Err bitreich.org 70 i- Err bitreich.org 70 i-#| Err bitreich.org 70 i-Copyright 2006, 2007 Greg Pfeil Err bitreich.org 70 i- Err bitreich.org 70 i-Distributed under the MIT license (see LICENSE file) Err bitreich.org 70 i-|# Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:bordeaux-threads) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; documentation on the SBCL Threads interface can be found at Err bitreich.org 70 i-;;; http://www.sbcl.org/manual/Threading.html Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype thread () Err bitreich.org 70 i- 'sb-thread:thread) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Thread Creation Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %make-thread (function name) Err bitreich.org 70 i- (sb-thread:make-thread function :name name)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun current-thread () Err bitreich.org 70 i- sb-thread:*current-thread*) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun threadp (object) Err bitreich.org 70 i- (typep object 'sb-thread:thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-name (thread) Err bitreich.org 70 i- (sb-thread:thread-name thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Resource contention: locks and recursive locks Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype lock () 'sb-thread:mutex) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype recursive-lock () 'sb-thread:mutex) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun lock-p (object) Err bitreich.org 70 i- (typep object 'sb-thread:mutex)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun recursive-lock-p (object) Err bitreich.org 70 i- (typep object 'sb-thread:mutex)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-lock (&optional name) Err bitreich.org 70 i- (sb-thread:make-mutex :name (or name "Anonymous lock"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun acquire-lock (lock &optional (wait-p t)) Err bitreich.org 70 i- #+#.(cl:if (cl:find-symbol (cl:string '#:grab-mutex) :sb-thread) '(and) '(or)) Err bitreich.org 70 i- (sb-thread:grab-mutex lock :waitp wait-p) Err bitreich.org 70 i- #-#.(cl:if (cl:find-symbol (cl:string '#:grab-mutex) :sb-thread) '(and) '(or)) Err bitreich.org 70 i- (sb-thread:get-mutex lock nil wait-p)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun release-lock (lock) Err bitreich.org 70 i- (sb-thread:release-mutex lock)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-lock-held ((place) &body body) Err bitreich.org 70 i- `(sb-thread:with-mutex (,place) ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-recursive-lock (&optional name) Err bitreich.org 70 i- (sb-thread:make-mutex :name (or name "Anonymous recursive lock"))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; XXX acquire-recursive-lock and release-recursive-lock are actually Err bitreich.org 70 i-;;; complicated because we can't use control stack tricks. We need to Err bitreich.org 70 i-;;; actually count something to check that the acquire/releases are Err bitreich.org 70 i-;;; balanced Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-recursive-lock-held ((place) &body body) Err bitreich.org 70 i- `(sb-thread:with-recursive-lock (,place) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Resource contention: condition variables Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-condition-variable (&key name) Err bitreich.org 70 i- (sb-thread:make-waitqueue :name (or name "Anonymous condition variable"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun condition-wait (condition-variable lock &key timeout) Err bitreich.org 70 i- (sb-thread:condition-wait condition-variable lock :timeout timeout)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun condition-notify (condition-variable) Err bitreich.org 70 i- (sb-thread:condition-notify condition-variable)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-yield () Err bitreich.org 70 i- (sb-thread:release-foreground)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Timeouts Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype timeout () Err bitreich.org 70 i- 'sb-ext:timeout) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-timeout ((timeout) &body body) Err bitreich.org 70 i- `(sb-ext:with-timeout ,timeout Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Semaphores Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype semaphore () Err bitreich.org 70 i- 'sb-thread:semaphore) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-semaphore (&key name (count 0)) Err bitreich.org 70 i- (sb-thread:make-semaphore :name name :count count)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun signal-semaphore (semaphore &key (count 1)) Err bitreich.org 70 i- (sb-thread:signal-semaphore semaphore count)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun wait-on-semaphore (semaphore &key timeout) Err bitreich.org 70 i- (sb-thread:wait-on-semaphore semaphore :timeout timeout)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Introspection/debugging Err bitreich.org 70 i- Err bitreich.org 70 i-(defun all-threads () Err bitreich.org 70 i- (sb-thread:list-all-threads)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun interrupt-thread (thread function &rest args) Err bitreich.org 70 i- (flet ((apply-function () Err bitreich.org 70 i- (if args Err bitreich.org 70 i- (lambda () (apply function args)) Err bitreich.org 70 i- function))) Err bitreich.org 70 i- (declare (dynamic-extent #'apply-function)) Err bitreich.org 70 i- (sb-thread:interrupt-thread thread (apply-function)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun destroy-thread (thread) Err bitreich.org 70 i- (signal-error-if-current-thread thread) Err bitreich.org 70 i- (sb-thread:terminate-thread thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-alive-p (thread) Err bitreich.org 70 i- (sb-thread:thread-alive-p thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun join-thread (thread) Err bitreich.org 70 i- (sb-thread:join-thread thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(mark-supported) Err bitreich.org 70 1diff --git a/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-scl.lisp b/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-scl.lisp /scm/clic/file/3rdparties/software/bordeaux-threads-v0.8.6/src/impl-scl.lisp.gph bitreich.org 70 i@@ -1,103 +0,0 @@ Err bitreich.org 70 i-;;;; -*- indent-tabs-mode: nil -*- Err bitreich.org 70 i- Err bitreich.org 70 i-#| Err bitreich.org 70 i-Copyright 2008 Scieneer Pty Ltd Err bitreich.org 70 i- Err bitreich.org 70 i-Distributed under the MIT license (see LICENSE file) Err bitreich.org 70 i-|# Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:bordeaux-threads) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype thread () Err bitreich.org 70 i- 'thread:thread) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %make-thread (function name) Err bitreich.org 70 i- (thread:thread-create function :name name)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun current-thread () Err bitreich.org 70 i- thread:*thread*) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun threadp (object) Err bitreich.org 70 i- (typep object 'thread:thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-name (thread) Err bitreich.org 70 i- (thread:thread-name thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Resource contention: locks and recursive locks Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype lock () 'thread:lock) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype recursive-lock () 'thread:recursive-lock) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun lock-p (object) Err bitreich.org 70 i- (typep object 'thread:lock)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun recursive-lock-p (object) Err bitreich.org 70 i- (typep object 'thread:recursive-lock)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-lock (&optional name) Err bitreich.org 70 i- (thread:make-lock (or name "Anonymous lock"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun acquire-lock (lock &optional (wait-p t)) Err bitreich.org 70 i- (thread::acquire-lock lock nil wait-p)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun release-lock (lock) Err bitreich.org 70 i- (thread::release-lock lock)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-lock-held ((place) &body body) Err bitreich.org 70 i- `(thread:with-lock-held (,place) ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-recursive-lock (&optional name) Err bitreich.org 70 i- (thread:make-lock (or name "Anonymous recursive lock") Err bitreich.org 70 i- :type :recursive)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; XXX acquire-recursive-lock and release-recursive-lock are actually Err bitreich.org 70 i-;;; complicated because we can't use control stack tricks. We need to Err bitreich.org 70 i-;;; actually count something to check that the acquire/releases are Err bitreich.org 70 i-;;; balanced Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-recursive-lock-held ((place) &body body) Err bitreich.org 70 i- `(thread:with-lock-held (,place) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Resource contention: condition variables Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-condition-variable (&key name) Err bitreich.org 70 i- (thread:make-cond-var (or name "Anonymous condition variable"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun condition-wait (condition-variable lock &key timeout) Err bitreich.org 70 i- (if timeout Err bitreich.org 70 i- (thread:cond-var-timedwait condition-variable lock timeout) Err bitreich.org 70 i- (thread:cond-var-wait condition-variable lock)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun condition-notify (condition-variable) Err bitreich.org 70 i- (thread:cond-var-broadcast condition-variable)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-yield () Err bitreich.org 70 i- (mp:process-yield)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Introspection/debugging Err bitreich.org 70 i- Err bitreich.org 70 i-(defun all-threads () Err bitreich.org 70 i- (mp:all-processes)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun interrupt-thread (thread function &rest args) Err bitreich.org 70 i- (flet ((apply-function () Err bitreich.org 70 i- (if args Err bitreich.org 70 i- (lambda () (apply function args)) Err bitreich.org 70 i- function))) Err bitreich.org 70 i- (declare (dynamic-extent #'apply-function)) Err bitreich.org 70 i- (thread:thread-interrupt thread (apply-function)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun destroy-thread (thread) Err bitreich.org 70 i- (thread:destroy-thread thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun thread-alive-p (thread) Err bitreich.org 70 i- (mp:process-alive-p thread)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun join-thread (thread) Err bitreich.org 70 i- (mp:process-wait (format nil "Waiting for thread ~A to complete" thread) Err bitreich.org 70 i- (lambda () (not (mp:process-alive-p thread))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(mark-supported) Err bitreich.org 70 1diff --git a/3rdparties/software/bordeaux-threads-v0.8.6/src/pkgdcl.lisp b/3rdparties/software/bordeaux-threads-v0.8.6/src/pkgdcl.lisp /scm/clic/file/3rdparties/software/bordeaux-threads-v0.8.6/src/pkgdcl.lisp.gph bitreich.org 70 i@@ -1,66 +0,0 @@ Err bitreich.org 70 i-;;;; -*- indent-tabs-mode: nil -*- Err bitreich.org 70 i- Err bitreich.org 70 i-(cl:defpackage :bordeaux-threads Err bitreich.org 70 i- (:nicknames #:bt) Err bitreich.org 70 i- (:use #:cl #:alexandria) Err bitreich.org 70 i- #+abcl Err bitreich.org 70 i- (:import-from :java #:jnew #:jcall #:jmethod) Err bitreich.org 70 i- (:export #:thread #:make-thread #:current-thread #:threadp #:thread-name Err bitreich.org 70 i- #:start-multiprocessing Err bitreich.org 70 i- #:*default-special-bindings* #:*standard-io-bindings* Err bitreich.org 70 i- #:*supports-threads-p* Err bitreich.org 70 i- Err bitreich.org 70 i- #:lock #:make-lock #:lock-p Err bitreich.org 70 i- #:acquire-lock #:release-lock #:with-lock-held Err bitreich.org 70 i- Err bitreich.org 70 i- #:recursive-lock #:make-recursive-lock #:recursive-lock-p Err bitreich.org 70 i- #:acquire-recursive-lock #:release-recursive-lock #:with-recursive-lock-held Err bitreich.org 70 i- Err bitreich.org 70 i- #:make-condition-variable #:condition-wait #:condition-notify Err bitreich.org 70 i- Err bitreich.org 70 i- #:make-semaphore #:signal-semaphore #:wait-on-semaphore #:semaphore #:semaphore-p Err bitreich.org 70 i- Err bitreich.org 70 i- #:with-timeout #:timeout Err bitreich.org 70 i- Err bitreich.org 70 i- #:all-threads #:interrupt-thread #:destroy-thread #:thread-alive-p Err bitreich.org 70 i- #:join-thread #:thread-yield) Err bitreich.org 70 i- (:documentation "BORDEAUX-THREADS is a proposed standard for a minimal Err bitreich.org 70 i- MP/threading interface. It is similar to the CLIM-SYS threading and Err bitreich.org 70 i- lock support, but for the following broad differences: Err bitreich.org 70 i- Err bitreich.org 70 i- 1) Some behaviours are defined in additional detail: attention has Err bitreich.org 70 i- been given to special variable interaction, whether and when Err bitreich.org 70 i- cleanup forms are run. Some behaviours are defined in less Err bitreich.org 70 i- detail: an implementation that does not support multiple Err bitreich.org 70 i- threads is not required to use a new list (nil) for a lock, for Err bitreich.org 70 i- example. Err bitreich.org 70 i- Err bitreich.org 70 i- 2) Many functions which would be difficult, dangerous or inefficient Err bitreich.org 70 i- to provide on some implementations have been removed. Chiefly Err bitreich.org 70 i- these are functions such as thread-wait which expect for Err bitreich.org 70 i- efficiency that the thread scheduler is written in Lisp and Err bitreich.org 70 i- 'hookable', which can't sensibly be done if the scheduler is Err bitreich.org 70 i- external to the Lisp image, or the system has more than one CPU. Err bitreich.org 70 i- Err bitreich.org 70 i- 3) Unbalanced ACQUIRE-LOCK and RELEASE-LOCK functions have been Err bitreich.org 70 i- added. Err bitreich.org 70 i- Err bitreich.org 70 i- 4) Posix-style condition variables have been added, as it's not Err bitreich.org 70 i- otherwise possible to implement them correctly using the other Err bitreich.org 70 i- operations that are specified. Err bitreich.org 70 i- Err bitreich.org 70 i- Threads may be implemented using whatever applicable techniques are Err bitreich.org 70 i- provided by the operating system: user-space scheduling, Err bitreich.org 70 i- kernel-based LWPs or anything else that does the job. Err bitreich.org 70 i- Err bitreich.org 70 i- Some parts of this specification can also be implemented in a Lisp Err bitreich.org 70 i- that does not support multiple threads. Thread creation and some Err bitreich.org 70 i- thread inspection operations will not work, but the locking Err bitreich.org 70 i- functions are still present (though they may do nothing) so that Err bitreich.org 70 i- thread-safe code can be compiled on both multithread and Err bitreich.org 70 i- single-thread implementations without need of conditionals. Err bitreich.org 70 i- Err bitreich.org 70 i- To avoid conflict with existing MP/threading interfaces in Err bitreich.org 70 i- implementations, these symbols live in the BORDEAUX-THREADS package. Err bitreich.org 70 i- Implementations and/or users may also make them visible or exported Err bitreich.org 70 i- in other more traditionally named packages.")) Err bitreich.org 70 1diff --git a/3rdparties/software/bordeaux-threads-v0.8.6/test/bordeaux-threads-test.lisp b/3rdparties/software/bordeaux-threads-v0.8.6/test/bordeaux-threads-test.lisp /scm/clic/file/3rdparties/software/bordeaux-threads-v0.8.6/test/bordeaux-threads-test.lisp.gph bitreich.org 70 i@@ -1,251 +0,0 @@ Err bitreich.org 70 i-#| Err bitreich.org 70 i-Copyright 2006,2007 Greg Pfeil Err bitreich.org 70 i- Err bitreich.org 70 i-Distributed under the MIT license (see LICENSE file) Err bitreich.org 70 i-|# Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage bordeaux-threads/test Err bitreich.org 70 i- (:use #:cl #:bordeaux-threads #:fiveam) Err bitreich.org 70 i- (:shadow #:with-timeout)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:bordeaux-threads/test) Err bitreich.org 70 i- Err bitreich.org 70 i-(def-suite :bordeaux-threads) Err bitreich.org 70 i-(def-fixture using-lock () Err bitreich.org 70 i- (let ((lock (make-lock))) Err bitreich.org 70 i- (&body))) Err bitreich.org 70 i-(in-suite :bordeaux-threads) Err bitreich.org 70 i- Err bitreich.org 70 i-(test should-have-current-thread Err bitreich.org 70 i- (is (current-thread))) Err bitreich.org 70 i- Err bitreich.org 70 i-(test current-thread-identity Err bitreich.org 70 i- (let* ((box (list nil)) Err bitreich.org 70 i- (thread (make-thread (lambda () Err bitreich.org 70 i- (setf (car box) (current-thread)))))) Err bitreich.org 70 i- (join-thread thread) Err bitreich.org 70 i- (is (eql (car box) thread)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(test join-thread-return-value Err bitreich.org 70 i- (is (eql 0 (join-thread (make-thread (lambda () 0)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(test should-identify-threads-correctly Err bitreich.org 70 i- (is (threadp (current-thread))) Err bitreich.org 70 i- (is (threadp (make-thread (lambda () t) :name "foo"))) Err bitreich.org 70 i- (is (not (threadp (make-lock))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(test should-retrieve-thread-name Err bitreich.org 70 i- (is (equal "foo" (thread-name (make-thread (lambda () t) :name "foo"))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(test interrupt-thread Err bitreich.org 70 i- (let* ((box (list nil)) Err bitreich.org 70 i- (thread (make-thread (lambda () Err bitreich.org 70 i- (setf (car box) Err bitreich.org 70 i- (catch 'new-thread Err bitreich.org 70 i- (sleep 60) Err bitreich.org 70 i- 'not-interrupted)))))) Err bitreich.org 70 i- (sleep 1) Err bitreich.org 70 i- (interrupt-thread thread (lambda () Err bitreich.org 70 i- (throw 'new-thread 'interrupted))) Err bitreich.org 70 i- (join-thread thread) Err bitreich.org 70 i- (is (eql 'interrupted (car box))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(test should-lock-without-contention Err bitreich.org 70 i- (with-fixture using-lock () Err bitreich.org 70 i- (is (acquire-lock lock t)) Err bitreich.org 70 i- (release-lock lock) Err bitreich.org 70 i- (is (acquire-lock lock nil)) Err bitreich.org 70 i- (release-lock lock))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun set-equal (set-a set-b) Err bitreich.org 70 i- (and (null (set-difference set-a set-b)) Err bitreich.org 70 i- (null (set-difference set-b set-a)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(test default-special-bindings Err bitreich.org 70 i- (locally (declare (special *a* *c*)) Err bitreich.org 70 i- (let* ((the-as 50) (the-bs 150) (*b* 42) Err bitreich.org 70 i- some-a some-b some-other-a some-other-b Err bitreich.org 70 i- (*default-special-bindings* Err bitreich.org 70 i- `((*a* . (funcall ,(lambda () (incf the-as)))) Err bitreich.org 70 i- (*b* . (funcall ,(lambda () (incf the-bs)))) Err bitreich.org 70 i- ,@*default-special-bindings*)) Err bitreich.org 70 i- (threads (list (make-thread Err bitreich.org 70 i- (lambda () Err bitreich.org 70 i- (setf some-a *a* some-b *b*))) Err bitreich.org 70 i- (make-thread Err bitreich.org 70 i- (lambda () Err bitreich.org 70 i- (setf some-other-a *a* Err bitreich.org 70 i- some-other-b *b*)))))) Err bitreich.org 70 i- (declare (special *b*)) Err bitreich.org 70 i- (thread-yield) Err bitreich.org 70 i- (is (not (boundp '*a*))) Err bitreich.org 70 i- (loop while (some #'thread-alive-p threads) Err bitreich.org 70 i- do (thread-yield)) Err bitreich.org 70 i- (is (set-equal (list some-a some-other-a) '(51 52))) Err bitreich.org 70 i- (is (set-equal (list some-b some-other-b) '(151 152))) Err bitreich.org 70 i- (is (not (boundp '*a*)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *shared* 0) Err bitreich.org 70 i-(defparameter *lock* (make-lock)) Err bitreich.org 70 i- Err bitreich.org 70 i-(test should-have-thread-interaction Err bitreich.org 70 i- ;; this simple test generates N process. Each process grabs and Err bitreich.org 70 i- ;; releases the lock until SHARED has some value, it then Err bitreich.org 70 i- ;; increments SHARED. the outer code first sets shared 1 which Err bitreich.org 70 i- ;; gets the thing running and then waits for SHARED to reach some Err bitreich.org 70 i- ;; value. this should, i think, stress test locks. Err bitreich.org 70 i- (setf *shared* 0) Err bitreich.org 70 i- (flet ((worker (i) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- do (with-lock-held (*lock*) Err bitreich.org 70 i- (when (= i *shared*) Err bitreich.org 70 i- (incf *shared*) Err bitreich.org 70 i- (return))) Err bitreich.org 70 i- (thread-yield) Err bitreich.org 70 i- (sleep 0.001)))) Err bitreich.org 70 i- (let* ((procs (loop Err bitreich.org 70 i- for i from 1 upto 2 Err bitreich.org 70 i- ;; create a new binding to protect against implementations that Err bitreich.org 70 i- ;; mutate instead of binding the loop variable Err bitreich.org 70 i- collect (let ((i i)) Err bitreich.org 70 i- (make-thread (lambda () Err bitreich.org 70 i- (funcall #'worker i)) Err bitreich.org 70 i- :name (format nil "Proc #~D" i)))))) Err bitreich.org 70 i- (with-lock-held (*lock*) Err bitreich.org 70 i- (incf *shared*)) Err bitreich.org 70 i- (block test Err bitreich.org 70 i- (loop Err bitreich.org 70 i- until (with-lock-held (*lock*) Err bitreich.org 70 i- (= (1+ (length procs)) *shared*)) Err bitreich.org 70 i- do (with-lock-held (*lock*) Err bitreich.org 70 i- (is (>= (1+ (length procs)) *shared*))) Err bitreich.org 70 i- (thread-yield) Err bitreich.org 70 i- (sleep 0.001)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *condition-variable* (make-condition-variable)) Err bitreich.org 70 i- Err bitreich.org 70 i-(test condition-variable Err bitreich.org 70 i- (setf *shared* 0) Err bitreich.org 70 i- (flet ((worker (i) Err bitreich.org 70 i- (with-lock-held (*lock*) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- until (= i *shared*) Err bitreich.org 70 i- do (condition-wait *condition-variable* *lock*)) Err bitreich.org 70 i- (incf *shared*)) Err bitreich.org 70 i- (condition-notify *condition-variable*))) Err bitreich.org 70 i- (let ((num-procs 100)) Err bitreich.org 70 i- (dotimes (i num-procs) Err bitreich.org 70 i- ;; create a new binding to protect against implementations that Err bitreich.org 70 i- ;; mutate instead of binding the loop variable Err bitreich.org 70 i- (let ((i i)) Err bitreich.org 70 i- (make-thread (lambda () Err bitreich.org 70 i- (funcall #'worker i)) Err bitreich.org 70 i- :name (format nil "Proc #~D" i)))) Err bitreich.org 70 i- (with-lock-held (*lock*) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- until (= num-procs *shared*) Err bitreich.org 70 i- do (condition-wait *condition-variable* *lock*))) Err bitreich.org 70 i- (is (equal num-procs *shared*))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Generally safe sanity check for the locks and single-notify Err bitreich.org 70 i-#+(and lispworks (not lispworks6)) Err bitreich.org 70 i-(test condition-variable-lw Err bitreich.org 70 i- (let ((condition-variable (make-condition-variable :name "Test")) Err bitreich.org 70 i- (test-lock (make-lock)) Err bitreich.org 70 i- (completed nil)) Err bitreich.org 70 i- (dotimes (id 6) Err bitreich.org 70 i- (let ((id id)) Err bitreich.org 70 i- (make-thread (lambda () Err bitreich.org 70 i- (with-lock-held (test-lock) Err bitreich.org 70 i- (condition-wait condition-variable test-lock) Err bitreich.org 70 i- (push id completed) Err bitreich.org 70 i- (condition-notify condition-variable)))))) Err bitreich.org 70 i- (sleep 2) Err bitreich.org 70 i- (if completed Err bitreich.org 70 i- (print "Failed: Premature passage through condition-wait") Err bitreich.org 70 i- (print "Successfully waited on condition")) Err bitreich.org 70 i- (condition-notify condition-variable) Err bitreich.org 70 i- (sleep 2) Err bitreich.org 70 i- (if (and completed Err bitreich.org 70 i- (eql (length completed) 6) Err bitreich.org 70 i- (equal (sort completed #'<) Err bitreich.org 70 i- (loop for id from 0 to 5 collect id))) Err bitreich.org 70 i- (print "Success: All elements notified") Err bitreich.org 70 i- (print (format nil "Failed: Of 6 expected elements, only ~A proceeded" completed))) Err bitreich.org 70 i- (bt::with-cv-access condition-variable Err bitreich.org 70 i- (if (and Err bitreich.org 70 i- (not (or (car wait-tlist) (cdr wait-tlist))) Err bitreich.org 70 i- (zerop (hash-table-count wait-hash)) Err bitreich.org 70 i- (zerop (hash-table-count unconsumed-notifications))) Err bitreich.org 70 i- (print "Success: condition variable restored to initial state") Err bitreich.org 70 i- (print "Error: condition variable retains residue from completed waiters"))) Err bitreich.org 70 i- (setq completed nil) Err bitreich.org 70 i- (dotimes (id 6) Err bitreich.org 70 i- (let ((id id)) Err bitreich.org 70 i- (make-thread (lambda () Err bitreich.org 70 i- (with-lock-held (test-lock) Err bitreich.org 70 i- (condition-wait condition-variable test-lock) Err bitreich.org 70 i- (push id completed)))))) Err bitreich.org 70 i- (sleep 2) Err bitreich.org 70 i- (condition-notify condition-variable) Err bitreich.org 70 i- (sleep 2) Err bitreich.org 70 i- (if (= (length completed) 1) Err bitreich.org 70 i- (print "Success: Notify-single only notified a single waiter to restart") Err bitreich.org 70 i- (format t "Failure: Notify-single restarted ~A items" (length completed))) Err bitreich.org 70 i- (condition-notify condition-variable) Err bitreich.org 70 i- (sleep 2) Err bitreich.org 70 i- (if (= (length completed) 2) Err bitreich.org 70 i- (print "Success: second Notify-single only notified a single waiter to restart") Err bitreich.org 70 i- (format t "Failure: Two Notify-singles restarted ~A items" (length completed))) Err bitreich.org 70 i- (loop for i from 0 to 5 do (condition-notify condition-variable)) Err bitreich.org 70 i- (print "Note: In the case of any failures, assume there are outstanding waiting threads") Err bitreich.org 70 i- (values))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(or abcl allegro clisp clozure ecl lispworks6 sbcl scl) Err bitreich.org 70 i-(test condition-wait-timeout Err bitreich.org 70 i- (let ((lock (make-lock)) Err bitreich.org 70 i- (cvar (make-condition-variable)) Err bitreich.org 70 i- (flag nil)) Err bitreich.org 70 i- (make-thread (lambda () (sleep 0.4) (setf flag t))) Err bitreich.org 70 i- (with-lock-held (lock) Err bitreich.org 70 i- (condition-wait cvar lock :timeout 0.2) Err bitreich.org 70 i- (is (null flag)) Err bitreich.org 70 i- (sleep 0.4) Err bitreich.org 70 i- (is (eq t flag))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(test semaphore-signal Err bitreich.org 70 i- (let ((sem (make-semaphore))) Err bitreich.org 70 i- (make-thread (lambda () (sleep 0.4) (signal-semaphore sem))) Err bitreich.org 70 i- (is (not (null (wait-on-semaphore sem)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(test semaphore-signal-n-of-m Err bitreich.org 70 i- (let* ((sem (make-semaphore :count 1)) Err bitreich.org 70 i- (lock (make-lock)) Err bitreich.org 70 i- (count 0) Err bitreich.org 70 i- (waiter (lambda () Err bitreich.org 70 i- (wait-on-semaphore sem) Err bitreich.org 70 i- (with-lock-held (lock) (incf count))))) Err bitreich.org 70 i- (make-thread (lambda () (sleep 0.2) (signal-semaphore sem :count 3))) Err bitreich.org 70 i- (dotimes (v 5) (make-thread waiter)) Err bitreich.org 70 i- (sleep 0.3) Err bitreich.org 70 i- (is (= count 4)) Err bitreich.org 70 i- ;; release other waiters Err bitreich.org 70 i- (signal-semaphore sem :count 10) Err bitreich.org 70 i- (sleep 0.1) Err bitreich.org 70 i- (is (= count 5)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(test semaphore-wait-timeout Err bitreich.org 70 i- (let ((sem (make-semaphore)) Err bitreich.org 70 i- (flag nil)) Err bitreich.org 70 i- (make-thread (lambda () (sleep 0.4) (setf flag t))) Err bitreich.org 70 i- (is (null (wait-on-semaphore sem :timeout 0.2))) Err bitreich.org 70 i- (is (null flag)) Err bitreich.org 70 i- (sleep 0.4) Err bitreich.org 70 i- (is (eq t flag)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(test semaphore-typed Err bitreich.org 70 i- (is (typep (bt:make-semaphore) 'bt:semaphore)) Err bitreich.org 70 i- (is (bt:semaphore-p (bt:make-semaphore))) Err bitreich.org 70 i- (is (null (bt:semaphore-p (bt:make-lock))))) Err bitreich.org 70 1diff --git a/3rdparties/software/bordeaux-threads-v0.8.6/version.sexp b/3rdparties/software/bordeaux-threads-v0.8.6/version.sexp /scm/clic/file/3rdparties/software/bordeaux-threads-v0.8.6/version.sexp.gph bitreich.org 70 i@@ -1,2 +0,0 @@ Err bitreich.org 70 i-;; -*- lisp -*- Err bitreich.org 70 i-"0.8.6" Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/.gitignore b/3rdparties/software/cffi_0.20.0/.gitignore /scm/clic/file/3rdparties/software/cffi_0.20.0/.gitignore.gph bitreich.org 70 i@@ -1,28 +0,0 @@ Err bitreich.org 70 i-*~ Err bitreich.org 70 i-*.o Err bitreich.org 70 i-*.dylib Err bitreich.org 70 i-*.dll Err bitreich.org 70 i-*.bundle Err bitreich.org 70 i-*.so Err bitreich.org 70 i-*.fasl Err bitreich.org 70 i-*.xfasl Err bitreich.org 70 i-.DS_Store Err bitreich.org 70 i-doc/*.aux Err bitreich.org 70 i-doc/manual/ Err bitreich.org 70 i-doc/spec/ Err bitreich.org 70 i-doc/*.log Err bitreich.org 70 i-doc/*.info Err bitreich.org 70 i-doc/*.aux Err bitreich.org 70 i-doc/*.cp Err bitreich.org 70 i-doc/*.fn Err bitreich.org 70 i-doc/*.fns Err bitreich.org 70 i-doc/*.ky Err bitreich.org 70 i-doc/*.pg Err bitreich.org 70 i-doc/*.toc Err bitreich.org 70 i-doc/*.tps Err bitreich.org 70 i-doc/*.tp Err bitreich.org 70 i-doc/*.vr Err bitreich.org 70 i-doc/*.dvi Err bitreich.org 70 i-doc/*.cps Err bitreich.org 70 i-doc/*.vrs Err bitreich.org 70 i-doc/dir Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/.travis.yml b/3rdparties/software/cffi_0.20.0/.travis.yml /scm/clic/file/3rdparties/software/cffi_0.20.0/.travis.yml.gph bitreich.org 70 i@@ -1,38 +0,0 @@ Err bitreich.org 70 i-branches: Err bitreich.org 70 i- only: Err bitreich.org 70 i- - master Err bitreich.org 70 i- Err bitreich.org 70 i-language: lisp Err bitreich.org 70 i- Err bitreich.org 70 i-env: Err bitreich.org 70 i- matrix: Err bitreich.org 70 i- #- LISP=abcl Err bitreich.org 70 i- #- LISP=allegro Err bitreich.org 70 i- - LISP=sbcl Err bitreich.org 70 i- - LISP=sbcl32 Err bitreich.org 70 i- - LISP=ccl Err bitreich.org 70 i- - LISP=ccl32 Err bitreich.org 70 i- #- LISP=clisp Err bitreich.org 70 i- #- LISP=clisp32 Err bitreich.org 70 i- #- LISP=cmucl Err bitreich.org 70 i- #- LISP=ecl Err bitreich.org 70 i- Err bitreich.org 70 i-matrix: Err bitreich.org 70 i- allow_failures: Err bitreich.org 70 i- - env: LISP=ccl32 Err bitreich.org 70 i- Err bitreich.org 70 i-install: Err bitreich.org 70 i- - curl -L https://github.com/luismbo/cl-travis/raw/master/install.sh | sh Err bitreich.org 70 i- - if [ "${LISP:(-2)}" = "32" ]; then Err bitreich.org 70 i- sudo apt-get install -y libc6-dev-i386 libffi-dev:i386; Err bitreich.org 70 i- fi Err bitreich.org 70 i- - git clone --depth=1 git://github.com/trivial-features/trivial-features.git ~/lisp/trivial-features Err bitreich.org 70 i- - git clone https://gitlab.common-lisp.net/alexandria/alexandria.git ~/lisp/alexandria Err bitreich.org 70 i- - git clone --depth=1 git://github.com/cl-babel/babel.git ~/lisp/babel Err bitreich.org 70 i- Err bitreich.org 70 i-script: Err bitreich.org 70 i- - cl -e '(ql:quickload :cffi-tests) Err bitreich.org 70 i- (when (cffi-tests:run-all-cffi-tests) Err bitreich.org 70 i- (uiop:quit 1))' Err bitreich.org 70 i- Err bitreich.org 70 i-sudo: required Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/COPYRIGHT b/3rdparties/software/cffi_0.20.0/COPYRIGHT /scm/clic/file/3rdparties/software/cffi_0.20.0/COPYRIGHT.gph bitreich.org 70 i@@ -1,21 +0,0 @@ Err bitreich.org 70 i-Copyright (C) 2005-2007, James Bielman Err bitreich.org 70 i- Err bitreich.org 70 i-Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-obtaining a copy of this software and associated documentation Err bitreich.org 70 i-files (the "Software"), to deal in the Software without Err bitreich.org 70 i-restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-furnished to do so, subject to the following conditions: Err bitreich.org 70 i- Err bitreich.org 70 i-The above copyright notice and this permission notice shall be Err bitreich.org 70 i-included in all copies or substantial portions of the Software. Err bitreich.org 70 i- Err bitreich.org 70 i-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-DEALINGS IN THE SOFTWARE. Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/HEADER b/3rdparties/software/cffi_0.20.0/HEADER /scm/clic/file/3rdparties/software/cffi_0.20.0/HEADER.gph bitreich.org 70 i@@ -1,28 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; filename --- description Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, James Bielman Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/Makefile b/3rdparties/software/cffi_0.20.0/Makefile /scm/clic/file/3rdparties/software/cffi_0.20.0/Makefile.gph bitreich.org 70 i@@ -1,72 +0,0 @@ Err bitreich.org 70 i-# -*- Mode: Makefile; tab-width: 3; indent-tabs-mode: t -*- Err bitreich.org 70 i-# Err bitreich.org 70 i-# Makefile --- Make targets for various tasks. Err bitreich.org 70 i-# Err bitreich.org 70 i-# Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-# Err bitreich.org 70 i-# Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-# obtaining a copy of this software and associated documentation Err bitreich.org 70 i-# files (the "Software"), to deal in the Software without Err bitreich.org 70 i-# restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-# modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-# of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-# furnished to do so, subject to the following conditions: Err bitreich.org 70 i-# Err bitreich.org 70 i-# The above copyright notice and this permission notice shall be Err bitreich.org 70 i-# included in all copies or substantial portions of the Software. Err bitreich.org 70 i-# Err bitreich.org 70 i-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-# DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-# Err bitreich.org 70 i- Err bitreich.org 70 i-# This way you can easily run the tests for different versions Err bitreich.org 70 i-# of each lisp with, e.g. ALLEGRO=/path/to/some/lisp make test-allegro Err bitreich.org 70 i-CMUCL ?= lisp Err bitreich.org 70 i-OPENMCL ?= openmcl Err bitreich.org 70 i-SBCL ?= sbcl Err bitreich.org 70 i-CLISP ?= clisp Err bitreich.org 70 i-ALLEGRO ?= alisp Err bitreich.org 70 i-SCL ?= scl Err bitreich.org 70 i-ECL ?= ecl Err bitreich.org 70 i- Err bitreich.org 70 i-shlibs: Err bitreich.org 70 i- @$(MAKE) -wC tests shlibs Err bitreich.org 70 i- Err bitreich.org 70 i-clean: Err bitreich.org 70 i- @$(MAKE) -wC tests clean Err bitreich.org 70 i- find . -name ".fasls" | xargs rm -rf Err bitreich.org 70 i- find . \( -name "*.dfsl" -o -name "*.fasl" -o -name "*.fas" -o -name "*.lib" -o -name "*.x86f" -o -name "*.amd64f" -o -name "*.sparcf" -o -name "*.sparc64f" -o -name "*.hpf" -o -name "*.hp64f" -o -name "*.ppcf" -o -name "*.nfasl" -o -name "*.ufsl" -o -name "*.fsl" -o -name "*.lx64fsl" \) -exec rm {} \; Err bitreich.org 70 i- Err bitreich.org 70 i-test-openmcl: Err bitreich.org 70 i- @-$(OPENMCL) --load tests/run-tests.lisp Err bitreich.org 70 i- Err bitreich.org 70 i-test-sbcl: Err bitreich.org 70 i- @-$(SBCL) --noinform --load tests/run-tests.lisp Err bitreich.org 70 i- Err bitreich.org 70 i-test-cmucl: Err bitreich.org 70 i- @-$(CMUCL) -load tests/run-tests.lisp Err bitreich.org 70 i- Err bitreich.org 70 i-test-scl: Err bitreich.org 70 i- @-$(SCL) -load tests/run-tests.lisp Err bitreich.org 70 i- Err bitreich.org 70 i-test-clisp: Err bitreich.org 70 i- @-$(CLISP) -q -x '(load "tests/run-tests.lisp")' Err bitreich.org 70 i- Err bitreich.org 70 i-test-clisp-modern: Err bitreich.org 70 i- @-$(CLISP) -modern -q -x '(load "tests/run-tests.lisp")' Err bitreich.org 70 i- Err bitreich.org 70 i-test-allegro: Err bitreich.org 70 i- @-$(ALLEGRO) -L tests/run-tests.lisp Err bitreich.org 70 i- Err bitreich.org 70 i-test-ecl: Err bitreich.org 70 i- @-$(ECL) --quiet --load tests/run-tests.lisp Err bitreich.org 70 i- Err bitreich.org 70 i-test: test-openmcl test-sbcl test-cmucl test-clisp test-ecl Err bitreich.org 70 i- Err bitreich.org 70 i-# vim: ft=make ts=3 noet Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/README.md b/3rdparties/software/cffi_0.20.0/README.md /scm/clic/file/3rdparties/software/cffi_0.20.0/README.md.gph bitreich.org 70 i@@ -1,19 +0,0 @@ Err bitreich.org 70 i-[![Build Status](https://travis-ci.org/cffi/cffi.svg?branch=master)](https://travis-ci.org/cffi/cffi) Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI, the Common Foreign Function Interface, purports to be a portable Err bitreich.org 70 i-foreign function interface for Common Lisp. The CFFI library is Err bitreich.org 70 i-composed of a Lisp-implementation-specific backend in the CFFI-SYS Err bitreich.org 70 i-package, and a portable frontend in the CFFI package. Err bitreich.org 70 i- Err bitreich.org 70 i-The CFFI-SYS backend package defines a low-level interface to the Err bitreich.org 70 i-native FFI support in the Lisp implementation. It offers operators for Err bitreich.org 70 i-allocating and dereferencing foreign memory, calling foreign Err bitreich.org 70 i-functions, and loading shared libraries. The CFFI frontend provides a Err bitreich.org 70 i-declarative interface for defining foreign functions, structures, Err bitreich.org 70 i-typedefs, enumerated types, etc. It is implemented in portable ANSI CL Err bitreich.org 70 i-making use of the low-level operators exported by CFFI-SYS. Err bitreich.org 70 i- Err bitreich.org 70 i-Please consult [the manual][1] for further details, including Err bitreich.org 70 i-installation instructions. Err bitreich.org 70 i- Err bitreich.org 70 i-[1]: http://common-lisp.net/project/cffi/manual/html_node/ Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/TODO b/3rdparties/software/cffi_0.20.0/TODO /scm/clic/file/3rdparties/software/cffi_0.20.0/TODO.gph bitreich.org 70 i@@ -1,115 +0,0 @@ Err bitreich.org 70 i--*- Text -*- Err bitreich.org 70 i- Err bitreich.org 70 i-This is a collection of TODO items and ideas in no particular order. Err bitreich.org 70 i- Err bitreich.org 70 i-### Testing Err bitreich.org 70 i- Err bitreich.org 70 i--> Test uffi-compat with more UFFI libraries. Err bitreich.org 70 i--> Write more FOREIGN-GLOBALS.SET.* tests. Err bitreich.org 70 i--> Finish tests/random-tester.lisp Err bitreich.org 70 i--> Write benchmarks comparing CFFI vs. native FFIs and also demonstrating Err bitreich.org 70 i- performance of each platform. Err bitreich.org 70 i--> Write more STRUCT.ALIGNMENT.* tests (namely involving the :LONG-LONG Err bitreich.org 70 i- and :UNSIGNED-LONG-LONG types) and test them in more ABIs. Err bitreich.org 70 i--> Run tests with the different kinds of shared libraries available on Err bitreich.org 70 i- MacOS X. Err bitreich.org 70 i- Err bitreich.org 70 i-### Ports Err bitreich.org 70 i- Err bitreich.org 70 i--> Finish GCL port, port to MCL. Err bitreich.org 70 i--> Update Corman port. [2007-02-22 LO] Err bitreich.org 70 i- Err bitreich.org 70 i-### Features Err bitreich.org 70 i- Err bitreich.org 70 i--> Implement a declarative interface for FOREIGN-FUNCALL-PTR, similar to Err bitreich.org 70 i- DEFCUN/FOREIGN-FUNCALL. Err bitreich.org 70 i--> Implement the proposed interfaces (see doc/). Err bitreich.org 70 i--> Extend FOREIGN-SLOT-VALUE and make it accept multiple "indices" for Err bitreich.org 70 i- directly accessing structs inside structs, arrays inside structs, etc... Err bitreich.org 70 i--> Implement EXPLAIN-FOREIGN-SLOT-VALUE. Err bitreich.org 70 i--> Implement :in/:out/:in-out for DEFCFUN (and FOREIGN-FUNCALL?). Err bitreich.org 70 i--> Add support for multiple memory allocation schemes (like CLISP), namely Err bitreich.org 70 i- support for allocating with malloc() (so that it can be freed on the C Err bitreich.org 70 i- side)> Err bitreich.org 70 i--> Extend DEFCVAR's symbol macro in order to handle memory (de)allocation Err bitreich.org 70 i- automatically (see CLISP). Err bitreich.org 70 i--> Implement byte swapping routines (see /usr/include/linux/byteorder) Err bitreich.org 70 i--> Warn about :void in places where it doesn't make sense. Err bitreich.org 70 i- Err bitreich.org 70 i-### Underspecified Semantics Err bitreich.org 70 i- Err bitreich.org 70 i--> (setf (mem-ref ptr offset) ) Err bitreich.org 70 i--> Review the interface for coherence across Lisps with regard to Err bitreich.org 70 i- behaviour in "exceptional" situations. Eg: threads, dumping cores, Err bitreich.org 70 i- accessing foreign symbols that don't exist, etc... Err bitreich.org 70 i--> On Lispworks a Lisp float is a double and therefore won't necessarily Err bitreich.org 70 i- fit in a C float. Figure out a way to handle this. Err bitreich.org 70 i--> Allegro: callbacks' return values. Err bitreich.org 70 i--> Lack of uniformity with regard to pointers. Allegro: 0 -> NULL. Err bitreich.org 70 i- CLISP/Lispworks: NIL -> NULL. Err bitreich.org 70 i--> Some lisps will accept a lisp float being passed to :double Err bitreich.org 70 i- and a lisp double to :float. We should either coerce on lisps that Err bitreich.org 70 i- don't accept this or check-type on lisps that do. Probably the former Err bitreich.org 70 i- is better since on lispworks/x86 double == float. Err bitreich.org 70 i- Err bitreich.org 70 i-### Possible Optimizations Err bitreich.org 70 i- Err bitreich.org 70 i--> More compiler macros on some of the CFFI-SYS implementations. Err bitreich.org 70 i--> Optimize UFFI-COMPAT when the vector stuff is implemented. Err bitreich.org 70 i--> Being able to declare that some C int will always fit in a Lisp Err bitreich.org 70 i- fixnum. Allegro has a :fixnum ftype and CMUCL/SBCL can use Err bitreich.org 70 i- (unsigned-byte 29) others could perhaps behave like :int? Err bitreich.org 70 i--> An option for defcfun to expand into a compiler macro which would Err bitreich.org 70 i- allow the macroexpansion-time translators to look at the forms Err bitreich.org 70 i- passed to the functions. Err bitreich.org 70 i- Err bitreich.org 70 i-### Known Issues Err bitreich.org 70 i- Err bitreich.org 70 i--> CLISP FASL portability is broken. Fix this by placing LOAD-TIME-VALUE Err bitreich.org 70 i- forms in the right places and moving other calculations to load-time. Err bitreich.org 70 i- (eg: calculating struct size/alignment.) Ideally we'd only move them Err bitreich.org 70 i- to load-time when we actually care about fasl portability. Err bitreich.org 70 i- (defmacro maybe-load-time-value (form) Err bitreich.org 70 i- (if Err bitreich.org 70 i- `(load-time-value ,form) Err bitreich.org 70 i- form)) Err bitreich.org 70 i--> cffi-tests.asd's :c-test-lib component is causing the whole testsuite Err bitreich.org 70 i- to be recompiled everytime. Figure that out. Err bitreich.org 70 i--> The (if (constantp foo) (do-something-with (eval foo)) ...) pattern Err bitreich.org 70 i- used in many places throughout the code is apparently not 100% safe. Err bitreich.org 70 i--> On ECL platforms without DFFI we need to build a non-linked version Err bitreich.org 70 i- of libtest. Err bitreich.org 70 i--> foreign-enum-keyword/value should have their own error condition? Err bitreich.org 70 i- [2007-02-22 LO] Err bitreich.org 70 i- Err bitreich.org 70 i-### Documentation Err bitreich.org 70 i- Err bitreich.org 70 i--> Fill the missing sections in the CFFI User Manual. Err bitreich.org 70 i--> Update the CFFI-SYS Specification. Err bitreich.org 70 i--> have two versions of the manual on the website Err bitreich.org 70 i- Err bitreich.org 70 i-### CFFI-Grovel Err bitreich.org 70 i- Err bitreich.org 70 i--> Look into making the C output more concise. Err bitreich.org 70 i- Err bitreich.org 70 i-### CFFI-Toolchain Err bitreich.org 70 i- Err bitreich.org 70 i--> Port the toolchain parameter detection to more implementations Err bitreich.org 70 i--> Port the static linking support to more implementations Err bitreich.org 70 i--> Add a mechanism to configure and/or detect dynamic libraries against Err bitreich.org 70 i- which to link for instance. Err bitreich.org 70 i- It could be a variable in which flags are accumulated, Err bitreich.org 70 i- or an autodetection after loading everything, see Err bitreich.org 70 i- https://github.com/borodust/cl-bodge/blob/0.3.0/distribution/build.lisp#L79 Err bitreich.org 70 i- Err bitreich.org 70 i-### CFFI/C2FFI Err bitreich.org 70 i- Err bitreich.org 70 i--> Generate wrappers for C inline function definitions (and maybe for some Err bitreich.org 70 i- #define's?) Err bitreich.org 70 i--> It would be nice if c2ffi emitted its output in a stable order Err bitreich.org 70 i- for details see https://github.com/rpav/c2ffi/issues/28 Err bitreich.org 70 i--> Handle va_list. For now it's treated as any other argument. Err bitreich.org 70 i- Err bitreich.org 70 i-### Other Err bitreich.org 70 i- Err bitreich.org 70 i--> Type-checking pointer interface. Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/cffi-examples.asd b/3rdparties/software/cffi_0.20.0/cffi-examples.asd /scm/clic/file/3rdparties/software/cffi_0.20.0/cffi-examples.asd.gph bitreich.org 70 i@@ -1,37 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; cffi-examples.asd --- ASDF system definition for CFFI examples. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(defsystem cffi-examples Err bitreich.org 70 i- :description "CFFI Examples" Err bitreich.org 70 i- :author "James Bielman " Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:module examples Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:file "examples") Err bitreich.org 70 i- (:file "gethostname") Err bitreich.org 70 i- (:file "gettimeofday")))) Err bitreich.org 70 i- :depends-on (cffi)) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/cffi-grovel.asd b/3rdparties/software/cffi_0.20.0/cffi-grovel.asd /scm/clic/file/3rdparties/software/cffi_0.20.0/cffi-grovel.asd.gph bitreich.org 70 i@@ -1,41 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; cffi-grovel.asd --- ASDF system definition for cffi-grovel. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(defsystem "cffi-grovel" Err bitreich.org 70 i- :description "The CFFI Groveller" Err bitreich.org 70 i- :author "Dan Knapp " Err bitreich.org 70 i- :depends-on ("cffi" "cffi-toolchain" "alexandria") Err bitreich.org 70 i- :licence "MIT" Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:module "grovel" Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:static-file "common.h") Err bitreich.org 70 i- (:file "package") Err bitreich.org 70 i- (:file "grovel" :depends-on ("package")) Err bitreich.org 70 i- (:file "asdf" :depends-on ("grovel")))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; vim: ft=lisp et Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/cffi-libffi.asd b/3rdparties/software/cffi_0.20.0/cffi-libffi.asd /scm/clic/file/3rdparties/software/cffi_0.20.0/cffi-libffi.asd.gph bitreich.org 70 i@@ -1,48 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; cffi-libffi.asd --- Foreign Structures By Value Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2011 Liam M. Healy Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :asdf) Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:compile-toplevel :execute) Err bitreich.org 70 i- (asdf:oos 'asdf:load-op :cffi-grovel) Err bitreich.org 70 i- (asdf:oos 'asdf:load-op :trivial-features)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defsystem cffi-libffi Err bitreich.org 70 i- :description "Foreign structures by value" Err bitreich.org 70 i- :author "Liam Healy " Err bitreich.org 70 i- :maintainer "Liam Healy " Err bitreich.org 70 i- :defsystem-depends-on (#:trivial-features #:cffi-grovel) Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:module libffi Err bitreich.org 70 i- :serial t Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:file "libffi") Err bitreich.org 70 i- (cffi-grovel:grovel-file "libffi-types") Err bitreich.org 70 i- (:file "libffi-functions") Err bitreich.org 70 i- (:file "type-descriptors") Err bitreich.org 70 i- (:file "funcall")))) Err bitreich.org 70 i- :depends-on (#:cffi #:cffi-grovel #:trivial-features)) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/cffi-tests.asd b/3rdparties/software/cffi_0.20.0/cffi-tests.asd /scm/clic/file/3rdparties/software/cffi_0.20.0/cffi-tests.asd.gph bitreich.org 70 i@@ -1,91 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; cffi-tests.asd --- ASDF system definition for CFFI unit tests. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Copyright (C) 2005-2011, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(load-systems "trivial-features" "cffi-grovel") Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass c-test-lib (c-source-file) Err bitreich.org 70 i- ()) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod perform ((o load-op) (c c-test-lib)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod perform ((o load-source-op) (c c-test-lib)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod output-files ((o compile-op) (c c-test-lib)) Err bitreich.org 70 i- (let ((p (component-pathname c))) Err bitreich.org 70 i- (values Err bitreich.org 70 i- (list (make-pathname :defaults p :type (asdf/bundle:bundle-pathname-type :object)) Err bitreich.org 70 i- (make-pathname :defaults p :type (asdf/bundle:bundle-pathname-type :shared-library))) Err bitreich.org 70 i- t))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod perform ((o compile-op) (c c-test-lib)) Err bitreich.org 70 i- (let ((cffi-toolchain:*cc-flags* `(,@cffi-toolchain:*cc-flags* "-Wall" "-std=c99" "-pedantic"))) Err bitreich.org 70 i- (destructuring-bind (obj dll) (output-files o c) Err bitreich.org 70 i- (cffi-toolchain:cc-compile obj (input-files o c)) Err bitreich.org 70 i- (cffi-toolchain:link-shared-library dll (list obj))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defsystem "cffi-tests" Err bitreich.org 70 i- :description "Unit tests for CFFI." Err bitreich.org 70 i- :depends-on ("cffi-grovel" "cffi-libffi" "bordeaux-threads" #-ecl "rt" #+ecl (:require "rt")) Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:module "tests" Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:c-test-lib "libtest") Err bitreich.org 70 i- (:c-test-lib "libtest2") Err bitreich.org 70 i- (:c-test-lib "libfsbv") Err bitreich.org 70 i- (:file "package") Err bitreich.org 70 i- (:file "bindings" :depends-on ("package" "libtest" "libtest2" "libfsbv")) Err bitreich.org 70 i- (:file "funcall" :depends-on ("bindings")) Err bitreich.org 70 i- (:file "defcfun" :depends-on ("bindings")) Err bitreich.org 70 i- (:file "callbacks" :depends-on ("bindings")) Err bitreich.org 70 i- (:file "foreign-globals" :depends-on ("package")) Err bitreich.org 70 i- (:file "memory" :depends-on ("package")) Err bitreich.org 70 i- (:file "strings" :depends-on ("package")) Err bitreich.org 70 i- (:file "arrays" :depends-on ("package")) Err bitreich.org 70 i- (:file "struct" :depends-on ("package")) Err bitreich.org 70 i- (:file "union" :depends-on ("package")) Err bitreich.org 70 i- (:file "enum" :depends-on ("package")) Err bitreich.org 70 i- (:file "fsbv" :depends-on ("bindings" "enum")) Err bitreich.org 70 i- (:file "misc-types" :depends-on ("bindings")) Err bitreich.org 70 i- (:file "misc" :depends-on ("bindings")) Err bitreich.org 70 i- (:file "test-asdf" :depends-on ("package")) Err bitreich.org 70 i- (:file "grovel" :depends-on ("package"))))) Err bitreich.org 70 i- :perform (test-op (o c) (symbol-call :cffi-tests '#:run-all-cffi-tests))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defsystem "cffi-tests/example" Err bitreich.org 70 i- :defsystem-depends-on ("cffi-grovel") Err bitreich.org 70 i- :entry-point "cffi-example::entry-point" Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:module "examples" :components Err bitreich.org 70 i- ((:file "package") Err bitreich.org 70 i- (:cffi-wrapper-file "wrapper-example" :depends-on ("package")) Err bitreich.org 70 i- (:cffi-grovel-file "grovel-example" :depends-on ("package")) Err bitreich.org 70 i- (:file "main-example" :depends-on ("package")))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; vim: ft=lisp et Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/cffi-toolchain.asd b/3rdparties/software/cffi_0.20.0/cffi-toolchain.asd /scm/clic/file/3rdparties/software/cffi_0.20.0/cffi-toolchain.asd.gph bitreich.org 70 i@@ -1,48 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; cffi-toolchain.asd --- ASDF system definition for cffi-toolchain. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-;; Make sure to upgrade ASDF before the #.(if ...) below may be read. Err bitreich.org 70 i-(load-system "asdf") Err bitreich.org 70 i-#-asdf3.1 (error "CFFI-toolchain requires ASDF 3.1!") Err bitreich.org 70 i- Err bitreich.org 70 i-(defsystem "cffi-toolchain" Err bitreich.org 70 i- :description "The CFFI toolchain" Err bitreich.org 70 i- :long-description "Portable abstractions for using the C compiler, linker, etc." Err bitreich.org 70 i- :author "Francois-Rene Rideau " Err bitreich.org 70 i- :depends-on ((:version "asdf" "3.1.2") "cffi") Err bitreich.org 70 i- :licence "MIT" Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:module "toolchain" Err bitreich.org 70 i- :components Err bitreich.org 70 i- (;; This is a plain copy of bundle.lisp from ASDF 3.2.0 Err bitreich.org 70 i- ;; in case your asdf isn't up to snuff. Err bitreich.org 70 i- (:file "bundle" :if-feature (#.(if (version< "3.2.0" (asdf-version)) :or :and))) Err bitreich.org 70 i- (:file "package") Err bitreich.org 70 i- (:file "c-toolchain" :depends-on ("package")) Err bitreich.org 70 i- (:file "static-link" :depends-on ("bundle" "c-toolchain")))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; vim: ft=lisp et Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/cffi-uffi-compat.asd b/3rdparties/software/cffi_0.20.0/cffi-uffi-compat.asd /scm/clic/file/3rdparties/software/cffi_0.20.0/cffi-uffi-compat.asd.gph bitreich.org 70 i@@ -1,41 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; cffi-uffi-compat.asd --- ASDF system definition for CFFI-UFFI-COMPAT. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:cffi-uffi-compat-system Err bitreich.org 70 i- (:use #:cl #:asdf)) Err bitreich.org 70 i-(in-package #:cffi-uffi-compat-system) Err bitreich.org 70 i- Err bitreich.org 70 i-(defsystem cffi-uffi-compat Err bitreich.org 70 i- :description "UFFI Compatibility Layer for CFFI" Err bitreich.org 70 i- :author "James Bielman " Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:module uffi-compat Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:file "uffi-compat")))) Err bitreich.org 70 i- :depends-on (cffi)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; vim: ft=lisp et Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/cffi.asd b/3rdparties/software/cffi_0.20.0/cffi.asd /scm/clic/file/3rdparties/software/cffi_0.20.0/cffi.asd.gph bitreich.org 70 i@@ -1,101 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; cffi.asd --- ASDF system definition for CFFI. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Copyright (C) 2005-2010, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :asdf) Err bitreich.org 70 i- Err bitreich.org 70 i-#-(or openmcl mcl sbcl cmucl scl clisp lispworks ecl allegro cormanlisp abcl mkcl clasp) Err bitreich.org 70 i-(error "Sorry, this Lisp is not yet supported. Patches welcome!") Err bitreich.org 70 i- Err bitreich.org 70 i-(defsystem "cffi" Err bitreich.org 70 i- :description "The Common Foreign Function Interface" Err bitreich.org 70 i- :author "James Bielman " Err bitreich.org 70 i- :maintainer "Luis Oliveira " Err bitreich.org 70 i- :licence "MIT" Err bitreich.org 70 i- :depends-on (:uiop :alexandria :trivial-features :babel) Err bitreich.org 70 i- :in-order-to ((test-op (load-op :cffi-tests))) Err bitreich.org 70 i- :perform (test-op (o c) (operate 'asdf:test-op :cffi-tests)) Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:module "src" Err bitreich.org 70 i- :serial t Err bitreich.org 70 i- :components Err bitreich.org 70 i- (#+openmcl (:file "cffi-openmcl") Err bitreich.org 70 i- #+mcl (:file "cffi-mcl") Err bitreich.org 70 i- #+sbcl (:file "cffi-sbcl") Err bitreich.org 70 i- #+cmucl (:file "cffi-cmucl") Err bitreich.org 70 i- #+scl (:file "cffi-scl") Err bitreich.org 70 i- #+clisp (:file "cffi-clisp") Err bitreich.org 70 i- #+lispworks (:file "cffi-lispworks") Err bitreich.org 70 i- #+ecl (:file "cffi-ecl") Err bitreich.org 70 i- #+allegro (:file "cffi-allegro") Err bitreich.org 70 i- #+cormanlisp (:file "cffi-corman") Err bitreich.org 70 i- #+abcl (:file "cffi-abcl") Err bitreich.org 70 i- #+mkcl (:file "cffi-mkcl") Err bitreich.org 70 i- #+clasp (:file "cffi-clasp") Err bitreich.org 70 i- (:file "package") Err bitreich.org 70 i- (:file "utils") Err bitreich.org 70 i- (:file "libraries") Err bitreich.org 70 i- (:file "early-types") Err bitreich.org 70 i- (:file "types") Err bitreich.org 70 i- (:file "enum") Err bitreich.org 70 i- (:file "strings") Err bitreich.org 70 i- (:file "structures") Err bitreich.org 70 i- (:file "functions") Err bitreich.org 70 i- (:file "foreign-vars") Err bitreich.org 70 i- (:file "features"))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; when you get CFFI from git, its defsystem doesn't have a version, Err bitreich.org 70 i-;; so we assume it satisfies any version requirements whatsoever. Err bitreich.org 70 i-(defmethod version-satisfies ((c (eql (find-system :cffi))) version) Err bitreich.org 70 i- (declare (ignorable version)) Err bitreich.org 70 i- (or (null (component-version c)) Err bitreich.org 70 i- (call-next-method))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defsystem "cffi/c2ffi" Err bitreich.org 70 i- :description "CFFI definition generator from the FFI spec generated by c2ffi. This system is enough to use the ASDF machinery (as a :defsystem-depends-on)." Err bitreich.org 70 i- :author "Attila Lendvai " Err bitreich.org 70 i- :depends-on (:alexandria Err bitreich.org 70 i- :cffi) Err bitreich.org 70 i- :licence "MIT" Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:module "src/c2ffi" Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:file "package") Err bitreich.org 70 i- (:file "c2ffi" :depends-on ("package")) Err bitreich.org 70 i- (:file "asdf" :depends-on ("package" "c2ffi")))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defsystem "cffi/c2ffi-generator" Err bitreich.org 70 i- :description "This system gets loaded lazily when the CFFI bindings need to be regenerated." Err bitreich.org 70 i- :author "Attila Lendvai " Err bitreich.org 70 i- :depends-on (:cffi/c2ffi Err bitreich.org 70 i- :cl-ppcre Err bitreich.org 70 i- :cl-json) Err bitreich.org 70 i- :licence "MIT" Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:module "src/c2ffi" Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:file "generator"))))) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/doc/Makefile b/3rdparties/software/cffi_0.20.0/doc/Makefile /scm/clic/file/3rdparties/software/cffi_0.20.0/doc/Makefile.gph bitreich.org 70 i@@ -1,46 +0,0 @@ Err bitreich.org 70 i-# -*- Mode: Makefile; tab-width: 3; indent-tabs-mode: t -*- Err bitreich.org 70 i-# Err bitreich.org 70 i-# Makefile --- Make targets for generating the documentation. Err bitreich.org 70 i-# Err bitreich.org 70 i-# Copyright (C) 2005-2007, Luis Oliveira Err bitreich.org 70 i-# Err bitreich.org 70 i-# Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-# obtaining a copy of this software and associated documentation Err bitreich.org 70 i-# files (the "Software"), to deal in the Software without Err bitreich.org 70 i-# restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-# modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-# of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-# furnished to do so, subject to the following conditions: Err bitreich.org 70 i-# Err bitreich.org 70 i-# The above copyright notice and this permission notice shall be Err bitreich.org 70 i-# included in all copies or substantial portions of the Software. Err bitreich.org 70 i-# Err bitreich.org 70 i-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-# DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-# Err bitreich.org 70 i- Err bitreich.org 70 i-export LC_ALL=C Err bitreich.org 70 i- Err bitreich.org 70 i-all: manual spec Err bitreich.org 70 i- Err bitreich.org 70 i-manual: cffi-manual.texinfo style.css Err bitreich.org 70 i- sh gendocs.sh -o manual --html "--css-include=style.css" cffi-manual "CFFI User Manual" Err bitreich.org 70 i- Err bitreich.org 70 i-spec: cffi-sys-spec.texinfo style.css Err bitreich.org 70 i- sh gendocs.sh -o spec --html "--css-include=style.css" cffi-sys-spec "CFFI-SYS Interface Specification" Err bitreich.org 70 i- Err bitreich.org 70 i-clean: Err bitreich.org 70 i- find . \( -name "*.info" -o -name "*.aux" -o -name "*.cp" -o -name "*.fn" -o -name "*.fns" -o -name "*.ky" -o -name "*.log" -o -name "*.pg" -o -name "*.toc" -o -name "*.tp" -o -name "*.vr" -o -name "*.dvi" -o -name "*.cps" -o -name "*.vrs" \) -exec rm {} \; Err bitreich.org 70 i- rm -rf manual spec dir Err bitreich.org 70 i- Err bitreich.org 70 i-upload-docs: manual spec Err bitreich.org 70 i- rsync -av --delete -e ssh manual spec common-lisp.net:/project/cffi/public_html/ Err bitreich.org 70 i-# scp -r manual spec common-lisp.net:/project/cffi/public_html/ Err bitreich.org 70 i- Err bitreich.org 70 i-# vim: ft=make ts=3 noet Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/doc/allegro-internals.txt b/3rdparties/software/cffi_0.20.0/doc/allegro-internals.txt /scm/clic/file/3rdparties/software/cffi_0.20.0/doc/allegro-internals.txt.gph bitreich.org 70 i@@ -1,132 +0,0 @@ Err bitreich.org 70 i-July 2005 Err bitreich.org 70 i-These details were kindly provided by Duane Rettig of Franz. Err bitreich.org 70 i- Err bitreich.org 70 i-Regarding the following snippet of the macro expansion of Err bitreich.org 70 i-FF:DEF-FOREIGN-CALL: Err bitreich.org 70 i- Err bitreich.org 70 i- (SYSTEM::FF-FUNCALL Err bitreich.org 70 i- (LOAD-TIME-VALUE (EXCL::DETERMINE-FOREIGN-ADDRESS Err bitreich.org 70 i- '("foo" :LANGUAGE :C) 2 NIL)) Err bitreich.org 70 i- '(:INT (INTEGER * *)) ARG1 Err bitreich.org 70 i- '(:DOUBLE (DOUBLE-FLOAT * *)) ARG2 Err bitreich.org 70 i- '(:INT (INTEGER * *))) Err bitreich.org 70 i- Err bitreich.org 70 i-" Err bitreich.org 70 i-... in Allegro CL, if you define a foreign call FOO with C entry point Err bitreich.org 70 i-"foo" and with :call-direct t in the arguments, and if other things are Err bitreich.org 70 i-satisfied, then if a lisp function BAR is compiled which has a call to Err bitreich.org 70 i-FOO, that call will not go through ff-funcall (and thus a large amount Err bitreich.org 70 i-of argument manipulation and processing) but will instead set up its Err bitreich.org 70 i-arguments directly on the stack, and will then perform the "call" more Err bitreich.org 70 i-or less directly, through the "entry vec" (a small structure which Err bitreich.org 70 i-keeps track of a foreign entry's address and status)." Err bitreich.org 70 i- Err bitreich.org 70 i-This is the code that generates what the compiler expects to see: Err bitreich.org 70 i- Err bitreich.org 70 i-(setq call-direct-form Err bitreich.org 70 i- (if* call-direct Err bitreich.org 70 i- then `(setf (get ',lispname 'sys::direct-ff-call) Err bitreich.org 70 i- (list ',external-name Err bitreich.org 70 i- ,callback Err bitreich.org 70 i- ,convention Err bitreich.org 70 i- ',returning Err bitreich.org 70 i- ',arg-types Err bitreich.org 70 i- ,arg-checking Err bitreich.org 70 i- ,entry-vec-flags)) Err bitreich.org 70 i- else `(remprop ',lispname 'sys::direct-ff-call))) Err bitreich.org 70 i- Err bitreich.org 70 i-Thus generating something like: Err bitreich.org 70 i- Err bitreich.org 70 i- (EVAL-WHEN (COMPILE LOAD EVAL) Err bitreich.org 70 i- (SETF (GET 'FOO 'SYSTEM::DIRECT-FF-CALL) Err bitreich.org 70 i- (LIST '("foo" :LANGUAGE :C) T :C Err bitreich.org 70 i- '(:INT (INTEGER * *)) Err bitreich.org 70 i- '((:INT (INTEGER * *)) Err bitreich.org 70 i- (:FLOAT (SINGLE-FLOAT * *))) Err bitreich.org 70 i- T Err bitreich.org 70 i- 2 ; this magic value is explained later Err bitreich.org 70 i- ))) Err bitreich.org 70 i- Err bitreich.org 70 i-" Err bitreich.org 70 i-(defun determine-foreign-address (name &optional (flags 0) method-index) Err bitreich.org 70 i- ;; return an entry-vec struct suitable for the foreign-call of name. Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; name is either a string, which is taken without conversion, or Err bitreich.org 70 i- ;; a list consisting of a string to convert or a conversion function Err bitreich.org 70 i- ;; call. Err bitreich.org 70 i- ;; flags is an integer representing the flags to place into the entry-vec. Err bitreich.org 70 i- ;; method-index, if non-nil, is a word-index into a vtbl (virtual table). Err bitreich.org 70 i- ;; If method-index is true, then the name must be a string uniquely Err bitreich.org 70 i- ;; represented by the index and by the flags field. Err bitreich.org 70 i- Err bitreich.org 70 i-Note that not all architectures implement the :method-index argument Err bitreich.org 70 i-to def-foreign-call, but your interface likely won't support it Err bitreich.org 70 i-anyway, so just leave it nil. As for the flags, they are constants Err bitreich.org 70 i-stored into the entry-vec returned by d-f-a and are given here: Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant ep-flag-call-semidirect 1) ; Real address stored in alt-address slot Err bitreich.org 70 i-(defconstant ep-flag-never-release 2) ; Never release the heap Err bitreich.org 70 i-(defconstant ep-flag-always-release 4) ; Always release the heap Err bitreich.org 70 i-(defconstant ep-flag-release-when-ok 8) ; Release the heap unless without-interrupts Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant ep-flag-tramp-calls #x70) ; Make calls through special trampolines Err bitreich.org 70 i-(defconstant ep-flag-tramp-shift 4) Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant ep-flag-variable-address #x100) ; Entry-point contains address of C var Err bitreich.org 70 i-(defconstant ep-flag-strings-convert #x200) ; Convert strings automatically Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant ep-flag-get-errno #x1000) ;; [rfe5060]: Get errno value after call Err bitreich.org 70 i-(defconstant ep-flag-get-last-error #x2000) ;; [rfe5060]: call GetLastError after call Err bitreich.org 70 i-;; Leave #x4000 and #x8000 open for expansion Err bitreich.org 70 i- Err bitreich.org 70 i-Mostly, you'll give the value 2 (never release the heap), but if you Err bitreich.org 70 i-give 4 or 8, then d-f-a will automatically set the 1 bit as well, Err bitreich.org 70 i-which takes the call through a heap-release/reacquire process. Err bitreich.org 70 i- Err bitreich.org 70 i-Some docs for entry-vec are: Err bitreich.org 70 i- Err bitreich.org 70 i-;; -- entry vec -- Err bitreich.org 70 i-;; An entry-vec is an entry-point descriptor, usually a pointer into Err bitreich.org 70 i-;; a shared-library. It is represented as a 5-element struct of type Err bitreich.org 70 i-;; foreign-vector. The reason for this represntation is Err bitreich.org 70 i-;; that it allows the entry point to be stored in a table, called Err bitreich.org 70 i-;; the .saved-entry-points. table, and to be used by a foreign Err bitreich.org 70 i-;; function. When the location of the foreign function to which the entry Err bitreich.org 70 i-;; point refers changes, it is simply a matter of changing the value in entry Err bitreich.org 70 i-;; point vector and the foreign call code sees it immediately. There is Err bitreich.org 70 i-;; even an address that can be put in the entry point vector that denotes Err bitreich.org 70 i-;; a missing foreign function, thus lookup can happen dynamically. Err bitreich.org 70 i- Err bitreich.org 70 i-(defstruct (entry-vec Err bitreich.org 70 i- (:type (vector excl::foreign (*))) Err bitreich.org 70 i- (:constructor make-entry-vec-boa ())) Err bitreich.org 70 i- name ; entry point name Err bitreich.org 70 i- (address 0) ; jump address for foreign code Err bitreich.org 70 i- (handle 0) ; shared-lib handle Err bitreich.org 70 i- (flags 0) ; ep-* flags Err bitreich.org 70 i- (alt-address 0) ; sometimes holds the real func addr Err bitreich.org 70 i- ) Err bitreich.org 70 i- Err bitreich.org 70 i-[...] Err bitreich.org 70 i-" Err bitreich.org 70 i- Err bitreich.org 70 i-Regarding the arguments to SYSTEM::FF-FUNCALL: Err bitreich.org 70 i- '(:int (integer * *)) argN Err bitreich.org 70 i- Err bitreich.org 70 i-"The type-spec is as it is given in the def-foreign-call Err bitreich.org 70 i-syntax, with a C type optionally followed by a lisp type, Err bitreich.org 70 i-followed optionally by a user-conversion function name[...]" Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Getting the alignment: Err bitreich.org 70 i- Err bitreich.org 70 i-CL-USER(2): (ff:get-foreign-type :int) Err bitreich.org 70 i-#S(FOREIGN-FUNCTIONS::IFOREIGN-TYPE Err bitreich.org 70 i- :ATTRIBUTES NIL Err bitreich.org 70 i- :SFTYPE Err bitreich.org 70 i- #S(FOREIGN-FUNCTIONS::SIZED-FTYPE-PRIM Err bitreich.org 70 i- :KIND :INT Err bitreich.org 70 i- :WIDTH 4 Err bitreich.org 70 i- :OFFSET 0 Err bitreich.org 70 i- :ALIGN 4) Err bitreich.org 70 i- ...) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/doc/cffi-manual.texinfo b/3rdparties/software/cffi_0.20.0/doc/cffi-manual.texinfo /scm/clic/file/3rdparties/software/cffi_0.20.0/doc/cffi-manual.texinfo.gph bitreich.org 70 i@@ -1,7113 +0,0 @@ Err bitreich.org 70 i-\input texinfo @c -*- Mode: Texinfo; Mode: auto-fill -*- Err bitreich.org 70 i-@c %**start of header Err bitreich.org 70 i-@setfilename cffi.info Err bitreich.org 70 i-@settitle CFFI User Manual Err bitreich.org 70 i-@exampleindent 2 Err bitreich.org 70 i- Err bitreich.org 70 i-@c @documentencoding utf-8 Err bitreich.org 70 i- Err bitreich.org 70 i-@c Style notes: Err bitreich.org 70 i-@c Err bitreich.org 70 i-@c * The reference section names and "See Also" list are roman, not Err bitreich.org 70 i-@c @code. This is to follow the format of CLHS. Err bitreich.org 70 i-@c Err bitreich.org 70 i-@c * How it looks in HTML is the priority. Err bitreich.org 70 i- Err bitreich.org 70 i-@c ============================= Macros ============================= Err bitreich.org 70 i-@c The following macros are used throughout this manual. Err bitreich.org 70 i- Err bitreich.org 70 i-@macro Function {args} Err bitreich.org 70 i-@defun \args\ Err bitreich.org 70 i-@end defun Err bitreich.org 70 i-@end macro Err bitreich.org 70 i- Err bitreich.org 70 i-@macro Macro {args} Err bitreich.org 70 i-@defmac \args\ Err bitreich.org 70 i-@end defmac Err bitreich.org 70 i-@end macro Err bitreich.org 70 i- Err bitreich.org 70 i-@macro Accessor {args} Err bitreich.org 70 i-@deffn {Accessor} \args\ Err bitreich.org 70 i-@end deffn Err bitreich.org 70 i-@end macro Err bitreich.org 70 i- Err bitreich.org 70 i-@macro GenericFunction {args} Err bitreich.org 70 i-@deffn {Generic Function} \args\ Err bitreich.org 70 i-@end deffn Err bitreich.org 70 i-@end macro Err bitreich.org 70 i- Err bitreich.org 70 i-@macro ForeignType {args} Err bitreich.org 70 i-@deftp {Foreign Type} \args\ Err bitreich.org 70 i-@end deftp Err bitreich.org 70 i-@end macro Err bitreich.org 70 i- Err bitreich.org 70 i-@macro Variable {args} Err bitreich.org 70 i-@defvr {Special Variable} \args\ Err bitreich.org 70 i-@end defvr Err bitreich.org 70 i-@end macro Err bitreich.org 70 i- Err bitreich.org 70 i-@macro Condition {args} Err bitreich.org 70 i-@deftp {Condition Type} \args\ Err bitreich.org 70 i-@end deftp Err bitreich.org 70 i-@end macro Err bitreich.org 70 i- Err bitreich.org 70 i-@macro cffi Err bitreich.org 70 i-@acronym{CFFI} Err bitreich.org 70 i-@end macro Err bitreich.org 70 i- Err bitreich.org 70 i-@macro impnote {text} Err bitreich.org 70 i-@quotation Err bitreich.org 70 i-@strong{Implementor's note:} @emph{\text\} Err bitreich.org 70 i-@end quotation Err bitreich.org 70 i-@end macro Err bitreich.org 70 i- Err bitreich.org 70 i-@c Info "requires" that x-refs end in a period or comma, or ) in the Err bitreich.org 70 i-@c case of @pxref. So the following implements that requirement for Err bitreich.org 70 i-@c the "See also" subheadings that permeate this manual, but only in Err bitreich.org 70 i-@c Info mode. Err bitreich.org 70 i-@ifinfo Err bitreich.org 70 i-@macro seealso {name} Err bitreich.org 70 i-@ref{\name\}. Err bitreich.org 70 i-@end macro Err bitreich.org 70 i-@end ifinfo Err bitreich.org 70 i- Err bitreich.org 70 i-@ifnotinfo Err bitreich.org 70 i-@alias seealso = ref Err bitreich.org 70 i-@end ifnotinfo Err bitreich.org 70 i- Err bitreich.org 70 i-@c Typeset comments in roman font for the TeX output. Err bitreich.org 70 i-@iftex Err bitreich.org 70 i-@alias lispcmt = r Err bitreich.org 70 i-@end iftex Err bitreich.org 70 i-@ifnottex Err bitreich.org 70 i-@alias lispcmt = asis Err bitreich.org 70 i-@end ifnottex Err bitreich.org 70 i- Err bitreich.org 70 i-@alias res = result Err bitreich.org 70 i- Err bitreich.org 70 i-@c ============================= Macros ============================= Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c Show types, functions, and concepts in the same index. Err bitreich.org 70 i-@syncodeindex tp cp Err bitreich.org 70 i-@syncodeindex fn cp Err bitreich.org 70 i- Err bitreich.org 70 i-@copying Err bitreich.org 70 i-Copyright @copyright{} 2005 James Bielman @* Err bitreich.org 70 i-Copyright @copyright{} 2005-2015 Lu@'{@dotless{i}}s Oliveira Err bitreich.org 70 i- @* Err bitreich.org 70 i-Copyright @copyright{} 2005-2006 Dan Knapp @* Err bitreich.org 70 i-Copyright @copyright{} 2005-2006 Emily Backes @* Err bitreich.org 70 i-Copyright @copyright{} 2006 Stephen Compall Err bitreich.org 70 i- Err bitreich.org 70 i-@quotation Err bitreich.org 70 i-Permission is hereby granted, free of charge, to any person obtaining Err bitreich.org 70 i-a copy of this software and associated documentation files (the Err bitreich.org 70 i-``Software''), to deal in the Software without restriction, including Err bitreich.org 70 i-without limitation the rights to use, copy, modify, merge, publish, Err bitreich.org 70 i-distribute, sublicense, and/or sell copies of the Software, and to Err bitreich.org 70 i-permit persons to whom the Software is furnished to do so, subject to Err bitreich.org 70 i-the following conditions: Err bitreich.org 70 i- Err bitreich.org 70 i-The above copyright notice and this permission notice shall be Err bitreich.org 70 i-included in all copies or substantial portions of the Software. Err bitreich.org 70 i- Err bitreich.org 70 i-@sc{The software is provided ``as is'', without warranty of any kind, Err bitreich.org 70 i-express or implied, including but not limited to the warranties of Err bitreich.org 70 i-merchantability, fitness for a particular purpose and noninfringement. Err bitreich.org 70 i-In no event shall the authors or copyright holders be liable for any Err bitreich.org 70 i-claim, damages or other liability, whether in an action of contract, Err bitreich.org 70 i-tort or otherwise, arising from, out of or in connection with the Err bitreich.org 70 i-software or the use or other dealings in the software.} Err bitreich.org 70 i-@end quotation Err bitreich.org 70 i-@end copying Err bitreich.org 70 i-@c %**end of header Err bitreich.org 70 i- Err bitreich.org 70 i-@dircategory Software development Err bitreich.org 70 i-@direntry Err bitreich.org 70 i-* CFFI Manual: (cffi-manual). CFFI Manual. Err bitreich.org 70 i-@end direntry Err bitreich.org 70 i- Err bitreich.org 70 i-@titlepage Err bitreich.org 70 i-@title CFFI User Manual Err bitreich.org 70 i-@c @subtitle Version X.X Err bitreich.org 70 i-@c @author James Bielman Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@vskip 0pt plus 1filll Err bitreich.org 70 i-@insertcopying Err bitreich.org 70 i-@end titlepage Err bitreich.org 70 i- Err bitreich.org 70 i-@contents Err bitreich.org 70 i- Err bitreich.org 70 i-@ifnottex Err bitreich.org 70 i-@node Top, Introduction, (dir), (dir) Err bitreich.org 70 i-@top cffi Err bitreich.org 70 i-@insertcopying Err bitreich.org 70 i-@end ifnottex Err bitreich.org 70 i- Err bitreich.org 70 i-@menu Err bitreich.org 70 i-* Introduction:: What is CFFI? Err bitreich.org 70 i-* Installation:: Err bitreich.org 70 i-* Implementation Support:: Err bitreich.org 70 i-* Tutorial:: Interactive intro to using CFFI. Err bitreich.org 70 i-* Wrapper generators:: CFFI forms from munging C source code. Err bitreich.org 70 i-* Foreign Types:: Err bitreich.org 70 i-* Pointers:: Err bitreich.org 70 i-* Strings:: Err bitreich.org 70 i-* Variables:: Err bitreich.org 70 i-* Functions:: Err bitreich.org 70 i-* Libraries:: Err bitreich.org 70 i-* Callbacks:: Err bitreich.org 70 i-* The Groveller:: Err bitreich.org 70 i-* Static Linking:: Err bitreich.org 70 i-* Limitations:: Err bitreich.org 70 i-* Platform-specific features:: Details about the underlying system. Err bitreich.org 70 i-* Glossary:: List of CFFI-specific terms and meanings. Err bitreich.org 70 i-* Comprehensive Index:: Err bitreich.org 70 i- Err bitreich.org 70 i-@detailmenu Err bitreich.org 70 i- --- Dictionary --- Err bitreich.org 70 i- Err bitreich.org 70 i-Foreign Types Err bitreich.org 70 i- Err bitreich.org 70 i-* convert-from-foreign:: Outside interface to backward type translator. Err bitreich.org 70 i-* convert-to-foreign:: Outside interface to forward type translator. Err bitreich.org 70 i-* defbitfield:: Defines a bitfield. Err bitreich.org 70 i-* defcstruct:: Defines a C structure type. Err bitreich.org 70 i-* defcunion:: Defines a C union type. Err bitreich.org 70 i-* defctype:: Defines a foreign typedef. Err bitreich.org 70 i-* defcenum:: Defines a C enumeration. Err bitreich.org 70 i-* define-foreign-type:: Defines a foreign type specifier. Err bitreich.org 70 i-* define-parse-method:: Specifies how a type should be parsed. Err bitreich.org 70 i-@c * explain-foreign-slot-value:: Err bitreich.org 70 i-* foreign-bitfield-symbols:: Returns a list of symbols for a bitfield type. Err bitreich.org 70 i-* foreign-bitfield-value:: Calculates a value for a bitfield type. Err bitreich.org 70 i-* foreign-enum-keyword:: Finds a keyword in an enum type. Err bitreich.org 70 i-* foreign-enum-value:: Finds a value in an enum type. Err bitreich.org 70 i-* foreign-slot-names:: Returns a list of slot names in a foreign struct. Err bitreich.org 70 i-* foreign-slot-offset:: Returns the offset of a slot in a foreign struct. Err bitreich.org 70 i-* foreign-slot-pointer:: Returns a pointer to a slot in a foreign struct. Err bitreich.org 70 i-* foreign-slot-value:: Returns the value of a slot in a foreign struct. Err bitreich.org 70 i-* foreign-type-alignment:: Returns the alignment of a foreign type. Err bitreich.org 70 i-* foreign-type-size:: Returns the size of a foreign type. Err bitreich.org 70 i-* free-converted-object:: Outside interface to typed object deallocators. Err bitreich.org 70 i-* free-translated-object:: Defines how to free a oreign object. Err bitreich.org 70 i-* translate-from-foreign:: Defines a foreign-to-Lisp object translation. Err bitreich.org 70 i-* translate-to-foreign:: Defines a Lisp-to-foreign object translation. Err bitreich.org 70 i-* with-foreign-object:: Allocates a foreign object with dynamic extent. Err bitreich.org 70 i-* with-foreign-objects:: Plural form of @code{with-foreign-object}. Err bitreich.org 70 i-* with-foreign-slots:: Accesses the slots of a foreign structure. Err bitreich.org 70 i- Err bitreich.org 70 i-Pointers Err bitreich.org 70 i- Err bitreich.org 70 i-* foreign-free:: Deallocates memory. Err bitreich.org 70 i-* foreign-alloc:: Allocates memory. Err bitreich.org 70 i-* foreign-symbol-pointer:: Returns a pointer to a foreign symbol. Err bitreich.org 70 i-* inc-pointer:: Increments the address held by a pointer. Err bitreich.org 70 i-* incf-pointer:: Increments the pointer address in a place. Err bitreich.org 70 i-* make-pointer:: Returns a pointer to a given address. Err bitreich.org 70 i-* mem-aptr:: The pointer to an element of an array. Err bitreich.org 70 i-* mem-aref:: Accesses the value of an index in an array. Err bitreich.org 70 i-* mem-ref:: Dereferences a pointer. Err bitreich.org 70 i-* null-pointer:: Returns a NULL pointer. Err bitreich.org 70 i-* null-pointer-p:: Tests a pointer for NULL value. Err bitreich.org 70 i-* pointerp:: Tests whether an object is a pointer or not. Err bitreich.org 70 i-* pointer-address:: Returns the address pointed to by a pointer. Err bitreich.org 70 i-* pointer-eq:: Tests if two pointers point to the same address. Err bitreich.org 70 i-* with-foreign-pointer:: Allocates memory with dynamic extent. Err bitreich.org 70 i- Err bitreich.org 70 i-Strings Err bitreich.org 70 i- Err bitreich.org 70 i-* *default-foreign-encoding*:: Default encoding for the string types. Err bitreich.org 70 i-* foreign-string-alloc:: Converts a Lisp string to a foreign string. Err bitreich.org 70 i-* foreign-string-free:: Deallocates memory used by a foreign string. Err bitreich.org 70 i-* foreign-string-to-lisp:: Converts a foreign string to a Lisp string. Err bitreich.org 70 i-* lisp-string-to-foreign:: Copies a Lisp string into a foreign string. Err bitreich.org 70 i-* with-foreign-string:: Allocates a foreign string with dynamic extent. Err bitreich.org 70 i-* with-foreign-strings:: Plural form of @code{with-foreign-string}. Err bitreich.org 70 i-* with-foreign-pointer-as-string:: Similar to CL's with-output-to-string. Err bitreich.org 70 i- Err bitreich.org 70 i-Variables Err bitreich.org 70 i- Err bitreich.org 70 i-* defcvar:: Defines a C global variable. Err bitreich.org 70 i-* get-var-pointer:: Returns a pointer to a defined global variable. Err bitreich.org 70 i- Err bitreich.org 70 i-Functions Err bitreich.org 70 i- Err bitreich.org 70 i-* defcfun:: Defines a foreign function. Err bitreich.org 70 i-* foreign-funcall:: Performs a call to a foreign function. Err bitreich.org 70 i-* foreign-funcall-pointer:: Performs a call through a foreign pointer. Err bitreich.org 70 i-* translate-camelcase-name:: Converts a camelCase foreign name to/from a Lisp name. Err bitreich.org 70 i-* translate-name-from-foreign:: Converts a foreign name to a Lisp name. Err bitreich.org 70 i-* translate-name-to-foreign:: Converts a Lisp name to a foreign name. Err bitreich.org 70 i-* translate-underscore-separated-name:: Converts an underscore_separated foreign name to/from a Lisp name. Err bitreich.org 70 i- Err bitreich.org 70 i-Libraries Err bitreich.org 70 i- Err bitreich.org 70 i-* close-foreign-library:: Closes a foreign library. Err bitreich.org 70 i-* *darwin-framework-directories*:: Search path for Darwin frameworks. Err bitreich.org 70 i-* define-foreign-library:: Explain how to load a foreign library. Err bitreich.org 70 i-* *foreign-library-directories*:: Search path for shared libraries. Err bitreich.org 70 i-* load-foreign-library:: Load a foreign library. Err bitreich.org 70 i-* load-foreign-library-error:: Signalled on failure of its namesake. Err bitreich.org 70 i-@c * reload-foreign-libraries:: Reload foreign libraries. Err bitreich.org 70 i-* use-foreign-library:: Load a foreign library when needed. Err bitreich.org 70 i- Err bitreich.org 70 i-Callbacks Err bitreich.org 70 i- Err bitreich.org 70 i-* callback:: Returns a pointer to a defined callback. Err bitreich.org 70 i-* defcallback:: Defines a Lisp callback. Err bitreich.org 70 i-* get-callback:: Returns a pointer to a defined callback. Err bitreich.org 70 i- Err bitreich.org 70 i-@end detailmenu Err bitreich.org 70 i-@end menu Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c CHAPTER: Introduction Err bitreich.org 70 i- Err bitreich.org 70 i-@node Introduction, Installation, Top, Top Err bitreich.org 70 i-@chapter Introduction Err bitreich.org 70 i- Err bitreich.org 70 i-@cffi{} is the Common Foreign Function Interface for @acronym{ANSI} Err bitreich.org 70 i-Common Lisp systems. By @dfn{foreign function} we mean a function Err bitreich.org 70 i-written in another programming language and having different data and Err bitreich.org 70 i-calling conventions than Common Lisp, namely, C. @cffi{} allows you Err bitreich.org 70 i-to call foreign functions and access foreign variables, all without Err bitreich.org 70 i-leaving the Lisp image. Err bitreich.org 70 i- Err bitreich.org 70 i-We consider this manual ever a work in progress. If you have Err bitreich.org 70 i-difficulty with anything @cffi{}-specific presented in the manual, Err bitreich.org 70 i-please contact @email{cffi-devel@@common-lisp.net,the developers} with Err bitreich.org 70 i-details. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@heading Motivation Err bitreich.org 70 i- Err bitreich.org 70 i-@xref{Tutorial-Comparison,, What makes Lisp different}, for Err bitreich.org 70 i-an argument in favor of @acronym{FFI} in general. Err bitreich.org 70 i- Err bitreich.org 70 i-@cffi{}'s primary role in any image is to mediate between Lisp Err bitreich.org 70 i-developers and the widely varying @acronym{FFI}s present in the Err bitreich.org 70 i-various Lisp implementations it supports. With @cffi{}, you can Err bitreich.org 70 i-define foreign function interfaces while still maintaining portability Err bitreich.org 70 i-between implementations. It is not the first Common Lisp package with Err bitreich.org 70 i-this objective; however, it is meant to be a more malleable framework Err bitreich.org 70 i-than similar packages. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@heading Design Philosophy Err bitreich.org 70 i- Err bitreich.org 70 i-@itemize Err bitreich.org 70 i-@item Err bitreich.org 70 i-Pointers do not carry around type information. Instead, type Err bitreich.org 70 i-information is supplied when pointers are dereferenced. Err bitreich.org 70 i- Err bitreich.org 70 i-@item Err bitreich.org 70 i-A type safe pointer interface can be developed on top of an Err bitreich.org 70 i-untyped one. It is difficult to do the opposite. Err bitreich.org 70 i- Err bitreich.org 70 i-@item Err bitreich.org 70 i-Functions are better than macros. When a macro could be used Err bitreich.org 70 i-for performance, use a compiler-macro instead. Err bitreich.org 70 i-@end itemize Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c CHAPTER: Installation Err bitreich.org 70 i- Err bitreich.org 70 i-@node Installation, Implementation Support, Introduction, Top Err bitreich.org 70 i-@chapter Installation Err bitreich.org 70 i- Err bitreich.org 70 i-@cffi{} can be obtained through one of the following means available Err bitreich.org 70 i-through its @uref{http://common-lisp.net/project/cffi/,,website}: Err bitreich.org 70 i- Err bitreich.org 70 i-@itemize Err bitreich.org 70 i-@item Err bitreich.org 70 i-@uref{http://common-lisp.net/project/cffi/releases/?M=D,,official release Err bitreich.org 70 i-tarballs} Err bitreich.org 70 i- Err bitreich.org 70 i-@item Err bitreich.org 70 i-@uref{http://common-lisp.net/gitweb?p=projects/cffi/cffi.git,,git Err bitreich.org 70 i-repository} Err bitreich.org 70 i- Err bitreich.org 70 i-@c snapshots have been disabled as of Err bitreich.org 70 i-@c @item Err bitreich.org 70 i-@c @uref{http://common-lisp.net/project/cffi/tarballs/?M=D,,nightly-generated Err bitreich.org 70 i-@c snapshots} Err bitreich.org 70 i- Err bitreich.org 70 i-@end itemize Err bitreich.org 70 i- Err bitreich.org 70 i-In addition, you will need to obtain and install the following Err bitreich.org 70 i-dependencies: Err bitreich.org 70 i- Err bitreich.org 70 i-@itemize Err bitreich.org 70 i-@item Err bitreich.org 70 i-@uref{http://common-lisp.net/project/babel/,,Babel}, a charset Err bitreich.org 70 i-encoding/decoding library. Err bitreich.org 70 i- Err bitreich.org 70 i-@item Err bitreich.org 70 i-@uref{http://common-lisp.net/project/alexandria/,,Alexandria}, a Err bitreich.org 70 i-collection of portable public-domain utilities. Err bitreich.org 70 i- Err bitreich.org 70 i-@item Err bitreich.org 70 i-@uref{http://www.cliki.net/trivial-features,,trivial-features}, a Err bitreich.org 70 i-portability layer that ensures consistent @code{*features*} across Err bitreich.org 70 i-multiple Common Lisp implementations. Err bitreich.org 70 i- Err bitreich.org 70 i-@end itemize Err bitreich.org 70 i- Err bitreich.org 70 i-Furthermore, if you wish to run the testsuite, Err bitreich.org 70 i-@uref{http://www.cliki.net/rt,,RT} is required. Err bitreich.org 70 i- Err bitreich.org 70 i-You may find mechanisms such as Err bitreich.org 70 i-@uref{https://www.quicklisp.org/beta/,Quicklisp} (recommended) Err bitreich.org 70 i-or @uref{http://common-lisp.net/project/clbuild/,,clbuild} (for advanced Err bitreich.org 70 i-uses) helpful in getting and managing @cffi{} and its Err bitreich.org 70 i-dependencies. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c CHAPTER: Implementation Support Err bitreich.org 70 i- Err bitreich.org 70 i-@node Implementation Support, Tutorial, Installation, Top Err bitreich.org 70 i-@chapter Implementation Support Err bitreich.org 70 i- Err bitreich.org 70 i-@cffi{} supports various free and commercial Lisp implementations: Err bitreich.org 70 i-@acronym{ABCL}, Allegro CL, Clasp, @sc{clisp}, Clozure CL, Err bitreich.org 70 i-@acronym{CMUCL}, Corman CL, @acronym{ECL}, @acronym{GCL}, LispWorks, Err bitreich.org 70 i-@acronym{MCL}, @acronym{SBCL} and the Scieneer CL. Err bitreich.org 70 i- Err bitreich.org 70 i-In general, you should work with the latest versions of each Err bitreich.org 70 i-implementation since those will usually be tested against recent Err bitreich.org 70 i-versions of CFFI more often and might include necessary features or Err bitreich.org 70 i-bug fixes. Reasonable patches for compatibility with earlier versions Err bitreich.org 70 i-are welcome nevertheless. Err bitreich.org 70 i- Err bitreich.org 70 i-@section Limitations Err bitreich.org 70 i- Err bitreich.org 70 i-Some features are not supported in all implementations. Err bitreich.org 70 i-@c TODO: describe these features here. Err bitreich.org 70 i-@c flat-namespace too Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Allegro CL Err bitreich.org 70 i- Err bitreich.org 70 i-@itemize Err bitreich.org 70 i-@item Err bitreich.org 70 i-Does not support the @code{:long-long} type natively. Err bitreich.org 70 i-@item Err bitreich.org 70 i-Unicode support is limited to the Basic Multilingual Plane (16-bit Err bitreich.org 70 i-code points). Err bitreich.org 70 i-@end itemize Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Clasp Err bitreich.org 70 i- Err bitreich.org 70 i-@itemize Err bitreich.org 70 i-@item Err bitreich.org 70 i-Only supports a flat namespace. Err bitreich.org 70 i-@end itemize Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading CMUCL Err bitreich.org 70 i- Err bitreich.org 70 i-@itemize Err bitreich.org 70 i-@item Err bitreich.org 70 i-No Unicode support. (8-bit code points) Err bitreich.org 70 i-@end itemize Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Corman CL Err bitreich.org 70 i- Err bitreich.org 70 i-@itemize Err bitreich.org 70 i-@item Err bitreich.org 70 i-Does not support @code{foreign-funcall}. Err bitreich.org 70 i-@end itemize Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading @acronym{ECL} Err bitreich.org 70 i- Err bitreich.org 70 i-@itemize Err bitreich.org 70 i-@item Err bitreich.org 70 i-On platforms where ECL's dynamic FFI is not supported (ie. when Err bitreich.org 70 i-@code{:dffi} is not present in @code{*features*}), Err bitreich.org 70 i-@code{cffi:load-foreign-library} does not work and you must use ECL's Err bitreich.org 70 i-own @code{ffi:load-foreign-library} with a constant string argument. Err bitreich.org 70 i-@end itemize Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Lispworks Err bitreich.org 70 i- Err bitreich.org 70 i-@itemize Err bitreich.org 70 i-@item Err bitreich.org 70 i-Does not completely support the @code{:long-long} type natively in Err bitreich.org 70 i-32-bit platforms. Err bitreich.org 70 i-@item Err bitreich.org 70 i-Unicode support is limited to the Basic Multilingual Plane (16-bit Err bitreich.org 70 i-code points). Err bitreich.org 70 i-@end itemize Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading @acronym{SBCL} Err bitreich.org 70 i- Err bitreich.org 70 i-@itemize Err bitreich.org 70 i-@item Err bitreich.org 70 i-Not all platforms support callbacks. Err bitreich.org 70 i- Err bitreich.org 70 i-@end itemize Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c CHAPTER: An Introduction to Foreign Interfaces and CFFI Err bitreich.org 70 i- Err bitreich.org 70 i-@c This macro is merely a marker that I don't think I'll use after Err bitreich.org 70 i-@c all. Err bitreich.org 70 i-@macro tutorialsource {text} Err bitreich.org 70 i-@c \text\ Err bitreich.org 70 i-@end macro Err bitreich.org 70 i- Err bitreich.org 70 i-@c because I don't want to type this over and over Err bitreich.org 70 i-@macro clikicffi Err bitreich.org 70 i-http://www.cliki.net/CFFI Err bitreich.org 70 i-@end macro Err bitreich.org 70 i-@c TeX puts spurious newlines in when you use the above macro Err bitreich.org 70 i-@c in @examples &c. So it is expanded below in some places. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@node Tutorial, Wrapper generators, Implementation Support, Top Err bitreich.org 70 i-@chapter An Introduction to Foreign Interfaces and @acronym{CFFI} Err bitreich.org 70 i- Err bitreich.org 70 i-@c Above, I don't use the cffi macro because it breaks TeX. Err bitreich.org 70 i- Err bitreich.org 70 i-@cindex tutorial, @cffi{} Err bitreich.org 70 i-Users of many popular languages bearing semantic similarity to Lisp, Err bitreich.org 70 i-such as Perl and Python, are accustomed to having access to popular C Err bitreich.org 70 i-libraries, such as @acronym{GTK}, by way of ``bindings''. In Lisp, we Err bitreich.org 70 i-do something similar, but take a fundamentally different approach. Err bitreich.org 70 i-This tutorial first explains this difference, then explains how you Err bitreich.org 70 i-can use @cffi{}, a powerful system for calling out to C and C++ and Err bitreich.org 70 i-access C data from many Common Lisp implementations. Err bitreich.org 70 i- Err bitreich.org 70 i-@cindex foreign functions and data Err bitreich.org 70 i-The concept can be generalized to other languages; at the time of Err bitreich.org 70 i-writing, only @cffi{}'s C support is fairly complete. Therefore, we Err bitreich.org 70 i-will interchangeably refer to @dfn{foreign functions} and @dfn{foreign Err bitreich.org 70 i-data}, and ``C functions'' and ``C data''. At no time will the word Err bitreich.org 70 i-``foreign'' carry its usual, non-programming meaning. Err bitreich.org 70 i- Err bitreich.org 70 i-This tutorial expects you to have a working understanding of both Err bitreich.org 70 i-Common Lisp and C, including the Common Lisp macro system. Err bitreich.org 70 i- Err bitreich.org 70 i-@menu Err bitreich.org 70 i-* Tutorial-Comparison:: Why FFI? Err bitreich.org 70 i-* Tutorial-Getting a URL:: An FFI use case. Err bitreich.org 70 i-* Tutorial-Loading:: Load libcurl.so. Err bitreich.org 70 i-* Tutorial-Initializing:: Call a function in libcurl.so. Err bitreich.org 70 i-* Tutorial-easy_setopt:: An advanced libcurl function. Err bitreich.org 70 i-* Tutorial-Abstraction:: Why breaking it is necessary. Err bitreich.org 70 i-* Tutorial-Lisp easy_setopt:: Semi-Lispy option interface. Err bitreich.org 70 i-* Tutorial-Memory:: In C, you collect the garbage. Err bitreich.org 70 i-* Tutorial-Callbacks:: Make useful C function pointers. Err bitreich.org 70 i-* Tutorial-Completion:: Minimal get-url functionality. Err bitreich.org 70 i-* Tutorial-Types:: Defining new foreign types. Err bitreich.org 70 i-* Tutorial-Conclusion:: What's next? Err bitreich.org 70 i-@end menu Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@node Tutorial-Comparison, Tutorial-Getting a URL, Tutorial, Tutorial Err bitreich.org 70 i-@section What makes Lisp different Err bitreich.org 70 i- Err bitreich.org 70 i-The following sums up how bindings to foreign libraries are usually Err bitreich.org 70 i-implemented in other languages, then in Common Lisp: Err bitreich.org 70 i- Err bitreich.org 70 i-@table @asis Err bitreich.org 70 i-@item Perl, Python, Java, other one-implementation languages Err bitreich.org 70 i-@cindex @acronym{SWIG} Err bitreich.org 70 i-@cindex Perl Err bitreich.org 70 i-@cindex Python Err bitreich.org 70 i-Bindings are implemented as shared objects written in C. In some Err bitreich.org 70 i-cases, the C code is generated by a tool, such as @acronym{SWIG}, but Err bitreich.org 70 i-the result is the same: a new C library that manually translates Err bitreich.org 70 i-between the language implementation's objects, such as @code{PyObject} Err bitreich.org 70 i-in Python, and whatever C object is called for, often using C Err bitreich.org 70 i-functions provided by the implementation. It also translates between Err bitreich.org 70 i-the calling conventions of the language and C. Err bitreich.org 70 i- Err bitreich.org 70 i-@item Common Lisp Err bitreich.org 70 i-@cindex @acronym{SLIME} Err bitreich.org 70 i-Bindings are written in Lisp. They can be created at-will by Lisp Err bitreich.org 70 i-programs. Lisp programmers can write new bindings and add them to the Err bitreich.org 70 i-image, using a listener such as @acronym{SLIME}, as easily as with Err bitreich.org 70 i-regular Lisp definitions. The only foreign library to load is the one Err bitreich.org 70 i-being wrapped---the one with the pure C interface; no C or other Err bitreich.org 70 i-non-Lisp compilation is required. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@cindex advantages of @acronym{FFI} Err bitreich.org 70 i-@cindex benefits of @acronym{FFI} Err bitreich.org 70 i-We believe the advantages of the Common Lisp approach far outweigh any Err bitreich.org 70 i-disadvantages. Incremental development with a listener can be as Err bitreich.org 70 i-productive for C binding development as it is with other Lisp Err bitreich.org 70 i-development. Keeping it ``in the [Lisp] family'', as it were, makes Err bitreich.org 70 i-it much easier for you and other Lisp programmers to load and use the Err bitreich.org 70 i-bindings. Common Lisp implementations such as @acronym{CMUCL}, freed Err bitreich.org 70 i-from having to provide a C interface to their own objects, are thus Err bitreich.org 70 i-freed to be implemented in another language (as @acronym{CMUCL} is) Err bitreich.org 70 i-while still allowing programmers to call foreign functions. Err bitreich.org 70 i- Err bitreich.org 70 i-@cindex minimal bindings Err bitreich.org 70 i-Perhaps the greatest advantage is that using an @acronym{FFI} doesn't Err bitreich.org 70 i-obligate you to become a professional binding developer. Writers of Err bitreich.org 70 i-bindings for other languages usually end up maintaining or failing to Err bitreich.org 70 i-maintain complete bindings to the foreign library. Using an Err bitreich.org 70 i-@acronym{FFI}, however, means if you only need one or two functions, Err bitreich.org 70 i-you can write bindings for only those functions, and be assured that Err bitreich.org 70 i-you can just as easily add to the bindings if need be. Err bitreich.org 70 i- Err bitreich.org 70 i-@cindex C abstractions Err bitreich.org 70 i-@cindex abstractions in C Err bitreich.org 70 i-The removal of the C compiler, or C interpretation of any kind, Err bitreich.org 70 i-creates the main disadvantage: some of C's ``abstractions'' are not Err bitreich.org 70 i-available, violating information encapsulation. For example, Err bitreich.org 70 i-@code{struct}s that must be passed on the stack, or used as return Err bitreich.org 70 i-values, without corresponding functional abstractions to create and Err bitreich.org 70 i-manage the @code{struct}s, must be declared explicitly in Lisp. This Err bitreich.org 70 i-is fine for structs whose contents are ``public'', but is not so Err bitreich.org 70 i-pleasant when a struct is supposed to be ``opaque'' by convention, Err bitreich.org 70 i-even though it is not so defined.@footnote{Admittedly, this is an Err bitreich.org 70 i-advanced issue, and we encourage you to leave this text until you are Err bitreich.org 70 i-more familiar with how @cffi{} works.} Err bitreich.org 70 i- Err bitreich.org 70 i-Without an abstraction to create the struct, Lisp needs to be able to Err bitreich.org 70 i-lay out the struct in memory, so must know its internal details. Err bitreich.org 70 i- Err bitreich.org 70 i-@cindex workaround for C Err bitreich.org 70 i-In these cases, you can create a minimal C library to provide the Err bitreich.org 70 i-missing abstractions, without destroying all the advantages of the Err bitreich.org 70 i-Common Lisp approach discussed above. In the case of @code{struct}s, Err bitreich.org 70 i-you can write simple, pure C functions that tell you how many bytes a Err bitreich.org 70 i-struct requires or allocate new structs, read and write fields of the Err bitreich.org 70 i-struct, or whatever operations are supposed to be Err bitreich.org 70 i-public.@footnote{This does not apply to structs whose contents are Err bitreich.org 70 i-intended to be part of the public library interface. In those cases, Err bitreich.org 70 i-a pure Lisp struct definition is always preferred. In fact, many Err bitreich.org 70 i-prefer to stay in Lisp and break the encapsulation anyway, placing the Err bitreich.org 70 i-burden of correct library interface definition on the library.} Err bitreich.org 70 i-@ref{The Groveller} automates this and other processes. Err bitreich.org 70 i- Err bitreich.org 70 i-Another disadvantage appears when you would rather use the foreign Err bitreich.org 70 i-language than Lisp. However, someone who prefers C to Lisp is not a Err bitreich.org 70 i-likely candidate for developing a Lisp interface to a C library. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@node Tutorial-Getting a URL, Tutorial-Loading, Tutorial-Comparison, Tutorial Err bitreich.org 70 i-@section Getting a @acronym{URL} Err bitreich.org 70 i- Err bitreich.org 70 i-@cindex c@acronym{URL} Err bitreich.org 70 i-The widely available @code{libcurl} is a library for downloading files Err bitreich.org 70 i-over protocols like @acronym{HTTP}. We will use @code{libcurl} with Err bitreich.org 70 i-@cffi{} to download a web page. Err bitreich.org 70 i- Err bitreich.org 70 i-Please note that there are many other ways to download files from the Err bitreich.org 70 i-web, not least the @sc{cl-curl} project to provide bindings to Err bitreich.org 70 i-@code{libcurl} via a similar @acronym{FFI}.@footnote{Specifically, Err bitreich.org 70 i-@acronym{UFFI}, an older @acronym{FFI} that takes a somewhat different Err bitreich.org 70 i-approach compared to @cffi{}. I believe that these days (December Err bitreich.org 70 i-2005) @cffi{} is more portable and actively developed, though not as Err bitreich.org 70 i-mature yet. Consensus in the free @sc{unix} Common Lisp community Err bitreich.org 70 i-seems to be that @cffi{} is preferred for new development, though Err bitreich.org 70 i-@acronym{UFFI} will likely go on for quite some time as many projects Err bitreich.org 70 i-already use it. @cffi{} includes the @code{UFFI-COMPAT} package for Err bitreich.org 70 i-complete compatibility with @acronym{UFFI}.} Err bitreich.org 70 i- Err bitreich.org 70 i-@uref{http://curl.haxx.se/libcurl/c/libcurl-tutorial.html,,libcurl-tutorial(3)} Err bitreich.org 70 i-is a tutorial for @code{libcurl} programming in C. We will follow Err bitreich.org 70 i-that to develop a binding to download a file. We will also use Err bitreich.org 70 i-@file{curl.h}, @file{easy.h}, and the @command{man} pages for the Err bitreich.org 70 i-@code{libcurl} function, all available in the @samp{curl-dev} package Err bitreich.org 70 i-or equivalent for your system, or in the c@acronym{URL} source code Err bitreich.org 70 i-package. If you have the development package, the headers should be Err bitreich.org 70 i-installed in @file{/usr/include/curl/}, and the @command{man} pages Err bitreich.org 70 i-may be accessed through your favorite @command{man} facility. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@node Tutorial-Loading, Tutorial-Initializing, Tutorial-Getting a URL, Tutorial Err bitreich.org 70 i-@section Loading foreign libraries Err bitreich.org 70 i- Err bitreich.org 70 i-@cindex loading @cffi{} Err bitreich.org 70 i-@cindex requiring @cffi{} Err bitreich.org 70 i-First of all, we will create a package to work in. You can save these Err bitreich.org 70 i-forms in a file, or just send them to the listener as they are. If Err bitreich.org 70 i-creating bindings for an @acronym{ASDF} package of yours, you will Err bitreich.org 70 i-want to add @code{:cffi} to the @code{:depends-on} list in your Err bitreich.org 70 i-@file{.asd} file. Otherwise, just use the @code{asdf:load-system} function to Err bitreich.org 70 i-load @cffi{}. Err bitreich.org 70 i- Err bitreich.org 70 i-@tutorialsource{Initialization} Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(asdf:load-system :cffi) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; @lispcmt{Nothing special about the "CFFI-USER" package. We're just} Err bitreich.org 70 i-;;; @lispcmt{using it as a substitute for your own CL package.} Err bitreich.org 70 i-(defpackage :cffi-user Err bitreich.org 70 i- (:use :common-lisp :cffi)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cffi-user) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-foreign-library libcurl Err bitreich.org 70 i- (:darwin (:or "libcurl.3.dylib" "libcurl.dylib")) Err bitreich.org 70 i- (:unix (:or "libcurl.so.3" "libcurl.so")) Err bitreich.org 70 i- (t (:default "libcurl"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(use-foreign-library libcurl) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@cindex foreign library load Err bitreich.org 70 i-@cindex library, foreign Err bitreich.org 70 i-Using @code{define-foreign-library} and @code{use-foreign-library}, we Err bitreich.org 70 i-have loaded @code{libcurl} into Lisp, much as the linker does when you Err bitreich.org 70 i-start a C program, or @code{common-lisp:load} does with a Lisp source Err bitreich.org 70 i-file or @acronym{FASL} file. We special-cased for @sc{unix} machines Err bitreich.org 70 i-to always load a particular version, the one this tutorial was tested Err bitreich.org 70 i-with; for those who don't care, the @code{define-foreign-library} Err bitreich.org 70 i-clause @code{(t (:default "libcurl"))} should be satisfactory, and Err bitreich.org 70 i-will adapt to various operating systems. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@node Tutorial-Initializing, Tutorial-easy_setopt, Tutorial-Loading, Tutorial Err bitreich.org 70 i-@section Initializing @code{libcurl} Err bitreich.org 70 i- Err bitreich.org 70 i-@cindex function definition Err bitreich.org 70 i-After the introductory matter, the tutorial goes on to present the Err bitreich.org 70 i-first function you should use. Err bitreich.org 70 i- Err bitreich.org 70 i-@example Err bitreich.org 70 i-CURLcode curl_global_init(long flags); Err bitreich.org 70 i-@end example Err bitreich.org 70 i- Err bitreich.org 70 i-@noindent Err bitreich.org 70 i-Let's pick this apart into appropriate Lisp code: Err bitreich.org 70 i- Err bitreich.org 70 i-@tutorialsource{First CURLcode} Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-;;; @lispcmt{A CURLcode is the universal error code. curl/curl.h says} Err bitreich.org 70 i-;;; @lispcmt{no return code will ever be removed, and new ones will be} Err bitreich.org 70 i-;;; @lispcmt{added to the end.} Err bitreich.org 70 i-(defctype curl-code :int) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; @lispcmt{Initialize libcurl with FLAGS.} Err bitreich.org 70 i-(defcfun "curl_global_init" curl-code Err bitreich.org 70 i- (flags :long)) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@impnote{By default, CFFI assumes the UNIX viewpoint that there is one Err bitreich.org 70 i-C symbol namespace, containing all symbols in all loaded objects. Err bitreich.org 70 i-This is not so on Windows and Darwin, but we emulate UNIX's behaviour Err bitreich.org 70 i-there. @ref{defcfun} for more details.} Err bitreich.org 70 i- Err bitreich.org 70 i-Note the parallels with the original C declaration. We've defined Err bitreich.org 70 i-@code{curl-code} as a wrapping type for @code{:int}; right now, it Err bitreich.org 70 i-only marks it as special, but later we will do something more Err bitreich.org 70 i-interesting with it. The point is that we don't have to do it yet. Err bitreich.org 70 i- Err bitreich.org 70 i-@cindex calling foreign functions Err bitreich.org 70 i-Looking at @file{curl.h}, @code{CURL_GLOBAL_NOTHING}, a possible value Err bitreich.org 70 i-for @code{flags} above, is defined as @samp{0}. So we can now call Err bitreich.org 70 i-the function: Err bitreich.org 70 i- Err bitreich.org 70 i-@example Err bitreich.org 70 i-@sc{cffi-user>} (curl-global-init 0) Err bitreich.org 70 i-@result{} 0 Err bitreich.org 70 i-@end example Err bitreich.org 70 i- Err bitreich.org 70 i-@cindex looks like it worked Err bitreich.org 70 i-Looking at @file{curl.h} again, @code{0} means @code{CURLE_OK}, so it Err bitreich.org 70 i-looks like the call succeeded. Note that @cffi{} converted the Err bitreich.org 70 i-function name to a Lisp-friendly name. You can specify your own name Err bitreich.org 70 i-if you want; use @code{("curl_global_init" @var{your-name-here})} as Err bitreich.org 70 i-the @var{name} argument to @code{defcfun}. Err bitreich.org 70 i- Err bitreich.org 70 i-The tutorial goes on to have us allocate a handle. For good measure, Err bitreich.org 70 i-we should also include the deallocator. Let's look at these Err bitreich.org 70 i-functions: Err bitreich.org 70 i- Err bitreich.org 70 i-@example Err bitreich.org 70 i-CURL *curl_easy_init( ); Err bitreich.org 70 i-void curl_easy_cleanup(CURL *handle); Err bitreich.org 70 i-@end example Err bitreich.org 70 i- Err bitreich.org 70 i-Advanced users may want to define special pointer types; we will Err bitreich.org 70 i-explore this possibility later. For now, just treat every pointer as Err bitreich.org 70 i-the same: Err bitreich.org 70 i- Err bitreich.org 70 i-@tutorialsource{curl_easy handles} Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defcfun "curl_easy_init" :pointer) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "curl_easy_cleanup" :void Err bitreich.org 70 i- (easy-handle :pointer)) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-Now we can continue with the tutorial: Err bitreich.org 70 i- Err bitreich.org 70 i-@example Err bitreich.org 70 i-@sc{cffi-user>} (defparameter *easy-handle* (curl-easy-init)) Err bitreich.org 70 i-@result{} *EASY-HANDLE* Err bitreich.org 70 i-@sc{cffi-user>} *easy-handle* Err bitreich.org 70 i-@result{} # Err bitreich.org 70 i-@end example Err bitreich.org 70 i- Err bitreich.org 70 i-@cindex pointers in Lisp Err bitreich.org 70 i-Note the print representation of a pointer. It changes depending on Err bitreich.org 70 i-what Lisp you are using, but that doesn't make any difference to Err bitreich.org 70 i-@cffi{}. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@node Tutorial-easy_setopt, Tutorial-Abstraction, Tutorial-Initializing, Tutorial Err bitreich.org 70 i-@section Setting download options Err bitreich.org 70 i- Err bitreich.org 70 i-The @code{libcurl} tutorial says we'll want to set many options before Err bitreich.org 70 i-performing any download actions. This is done through Err bitreich.org 70 i-@code{curl_easy_setopt}: Err bitreich.org 70 i- Err bitreich.org 70 i-@c That is literally ..., not an ellipsis. Err bitreich.org 70 i-@example Err bitreich.org 70 i-CURLcode curl_easy_setopt(CURL *curl, CURLoption option, ...); Err bitreich.org 70 i-@end example Err bitreich.org 70 i- Err bitreich.org 70 i-@cindex varargs Err bitreich.org 70 i-@cindex foreign arguments Err bitreich.org 70 i-We've introduced a new twist: variable arguments. There is no obvious Err bitreich.org 70 i-translation to the @code{defcfun} form, particularly as there are four Err bitreich.org 70 i-possible argument types. Because of the way C works, we could define Err bitreich.org 70 i-four wrappers around @code{curl_easy_setopt}, one for each type; in Err bitreich.org 70 i-this case, however, we'll use the general-purpose macro Err bitreich.org 70 i-@code{foreign-funcall} to call this function. Err bitreich.org 70 i- Err bitreich.org 70 i-@cindex enumeration, C Err bitreich.org 70 i-To make things easier on ourselves, we'll create an enumeration of the Err bitreich.org 70 i-kinds of options we want to set. The @code{enum CURLoption} isn't the Err bitreich.org 70 i-most straightforward, but reading the @code{CINIT} C macro definition Err bitreich.org 70 i-should be enlightening. Err bitreich.org 70 i- Err bitreich.org 70 i-@tutorialsource{CURLoption enumeration} Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defmacro define-curl-options (name type-offsets &rest enum-args) Err bitreich.org 70 i- "As with CFFI:DEFCENUM, except each of ENUM-ARGS is as follows: Err bitreich.org 70 i- Err bitreich.org 70 i- (NAME TYPE NUMBER) Err bitreich.org 70 i- Err bitreich.org 70 i-Where the arguments are as they are with the CINIT macro defined Err bitreich.org 70 i-in curl.h, except NAME is a keyword. Err bitreich.org 70 i- Err bitreich.org 70 i-TYPE-OFFSETS is a plist of TYPEs to their integer offsets, as Err bitreich.org 70 i-defined by the CURLOPTTYPE_LONG et al constants in curl.h." Err bitreich.org 70 i- (flet ((enumerated-value (type offset) Err bitreich.org 70 i- (+ (getf type-offsets type) offset))) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (defcenum ,name Err bitreich.org 70 i- ,@@(loop for (name type number) in enum-args Err bitreich.org 70 i- collect (list name (enumerated-value type number)))) Err bitreich.org 70 i- ',name))) ;@lispcmt{for REPL users' sanity} Err bitreich.org 70 i- Err bitreich.org 70 i-(define-curl-options curl-option Err bitreich.org 70 i- (long 0 objectpoint 10000 functionpoint 20000 off-t 30000) Err bitreich.org 70 i- (:noprogress long 43) Err bitreich.org 70 i- (:nosignal long 99) Err bitreich.org 70 i- (:errorbuffer objectpoint 10) Err bitreich.org 70 i- (:url objectpoint 2)) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-With some well-placed Emacs @code{query-replace-regexp}s, you could Err bitreich.org 70 i-probably similarly define the entire @code{CURLoption} enumeration. I Err bitreich.org 70 i-have selected to transcribe a few that we will use in this tutorial. Err bitreich.org 70 i- Err bitreich.org 70 i-If you're having trouble following the macrology, just macroexpand the Err bitreich.org 70 i-@code{curl-option} definition, or see the following macroexpansion, Err bitreich.org 70 i-conveniently downcased and reformatted: Err bitreich.org 70 i- Err bitreich.org 70 i-@tutorialsource{DEFINE-CURL-OPTIONS macroexpansion} Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (defcenum curl-option Err bitreich.org 70 i- (:noprogress 43) Err bitreich.org 70 i- (:nosignal 99) Err bitreich.org 70 i- (:errorbuffer 10010) Err bitreich.org 70 i- (:url 10002)) Err bitreich.org 70 i- 'curl-option) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@noindent Err bitreich.org 70 i-That seems more than reasonable. You may notice that we only use the Err bitreich.org 70 i-@var{type} to compute the real enumeration offset; we will also need Err bitreich.org 70 i-the type information later. Err bitreich.org 70 i- Err bitreich.org 70 i-First, however, let's make sure a simple call to the foreign function Err bitreich.org 70 i-works: Err bitreich.org 70 i- Err bitreich.org 70 i-@example Err bitreich.org 70 i-@sc{cffi-user>} (foreign-funcall "curl_easy_setopt" Err bitreich.org 70 i- :pointer *easy-handle* Err bitreich.org 70 i- curl-option :nosignal :long 1 curl-code) Err bitreich.org 70 i-@result{} 0 Err bitreich.org 70 i-@end example Err bitreich.org 70 i- Err bitreich.org 70 i-@code{foreign-funcall}, despite its surface simplicity, can be used to Err bitreich.org 70 i-call any C function. Its first argument is a string, naming the Err bitreich.org 70 i-function to be called. Next, for each argument, we pass the name of Err bitreich.org 70 i-the C type, which is the same as in @code{defcfun}, followed by a Lisp Err bitreich.org 70 i-object representing the data to be passed as the argument. The final Err bitreich.org 70 i-argument is the return type, for which we use the @code{curl-code} Err bitreich.org 70 i-type defined earlier. Err bitreich.org 70 i- Err bitreich.org 70 i-@code{defcfun} just puts a convenient fa@,cade on Err bitreich.org 70 i-@code{foreign-funcall}.@footnote{This isn't entirely true; some Lisps Err bitreich.org 70 i-don't support @code{foreign-funcall}, so @code{defcfun} is implemented Err bitreich.org 70 i-without it. @code{defcfun} may also perform optimizations that Err bitreich.org 70 i-@code{foreign-funcall} cannot.} Our earlier call to Err bitreich.org 70 i-@code{curl-global-init} could have been written as follows: Err bitreich.org 70 i- Err bitreich.org 70 i-@example Err bitreich.org 70 i-@sc{cffi-user>} (foreign-funcall "curl_global_init" :long 0 Err bitreich.org 70 i- curl-code) Err bitreich.org 70 i-@result{} 0 Err bitreich.org 70 i-@end example Err bitreich.org 70 i- Err bitreich.org 70 i-Before we continue, we will take a look at what @cffi{} can and can't Err bitreich.org 70 i-do, and why this is so. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@node Tutorial-Abstraction, Tutorial-Lisp easy_setopt, Tutorial-easy_setopt, Tutorial Err bitreich.org 70 i-@section Breaking the abstraction Err bitreich.org 70 i- Err bitreich.org 70 i-@cindex breaking the abstraction Err bitreich.org 70 i-@cindex abstraction breaking Err bitreich.org 70 i-In @ref{Tutorial-Comparison,, What makes Lisp different}, we mentioned Err bitreich.org 70 i-that writing an @acronym{FFI} sometimes requires depending on Err bitreich.org 70 i-information not provided as part of the interface. The easy option Err bitreich.org 70 i-@code{CURLOPT_WRITEDATA}, which we will not provide as part of the Err bitreich.org 70 i-Lisp interface, illustrates this issue. Err bitreich.org 70 i- Err bitreich.org 70 i-Strictly speaking, the @code{curl-option} enumeration is not Err bitreich.org 70 i-necessary; we could have used @code{:int 99} instead of Err bitreich.org 70 i-@code{curl-option :nosignal} in our call to @code{curl_easy_setopt} Err bitreich.org 70 i-above. We defined it anyway, in part to hide the fact that we are Err bitreich.org 70 i-breaking the abstraction that the C @code{enum} provides. If the Err bitreich.org 70 i-c@acronym{URL} developers decide to change those numbers later, we Err bitreich.org 70 i-must change the Lisp enumeration, because enumeration values are not Err bitreich.org 70 i-provided in the compiled C library, @code{libcurl.so.3}. Err bitreich.org 70 i- Err bitreich.org 70 i-@cffi{} works because the most useful things in C libraries --- Err bitreich.org 70 i-non-static functions and non-static variables --- are included Err bitreich.org 70 i-accessibly in @code{libcurl.so.3}. A C compiler that violated this Err bitreich.org 70 i-would be considered a worthless compiler. Err bitreich.org 70 i- Err bitreich.org 70 i-The other thing @code{define-curl-options} does is give the ``type'' Err bitreich.org 70 i-of the third argument passed to @code{curl_easy_setopt}. Using this Err bitreich.org 70 i-information, we can tell that the @code{:nosignal} option should Err bitreich.org 70 i-accept a long integer argument. We can implicitly assume @code{t} Err bitreich.org 70 i-@equiv{} 1 and @code{nil} @equiv{} 0, as it is in C, which takes care Err bitreich.org 70 i-of the fact that @code{CURLOPT_NOSIGNAL} is really asking for a Err bitreich.org 70 i-boolean. Err bitreich.org 70 i- Err bitreich.org 70 i-The ``type'' of @code{CURLOPT_WRITEDATA} is @code{objectpoint}. Err bitreich.org 70 i-However, it is really looking for a @code{FILE*}. Err bitreich.org 70 i-@code{CURLOPT_ERRORBUFFER} is looking for a @code{char*}, so there is Err bitreich.org 70 i-no obvious @cffi{} type but @code{:pointer}. Err bitreich.org 70 i- Err bitreich.org 70 i-The first thing to note is that nowhere in the C interface includes Err bitreich.org 70 i-this information; it can only be found in the manual. We could Err bitreich.org 70 i-disjoin these clearly different types ourselves, by splitting Err bitreich.org 70 i-@code{objectpoint} into @code{filepoint} and @code{charpoint}, but we Err bitreich.org 70 i-are still breaking the abstraction, because we have to augment the Err bitreich.org 70 i-entire enumeration form with this additional Err bitreich.org 70 i-information.@footnote{Another possibility is to allow the caller to Err bitreich.org 70 i-specify the desired C type of the third argument. This is essentially Err bitreich.org 70 i-what happens in a call to the function written in C.} Err bitreich.org 70 i- Err bitreich.org 70 i-@cindex streams and C Err bitreich.org 70 i-@cindex @sc{file}* and streams Err bitreich.org 70 i-The second is that the @code{CURLOPT_WRITEDATA} argument is completely Err bitreich.org 70 i-incompatible with the desired Lisp data, a Err bitreich.org 70 i-stream.@footnote{@xref{Other Kinds of Streams,,, libc, GNU C Library Err bitreich.org 70 i-Reference}, for a @acronym{GNU}-only way to extend the @code{FILE*} Err bitreich.org 70 i-type. You could use this to convert Lisp streams to the needed C Err bitreich.org 70 i-data. This would be quite involved and far outside the scope of this Err bitreich.org 70 i-tutorial.} It is probably acceptable if we are controlling every file Err bitreich.org 70 i-we might want to use as this argument, in which case we can just call Err bitreich.org 70 i-the foreign function @code{fopen}. Regardless, though, we can't write Err bitreich.org 70 i-to arbitrary streams, which is exactly what we want to do for this Err bitreich.org 70 i-application. Err bitreich.org 70 i- Err bitreich.org 70 i-Finally, note that the @code{curl_easy_setopt} interface itself is a Err bitreich.org 70 i-hack, intended to work around some of the drawbacks of C. The Err bitreich.org 70 i-definition of @code{Curl_setopt}, while long, is far less cluttered Err bitreich.org 70 i-than the equivalent disjoint-function set would be; in addition, Err bitreich.org 70 i-setting a new option in an old @code{libcurl} can generate a run-time Err bitreich.org 70 i-error rather than breaking the compile. Lisp can just as concisely Err bitreich.org 70 i-generate functions as compare values, and the ``undefined function'' Err bitreich.org 70 i-error is just as useful as any explicit error we could define here Err bitreich.org 70 i-might be. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@node Tutorial-Lisp easy_setopt, Tutorial-Memory, Tutorial-Abstraction, Tutorial Err bitreich.org 70 i-@section Option functions in Lisp Err bitreich.org 70 i- Err bitreich.org 70 i-We could use @code{foreign-funcall} directly every time we wanted to Err bitreich.org 70 i-call @code{curl_easy_setopt}. However, we can encapsulate some of the Err bitreich.org 70 i-necessary information with the following. Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-;;; @lispcmt{We will use this type later in a more creative way. For} Err bitreich.org 70 i-;;; @lispcmt{now, just consider it a marker that this isn't just any} Err bitreich.org 70 i-;;; @lispcmt{pointer.} Err bitreich.org 70 i-(defctype easy-handle :pointer) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro curl-easy-setopt (easy-handle enumerated-name Err bitreich.org 70 i- value-type new-value) Err bitreich.org 70 i- "Call `curl_easy_setopt' on EASY-HANDLE, using ENUMERATED-NAME Err bitreich.org 70 i-as the OPTION. VALUE-TYPE is the CFFI foreign type of the third Err bitreich.org 70 i-argument, and NEW-VALUE is the Lisp data to be translated to the Err bitreich.org 70 i-third argument. VALUE-TYPE is not evaluated." Err bitreich.org 70 i- `(foreign-funcall "curl_easy_setopt" easy-handle ,easy-handle Err bitreich.org 70 i- curl-option ,enumerated-name Err bitreich.org 70 i- ,value-type ,new-value curl-code)) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-Now we define a function for each kind of argument that encodes the Err bitreich.org 70 i-correct @code{value-type} in the above. This can be done reasonably Err bitreich.org 70 i-in the @code{define-curl-options} macroexpansion; after all, that is Err bitreich.org 70 i-where the different options are listed! Err bitreich.org 70 i- Err bitreich.org 70 i-@cindex Lispy C functions Err bitreich.org 70 i-We could make @code{cl:defun} forms in the expansion that simply call Err bitreich.org 70 i-@code{curl-easy-setopt}; however, it is probably easier and clearer to Err bitreich.org 70 i-use @code{defcfun}. @code{define-curl-options} was becoming unwieldy, Err bitreich.org 70 i-so I defined some helpers in this new definition. Err bitreich.org 70 i- Err bitreich.org 70 i-@smalllisp Err bitreich.org 70 i-(defun curry-curl-option-setter (function-name option-keyword) Err bitreich.org 70 i- "Wrap the function named by FUNCTION-NAME with a version that Err bitreich.org 70 i-curries the second argument as OPTION-KEYWORD. Err bitreich.org 70 i- Err bitreich.org 70 i-This function is intended for use in DEFINE-CURL-OPTION-SETTER." Err bitreich.org 70 i- (setf (symbol-function function-name) Err bitreich.org 70 i- (let ((c-function (symbol-function function-name))) Err bitreich.org 70 i- (lambda (easy-handle new-value) Err bitreich.org 70 i- (funcall c-function easy-handle option-keyword Err bitreich.org 70 i- new-value))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro define-curl-option-setter (name option-type Err bitreich.org 70 i- option-value foreign-type) Err bitreich.org 70 i- "Define (with DEFCFUN) a function NAME that calls Err bitreich.org 70 i-curl_easy_setopt. OPTION-TYPE and OPTION-VALUE are the CFFI Err bitreich.org 70 i-foreign type and value to be passed as the second argument to Err bitreich.org 70 i-easy_setopt, and FOREIGN-TYPE is the CFFI foreign type to be used Err bitreich.org 70 i-for the resultant function's third argument. Err bitreich.org 70 i- Err bitreich.org 70 i-This macro is intended for use in DEFINE-CURL-OPTIONS." Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (defcfun ("curl_easy_setopt" ,name) curl-code Err bitreich.org 70 i- (easy-handle easy-handle) Err bitreich.org 70 i- (option ,option-type) Err bitreich.org 70 i- (new-value ,foreign-type)) Err bitreich.org 70 i- (curry-curl-option-setter ',name ',option-value))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro define-curl-options (type-name type-offsets &rest enum-args) Err bitreich.org 70 i- "As with CFFI:DEFCENUM, except each of ENUM-ARGS is as follows: Err bitreich.org 70 i- Err bitreich.org 70 i- (NAME TYPE NUMBER) Err bitreich.org 70 i- Err bitreich.org 70 i-Where the arguments are as they are with the CINIT macro defined Err bitreich.org 70 i-in curl.h, except NAME is a keyword. Err bitreich.org 70 i- Err bitreich.org 70 i-TYPE-OFFSETS is a plist of TYPEs to their integer offsets, as Err bitreich.org 70 i-defined by the CURLOPTTYPE_LONG et al constants in curl.h. Err bitreich.org 70 i- Err bitreich.org 70 i-Also, define functions for each option named Err bitreich.org 70 i-set-`TYPE-NAME'-`OPTION-NAME', where OPTION-NAME is the NAME from Err bitreich.org 70 i-the above destructuring." Err bitreich.org 70 i- (flet ((enumerated-value (type offset) Err bitreich.org 70 i- (+ (getf type-offsets type) offset)) Err bitreich.org 70 i- ;; @lispcmt{map PROCEDURE, destructuring each of ENUM-ARGS} Err bitreich.org 70 i- (map-enum-args (procedure) Err bitreich.org 70 i- (mapcar (lambda (arg) (apply procedure arg)) enum-args)) Err bitreich.org 70 i- ;; @lispcmt{build a name like SET-CURL-OPTION-NOSIGNAL} Err bitreich.org 70 i- (make-setter-name (option-name) Err bitreich.org 70 i- (intern (concatenate Err bitreich.org 70 i- 'string "SET-" (symbol-name type-name) Err bitreich.org 70 i- "-" (symbol-name option-name))))) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (defcenum ,type-name Err bitreich.org 70 i- ,@@(map-enum-args Err bitreich.org 70 i- (lambda (name type number) Err bitreich.org 70 i- (list name (enumerated-value type number))))) Err bitreich.org 70 i- ,@@(map-enum-args Err bitreich.org 70 i- (lambda (name type number) Err bitreich.org 70 i- (declare (ignore number)) Err bitreich.org 70 i- `(define-curl-option-setter ,(make-setter-name name) Err bitreich.org 70 i- ,type-name ,name ,(ecase type Err bitreich.org 70 i- (long :long) Err bitreich.org 70 i- (objectpoint :pointer) Err bitreich.org 70 i- (functionpoint :pointer) Err bitreich.org 70 i- (off-t :long))))) Err bitreich.org 70 i- ',type-name))) Err bitreich.org 70 i-@end smalllisp Err bitreich.org 70 i- Err bitreich.org 70 i-@noindent Err bitreich.org 70 i-Macroexpanding our @code{define-curl-options} form once more, we Err bitreich.org 70 i-see something different: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (defcenum curl-option Err bitreich.org 70 i- (:noprogress 43) Err bitreich.org 70 i- (:nosignal 99) Err bitreich.org 70 i- (:errorbuffer 10010) Err bitreich.org 70 i- (:url 10002)) Err bitreich.org 70 i- (define-curl-option-setter set-curl-option-noprogress Err bitreich.org 70 i- curl-option :noprogress :long) Err bitreich.org 70 i- (define-curl-option-setter set-curl-option-nosignal Err bitreich.org 70 i- curl-option :nosignal :long) Err bitreich.org 70 i- (define-curl-option-setter set-curl-option-errorbuffer Err bitreich.org 70 i- curl-option :errorbuffer :pointer) Err bitreich.org 70 i- (define-curl-option-setter set-curl-option-url Err bitreich.org 70 i- curl-option :url :pointer) Err bitreich.org 70 i- 'curl-option) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@noindent Err bitreich.org 70 i-Macroexpanding one of the new @code{define-curl-option-setter} Err bitreich.org 70 i-forms yields the following: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (defcfun ("curl_easy_setopt" set-curl-option-nosignal) curl-code Err bitreich.org 70 i- (easy-handle easy-handle) Err bitreich.org 70 i- (option curl-option) Err bitreich.org 70 i- (new-value :long)) Err bitreich.org 70 i- (curry-curl-option-setter 'set-curl-option-nosignal ':nosignal)) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@noindent Err bitreich.org 70 i-Finally, let's try this out: Err bitreich.org 70 i- Err bitreich.org 70 i-@example Err bitreich.org 70 i-@sc{cffi-user>} (set-curl-option-nosignal *easy-handle* 1) Err bitreich.org 70 i-@result{} 0 Err bitreich.org 70 i-@end example Err bitreich.org 70 i- Err bitreich.org 70 i-@noindent Err bitreich.org 70 i-Looks like it works just as well. This interface is now reasonably Err bitreich.org 70 i-high-level to wash out some of the ugliness of the thinnest possible Err bitreich.org 70 i-@code{curl_easy_setopt} @acronym{FFI}, without obscuring the remaining Err bitreich.org 70 i-C bookkeeping details we will explore. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@node Tutorial-Memory, Tutorial-Callbacks, Tutorial-Lisp easy_setopt, Tutorial Err bitreich.org 70 i-@section Memory management Err bitreich.org 70 i- Err bitreich.org 70 i-According to the documentation for @code{curl_easy_setopt}, the type Err bitreich.org 70 i-of the third argument when @var{option} is @code{CURLOPT_ERRORBUFFER} Err bitreich.org 70 i-is @code{char*}. Above, we've defined Err bitreich.org 70 i-@code{set-curl-option-errorbuffer} to accept a @code{:pointer} as the Err bitreich.org 70 i-new option value. However, there is a @cffi{} type @code{:string}, Err bitreich.org 70 i-which translates Lisp strings to C strings when passed as arguments to Err bitreich.org 70 i-foreign function calls. Why not, then, use @code{:string} as the Err bitreich.org 70 i-@cffi{} type of the third argument? There are two reasons, both Err bitreich.org 70 i-related to the necessity of breaking abstraction described in Err bitreich.org 70 i-@ref{Tutorial-Abstraction,, Breaking the abstraction}. Err bitreich.org 70 i- Err bitreich.org 70 i-The first reason also applies to @code{CURLOPT_URL}, which we will use Err bitreich.org 70 i-to illustrate the point. Assuming we have changed the type of the Err bitreich.org 70 i-third argument underlying @code{set-curl-option-url} to Err bitreich.org 70 i-@code{:string}, look at these two equivalent forms. Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(set-curl-option-url *easy-handle* "http://www.cliki.net/CFFI") Err bitreich.org 70 i- Err bitreich.org 70 i-@equiv{} (with-foreign-string (url "http://www.cliki.net/CFFI") Err bitreich.org 70 i- (foreign-funcall "curl_easy_setopt" easy-handle *easy-handle* Err bitreich.org 70 i- curl-option :url :pointer url curl-code)) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@noindent Err bitreich.org 70 i-The latter, in fact, is mostly equivalent to what a foreign function Err bitreich.org 70 i-call's macroexpansion actually does. As you can see, the Lisp string Err bitreich.org 70 i-@code{"@clikicffi{}"} is copied into a @code{char} array and Err bitreich.org 70 i-null-terminated; the pointer to beginning of this array, now a C Err bitreich.org 70 i-string, is passed as a @cffi{} @code{:pointer} to the foreign Err bitreich.org 70 i-function. Err bitreich.org 70 i- Err bitreich.org 70 i-@cindex dynamic extent Err bitreich.org 70 i-@cindex foreign values with dynamic extent Err bitreich.org 70 i-Unfortunately, the C abstraction has failed us, and we must break it. Err bitreich.org 70 i-While @code{:string} works well for many @code{char*} arguments, it Err bitreich.org 70 i-does not for cases like this. As the @code{curl_easy_setopt} Err bitreich.org 70 i-documentation explains, ``The string must remain present until curl no Err bitreich.org 70 i-longer needs it, as it doesn't copy the string.'' The C string Err bitreich.org 70 i-created by @code{with-foreign-string}, however, only has dynamic Err bitreich.org 70 i-extent: it is ``deallocated'' when the body (above containing the Err bitreich.org 70 i-@code{foreign-funcall} form) exits. Err bitreich.org 70 i- Err bitreich.org 70 i-@cindex premature deallocation Err bitreich.org 70 i-If we are supposed to keep the C string around, but it goes away, what Err bitreich.org 70 i-happens when some @code{libcurl} function tries to access the Err bitreich.org 70 i-@acronym{URL} string? We have reentered the dreaded world of C Err bitreich.org 70 i-``undefined behavior''. In some Lisps, it will probably get a chunk Err bitreich.org 70 i-of the Lisp/C stack. You may segfault. You may get some random piece Err bitreich.org 70 i-of other data from the heap. Maybe, in a world where ``dynamic Err bitreich.org 70 i-extent'' is defined to be ``infinite extent'', everything will turn Err bitreich.org 70 i-out fine. Regardless, results are likely to be almost universally Err bitreich.org 70 i-unpleasant.@footnote{``@i{But I thought Lisp was supposed to protect Err bitreich.org 70 i-me from all that buggy C crap!}'' Before asking a question like that, Err bitreich.org 70 i-remember that you are a stranger in a foreign land, whose residents Err bitreich.org 70 i-have a completely different set of values.} Err bitreich.org 70 i- Err bitreich.org 70 i-Returning to the current @code{set-curl-option-url} interface, here is Err bitreich.org 70 i-what we must do: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(let (easy-handle) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (with-foreign-string (url "http://www.cliki.net/CFFI") Err bitreich.org 70 i- (setf easy-handle (curl-easy-init)) Err bitreich.org 70 i- (set-curl-option-url easy-handle url) Err bitreich.org 70 i- #|@lispcmt{do more with the easy-handle, like actually get the URL}|#) Err bitreich.org 70 i- (when easy-handle Err bitreich.org 70 i- (curl-easy-cleanup easy-handle)))) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@c old comment to luis: I go on to say that this isn't obviously Err bitreich.org 70 i-@c extensible to new option settings that require C strings to stick Err bitreich.org 70 i-@c around, as it would involve re-evaluating the unwind-protect form Err bitreich.org 70 i-@c with more dynamic memory allocation. So I plan to show how to Err bitreich.org 70 i-@c write something similar to ObjC's NSAutoreleasePool, to be managed Err bitreich.org 70 i-@c with a simple unwind-protect form. Err bitreich.org 70 i- Err bitreich.org 70 i-@noindent Err bitreich.org 70 i-That is fine for the single string defined here, but for every string Err bitreich.org 70 i-option we want to pass, we have to surround the body of Err bitreich.org 70 i-@code{with-foreign-string} with another @code{with-foreign-string} Err bitreich.org 70 i-wrapper, or else do some extremely error-prone pointer manipulation Err bitreich.org 70 i-and size calculation in advance. We could alleviate some of the pain Err bitreich.org 70 i-with a recursively expanding macro, but this would not remove the need Err bitreich.org 70 i-to modify the block every time we want to add an option, anathema as Err bitreich.org 70 i-it is to a modular interface. Err bitreich.org 70 i- Err bitreich.org 70 i-Before modifying the code to account for this case, consider the other Err bitreich.org 70 i-reason we can't simply use @code{:string} as the foreign type. In C, Err bitreich.org 70 i-a @code{char *} is a @code{char *}, not necessarily a string. The Err bitreich.org 70 i-option @code{CURLOPT_ERRORBUFFER} accepts a @code{char *}, but does Err bitreich.org 70 i-not expect anything about the data there. However, it does expect Err bitreich.org 70 i-that some @code{libcurl} function we call later can write a C string Err bitreich.org 70 i-of up to 255 characters there. We, the callers of the function, are Err bitreich.org 70 i-expected to read the C string at a later time, exactly the opposite of Err bitreich.org 70 i-what @code{:string} implies. Err bitreich.org 70 i- Err bitreich.org 70 i-With the semantics for an input string in mind --- namely, that the Err bitreich.org 70 i-string should be kept around until we @code{curl_easy_cleanup} the Err bitreich.org 70 i-easy handle --- we are ready to extend the Lisp interface: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defvar *easy-handle-cstrings* (make-hash-table) Err bitreich.org 70 i- "Hashtable of easy handles to lists of C strings that may be Err bitreich.org 70 i-safely freed after the handle is freed.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-easy-handle () Err bitreich.org 70 i- "Answer a new CURL easy interface handle, to which the lifetime Err bitreich.org 70 i-of C strings may be tied. See `add-curl-handle-cstring'." Err bitreich.org 70 i- (let ((easy-handle (curl-easy-init))) Err bitreich.org 70 i- (setf (gethash easy-handle *easy-handle-cstrings*) '()) Err bitreich.org 70 i- easy-handle)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun free-easy-handle (handle) Err bitreich.org 70 i- "Free CURL easy interface HANDLE and any C strings created to Err bitreich.org 70 i-be its options." Err bitreich.org 70 i- (curl-easy-cleanup handle) Err bitreich.org 70 i- (mapc #'foreign-string-free Err bitreich.org 70 i- (gethash handle *easy-handle-cstrings*)) Err bitreich.org 70 i- (remhash handle *easy-handle-cstrings*)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun add-curl-handle-cstring (handle cstring) Err bitreich.org 70 i- "Add CSTRING to be freed when HANDLE is, answering CSTRING." Err bitreich.org 70 i- (car (push cstring (gethash handle *easy-handle-cstrings*)))) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@noindent Err bitreich.org 70 i-Here we have redefined the interface to create and free handles, to Err bitreich.org 70 i-associate a list of allocated C strings with each handle while it Err bitreich.org 70 i-exists. The strategy of using different function names to wrap around Err bitreich.org 70 i-simple foreign functions is more common than the solution implemented Err bitreich.org 70 i-earlier with @code{curry-curl-option-setter}, which was to modify the Err bitreich.org 70 i-function name's function slot.@footnote{There are advantages and Err bitreich.org 70 i-disadvantages to each approach; I chose to @code{(setf Err bitreich.org 70 i-symbol-function)} earlier because it entailed generating fewer magic Err bitreich.org 70 i-function names.} Err bitreich.org 70 i- Err bitreich.org 70 i-Incidentally, the next step is to redefine Err bitreich.org 70 i-@code{curry-curl-option-setter} to allocate C strings for the Err bitreich.org 70 i-appropriate length of time, given a Lisp string as the Err bitreich.org 70 i-@code{new-value} argument: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defun curry-curl-option-setter (function-name option-keyword) Err bitreich.org 70 i- "Wrap the function named by FUNCTION-NAME with a version that Err bitreich.org 70 i-curries the second argument as OPTION-KEYWORD. Err bitreich.org 70 i- Err bitreich.org 70 i-This function is intended for use in DEFINE-CURL-OPTION-SETTER." Err bitreich.org 70 i- (setf (symbol-function function-name) Err bitreich.org 70 i- (let ((c-function (symbol-function function-name))) Err bitreich.org 70 i- (lambda (easy-handle new-value) Err bitreich.org 70 i- (funcall c-function easy-handle option-keyword Err bitreich.org 70 i- (if (stringp new-value) Err bitreich.org 70 i- (add-curl-handle-cstring Err bitreich.org 70 i- easy-handle Err bitreich.org 70 i- (foreign-string-alloc new-value)) Err bitreich.org 70 i- new-value)))))) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@noindent Err bitreich.org 70 i-A quick analysis of the code shows that you need only reevaluate the Err bitreich.org 70 i-@code{curl-option} enumeration definition to take advantage of these Err bitreich.org 70 i-new semantics. Now, for good measure, let's reallocate the handle Err bitreich.org 70 i-with the new functions we just defined, and set its @acronym{URL}: Err bitreich.org 70 i- Err bitreich.org 70 i-@example Err bitreich.org 70 i-@sc{cffi-user>} (curl-easy-cleanup *easy-handle*) Err bitreich.org 70 i-@result{} NIL Err bitreich.org 70 i-@sc{cffi-user>} (setf *easy-handle* (make-easy-handle)) Err bitreich.org 70 i-@result{} # Err bitreich.org 70 i-@sc{cffi-user>} (set-curl-option-nosignal *easy-handle* 1) Err bitreich.org 70 i-@result{} 0 Err bitreich.org 70 i-@sc{cffi-user>} (set-curl-option-url *easy-handle* Err bitreich.org 70 i- "http://www.cliki.net/CFFI") Err bitreich.org 70 i-@result{} 0 Err bitreich.org 70 i-@end example Err bitreich.org 70 i- Err bitreich.org 70 i-@cindex strings Err bitreich.org 70 i-For fun, let's inspect the Lisp value of the C string that was created Err bitreich.org 70 i-to hold @code{"@clikicffi{}"}. By virtue of the implementation of Err bitreich.org 70 i-@code{add-curl-handle-cstring}, it should be accessible through the Err bitreich.org 70 i-hash table defined: Err bitreich.org 70 i- Err bitreich.org 70 i-@example Err bitreich.org 70 i-@sc{cffi-user>} (foreign-string-to-lisp Err bitreich.org 70 i- (car (gethash *easy-handle* *easy-handle-cstrings*))) Err bitreich.org 70 i-@result{} "http://www.cliki.net/CFFI" Err bitreich.org 70 i-@end example Err bitreich.org 70 i- Err bitreich.org 70 i-@noindent Err bitreich.org 70 i-Looks like that worked, and @code{libcurl} now knows what Err bitreich.org 70 i-@acronym{URL} we want to retrieve. Err bitreich.org 70 i- Err bitreich.org 70 i-Finally, we turn back to the @code{:errorbuffer} option mentioned at Err bitreich.org 70 i-the beginning of this section. Whereas the abstraction added to Err bitreich.org 70 i-support string inputs works fine for cases like @code{CURLOPT_URL}, it Err bitreich.org 70 i-hides the detail of keeping the C string; for @code{:errorbuffer}, Err bitreich.org 70 i-however, we need that C string. Err bitreich.org 70 i- Err bitreich.org 70 i-In a moment, we'll define something slightly cleaner, but for now, Err bitreich.org 70 i-remember that you can always hack around anything. We're modifying Err bitreich.org 70 i-handle creation, so make sure you free the old handle before Err bitreich.org 70 i-redefining @code{free-easy-handle}. Err bitreich.org 70 i- Err bitreich.org 70 i-@smalllisp Err bitreich.org 70 i-(defvar *easy-handle-errorbuffers* (make-hash-table) Err bitreich.org 70 i- "Hashtable of easy handles to C strings serving as error Err bitreich.org 70 i-writeback buffers.") Err bitreich.org 70 i- Err bitreich.org 70 i-;;; @lispcmt{An extra byte is very little to pay for peace of mind.} Err bitreich.org 70 i-(defparameter *curl-error-size* 257 Err bitreich.org 70 i- "Minimum char[] size used by cURL to report errors.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-easy-handle () Err bitreich.org 70 i- "Answer a new CURL easy interface handle, to which the lifetime Err bitreich.org 70 i-of C strings may be tied. See `add-curl-handle-cstring'." Err bitreich.org 70 i- (let ((easy-handle (curl-easy-init))) Err bitreich.org 70 i- (setf (gethash easy-handle *easy-handle-cstrings*) '()) Err bitreich.org 70 i- (setf (gethash easy-handle *easy-handle-errorbuffers*) Err bitreich.org 70 i- (foreign-alloc :char :count *curl-error-size* Err bitreich.org 70 i- :initial-element 0)) Err bitreich.org 70 i- easy-handle)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun free-easy-handle (handle) Err bitreich.org 70 i- "Free CURL easy interface HANDLE and any C strings created to Err bitreich.org 70 i-be its options." Err bitreich.org 70 i- (curl-easy-cleanup handle) Err bitreich.org 70 i- (foreign-free (gethash handle *easy-handle-errorbuffers*)) Err bitreich.org 70 i- (remhash handle *easy-handle-errorbuffers*) Err bitreich.org 70 i- (mapc #'foreign-string-free Err bitreich.org 70 i- (gethash handle *easy-handle-cstrings*)) Err bitreich.org 70 i- (remhash handle *easy-handle-cstrings*)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-easy-handle-error (handle) Err bitreich.org 70 i- "Answer a string containing HANDLE's current error message." Err bitreich.org 70 i- (foreign-string-to-lisp Err bitreich.org 70 i- (gethash handle *easy-handle-errorbuffers*))) Err bitreich.org 70 i-@end smalllisp Err bitreich.org 70 i- Err bitreich.org 70 i-Be sure to once again set the options we've set thus far. You may Err bitreich.org 70 i-wish to define yet another wrapper function to do this. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@node Tutorial-Callbacks, Tutorial-Completion, Tutorial-Memory, Tutorial Err bitreich.org 70 i-@section Calling Lisp from C Err bitreich.org 70 i- Err bitreich.org 70 i-If you have been reading Err bitreich.org 70 i-@uref{http://curl.haxx.se/libcurl/c/curl_easy_setopt.html,, Err bitreich.org 70 i-@code{curl_easy_setopt(3)}}, you should have noticed that some options Err bitreich.org 70 i-accept a function pointer. In particular, we need one function Err bitreich.org 70 i-pointer to set as @code{CURLOPT_WRITEFUNCTION}, to be called by Err bitreich.org 70 i-@code{libcurl} rather than the reverse, in order to receive data as it Err bitreich.org 70 i-is downloaded. Err bitreich.org 70 i- Err bitreich.org 70 i-A binding writer without the aid of @acronym{FFI} usually approaches Err bitreich.org 70 i-this problem by writing a C function that accepts C data, converts to Err bitreich.org 70 i-the language's internal objects, and calls the callback provided by Err bitreich.org 70 i-the user, again in a reverse of usual practices. Err bitreich.org 70 i- Err bitreich.org 70 i-The @cffi{} approach to callbacks precisely mirrors its differences Err bitreich.org 70 i-with the non-@acronym{FFI} approach on the ``calling C from Lisp'' Err bitreich.org 70 i-side, which we have dealt with exclusively up to now. That is, you Err bitreich.org 70 i-define a callback function in Lisp using @code{defcallback}, and Err bitreich.org 70 i-@cffi{} effectively creates a C function to be passed as a function Err bitreich.org 70 i-pointer. Err bitreich.org 70 i- Err bitreich.org 70 i-@impnote{This is much trickier than calling C functions from Lisp, as Err bitreich.org 70 i-it literally involves somehow generating a new C function that is as Err bitreich.org 70 i-good as any created by the compiler. Therefore, not all Lisps support Err bitreich.org 70 i-them. @xref{Implementation Support}, for information about @cffi{} Err bitreich.org 70 i-support issues in this and other areas. You may want to consider Err bitreich.org 70 i-changing to a Lisp that supports callbacks in order to continue with Err bitreich.org 70 i-this tutorial.} Err bitreich.org 70 i- Err bitreich.org 70 i-@cindex callback definition Err bitreich.org 70 i-@cindex defining callbacks Err bitreich.org 70 i-Defining a callback is very similar to defining a callout; the main Err bitreich.org 70 i-difference is that we must provide some Lisp forms to be evaluated as Err bitreich.org 70 i-part of the callback. Here is the signature for the function the Err bitreich.org 70 i-@code{:writefunction} option takes: Err bitreich.org 70 i- Err bitreich.org 70 i-@example Err bitreich.org 70 i-size_t Err bitreich.org 70 i-@var{function}(void *ptr, size_t size, size_t nmemb, void *stream); Err bitreich.org 70 i-@end example Err bitreich.org 70 i- Err bitreich.org 70 i-@impnote{size_t is almost always an unsigned int. You can get this Err bitreich.org 70 i-and many other types using feature tests for your system by using Err bitreich.org 70 i-cffi-grovel.} Err bitreich.org 70 i- Err bitreich.org 70 i-The above signature trivially translates into a @cffi{} Err bitreich.org 70 i-@code{defcallback} form, as follows. Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-;;; @lispcmt{Alias in case size_t changes.} Err bitreich.org 70 i-(defctype size :unsigned-int) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; @lispcmt{To be set as the CURLOPT_WRITEFUNCTION of every easy handle.} Err bitreich.org 70 i-(defcallback easy-write size ((ptr :pointer) (size size) Err bitreich.org 70 i- (nmemb size) (stream :pointer)) Err bitreich.org 70 i- (let ((data-size (* size nmemb))) Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- ;; @lispcmt{We use the dynamically-bound *easy-write-procedure* to} Err bitreich.org 70 i- ;; @lispcmt{call a closure with useful lexical context.} Err bitreich.org 70 i- (progn (funcall (symbol-value '*easy-write-procedure*) Err bitreich.org 70 i- (foreign-string-to-lisp ptr :count data-size)) Err bitreich.org 70 i- data-size) ;@lispcmt{indicates success} Err bitreich.org 70 i- ;; @lispcmt{The WRITEFUNCTION should return something other than the} Err bitreich.org 70 i- ;; @lispcmt{#bytes available to signal an error.} Err bitreich.org 70 i- (error () (if (zerop data-size) 1 0))))) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-First, note the correlation of the first few forms, used to declare Err bitreich.org 70 i-the C function's signature, with the signature in C syntax. We Err bitreich.org 70 i-provide a Lisp name for the function, its return type, and a name and Err bitreich.org 70 i-type for each argument. Err bitreich.org 70 i- Err bitreich.org 70 i-In the body, we call the dynamically-bound Err bitreich.org 70 i-@code{*easy-write-procedure*} with a ``finished'' translation, of Err bitreich.org 70 i-pulling together the raw data and size into a Lisp string, rather than Err bitreich.org 70 i-deal with the data directly. As part of calling Err bitreich.org 70 i-@code{curl_easy_perform} later, we'll bind that variable to a closure Err bitreich.org 70 i-with more useful lexical bindings than the top-level Err bitreich.org 70 i-@code{defcallback} form. Err bitreich.org 70 i- Err bitreich.org 70 i-Finally, we make a halfhearted effort to prevent non-local exits from Err bitreich.org 70 i-unwinding the C stack, covering the most likely case with an Err bitreich.org 70 i-@code{error} handler, which is usually triggered Err bitreich.org 70 i-unexpectedly.@footnote{Unfortunately, we can't protect against Err bitreich.org 70 i-@emph{all} non-local exits, such as @code{return}s and @code{throw}s, Err bitreich.org 70 i-because @code{unwind-protect} cannot be used to ``short-circuit'' a Err bitreich.org 70 i-non-local exit in Common Lisp, due to proposal @code{minimal} in Err bitreich.org 70 i-@uref{http://www.lisp.org/HyperSpec/Issues/iss152-writeup.html, Err bitreich.org 70 i-@acronym{ANSI} issue @sc{Exit-Extent}}. Furthermore, binding an Err bitreich.org 70 i-@code{error} handler prevents higher-up code from invoking restarts Err bitreich.org 70 i-that may be provided under the callback's dynamic context. Such is Err bitreich.org 70 i-the way of compromise.} The reason is that most C code is written to Err bitreich.org 70 i-understand its own idiosyncratic error condition, implemented above in Err bitreich.org 70 i-the case of @code{curl_easy_perform}, and more ``undefined behavior'' Err bitreich.org 70 i-can result if we just wipe C stack frames without allowing them to Err bitreich.org 70 i-execute whatever cleanup actions as they like. Err bitreich.org 70 i- Err bitreich.org 70 i-Using the @code{CURLoption} enumeration in @file{curl.h} once more, we Err bitreich.org 70 i-can describe the new option by modifying and reevaluating Err bitreich.org 70 i-@code{define-curl-options}. Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(define-curl-options curl-option Err bitreich.org 70 i- (long 0 objectpoint 10000 functionpoint 20000 off-t 30000) Err bitreich.org 70 i- (:noprogress long 43) Err bitreich.org 70 i- (:nosignal long 99) Err bitreich.org 70 i- (:errorbuffer objectpoint 10) Err bitreich.org 70 i- (:url objectpoint 2) Err bitreich.org 70 i- (:writefunction functionpoint 11)) ;@lispcmt{new item here} Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-Finally, we can use the defined callback and the new Err bitreich.org 70 i-@code{set-curl-option-writefunction} to finish configuring the easy Err bitreich.org 70 i-handle, using the @code{callback} macro to retrieve a @cffi{} Err bitreich.org 70 i-@code{:pointer}, which works like a function pointer in C code. Err bitreich.org 70 i- Err bitreich.org 70 i-@example Err bitreich.org 70 i-@sc{cffi-user>} (set-curl-option-writefunction Err bitreich.org 70 i- *easy-handle* (callback easy-write)) Err bitreich.org 70 i-@result{} 0 Err bitreich.org 70 i-@end example Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@node Tutorial-Completion, Tutorial-Types, Tutorial-Callbacks, Tutorial Err bitreich.org 70 i-@section A complete @acronym{FFI}? Err bitreich.org 70 i- Err bitreich.org 70 i-@c TeX goes insane on @uref{@clikicffi{}} Err bitreich.org 70 i- Err bitreich.org 70 i-With all options finally set and a medium-level interface developed, Err bitreich.org 70 i-we can finish the definition and retrieve Err bitreich.org 70 i-@uref{http://www.cliki.net/CFFI}, as is done in the tutorial. Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defcfun "curl_easy_perform" curl-code Err bitreich.org 70 i- (handle easy-handle)) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@example Err bitreich.org 70 i-@sc{cffi-user>} (with-output-to-string (contents) Err bitreich.org 70 i- (let ((*easy-write-procedure* Err bitreich.org 70 i- (lambda (string) Err bitreich.org 70 i- (write-string string contents)))) Err bitreich.org 70 i- (declare (special *easy-write-procedure*)) Err bitreich.org 70 i- (curl-easy-perform *easy-handle*))) Err bitreich.org 70 i-@result{} " Err bitreich.org 70 i-" Err bitreich.org 70 i-@end example Err bitreich.org 70 i- Err bitreich.org 70 i-Of course, that itself is slightly unwieldy, so you may want to define Err bitreich.org 70 i-a function around it that simply retrieves a @acronym{URL}. I will Err bitreich.org 70 i-leave synthesis of all the relevant @acronym{REPL} forms presented Err bitreich.org 70 i-thus far into a single function as an exercise for the reader. Err bitreich.org 70 i- Err bitreich.org 70 i-The remaining sections of this tutorial explore some advanced features Err bitreich.org 70 i-of @cffi{}; the definition of new types will receive special Err bitreich.org 70 i-attention. Some of these features are essential for particular Err bitreich.org 70 i-foreign function calls; some are very helpful when trying to develop a Err bitreich.org 70 i-Lispy interface to C. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@node Tutorial-Types, Tutorial-Conclusion, Tutorial-Completion, Tutorial Err bitreich.org 70 i-@section Defining new types Err bitreich.org 70 i- Err bitreich.org 70 i-We've occasionally used the @code{defctype} macro in previous sections Err bitreich.org 70 i-as a kind of documentation, much what you'd use @code{typedef} for in Err bitreich.org 70 i-C. We also tried one special kind of type definition, the Err bitreich.org 70 i-@code{defcenum} type. @xref{defcstruct}, for a definition macro that Err bitreich.org 70 i-may come in handy if you need to use C @code{struct}s as data. Err bitreich.org 70 i- Err bitreich.org 70 i-@cindex type definition Err bitreich.org 70 i-@cindex data in Lisp and C Err bitreich.org 70 i-@cindex translating types Err bitreich.org 70 i-However, all of these are mostly sugar for the powerful underlying Err bitreich.org 70 i-foreign type interface called @dfn{type translators}. You can easily Err bitreich.org 70 i-define new translators for any simple named foreign type. Since we've Err bitreich.org 70 i-defined the new type @code{curl-code} to use as the return type for Err bitreich.org 70 i-various @code{libcurl} functions, we can use that to directly convert Err bitreich.org 70 i-c@acronym{URL} errors to Lisp errors. Err bitreich.org 70 i- Err bitreich.org 70 i-@code{defctype}'s purpose is to define simple @code{typedef}-like Err bitreich.org 70 i-aliases. In order to use @dfn{type translators} we must use the Err bitreich.org 70 i-@code{define-foreign-type} macro. So let's redefine @code{curl-code} Err bitreich.org 70 i-using it. Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(define-foreign-type curl-code-type () Err bitreich.org 70 i- () Err bitreich.org 70 i- (:actual-type :int) Err bitreich.org 70 i- (:simple-parser curl-code)) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@code{define-foreign-type} is a thin wrapper around @code{defclass}. Err bitreich.org 70 i-For now, all you need to know in the context of this example is that Err bitreich.org 70 i-it does what @code{(defctype curl-code :int)} would do and, Err bitreich.org 70 i-additionally, defines a new class @code{curl-code-type} which we will Err bitreich.org 70 i-take advantage of shortly. Err bitreich.org 70 i- Err bitreich.org 70 i-The @code{CURLcode} enumeration seems to follow the typical error code Err bitreich.org 70 i-convention of @samp{0} meaning all is well, and each non-zero integer Err bitreich.org 70 i-indicating a different kind of error. We can apply that trivially to Err bitreich.org 70 i-differentiate between normal exits and error exits. Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(define-condition curl-code-error (error) Err bitreich.org 70 i- (($code :initarg :curl-code :reader curl-error-code)) Err bitreich.org 70 i- (:report (lambda (c stream) Err bitreich.org 70 i- (format stream "libcurl function returned error ~A" Err bitreich.org 70 i- (curl-error-code c)))) Err bitreich.org 70 i- (:documentation "Signalled when a libcurl function answers Err bitreich.org 70 i-a code other than CURLE_OK.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-from-foreign (value (type curl-code-type)) Err bitreich.org 70 i- "Raise a CURL-CODE-ERROR if VALUE, a curl-code, is non-zero." Err bitreich.org 70 i- (if (zerop value) Err bitreich.org 70 i- :curle-ok Err bitreich.org 70 i- (error 'curl-code-error :curl-code value))) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@noindent Err bitreich.org 70 i-The heart of this translator is new method Err bitreich.org 70 i-@code{translate-from-foreign}. By specializing the @var{type} Err bitreich.org 70 i-parameter on @code{curl-code-type}, we immediately modify the behavior Err bitreich.org 70 i-of every function that returns a @code{curl-code} to pass the result Err bitreich.org 70 i-through this new method. Err bitreich.org 70 i- Err bitreich.org 70 i-To see the translator in action, try invoking a function that returns Err bitreich.org 70 i-a @code{curl-code}. You need to reevaluate the respective Err bitreich.org 70 i-@code{defcfun} form so that it picks up the new @code{curl-code} Err bitreich.org 70 i-definition. Err bitreich.org 70 i- Err bitreich.org 70 i-@example Err bitreich.org 70 i-@sc{cffi-user>} (set-curl-option-nosignal *easy-handle* 1) Err bitreich.org 70 i-@result{} :CURLE-OK Err bitreich.org 70 i-@end example Err bitreich.org 70 i- Err bitreich.org 70 i-@noindent Err bitreich.org 70 i-As the result was @samp{0}, the new method returned @code{:curle-ok}, Err bitreich.org 70 i-just as specified.@footnote{It might be better to return Err bitreich.org 70 i-@code{(values)} than @code{:curle-ok} in real code, but this is good Err bitreich.org 70 i-for illustration.} I will leave disjoining the separate Err bitreich.org 70 i-@code{CURLcode}s into condition types and improving the @code{:report} Err bitreich.org 70 i-function as an exercise for you. Err bitreich.org 70 i- Err bitreich.org 70 i-The creation of @code{*easy-handle-cstrings*} and Err bitreich.org 70 i-@code{*easy-handle-errorbuffers*} as properties of @code{easy-handle}s Err bitreich.org 70 i-is a kluge. What we really want is a Lisp structure that stores these Err bitreich.org 70 i-properties along with the C pointer. Unfortunately, Err bitreich.org 70 i-@code{easy-handle} is currently just a fancy name for the foreign type Err bitreich.org 70 i-@code{:pointer}; the actual pointer object varies from Common Lisp Err bitreich.org 70 i-implementation to implementation, needing only to satisfy Err bitreich.org 70 i-@code{pointerp} and be returned from @code{make-pointer} and friends. Err bitreich.org 70 i- Err bitreich.org 70 i-One solution that would allow us to define a new Lisp structure to Err bitreich.org 70 i-represent @code{easy-handle}s would be to write a wrapper around every Err bitreich.org 70 i-function that currently takes an @code{easy-handle}; the wrapper would Err bitreich.org 70 i-extract the pointer and pass it to the foreign function. However, we Err bitreich.org 70 i-can use type translators to more elegantly integrate this Err bitreich.org 70 i-``translation'' into the foreign function calling framework, using Err bitreich.org 70 i-@code{translate-to-foreign}. Err bitreich.org 70 i- Err bitreich.org 70 i-@smalllisp Err bitreich.org 70 i-(defclass easy-handle () Err bitreich.org 70 i- ((pointer :initform (curl-easy-init) Err bitreich.org 70 i- :documentation "Foreign pointer from curl_easy_init") Err bitreich.org 70 i- (error-buffer Err bitreich.org 70 i- :initform (foreign-alloc :char :count *curl-error-size* Err bitreich.org 70 i- :initial-element 0) Err bitreich.org 70 i- :documentation "C string describing last error") Err bitreich.org 70 i- (c-strings :initform '() Err bitreich.org 70 i- :documentation "C strings set as options")) Err bitreich.org 70 i- (:documentation "I am a parameterization you may pass to Err bitreich.org 70 i-curl-easy-perform to perform a cURL network protocol request.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod initialize-instance :after ((self easy-handle) &key) Err bitreich.org 70 i- (set-curl-option-errorbuffer self (slot-value self 'error-buffer))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun add-curl-handle-cstring (handle cstring) Err bitreich.org 70 i- "Add CSTRING to be freed when HANDLE is, answering CSTRING." Err bitreich.org 70 i- (car (push cstring (slot-value handle 'c-strings)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-easy-handle-error (handle) Err bitreich.org 70 i- "Answer a string containing HANDLE's current error message." Err bitreich.org 70 i- (foreign-string-to-lisp Err bitreich.org 70 i- (slot-value handle 'error-buffer))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun free-easy-handle (handle) Err bitreich.org 70 i- "Free CURL easy interface HANDLE and any C strings created to Err bitreich.org 70 i-be its options." Err bitreich.org 70 i- (with-slots (pointer error-buffer c-strings) handle Err bitreich.org 70 i- (curl-easy-cleanup pointer) Err bitreich.org 70 i- (foreign-free error-buffer) Err bitreich.org 70 i- (mapc #'foreign-string-free c-strings))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-foreign-type easy-handle-type () Err bitreich.org 70 i- () Err bitreich.org 70 i- (:actual-type :pointer) Err bitreich.org 70 i- (:simple-parser easy-handle)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-to-foreign (handle (type easy-handle-type)) Err bitreich.org 70 i- "Extract the pointer from an easy-HANDLE." Err bitreich.org 70 i- (slot-value handle 'pointer)) Err bitreich.org 70 i-@end smalllisp Err bitreich.org 70 i- Err bitreich.org 70 i-While we changed some of the Lisp functions defined earlier to use Err bitreich.org 70 i-@acronym{CLOS} slots rather than hash tables, the foreign functions Err bitreich.org 70 i-work just as well as they did before. Err bitreich.org 70 i- Err bitreich.org 70 i-@cindex limitations of type translators Err bitreich.org 70 i-The greatest strength, and the greatest limitation, of the type Err bitreich.org 70 i-translator comes from its generalized interface. As stated Err bitreich.org 70 i-previously, we could define all foreign function calls in terms of the Err bitreich.org 70 i-primitive foreign types provided by @cffi{}. The type translator Err bitreich.org 70 i-interface allows us to cleanly specify the relationship between Lisp Err bitreich.org 70 i-and C data, independent of where it appears in a function call. This Err bitreich.org 70 i-independence comes at a price; for example, it cannot be used to Err bitreich.org 70 i-modify translation semantics based on other arguments to a function Err bitreich.org 70 i-call. In these cases, you should rely on other features of Lisp, Err bitreich.org 70 i-rather than the powerful, yet domain-specific, type translator Err bitreich.org 70 i-interface. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@node Tutorial-Conclusion, , Tutorial-Types, Tutorial Err bitreich.org 70 i-@section What's next? Err bitreich.org 70 i- Err bitreich.org 70 i-@cffi{} provides a rich and powerful foundation for communicating with Err bitreich.org 70 i-foreign libraries; as we have seen, it is up to you to make that Err bitreich.org 70 i-experience a pleasantly Lispy one. This tutorial does not cover all Err bitreich.org 70 i-the features of @cffi{}; please see the rest of the manual for Err bitreich.org 70 i-details. In particular, if something seems obviously missing, it is Err bitreich.org 70 i-likely that either code or a good reason for lack of code is already Err bitreich.org 70 i-present. Err bitreich.org 70 i- Err bitreich.org 70 i-@impnote{There are some other things in @cffi{} that might deserve Err bitreich.org 70 i-tutorial sections, such as free-translated-object, or structs. Let us Err bitreich.org 70 i-know which ones you care about.} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c CHAPTER: Wrapper generators Err bitreich.org 70 i- Err bitreich.org 70 i-@node Wrapper generators, Foreign Types, Tutorial, Top Err bitreich.org 70 i-@chapter Wrapper generators Err bitreich.org 70 i- Err bitreich.org 70 i-@cffi{}'s interface is designed for human programmers, being aimed at Err bitreich.org 70 i-aesthetic as well as technical sophistication. However, there are a Err bitreich.org 70 i-few programs aimed at translating C and C++ header files, or Err bitreich.org 70 i-approximations thereof, into @cffi{} forms constituting a foreign Err bitreich.org 70 i-interface to the symbols in those files. Err bitreich.org 70 i- Err bitreich.org 70 i-These wrapper generators are known to support output of @cffi{} forms. Err bitreich.org 70 i- Err bitreich.org 70 i-@table @asis Err bitreich.org 70 i-@item @uref{http://www.cliki.net/Verrazano,Verrazano} Err bitreich.org 70 i-Designed specifically for Common Lisp. Uses @acronym{GCC}'s parser Err bitreich.org 70 i-output in @acronym{XML} format to discover functions, variables, and Err bitreich.org 70 i-other header file data. This means you need @acronym{GCC} to generate Err bitreich.org 70 i-forms; on the other hand, the parser employed is mostly compliant with Err bitreich.org 70 i-@acronym{ANSI} C. Err bitreich.org 70 i- Err bitreich.org 70 i-@item @uref{http://www.cliki.net/SWIG,SWIG} Err bitreich.org 70 i-A foreign interface generator originally designed to generate Python Err bitreich.org 70 i-bindings, it has been ported to many other systems, including @cffi{} Err bitreich.org 70 i-in version 1.3.28. Includes its own C declaration munger, not Err bitreich.org 70 i-intended to be fully-compliant with @acronym{ANSI} C. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-First, this manual does not describe use of these other programs; they Err bitreich.org 70 i-have documentation of their own. If you have problems using a Err bitreich.org 70 i-generated interface, please look at the output @cffi{} forms and Err bitreich.org 70 i-verify that they are a correct @cffi{} interface to the library in Err bitreich.org 70 i-question; if they are correct, contact @cffi{} developers with Err bitreich.org 70 i-details, keeping in mind that they communicate in terms of those forms Err bitreich.org 70 i-rather than any particular wrapper generator. Otherwise, contact the Err bitreich.org 70 i-maintainers of the wrapper generator you are using, provided you can Err bitreich.org 70 i-reasonably expect more accuracy from the generator. Err bitreich.org 70 i- Err bitreich.org 70 i-When is more accuracy an unreasonable expectation? As described in Err bitreich.org 70 i-the tutorial (@pxref{Tutorial-Abstraction,, Breaking the Err bitreich.org 70 i-abstraction}), the information in C declarations is insufficient to Err bitreich.org 70 i-completely describe every interface. In fact, it is quite common to Err bitreich.org 70 i-run into an interface that cannot be handled automatically, and Err bitreich.org 70 i-generators should be excused from generating a complete interface in Err bitreich.org 70 i-these cases. Err bitreich.org 70 i- Err bitreich.org 70 i-As further described in the tutorial, the thinnest Lisp interface to a Err bitreich.org 70 i-C function is not always the most pleasant one. In many cases, you Err bitreich.org 70 i-will want to manually write a Lispier interface to the C functions Err bitreich.org 70 i-that interest you. Err bitreich.org 70 i- Err bitreich.org 70 i-Wrapper generators should be treated as time-savers, not complete Err bitreich.org 70 i-automation of the full foreign interface writing job. Reports of the Err bitreich.org 70 i-amount of work done by generators vary from 30% to 90%. The Err bitreich.org 70 i-incremental development style enabled by @cffi{} generally reduces Err bitreich.org 70 i-this proportion below that for languages like Python. Err bitreich.org 70 i- Err bitreich.org 70 i-@c Where I got the above 30-90% figures: Err bitreich.org 70 i-@c 30%: lemonodor's post about SWIG Err bitreich.org 70 i-@c 90%: Balooga on #lisp. He said 99%, but that's probably an Err bitreich.org 70 i-@c exaggeration (leave it to me to pass judgement :) Err bitreich.org 70 i-@c -stephen Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c CHAPTER: Foreign Types Err bitreich.org 70 i- Err bitreich.org 70 i-@node Foreign Types, Pointers, Wrapper generators, Top Err bitreich.org 70 i-@chapter Foreign Types Err bitreich.org 70 i- Err bitreich.org 70 i-Foreign types describe how data is translated back and forth between C Err bitreich.org 70 i-and Lisp. @cffi{} provides various built-in types and allows the user to Err bitreich.org 70 i-define new types. Err bitreich.org 70 i- Err bitreich.org 70 i-@menu Err bitreich.org 70 i-* Built-In Types:: Err bitreich.org 70 i-* Other Types:: Err bitreich.org 70 i-* Defining Foreign Types:: Err bitreich.org 70 i-* Foreign Type Translators:: Err bitreich.org 70 i-* Optimizing Type Translators:: Err bitreich.org 70 i-* Foreign Structure Types:: Err bitreich.org 70 i-* Allocating Foreign Objects:: Err bitreich.org 70 i- Err bitreich.org 70 i-Dictionary Err bitreich.org 70 i- Err bitreich.org 70 i-* convert-from-foreign:: Err bitreich.org 70 i-* convert-to-foreign:: Err bitreich.org 70 i-* defbitfield:: Err bitreich.org 70 i-* defcstruct:: Err bitreich.org 70 i-* defcunion:: Err bitreich.org 70 i-* defctype:: Err bitreich.org 70 i-* defcenum:: Err bitreich.org 70 i-@c * define-type-spec-parser:: Err bitreich.org 70 i-* define-foreign-type:: Err bitreich.org 70 i-* define-parse-method:: Err bitreich.org 70 i-@c * explain-foreign-slot-value: Err bitreich.org 70 i-* foreign-bitfield-symbols:: Err bitreich.org 70 i-* foreign-bitfield-value:: Err bitreich.org 70 i-* foreign-enum-keyword:: Err bitreich.org 70 i-* foreign-enum-value:: Err bitreich.org 70 i-* foreign-slot-names:: Err bitreich.org 70 i-* foreign-slot-offset:: Err bitreich.org 70 i-* foreign-slot-pointer:: Err bitreich.org 70 i-* foreign-slot-value:: Err bitreich.org 70 i-* foreign-type-alignment:: Err bitreich.org 70 i-* foreign-type-size:: Err bitreich.org 70 i-* free-converted-object:: Err bitreich.org 70 i-* free-translated-object:: Err bitreich.org 70 i-* translate-from-foreign:: Err bitreich.org 70 i-* translate-to-foreign:: Err bitreich.org 70 i-* translate-into-foreign-memory:: Err bitreich.org 70 i-* with-foreign-slots:: Err bitreich.org 70 i-@end menu Err bitreich.org 70 i- Err bitreich.org 70 i-@node Built-In Types, Other Types, Foreign Types, Foreign Types Err bitreich.org 70 i-@section Built-In Types Err bitreich.org 70 i- Err bitreich.org 70 i-@ForeignType{:char} Err bitreich.org 70 i-@ForeignType{:unsigned-char} Err bitreich.org 70 i-@ForeignType{:short} Err bitreich.org 70 i-@ForeignType{:unsigned-short} Err bitreich.org 70 i-@ForeignType{:int} Err bitreich.org 70 i-@ForeignType{:unsigned-int} Err bitreich.org 70 i-@ForeignType{:long} Err bitreich.org 70 i-@ForeignType{:unsigned-long} Err bitreich.org 70 i-@ForeignType{:long-long} Err bitreich.org 70 i-@ForeignType{:unsigned-long-long} Err bitreich.org 70 i- Err bitreich.org 70 i-These types correspond to the native C integer types according to the Err bitreich.org 70 i-@acronym{ABI} of the Lisp implementation's host system. Err bitreich.org 70 i- Err bitreich.org 70 i-@code{:long-long} and @code{:unsigned-long-long} are not supported Err bitreich.org 70 i-natively on all implementations. However, they are emulated by Err bitreich.org 70 i-@code{mem-ref} and @code{mem-set}. Err bitreich.org 70 i- Err bitreich.org 70 i-When those types are @strong{not} available, the symbol Err bitreich.org 70 i-@code{cffi-sys::no-long-long} is pushed into @code{*features*}. Err bitreich.org 70 i- Err bitreich.org 70 i-@ForeignType{:uchar} Err bitreich.org 70 i-@ForeignType{:ushort} Err bitreich.org 70 i-@ForeignType{:uint} Err bitreich.org 70 i-@ForeignType{:ulong} Err bitreich.org 70 i-@ForeignType{:llong} Err bitreich.org 70 i-@ForeignType{:ullong} Err bitreich.org 70 i- Err bitreich.org 70 i-For convenience, the above types are provided as shortcuts for Err bitreich.org 70 i-@code{unsigned-char}, @code{unsigned-short}, @code{unsigned-int}, Err bitreich.org 70 i-@code{unsigned-long}, @code{long-long} and @code{unsigned-long-long}, Err bitreich.org 70 i-respectively. Err bitreich.org 70 i- Err bitreich.org 70 i-@ForeignType{:int8} Err bitreich.org 70 i-@ForeignType{:uint8} Err bitreich.org 70 i-@ForeignType{:int16} Err bitreich.org 70 i-@ForeignType{:uint16} Err bitreich.org 70 i-@ForeignType{:int32} Err bitreich.org 70 i-@ForeignType{:uint32} Err bitreich.org 70 i-@ForeignType{:int64} Err bitreich.org 70 i-@ForeignType{:uint64} Err bitreich.org 70 i- Err bitreich.org 70 i-Foreign integer types of specific sizes, corresponding to the C types Err bitreich.org 70 i-defined in @code{stdint.h}. Err bitreich.org 70 i- Err bitreich.org 70 i-@c @ForeignType{:size} Err bitreich.org 70 i-@c @ForeignType{:ssize} Err bitreich.org 70 i-@c @ForeignType{:ptrdiff} Err bitreich.org 70 i-@c @ForeignType{:time} Err bitreich.org 70 i- Err bitreich.org 70 i-@c Foreign integer types corresponding to the standard C types (without Err bitreich.org 70 i-@c the @code{_t} suffix). Err bitreich.org 70 i- Err bitreich.org 70 i-@c @impnote{These are not implemented yet. --luis} Err bitreich.org 70 i- Err bitreich.org 70 i-@c @impnote{I'm sure there are more of these that could be useful, let's Err bitreich.org 70 i-@c add any types that can't be defined portably to this list as Err bitreich.org 70 i-@c necessary. --james} Err bitreich.org 70 i- Err bitreich.org 70 i-@ForeignType{:float} Err bitreich.org 70 i-@ForeignType{:double} Err bitreich.org 70 i- Err bitreich.org 70 i-On all systems, the @code{:float} and @code{:double} types represent a Err bitreich.org 70 i-C @code{float} and @code{double}, respectively. On most but not all Err bitreich.org 70 i-systems, @code{:float} and @code{:double} represent a Lisp Err bitreich.org 70 i-@code{single-float} and @code{double-float}, respectively. It is not Err bitreich.org 70 i-so useful to consider the relationship between Lisp types and C types Err bitreich.org 70 i-as isomorphic, as simply to recognize the relationship, and relative Err bitreich.org 70 i-precision, among each respective category. Err bitreich.org 70 i- Err bitreich.org 70 i-@ForeignType{:long-double} Err bitreich.org 70 i- Err bitreich.org 70 i-This type is only supported on SCL. Err bitreich.org 70 i- Err bitreich.org 70 i-@ForeignType{:pointer &optional type} Err bitreich.org 70 i- Err bitreich.org 70 i-A foreign pointer to an object of any type, corresponding to Err bitreich.org 70 i-@code{void *}. You can optionally specify type of pointer Err bitreich.org 70 i-(e.g. @code{(:pointer :char)}). Although @cffi{} won't do anything Err bitreich.org 70 i-with that information yet, it is useful for documentation purposes. Err bitreich.org 70 i- Err bitreich.org 70 i-@ForeignType{:void} Err bitreich.org 70 i- Err bitreich.org 70 i-No type at all. Only valid as the return type of a function. Err bitreich.org 70 i- Err bitreich.org 70 i-@node Other Types, Defining Foreign Types, Built-In Types, Foreign Types Err bitreich.org 70 i-@section Other Types Err bitreich.org 70 i- Err bitreich.org 70 i-@cffi{} also provides a few useful types that aren't built-in C Err bitreich.org 70 i-types. Err bitreich.org 70 i- Err bitreich.org 70 i-@ForeignType{:string} Err bitreich.org 70 i- Err bitreich.org 70 i-The @code{:string} type performs automatic conversion between Lisp and Err bitreich.org 70 i-C strings. Note that, in the case of functions the converted C string Err bitreich.org 70 i-will have dynamic extent (i.e.@: it will be automatically freed after Err bitreich.org 70 i-the foreign function returns). Err bitreich.org 70 i- Err bitreich.org 70 i-In addition to Lisp strings, this type will accept foreign pointers Err bitreich.org 70 i-and pass them unmodified. Err bitreich.org 70 i- Err bitreich.org 70 i-A method for @ref{free-translated-object} is specialized for this Err bitreich.org 70 i-type. So, for example, foreign strings allocated by this type and Err bitreich.org 70 i-passed to a foreign function will be freed after the function Err bitreich.org 70 i-returns. Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (foreign-funcall "getenv" :string "SHELL" :string) Err bitreich.org 70 i-@result{} "/bin/bash" Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (with-foreign-string (str "abcdef") Err bitreich.org 70 i- (foreign-funcall "strlen" :string str :int)) Err bitreich.org 70 i-@result{} 6 Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@ForeignType{:string+ptr} Err bitreich.org 70 i- Err bitreich.org 70 i-Like @code{:string} but returns a list with two values when convert Err bitreich.org 70 i-from C to Lisp: a Lisp string and the C string's foreign pointer. Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (foreign-funcall "getenv" :string "SHELL" :string+ptr) Err bitreich.org 70 i-@result{} ("/bin/bash" #.(SB-SYS:INT-SAP #XBFFFFC6F)) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@ForeignType{:boolean &optional (base-type :int)} Err bitreich.org 70 i- Err bitreich.org 70 i-The @code{:boolean} type converts between a Lisp boolean and a C Err bitreich.org 70 i-boolean. It canonicalizes to @var{base-type} which is @code{:int} by Err bitreich.org 70 i-default. Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(convert-to-foreign nil :boolean) @result{} 0 Err bitreich.org 70 i-(convert-to-foreign t :boolean) @result{} 1 Err bitreich.org 70 i-(convert-from-foreign 0 :boolean) @result{} nil Err bitreich.org 70 i-(convert-from-foreign 1 :boolean) @result{} t Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@ForeignType{:bool} Err bitreich.org 70 i- Err bitreich.org 70 i-The @code{:bool} type represents the C99 @code{_Bool} or C++ Err bitreich.org 70 i-@code{bool}. Its size is usually 1 byte except on OSX where it's an Err bitreich.org 70 i-@code{int}. Err bitreich.org 70 i- Err bitreich.org 70 i-@ForeignType{:wrapper base-type &key to-c from-c} Err bitreich.org 70 i- Err bitreich.org 70 i-The @code{:wrapper} type stores two symbols passed to the @var{to-c} Err bitreich.org 70 i-and @var{from-c} arguments. When a value is being translated to or Err bitreich.org 70 i-from C, this type @code{funcall}s the respective symbol. Err bitreich.org 70 i- Err bitreich.org 70 i-@code{:wrapper} types will be typedefs for @var{base-type} and will Err bitreich.org 70 i-inherit its translators, if any. Err bitreich.org 70 i- Err bitreich.org 70 i-Here's an example of how the @code{:boolean} type could be defined in Err bitreich.org 70 i-terms of @code{:wrapper}. Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defun bool-c-to-lisp (value) Err bitreich.org 70 i- (not (zerop value))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun bool-lisp-to-c (value) Err bitreich.org 70 i- (if value 1 0)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype my-bool (:wrapper :int :from-c bool-c-to-lisp Err bitreich.org 70 i- :to-c bool-lisp-to-c)) Err bitreich.org 70 i- Err bitreich.org 70 i-(convert-to-foreign nil 'my-bool) @result{} 0 Err bitreich.org 70 i-(convert-from-foreign 1 'my-bool) @result{} t Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@node Defining Foreign Types, Foreign Type Translators, Other Types, Foreign Types Err bitreich.org 70 i-@section Defining Foreign Types Err bitreich.org 70 i- Err bitreich.org 70 i-You can define simple C-like @code{typedef}s through the Err bitreich.org 70 i-@code{defctype} macro. Defining a typedef is as simple as giving Err bitreich.org 70 i-@code{defctype} a new name and the name of the type to be wrapped. Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-;;; @lispcmt{Define MY-INT as an alias for the built-in type :INT.} Err bitreich.org 70 i-(defctype my-int :int) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-With this type definition, one can, for instance, declare arguments to Err bitreich.org 70 i-foreign functions as having the type @code{my-int}, and they will be Err bitreich.org 70 i-passed as integers. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading More complex types Err bitreich.org 70 i- Err bitreich.org 70 i-@cffi{} offers another way to define types through Err bitreich.org 70 i-@code{define-foreign-type}, a thin wrapper macro around Err bitreich.org 70 i-@code{defclass}. As an example, let's go through the steps needed to Err bitreich.org 70 i-define a @code{(my-string &key encoding)} type. First, we need to Err bitreich.org 70 i-define our type class: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(define-foreign-type my-string-type () Err bitreich.org 70 i- ((encoding :reader string-type-encoding :initarg :encoding)) Err bitreich.org 70 i- (:actual-type :pointer)) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-The @code{:actual-type} class option tells CFFI that this type will Err bitreich.org 70 i-ultimately be passed to and received from foreign code as a Err bitreich.org 70 i-@code{:pointer}. Now you need to tell CFFI how to parse a type Err bitreich.org 70 i-specification such as @code{(my-string :encoding :utf8)} into an Err bitreich.org 70 i-instance of @code{my-string-type}. We do that with Err bitreich.org 70 i-@code{define-parse-method}: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(define-parse-method my-string (&key (encoding :utf-8)) Err bitreich.org 70 i- (make-instance 'my-string-type :encoding encoding)) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-The next section describes how make this type actually translate Err bitreich.org 70 i-between C and Lisp strings. Err bitreich.org 70 i- Err bitreich.org 70 i-@node Foreign Type Translators, Optimizing Type Translators, Defining Foreign Types, Foreign Types Err bitreich.org 70 i-@section Foreign Type Translators Err bitreich.org 70 i- Err bitreich.org 70 i-Type translators are used to automatically convert Lisp values to or Err bitreich.org 70 i-from foreign values. For example, using type translators, one can Err bitreich.org 70 i-take the @code{my-string} type defined in the previous section and Err bitreich.org 70 i-specify that it should: Err bitreich.org 70 i- Err bitreich.org 70 i-@itemize Err bitreich.org 70 i-@item Err bitreich.org 70 i-convert C strings to Lisp strings; Err bitreich.org 70 i-@item Err bitreich.org 70 i-convert Lisp strings to newly allocated C strings; Err bitreich.org 70 i-@item Err bitreich.org 70 i-free said C strings when they are no longer needed. Err bitreich.org 70 i-@end itemize Err bitreich.org 70 i- Err bitreich.org 70 i-In order to tell @cffi{} how to automatically convert Lisp values to Err bitreich.org 70 i-foreign values, define a specialized method for the Err bitreich.org 70 i-@code{translate-to-foreign} generic function: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-;;; @lispcmt{Define a method that converts Lisp strings to C strings.} Err bitreich.org 70 i-(defmethod translate-to-foreign (string (type my-string-type)) Err bitreich.org 70 i- (foreign-string-alloc string :encoding (string-type-encoding type))) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@noindent Err bitreich.org 70 i-From now on, whenever an object is passed as a @code{my-string} to a Err bitreich.org 70 i-foreign function, this method will be invoked to convert the Lisp Err bitreich.org 70 i-value. To perform the inverse operation, which is needed for functions Err bitreich.org 70 i-that return a @code{my-string}, specialize the Err bitreich.org 70 i-@code{translate-from-foreign} generic function in the same manner: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-;;; @lispcmt{Define a method that converts C strings to Lisp strings.} Err bitreich.org 70 i-(defmethod translate-from-foreign (pointer (type my-string-type)) Err bitreich.org 70 i- (foreign-string-to-lisp pointer :encoding (string-type-encoding type))) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@noindent Err bitreich.org 70 i-When a @code{translate-to-foreign} method requires allocation of Err bitreich.org 70 i-foreign memory, you must also define a @code{free-translated-object} Err bitreich.org 70 i-method to free the memory once the foreign object is no longer needed, Err bitreich.org 70 i-otherwise you'll be faced with memory leaks. This generic function is Err bitreich.org 70 i-called automatically by @cffi{} when passing objects to foreign Err bitreich.org 70 i-functions. Let's do that: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-;;; @lispcmt{Free strings allocated by translate-to-foreign.} Err bitreich.org 70 i-(defmethod free-translated-object (pointer (type my-string-type) param) Err bitreich.org 70 i- (declare (ignore param)) Err bitreich.org 70 i- (foreign-string-free pointer)) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@noindent Err bitreich.org 70 i-In this specific example, we don't need the @var{param} argument, so Err bitreich.org 70 i-we ignore it. See @ref{free-translated-object}, for an explanation of Err bitreich.org 70 i-its purpose and how you can use it. Err bitreich.org 70 i- Err bitreich.org 70 i-A type translator does not necessarily need to convert the value. For Err bitreich.org 70 i-example, one could define a typedef for @code{:pointer} that ensures, Err bitreich.org 70 i-in the @code{translate-to-foreign} method, that the value is not a Err bitreich.org 70 i-null pointer, signalling an error if a null pointer is passed. This Err bitreich.org 70 i-would prevent some pointer errors when calling foreign functions that Err bitreich.org 70 i-cannot handle null pointers. Err bitreich.org 70 i- Err bitreich.org 70 i-@strong{Please note:} these methods are meant as extensible hooks Err bitreich.org 70 i-only, and you should not call them directly. Use Err bitreich.org 70 i-@code{convert-to-foreign}, @code{convert-from-foreign} and Err bitreich.org 70 i-@code{free-converted-object} instead. Err bitreich.org 70 i- Err bitreich.org 70 i-@xref{Tutorial-Types,, Defining new types}, for another example of Err bitreich.org 70 i-type translators. Err bitreich.org 70 i- Err bitreich.org 70 i-@node Optimizing Type Translators, Foreign Structure Types, Foreign Type Translators, Foreign Types Err bitreich.org 70 i-@section Optimizing Type Translators Err bitreich.org 70 i- Err bitreich.org 70 i-@cindex type translators, optimizing Err bitreich.org 70 i-@cindex compiler macros for type translation Err bitreich.org 70 i-@cindex defining type-translation compiler macros Err bitreich.org 70 i-Being based on generic functions, the type translation mechanism Err bitreich.org 70 i-described above can add a bit of overhead. This is usually not Err bitreich.org 70 i-significant, but we nevertheless provide a way of getting rid of the Err bitreich.org 70 i-overhead for the cases where it matters. Err bitreich.org 70 i- Err bitreich.org 70 i-A good way to understand this issue is to look at the code generated Err bitreich.org 70 i-by @code{defcfun}. Consider the following example using the previously Err bitreich.org 70 i-defined @code{my-string} type: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (macroexpand-1 '(defcfun foo my-string (x my-string))) Err bitreich.org 70 i-;; @lispcmt{(simplified, downcased, etc...)} Err bitreich.org 70 i-(defun foo (x) Err bitreich.org 70 i- (multiple-value-bind (#:G2019 #:PARAM3149) Err bitreich.org 70 i- (translate-to-foreign x #) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (translate-from-foreign Err bitreich.org 70 i- (foreign-funcall "foo" :pointer #:G2019 :pointer) Err bitreich.org 70 i- #) Err bitreich.org 70 i- (free-translated-object #:G2019 # Err bitreich.org 70 i- #:PARAM3149)))) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@noindent Err bitreich.org 70 i-In order to get rid of those generic function calls, @cffi{} has Err bitreich.org 70 i-another set of extensible generic functions that provide functionality Err bitreich.org 70 i-similar to @acronym{CL}'s compiler macros: Err bitreich.org 70 i-@code{expand-to-foreign-dyn}, @code{expand-to-foreign} and Err bitreich.org 70 i-@code{expand-from-foreign}. Here's how one could define a Err bitreich.org 70 i-@code{my-boolean} with them: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(define-foreign-type my-boolean-type () Err bitreich.org 70 i- () Err bitreich.org 70 i- (:actual-type :int) Err bitreich.org 70 i- (:simple-parser my-boolean)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod expand-to-foreign (value (type my-boolean-type)) Err bitreich.org 70 i- `(if ,value 1 0)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod expand-from-foreign (value (type my-boolean-type)) Err bitreich.org 70 i- `(not (zerop ,value))) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@noindent Err bitreich.org 70 i-And here's what the macroexpansion of a function using this type would Err bitreich.org 70 i-look like: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (macroexpand-1 '(defcfun bar my-boolean (x my-boolean))) Err bitreich.org 70 i-;; @lispcmt{(simplified, downcased, etc...)} Err bitreich.org 70 i-(defun bar (x) Err bitreich.org 70 i- (let ((#:g3182 (if x 1 0))) Err bitreich.org 70 i- (not (zerop (foreign-funcall "bar" :int #:g3182 :int))))) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@noindent Err bitreich.org 70 i-No generic function overhead. Err bitreich.org 70 i- Err bitreich.org 70 i-Let's go back to our @code{my-string} type. The expansion interface Err bitreich.org 70 i-has no equivalent of @code{free-translated-object}; you must instead Err bitreich.org 70 i-define a method on @code{expand-to-foreign-dyn}, the third generic Err bitreich.org 70 i-function in this interface. This is especially useful when you can Err bitreich.org 70 i-allocate something much more efficiently if you know the object has Err bitreich.org 70 i-dynamic extent, as is the case with function calls that don't save the Err bitreich.org 70 i-relevant allocated arguments. Err bitreich.org 70 i- Err bitreich.org 70 i-This exactly what we need for the @code{my-string} type: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defmethod expand-from-foreign (form (type my-string-type)) Err bitreich.org 70 i- `(foreign-string-to-lisp ,form)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod expand-to-foreign-dyn (value var body (type my-string-type)) Err bitreich.org 70 i- (let ((encoding (string-type-encoding type))) Err bitreich.org 70 i- `(with-foreign-string (,var ,value :encoding ',encoding) Err bitreich.org 70 i- ,@@body))) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@noindent Err bitreich.org 70 i-So let's look at the macro expansion: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (macroexpand-1 '(defcfun foo my-string (x my-string))) Err bitreich.org 70 i-;; @lispcmt{(simplified, downcased, etc...)} Err bitreich.org 70 i-(defun foo (x) Err bitreich.org 70 i- (with-foreign-string (#:G2021 X :encoding ':utf-8) Err bitreich.org 70 i- (foreign-string-to-lisp Err bitreich.org 70 i- (foreign-funcall "foo" :pointer #:g2021 :pointer)))) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@noindent Err bitreich.org 70 i-Again, no generic function overhead. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Other details Err bitreich.org 70 i- Err bitreich.org 70 i-To short-circuit expansion and use the @code{translate-*} functions Err bitreich.org 70 i-instead, simply call the next method. Return its result in cases Err bitreich.org 70 i-where your method cannot generate an appropriate replacement for it. Err bitreich.org 70 i-This analogous to the @code{&whole form} mechanism compiler macros Err bitreich.org 70 i-provide. Err bitreich.org 70 i- Err bitreich.org 70 i-The @code{expand-*} methods have precedence over their Err bitreich.org 70 i-@code{translate-*} counterparts and are guaranteed to be used in Err bitreich.org 70 i-@code{defcfun}, @code{foreign-funcall}, @code{defcvar} and Err bitreich.org 70 i-@code{defcallback}. If you define a method on each of the Err bitreich.org 70 i-@code{expand-*} generic functions, you are guaranteed to have full Err bitreich.org 70 i-control over the expressions generated for type translation in these Err bitreich.org 70 i-macros. Err bitreich.org 70 i- Err bitreich.org 70 i-They may or may not be used in other @cffi{} operators that need to Err bitreich.org 70 i-translate between Lisp and C data; you may only assume that Err bitreich.org 70 i-@code{expand-*} methods will probably only be called during Lisp Err bitreich.org 70 i-compilation. Err bitreich.org 70 i- Err bitreich.org 70 i-@code{expand-to-foreign-dyn} has precedence over Err bitreich.org 70 i-@code{expand-to-foreign} and is only used in @code{defcfun} and Err bitreich.org 70 i-@code{foreign-funcall}, only making sense in those contexts. Err bitreich.org 70 i- Err bitreich.org 70 i-@strong{Important note:} this set of generic functions is called at Err bitreich.org 70 i-macroexpansion time. Methods are defined when loaded or evaluated, Err bitreich.org 70 i-not compiled. You are responsible for ensuring that your Err bitreich.org 70 i-@code{expand-*} methods are defined when the @code{foreign-funcall} or Err bitreich.org 70 i-other forms that use them are compiled. One way to do this is to put Err bitreich.org 70 i-the method definitions earlier in the file and inside an appropriate Err bitreich.org 70 i-@code{eval-when} form; another way is to always load a separate Lisp Err bitreich.org 70 i-or @acronym{FASL} file containing your @code{expand-*} definitions Err bitreich.org 70 i-before compiling files with forms that ought to use them. Otherwise, Err bitreich.org 70 i-they will not be found and the runtime translators will be used Err bitreich.org 70 i-instead. Err bitreich.org 70 i- Err bitreich.org 70 i-@node Foreign Structure Types, Allocating Foreign Objects, Optimizing Type Translators, Foreign Types Err bitreich.org 70 i-@section Foreign Structure Types Err bitreich.org 70 i- Err bitreich.org 70 i-For more involved C types than simple aliases to built-in types, such Err bitreich.org 70 i-as you can make with @code{defctype}, @cffi{} allows declaration of Err bitreich.org 70 i-structures and unions with @code{defcstruct} and @code{defcunion}. Err bitreich.org 70 i- Err bitreich.org 70 i-For example, consider this fictional C structure declaration holding Err bitreich.org 70 i-some personal information: Err bitreich.org 70 i- Err bitreich.org 70 i-@example Err bitreich.org 70 i-struct person @{ Err bitreich.org 70 i- int number; Err bitreich.org 70 i- char* reason; Err bitreich.org 70 i-@}; Err bitreich.org 70 i-@end example Err bitreich.org 70 i- Err bitreich.org 70 i-@noindent Err bitreich.org 70 i-The equivalent @code{defcstruct} form follows: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defcstruct person Err bitreich.org 70 i- (number :int) Err bitreich.org 70 i- (reason :string)) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@c LMH structure translation Err bitreich.org 70 i-By default, @ref{convert-from-foreign} (and also @ref{mem-ref}) will Err bitreich.org 70 i-make a plist with slot names as keys, and @ref{convert-to-foreign} will Err bitreich.org 70 i-translate such a plist to a foreign structure. A user wishing to define Err bitreich.org 70 i-other translations should use the @code{:class} argument to Err bitreich.org 70 i-@ref{defcstruct}, and then define methods for Err bitreich.org 70 i-@ref{translate-from-foreign} and Err bitreich.org 70 i-@ref{translate-into-foreign-memory} that specialize on this class, Err bitreich.org 70 i-possibly calling @code{call-next-method} to translate from and to the Err bitreich.org 70 i-plists rather than provide a direct interface to the foreign object. Err bitreich.org 70 i-The macro @code{translation-forms-for-class} will generate the forms Err bitreich.org 70 i-necessary to translate a Lisp class into a foreign structure and vice Err bitreich.org 70 i-versa. Err bitreich.org 70 i-@c Write separate function doc section for translation-forms-for-class? Err bitreich.org 70 i-@c Examples, perhaps taken from the tests? Err bitreich.org 70 i- Err bitreich.org 70 i-Please note that this interface is only for those that must know about Err bitreich.org 70 i-the values contained in a relevant struct. If the library you are Err bitreich.org 70 i-interfacing returns an opaque pointer that needs only be passed to Err bitreich.org 70 i-other C library functions, by all means just use @code{:pointer} or a Err bitreich.org 70 i-type-safe definition munged together with @code{defctype} and type Err bitreich.org 70 i-translation. To pass or return a structure by value to a function, load Err bitreich.org 70 i-the cffi-libffi system and specify the structure as @code{(:struct Err bitreich.org 70 i-@var{structure-name})}. To pass or return the pointer, you can use Err bitreich.org 70 i-either @code{:pointer} or @code{(:pointer (:struct Err bitreich.org 70 i-@var{structure-name}))}. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Optimizing translate-into-foreign-memory Err bitreich.org 70 i- Err bitreich.org 70 i-Just like how @ref{translate-from-foreign} had Err bitreich.org 70 i-@code{expand-from-foreign} to optimize away the generic function call Err bitreich.org 70 i-and @ref{translate-to-foreign} had the same in Err bitreich.org 70 i-@code{expand-to-foreign}, @ref{translate-into-foreign-memory} has Err bitreich.org 70 i-@code{expand-into-foreign-memory}. Err bitreich.org 70 i- Err bitreich.org 70 i-Let's use our @code{person} struct in an example. However, we are Err bitreich.org 70 i-going to spice it up by using a lisp struct rather than a plist to Err bitreich.org 70 i-represent the person in lisp. Err bitreich.org 70 i- Err bitreich.org 70 i-First we redefine @code{person} very slightly. Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defcstruct (person :class c-person) Err bitreich.org 70 i- (number :int) Err bitreich.org 70 i- (reason :string)) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-By adding @code{:class} we can specialize the @code{translate-*} Err bitreich.org 70 i-methods on the type @code{c-person}. Err bitreich.org 70 i- Err bitreich.org 70 i-Next we define a lisp struct to use instead of the plists. Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defstruct lisp-person Err bitreich.org 70 i- (number 0 :type integer) Err bitreich.org 70 i- (reason "" :type string)) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-And now let's define the type translators we know already: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defmethod translate-from-foreign (ptr (type c-person)) Err bitreich.org 70 i- (with-foreign-slots ((number reason) ptr (:struct person)) Err bitreich.org 70 i- (make-lisp-person :number number :reason reason))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod expand-from-foreign (ptr (type c-person)) Err bitreich.org 70 i- `(with-foreign-slots ((number reason) ,ptr (:struct person)) Err bitreich.org 70 i- (make-lisp-person :number number :reason reason))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-into-foreign-memory (value (type c-person) ptr) Err bitreich.org 70 i- (with-foreign-slots ((number reason) ptr (:struct person)) Err bitreich.org 70 i- (setf number (lisp-person-number value) Err bitreich.org 70 i- reason (lisp-person-reason value)))) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-At this point everything works, we can convert to and from our Err bitreich.org 70 i-@code{lisp-person} and foreign @code{person}. If we macroexpand Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(setf (mem-aref ptr '(:struct person)) x) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-we get something like: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(let ((#:store879 x)) Err bitreich.org 70 i- (translate-into-foreign-memory #:store879 # Err bitreich.org 70 i- (inc-pointer ptr 0)) Err bitreich.org 70 i- #:store879) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-Which is good, but now we can do better and get rid of that generic Err bitreich.org 70 i-function call to @code{translate-into-foreign-memory}. Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defmethod expand-into-foreign-memory (value (type c-person) ptr) Err bitreich.org 70 i- `(with-foreign-slots ((number reason) ,ptr (:struct person)) Err bitreich.org 70 i- (setf number (lisp-person-number ,value) Err bitreich.org 70 i- reason (lisp-person-reason ,value)))) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-Now we can expand again so see the changes: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-;; this: Err bitreich.org 70 i-(setf (mem-aref ptr '(:struct person)) x) Err bitreich.org 70 i- Err bitreich.org 70 i-;; expands to this Err bitreich.org 70 i-;; (simplified, downcased, etc..) Err bitreich.org 70 i-(let ((#:store887 x)) Err bitreich.org 70 i- (with-foreign-slots ((number reason) (inc-pointer ptr 0) (:struct person)) Err bitreich.org 70 i- (setf number (lisp-person-number #:store887) Err bitreich.org 70 i- reason (lisp-person-reason #:store887))) #:store887) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-And there we are, no generic function overhead. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Compatibility note Err bitreich.org 70 i- Err bitreich.org 70 i-Previous versions of CFFI accepted the Err bitreich.org 70 i-``bare'' @var{structure-name} as a type specification, which was Err bitreich.org 70 i-interpreted as a pointer to the structure. This is deprecated and Err bitreich.org 70 i-produces a style warning. Using this deprecated form means that Err bitreich.org 70 i-@ref{mem-aref} retains its prior meaning and returns a pointer. Using Err bitreich.org 70 i-the @code{(:struct @var{structure-name})} form for the type, Err bitreich.org 70 i-@ref{mem-aref} provides a Lisp object translated from the Err bitreich.org 70 i-structure (by default a plist). Thus the semantics are consistent with all Err bitreich.org 70 i-types in returning the object as represented in Lisp, and not a pointer, Err bitreich.org 70 i-with the exception of the ``bare'' structure compatibility retained. Err bitreich.org 70 i-In order to obtain the pointer, you should use the function @ref{mem-aptr}. Err bitreich.org 70 i- Err bitreich.org 70 i-See @ref{defcstruct} for more details. Err bitreich.org 70 i- Err bitreich.org 70 i-@node Allocating Foreign Objects, convert-from-foreign, Foreign Structure Types, Foreign Types Err bitreich.org 70 i-@section Allocating Foreign Objects Err bitreich.org 70 i- Err bitreich.org 70 i-@c I moved this because I moved with-foreign-object to the Pointers Err bitreich.org 70 i-@c chapter, where foreign-alloc is. Err bitreich.org 70 i- Err bitreich.org 70 i-@xref{Allocating Foreign Memory}. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c CONVERT-FROM-FOREIGN Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node convert-from-foreign, convert-to-foreign, Allocating Foreign Objects, Foreign Types Err bitreich.org 70 i-@heading convert-from-foreign Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{convert-from-foreign foreign-value type @res{} value} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item foreign-value Err bitreich.org 70 i-The primitive C value as returned from a primitive foreign function or Err bitreich.org 70 i-from @code{convert-to-foreign}. Err bitreich.org 70 i- Err bitreich.org 70 i-@item type Err bitreich.org 70 i-A @cffi{} type specifier. Err bitreich.org 70 i- Err bitreich.org 70 i-@item value Err bitreich.org 70 i-The Lisp value translated from @var{foreign-value}. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i- Err bitreich.org 70 i-This is an external interface to the type translation facility. In Err bitreich.org 70 i-the implementation, all foreign functions are ultimately defined as Err bitreich.org 70 i-type translation wrappers around primitive foreign function Err bitreich.org 70 i-invocations. Err bitreich.org 70 i- Err bitreich.org 70 i-This function is available mostly for inspection of the type Err bitreich.org 70 i-translation process, and possibly optimization of special cases of Err bitreich.org 70 i-your foreign function calls. Err bitreich.org 70 i- Err bitreich.org 70 i-Its behavior is better described under @code{translate-from-foreign}'s Err bitreich.org 70 i-documentation. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI-USER> (convert-to-foreign "a boat" :string) Err bitreich.org 70 i-@result{} # Err bitreich.org 70 i-@result{} T Err bitreich.org 70 i-CFFI-USER> (convert-from-foreign * :string) Err bitreich.org 70 i-@result{} "a boat" Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{convert-to-foreign} @* Err bitreich.org 70 i-@seealso{free-converted-object} @* Err bitreich.org 70 i-@seealso{translate-from-foreign} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c CONVERT-TO-FOREIGN Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node convert-to-foreign, defbitfield, convert-from-foreign, Foreign Types Err bitreich.org 70 i-@heading convert-to-foreign Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{convert-to-foreign value type @res{} foreign-value, alloc-params} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item value Err bitreich.org 70 i-The Lisp object to be translated to a foreign object. Err bitreich.org 70 i- Err bitreich.org 70 i-@item type Err bitreich.org 70 i-A @cffi{} type specifier. Err bitreich.org 70 i- Err bitreich.org 70 i-@item foreign-value Err bitreich.org 70 i-The primitive C value, ready to be passed to a primitive foreign Err bitreich.org 70 i-function. Err bitreich.org 70 i- Err bitreich.org 70 i-@item alloc-params Err bitreich.org 70 i-Something of a translation state; you must pass it to Err bitreich.org 70 i-@code{free-converted-object} along with the foreign value for that to Err bitreich.org 70 i-work. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i- Err bitreich.org 70 i-This is an external interface to the type translation facility. In Err bitreich.org 70 i-the implementation, all foreign functions are ultimately defined as Err bitreich.org 70 i-type translation wrappers around primitive foreign function Err bitreich.org 70 i-invocations. Err bitreich.org 70 i- Err bitreich.org 70 i-This function is available mostly for inspection of the type Err bitreich.org 70 i-translation process, and possibly optimization of special cases of Err bitreich.org 70 i-your foreign function calls. Err bitreich.org 70 i- Err bitreich.org 70 i-Its behavior is better described under @code{translate-to-foreign}'s Err bitreich.org 70 i-documentation. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI-USER> (convert-to-foreign t :boolean) Err bitreich.org 70 i-@result{} 1 Err bitreich.org 70 i-@result{} NIL Err bitreich.org 70 i-CFFI-USER> (convert-to-foreign "hello, world" :string) Err bitreich.org 70 i-@result{} # Err bitreich.org 70 i-@result{} T Err bitreich.org 70 i-CFFI-USER> (code-char (mem-aref * :char 5)) Err bitreich.org 70 i-@result{} #\, Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{convert-from-foreign} @* Err bitreich.org 70 i-@seealso{free-converted-object} @* Err bitreich.org 70 i-@seealso{translate-to-foreign} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c DEFBITFIELD Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node defbitfield, defcstruct, convert-to-foreign, Foreign Types Err bitreich.org 70 i-@heading defbitfield Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Macro{defbitfield name-and-options &body masks} Err bitreich.org 70 i- Err bitreich.org 70 i-masks ::= [docstring] @{ (symbol value) @}* @* Err bitreich.org 70 i-name-and-options ::= name | (name &optional (base-type :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item name Err bitreich.org 70 i-The name of the new bitfield type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item docstring Err bitreich.org 70 i-A documentation string, ignored. Err bitreich.org 70 i- Err bitreich.org 70 i-@item base-type Err bitreich.org 70 i-A symbol denoting a foreign type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item symbol Err bitreich.org 70 i-A Lisp symbol. Err bitreich.org 70 i- Err bitreich.org 70 i-@item value Err bitreich.org 70 i-An integer representing a bitmask. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The @code{defbitfield} macro is used to define foreign types that map Err bitreich.org 70 i-lists of symbols to integer values. Err bitreich.org 70 i- Err bitreich.org 70 i-If @var{value} is omitted, it will be computed as follows: find the Err bitreich.org 70 i-greatest @var{value} previously used, including those so computed, Err bitreich.org 70 i-with only a single 1-bit in its binary representation (that is, powers Err bitreich.org 70 i-of two), and left-shift it by one. This rule guarantees that a Err bitreich.org 70 i-computed @var{value} cannot clash with previous values, but may clash Err bitreich.org 70 i-with future explicitly specified values. Err bitreich.org 70 i- Err bitreich.org 70 i-Symbol lists will be automatically converted to values and vice versa Err bitreich.org 70 i-when being passed as arguments to or returned from foreign functions, Err bitreich.org 70 i-respectively. The same applies to any other situations where an object Err bitreich.org 70 i-of a bitfield type is expected. Err bitreich.org 70 i- Err bitreich.org 70 i-Types defined with @code{defbitfield} canonicalize to @var{base-type} Err bitreich.org 70 i-which is @code{:int} by default. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defbitfield open-flags Err bitreich.org 70 i- (:rdonly #x0000) Err bitreich.org 70 i- :wronly ;@lispcmt{#x0001} Err bitreich.org 70 i- :rdwr ;@lispcmt{@dots{}} Err bitreich.org 70 i- :nonblock Err bitreich.org 70 i- :append Err bitreich.org 70 i- (:creat #x0200)) Err bitreich.org 70 i- ;; @lispcmt{etc@dots{}} Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (foreign-bitfield-symbols 'open-flags #b1101) Err bitreich.org 70 i-@result{} (:WRONLY :NONBLOCK :APPEND) Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (foreign-bitfield-value 'open-flags '(:rdwr :creat)) Err bitreich.org 70 i-@result{} 514 ; #x0202 Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun ("open" unix-open) :int Err bitreich.org 70 i- (path :string) Err bitreich.org 70 i- (flags open-flags) Err bitreich.org 70 i- (mode :uint16)) ; unportable Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (unix-open "/tmp/foo" '(:wronly :creat) #o644) Err bitreich.org 70 i-@result{} # Err bitreich.org 70 i- Err bitreich.org 70 i-;;; @lispcmt{Consider also the following lispier wrapper around open()} Err bitreich.org 70 i-(defun lispier-open (path mode &rest flags) Err bitreich.org 70 i- (unix-open path flags mode)) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{foreign-bitfield-value} @* Err bitreich.org 70 i-@seealso{foreign-bitfield-symbols} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c DEFCSTRUCT Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node defcstruct, defcunion, defbitfield, Foreign Types Err bitreich.org 70 i-@heading defcstruct Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Macro{defcstruct name-and-options &body doc-and-slots @res{} name} Err bitreich.org 70 i- Err bitreich.org 70 i-name-and-options ::= structure-name | (structure-name &key size) Err bitreich.org 70 i- Err bitreich.org 70 i-doc-and-slots ::= [docstring] @{ (slot-name slot-type &key count offset) @}* Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item structure-name Err bitreich.org 70 i-The name of new structure type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item docstring Err bitreich.org 70 i-A documentation string, ignored. Err bitreich.org 70 i- Err bitreich.org 70 i-@item slot-name Err bitreich.org 70 i-A symbol naming the slot. It must be unique among slot names in this Err bitreich.org 70 i-structure. Err bitreich.org 70 i- Err bitreich.org 70 i-@item size Err bitreich.org 70 i-Use this option to override the size (in bytes) of the struct. Err bitreich.org 70 i- Err bitreich.org 70 i-@item slot-type Err bitreich.org 70 i-The type specifier for the slot. Err bitreich.org 70 i- Err bitreich.org 70 i-@item count Err bitreich.org 70 i-Used to declare an array of size @var{count} inside the Err bitreich.org 70 i-structure. Defaults to @code{1} as such an array and a single element Err bitreich.org 70 i-are semantically equivalent. Err bitreich.org 70 i- Err bitreich.org 70 i-@item offset Err bitreich.org 70 i-Overrides the slot's offset. The next slot's offset is calculated Err bitreich.org 70 i-based on this one. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-This defines a new @cffi{} aggregate type akin to C @code{struct}s. Err bitreich.org 70 i-In other words, it specifies that foreign objects of the type Err bitreich.org 70 i-@var{structure-name} are groups of different pieces of data, or Err bitreich.org 70 i-``slots'', of the @var{slot-type}s, distinguished from each other by Err bitreich.org 70 i-the @var{slot-name}s. Each structure is located in memory at a Err bitreich.org 70 i-position, and the slots are allocated sequentially beginning at that Err bitreich.org 70 i-point in memory (with some padding allowances as defined by the C Err bitreich.org 70 i-@acronym{ABI}, unless otherwise requested by specifying an Err bitreich.org 70 i-@var{offset} from the beginning of the structure (offset 0). Err bitreich.org 70 i- Err bitreich.org 70 i-In other words, it is isomorphic to the C @code{struct}, giving Err bitreich.org 70 i-several extra features. Err bitreich.org 70 i- Err bitreich.org 70 i-There are two kinds of slots, for the two kinds of @cffi{} types: Err bitreich.org 70 i- Err bitreich.org 70 i-@table @dfn Err bitreich.org 70 i-@item Simple Err bitreich.org 70 i-Contain a single instance of a type that canonicalizes to a built-in Err bitreich.org 70 i-type, such as @code{:long} or @code{:pointer}. Used for simple Err bitreich.org 70 i-@cffi{} types. Err bitreich.org 70 i- Err bitreich.org 70 i-@item Aggregate Err bitreich.org 70 i-Contain an embedded structure or union, or an array of objects. Used Err bitreich.org 70 i-for aggregate @cffi{} types. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-The use of @acronym{CLOS} terminology for the structure-related Err bitreich.org 70 i-features is intentional; structure definitions are very much like Err bitreich.org 70 i-classes with (far) fewer features. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defcstruct point Err bitreich.org 70 i- "Point structure." Err bitreich.org 70 i- (x :int) Err bitreich.org 70 i- (y :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (with-foreign-object (ptr 'point) Err bitreich.org 70 i- ;; @lispcmt{Initialize the slots} Err bitreich.org 70 i- (setf (foreign-slot-value ptr 'point 'x) 42 Err bitreich.org 70 i- (foreign-slot-value ptr 'point 'y) 42) Err bitreich.org 70 i- ;; @lispcmt{Return a list with the coordinates} Err bitreich.org 70 i- (with-foreign-slots ((x y) ptr point) Err bitreich.org 70 i- (list x y))) Err bitreich.org 70 i-@result{} (42 42) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-;; @lispcmt{Using the :size and :offset options to define a partial structure.} Err bitreich.org 70 i-;; @lispcmt{(this is useful when you are interested in only a few slots} Err bitreich.org 70 i-;; @lispcmt{of a big foreign structure)} Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct (foo :size 32) Err bitreich.org 70 i- "Some struct with 32 bytes." Err bitreich.org 70 i- ; @lispcmt{<16 bytes we don't care about>} Err bitreich.org 70 i- (x :int :offset 16) ; @lispcmt{an int at offset 16} Err bitreich.org 70 i- (y :int) ; @lispcmt{another int at offset 16+sizeof(int)} Err bitreich.org 70 i- ; @lispcmt{} Err bitreich.org 70 i- (z :char :offset 24)) ; @lispcmt{a char at offset 24} Err bitreich.org 70 i- ; @lispcmt{<7 more bytes ignored (since size is 32)>} Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (foreign-type-size 'foo) Err bitreich.org 70 i-@result{} 32 Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-;;; @lispcmt{Using :count to define arrays inside of a struct.} Err bitreich.org 70 i-(defcstruct video_tuner Err bitreich.org 70 i- (name :char :count 32)) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{foreign-slot-pointer} @* Err bitreich.org 70 i-@seealso{foreign-slot-value} @* Err bitreich.org 70 i-@seealso{with-foreign-slots} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c DEFCUNION Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node defcunion, defctype, defcstruct, Foreign Types Err bitreich.org 70 i-@heading defcunion Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Macro{defcunion name &body doc-and-slots @res{} name} Err bitreich.org 70 i- Err bitreich.org 70 i-doc-and-slots ::= [docstring] @{ (slot-name slot-type &key count) @}* Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item name Err bitreich.org 70 i-The name of new union type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item docstring Err bitreich.org 70 i-A documentation string, ignored. Err bitreich.org 70 i- Err bitreich.org 70 i-@item slot-name Err bitreich.org 70 i-A symbol naming the slot. Err bitreich.org 70 i- Err bitreich.org 70 i-@item slot-type Err bitreich.org 70 i-The type specifier for the slot. Err bitreich.org 70 i- Err bitreich.org 70 i-@item count Err bitreich.org 70 i-Used to declare an array of size @var{count} inside the Err bitreich.org 70 i-structure. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-A union is a structure in which all slots have an offset of zero. It Err bitreich.org 70 i-is isomorphic to the C @code{union}. Therefore, you should use the Err bitreich.org 70 i-usual foreign structure operations for accessing a union's slots. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defcunion uint32-bytes Err bitreich.org 70 i- (int-value :unsigned-int) Err bitreich.org 70 i- (bytes :unsigned-char :count 4)) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{foreign-slot-pointer} @* Err bitreich.org 70 i-@seealso{foreign-slot-value} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c DEFCTYPE Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node defctype, defcenum, defcunion, Foreign Types Err bitreich.org 70 i-@heading defctype Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Macro{defctype name base-type &optional documentation} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item name Err bitreich.org 70 i-The name of the new foreign type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item base-type Err bitreich.org 70 i-A symbol or a list defining the new type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item documentation Err bitreich.org 70 i-A documentation string, currently ignored. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The @code{defctype} macro provides a mechanism similar to C's Err bitreich.org 70 i-@code{typedef} to define new types. The new type inherits Err bitreich.org 70 i-@var{base-type}'s translators, if any. There is no way to define Err bitreich.org 70 i-translations for types defined with @code{defctype}. For that, Err bitreich.org 70 i-you should use @ref{define-foreign-type}. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defctype my-string :string Err bitreich.org 70 i- "My own string type.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype long-bools (:boolean :long) Err bitreich.org 70 i- "Booleans that map to C longs.") Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{define-foreign-type} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c DEFCENUM Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node defcenum, define-foreign-type, defctype, Foreign Types Err bitreich.org 70 i-@heading defcenum Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Macro{defcenum name-and-options &body enum-list} Err bitreich.org 70 i- Err bitreich.org 70 i-enum-list ::= [docstring] @{ keyword | (keyword value) @}* Err bitreich.org 70 i-name-and-options ::= name | (name &optional (base-type :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item name Err bitreich.org 70 i-The name of the new enum type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item docstring Err bitreich.org 70 i-A documentation string, ignored. Err bitreich.org 70 i- Err bitreich.org 70 i-@item base-type Err bitreich.org 70 i-A symbol denoting a foreign type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item keyword Err bitreich.org 70 i-A keyword symbol. Err bitreich.org 70 i- Err bitreich.org 70 i-@item value Err bitreich.org 70 i-An index value for a keyword. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The @code{defcenum} macro is used to define foreign types that map Err bitreich.org 70 i-keyword symbols to integer values, similar to the C @code{enum} type. Err bitreich.org 70 i- Err bitreich.org 70 i-If @var{value} is omitted its value will either be 0, if it's the Err bitreich.org 70 i-first entry, or it it will continue the progression from the last Err bitreich.org 70 i-specified value. Err bitreich.org 70 i- Err bitreich.org 70 i-Keywords will be automatically converted to values and vice-versa when Err bitreich.org 70 i-being passed as arguments to or returned from foreign functions, Err bitreich.org 70 i-respectively. The same applies to any other situations where an object Err bitreich.org 70 i-of an @code{enum} type is expected. Err bitreich.org 70 i- Err bitreich.org 70 i-Types defined with @code{defcenum} canonicalize to @var{base-type} Err bitreich.org 70 i-which is @code{:int} by default. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defcenum boolean Err bitreich.org 70 i- :no Err bitreich.org 70 i- :yes) Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (foreign-enum-value 'boolean :no) Err bitreich.org 70 i-@result{} 0 Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defcenum numbers Err bitreich.org 70 i- (:one 1) Err bitreich.org 70 i- :two Err bitreich.org 70 i- (:four 4)) Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (foreign-enum-keyword 'numbers 2) Err bitreich.org 70 i-@result{} :TWO Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{foreign-enum-value} @* Err bitreich.org 70 i-@seealso{foreign-enum-keyword} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c DEFINE-FOREIGN-TYPE Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node define-foreign-type, define-parse-method, defcenum, Foreign Types Err bitreich.org 70 i-@heading define-foreign-type Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Macro{define-foreign-type class-name supers slots &rest options @res{} class-name} Err bitreich.org 70 i- Err bitreich.org 70 i-options ::= (@code{:actual-type} @var{type}) | @ Err bitreich.org 70 i- (@code{:simple-parser} @var{symbol}) | @ Err bitreich.org 70 i- @emph{regular defclass option} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item class-name Err bitreich.org 70 i-A symbol naming the new foreign type class. Err bitreich.org 70 i- Err bitreich.org 70 i-@item supers Err bitreich.org 70 i-A list of symbols naming the super classes. Err bitreich.org 70 i- Err bitreich.org 70 i-@item slots Err bitreich.org 70 i-A list of slot definitions, passed to @code{defclass}. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i- Err bitreich.org 70 i-@c TODO rewrite Err bitreich.org 70 i- Err bitreich.org 70 i-The macro @code{define-foreign-type} defines a new class Err bitreich.org 70 i-@var{class-name}. It is a thin wrapper around @code{defclass}. Among Err bitreich.org 70 i-other things, it ensures that @var{class-name} becomes a subclass of Err bitreich.org 70 i-@var{foreign-type}, what you need to know about that is that there's Err bitreich.org 70 i-an initarg @code{:actual-type} which serves the same purpose as Err bitreich.org 70 i-@code{defctype}'s @var{base-type} argument. Err bitreich.org 70 i- Err bitreich.org 70 i-@c TODO mention the type translators here Err bitreich.org 70 i-@c FIX FIX Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i-Taken from @cffi{}'s @code{:boolean} type definition: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(define-foreign-type :boolean (&optional (base-type :int)) Err bitreich.org 70 i- "Boolean type. Maps to an :int by default. Only accepts integer types." Err bitreich.org 70 i- (ecase base-type Err bitreich.org 70 i- ((:char Err bitreich.org 70 i- :unsigned-char Err bitreich.org 70 i- :int Err bitreich.org 70 i- :unsigned-int Err bitreich.org 70 i- :long Err bitreich.org 70 i- :unsigned-long) base-type))) Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (canonicalize-foreign-type :boolean) Err bitreich.org 70 i-@result{} :INT Err bitreich.org 70 i-CFFI> (canonicalize-foreign-type '(:boolean :long)) Err bitreich.org 70 i-@result{} :LONG Err bitreich.org 70 i-CFFI> (canonicalize-foreign-type '(:boolean :float)) Err bitreich.org 70 i-;; @lispcmt{@error{} signalled by ECASE.} Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{defctype} @* Err bitreich.org 70 i-@seealso{define-parse-method} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c DEFINE-PARSE-METHOD Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node define-parse-method, foreign-bitfield-symbols, define-foreign-type, Foreign Types Err bitreich.org 70 i-@heading define-parse-method Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Macro{define-parse-method name lambda-list &body body @res{} name} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item type-name Err bitreich.org 70 i-A symbol naming the new foreign type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item lambda-list Err bitreich.org 70 i-A lambda list which is the argument list of the new foreign type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item body Err bitreich.org 70 i-One or more forms that provide a definition of the new foreign type. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c TODO: update example. The boolean type is probably a good choice. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i-Taken from @cffi{}'s @code{:boolean} type definition: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(define-foreign-type :boolean (&optional (base-type :int)) Err bitreich.org 70 i- "Boolean type. Maps to an :int by default. Only accepts integer types." Err bitreich.org 70 i- (ecase base-type Err bitreich.org 70 i- ((:char Err bitreich.org 70 i- :unsigned-char Err bitreich.org 70 i- :int Err bitreich.org 70 i- :unsigned-int Err bitreich.org 70 i- :long Err bitreich.org 70 i- :unsigned-long) base-type))) Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (canonicalize-foreign-type :boolean) Err bitreich.org 70 i-@result{} :INT Err bitreich.org 70 i-CFFI> (canonicalize-foreign-type '(:boolean :long)) Err bitreich.org 70 i-@result{} :LONG Err bitreich.org 70 i-CFFI> (canonicalize-foreign-type '(:boolean :float)) Err bitreich.org 70 i-;; @lispcmt{@error{} signalled by ECASE.} Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{define-foreign-type} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c EXPLAIN-FOREIGN-SLOT-VALUE Err bitreich.org 70 i- Err bitreich.org 70 i-@c @node explain-foreign-slot-value Err bitreich.org 70 i-@c @heading explain-foreign-slot-value Err bitreich.org 70 i-@c @subheading Syntax Err bitreich.org 70 i-@c @Macro{explain-foreign-slot-value ptr type &rest slot-names} Err bitreich.org 70 i- Err bitreich.org 70 i-@c @subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@c @table @var Err bitreich.org 70 i-@c @item ptr Err bitreich.org 70 i-@c ... Err bitreich.org 70 i- Err bitreich.org 70 i-@c @item type Err bitreich.org 70 i-@c ... Err bitreich.org 70 i- Err bitreich.org 70 i-@c @item slot-names Err bitreich.org 70 i-@c ... Err bitreich.org 70 i-@c @end table Err bitreich.org 70 i- Err bitreich.org 70 i-@c @subheading Description Err bitreich.org 70 i-@c This macro translates the slot access that would occur by calling Err bitreich.org 70 i-@c @code{foreign-slot-value} with the same arguments into an equivalent Err bitreich.org 70 i-@c expression in C and prints it to @code{*standard-output*}. Err bitreich.org 70 i- Err bitreich.org 70 i-@c @emph{Note: this is not implemented yet.} Err bitreich.org 70 i- Err bitreich.org 70 i-@c @subheading Examples Err bitreich.org 70 i-@c @lisp Err bitreich.org 70 i-@c CFFI> (explain-foreign-slot-value ptr 'timeval 'tv-secs) Err bitreich.org 70 i-@c @result{} ptr->tv_secs Err bitreich.org 70 i- Err bitreich.org 70 i-@c CFFI> (explain-foreign-slot-value emp 'employee 'hire-date 'tv-usecs) Err bitreich.org 70 i-@c @result{} emp->hire_date.tv_usecs Err bitreich.org 70 i-@c @end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@c @subheading See Also Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c FOREIGN-BITFIELD-SYMBOLS Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node foreign-bitfield-symbols, foreign-bitfield-value, define-parse-method, Foreign Types Err bitreich.org 70 i-@heading foreign-bitfield-symbols Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{foreign-bitfield-symbols type value @res{} symbols} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item type Err bitreich.org 70 i-A bitfield type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item value Err bitreich.org 70 i-An integer. Err bitreich.org 70 i- Err bitreich.org 70 i-@item symbols Err bitreich.org 70 i-A potentially shared list of symbols. Err bitreich.org 70 i-@code{nil}. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The function @code{foreign-bitfield-symbols} returns a possibly shared Err bitreich.org 70 i-list of symbols that correspond to @var{value} in @var{type}. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defbitfield flags Err bitreich.org 70 i- (flag-a 1) Err bitreich.org 70 i- (flag-b 2) Err bitreich.org 70 i- (flag-c 4)) Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (foreign-bitfield-symbols 'flags #b101) Err bitreich.org 70 i-@result{} (FLAG-A FLAG-C) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{defbitfield} @* Err bitreich.org 70 i-@seealso{foreign-bitfield-value} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c FOREIGN-BITFIELD-VALUE Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node foreign-bitfield-value, foreign-enum-keyword, foreign-bitfield-symbols, Foreign Types Err bitreich.org 70 i-@heading foreign-bitfield-value Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{foreign-bitfield-value type symbols @res{} value} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item type Err bitreich.org 70 i-A @code{bitfield} type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item symbol Err bitreich.org 70 i-A Lisp symbol. Err bitreich.org 70 i- Err bitreich.org 70 i-@item value Err bitreich.org 70 i-An integer. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The function @code{foreign-bitfield-value} returns the @var{value} that Err bitreich.org 70 i-corresponds to the symbols in the @var{symbols} list. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defbitfield flags Err bitreich.org 70 i- (flag-a 1) Err bitreich.org 70 i- (flag-b 2) Err bitreich.org 70 i- (flag-c 4)) Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (foreign-bitfield-value 'flags '(flag-a flag-c)) Err bitreich.org 70 i-@result{} 5 ; #b101 Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{defbitfield} @* Err bitreich.org 70 i-@seealso{foreign-bitfield-symbols} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c FOREIGN-ENUM-KEYWORD Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node foreign-enum-keyword, foreign-enum-value, foreign-bitfield-value, Foreign Types Err bitreich.org 70 i-@heading foreign-enum-keyword Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{foreign-enum-keyword type value &key errorp @res{} keyword} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item type Err bitreich.org 70 i-An @code{enum} type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item value Err bitreich.org 70 i-An integer. Err bitreich.org 70 i- Err bitreich.org 70 i-@item errorp Err bitreich.org 70 i-If true (the default), signal an error if @var{value} is not defined Err bitreich.org 70 i-in @var{type}. If false, @code{foreign-enum-keyword} returns Err bitreich.org 70 i-@code{nil}. Err bitreich.org 70 i- Err bitreich.org 70 i-@item keyword Err bitreich.org 70 i-A keyword symbol. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The function @code{foreign-enum-keyword} returns the keyword symbol Err bitreich.org 70 i-that corresponds to @var{value} in @var{type}. Err bitreich.org 70 i- Err bitreich.org 70 i-An error is signaled if @var{type} doesn't contain such @var{value} Err bitreich.org 70 i-and @var{errorp} is true. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defcenum boolean Err bitreich.org 70 i- :no Err bitreich.org 70 i- :yes) Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (foreign-enum-keyword 'boolean 1) Err bitreich.org 70 i-@result{} :YES Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{defcenum} @* Err bitreich.org 70 i-@seealso{foreign-enum-value} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c FOREIGN-ENUM-VALUE Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node foreign-enum-value, foreign-slot-names, foreign-enum-keyword, Foreign Types Err bitreich.org 70 i-@heading foreign-enum-value Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{foreign-enum-value type keyword &key errorp @res{} value} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item type Err bitreich.org 70 i-An @code{enum} type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item keyword Err bitreich.org 70 i-A keyword symbol. Err bitreich.org 70 i- Err bitreich.org 70 i-@item errorp Err bitreich.org 70 i-If true (the default), signal an error if @var{keyword} is not Err bitreich.org 70 i-defined in @var{type}. If false, @code{foreign-enum-value} returns Err bitreich.org 70 i-@code{nil}. Err bitreich.org 70 i- Err bitreich.org 70 i-@item value Err bitreich.org 70 i-An integer. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The function @code{foreign-enum-value} returns the @var{value} that Err bitreich.org 70 i-corresponds to @var{keyword} in @var{type}. Err bitreich.org 70 i- Err bitreich.org 70 i-An error is signaled if @var{type} doesn't contain such Err bitreich.org 70 i-@var{keyword}, and @var{errorp} is true. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defcenum boolean Err bitreich.org 70 i- :no Err bitreich.org 70 i- :yes) Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (foreign-enum-value 'boolean :yes) Err bitreich.org 70 i-@result{} 1 Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{defcenum} @* Err bitreich.org 70 i-@seealso{foreign-enum-keyword} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c FOREIGN-SLOT-NAMES Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node foreign-slot-names, foreign-slot-offset, foreign-enum-value, Foreign Types Err bitreich.org 70 i-@heading foreign-slot-names Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{foreign-slot-names type @res{} names} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item type Err bitreich.org 70 i-A foreign struct type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item names Err bitreich.org 70 i-A list. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The function @code{foreign-slot-names} returns a potentially shared Err bitreich.org 70 i-list of slot @var{names} for the given structure @var{type}. This list Err bitreich.org 70 i-has no particular order. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defcstruct timeval Err bitreich.org 70 i- (tv-secs :long) Err bitreich.org 70 i- (tv-usecs :long)) Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (foreign-slot-names '(:struct timeval)) Err bitreich.org 70 i-@result{} (TV-SECS TV-USECS) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{defcstruct} @* Err bitreich.org 70 i-@seealso{foreign-slot-offset} @* Err bitreich.org 70 i-@seealso{foreign-slot-value} @* Err bitreich.org 70 i-@seealso{foreign-slot-pointer} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c FOREIGN-SLOT-OFFSET Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node foreign-slot-offset, foreign-slot-pointer, foreign-slot-names, Foreign Types Err bitreich.org 70 i-@heading foreign-slot-offset Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{foreign-slot-offset type slot-name @res{} offset} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item type Err bitreich.org 70 i-A foreign struct type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item slot-name Err bitreich.org 70 i-A symbol. Err bitreich.org 70 i- Err bitreich.org 70 i-@item offset Err bitreich.org 70 i-An integer. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The function @code{foreign-slot-offset} returns the @var{offset} in Err bitreich.org 70 i-bytes of a slot in a foreign struct type. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defcstruct timeval Err bitreich.org 70 i- (tv-secs :long) Err bitreich.org 70 i- (tv-usecs :long)) Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (foreign-slot-offset '(:struct timeval) 'tv-secs) Err bitreich.org 70 i-@result{} 0 Err bitreich.org 70 i-CFFI> (foreign-slot-offset '(:struct timeval) 'tv-usecs) Err bitreich.org 70 i-@result{} 4 Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{defcstruct} @* Err bitreich.org 70 i-@seealso{foreign-slot-names} @* Err bitreich.org 70 i-@seealso{foreign-slot-pointer} @* Err bitreich.org 70 i-@seealso{foreign-slot-value} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c FOREIGN-SLOT-POINTER Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node foreign-slot-pointer, foreign-slot-value, foreign-slot-offset, Foreign Types Err bitreich.org 70 i-@heading foreign-slot-pointer Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{foreign-slot-pointer ptr type slot-name @res{} pointer} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item ptr Err bitreich.org 70 i-A pointer to a structure. Err bitreich.org 70 i- Err bitreich.org 70 i-@item type Err bitreich.org 70 i-A foreign structure type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item slot-names Err bitreich.org 70 i-A slot name in the @var{type}. Err bitreich.org 70 i- Err bitreich.org 70 i-@item pointer Err bitreich.org 70 i-A pointer to the slot @var{slot-name}. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-Returns a pointer to the location of the slot @var{slot-name} in a Err bitreich.org 70 i-foreign object of type @var{type} at @var{ptr}. The returned pointer Err bitreich.org 70 i-points inside the structure. Both the pointer and the memory it points Err bitreich.org 70 i-to have the same extent as @var{ptr}. Err bitreich.org 70 i- Err bitreich.org 70 i-For aggregate slots, this is the same value returned by Err bitreich.org 70 i-@code{foreign-slot-value}. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defcstruct point Err bitreich.org 70 i- "Pointer structure." Err bitreich.org 70 i- (x :int) Err bitreich.org 70 i- (y :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (with-foreign-object (ptr '(:struct point)) Err bitreich.org 70 i- (foreign-slot-pointer ptr '(:struct point) 'x)) Err bitreich.org 70 i-@result{} # Err bitreich.org 70 i-;; @lispcmt{Note: the exact pointer representation varies from lisp to lisp.} Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{defcstruct} @* Err bitreich.org 70 i-@seealso{foreign-slot-value} @* Err bitreich.org 70 i-@seealso{foreign-slot-names} @* Err bitreich.org 70 i-@seealso{foreign-slot-offset} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c FOREIGN-SLOT-VALUE Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node foreign-slot-value, foreign-type-alignment, foreign-slot-pointer, Foreign Types Err bitreich.org 70 i-@heading foreign-slot-value Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Accessor{foreign-slot-value ptr type slot-name @res{} object} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item ptr Err bitreich.org 70 i-A pointer to a structure. Err bitreich.org 70 i- Err bitreich.org 70 i-@item type Err bitreich.org 70 i-A foreign structure type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item slot-name Err bitreich.org 70 i-A symbol naming a slot in the structure type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item object Err bitreich.org 70 i-The object contained in the slot specified by @var{slot-name}. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-For simple slots, @code{foreign-slot-value} returns the value of the Err bitreich.org 70 i-object, such as a Lisp integer or pointer. In C, this would be Err bitreich.org 70 i-expressed as @code{ptr->slot}. Err bitreich.org 70 i- Err bitreich.org 70 i-For aggregate slots, a pointer inside the structure to the beginning Err bitreich.org 70 i-of the slot's data is returned. In C, this would be expressed as Err bitreich.org 70 i-@code{&ptr->slot}. This pointer and the memory it points to have the Err bitreich.org 70 i-same extent as @var{ptr}. Err bitreich.org 70 i- Err bitreich.org 70 i-There are compiler macros for @code{foreign-slot-value} and its Err bitreich.org 70 i-@code{setf} expansion that open code the memory access when Err bitreich.org 70 i-@var{type} and @var{slot-names} are constant at compile-time. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defcstruct point Err bitreich.org 70 i- "Pointer structure." Err bitreich.org 70 i- (x :int) Err bitreich.org 70 i- (y :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (with-foreign-object (ptr '(:struct point)) Err bitreich.org 70 i- ;; @lispcmt{Initialize the slots} Err bitreich.org 70 i- (setf (foreign-slot-value ptr '(:struct point) 'x) 42 Err bitreich.org 70 i- (foreign-slot-value ptr '(:struct point) 'y) 42) Err bitreich.org 70 i- ;; @lispcmt{Return a list with the coordinates} Err bitreich.org 70 i- (with-foreign-slots ((x y) ptr (:struct point)) Err bitreich.org 70 i- (list x y))) Err bitreich.org 70 i-@result{} (42 42) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{defcstruct} @* Err bitreich.org 70 i-@seealso{foreign-slot-names} @* Err bitreich.org 70 i-@seealso{foreign-slot-offset} @* Err bitreich.org 70 i-@seealso{foreign-slot-pointer} @* Err bitreich.org 70 i-@seealso{with-foreign-slots} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c FOREIGN-TYPE-ALIGNMENT Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node foreign-type-alignment, foreign-type-size, foreign-slot-value, Foreign Types Err bitreich.org 70 i-@heading foreign-type-alignment Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@c XXX: This is actually a generic function. Err bitreich.org 70 i-@Function{foreign-type-alignment type @res{} alignment} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item type Err bitreich.org 70 i-A foreign type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item alignment Err bitreich.org 70 i-An integer. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The function @code{foreign-type-alignment} returns the Err bitreich.org 70 i-@var{alignment} of @var{type} in bytes. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (foreign-type-alignment :char) Err bitreich.org 70 i-@result{} 1 Err bitreich.org 70 i-CFFI> (foreign-type-alignment :short) Err bitreich.org 70 i-@result{} 2 Err bitreich.org 70 i-CFFI> (foreign-type-alignment :int) Err bitreich.org 70 i-@result{} 4 Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defcstruct foo Err bitreich.org 70 i- (a :char)) Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (foreign-type-alignment '(:struct foo)) Err bitreich.org 70 i-@result{} 1 Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{foreign-type-size} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c FOREIGN-TYPE-SIZE Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node foreign-type-size, free-converted-object, foreign-type-alignment, Foreign Types Err bitreich.org 70 i-@heading foreign-type-size Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@c XXX: this is actually a generic function. Err bitreich.org 70 i-@Function{foreign-type-size type @res{} size} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item type Err bitreich.org 70 i-A foreign type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item size Err bitreich.org 70 i-An integer. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The function @code{foreign-type-size} return the @var{size} of Err bitreich.org 70 i-@var{type} in bytes. This includes any padding within and following Err bitreich.org 70 i-the in-memory representation as needed to create an array of Err bitreich.org 70 i-@var{type} objects. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defcstruct foo Err bitreich.org 70 i- (a :double) Err bitreich.org 70 i- (c :char)) Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (foreign-type-size :double) Err bitreich.org 70 i-@result{} 8 Err bitreich.org 70 i-CFFI> (foreign-type-size :char) Err bitreich.org 70 i-@result{} 1 Err bitreich.org 70 i-CFFI> (foreign-type-size '(:struct foo)) Err bitreich.org 70 i-@result{} 16 Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{foreign-type-alignment} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c FREE-CONVERTED-OBJECT Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node free-converted-object, free-translated-object, foreign-type-size, Foreign Types Err bitreich.org 70 i-@heading free-converted-object Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{free-converted-object foreign-value type params} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item foreign-value Err bitreich.org 70 i-The C object to be freed. Err bitreich.org 70 i- Err bitreich.org 70 i-@item type Err bitreich.org 70 i-A @cffi{} type specifier. Err bitreich.org 70 i- Err bitreich.org 70 i-@item params Err bitreich.org 70 i-The state returned as the second value from @code{convert-to-foreign}; Err bitreich.org 70 i-used to implement the third argument to @code{free-translated-object}. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i- Err bitreich.org 70 i-The return value is unspecified. Err bitreich.org 70 i- Err bitreich.org 70 i-This is an external interface to the type translation facility. In Err bitreich.org 70 i-the implementation, all foreign functions are ultimately defined as Err bitreich.org 70 i-type translation wrappers around primitive foreign function Err bitreich.org 70 i-invocations. Err bitreich.org 70 i- Err bitreich.org 70 i-This function is available mostly for inspection of the type Err bitreich.org 70 i-translation process, and possibly optimization of special cases of Err bitreich.org 70 i-your foreign function calls. Err bitreich.org 70 i- Err bitreich.org 70 i-Its behavior is better described under @code{free-translated-object}'s Err bitreich.org 70 i-documentation. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI-USER> (convert-to-foreign "a boat" :string) Err bitreich.org 70 i-@result{} # Err bitreich.org 70 i-@result{} T Err bitreich.org 70 i-CFFI-USER> (free-converted-object * :string t) Err bitreich.org 70 i-@result{} NIL Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{convert-from-foreign} @* Err bitreich.org 70 i-@seealso{convert-to-foreign} @* Err bitreich.org 70 i-@seealso{free-translated-object} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c FREE-TRANSLATED-OBJECT Err bitreich.org 70 i- Err bitreich.org 70 i-@c TODO: update Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node free-translated-object, translate-from-foreign, free-converted-object, Foreign Types Err bitreich.org 70 i-@heading free-translated-object Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@GenericFunction{free-translated-object value type-name param} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item pointer Err bitreich.org 70 i-The foreign value returned by @code{translate-to-foreign}. Err bitreich.org 70 i- Err bitreich.org 70 i-@item type-name Err bitreich.org 70 i-A symbol naming a foreign type defined by @code{defctype}. Err bitreich.org 70 i- Err bitreich.org 70 i-@item param Err bitreich.org 70 i-The second value, if any, returned by @code{translate-to-foreign}. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-This generic function may be specialized by user code to perform Err bitreich.org 70 i-automatic deallocation of foreign objects as they are passed to C Err bitreich.org 70 i-functions. Err bitreich.org 70 i- Err bitreich.org 70 i-Any methods defined on this generic function must EQL-specialize the Err bitreich.org 70 i-@var{type-name} parameter on a symbol defined as a foreign type by Err bitreich.org 70 i-the @code{defctype} macro. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{Foreign Type Translators} @* Err bitreich.org 70 i-@seealso{translate-to-foreign} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c TRANSLATE-FROM-FOREIGN Err bitreich.org 70 i- Err bitreich.org 70 i-@c TODO: update Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node translate-from-foreign, translate-to-foreign, free-translated-object, Foreign Types Err bitreich.org 70 i-@heading translate-from-foreign Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@GenericFunction{translate-from-foreign foreign-value type-name @ Err bitreich.org 70 i- @res{} lisp-value} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item foreign-value Err bitreich.org 70 i-The foreign value to convert to a Lisp object. Err bitreich.org 70 i- Err bitreich.org 70 i-@item type-name Err bitreich.org 70 i-A symbol naming a foreign type defined by @code{defctype}. Err bitreich.org 70 i- Err bitreich.org 70 i-@item lisp-value Err bitreich.org 70 i-The lisp value to pass in place of @code{foreign-value} to Lisp code. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-This generic function is invoked by @cffi{} to convert a foreign value to Err bitreich.org 70 i-a Lisp value, such as when returning from a foreign function, passing Err bitreich.org 70 i-arguments to a callback function, or accessing a foreign variable. Err bitreich.org 70 i- Err bitreich.org 70 i-To extend the @cffi{} type system by performing custom translations, this Err bitreich.org 70 i-method may be specialized by @sc{eql}-specializing @code{type-name} on a Err bitreich.org 70 i-symbol naming a foreign type defined with @code{defctype}. This Err bitreich.org 70 i-method should return the appropriate Lisp value to use in place of the Err bitreich.org 70 i-foreign value. Err bitreich.org 70 i- Err bitreich.org 70 i-The results are undefined if the @code{type-name} parameter is Err bitreich.org 70 i-specialized in any way except an @sc{eql} specializer on a foreign type Err bitreich.org 70 i-defined with @code{defctype}. Specifically, translations may not be Err bitreich.org 70 i-defined for built-in types. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{Foreign Type Translators} @* Err bitreich.org 70 i-@seealso{translate-to-foreign} @* Err bitreich.org 70 i-@seealso{free-translated-object} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c TRANSLATE-TO-FOREIGN Err bitreich.org 70 i- Err bitreich.org 70 i-@c TODO: update Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node translate-to-foreign, translate-into-foreign-memory, translate-from-foreign, Foreign Types Err bitreich.org 70 i-@heading translate-to-foreign Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@GenericFunction{translate-to-foreign lisp-value type-name @ Err bitreich.org 70 i- @res{} foreign-value, alloc-param} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item lisp-value Err bitreich.org 70 i-The Lisp value to convert to foreign representation. Err bitreich.org 70 i- Err bitreich.org 70 i-@item type-name Err bitreich.org 70 i-A symbol naming a foreign type defined by @code{defctype}. Err bitreich.org 70 i- Err bitreich.org 70 i-@item foreign-value Err bitreich.org 70 i-The foreign value to pass in place of @code{lisp-value} to foreign code. Err bitreich.org 70 i- Err bitreich.org 70 i-@item alloc-param Err bitreich.org 70 i-If present, this value will be passed to Err bitreich.org 70 i-@code{free-translated-object}. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-This generic function is invoked by @cffi{} to convert a Lisp value to a Err bitreich.org 70 i-foreign value, such as when passing arguments to a foreign function, Err bitreich.org 70 i-returning a value from a callback, or setting a foreign variable. A Err bitreich.org 70 i-``foreign value'' is one appropriate for passing to the next-lowest Err bitreich.org 70 i-translator, including the low-level translators that are ultimately Err bitreich.org 70 i-invoked invisibly with @cffi{}. Err bitreich.org 70 i- Err bitreich.org 70 i-To extend the @cffi{} type system by performing custom translations, this Err bitreich.org 70 i-method may be specialized by @sc{eql}-specializing @code{type-name} on a Err bitreich.org 70 i-symbol naming a foreign type defined with @code{defctype}. This Err bitreich.org 70 i-method should return the appropriate foreign value to use in place of Err bitreich.org 70 i-the Lisp value. Err bitreich.org 70 i- Err bitreich.org 70 i-In cases where @cffi{} can determine the lifetime of the foreign object Err bitreich.org 70 i-returned by this method, it will invoke @code{free-translated-object} Err bitreich.org 70 i-on the foreign object at the appropriate time. If Err bitreich.org 70 i-@code{translate-to-foreign} returns a second value, it will be passed Err bitreich.org 70 i-as the @code{param} argument to @code{free-translated-object}. This Err bitreich.org 70 i-can be used to establish communication between the allocation and Err bitreich.org 70 i-deallocation methods. Err bitreich.org 70 i- Err bitreich.org 70 i-The results are undefined if the @code{type-name} parameter is Err bitreich.org 70 i-specialized in any way except an @sc{eql} specializer on a foreign type Err bitreich.org 70 i-defined with @code{defctype}. Specifically, translations may not be Err bitreich.org 70 i-defined for built-in types. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{Foreign Type Translators} @* Err bitreich.org 70 i-@seealso{translate-from-foreign} @* Err bitreich.org 70 i-@seealso{free-translated-object} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c TRANSLATE-INTO-FOREIGN-MEMORY Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node translate-into-foreign-memory, with-foreign-slots, translate-to-foreign, Foreign Types Err bitreich.org 70 i-@heading translate-into-foreign-memory Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@GenericFunction{translate-into-foreign-memory lisp-value type-name pointer} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item lisp-value Err bitreich.org 70 i-The Lisp value to convert to foreign representation. Err bitreich.org 70 i- Err bitreich.org 70 i-@item type-name Err bitreich.org 70 i-A symbol or list @code{(:struct @var{structure-name})} naming a foreign type defined by @code{defctype}. Err bitreich.org 70 i- Err bitreich.org 70 i-@item pointer Err bitreich.org 70 i-The foreign pointer where the translated object should be stored. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-Translate the Lisp value into the foreign memory location given by Err bitreich.org 70 i-pointer. The return value is not used. Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c WITH-FOREIGN-SLOTS Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node with-foreign-slots, , translate-into-foreign-memory, Foreign Types Err bitreich.org 70 i-@heading with-foreign-slots Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Macro{with-foreign-slots (vars ptr type) &body body} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item vars Err bitreich.org 70 i-A list with each element a symbol, or list of length two with the Err bitreich.org 70 i-first element @code{:pointer} and the second a symbol. Err bitreich.org 70 i- Err bitreich.org 70 i-@item ptr Err bitreich.org 70 i-A foreign pointer to a structure. Err bitreich.org 70 i- Err bitreich.org 70 i-@item type Err bitreich.org 70 i-A structure type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item body Err bitreich.org 70 i-A list of forms to be executed. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The @code{with-foreign-slots} macro creates local symbol macros for each Err bitreich.org 70 i-var in @var{vars} to reference foreign slots in @var{ptr} of @var{type}. Err bitreich.org 70 i-If the var is a list starting with @code{:pointer}, it will bind the Err bitreich.org 70 i-pointer to the slot (rather than the value). It is similar to Common Err bitreich.org 70 i-Lisp's @code{with-slots} macro. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defcstruct tm Err bitreich.org 70 i- (sec :int) Err bitreich.org 70 i- (min :int) Err bitreich.org 70 i- (hour :int) Err bitreich.org 70 i- (mday :int) Err bitreich.org 70 i- (mon :int) Err bitreich.org 70 i- (year :int) Err bitreich.org 70 i- (wday :int) Err bitreich.org 70 i- (yday :int) Err bitreich.org 70 i- (isdst :boolean) Err bitreich.org 70 i- (zone :string) Err bitreich.org 70 i- (gmtoff :long)) Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (with-foreign-object (time :int) Err bitreich.org 70 i- (setf (mem-ref time :int) Err bitreich.org 70 i- (foreign-funcall "time" :pointer (null-pointer) :int)) Err bitreich.org 70 i- (foreign-funcall "gmtime" :pointer time (:pointer (:struct tm)))) Err bitreich.org 70 i-@result{} # Err bitreich.org 70 i-CFFI> (with-foreign-slots ((sec min hour mday mon year) * (:struct tm)) Err bitreich.org 70 i- (format nil "~A:~A:~A, ~A/~A/~A" Err bitreich.org 70 i- hour min sec (+ 1900 year) mon mday)) Err bitreich.org 70 i-@result{} "7:22:47, 2005/8/2" Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{defcstruct} @* Err bitreich.org 70 i-@seealso{defcunion} @* Err bitreich.org 70 i-@seealso{foreign-slot-value} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c CHAPTER: Pointers Err bitreich.org 70 i- Err bitreich.org 70 i-@node Pointers, Strings, Foreign Types, Top Err bitreich.org 70 i-@chapter Pointers Err bitreich.org 70 i- Err bitreich.org 70 i-All C data in @cffi{} is referenced through pointers. This includes Err bitreich.org 70 i-defined C variables that hold immediate values, and integers. Err bitreich.org 70 i- Err bitreich.org 70 i-To see why this is, consider the case of the C integer. It is not Err bitreich.org 70 i-only an arbitrary representation for an integer, congruent to Lisp's Err bitreich.org 70 i-fixnums; the C integer has a specific bit pattern in memory defined by Err bitreich.org 70 i-the C @acronym{ABI}. Lisp has no such constraint on its fixnums; Err bitreich.org 70 i-therefore, it only makes sense to think of fixnums as C integers if Err bitreich.org 70 i-you assume that @cffi{} converts them when necessary, such as when Err bitreich.org 70 i-storing one for use in a C function call, or as the value of a C Err bitreich.org 70 i-variable. This requires defining an area of memory@footnote{The Err bitreich.org 70 i-definition of @dfn{memory} includes the @acronym{CPU} registers.}, Err bitreich.org 70 i-represented through an effective address, and storing it there. Err bitreich.org 70 i- Err bitreich.org 70 i-Due to this compartmentalization, it only makes sense to manipulate Err bitreich.org 70 i-raw C data in Lisp through pointers to it. For example, while there Err bitreich.org 70 i-may be a Lisp representation of a @code{struct} that is converted to C Err bitreich.org 70 i-at store time, you may only manipulate its raw data through a pointer. Err bitreich.org 70 i-The C compiler does this also, albeit informally. Err bitreich.org 70 i- Err bitreich.org 70 i-@menu Err bitreich.org 70 i-* Basic Pointer Operations:: Err bitreich.org 70 i-* Allocating Foreign Memory:: Err bitreich.org 70 i-* Accessing Foreign Memory:: Err bitreich.org 70 i- Err bitreich.org 70 i-Dictionary Err bitreich.org 70 i- Err bitreich.org 70 i-* foreign-free:: Err bitreich.org 70 i-* foreign-alloc:: Err bitreich.org 70 i-* foreign-symbol-pointer:: Err bitreich.org 70 i-* inc-pointer:: Err bitreich.org 70 i-* incf-pointer:: Err bitreich.org 70 i-* make-pointer:: Err bitreich.org 70 i-* mem-aptr:: Err bitreich.org 70 i-* mem-aref:: Err bitreich.org 70 i-* mem-ref:: Err bitreich.org 70 i-* null-pointer:: Err bitreich.org 70 i-* null-pointer-p:: Err bitreich.org 70 i-* pointerp:: Err bitreich.org 70 i-* pointer-address:: Err bitreich.org 70 i-* pointer-eq:: Err bitreich.org 70 i-* with-foreign-object:: Err bitreich.org 70 i-* with-foreign-objects:: Err bitreich.org 70 i-* with-foreign-pointer:: Err bitreich.org 70 i-@end menu Err bitreich.org 70 i- Err bitreich.org 70 i-@node Basic Pointer Operations, Allocating Foreign Memory, Pointers, Pointers Err bitreich.org 70 i-@section Basic Pointer Operations Err bitreich.org 70 i- Err bitreich.org 70 i-Manipulating pointers proper can be accomplished through most of the Err bitreich.org 70 i-other operations defined in the Pointers dictionary, such as Err bitreich.org 70 i-@code{make-pointer}, @code{pointer-address}, and @code{pointer-eq}. Err bitreich.org 70 i-When using them, keep in mind that they merely manipulate the Lisp Err bitreich.org 70 i-representation of pointers, not the values they point to. Err bitreich.org 70 i- Err bitreich.org 70 i-@deftp {Lisp Type} foreign-pointer Err bitreich.org 70 i-The pointers' representations differ from implementation to Err bitreich.org 70 i-implementation and have different types. @code{foreign-pointer} Err bitreich.org 70 i-provides a portable type alias to each of these types. Err bitreich.org 70 i-@end deftp Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@node Allocating Foreign Memory, Accessing Foreign Memory, Basic Pointer Operations, Pointers Err bitreich.org 70 i-@section Allocating Foreign Memory Err bitreich.org 70 i- Err bitreich.org 70 i-@cffi{} provides support for stack and heap C memory allocation. Err bitreich.org 70 i-Stack allocation, done with @code{with-foreign-object}, is sometimes Err bitreich.org 70 i-called ``dynamic'' allocation in Lisp, because memory allocated as Err bitreich.org 70 i-such has dynamic extent, much as with @code{let} bindings of special Err bitreich.org 70 i-variables. Err bitreich.org 70 i- Err bitreich.org 70 i-This should not be confused with what C calls ``dynamic'' allocation, Err bitreich.org 70 i-or that done with @code{malloc} and friends. This sort of heap Err bitreich.org 70 i-allocation is done with @code{foreign-alloc}, creating objects that Err bitreich.org 70 i-exist until freed with @code{foreign-free}. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@node Accessing Foreign Memory, foreign-free, Allocating Foreign Memory, Pointers Err bitreich.org 70 i-@section Accessing Foreign Memory Err bitreich.org 70 i- Err bitreich.org 70 i-When manipulating raw C data, consider that all pointers are pointing Err bitreich.org 70 i-to an array. When you only want one C value, such as a single Err bitreich.org 70 i-@code{struct}, this array only has one such value. It is worthwhile Err bitreich.org 70 i-to remember that everything is an array, though, because this is also Err bitreich.org 70 i-the semantic that C imposes natively. Err bitreich.org 70 i- Err bitreich.org 70 i-C values are accessed as the @code{setf}-able places defined by Err bitreich.org 70 i-@code{mem-aref} and @code{mem-ref}. Given a pointer and a @cffi{} Err bitreich.org 70 i-type (@pxref{Foreign Types}), either of these will dereference the Err bitreich.org 70 i-pointer, translate the C data there back to Lisp, and return the Err bitreich.org 70 i-result of said translation, performing the reverse operation when Err bitreich.org 70 i-@code{setf}-ing. To decide which one to use, consider whether you Err bitreich.org 70 i-would use the array index operator @code{[@var{n}]} or the pointer Err bitreich.org 70 i-dereference @code{*} in C; use @code{mem-aref} for array indexing and Err bitreich.org 70 i-@code{mem-ref} for pointer dereferencing. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c FOREIGN-FREE Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node foreign-free, foreign-alloc, Accessing Foreign Memory, Pointers Err bitreich.org 70 i-@heading foreign-free Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{foreign-free ptr @res{} undefined} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item ptr Err bitreich.org 70 i-A foreign pointer. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The @code{foreign-free} function frees a @code{ptr} previously Err bitreich.org 70 i-allocated by @code{foreign-alloc}. The consequences of freeing a given Err bitreich.org 70 i-pointer twice are undefined. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (foreign-alloc :int) Err bitreich.org 70 i-@result{} # Err bitreich.org 70 i-CFFI> (foreign-free *) Err bitreich.org 70 i-@result{} NIL Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{foreign-alloc} @* Err bitreich.org 70 i-@seealso{with-foreign-pointer} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c FOREIGN-ALLOC Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node foreign-alloc, foreign-symbol-pointer, foreign-free, Pointers Err bitreich.org 70 i-@heading foreign-alloc Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{foreign-alloc type &key initial-element initial-contents (count 1) @ Err bitreich.org 70 i- null-terminated-p @res{} pointer} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item type Err bitreich.org 70 i-A foreign type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item initial-element Err bitreich.org 70 i-A Lisp object. Err bitreich.org 70 i- Err bitreich.org 70 i-@item initial-contents Err bitreich.org 70 i-A sequence. Err bitreich.org 70 i- Err bitreich.org 70 i-@item count Err bitreich.org 70 i-An integer. Defaults to 1 or the length of @var{initial-contents} if Err bitreich.org 70 i-supplied. Err bitreich.org 70 i- Err bitreich.org 70 i-@item null-terminated-p Err bitreich.org 70 i-A boolean, false by default. Err bitreich.org 70 i- Err bitreich.org 70 i-@item pointer Err bitreich.org 70 i-A foreign pointer to the newly allocated memory. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The @code{foreign-alloc} function allocates enough memory to hold Err bitreich.org 70 i-@var{count} objects of type @var{type} and returns a Err bitreich.org 70 i-@var{pointer}. This memory must be explicitly freed using Err bitreich.org 70 i-@code{foreign-free} once it is no longer needed. Err bitreich.org 70 i- Err bitreich.org 70 i-If @var{initial-element} is supplied, it is used to initialize the Err bitreich.org 70 i-@var{count} objects the newly allocated memory holds. Err bitreich.org 70 i- Err bitreich.org 70 i-If an @var{initial-contents} sequence is supplied, it must have a Err bitreich.org 70 i-length less than or equal to @var{count} and each of its elements Err bitreich.org 70 i-will be used to initialize the contents of the newly allocated Err bitreich.org 70 i-memory. Err bitreich.org 70 i- Err bitreich.org 70 i-If @var{count} is omitted and @var{initial-contents} is specified, it Err bitreich.org 70 i-will default to @code{(length @var{initial-contents})}. Err bitreich.org 70 i- Err bitreich.org 70 i-@var{initial-element} and @var{initial-contents} are mutually Err bitreich.org 70 i-exclusive. Err bitreich.org 70 i- Err bitreich.org 70 i-When @var{null-terminated-p} is true, Err bitreich.org 70 i-@code{(1+ (max @var{count} (length @var{initial-contents})))} elements Err bitreich.org 70 i-are allocated and the last one is set to @code{NULL}. Note that in Err bitreich.org 70 i-this case @var{type} must be a pointer type (ie. a type that Err bitreich.org 70 i-canonicalizes to @code{:pointer}), otherwise an error is signaled. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (foreign-alloc :char) Err bitreich.org 70 i-@result{} # ; @lispcmt{A pointer to 1 byte of memory.} Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (foreign-alloc :char :count 20) Err bitreich.org 70 i-@result{} # ; @lispcmt{A pointer to 20 bytes of memory.} Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (foreign-alloc :int :initial-element 12) Err bitreich.org 70 i-@result{} # Err bitreich.org 70 i-CFFI> (mem-ref * :int) Err bitreich.org 70 i-@result{} 12 Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (foreign-alloc :int :initial-contents '(1 2 3)) Err bitreich.org 70 i-@result{} # Err bitreich.org 70 i-CFFI> (loop for i from 0 below 3 Err bitreich.org 70 i- collect (mem-aref * :int i)) Err bitreich.org 70 i-@result{} (1 2 3) Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (foreign-alloc :int :initial-contents #(1 2 3)) Err bitreich.org 70 i-@result{} # Err bitreich.org 70 i-CFFI> (loop for i from 0 below 3 Err bitreich.org 70 i- collect (mem-aref * :int i)) Err bitreich.org 70 i-@result{} (1 2 3) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; @lispcmt{Allocate a char** pointer that points to newly allocated memory} Err bitreich.org 70 i-;;; @lispcmt{by the :string type translator for the string "foo".} Err bitreich.org 70 i-CFFI> (foreign-alloc :string :initial-element "foo") Err bitreich.org 70 i-@result{} # Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-;;; @lispcmt{Allocate a null-terminated array of strings.} Err bitreich.org 70 i-;;; @lispcmt{(Note: FOREIGN-STRING-TO-LISP returns NIL when passed a null pointer)} Err bitreich.org 70 i-CFFI> (foreign-alloc :string Err bitreich.org 70 i- :initial-contents '("foo" "bar" "baz") Err bitreich.org 70 i- :null-terminated-p t) Err bitreich.org 70 i-@result{} # Err bitreich.org 70 i-CFFI> (loop for i from 0 below 4 Err bitreich.org 70 i- collect (mem-aref * :string i)) Err bitreich.org 70 i-@result{} ("foo" "bar" "baz" NIL) Err bitreich.org 70 i-CFFI> (progn Err bitreich.org 70 i- (dotimes (i 3) Err bitreich.org 70 i- (foreign-free (mem-aref ** :pointer i))) Err bitreich.org 70 i- (foreign-free **)) Err bitreich.org 70 i-@result{} nil Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{foreign-free} @* Err bitreich.org 70 i-@seealso{with-foreign-object} @* Err bitreich.org 70 i-@seealso{with-foreign-pointer} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c FOREIGN-SYMBOL-POINTER Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node foreign-symbol-pointer, inc-pointer, foreign-alloc, Pointers Err bitreich.org 70 i-@heading foreign-symbol-pointer Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{foreign-symbol-pointer foreign-name &key library @res{} pointer} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item foreign-name Err bitreich.org 70 i-A string. Err bitreich.org 70 i- Err bitreich.org 70 i-@item pointer Err bitreich.org 70 i-A foreign pointer, or @code{nil}. Err bitreich.org 70 i- Err bitreich.org 70 i-@item library Err bitreich.org 70 i-A Lisp symbol or an instance of @code{foreign-library}. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The function @code{foreign-symbol-pointer} will return a foreign Err bitreich.org 70 i-pointer corresponding to the foreign symbol denoted by the string Err bitreich.org 70 i-@var{foreign-name}. If a foreign symbol named @var{foreign-name} Err bitreich.org 70 i-doesn't exist, @code{nil} is returned. Err bitreich.org 70 i- Err bitreich.org 70 i-ABI name manglings will be performed on @var{foreign-name} by Err bitreich.org 70 i-@code{foreign-symbol-pointer} if necessary. (eg: adding a leading Err bitreich.org 70 i-underscore on darwin/ppc) Err bitreich.org 70 i- Err bitreich.org 70 i-@var{library} should name a foreign library as defined by Err bitreich.org 70 i-@code{define-foreign-library}, @code{:default} (which is the default) Err bitreich.org 70 i-or an instance of @code{foreign-library} as returned by Err bitreich.org 70 i-@code{load-foreign-library}. Err bitreich.org 70 i- Err bitreich.org 70 i-@strong{Important note:} do not keep these pointers across saved Lisp Err bitreich.org 70 i-cores as the foreign-library may move across sessions. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (foreign-symbol-pointer "errno") Err bitreich.org 70 i-@result{} # Err bitreich.org 70 i-CFFI> (foreign-symbol-pointer "strerror") Err bitreich.org 70 i-@result{} # Err bitreich.org 70 i-CFFI> (foreign-funcall-pointer * () :int (mem-ref ** :int) :string) Err bitreich.org 70 i-@result{} "No such file or directory" Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (foreign-symbol-pointer "inexistent symbol") Err bitreich.org 70 i-@result{} NIL Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{defcvar} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c INC-POINTER Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node inc-pointer, incf-pointer, foreign-symbol-pointer, Pointers Err bitreich.org 70 i-@heading inc-pointer Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{inc-pointer pointer offset @res{} new-pointer} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item pointer Err bitreich.org 70 i-@itemx new-pointer Err bitreich.org 70 i-A foreign pointer. Err bitreich.org 70 i- Err bitreich.org 70 i-@item offset Err bitreich.org 70 i-An integer. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The function @code{inc-pointer} will return a @var{new-pointer} pointing Err bitreich.org 70 i-@var{offset} bytes past @var{pointer}. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (foreign-string-alloc "Common Lisp") Err bitreich.org 70 i-@result{} # Err bitreich.org 70 i-CFFI> (inc-pointer * 7) Err bitreich.org 70 i-@result{} # Err bitreich.org 70 i-CFFI> (foreign-string-to-lisp *) Err bitreich.org 70 i-@result{} "Lisp" Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{incf-pointer} @* Err bitreich.org 70 i-@seealso{make-pointer} @* Err bitreich.org 70 i-@seealso{pointerp} @* Err bitreich.org 70 i-@seealso{null-pointer} @* Err bitreich.org 70 i-@seealso{null-pointer-p} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c INCF-POINTER Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node incf-pointer, make-pointer, inc-pointer, Pointers Err bitreich.org 70 i-@heading incf-pointer Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Macro{incf-pointer place &optional (offset 1) @res{} new-pointer} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item place Err bitreich.org 70 i-A @code{setf} place. Err bitreich.org 70 i- Err bitreich.org 70 i-@item new-pointer Err bitreich.org 70 i-A foreign pointer. Err bitreich.org 70 i- Err bitreich.org 70 i-@item offset Err bitreich.org 70 i-An integer. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The @code{incf-pointer} macro takes the foreign pointer from Err bitreich.org 70 i-@var{place} and creates a @var{new-pointer} incremented by Err bitreich.org 70 i-@var{offset} bytes and which is stored in @var{place}. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (defparameter *two-words* (foreign-string-alloc "Common Lisp")) Err bitreich.org 70 i-@result{} *TWO-WORDS* Err bitreich.org 70 i-CFFI> (defparameter *one-word* *two-words*) Err bitreich.org 70 i-@result{} *ONE-WORD* Err bitreich.org 70 i-CFFI> (incf-pointer *one-word* 7) Err bitreich.org 70 i-@result{} #.(SB-SYS:INT-SAP #X00600457) Err bitreich.org 70 i-CFFI> (foreign-string-to-lisp *one-word*) Err bitreich.org 70 i-@result{} "Lisp" Err bitreich.org 70 i-CFFI> (foreign-string-to-lisp *two-words*) Err bitreich.org 70 i-@result{} "Common Lisp" Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{inc-pointer} @* Err bitreich.org 70 i-@seealso{make-pointer} @* Err bitreich.org 70 i-@seealso{pointerp} @* Err bitreich.org 70 i-@seealso{null-pointer} @* Err bitreich.org 70 i-@seealso{null-pointer-p} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c MAKE-POINTER Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node make-pointer, mem-aptr, incf-pointer, Pointers Err bitreich.org 70 i-@heading make-pointer Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{make-pointer address @res{} ptr} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item address Err bitreich.org 70 i-An integer. Err bitreich.org 70 i- Err bitreich.org 70 i-@item ptr Err bitreich.org 70 i-A foreign pointer. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The function @code{make-pointer} will return a foreign pointer Err bitreich.org 70 i-pointing to @var{address}. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (make-pointer 42) Err bitreich.org 70 i-@result{} # Err bitreich.org 70 i-CFFI> (pointerp *) Err bitreich.org 70 i-@result{} T Err bitreich.org 70 i-CFFI> (pointer-address **) Err bitreich.org 70 i-@result{} 42 Err bitreich.org 70 i-CFFI> (inc-pointer *** -42) Err bitreich.org 70 i-@result{} # Err bitreich.org 70 i-CFFI> (null-pointer-p *) Err bitreich.org 70 i-@result{} T Err bitreich.org 70 i-CFFI> (typep ** 'foreign-pointer) Err bitreich.org 70 i-@result{} T Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{inc-pointer} @* Err bitreich.org 70 i-@seealso{null-pointer} @* Err bitreich.org 70 i-@seealso{null-pointer-p} @* Err bitreich.org 70 i-@seealso{pointerp} @* Err bitreich.org 70 i-@seealso{pointer-address} @* Err bitreich.org 70 i-@seealso{pointer-eq} @* Err bitreich.org 70 i-@seealso{mem-ref} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c MEM-APTR Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node mem-aptr, mem-aref, make-pointer, Pointers Err bitreich.org 70 i-@heading mem-aptr Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Accessor{mem-aptr ptr type &optional (index 0)} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item ptr Err bitreich.org 70 i-A foreign pointer. Err bitreich.org 70 i- Err bitreich.org 70 i-@item type Err bitreich.org 70 i-A foreign type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item index Err bitreich.org 70 i-An integer. Err bitreich.org 70 i- Err bitreich.org 70 i-@item new-value Err bitreich.org 70 i-A Lisp value compatible with @var{type}. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The @code{mem-aptr} function finds the pointer to an element of the array. Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(mem-aptr ptr type n) Err bitreich.org 70 i- Err bitreich.org 70 i-;; @lispcmt{is identical to:} Err bitreich.org 70 i- Err bitreich.org 70 i-(inc-pointer ptr (* n (foreign-type-size type))) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (with-foreign-string (str "Hello, foreign world!") Err bitreich.org 70 i- (mem-aptr str :char 6)) Err bitreich.org 70 i-@result{} #.(SB-SYS:INT-SAP #X0063D4B6) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c MEM-AREF Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node mem-aref, mem-ref, mem-aptr, Pointers Err bitreich.org 70 i-@heading mem-aref Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Accessor{mem-aref ptr type &optional (index 0)} Err bitreich.org 70 i- Err bitreich.org 70 i-(setf (@strong{mem-aref} @emph{ptr type &optional (index 0)) new-value}) Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item ptr Err bitreich.org 70 i-A foreign pointer. Err bitreich.org 70 i- Err bitreich.org 70 i-@item type Err bitreich.org 70 i-A foreign type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item index Err bitreich.org 70 i-An integer. Err bitreich.org 70 i- Err bitreich.org 70 i-@item new-value Err bitreich.org 70 i-A Lisp value compatible with @var{type}. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The @code{mem-aref} function is similar to @code{mem-ref} but will Err bitreich.org 70 i-automatically calculate the offset from an @var{index}. Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(mem-aref ptr type n) Err bitreich.org 70 i- Err bitreich.org 70 i-;; @lispcmt{is identical to:} Err bitreich.org 70 i- Err bitreich.org 70 i-(mem-ref ptr type (* n (foreign-type-size type))) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (with-foreign-string (str "Hello, foreign world!") Err bitreich.org 70 i- (mem-aref str :char 6)) Err bitreich.org 70 i-@result{} 32 Err bitreich.org 70 i-CFFI> (code-char *) Err bitreich.org 70 i-@result{} #\Space Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (with-foreign-object (array :int 10) Err bitreich.org 70 i- (loop for i below 10 Err bitreich.org 70 i- do (setf (mem-aref array :int i) (random 100))) Err bitreich.org 70 i- (loop for i below 10 collect (mem-aref array :int i))) Err bitreich.org 70 i-@result{} (22 7 22 52 69 1 46 93 90 65) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Compatibility Note Err bitreich.org 70 i- Err bitreich.org 70 i-For compatibility with older versions of CFFI, @ref{mem-aref} will Err bitreich.org 70 i-produce a pointer for the deprecated bare structure specification, but Err bitreich.org 70 i-it is consistent with other types for the current specification form Err bitreich.org 70 i-@code{(:struct @var{structure-name})} and provides a Lisp object Err bitreich.org 70 i-translated from the structure (by default a plist). In order to obtain Err bitreich.org 70 i-the pointer, you should use the new function @ref{mem-aptr}. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{mem-ref} @* Err bitreich.org 70 i-@seealso{mem-aptr} Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c MEM-REF Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node mem-ref, null-pointer, mem-aref, Pointers Err bitreich.org 70 i-@heading mem-ref Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Accessor{mem-ref ptr type &optional offset @res{} object} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item ptr Err bitreich.org 70 i-A pointer. Err bitreich.org 70 i- Err bitreich.org 70 i-@item type Err bitreich.org 70 i-A foreign type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item offset Err bitreich.org 70 i-An integer (in byte units). Err bitreich.org 70 i- Err bitreich.org 70 i-@item object Err bitreich.org 70 i-The value @var{ptr} points to. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (with-foreign-string (ptr "Saluton") Err bitreich.org 70 i- (setf (mem-ref ptr :char 3) (char-code #\a)) Err bitreich.org 70 i- (loop for i from 0 below 8 Err bitreich.org 70 i- collect (code-char (mem-ref ptr :char i)))) Err bitreich.org 70 i-@result{} (#\S #\a #\l #\a #\t #\o #\n #\Null) Err bitreich.org 70 i-CFFI> (setq ptr-to-int (foreign-alloc :int)) Err bitreich.org 70 i-@result{} # Err bitreich.org 70 i-CFFI> (mem-ref ptr-to-int :int) Err bitreich.org 70 i-@result{} 1054619 Err bitreich.org 70 i-CFFI> (setf (mem-ref ptr-to-int :int) 1984) Err bitreich.org 70 i-@result{} 1984 Err bitreich.org 70 i-CFFI> (mem-ref ptr-to-int :int) Err bitreich.org 70 i-@result{} 1984 Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{mem-aref} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c NULL-POINTER Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node null-pointer, null-pointer-p, mem-ref, Pointers Err bitreich.org 70 i-@heading null-pointer Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{null-pointer @res{} pointer} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item pointer Err bitreich.org 70 i-A @code{NULL} pointer. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The function @code{null-pointer} returns a null pointer. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (null-pointer) Err bitreich.org 70 i-@result{} # Err bitreich.org 70 i-CFFI> (pointerp *) Err bitreich.org 70 i-@result{} T Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{null-pointer-p} @* Err bitreich.org 70 i-@seealso{make-pointer} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c NULL-POINTER-P Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node null-pointer-p, pointerp, null-pointer, Pointers Err bitreich.org 70 i-@heading null-pointer-p Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{null-pointer-p ptr @res{} boolean} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item ptr Err bitreich.org 70 i-A foreign pointer that may be a null pointer. Err bitreich.org 70 i- Err bitreich.org 70 i-@item boolean Err bitreich.org 70 i-@code{T} or @code{NIL}. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The function @code{null-pointer-p} returns true if @var{ptr} is a null Err bitreich.org 70 i-pointer and false otherwise. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (null-pointer-p (null-pointer)) Err bitreich.org 70 i-@result{} T Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defun contains-str-p (big little) Err bitreich.org 70 i- (not (null-pointer-p Err bitreich.org 70 i- (foreign-funcall "strstr" :string big :string little :pointer)))) Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (contains-str-p "Popcorns" "corn") Err bitreich.org 70 i-@result{} T Err bitreich.org 70 i-CFFI> (contains-str-p "Popcorns" "salt") Err bitreich.org 70 i-@result{} NIL Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{null-pointer} @* Err bitreich.org 70 i-@seealso{pointerp} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c POINTERP Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node pointerp, pointer-address, null-pointer-p, Pointers Err bitreich.org 70 i-@heading pointerp Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{pointerp ptr @res{} boolean} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item ptr Err bitreich.org 70 i-An object that may be a foreign pointer. Err bitreich.org 70 i- Err bitreich.org 70 i-@item boolean Err bitreich.org 70 i-@code{T} or @code{NIL}. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The function @code{pointerp} returns true if @var{ptr} is a foreign Err bitreich.org 70 i-pointer and false otherwise. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Implementation-specific Notes Err bitreich.org 70 i-In Allegro CL, foreign pointers are integers thus in this Err bitreich.org 70 i-implementation @code{pointerp} will return true for any ordinary integer. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (foreign-alloc 32) Err bitreich.org 70 i-@result{} # Err bitreich.org 70 i-CFFI> (pointerp *) Err bitreich.org 70 i-@result{} T Err bitreich.org 70 i-CFFI> (pointerp "this is not a pointer") Err bitreich.org 70 i-@result{} NIL Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{make-pointer} Err bitreich.org 70 i-@seealso{null-pointer-p} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c POINTER-ADDRESS Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node pointer-address, pointer-eq, pointerp, Pointers Err bitreich.org 70 i-@heading pointer-address Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{pointer-address ptr @res{} address} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item ptr Err bitreich.org 70 i-A foreign pointer. Err bitreich.org 70 i- Err bitreich.org 70 i-@item address Err bitreich.org 70 i-An integer. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The function @code{pointer-address} will return the @var{address} of Err bitreich.org 70 i-a foreign pointer @var{ptr}. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (pointer-address (null-pointer)) Err bitreich.org 70 i-@result{} 0 Err bitreich.org 70 i-CFFI> (pointer-address (make-pointer 123)) Err bitreich.org 70 i-@result{} 123 Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{make-pointer} @* Err bitreich.org 70 i-@seealso{inc-pointer} @* Err bitreich.org 70 i-@seealso{null-pointer} @* Err bitreich.org 70 i-@seealso{null-pointer-p} @* Err bitreich.org 70 i-@seealso{pointerp} @* Err bitreich.org 70 i-@seealso{pointer-eq} @* Err bitreich.org 70 i-@seealso{mem-ref} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c POINTER-EQ Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node pointer-eq, with-foreign-object, pointer-address, Pointers Err bitreich.org 70 i-@heading pointer-eq Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{pointer-eq ptr1 ptr2 @res{} boolean} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item ptr1 Err bitreich.org 70 i-@itemx ptr2 Err bitreich.org 70 i-A foreign pointer. Err bitreich.org 70 i- Err bitreich.org 70 i-@item boolean Err bitreich.org 70 i-@code{T} or @code{NIL}. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The function @code{pointer-eq} returns true if @var{ptr1} and Err bitreich.org 70 i-@var{ptr2} point to the same memory address and false otherwise. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Implementation-specific Notes Err bitreich.org 70 i-The representation of foreign pointers varies across the various Lisp Err bitreich.org 70 i-implementations as does the behaviour of the built-in Common Lisp Err bitreich.org 70 i-equality predicates. Comparing two pointers that point to the same Err bitreich.org 70 i-address with @code{EQ} Lisps will return true on some Lisps, others require Err bitreich.org 70 i-more general predicates like @code{EQL} or @code{EQUALP} and finally Err bitreich.org 70 i-some will return false using any of these predicates. Therefore, for Err bitreich.org 70 i-portability, you should use @code{POINTER-EQ}. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i-This is an example using @acronym{SBCL}, see the Err bitreich.org 70 i-implementation-specific notes above. Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (eql (null-pointer) (null-pointer)) Err bitreich.org 70 i-@result{} NIL Err bitreich.org 70 i-CFFI> (pointer-eq (null-pointer) (null-pointer)) Err bitreich.org 70 i-@result{} T Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{inc-pointer} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c WITH-FOREIGN-OBJECT Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node with-foreign-object, with-foreign-pointer, pointer-eq, Pointers Err bitreich.org 70 i-@heading with-foreign-object, with-foreign-objects Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Macro{with-foreign-object (var type &optional count) &body body} Err bitreich.org 70 i- Err bitreich.org 70 i-@anchor{with-foreign-objects} Err bitreich.org 70 i-@Macro{with-foreign-objects (bindings) &body body} Err bitreich.org 70 i- Err bitreich.org 70 i-bindings ::= @{(var type &optional count)@}* Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item var Err bitreich.org 70 i-A symbol. Err bitreich.org 70 i- Err bitreich.org 70 i-@item type Err bitreich.org 70 i-A foreign type, evaluated. Err bitreich.org 70 i- Err bitreich.org 70 i-@item count Err bitreich.org 70 i-An integer. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The macros @code{with-foreign-object} and @code{with-foreign-objects} Err bitreich.org 70 i-bind @var{var} to a pointer to @var{count} newly allocated objects Err bitreich.org 70 i-of type @var{type} during @var{body}. The buffer has dynamic extent Err bitreich.org 70 i-and may be stack allocated if supported by the host Lisp. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (with-foreign-object (array :int 10) Err bitreich.org 70 i- (dotimes (i 10) Err bitreich.org 70 i- (setf (mem-aref array :int i) (random 100))) Err bitreich.org 70 i- (loop for i below 10 Err bitreich.org 70 i- collect (mem-aref array :int i))) Err bitreich.org 70 i-@result{} (22 7 22 52 69 1 46 93 90 65) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{foreign-alloc} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c WITH-FOREIGN-POINTER Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node with-foreign-pointer, , with-foreign-object, Pointers Err bitreich.org 70 i-@heading with-foreign-pointer Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Macro{with-foreign-pointer (var size &optional size-var) &body body} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item var Err bitreich.org 70 i-@itemx size-var Err bitreich.org 70 i-A symbol. Err bitreich.org 70 i- Err bitreich.org 70 i-@item size Err bitreich.org 70 i-An integer. Err bitreich.org 70 i- Err bitreich.org 70 i-@item body Err bitreich.org 70 i-A list of forms to be executed. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The @code{with-foreign-pointer} macro, binds @var{var} to @var{size} Err bitreich.org 70 i-bytes of foreign memory during @var{body}. The pointer in @var{var} Err bitreich.org 70 i-is invalid beyond the dynamic extend of @var{body} and may be Err bitreich.org 70 i-stack-allocated if supported by the implementation. Err bitreich.org 70 i- Err bitreich.org 70 i-If @var{size-var} is supplied, it will be bound to @var{size} during Err bitreich.org 70 i-@var{body}. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (with-foreign-pointer (string 4 size) Err bitreich.org 70 i- (setf (mem-ref string :char (1- size)) 0) Err bitreich.org 70 i- (lisp-string-to-foreign "Popcorns" string size) Err bitreich.org 70 i- (loop for i from 0 below size Err bitreich.org 70 i- collect (code-char (mem-ref string :char i)))) Err bitreich.org 70 i-@result{} (#\P #\o #\p #\Null) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{foreign-alloc} @* Err bitreich.org 70 i-@seealso{foreign-free} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c CHAPTER: Strings Err bitreich.org 70 i- Err bitreich.org 70 i-@node Strings, Variables, Pointers, Top Err bitreich.org 70 i-@chapter Strings Err bitreich.org 70 i- Err bitreich.org 70 i-As with many languages, Lisp and C have special support for logical Err bitreich.org 70 i-arrays of characters, going so far as to give them a special name, Err bitreich.org 70 i-``strings''. In that spirit, @cffi{} provides special support for Err bitreich.org 70 i-translating between Lisp and C strings. Err bitreich.org 70 i- Err bitreich.org 70 i-The @code{:string} type and the symbols related below also serve as an Err bitreich.org 70 i-example of what you can do portably with @cffi{}; were it not Err bitreich.org 70 i-included, you could write an equally functional @file{strings.lisp} Err bitreich.org 70 i-without referring to any implementation-specific symbols. Err bitreich.org 70 i- Err bitreich.org 70 i-@menu Err bitreich.org 70 i-Dictionary Err bitreich.org 70 i- Err bitreich.org 70 i-* *default-foreign-encoding*:: Err bitreich.org 70 i-* foreign-string-alloc:: Err bitreich.org 70 i-* foreign-string-free:: Err bitreich.org 70 i-* foreign-string-to-lisp:: Err bitreich.org 70 i-* lisp-string-to-foreign:: Err bitreich.org 70 i-* with-foreign-string:: Err bitreich.org 70 i-* with-foreign-strings:: Err bitreich.org 70 i-* with-foreign-pointer-as-string:: Err bitreich.org 70 i-@end menu Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c *DEFAULT-FOREIGN-ENCODING* Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node *default-foreign-encoding*, foreign-string-alloc, Strings, Strings Err bitreich.org 70 i-@heading *default-foreign-encoding* Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i- Err bitreich.org 70 i-@Variable{*default-foreign-encoding*} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Value type Err bitreich.org 70 i- Err bitreich.org 70 i-A keyword. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Initial value Err bitreich.org 70 i- Err bitreich.org 70 i-@code{:utf-8} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i- Err bitreich.org 70 i-This special variable holds the default foreign encoding. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> *default-foreign-encoding* Err bitreich.org 70 i-:utf-8 Err bitreich.org 70 i-CFFI> (foreign-funcall "strdup" (:string :encoding :utf-16) "foo" :string) Err bitreich.org 70 i-"f" Err bitreich.org 70 i-CFFI> (let ((*default-foreign-encoding* :utf-16)) Err bitreich.org 70 i- (foreign-funcall "strdup" (:string :encoding :utf-16) "foo" :string)) Err bitreich.org 70 i-"foo" Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See also Err bitreich.org 70 i- Err bitreich.org 70 i-@seealso{Other Types} (@code{:string} type) @* Err bitreich.org 70 i-@seealso{foreign-string-alloc} @* Err bitreich.org 70 i-@seealso{foreign-string-to-lisp} @* Err bitreich.org 70 i-@seealso{lisp-string-to-foreign} @* Err bitreich.org 70 i-@seealso{with-foreign-string} @* Err bitreich.org 70 i-@seealso{with-foreign-pointer-as-string} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c FOREIGN-STRING-ALLOC Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node foreign-string-alloc, foreign-string-free, *default-foreign-encoding*, Strings Err bitreich.org 70 i-@heading foreign-string-alloc Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{foreign-string-alloc string &key encoding null-terminated-p @ Err bitreich.org 70 i- start end @res{} pointer} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @emph Err bitreich.org 70 i-@item @var{string} Err bitreich.org 70 i-A Lisp string. Err bitreich.org 70 i- Err bitreich.org 70 i-@item @var{encoding} Err bitreich.org 70 i-Foreign encoding. Defaults to @code{*default-foreign-encoding*}. Err bitreich.org 70 i- Err bitreich.org 70 i-@item @var{null-terminated-p} Err bitreich.org 70 i-Boolean, defaults to true. Err bitreich.org 70 i- Err bitreich.org 70 i-@item @var{start}, @var{end} Err bitreich.org 70 i-Bounding index designators of @var{string}. 0 and @code{nil}, by Err bitreich.org 70 i-default. Err bitreich.org 70 i- Err bitreich.org 70 i-@item @var{pointer} Err bitreich.org 70 i-A pointer to the newly allocated foreign string. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The @code{foreign-string-alloc} function allocates foreign memory Err bitreich.org 70 i-holding a copy of @var{string} converted using the specified Err bitreich.org 70 i-@var{encoding}. @var{Start} specifies an offset into @var{string} and Err bitreich.org 70 i-@var{end} marks the position following the last element of the foreign Err bitreich.org 70 i-string. Err bitreich.org 70 i- Err bitreich.org 70 i-This string must be freed with @code{foreign-string-free}. Err bitreich.org 70 i- Err bitreich.org 70 i-If @var{null-terminated-p} is false, the string will not be Err bitreich.org 70 i-null-terminated. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (defparameter *str* (foreign-string-alloc "Hello, foreign world!")) Err bitreich.org 70 i-@result{} # Err bitreich.org 70 i-CFFI> (foreign-funcall "strlen" :pointer *str* :int) Err bitreich.org 70 i-@result{} 21 Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{foreign-string-free} @* Err bitreich.org 70 i-@seealso{with-foreign-string} Err bitreich.org 70 i-@c @seealso{:string} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c FOREIGN-STRING-FREE Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node foreign-string-free, foreign-string-to-lisp, foreign-string-alloc, Strings Err bitreich.org 70 i-@heading foreign-string-free Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{foreign-string-free pointer} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item pointer Err bitreich.org 70 i-A pointer to a string allocated by @code{foreign-string-alloc}. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The @code{foreign-string-free} function frees a foreign string Err bitreich.org 70 i-allocated by @code{foreign-string-alloc}. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{foreign-string-alloc} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c FOREIGN-STRING-TO-LISP Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node foreign-string-to-lisp, lisp-string-to-foreign, foreign-string-free, Strings Err bitreich.org 70 i-@heading foreign-string-to-lisp Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{foreign-string-to-lisp ptr &key offset count max-chars @ Err bitreich.org 70 i- encoding @res{} string} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item ptr Err bitreich.org 70 i-A pointer. Err bitreich.org 70 i- Err bitreich.org 70 i-@item offset Err bitreich.org 70 i-An integer greater than or equal to 0. Defauls to 0. Err bitreich.org 70 i- Err bitreich.org 70 i-@item count Err bitreich.org 70 i-Either @code{nil} (the default), or an integer greater than or equal to 0. Err bitreich.org 70 i- Err bitreich.org 70 i-@item max-chars Err bitreich.org 70 i-An integer greater than or equal to 0. Err bitreich.org 70 i-@code{(1- array-total-size-limit)}, by default. Err bitreich.org 70 i- Err bitreich.org 70 i-@item encoding Err bitreich.org 70 i-Foreign encoding. Defaults to @code{*default-foreign-encoding*}. Err bitreich.org 70 i- Err bitreich.org 70 i-@item string Err bitreich.org 70 i-A Lisp string. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The @code{foreign-string-to-lisp} function converts at most Err bitreich.org 70 i-@var{count} octets from @var{ptr} into a Lisp string, using the Err bitreich.org 70 i-defined @var{encoding}. Err bitreich.org 70 i- Err bitreich.org 70 i-If @var{count} is @code{nil} (the default), characters are copied Err bitreich.org 70 i-until @var{max-chars} is reached or a @code{NULL} character is found. Err bitreich.org 70 i- Err bitreich.org 70 i-If @var{ptr} is a null pointer, returns @code{nil}. Err bitreich.org 70 i- Err bitreich.org 70 i-Note that the @code{:string} type will automatically convert between Err bitreich.org 70 i-Lisp strings and foreign strings. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (foreign-funcall "getenv" :string "HOME" :pointer) Err bitreich.org 70 i-@result{} # Err bitreich.org 70 i-CFFI> (foreign-string-to-lisp *) Err bitreich.org 70 i-@result{} "/Users/luis" Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{lisp-string-to-foreign} @* Err bitreich.org 70 i-@seealso{foreign-string-alloc} Err bitreich.org 70 i-@c @seealso{:string} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c LISP-STRING-TO-FOREIGN Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node lisp-string-to-foreign, with-foreign-string, foreign-string-to-lisp, Strings Err bitreich.org 70 i-@heading lisp-string-to-foreign Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{lisp-string-to-foreign string buffer bufsize &key start @ Err bitreich.org 70 i- end offset encoding @res{} buffer} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @emph Err bitreich.org 70 i-@item @var{string} Err bitreich.org 70 i-A Lisp string. Err bitreich.org 70 i- Err bitreich.org 70 i-@item @var{buffer} Err bitreich.org 70 i-A foreign pointer. Err bitreich.org 70 i- Err bitreich.org 70 i-@item @var{bufsize} Err bitreich.org 70 i-An integer. Err bitreich.org 70 i- Err bitreich.org 70 i-@item @var{start}, @var{end} Err bitreich.org 70 i-Bounding index designators of @var{string}. 0 and @code{nil}, by Err bitreich.org 70 i-default. Err bitreich.org 70 i- Err bitreich.org 70 i-@item @var{offset} Err bitreich.org 70 i-An integer greater than or equal to 0. Defauls to 0. Err bitreich.org 70 i- Err bitreich.org 70 i-@item @var{encoding} Err bitreich.org 70 i-Foreign encoding. Defaults to @code{*default-foreign-encoding*}. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The @code{lisp-string-to-foreign} function copies at most Err bitreich.org 70 i-@var{bufsize}-1 octets from a Lisp @var{string} using the specified Err bitreich.org 70 i-@var{encoding} into @var{buffer}+@var{offset}. The foreign string will Err bitreich.org 70 i-be null-terminated. Err bitreich.org 70 i- Err bitreich.org 70 i-@var{Start} specifies an offset into @var{string} and Err bitreich.org 70 i-@var{end} marks the position following the last element of the foreign Err bitreich.org 70 i-string. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (with-foreign-pointer-as-string (str 255) Err bitreich.org 70 i- (lisp-string-to-foreign "Hello, foreign world!" str 6)) Err bitreich.org 70 i-@result{} "Hello" Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{foreign-string-alloc} @* Err bitreich.org 70 i-@seealso{foreign-string-to-lisp} @* Err bitreich.org 70 i-@seealso{with-foreign-pointer-as-string} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c WITH-FOREIGN-STRING Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node with-foreign-string, with-foreign-pointer-as-string, lisp-string-to-foreign, Strings Err bitreich.org 70 i-@heading with-foreign-string, with-foreign-strings Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Macro{with-foreign-string (var-or-vars string &rest args) &body body} Err bitreich.org 70 i- Err bitreich.org 70 i-@anchor{with-foreign-strings} Err bitreich.org 70 i-@Macro{with-foreign-strings (bindings) &body body} Err bitreich.org 70 i- Err bitreich.org 70 i-var-or-vars ::= var | (var &optional octet-size-var) Err bitreich.org 70 i-bindings ::= @{(var-or-vars string &rest args)@}* Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @emph Err bitreich.org 70 i-@item @var{var}, @var{byte-size-var} Err bitreich.org 70 i-A symbol. Err bitreich.org 70 i- Err bitreich.org 70 i-@item @var{string} Err bitreich.org 70 i-A Lisp string. Err bitreich.org 70 i- Err bitreich.org 70 i-@item @var{body} Err bitreich.org 70 i-A list of forms to be executed. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The @code{with-foreign-string} macro will bind @var{var} to a newly Err bitreich.org 70 i-allocated foreign string containing @var{string}. @var{Args} is passed Err bitreich.org 70 i-to the underlying @code{foreign-string-alloc} call. Err bitreich.org 70 i- Err bitreich.org 70 i-If @var{octet-size-var} is provided, it will be bound the length of Err bitreich.org 70 i-foreign string in octets including the null terminator. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (with-foreign-string (foo "12345") Err bitreich.org 70 i- (foreign-funcall "strlen" :pointer foo :int)) Err bitreich.org 70 i-@result{} 5 Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (let ((array (coerce #(84 117 114 97 110 103 97) Err bitreich.org 70 i- '(array (unsigned-byte 8))))) Err bitreich.org 70 i- (with-foreign-string (foreign-string array) Err bitreich.org 70 i- (foreign-string-to-lisp foreign-string))) Err bitreich.org 70 i-@result{} "Turanga" Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{foreign-string-alloc} @* Err bitreich.org 70 i-@seealso{with-foreign-pointer-as-string} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c WITH-FOREIGN-POINTER-AS-STRING Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node with-foreign-pointer-as-string, , with-foreign-string, Strings Err bitreich.org 70 i-@heading with-foreign-pointer-as-string Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Macro{with-foreign-pointer-as-string (var size &optional size-var @ Err bitreich.org 70 i- &rest args) &body body @res{} string} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item var Err bitreich.org 70 i-A symbol. Err bitreich.org 70 i- Err bitreich.org 70 i-@item string Err bitreich.org 70 i-A Lisp string. Err bitreich.org 70 i- Err bitreich.org 70 i-@item body Err bitreich.org 70 i-List of forms to be executed. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The @code{with-foreign-pointer-as-string} macro is similar to Err bitreich.org 70 i-@code{with-foreign-pointer} except that @var{var} is used as the Err bitreich.org 70 i-returned value of an implicit @code{progn} around @var{body}, after Err bitreich.org 70 i-being converted to a Lisp string using the provided @var{args}. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (with-foreign-pointer-as-string (str 6 str-size :encoding :ascii) Err bitreich.org 70 i- (lisp-string-to-foreign "Hello, foreign world!" str str-size)) Err bitreich.org 70 i-@result{} "Hello" Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{foreign-string-alloc} @* Err bitreich.org 70 i-@seealso{with-foreign-string} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c CHAPTER: Variables Err bitreich.org 70 i- Err bitreich.org 70 i-@node Variables, Functions, Strings, Top Err bitreich.org 70 i-@chapter Variables Err bitreich.org 70 i- Err bitreich.org 70 i-@menu Err bitreich.org 70 i-Dictionary Err bitreich.org 70 i- Err bitreich.org 70 i-* defcvar:: Err bitreich.org 70 i-* get-var-pointer:: Err bitreich.org 70 i-@end menu Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c DEFCVAR Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node defcvar, get-var-pointer, Variables, Variables Err bitreich.org 70 i-@heading defcvar Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Macro{defcvar name-and-options type &optional documentation @res{} lisp-name} Err bitreich.org 70 i- Err bitreich.org 70 i-@var{name-and-options} ::= name | (name &key read-only (library :default)) @* Err bitreich.org 70 i-@var{name} ::= lisp-name [foreign-name] | foreign-name [lisp-name] Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item foreign-name Err bitreich.org 70 i-A string denoting a foreign function. Err bitreich.org 70 i- Err bitreich.org 70 i-@item lisp-name Err bitreich.org 70 i-A symbol naming the Lisp function to be created. Err bitreich.org 70 i- Err bitreich.org 70 i-@item type Err bitreich.org 70 i-A foreign type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item read-only Err bitreich.org 70 i-A boolean. Err bitreich.org 70 i- Err bitreich.org 70 i-@item documentation Err bitreich.org 70 i-A Lisp string; not evaluated. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The @code{defcvar} macro defines a symbol macro @var{lisp-name} that looks Err bitreich.org 70 i-up @var{foreign-name} and dereferences it acording to @var{type}. It Err bitreich.org 70 i-can also be @code{setf}ed, unless @var{read-only} is true, in which Err bitreich.org 70 i-case an error will be signaled. Err bitreich.org 70 i- Err bitreich.org 70 i-When one of @var{lisp-name} or @var{foreign-name} is omitted, the Err bitreich.org 70 i-other is automatically derived using the following rules: Err bitreich.org 70 i- Err bitreich.org 70 i-@itemize Err bitreich.org 70 i-@item Err bitreich.org 70 i-Foreign names are converted to Lisp names by uppercasing, replacing Err bitreich.org 70 i-underscores with hyphens, and wrapping around asterisks. Err bitreich.org 70 i-@item Err bitreich.org 70 i-Lisp names are converted to foreign names by lowercasing, replacing Err bitreich.org 70 i-hyphens with underscores, and removing asterisks, if any. Err bitreich.org 70 i-@end itemize Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (defcvar "errno" :int) Err bitreich.org 70 i-@result{} *ERRNO* Err bitreich.org 70 i-CFFI> (foreign-funcall "strerror" :int *errno* :string) Err bitreich.org 70 i-@result{} "Inappropriate ioctl for device" Err bitreich.org 70 i-CFFI> (setf *errno* 1) Err bitreich.org 70 i-@result{} 1 Err bitreich.org 70 i-CFFI> (foreign-funcall "strerror" :int *errno* :string) Err bitreich.org 70 i-@result{} "Operation not permitted" Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-Trying to modify a read-only foreign variable: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (defcvar ("errno" +error-number+ :read-only t) :int) Err bitreich.org 70 i-@result{} +ERROR-NUMBER+ Err bitreich.org 70 i-CFFI> (setf +error-number+ 12) Err bitreich.org 70 i-;; @lispcmt{@error{} Trying to modify read-only foreign var: +ERROR-NUMBER+.} Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@emph{Note that accessing @code{errno} this way won't work with every Err bitreich.org 70 i-implementation of the C standard library.} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{get-var-pointer} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c GET-VAR-POINTER Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node get-var-pointer, , defcvar, Variables Err bitreich.org 70 i-@heading get-var-pointer Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{get-var-pointer symbol @res{} pointer} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item symbol Err bitreich.org 70 i-A symbol denoting a foreign variable defined with @code{defcvar}. Err bitreich.org 70 i- Err bitreich.org 70 i-@item pointer Err bitreich.org 70 i-A foreign pointer. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The function @code{get-var-pointer} will return a @var{pointer} to the Err bitreich.org 70 i-foreign global variable @var{symbol} previously defined with Err bitreich.org 70 i-@code{defcvar}. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (defcvar "errno" :int :read-only t) Err bitreich.org 70 i-@result{} *ERRNO* Err bitreich.org 70 i-CFFI> *errno* Err bitreich.org 70 i-@result{} 25 Err bitreich.org 70 i-CFFI> (get-var-pointer '*errno*) Err bitreich.org 70 i-@result{} # Err bitreich.org 70 i-CFFI> (mem-ref * :int) Err bitreich.org 70 i-@result{} 25 Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{defcvar} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c CHAPTER: Functions Err bitreich.org 70 i- Err bitreich.org 70 i-@node Functions, Libraries, Variables, Top Err bitreich.org 70 i-@chapter Functions Err bitreich.org 70 i- Err bitreich.org 70 i-@menu Err bitreich.org 70 i-@c * Defining Foreign Functions:: Err bitreich.org 70 i-@c * Calling Foreign Functions:: Err bitreich.org 70 i- Err bitreich.org 70 i-Dictionary Err bitreich.org 70 i- Err bitreich.org 70 i-* defcfun:: Err bitreich.org 70 i-* foreign-funcall:: Err bitreich.org 70 i-* foreign-funcall-pointer:: Err bitreich.org 70 i-* foreign-funcall-varargs:: Err bitreich.org 70 i-* foreign-funcall-pointer-varargs:: Err bitreich.org 70 i-* translate-camelcase-name:: Err bitreich.org 70 i-* translate-name-from-foreign:: Err bitreich.org 70 i-* translate-name-to-foreign:: Err bitreich.org 70 i-* translate-underscore-separated-name:: Err bitreich.org 70 i-@end menu Err bitreich.org 70 i- Err bitreich.org 70 i-@c @node Calling Foreign Functions Err bitreich.org 70 i-@c @section Calling Foreign Functions Err bitreich.org 70 i- Err bitreich.org 70 i-@c @node Defining Foreign Functions Err bitreich.org 70 i-@c @section Defining Foreign Functions Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c DEFCFUN Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node defcfun, foreign-funcall, Functions, Functions Err bitreich.org 70 i-@heading defcfun Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Macro{defcfun name-and-options return-type &body [docstring] arguments [&rest] @ Err bitreich.org 70 i- @res{} lisp-name} Err bitreich.org 70 i- Err bitreich.org 70 i-@var{name-and-options} ::= @var{name} | (@var{name} &key @var{library} @var{convention}) @* Err bitreich.org 70 i-@var{name} ::= @var{lisp-name} [@var{foreign-name}] | @var{foreign-name} [@var{lisp-name}] @* Err bitreich.org 70 i-@var{arguments} ::= @{ (@var{arg-name} @var{arg-type}) @}* @* Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item foreign-name Err bitreich.org 70 i-A string denoting a foreign function. Err bitreich.org 70 i- Err bitreich.org 70 i-@item lisp-name Err bitreich.org 70 i-A symbol naming the Lisp function to be created. Err bitreich.org 70 i- Err bitreich.org 70 i-@item arg-name Err bitreich.org 70 i-A symbol. Err bitreich.org 70 i- Err bitreich.org 70 i-@item return-type Err bitreich.org 70 i-@itemx arg-type Err bitreich.org 70 i-A foreign type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item convention Err bitreich.org 70 i-One of @code{:cdecl} (default) or @code{:stdcall}. Err bitreich.org 70 i- Err bitreich.org 70 i-@item library Err bitreich.org 70 i-A symbol designating a foreign library. Err bitreich.org 70 i- Err bitreich.org 70 i-@item docstring Err bitreich.org 70 i-A documentation string. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The @code{defcfun} macro provides a declarative interface for defining Err bitreich.org 70 i-Lisp functions that call foreign functions. Err bitreich.org 70 i- Err bitreich.org 70 i-When one of @var{lisp-name} or @var{foreign-name} is omitted, the Err bitreich.org 70 i-other is automatically derived using the following rules: Err bitreich.org 70 i- Err bitreich.org 70 i-@itemize Err bitreich.org 70 i-@item Err bitreich.org 70 i-Foreign names are converted to Lisp names by uppercasing and replacing Err bitreich.org 70 i-underscores with hyphens. Err bitreich.org 70 i-@item Err bitreich.org 70 i-Lisp names are converted to foreign names by lowercasing and replacing Err bitreich.org 70 i-hyphens with underscores. Err bitreich.org 70 i-@end itemize Err bitreich.org 70 i- Err bitreich.org 70 i-If you place the symbol @code{&rest} in the end of the argument list Err bitreich.org 70 i-after the fixed arguments, @code{defcfun} will treat the foreign Err bitreich.org 70 i-function as a @strong{variadic function}. The variadic arguments Err bitreich.org 70 i-should be passed in a way similar to what @code{foreign-funcall} would Err bitreich.org 70 i-expect. Unlike @code{foreign-funcall} though, @code{defcfun} will take Err bitreich.org 70 i-care of doing argument promotion. Note that in this case Err bitreich.org 70 i-@code{defcfun} will generate a Lisp @emph{macro} instead of a Err bitreich.org 70 i-function and will only work for Lisps that support Err bitreich.org 70 i-@code{foreign-funcall.} Err bitreich.org 70 i- Err bitreich.org 70 i-If a foreign structure is to be passed or returned by value (that is, Err bitreich.org 70 i-the type is of the form @code{(:struct ...)}), then the cffi-libffi system Err bitreich.org 70 i-must be loaded, which in turn depends on Err bitreich.org 70 i-@uref{http://sourceware.org/libffi/,libffi}, including the header files. Err bitreich.org 70 i-Failure to load that system will result in an error. Err bitreich.org 70 i-Variadic functions cannot at present accept or return structures by Err bitreich.org 70 i-value. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defcfun "strlen" :int Err bitreich.org 70 i- "Calculate the length of a string." Err bitreich.org 70 i- (n :string)) Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (strlen "123") Err bitreich.org 70 i-@result{} 3 Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defcfun ("abs" c-abs) :int (n :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (c-abs -42) Err bitreich.org 70 i-@result{} 42 Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-Function without arguments: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defcfun "rand" :int) Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (rand) Err bitreich.org 70 i-@result{} 1804289383 Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-Variadic function example: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defcfun "sprintf" :int Err bitreich.org 70 i- (str :pointer) Err bitreich.org 70 i- (control :string) Err bitreich.org 70 i- &rest) Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (with-foreign-pointer-as-string (s 100) Err bitreich.org 70 i- (sprintf s "%c %d %.2f %s" :char 90 :short 42 :float pi Err bitreich.org 70 i- :string "super-locrian")) Err bitreich.org 70 i-@result{} "A 42 3.14 super-locrian" Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{foreign-funcall} @* Err bitreich.org 70 i-@seealso{foreign-funcall-pointer} @* Err bitreich.org 70 i-@seealso{foreign-funcall-varargs} @* Err bitreich.org 70 i-@seealso{foreign-funcall-pointer-varargs} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c FOREIGN-FUNCALL Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node foreign-funcall, foreign-funcall-pointer, defcfun, Functions Err bitreich.org 70 i-@heading foreign-funcall Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Macro{foreign-funcall name-and-options &rest arguments @res{} return-value} Err bitreich.org 70 i- Err bitreich.org 70 i-@var{arguments} ::= @{ @var{arg-type} @var{arg} @}* [@var{return-type}] @* Err bitreich.org 70 i-@var{name-and-options} ::= @var{name} | (@var{name} &key @var{library} @var{convention}) @* Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item name Err bitreich.org 70 i-A Lisp string. Err bitreich.org 70 i- Err bitreich.org 70 i-@item arg-type Err bitreich.org 70 i-A foreign type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item arg Err bitreich.org 70 i-An argument of type @var{arg-type}. Err bitreich.org 70 i- Err bitreich.org 70 i-@item return-type Err bitreich.org 70 i-A foreign type, @code{:void} by default. Err bitreich.org 70 i- Err bitreich.org 70 i-@item return-value Err bitreich.org 70 i-A lisp object. Err bitreich.org 70 i- Err bitreich.org 70 i-@item library Err bitreich.org 70 i-A lisp symbol; not evaluated. Err bitreich.org 70 i- Err bitreich.org 70 i-@item convention Err bitreich.org 70 i-One of @code{:cdecl} (default) or @code{:stdcall}. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The @code{foreign-funcall} macro is the main primitive for calling Err bitreich.org 70 i-foreign functions. Err bitreich.org 70 i- Err bitreich.org 70 i-If a foreign structure is to be passed or returned by value (that is, Err bitreich.org 70 i-the type is of the form @code{(:struct ...)}), then the cffi-libffi system Err bitreich.org 70 i-must be loaded, which in turn depends on Err bitreich.org 70 i-@uref{http://sourceware.org/libffi/,libffi}, including the header files. Err bitreich.org 70 i-Failure to load that system will result in an error. Err bitreich.org 70 i-Variadic functions cannot at present accept or return structures by Err bitreich.org 70 i-value. Err bitreich.org 70 i- Err bitreich.org 70 i-@emph{Note: The return value of foreign-funcall on functions with a Err bitreich.org 70 i-:void return type is still undefined.} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Implementation-specific Notes Err bitreich.org 70 i-@itemize Err bitreich.org 70 i-@item Err bitreich.org 70 i-Corman Lisp does not support @code{foreign-funcall}. On Err bitreich.org 70 i-implementations that @strong{don't} support @code{foreign-funcall} Err bitreich.org 70 i-@code{cffi-sys::no-foreign-funcall} will be present in Err bitreich.org 70 i-@code{*features*}. Note: in these Lisps you can still use the Err bitreich.org 70 i-@code{defcfun} interface. Err bitreich.org 70 i-@end itemize Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (foreign-funcall "strlen" :string "foo" :int) Err bitreich.org 70 i-@result{} 3 Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-Given the C code: Err bitreich.org 70 i- Err bitreich.org 70 i-@example Err bitreich.org 70 i-void print_number(int n) Err bitreich.org 70 i-@{ Err bitreich.org 70 i- printf("N: %d\n", n); Err bitreich.org 70 i-@} Err bitreich.org 70 i-@end example Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (foreign-funcall "print_number" :int 123456) Err bitreich.org 70 i-@print{} N: 123456 Err bitreich.org 70 i-@result{} NIL Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@noindent Err bitreich.org 70 i-Or, equivalently: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (foreign-funcall "print_number" :int 123456 :void) Err bitreich.org 70 i-@print{} N: 123456 Err bitreich.org 70 i-@result{} NIL Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (foreign-funcall "printf" :string (format nil "%s: %d.~%") Err bitreich.org 70 i- :string "So long and thanks for all the fish" Err bitreich.org 70 i- :int 42 :int) Err bitreich.org 70 i-@print{} So long and thanks for all the fish: 42. Err bitreich.org 70 i-@result{} 41 Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{defcfun} @* Err bitreich.org 70 i-@seealso{foreign-funcall-pointer} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c FOREIGN-FUNCALL-POINTER Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node foreign-funcall-pointer, foreign-funcall-varargs, foreign-funcall, Functions Err bitreich.org 70 i-@heading foreign-funcall-pointer Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Macro{foreign-funcall-pointer pointer options &rest arguments @res{} return-value} Err bitreich.org 70 i- Err bitreich.org 70 i-@var{arguments} ::= @{ @var{arg-type} @var{arg} @}* [@var{return-type}] @* Err bitreich.org 70 i-@var{options} ::= (&key @var{convention}) @* Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item pointer Err bitreich.org 70 i-A foreign pointer. Err bitreich.org 70 i- Err bitreich.org 70 i-@item arg-type Err bitreich.org 70 i-A foreign type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item arg Err bitreich.org 70 i-An argument of type @var{arg-type}. Err bitreich.org 70 i- Err bitreich.org 70 i-@item return-type Err bitreich.org 70 i-A foreign type, @code{:void} by default. Err bitreich.org 70 i- Err bitreich.org 70 i-@item return-value Err bitreich.org 70 i-A lisp object. Err bitreich.org 70 i- Err bitreich.org 70 i-@item convention Err bitreich.org 70 i-One of @code{:cdecl} (default) or @code{:stdcall}. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The @code{foreign-funcall} macro is the main primitive for calling Err bitreich.org 70 i-foreign functions. Err bitreich.org 70 i- Err bitreich.org 70 i-@emph{Note: The return value of foreign-funcall on functions with a Err bitreich.org 70 i-:void return type is still undefined.} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Implementation-specific Notes Err bitreich.org 70 i-@itemize Err bitreich.org 70 i-@item Err bitreich.org 70 i-Corman Lisp does not support @code{foreign-funcall}. On Err bitreich.org 70 i-implementations that @strong{don't} support @code{foreign-funcall} Err bitreich.org 70 i-@code{cffi-sys::no-foreign-funcall} will be present in Err bitreich.org 70 i-@code{*features*}. Note: in these Lisps you can still use the Err bitreich.org 70 i-@code{defcfun} interface. Err bitreich.org 70 i-@end itemize Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (foreign-funcall-pointer (foreign-symbol-pointer "abs") () Err bitreich.org 70 i- :int -42 :int) Err bitreich.org 70 i-@result{} 42 Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{defcfun} @* Err bitreich.org 70 i-@seealso{foreign-funcall} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c FOREIGN-FUNCALL-VARARGS Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node foreign-funcall-varargs, foreign-funcall-pointer-varargs, foreign-funcall-pointer, Functions Err bitreich.org 70 i-@heading foreign-funcall-varargs Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Macro{foreign-funcall-varargs name-and-options (fixed-arguments) &rest arguments @res{} return-value} Err bitreich.org 70 i- Err bitreich.org 70 i-@var{fixed-arguments} ::= @{ @var{arg-type} @var{arg} @}* [@var{return-type}] @* Err bitreich.org 70 i-@var{arguments} ::= @{ @var{arg-type} @var{arg} @}* [@var{return-type}] @* Err bitreich.org 70 i-@var{name-and-options} ::= @var{name} | (@var{name} &key @var{library} @var{convention}) @* Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item name Err bitreich.org 70 i-A Lisp string. Err bitreich.org 70 i- Err bitreich.org 70 i-@item arg-type Err bitreich.org 70 i-A foreign type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item arg Err bitreich.org 70 i-An argument of type @var{arg-type}. Err bitreich.org 70 i- Err bitreich.org 70 i-@item return-type Err bitreich.org 70 i-A foreign type, @code{:void} by default. Err bitreich.org 70 i- Err bitreich.org 70 i-@item return-value Err bitreich.org 70 i-A lisp object. Err bitreich.org 70 i- Err bitreich.org 70 i-@item library Err bitreich.org 70 i-A lisp symbol; not evaluated. Err bitreich.org 70 i- Err bitreich.org 70 i-@item convention Err bitreich.org 70 i-One of @code{:cdecl} (default) or @code{:stdcall}. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The @code{foreign-funcall-varargs} macro is the main primitive for Err bitreich.org 70 i-calling foreign variadic functions. It behaves similarily to Err bitreich.org 70 i-@code{foreign-funcall} except @code{fixed-arguments} are distinguished Err bitreich.org 70 i-from the remaining arguments. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (with-foreign-pointer-as-string (s 100) Err bitreich.org 70 i- (setf (mem-ref s :char) 0) Err bitreich.org 70 i- (foreign-funcall-varargs Err bitreich.org 70 i- "sprintf" (:pointer s :string) "%.2f") Err bitreich.org 70 i- :double (coerce pi 'double-float) :int)) Err bitreich.org 70 i-@result{} 3.14 Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c FOREIGN-FUNCALL-POINTER-VARARGS Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node foreign-funcall-pointer-varargs, translate-camelcase-name, foreign-funcall-varargs, Functions Err bitreich.org 70 i-@heading foreign-funcall-pointer-varargs Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Macro{foreign-funcall-pointer-varargs pointer options (fixed-arguments) &rest arguments @res{} return-value} Err bitreich.org 70 i- Err bitreich.org 70 i-@var{fixed-arguments} ::= @{ @var{arg-type} @var{arg} @}* [@var{return-type}] @* Err bitreich.org 70 i-@var{arguments} ::= @{ @var{arg-type} @var{arg} @}* [@var{return-type}] @* Err bitreich.org 70 i-@var{options} ::= (&key @var{convention}) @* Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item pointer Err bitreich.org 70 i-A foreign pointer. Err bitreich.org 70 i- Err bitreich.org 70 i-@item arg-type Err bitreich.org 70 i-A foreign type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item arg Err bitreich.org 70 i-An argument of type @var{arg-type}. Err bitreich.org 70 i- Err bitreich.org 70 i-@item return-type Err bitreich.org 70 i-A foreign type, @code{:void} by default. Err bitreich.org 70 i- Err bitreich.org 70 i-@item return-value Err bitreich.org 70 i-A lisp object. Err bitreich.org 70 i- Err bitreich.org 70 i-@item convention Err bitreich.org 70 i-One of @code{:cdecl} (default) or @code{:stdcall}. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The @code{foreign-funcall-pointer-varargs} macro is the main primitive Err bitreich.org 70 i-for calling foreign variadic functions. It behaves similarily to Err bitreich.org 70 i-@code{foreign-funcall-pointer} except @code{fixed-arguments} are Err bitreich.org 70 i-distinguished from the remaining arguments. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (with-foreign-pointer-as-string (s 100) Err bitreich.org 70 i- (setf (mem-ref s :char) 0) Err bitreich.org 70 i- (foreign-funcall-pointer-varargs Err bitreich.org 70 i- (foreign-symbol-pointer "sprintf") () (:pointer s :string "%.2f") Err bitreich.org 70 i- :double (coerce pi 'double-float) :int)) Err bitreich.org 70 i-@result{} 3.14 Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c TRANSLATE-CAMELCASE-NAME Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node translate-camelcase-name, translate-name-from-foreign, foreign-funcall-pointer-varargs, Functions Err bitreich.org 70 i-@heading translate-camelcase-name Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{translate-camelcase-name name &key upper-initial-p special-words @res{} return-value} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item name Err bitreich.org 70 i-Either a symbol or a string. Err bitreich.org 70 i- Err bitreich.org 70 i-@item upper-initial-p Err bitreich.org 70 i-A generalized boolean. Err bitreich.org 70 i- Err bitreich.org 70 i-@item special words Err bitreich.org 70 i-A list of strings. Err bitreich.org 70 i- Err bitreich.org 70 i-@item return-value Err bitreich.org 70 i-If @var{name} is a symbol, this is a string, and vice versa. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-@code{translate-camelcase-name} is a helper function for Err bitreich.org 70 i-specializations of @code{translate-name-from-foreign} and Err bitreich.org 70 i-@code{translate-name-to-foreign}. It handles the common case of Err bitreich.org 70 i-converting between foreign camelCase names and lisp Err bitreich.org 70 i-names. @var{upper-initial-p} indicates whether the first letter of the Err bitreich.org 70 i-foreign name should be uppercase. @var{special-words} is a list of Err bitreich.org 70 i-strings that should be treated atomically in translation. This list is Err bitreich.org 70 i-case-sensitive. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (translate-camelcase-name some-xml-function) Err bitreich.org 70 i-@result{} "someXmlFunction" Err bitreich.org 70 i-CFFI> (translate-camelcase-name some-xml-function :upper-initial-p t) Err bitreich.org 70 i-@result{} "SomeXmlFunction" Err bitreich.org 70 i-CFFI> (translate-camelcase-name some-xml-function :special-words '("XML")) Err bitreich.org 70 i-@result{} "someXMLFunction" Err bitreich.org 70 i-CFFI> (translate-camelcase-name "someXMLFunction") Err bitreich.org 70 i-@result{} SOME-X-M-L-FUNCTION Err bitreich.org 70 i-CFFI> (translate-camelcase-name "someXMLFunction" :special-words '("XML")) Err bitreich.org 70 i-@result{} SOME-XML-FUNCTION Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{translate-name-from-foreign} @* Err bitreich.org 70 i-@seealso{translate-name-to-foreign} @* Err bitreich.org 70 i-@seealso{translate-underscore-separated-name} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c TRANSLATE-NAME-FROM-FOREIGN Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node translate-name-from-foreign, translate-name-to-foreign, translate-camelcase-name, Functions Err bitreich.org 70 i-@heading translate-name-from-foreign Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{translate-name-from-foreign foreign-name package &optional varp @res{} symbol} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item foreign-name Err bitreich.org 70 i-A string denoting a foreign function. Err bitreich.org 70 i- Err bitreich.org 70 i-@item package Err bitreich.org 70 i-A Lisp package Err bitreich.org 70 i- Err bitreich.org 70 i-@item varp Err bitreich.org 70 i-A generalized boolean. Err bitreich.org 70 i- Err bitreich.org 70 i-@item symbol Err bitreich.org 70 i-The Lisp symbol to be used a function name. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-@code{translate-name-from-foreign} is used by @ref{defcfun} to handle Err bitreich.org 70 i-the conversion of foreign names to lisp names. By default, it Err bitreich.org 70 i-translates using @ref{translate-underscore-separated-name}. However, Err bitreich.org 70 i-you can create specialized methods on this function to make Err bitreich.org 70 i-translating more closely match the foreign library's naming Err bitreich.org 70 i-conventions. Err bitreich.org 70 i- Err bitreich.org 70 i-Specialize @var{package} on some package. This allows other packages Err bitreich.org 70 i-to load libraries with different naming conventions. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (defcfun "someXmlFunction" ...) Err bitreich.org 70 i-@result{} SOMEXMLFUNCTION Err bitreich.org 70 i-CFFI> (defmethod translate-name-from-foreign ((spec string) Err bitreich.org 70 i- (package (eql *package*)) Err bitreich.org 70 i- &optional varp) Err bitreich.org 70 i- (let ((name (translate-camelcase-name spec))) Err bitreich.org 70 i- (if varp (intern (format nil "*~a*" name)) name))) Err bitreich.org 70 i-@result{} #))> Err bitreich.org 70 i-CFFI> (defcfun "someXmlFunction" ...) Err bitreich.org 70 i-@result{} SOME-XML-FUNCTION Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{defcfun} @* Err bitreich.org 70 i-@seealso{translate-camelcase-name} @* Err bitreich.org 70 i-@seealso{translate-name-to-foreign} @* Err bitreich.org 70 i-@seealso{translate-underscore-separated-name} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c TRANSLATE-NAME-TO-FOREIGN Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node translate-name-to-foreign, translate-underscore-separated-name, translate-name-from-foreign, Functions Err bitreich.org 70 i-@heading translate-name-to-foreign Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{translate-name-to-foreign lisp-name package &optional varp @res{} string} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item lisp-name Err bitreich.org 70 i-A symbol naming the Lisp function to be created. Err bitreich.org 70 i- Err bitreich.org 70 i-@item package Err bitreich.org 70 i-A Lisp package Err bitreich.org 70 i- Err bitreich.org 70 i-@item varp Err bitreich.org 70 i-A generalized boolean. Err bitreich.org 70 i- Err bitreich.org 70 i-@item string Err bitreich.org 70 i-The string representing the foreign function name. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-@code{translate-name-to-foreign} is used by @ref{defcfun} to handle Err bitreich.org 70 i-the conversion of lisp names to foreign names. By default, it Err bitreich.org 70 i-translates using @ref{translate-underscore-separated-name}. However, Err bitreich.org 70 i-you can create specialized methods on this function to make Err bitreich.org 70 i-translating more closely match the foreign library's naming Err bitreich.org 70 i-conventions. Err bitreich.org 70 i- Err bitreich.org 70 i-Specialize @var{package} on some package. This allows other packages Err bitreich.org 70 i-to load libraries with different naming conventions. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (defcfun some-xml-function ...) Err bitreich.org 70 i-@result{} "some_xml_function" Err bitreich.org 70 i-CFFI> (defmethod translate-name-to-foreign ((spec symbol) Err bitreich.org 70 i- (package (eql *package*)) Err bitreich.org 70 i- &optional varp) Err bitreich.org 70 i- (let ((name (translate-camelcase-name spec))) Err bitreich.org 70 i- (if varp (subseq name 1 (1- (length name))) name))) Err bitreich.org 70 i-@result{} #))> Err bitreich.org 70 i-CFFI> (defcfun some-xml-function ...) Err bitreich.org 70 i-@result{} "someXmlFunction" Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{defcfun} @* Err bitreich.org 70 i-@seealso{translate-camelcase-name} @* Err bitreich.org 70 i-@seealso{translate-name-from-foreign} @* Err bitreich.org 70 i-@seealso{translate-underscore-separated-name} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c TRANSLATE-UNDERSCORE-SEPARATED-NAME Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node translate-underscore-separated-name, , translate-name-to-foreign, Functions Err bitreich.org 70 i-@heading translate-underscore-separated-name Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{translate-underscore-separated-name name @res{} return-value} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item name Err bitreich.org 70 i-Either a symbol or a string. Err bitreich.org 70 i- Err bitreich.org 70 i-@item return-value Err bitreich.org 70 i-If @var{name} is a symbol, this is a string, and vice versa. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-@code{translate-underscore-separated-name} is a helper function for Err bitreich.org 70 i-specializations of @ref{translate-name-from-foreign} and Err bitreich.org 70 i-@ref{translate-name-to-foreign}. It handles the common case of Err bitreich.org 70 i-converting between foreign underscore_separated names and lisp names. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (translate-underscore-separated-name some-xml-function) Err bitreich.org 70 i-@result{} "some_xml_function" Err bitreich.org 70 i-CFFI> (translate-camelcase-name "some_xml_function") Err bitreich.org 70 i-@result{} SOME-XML-FUNCTION Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{translate-name-from-foreign} @* Err bitreich.org 70 i-@seealso{translate-name-to-foreign} @* Err bitreich.org 70 i-@seealso{translate-camelcase-name} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c CHAPTER: Libraries Err bitreich.org 70 i- Err bitreich.org 70 i-@node Libraries, Callbacks, Functions, Top Err bitreich.org 70 i-@chapter Libraries Err bitreich.org 70 i- Err bitreich.org 70 i-@menu Err bitreich.org 70 i-* Defining a library:: Err bitreich.org 70 i-* Library definition style:: Err bitreich.org 70 i- Err bitreich.org 70 i-Dictionary Err bitreich.org 70 i- Err bitreich.org 70 i-* close-foreign-library:: Close a foreign library. Err bitreich.org 70 i-* *darwin-framework-directories*:: Search path for Darwin frameworks. Err bitreich.org 70 i-* define-foreign-library:: Explain how to load a foreign library. Err bitreich.org 70 i-* *foreign-library-directories*:: Search path for shared libraries. Err bitreich.org 70 i-* load-foreign-library:: Load a foreign library. Err bitreich.org 70 i-* load-foreign-library-error:: Signalled on failure of its namesake. Err bitreich.org 70 i-* use-foreign-library:: Load a foreign library when needed. Err bitreich.org 70 i-@end menu Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@node Defining a library, Library definition style, Libraries, Libraries Err bitreich.org 70 i-@section Defining a library Err bitreich.org 70 i- Err bitreich.org 70 i-Almost all foreign code you might want to access exists in some kind Err bitreich.org 70 i-of shared library. The meaning of @dfn{shared library} varies among Err bitreich.org 70 i-platforms, but for our purposes, we will consider it to include Err bitreich.org 70 i-@file{.so} files on @sc{unix}, frameworks on Darwin (and derivatives Err bitreich.org 70 i-like Mac @acronym{OS X}), and @file{.dll} files on Windows. Err bitreich.org 70 i- Err bitreich.org 70 i-Bringing one of these libraries into the Lisp image is normally a Err bitreich.org 70 i-two-step process. Err bitreich.org 70 i- Err bitreich.org 70 i-@enumerate Err bitreich.org 70 i-@item Err bitreich.org 70 i-Describe to @cffi{} how to load the library at some future point, Err bitreich.org 70 i-depending on platform and other factors, with a Err bitreich.org 70 i-@code{define-foreign-library} top-level form. Err bitreich.org 70 i- Err bitreich.org 70 i-@item Err bitreich.org 70 i-Load the library so defined with either a top-level Err bitreich.org 70 i-@code{use-foreign-library} form or by calling the function Err bitreich.org 70 i-@code{load-foreign-library}. Err bitreich.org 70 i-@end enumerate Err bitreich.org 70 i- Err bitreich.org 70 i-@xref{Tutorial-Loading,, Loading foreign libraries}, for a working Err bitreich.org 70 i-example of the above two steps. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@node Library definition style, close-foreign-library, Defining a library, Libraries Err bitreich.org 70 i-@section Library definition style Err bitreich.org 70 i- Err bitreich.org 70 i-Looking at the @code{libcurl} library definition presented earlier, Err bitreich.org 70 i-you may ask why we did not simply do this: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(define-foreign-library libcurl Err bitreich.org 70 i- (t (:default "libcurl"))) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@noindent Err bitreich.org 70 i-Indeed, this would work just as well on the computer on which I tested Err bitreich.org 70 i-the tutorial. There are a couple of good reasons to provide the Err bitreich.org 70 i-@file{.so}'s current version number, however. Namely, the versionless Err bitreich.org 70 i-@file{.so} is not packaged on most @sc{unix} systems along with the Err bitreich.org 70 i-actual, fully-versioned library; instead, it is included in the Err bitreich.org 70 i-``development'' package along with C headers and static @file{.a} Err bitreich.org 70 i-libraries. Err bitreich.org 70 i- Err bitreich.org 70 i-The reason @cffi{} does not try to account for this lies in the Err bitreich.org 70 i-meaning of the version numbers. A full treatment of shared library Err bitreich.org 70 i-versions is beyond this manual's scope; see @ref{Versioning,, Library Err bitreich.org 70 i-interface versions, libtool, @acronym{GNU} Libtool}, for helpful Err bitreich.org 70 i-information for the unfamiliar. For our purposes, consider that a Err bitreich.org 70 i-mismatch between the library version with which you tested and the Err bitreich.org 70 i-installed library version may cause undefined Err bitreich.org 70 i-behavior.@footnote{Windows programmers may chafe at adding a Err bitreich.org 70 i-@sc{unix}-specific clause to @code{define-foreign-library}. Instead, Err bitreich.org 70 i-ask why the Windows solution to library incompatibility is ``include Err bitreich.org 70 i-your own version of every library you use with every program''.} Err bitreich.org 70 i- Err bitreich.org 70 i-@impnote{Maybe some notes should go here about OS X, which I know Err bitreich.org 70 i-little about. --stephen} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c CLOSE-FOREIGN-LIBRARY Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node close-foreign-library, *darwin-framework-directories*, Library definition style, Libraries Err bitreich.org 70 i-@heading close-foreign-library Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{close-foreign-library library @res{} success} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item library Err bitreich.org 70 i-A symbol or an instance of @code{foreign-library}. Err bitreich.org 70 i- Err bitreich.org 70 i-@item success Err bitreich.org 70 i-A Lisp boolean. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i- Err bitreich.org 70 i-Closes @var{library} which can be a symbol designating a library Err bitreich.org 70 i-define through @code{define-foreign-library} or an instance of Err bitreich.org 70 i-@code{foreign-library} as returned by @code{load-foreign-library}. Err bitreich.org 70 i- Err bitreich.org 70 i-@c @subheading Examples Err bitreich.org 70 i-@c @xref{Tutorial-Loading,, Loading foreign libraries}. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i- Err bitreich.org 70 i-@seealso{define-foreign-library} @* Err bitreich.org 70 i-@seealso{load-foreign-library} @* Err bitreich.org 70 i-@seealso{use-foreign-library} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c *DARWIN-FRAMEWORK-DIRECTORIES* Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node *darwin-framework-directories*, define-foreign-library, close-foreign-library, Libraries Err bitreich.org 70 i-@heading *darwin-framework-directories* Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i- Err bitreich.org 70 i-@Variable{*darwin-framework-directories*} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Value type Err bitreich.org 70 i- Err bitreich.org 70 i-A list, in which each element is a string, a pathname, or a simple Err bitreich.org 70 i-Lisp expression. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Initial value Err bitreich.org 70 i- Err bitreich.org 70 i-A list containing the following, in order: an expression corresponding Err bitreich.org 70 i-to Darwin path @file{~/Library/Frameworks/}, Err bitreich.org 70 i-@code{#P"/Library/Frameworks/"}, and Err bitreich.org 70 i-@code{#P"/System/Library/Frameworks/"}. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i- Err bitreich.org 70 i-The meaning of ``simple Lisp expression'' is explained in Err bitreich.org 70 i-@ref{*foreign-library-directories*}. In contrast to that variable, Err bitreich.org 70 i-this is not a fallback search path; the default value described above Err bitreich.org 70 i-is intended to be a reasonably complete search path on Darwin systems. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (let ((lib (load-foreign-library '(:framework "OpenGL")))) Err bitreich.org 70 i- (foreign-library-pathname lib)) Err bitreich.org 70 i-@result{} #P"/System/Library/Frameworks/OpenGL.framework/OpenGL" Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See also Err bitreich.org 70 i- Err bitreich.org 70 i-@seealso{*foreign-library-directories*} @* Err bitreich.org 70 i-@seealso{define-foreign-library} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c DEFINE-FOREIGN-LIBRARY Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node define-foreign-library, *foreign-library-directories*, *darwin-framework-directories*, Libraries Err bitreich.org 70 i-@heading define-foreign-library Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i- Err bitreich.org 70 i-@Macro{define-foreign-library name-and-options @{ load-clause @}* @res{} name} Err bitreich.org 70 i- Err bitreich.org 70 i-name-and-options ::= name | (name &key convention search-path) Err bitreich.org 70 i-load-clause ::= (feature library &key convention search-path) Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item name Err bitreich.org 70 i-A symbol. Err bitreich.org 70 i- Err bitreich.org 70 i-@item feature Err bitreich.org 70 i-A feature expression. Err bitreich.org 70 i- Err bitreich.org 70 i-@item library Err bitreich.org 70 i-A library designator. Err bitreich.org 70 i- Err bitreich.org 70 i-@item convention Err bitreich.org 70 i-One of @code{:cdecl} (default) or @code{:stdcall} Err bitreich.org 70 i- Err bitreich.org 70 i-@item search-path Err bitreich.org 70 i-A path or list of paths where the library will be searched if not found in Err bitreich.org 70 i-system-global directories. Paths specified in a load clause take priority over Err bitreich.org 70 i-paths specified as library option, with *foreign-library-directories* having Err bitreich.org 70 i-lowest priority. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i- Err bitreich.org 70 i-Creates a new library designator called @var{name}. The Err bitreich.org 70 i-@var{load-clause}s describe how to load that designator when passed to Err bitreich.org 70 i-@code{load-foreign-library} or @code{use-foreign-library}. Err bitreich.org 70 i- Err bitreich.org 70 i-When trying to load the library @var{name}, the relevant function Err bitreich.org 70 i-searches the @var{load-clause}s in order for the first one where Err bitreich.org 70 i-@var{feature} evaluates to true. That happens for any of the Err bitreich.org 70 i-following situations: Err bitreich.org 70 i- Err bitreich.org 70 i-@enumerate 1 Err bitreich.org 70 i-@item Err bitreich.org 70 i-If @var{feature} is a symbol present in @code{common-lisp:*features*}. Err bitreich.org 70 i- Err bitreich.org 70 i-@item Err bitreich.org 70 i-If @var{feature} is a list, depending on @code{(first @var{feature})}, Err bitreich.org 70 i-a keyword: Err bitreich.org 70 i- Err bitreich.org 70 i-@table @code Err bitreich.org 70 i-@item :and Err bitreich.org 70 i-All of the feature expressions in @code{(rest @var{feature})} are Err bitreich.org 70 i-true. Err bitreich.org 70 i- Err bitreich.org 70 i-@item :or Err bitreich.org 70 i-At least one of the feature expressions in @code{(rest @var{feature})} Err bitreich.org 70 i-is true. Err bitreich.org 70 i- Err bitreich.org 70 i-@item :not Err bitreich.org 70 i-The feature expression @code{(second @var{feature})} is not true. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@item Err bitreich.org 70 i-Finally, if @var{feature} is @code{t}, this @var{load-clause} is Err bitreich.org 70 i-picked unconditionally. Err bitreich.org 70 i-@end enumerate Err bitreich.org 70 i- Err bitreich.org 70 i-Upon finding the first true @var{feature}, the library loader then Err bitreich.org 70 i-loads the @var{library}. The meaning of ``library designator'' is Err bitreich.org 70 i-described in @ref{load-foreign-library}. Err bitreich.org 70 i- Err bitreich.org 70 i-Functions associated to a library defined by Err bitreich.org 70 i-@code{define-foreign-library} (e.g. through @code{defcfun}'s Err bitreich.org 70 i-@code{:library} option, will inherit the library's options. The Err bitreich.org 70 i-precedence is as follows: Err bitreich.org 70 i- Err bitreich.org 70 i-@enumerate 1 Err bitreich.org 70 i-@item Err bitreich.org 70 i-@code{defcfun}/@code{foreign-funcall} specific options; Err bitreich.org 70 i- Err bitreich.org 70 i-@item Err bitreich.org 70 i-@var{load-clause} options; Err bitreich.org 70 i- Err bitreich.org 70 i-@item Err bitreich.org 70 i-global library options (the @var{name-and-options} argument) Err bitreich.org 70 i-@end enumerate Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@xref{Tutorial-Loading,, Loading foreign libraries}. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i- Err bitreich.org 70 i-@seealso{close-foreign-library} @* Err bitreich.org 70 i-@seealso{load-foreign-library} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c *FOREIGN-LIBRARY-DIRECTORIES* Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node *foreign-library-directories*, load-foreign-library, define-foreign-library, Libraries Err bitreich.org 70 i-@heading *foreign-library-directories* Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i- Err bitreich.org 70 i-@Variable{*foreign-library-directories*} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Value type Err bitreich.org 70 i- Err bitreich.org 70 i-A list, in which each element is a string, a pathname, or a simple Err bitreich.org 70 i-Lisp expression. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Initial value Err bitreich.org 70 i- Err bitreich.org 70 i-The empty list. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i- Err bitreich.org 70 i-You should not have to use this variable. Err bitreich.org 70 i- Err bitreich.org 70 i-Most, if not all, Lisps supported by @cffi{} have a reasonable default Err bitreich.org 70 i-search algorithm for foreign libraries. For example, Lisps for Err bitreich.org 70 i-@sc{unix} usually call Err bitreich.org 70 i-@uref{http://www.opengroup.org/onlinepubs/009695399/functions/dlopen.html,, Err bitreich.org 70 i-@code{dlopen(3)}}, which in turn looks in the system library Err bitreich.org 70 i-directories. Only if that fails does @cffi{} look for the named Err bitreich.org 70 i-library file in these directories, and load it from there if found. Err bitreich.org 70 i- Err bitreich.org 70 i-Thus, this is intended to be a @cffi{}-only fallback to the library Err bitreich.org 70 i-search configuration provided by your operating system. For example, Err bitreich.org 70 i-if you distribute a foreign library with your Lisp package, you can Err bitreich.org 70 i-add the library's containing directory to this list and portably Err bitreich.org 70 i-expect @cffi{} to find it. Err bitreich.org 70 i- Err bitreich.org 70 i-A @dfn{simple Lisp expression} is intended to provide functionality Err bitreich.org 70 i-commonly used in search paths such as Err bitreich.org 70 i-@acronym{ASDF}'s@footnote{@xref{Using asdf to load systems,,, asdf, Err bitreich.org 70 i-asdf: another system definition facility}, for information on Err bitreich.org 70 i-@code{asdf:*central-registry*}.}, and is defined recursively as Err bitreich.org 70 i-follows:@footnote{See @code{mini-eval} in @file{libraries.lisp} for Err bitreich.org 70 i-the source of this definition. As is always the case with a Lisp Err bitreich.org 70 i-@code{eval}, it's easier to understand the Lisp definition than the Err bitreich.org 70 i-english.} Err bitreich.org 70 i- Err bitreich.org 70 i-@enumerate Err bitreich.org 70 i-@item Err bitreich.org 70 i-A list, whose @samp{first} is a function designator, and whose Err bitreich.org 70 i-@samp{rest} is a list of simple Lisp expressions to be evaluated and Err bitreich.org 70 i-passed to the so-designated function. The result is the result of the Err bitreich.org 70 i-function call. Err bitreich.org 70 i- Err bitreich.org 70 i-@item Err bitreich.org 70 i-A symbol, whose result is its symbol value. Err bitreich.org 70 i- Err bitreich.org 70 i-@item Err bitreich.org 70 i-Anything else evaluates to itself. Err bitreich.org 70 i-@end enumerate Err bitreich.org 70 i- Err bitreich.org 70 i-The result of evaluating the @dfn{simple Lisp expression} should yield Err bitreich.org 70 i-a @emph{designator} for a @emph{list} of @emph{pathname designators}. Err bitreich.org 70 i- Err bitreich.org 70 i-@strong{Note}: in Common Lisp, @code{#p"/foo/bar"} designates the Err bitreich.org 70 i-@emph{bar} file within the @emph{/foo} directory whereas Err bitreich.org 70 i-@code{#p"/foo/bar/"} designates the @emph{/foo/bar} directory. Keep Err bitreich.org 70 i-that in mind when customising the value of Err bitreich.org 70 i-@code{*foreign-library-directories*}. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@example Err bitreich.org 70 i-$ ls Err bitreich.org 70 i-@print{} liblibli.so libli.lisp Err bitreich.org 70 i-@end example Err bitreich.org 70 i- Err bitreich.org 70 i-@noindent Err bitreich.org 70 i-In @file{libli.lisp}: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(pushnew #P"/home/sirian/lisp/libli/" *foreign-library-directories* Err bitreich.org 70 i- :test #'equal) Err bitreich.org 70 i- Err bitreich.org 70 i-(load-foreign-library '(:default "liblibli")) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@noindent Err bitreich.org 70 i-The following example would achieve the same effect: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(pushnew '(merge-pathnames #p"lisp/libli/" (user-homedir-pathname)) Err bitreich.org 70 i- *foreign-library-directories* Err bitreich.org 70 i- :test #'equal) Err bitreich.org 70 i-@result{} ((MERGE-PATHNAMES #P"lisp/libli/" (USER-HOMEDIR-PATHNAME))) Err bitreich.org 70 i- Err bitreich.org 70 i-(load-foreign-library '(:default "liblibli")) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See also Err bitreich.org 70 i- Err bitreich.org 70 i-@seealso{*darwin-framework-directories*} @* Err bitreich.org 70 i-@seealso{define-foreign-library} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c LOAD-FOREIGN-LIBRARY Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node load-foreign-library, load-foreign-library-error, *foreign-library-directories*, Libraries Err bitreich.org 70 i-@heading load-foreign-library Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Function{load-foreign-library library-designator @res{} library} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item library-designator Err bitreich.org 70 i-A library designator. Err bitreich.org 70 i- Err bitreich.org 70 i-@item library-designator Err bitreich.org 70 i-An instance of @code{foreign-library}. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i- Err bitreich.org 70 i-Load the library indicated by @var{library-designator}. A @dfn{library Err bitreich.org 70 i-designator} is defined as follows: Err bitreich.org 70 i- Err bitreich.org 70 i-@enumerate Err bitreich.org 70 i-@item Err bitreich.org 70 i-If a symbol, is considered a name previously defined with Err bitreich.org 70 i-@code{define-foreign-library}. Err bitreich.org 70 i- Err bitreich.org 70 i-@item Err bitreich.org 70 i-If a string or pathname, passed as a namestring directly to the Err bitreich.org 70 i-implementation's foreign library loader. If that fails, search the Err bitreich.org 70 i-directories in @code{*foreign-library-directories*} with Err bitreich.org 70 i-@code{cl:probe-file}; if found, the absolute path is passed to the Err bitreich.org 70 i-implementation's loader. Err bitreich.org 70 i- Err bitreich.org 70 i-@item Err bitreich.org 70 i-If a list, the meaning depends on @code{(first @var{library})}: Err bitreich.org 70 i- Err bitreich.org 70 i-@table @code Err bitreich.org 70 i-@item :framework Err bitreich.org 70 i-The second list element is taken to be a Darwin framework name, which Err bitreich.org 70 i-is then searched in @code{*darwin-framework-directories*}, and loaded Err bitreich.org 70 i-when found. Err bitreich.org 70 i- Err bitreich.org 70 i-@item :or Err bitreich.org 70 i-Each remaining list element, itself a @dfn{library designator}, is loaded in Err bitreich.org 70 i-order, until one succeeds. Err bitreich.org 70 i- Err bitreich.org 70 i-@item :default Err bitreich.org 70 i-The name is transformed according to the platform's naming convention Err bitreich.org 70 i-to shared libraries, and the resultant string is loaded as a @dfn{library Err bitreich.org 70 i-designator}. For example, on @sc{unix}, the name is suffixed with Err bitreich.org 70 i-@file{.so}. Err bitreich.org 70 i-@end table Err bitreich.org 70 i-@end enumerate Err bitreich.org 70 i- Err bitreich.org 70 i-If the library is already loaded it will be reloaded. Err bitreich.org 70 i- Err bitreich.org 70 i-If the load fails, signal a @code{load-foreign-library-error}. Err bitreich.org 70 i- Err bitreich.org 70 i-@strong{Please note:} For system libraries, you should not need to Err bitreich.org 70 i-specify the directory containing the library. Each operating system Err bitreich.org 70 i-has its own idea of a default search path, and you should rely on it Err bitreich.org 70 i-when it is reasonable. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Implementation-specific Notes Err bitreich.org 70 i-On ECL platforms where its dynamic FFI is not supported (ie. when Err bitreich.org 70 i-@code{:dffi} is not present in @code{*features*}), Err bitreich.org 70 i-@code{cffi:load-foreign-library} does not work and you must use ECL's Err bitreich.org 70 i-own @code{ffi:load-foreign-library} with a constant string argument. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@xref{Tutorial-Loading,, Loading foreign libraries}. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i- Err bitreich.org 70 i-@seealso{close-foreign-library} @* Err bitreich.org 70 i-@seealso{*darwin-framework-directories*} @* Err bitreich.org 70 i-@seealso{define-foreign-library} @* Err bitreich.org 70 i-@seealso{*foreign-library-directories*} @* Err bitreich.org 70 i-@seealso{load-foreign-library-error} @* Err bitreich.org 70 i-@seealso{use-foreign-library} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c LOAD-FOREIGN-LIBRARY-ERROR Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node load-foreign-library-error, use-foreign-library, load-foreign-library, Libraries Err bitreich.org 70 i-@heading load-foreign-library-error Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i- Err bitreich.org 70 i-@Condition{load-foreign-library-error} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Class precedence list Err bitreich.org 70 i- Err bitreich.org 70 i-@code{load-foreign-library-error}, @code{error}, Err bitreich.org 70 i-@code{serious-condition}, @code{condition}, @code{t} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i- Err bitreich.org 70 i-Signalled when a foreign library load completely fails. The exact Err bitreich.org 70 i-meaning of this varies depending on the real conditions at work, but Err bitreich.org 70 i-almost universally, the implementation's error message is useless. Err bitreich.org 70 i-However, @cffi{} does provide the useful restarts @code{retry} and Err bitreich.org 70 i-@code{use-value}; invoke the @code{retry} restart to try loading the Err bitreich.org 70 i-foreign library again, or the @code{use-value} restart to try loading Err bitreich.org 70 i-a different foreign library designator. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See also Err bitreich.org 70 i- Err bitreich.org 70 i-@seealso{load-foreign-library} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c USE-FOREIGN-LIBRARY Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node use-foreign-library, , load-foreign-library-error, Libraries Err bitreich.org 70 i-@heading use-foreign-library Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i- Err bitreich.org 70 i-@Macro{use-foreign-library name} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item name Err bitreich.org 70 i-A library designator; unevaluated. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i- Err bitreich.org 70 i-@xref{load-foreign-library}, for the meaning of ``library Err bitreich.org 70 i-designator''. This is intended to be the top-level form used Err bitreich.org 70 i-idiomatically after a @code{define-foreign-library} form to go ahead Err bitreich.org 70 i-and load the library. @c ; it also sets the ``current foreign library''. Err bitreich.org 70 i-Finally, on implementations where the regular evaluation rule is Err bitreich.org 70 i-insufficient for foreign library loading, it loads it at the required Err bitreich.org 70 i-time.@footnote{Namely, @acronym{CMUCL}. See Err bitreich.org 70 i-@code{use-foreign-library} in @file{libraries.lisp} for details.} Err bitreich.org 70 i- Err bitreich.org 70 i-@c current foreign library is a concept created a few hours ago as of Err bitreich.org 70 i-@c this writing. It is not actually used yet, but probably will be. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@xref{Tutorial-Loading,, Loading foreign libraries}. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See also Err bitreich.org 70 i- Err bitreich.org 70 i-@seealso{load-foreign-library} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c CHAPTER: Callbacks Err bitreich.org 70 i- Err bitreich.org 70 i-@node Callbacks, The Groveller, Libraries, Top Err bitreich.org 70 i-@chapter Callbacks Err bitreich.org 70 i- Err bitreich.org 70 i-@menu Err bitreich.org 70 i-Dictionary Err bitreich.org 70 i- Err bitreich.org 70 i-* callback:: Err bitreich.org 70 i-* defcallback:: Err bitreich.org 70 i-* get-callback:: Err bitreich.org 70 i-@end menu Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c CALLBACK Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node callback, defcallback, Callbacks, Callbacks Err bitreich.org 70 i-@heading callback Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Macro{callback symbol @res{} pointer} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item symbol Err bitreich.org 70 i-A symbol denoting a callback. Err bitreich.org 70 i- Err bitreich.org 70 i-@item pointer Err bitreich.org 70 i-@itemx new-value Err bitreich.org 70 i-A pointer. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The @code{callback} macro is analogous to the standard CL special Err bitreich.org 70 i-operator @code{function} and will return a pointer to the callback Err bitreich.org 70 i-denoted by the symbol @var{name}. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (defcallback sum :int ((a :int) (b :int)) Err bitreich.org 70 i- (+ a b)) Err bitreich.org 70 i-@result{} SUM Err bitreich.org 70 i-CFFI> (callback sum) Err bitreich.org 70 i-@result{} # Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{get-callback} @* Err bitreich.org 70 i-@seealso{defcallback} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c DEFCALLBACK Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node defcallback, get-callback, callback, Callbacks Err bitreich.org 70 i-@heading defcallback Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Macro{defcallback name-and-options return-type arguments &body body @res{} name} Err bitreich.org 70 i- Err bitreich.org 70 i-name-and-options ::= name | (name &key convention) Err bitreich.org 70 i-arguments ::= (@{ (arg-name arg-type) @}*) Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item name Err bitreich.org 70 i-A symbol naming the callback created. Err bitreich.org 70 i- Err bitreich.org 70 i-@item return-type Err bitreich.org 70 i-The foreign type for the callback's return value. Err bitreich.org 70 i- Err bitreich.org 70 i-@item arg-name Err bitreich.org 70 i-A symbol. Err bitreich.org 70 i- Err bitreich.org 70 i-@item arg-type Err bitreich.org 70 i-A foreign type. Err bitreich.org 70 i- Err bitreich.org 70 i-@item convention Err bitreich.org 70 i-One of @code{:cdecl} (default) or @code{:stdcall}. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-The @code{defcallback} macro defines a Lisp function that can be called Err bitreich.org 70 i-from C. The arguments passed to this function will be converted to the Err bitreich.org 70 i-appropriate Lisp representation and its return value will be converted Err bitreich.org 70 i-to its C representation. Err bitreich.org 70 i- Err bitreich.org 70 i-This Lisp function can be accessed by the @code{callback} macro or the Err bitreich.org 70 i-@code{get-callback} function. Err bitreich.org 70 i- Err bitreich.org 70 i-@strong{Portability note:} @code{defcallback} will not work correctly Err bitreich.org 70 i-on some Lisps if it's not a top-level form. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defcfun "qsort" :void Err bitreich.org 70 i- (base :pointer) Err bitreich.org 70 i- (nmemb :int) Err bitreich.org 70 i- (size :int) Err bitreich.org 70 i- (fun-compar :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcallback < :int ((a :pointer) (b :pointer)) Err bitreich.org 70 i- (let ((x (mem-ref a :int)) Err bitreich.org 70 i- (y (mem-ref b :int))) Err bitreich.org 70 i- (cond ((> x y) 1) Err bitreich.org 70 i- ((< x y) -1) Err bitreich.org 70 i- (t 0)))) Err bitreich.org 70 i- Err bitreich.org 70 i-CFFI> (with-foreign-object (array :int 10) Err bitreich.org 70 i- ;; @lispcmt{Initialize array.} Err bitreich.org 70 i- (loop for i from 0 and n in '(7 2 10 4 3 5 1 6 9 8) Err bitreich.org 70 i- do (setf (mem-aref array :int i) n)) Err bitreich.org 70 i- ;; @lispcmt{Sort it.} Err bitreich.org 70 i- (qsort array 10 (foreign-type-size :int) (callback <)) Err bitreich.org 70 i- ;; @lispcmt{Return it as a list.} Err bitreich.org 70 i- (loop for i from 0 below 10 Err bitreich.org 70 i- collect (mem-aref array :int i))) Err bitreich.org 70 i-@result{} (1 2 3 4 5 6 7 8 9 10) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{callback} @* Err bitreich.org 70 i-@seealso{get-callback} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c GET-CALLBACK Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@node get-callback, , defcallback, Callbacks Err bitreich.org 70 i-@heading get-callback Err bitreich.org 70 i-@subheading Syntax Err bitreich.org 70 i-@Accessor{get-callback symbol @res{} pointer} Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Arguments and Values Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item symbol Err bitreich.org 70 i-A symbol denoting a callback. Err bitreich.org 70 i- Err bitreich.org 70 i-@item pointer Err bitreich.org 70 i-A pointer. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Description Err bitreich.org 70 i-This is the functional version of the @code{callback} macro. It Err bitreich.org 70 i-returns a pointer to the callback named by @var{symbol} suitable, for Err bitreich.org 70 i-example, to pass as arguments to foreign functions. Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-CFFI> (defcallback sum :int ((a :int) (b :int)) Err bitreich.org 70 i- (+ a b)) Err bitreich.org 70 i-@result{} SUM Err bitreich.org 70 i-CFFI> (get-callback 'sum) Err bitreich.org 70 i-@result{} # Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@subheading See Also Err bitreich.org 70 i-@seealso{callback} @* Err bitreich.org 70 i-@seealso{defcallback} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c CHAPTER: The Groveller Err bitreich.org 70 i- Err bitreich.org 70 i-@node The Groveller, Limitations, Callbacks, Top Err bitreich.org 70 i-@chapter The Groveller Err bitreich.org 70 i- Err bitreich.org 70 i-@cffi{}-Grovel is a tool which makes it easier to write @cffi{} Err bitreich.org 70 i-declarations for libraries that are implemented in C. That is, it Err bitreich.org 70 i-grovels through the system headers, getting information about types Err bitreich.org 70 i-and structures, so you don't have to. This is especially important Err bitreich.org 70 i-for libraries which are implemented in different ways by different Err bitreich.org 70 i-vendors, such as the @sc{unix}/@sc{posix} functions. The @cffi{} Err bitreich.org 70 i-declarations are usually quite different from platform to platform, Err bitreich.org 70 i-but the information you give to @cffi{}-Grovel is the same. Hence, Err bitreich.org 70 i-much less work is required! Err bitreich.org 70 i- Err bitreich.org 70 i-If you use @acronym{ASDF}, @cffi{}-Grovel is integrated, so that it Err bitreich.org 70 i-will run automatically when your system is building. This feature was Err bitreich.org 70 i-inspired by SB-Grovel, a similar @acronym{SBCL}-specific project. Err bitreich.org 70 i-@cffi{}-Grovel can also be used without @acronym{ASDF}. Err bitreich.org 70 i- Err bitreich.org 70 i-@section Building FFIs with CFFI-Grovel Err bitreich.org 70 i- Err bitreich.org 70 i-@cffi{}-Grovel uses a specification file (*.lisp) describing the Err bitreich.org 70 i-features that need groveling. The C compiler is used to retrieve this Err bitreich.org 70 i-data and write a Lisp file (*.cffi.lisp) which contains the necessary Err bitreich.org 70 i-@cffi{} definitions to access the variables, structures, constants, and Err bitreich.org 70 i-enums mentioned in the specification. Err bitreich.org 70 i- Err bitreich.org 70 i-@c This is most similar to the SB-Grovel package, upon which it is Err bitreich.org 70 i-@c based. Unlike SB-Grovel, we do not currently support defining Err bitreich.org 70 i-@c regular foreign functions in the specification file; those are best Err bitreich.org 70 i-@c defined in normal Lisp code. Err bitreich.org 70 i- Err bitreich.org 70 i-@cffi{}-Grovel provides an @acronym{ASDF} component for handling the Err bitreich.org 70 i-necessary calls to the C compiler and resulting file management. Err bitreich.org 70 i- Err bitreich.org 70 i-@c See the included CFFI-Unix package for an example of how to Err bitreich.org 70 i-@c integrate a specification file with ASDF-built packages. Err bitreich.org 70 i- Err bitreich.org 70 i-@menu Err bitreich.org 70 i-* Groveller Syntax:: How grovel files should look like. Err bitreich.org 70 i-* Groveller ASDF Integration:: ASDF components for grovel files. Err bitreich.org 70 i-* Groveller Implementation Notes:: Implementation notes. Err bitreich.org 70 i-* Wrapper for Inline/Static Functions and Macros:: Wrapper Err bitreich.org 70 i-@end menu Err bitreich.org 70 i- Err bitreich.org 70 i-@node Groveller Syntax, Groveller ASDF Integration, The Groveller, The Groveller Err bitreich.org 70 i-@section Specification File Syntax Err bitreich.org 70 i- Err bitreich.org 70 i-The specification files are read by the normal Lisp reader, so they Err bitreich.org 70 i-have syntax very similar to normal Lisp code. In particular, Err bitreich.org 70 i-semicolon-comments and reader-macros will work as expected. Err bitreich.org 70 i- Err bitreich.org 70 i-There are several forms recognized by @cffi{}-Grovel: Err bitreich.org 70 i- Err bitreich.org 70 i-@deffn {Grovel Form} progn &rest forms Err bitreich.org 70 i- Err bitreich.org 70 i-Processes a list of forms. Useful for conditionalizing several Err bitreich.org 70 i-forms. For example: Err bitreich.org 70 i-@end deffn Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-#+freebsd Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (constant (ev-enable "EV_ENABLE")) Err bitreich.org 70 i- (constant (ev-disable "EV_DISABLE"))) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@deffn {Grovel Form} include &rest files Err bitreich.org 70 i- Err bitreich.org 70 i-Include the specified files (specified as strings) in the generated C Err bitreich.org 70 i-source code. Err bitreich.org 70 i-@end deffn Err bitreich.org 70 i- Err bitreich.org 70 i-@deffn {Grovel Form} in-package symbol Err bitreich.org 70 i- Err bitreich.org 70 i-Set the package to be used for the final Lisp output. Err bitreich.org 70 i-@end deffn Err bitreich.org 70 i- Err bitreich.org 70 i-@deffn {Grovel Form} ctype lisp-name size-designator Err bitreich.org 70 i- Err bitreich.org 70 i-Define a @cffi{} foreign type for the string in @var{size-designator}, Err bitreich.org 70 i-e.g. @code{(ctype :pid "pid_t")}. Err bitreich.org 70 i-@end deffn Err bitreich.org 70 i- Err bitreich.org 70 i-@deffn {Grovel Form} constant (lisp-name &rest c-names) &key type documentation optional Err bitreich.org 70 i- Err bitreich.org 70 i-Search for the constant named by the first @var{c-name} string found Err bitreich.org 70 i-to be known to the C preprocessor and define it as @var{lisp-name}. Err bitreich.org 70 i- Err bitreich.org 70 i-The @var{type} keyword argument specifies how to grovel the constant: Err bitreich.org 70 i-either @code{integer} (the default) or @code{double-float}. If Err bitreich.org 70 i-@var{optional} is true, no error will be raised if all the Err bitreich.org 70 i-@var{c-names} are unknown. If @var{lisp-name} is a keyword, the actual Err bitreich.org 70 i-constant will be a symbol of the same name interned in the current Err bitreich.org 70 i-package. Err bitreich.org 70 i-@end deffn Err bitreich.org 70 i- Err bitreich.org 70 i-@deffn {Grovel Form} feature lisp-feature-name c-name &key feature-list Err bitreich.org 70 i- Err bitreich.org 70 i-Adds @var{lisp-feature-name} to the list @var{feature-list} if the @var{c-name} Err bitreich.org 70 i-string is known to the C preprocessor. @var{feature-list} defaults Err bitreich.org 70 i-to @code{cl:*features*}. Err bitreich.org 70 i-@end deffn Err bitreich.org 70 i- Err bitreich.org 70 i-@deffn {Grovel Form} define name &optional value Err bitreich.org 70 i- Err bitreich.org 70 i-Defines an additional C preprocessor symbol, which is useful for Err bitreich.org 70 i-altering the behavior of included system headers. Err bitreich.org 70 i-@end deffn Err bitreich.org 70 i- Err bitreich.org 70 i-@deffn {Grovel Form} cc-flags &rest flags Err bitreich.org 70 i- Err bitreich.org 70 i-Adds @var{cc-flags} to the command line arguments used for the C compiler Err bitreich.org 70 i-invocation. Err bitreich.org 70 i-@end deffn Err bitreich.org 70 i- Err bitreich.org 70 i-@deffn {Grovel Form} pkg-config-cflags pkg &key optional Err bitreich.org 70 i- Err bitreich.org 70 i-Adds @var{pkg} to the command line arguments for the external program Err bitreich.org 70 i-@code{pkg-config} and runs it to retrieve the relevant include flags Err bitreich.org 70 i-used for the C compiler invocation. This syntax can be used instead of Err bitreich.org 70 i-hard-coding paths using @code{cc-flags}, and ensures that include Err bitreich.org 70 i-flags are added correctly on the build system. Assumes Err bitreich.org 70 i-@code{pkg-config} is installed and working. @var{pkg} is a string Err bitreich.org 70 i-that identifies an installed @code{pkg-config} package. See the Err bitreich.org 70 i-pkg-config manual for more information. If @var{optional} is true, Err bitreich.org 70 i-failure to execute @code{pkg-config} does @emph{not} abort Err bitreich.org 70 i-compilation. Err bitreich.org 70 i-@end deffn Err bitreich.org 70 i- Err bitreich.org 70 i-@deffn {Grovel Form} cstruct lisp-name c-name slots Err bitreich.org 70 i- Err bitreich.org 70 i-Define a @cffi{} foreign struct with the slot data specfied. Slots Err bitreich.org 70 i-are of the form @code{(lisp-name c-name &key type count (signed t))}. Err bitreich.org 70 i-@end deffn Err bitreich.org 70 i- Err bitreich.org 70 i-@deffn {Grovel Form} cunion lisp-name c-name slots Err bitreich.org 70 i- Err bitreich.org 70 i-Identical to @code{cstruct}, but defines a @cffi{} foreign union. Err bitreich.org 70 i-@end deffn Err bitreich.org 70 i- Err bitreich.org 70 i-@deffn {Grovel Form} cstruct-and-class c-name slots Err bitreich.org 70 i- Err bitreich.org 70 i-Defines a @cffi{} foreign struct, as with @code{cstruct} and defines a Err bitreich.org 70 i-@acronym{CLOS} class to be used with it. This is useful for mapping Err bitreich.org 70 i-foreign structures to application-layer code that shouldn't need to Err bitreich.org 70 i-worry about memory allocation issues. Err bitreich.org 70 i-@end deffn Err bitreich.org 70 i- Err bitreich.org 70 i-@deffn {Grovel Form} cvar namespec type &key read-only Err bitreich.org 70 i- Err bitreich.org 70 i-Defines a foreign variable of the specified type, even if that Err bitreich.org 70 i-variable is potentially a C preprocessor pseudo-variable. e.g. Err bitreich.org 70 i-@code{(cvar ("errno" errno) errno-values)}, assuming that errno-values Err bitreich.org 70 i-is an enum or equivalent to type @code{:int}. Err bitreich.org 70 i- Err bitreich.org 70 i-The @var{namespec} is similar to the one used in @ref{defcvar}. Err bitreich.org 70 i-@end deffn Err bitreich.org 70 i- Err bitreich.org 70 i-@deffn {Grovel Form} cenum name-and-opts &rest elements Err bitreich.org 70 i- Err bitreich.org 70 i-Defines a true C enum, with elements specified as @code{((lisp-name Err bitreich.org 70 i-&rest c-names) &key optional documentation)}. Err bitreich.org 70 i-@var{name-and-opts} can be either a symbol as name, or a list Err bitreich.org 70 i-@code{(name &key base-type define-constants)}. If @var{define-constants} Err bitreich.org 70 i-is non-null, a Lisp constant will be defined for each enum member. Err bitreich.org 70 i-@end deffn Err bitreich.org 70 i- Err bitreich.org 70 i-@deffn {Grovel Form} constantenum name-and-opts &rest elements Err bitreich.org 70 i- Err bitreich.org 70 i-Defines an enumeration of pre-processor constants, with elements Err bitreich.org 70 i-specified as @code{((lisp-name &rest c-names) &key optional Err bitreich.org 70 i-documentation)}. Err bitreich.org 70 i-@var{name-and-opts} can be either a symbol as name, or a list Err bitreich.org 70 i-@code{(name &key base-type define-constants)}. If @var{define-constants} Err bitreich.org 70 i-is non-null, a Lisp constant will be defined for each enum member. Err bitreich.org 70 i- Err bitreich.org 70 i-This example defines @code{:af-inet} to represent the value held by Err bitreich.org 70 i-@code{AF_INET} or @code{PF_INET}, whichever the pre-processor finds Err bitreich.org 70 i-first. Similarly for @code{:af-packet}, but no error will be Err bitreich.org 70 i-signalled if the platform supports neither @code{AF_PACKET} nor Err bitreich.org 70 i-@code{PF_PACKET}. Err bitreich.org 70 i-@end deffn Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(constantenum address-family Err bitreich.org 70 i- ((:af-inet "AF_INET" "PF_INET") Err bitreich.org 70 i- :documentation "IPv4 Protocol family") Err bitreich.org 70 i- ((:af-local "AF_UNIX" "AF_LOCAL" "PF_UNIX" "PF_LOCAL") Err bitreich.org 70 i- :documentation "File domain sockets") Err bitreich.org 70 i- ((:af-inet6 "AF_INET6" "PF_INET6") Err bitreich.org 70 i- :documentation "IPv6 Protocol family") Err bitreich.org 70 i- ((:af-packet "AF_PACKET" "PF_PACKET") Err bitreich.org 70 i- :documentation "Raw packet access" Err bitreich.org 70 i- :optional t)) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@deffn {Grovel Form} bitfield name-and-opts &rest elements Err bitreich.org 70 i- Err bitreich.org 70 i-Defines a bitfield, with elements specified as @code{((lisp-name &rest Err bitreich.org 70 i-c-names) &key optional documentation)}. @var{name-and-opts} can be either a Err bitreich.org 70 i-symbol as name, or a list @code{(name &key base-type)}. For example: Err bitreich.org 70 i-@end deffn Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(bitfield flags-ctype Err bitreich.org 70 i- ((:flag-a "FLAG_A") Err bitreich.org 70 i- :documentation "DOCU_A") Err bitreich.org 70 i- ((:flag-b "FLAG_B" "FLAG_B_ALT") Err bitreich.org 70 i- :documentation "DOCU_B") Err bitreich.org 70 i- ((:flag-c "FLAG_C") Err bitreich.org 70 i- :documentation "DOCU_C" Err bitreich.org 70 i- :optional t)) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c SECTION: Groveller ASDF Integration Err bitreich.org 70 i- Err bitreich.org 70 i-@node Groveller ASDF Integration, Groveller Implementation Notes, Groveller Syntax, The Groveller Err bitreich.org 70 i-@section ASDF Integration Err bitreich.org 70 i- Err bitreich.org 70 i-An example software project might contain four files; an Err bitreich.org 70 i-@acronym{ASDF} file, a package definition file, an implementation Err bitreich.org 70 i-file, and a @cffi{}-Grovel specification file. Err bitreich.org 70 i- Err bitreich.org 70 i-The @acronym{ASDF} file defines the system and its dependencies. Err bitreich.org 70 i-Notice the use of @code{eval-when} to ensure @cffi{}-Grovel is present Err bitreich.org 70 i-and the use of @code{(cffi-grovel:grovel-file name &key cc-flags)} Err bitreich.org 70 i-instead of @code{(:file name)}. Err bitreich.org 70 i- Err bitreich.org 70 i-The @file{example-software.asd} file would look like that: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-;;; @lispcmt{CFFI-Grovel is needed for processing grovel-file components} Err bitreich.org 70 i-(defsystem "example-software" Err bitreich.org 70 i- :defsystem-depends-on ("cffi-grovel") Err bitreich.org 70 i- :depends-on ("cffi") Err bitreich.org 70 i- :serial t Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:file "package") Err bitreich.org 70 i- (:cffi-grovel-file "example-grovelling") Err bitreich.org 70 i- (:cffi-wrapper-file "example-wrappers") Err bitreich.org 70 i- (:file "example"))) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-The @file{package.lisp} file would contain one or several Err bitreich.org 70 i-@code{defpackage} forms, to remove circular dependencies and make Err bitreich.org 70 i-building the project easier. Note that you may or may not want to Err bitreich.org 70 i-@code{:use} your internal package. Err bitreich.org 70 i- Err bitreich.org 70 i-@impnote{Note that it's a not a good idea to @code{:use} when names may Err bitreich.org 70 i-clash with, say, CL symbols. Err bitreich.org 70 i-Or you could use @code{uiop:define-package} and its @code{:mix} option.} Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defpackage #:example-internal Err bitreich.org 70 i- (:use) Err bitreich.org 70 i- (:nicknames #:exampleint)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:example-software Err bitreich.org 70 i- (:export ...) Err bitreich.org 70 i- (:use #:cl #:cffi #:exampleint)) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-The internal package is created by Lisp code output from the C program Err bitreich.org 70 i-written by @cffi{}-Grovel; if your specification file is Err bitreich.org 70 i-@file{exampleint.lisp}, the @file{exampleint.cffi.lisp} file will contain the Err bitreich.org 70 i-@cffi{} definitions needed by the rest of your project. Err bitreich.org 70 i-@xref{Groveller Syntax}. Err bitreich.org 70 i- Err bitreich.org 70 i-@node Groveller Implementation Notes, Wrapper for Inline/Static Functions and Macros, Groveller ASDF Integration, The Groveller Err bitreich.org 70 i-@section Implementation Notes Err bitreich.org 70 i- Err bitreich.org 70 i-@cffi{}-Grovel will generate many files that not only architecture-specific, Err bitreich.org 70 i-but also implementation-specific, and should not be distributed. Err bitreich.org 70 i-ASDF will generate these files in its output cache; Err bitreich.org 70 i-if you build with multiple architectures (e.g. with NFS/AFS home Err bitreich.org 70 i-directories) or implementations, it is critical for avoiding clashes Err bitreich.org 70 i-to keep this cache in an implementation-dependent directory (as is the Err bitreich.org 70 i-default). Err bitreich.org 70 i- Err bitreich.org 70 i-For @code{foo-internal.lisp}, the resulting @code{foo-internal.c}, Err bitreich.org 70 i-@code{foo-internal}, and @code{foo-internal.cffi.lisp} are all Err bitreich.org 70 i-platform-specific, either because of possible reader-macros in Err bitreich.org 70 i-foo-internal.lisp, or because of varying C environments on the host Err bitreich.org 70 i-system. For this reason, it is not helpful to distribute any of those Err bitreich.org 70 i-files; end users building @cffi{}-Grovel based software will need Err bitreich.org 70 i-@code{cffi}-Grovel anyway. Err bitreich.org 70 i- Err bitreich.org 70 i-@impnote{For now, after some experimentation with @sc{clisp} having no Err bitreich.org 70 i-long-long, it seems appropriate to assert that the generated @code{.c} Err bitreich.org 70 i-files are architecture and operating-system dependent, but Err bitreich.org 70 i-lisp-implementation independent. This way the same @code{.c} file Err bitreich.org 70 i-(and so the same @code{.grovel-tmp.lisp} file) will be shareable Err bitreich.org 70 i-between the implementations running on a given system.} Err bitreich.org 70 i- Err bitreich.org 70 i-@c TODO: document the new wrapper stuff. Err bitreich.org 70 i- Err bitreich.org 70 i-@node Wrapper for Inline/Static Functions and Macros, , Groveller Implementation Notes, The Groveller Err bitreich.org 70 i-@section Wrapper for Inline/Static Functions and Macros Err bitreich.org 70 i- Err bitreich.org 70 i-In a shared library, information in static/inlined functions and Err bitreich.org 70 i-macros are already removed during the compilation. Wrapper file Err bitreich.org 70 i-enables to write an uninlined function wrapping the call to them. Err bitreich.org 70 i- Err bitreich.org 70 i-A wrapper file compilation/loading proceeds as follows: Err bitreich.org 70 i-Unlike groveller which generates C code that emits lisp files Err bitreich.org 70 i-containing cffi definitions, it generates C code, compiles it as a Err bitreich.org 70 i-shared library, loads the library, generate the cffi definitions (as Err bitreich.org 70 i-lisp code) and then loads the lisp code. Err bitreich.org 70 i- Err bitreich.org 70 i-It has asdf integration similar to groveller. Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(defsystem "example-software" Err bitreich.org 70 i- :defsystem-depends-on ("cffi-grovel") Err bitreich.org 70 i- :depends-on ("cffi") Err bitreich.org 70 i- :serial t Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:file "package") Err bitreich.org 70 i- (:cffi-grovel-file "example-grovelling") Err bitreich.org 70 i- (:cffi-wrapper-file "example-wrappers") ;; <<--- this part Err bitreich.org 70 i- (:file "example"))) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@deffn {Wrapper Form} defwrapper name-and-options return-type &rest args Err bitreich.org 70 i-@end deffn Err bitreich.org 70 i- Err bitreich.org 70 i-@example Err bitreich.org 70 i-static inline int foo(int i) @{ Err bitreich.org 70 i- return 1+i; Err bitreich.org 70 i-@}; Err bitreich.org 70 i-#define bar(i) (1+(i)) Err bitreich.org 70 i-@end example Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(in-package :mypackage) Err bitreich.org 70 i-(defwrapper ("foo" foo) :int Err bitreich.org 70 i- (i :int)) Err bitreich.org 70 i-(defwrapper ("bar" bar) :int Err bitreich.org 70 i- (i :int)) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-Other forms are similar to grovel files. Err bitreich.org 70 i- Err bitreich.org 70 i-@deffn {Wrapper Form} progn &rest forms Err bitreich.org 70 i- Err bitreich.org 70 i-Processes a list of forms. Useful for conditionalizing several Err bitreich.org 70 i-forms. For example: Err bitreich.org 70 i-@end deffn Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-#+freebsd Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (constant (ev-enable "EV_ENABLE")) Err bitreich.org 70 i- (constant (ev-disable "EV_DISABLE"))) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@deffn {Wrapper Form} include &rest files Err bitreich.org 70 i- Err bitreich.org 70 i-Include the specified files (specified as strings) in the generated C Err bitreich.org 70 i-source code. Err bitreich.org 70 i-@end deffn Err bitreich.org 70 i- Err bitreich.org 70 i-@deffn {Wrapper Form} in-package symbol Err bitreich.org 70 i- Err bitreich.org 70 i-Set the package to be used for the final Lisp output. Err bitreich.org 70 i-@end deffn Err bitreich.org 70 i- Err bitreich.org 70 i-@deffn {Wrapper Form} flags &rest flags Err bitreich.org 70 i- Err bitreich.org 70 i-Adds @var{cc-flags} to the command line arguments used for the C compiler Err bitreich.org 70 i-invocation. Err bitreich.org 70 i-@end deffn Err bitreich.org 70 i- Err bitreich.org 70 i-@deffn {Wrapper Form} proclaim &rest proclaimations Err bitreich.org 70 i-@end deffn Err bitreich.org 70 i-@deffn {Wrapper Form} declaim &rest declaimations Err bitreich.org 70 i-@end deffn Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c CHAPTER: Static Linking Err bitreich.org 70 i- Err bitreich.org 70 i-@node Static Linking, Limitations, The Groveller, Top Err bitreich.org 70 i-@chapter Static Linking Err bitreich.org 70 i- Err bitreich.org 70 i-On recent enough versions of supported implementations (currently, Err bitreich.org 70 i-GNU CLISP 2.49, CMUCL 2015-11, and SBCL 1.2.17), and with a recent Err bitreich.org 70 i-enough ASDF (3.1.2 or later), you can create a statically linked Err bitreich.org 70 i-Lisp executable image that includes all the C extensions Err bitreich.org 70 i-(wrappers and any other objects output by @code{compile-op}) Err bitreich.org 70 i-as well as your Lisp code --- or a standalone application executable. Err bitreich.org 70 i-This makes it easier to deliver your code as a single file. Err bitreich.org 70 i- Err bitreich.org 70 i-To dump a statically linked executable image, use: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(asdf:load-system :cffi-grovel) Err bitreich.org 70 i-(asdf:operate :static-image-op :example-software) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-To dump a statically linked executable standalone application, use: Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-(asdf:load-system :cffi-grovel) Err bitreich.org 70 i-(asdf:operate :static-program-op :example-software) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-See @uref{https://common-lisp.net/project/asdf/,,the ASDF Err bitreich.org 70 i-manual} for documentation about @code{image-op} and @code{program-op} Err bitreich.org 70 i-which are the parent operation classes that behave similarly except Err bitreich.org 70 i-they don't statically link C code. Err bitreich.org 70 i- Err bitreich.org 70 i-@impnote{There is also an operation @code{:static-runtime-op} to create the Err bitreich.org 70 i-statically linked runtime alone, but it's admittedly not very useful Err bitreich.org 70 i-except as an intermediate step dependency towards building Err bitreich.org 70 i-@code{:static-image-op} or @code{:static-program-op}.} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@c =================================================================== Err bitreich.org 70 i-@c CHAPTER: Limitations Err bitreich.org 70 i- Err bitreich.org 70 i-@node Limitations, Platform-specific features, The Groveller, Top Err bitreich.org 70 i-@chapter Limitations Err bitreich.org 70 i- Err bitreich.org 70 i-These are @cffi{}'s limitations across all platforms; for information Err bitreich.org 70 i-on the warts on particular Lisp implementations, see Err bitreich.org 70 i-@ref{Implementation Support}. Err bitreich.org 70 i- Err bitreich.org 70 i-@itemize @bullet Err bitreich.org 70 i-@item Err bitreich.org 70 i-The tutorial includes a treatment of the primary, intractable Err bitreich.org 70 i-limitation of @cffi{}, or any @acronym{FFI}: that the abstractions Err bitreich.org 70 i-commonly used by C are insufficiently expressive. Err bitreich.org 70 i-@xref{Tutorial-Abstraction,, Breaking the abstraction}, for more Err bitreich.org 70 i-details. Err bitreich.org 70 i- Err bitreich.org 70 i-@end itemize Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@node Platform-specific features, Glossary, Limitations, Top Err bitreich.org 70 i-@appendix Platform-specific features Err bitreich.org 70 i- Err bitreich.org 70 i-Whenever a backend doesn't support one of @cffi{}'s features, a Err bitreich.org 70 i-specific symbol is pushed onto @code{common-lisp:*features*}. The Err bitreich.org 70 i-meanings of these symbols follow. Err bitreich.org 70 i- Err bitreich.org 70 i-@table @var Err bitreich.org 70 i-@item cffi-sys::flat-namespace Err bitreich.org 70 i-This Lisp has a flat namespace for foreign symbols meaning that you Err bitreich.org 70 i-won't be able to load two different libraries with homograph functions Err bitreich.org 70 i-and successfully differentiate them through the @code{:library} Err bitreich.org 70 i-option to @code{defcfun}, @code{defcvar}, etc@dots{} Err bitreich.org 70 i- Err bitreich.org 70 i-@item cffi-sys::no-foreign-funcall Err bitreich.org 70 i-The macro @code{foreign-funcall} is @strong{not} available. On such Err bitreich.org 70 i-platforms, the only way to call a foreign function is through Err bitreich.org 70 i-@code{defcfun}. @xref{foreign-funcall}, and @ref{defcfun}. Err bitreich.org 70 i- Err bitreich.org 70 i-@item cffi-sys::no-long-long Err bitreich.org 70 i-The C @code{long long} type is @strong{not} available as a foreign Err bitreich.org 70 i-type. Err bitreich.org 70 i- Err bitreich.org 70 i-However, on such platforms @cffi{} provides its own implementation of Err bitreich.org 70 i-the @code{long long} type for all of operations in chapters Err bitreich.org 70 i-@ref{Foreign Types}, @ref{Pointers} and @ref{Variables}. The Err bitreich.org 70 i-functionality described in @ref{Functions} and @ref{Callbacks} will Err bitreich.org 70 i-not be available. Err bitreich.org 70 i- Err bitreich.org 70 i-32-bit Lispworks 5.0+ is an exception. In addition to the @cffi{} Err bitreich.org 70 i-implementation described above, Lispworks itself implements the Err bitreich.org 70 i-@code{long long} type for @ref{Functions}. @ref{Callbacks} are still Err bitreich.org 70 i-missing @code{long long} support, though. Err bitreich.org 70 i- Err bitreich.org 70 i-@item cffi-sys::no-stdcall Err bitreich.org 70 i-This Lisp doesn't support the @code{stdcall} calling convention. Note Err bitreich.org 70 i-that it only makes sense to support @code{stdcall} on (32-bit) x86 Err bitreich.org 70 i-platforms. Err bitreich.org 70 i- Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@node Glossary, Comprehensive Index, Platform-specific features, Top Err bitreich.org 70 i-@appendix Glossary Err bitreich.org 70 i- Err bitreich.org 70 i-@table @dfn Err bitreich.org 70 i-@item aggregate type Err bitreich.org 70 i-A @cffi{} type for C data defined as an organization of data of simple Err bitreich.org 70 i-type; in structures and unions, which are themselves aggregate types, Err bitreich.org 70 i-they are represented by value. Err bitreich.org 70 i- Err bitreich.org 70 i-@item foreign value Err bitreich.org 70 i-This has two meanings; in any context, only one makes sense. Err bitreich.org 70 i- Err bitreich.org 70 i-When using type translators, the foreign value is the lower-level Lisp Err bitreich.org 70 i-value derived from the object passed to @code{translate-to-foreign} Err bitreich.org 70 i-(@pxref{translate-to-foreign}). This value should be a Lisp number or Err bitreich.org 70 i-a pointer (satisfies @code{pointerp}), and it can be treated like any Err bitreich.org 70 i-general Lisp object; it only completes the transformation to a true Err bitreich.org 70 i-foreign value when passed through low-level code in the Lisp Err bitreich.org 70 i-implementation, such as the foreign function caller or indirect memory Err bitreich.org 70 i-addressing combined with a data move. Err bitreich.org 70 i- Err bitreich.org 70 i-In other contexts, this refers to a value accessible by C, but which Err bitreich.org 70 i-may only be accessed through @cffi{} functions. The closest you can Err bitreich.org 70 i-get to such a foreign value is through a pointer Lisp object, which Err bitreich.org 70 i-itself counts as a foreign value in only the previous sense. Err bitreich.org 70 i- Err bitreich.org 70 i-@item simple type Err bitreich.org 70 i-A @cffi{} type that is ultimately represented as a builtin type; Err bitreich.org 70 i-@cffi{} only provides extra semantics for Lisp that are invisible to C Err bitreich.org 70 i-code or data. Err bitreich.org 70 i-@end table Err bitreich.org 70 i- Err bitreich.org 70 i-@node Comprehensive Index, , Glossary, Top Err bitreich.org 70 i-@unnumbered Index Err bitreich.org 70 i-@printindex cp Err bitreich.org 70 i- Err bitreich.org 70 i-@bye Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/doc/cffi-sys-spec.texinfo b/3rdparties/software/cffi_0.20.0/doc/cffi-sys-spec.texinfo /scm/clic/file/3rdparties/software/cffi_0.20.0/doc/cffi-sys-spec.texinfo.gph bitreich.org 70 i@@ -1,334 +0,0 @@ Err bitreich.org 70 i-\input texinfo @c -*-texinfo-*- Err bitreich.org 70 i-@c %**start of header Err bitreich.org 70 i-@setfilename cffi-sys.info Err bitreich.org 70 i-@settitle CFFI-SYS Interface Specification Err bitreich.org 70 i- Err bitreich.org 70 i-@c Show types in the same index as the functions. Err bitreich.org 70 i-@synindex tp fn Err bitreich.org 70 i- Err bitreich.org 70 i-@copying Err bitreich.org 70 i-Copyright @copyright{} 2005-2006, James Bielman Err bitreich.org 70 i- Err bitreich.org 70 i-@quotation Err bitreich.org 70 i-Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-obtaining a copy of this software and associated documentation Err bitreich.org 70 i-files (the ``Software''), to deal in the Software without Err bitreich.org 70 i-restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-furnished to do so, subject to the following conditions: Err bitreich.org 70 i- Err bitreich.org 70 i-The above copyright notice and this permission notice shall be Err bitreich.org 70 i-included in all copies or substantial portions of the Software. Err bitreich.org 70 i- Err bitreich.org 70 i-@sc{The software is provided ``as is'', without warranty of any kind, Err bitreich.org 70 i-express or implied, including but not limited to the warranties of Err bitreich.org 70 i-merchantability, fitness for a particular purpose and Err bitreich.org 70 i-noninfringement. In no event shall the authors or copyright Err bitreich.org 70 i-holders be liable for any claim, damages or other liability, Err bitreich.org 70 i-whether in an action of contract, tort or otherwise, arising from, Err bitreich.org 70 i-out of or in connection with the software or the use or other Err bitreich.org 70 i-dealings in the software.} Err bitreich.org 70 i-@end quotation Err bitreich.org 70 i-@end copying Err bitreich.org 70 i- Err bitreich.org 70 i-@macro impnote {text} Err bitreich.org 70 i-@emph{Implementor's note: \text\} Err bitreich.org 70 i-@end macro Err bitreich.org 70 i-@c %**end of header Err bitreich.org 70 i- Err bitreich.org 70 i-@dircategory Software development Err bitreich.org 70 i-@direntry Err bitreich.org 70 i-* CFFI Sys spec: (cffi-sys-spec). CFFI Sys spec. Err bitreich.org 70 i-@end direntry Err bitreich.org 70 i- Err bitreich.org 70 i-@titlepage Err bitreich.org 70 i-@title CFFI-SYS Interface Specification Err bitreich.org 70 i-@c @subtitle Version X.X Err bitreich.org 70 i-@c @author James Bielman Err bitreich.org 70 i- Err bitreich.org 70 i-@page Err bitreich.org 70 i-@vskip 0pt plus 1filll Err bitreich.org 70 i-@insertcopying Err bitreich.org 70 i-@end titlepage Err bitreich.org 70 i- Err bitreich.org 70 i-@contents Err bitreich.org 70 i- Err bitreich.org 70 i-@ifnottex Err bitreich.org 70 i-@node Top Err bitreich.org 70 i-@top cffi-sys Err bitreich.org 70 i-@insertcopying Err bitreich.org 70 i-@end ifnottex Err bitreich.org 70 i- Err bitreich.org 70 i-@menu Err bitreich.org 70 i-* Introduction:: Err bitreich.org 70 i-* Built-In Foreign Types:: Err bitreich.org 70 i-* Operations on Foreign Types:: Err bitreich.org 70 i-* Basic Pointer Operations:: Err bitreich.org 70 i-* Foreign Memory Allocation:: Err bitreich.org 70 i-* Memory Access:: Err bitreich.org 70 i-* Foreign Function Calling:: Err bitreich.org 70 i-* Loading Foreign Libraries:: Err bitreich.org 70 i-* Foreign Globals:: Err bitreich.org 70 i-* Symbol Index:: Err bitreich.org 70 i-@end menu Err bitreich.org 70 i- Err bitreich.org 70 i-@node Introduction Err bitreich.org 70 i-@chapter Introduction Err bitreich.org 70 i- Err bitreich.org 70 i-@acronym{CFFI}, the Common Foreign Function Interface, purports to be Err bitreich.org 70 i-a portable foreign function interface for Common Lisp. Err bitreich.org 70 i- Err bitreich.org 70 i-This specification defines a set of low-level primitives that must be Err bitreich.org 70 i-defined for each Lisp implementation supported by @acronym{CFFI}. Err bitreich.org 70 i-These operators are defined in the @code{CFFI-SYS} package. Err bitreich.org 70 i- Err bitreich.org 70 i-The @code{CFFI} package uses the @code{CFFI-SYS} interface Err bitreich.org 70 i-to implement an extensible foreign type system with support for Err bitreich.org 70 i-typedefs, structures, and unions, a declarative interface for Err bitreich.org 70 i-defining foreign function calls, and automatic conversion of Err bitreich.org 70 i-foreign function arguments to/from Lisp types. Err bitreich.org 70 i- Err bitreich.org 70 i-Please note the following conventions that apply to everything in Err bitreich.org 70 i-@code{CFFI-SYS}: Err bitreich.org 70 i- Err bitreich.org 70 i-@itemize @bullet Err bitreich.org 70 i-@item Err bitreich.org 70 i-Functions in @code{CFFI-SYS} that are low-level versions of functions Err bitreich.org 70 i-exported from the @code{CFFI} package begin with a leading Err bitreich.org 70 i-percent-sign (eg. @code{%mem-ref}). Err bitreich.org 70 i- Err bitreich.org 70 i-@item Err bitreich.org 70 i-Where ``foreign type'' is mentioned as the kind of an argument, the Err bitreich.org 70 i-meaning is restricted to that subset of all foreign types defined in Err bitreich.org 70 i-@ref{Built-In Foreign Types}. Support for higher-level types is Err bitreich.org 70 i-always defined in terms of those lower-level types in @code{CFFI} Err bitreich.org 70 i-proper. Err bitreich.org 70 i-@end itemize Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@node Built-In Foreign Types Err bitreich.org 70 i-@chapter Built-In Foreign Types Err bitreich.org 70 i- Err bitreich.org 70 i-@deftp {Foreign Type} :char Err bitreich.org 70 i-@deftpx {Foreign Type} :unsigned-char Err bitreich.org 70 i-@deftpx {Foreign Type} :short Err bitreich.org 70 i-@deftpx {Foreign Type} :unsigned-short Err bitreich.org 70 i-@deftpx {Foreign Type} :int Err bitreich.org 70 i-@deftpx {Foreign Type} :unsigned-int Err bitreich.org 70 i-@deftpx {Foreign Type} :long Err bitreich.org 70 i-@deftpx {Foreign Type} :unsigned-long Err bitreich.org 70 i-@deftpx {Foreign Type} :long-long Err bitreich.org 70 i-@deftpx {Foreign Type} :unsigned-long-long Err bitreich.org 70 i-These types correspond to the native C integer types according to the Err bitreich.org 70 i-ABI of the system the Lisp implementation is compiled against. Err bitreich.org 70 i-@end deftp Err bitreich.org 70 i- Err bitreich.org 70 i-@deftp {Foreign Type} :int8 Err bitreich.org 70 i-@deftpx {Foreign Type} :uint8 Err bitreich.org 70 i-@deftpx {Foreign Type} :int16 Err bitreich.org 70 i-@deftpx {Foreign Type} :uint16 Err bitreich.org 70 i-@deftpx {Foreign Type} :int32 Err bitreich.org 70 i-@deftpx {Foreign Type} :uint32 Err bitreich.org 70 i-@deftpx {Foreign Type} :int64 Err bitreich.org 70 i-@deftpx {Foreign Type} :uint64 Err bitreich.org 70 i-Foreign integer types of specific sizes, corresponding to the C types Err bitreich.org 70 i-defined in @code{stdint.h}. Err bitreich.org 70 i-@end deftp Err bitreich.org 70 i- Err bitreich.org 70 i-@deftp {Foreign Type} :size Err bitreich.org 70 i-@deftpx {Foreign Type} :ssize Err bitreich.org 70 i-@deftpx {Foreign Type} :ptrdiff Err bitreich.org 70 i-@deftpx {Foreign Type} :time Err bitreich.org 70 i-Foreign integer types corresponding to the standard C types (without Err bitreich.org 70 i-the @code{_t} suffix). Err bitreich.org 70 i-@end deftp Err bitreich.org 70 i- Err bitreich.org 70 i-@impnote{I'm sure there are more of these that could be useful, let's Err bitreich.org 70 i-add any types that can't be defined portably to this list as Err bitreich.org 70 i-necessary.} Err bitreich.org 70 i- Err bitreich.org 70 i-@deftp {Foreign Type} :float Err bitreich.org 70 i-@deftpx {Foreign Type} :double Err bitreich.org 70 i-The @code{:float} type represents a C @code{float} and a Lisp Err bitreich.org 70 i-@code{single-float}. @code{:double} represents a C @code{double} and a Err bitreich.org 70 i-Lisp @code{double-float}. Err bitreich.org 70 i-@end deftp Err bitreich.org 70 i- Err bitreich.org 70 i-@deftp {Foreign Type} :pointer Err bitreich.org 70 i-A foreign pointer to an object of any type, corresponding to Err bitreich.org 70 i-@code{void *}. Err bitreich.org 70 i-@end deftp Err bitreich.org 70 i- Err bitreich.org 70 i-@deftp {Foreign Type} :void Err bitreich.org 70 i-No type at all. Only valid as the return type of a function. Err bitreich.org 70 i-@end deftp Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@node Operations on Foreign Types Err bitreich.org 70 i-@chapter Operations on Built-in Foreign Types Err bitreich.org 70 i- Err bitreich.org 70 i-@defun %foreign-type-size type @result{} size Err bitreich.org 70 i-Return the @var{size}, in bytes, of objects having foreign type Err bitreich.org 70 i-@var{type}. An error is signalled if @var{type} is not a known Err bitreich.org 70 i-built-in foreign type. Err bitreich.org 70 i-@end defun Err bitreich.org 70 i- Err bitreich.org 70 i-@defun %foreign-type-alignment type @result{} alignment Err bitreich.org 70 i-Return the default alignment in bytes for structure members of foreign Err bitreich.org 70 i-type @var{type}. An error is signalled if @var{type} is not a known Err bitreich.org 70 i-built-in foreign type. Err bitreich.org 70 i- Err bitreich.org 70 i-@impnote{Maybe this should take an optional keyword argument specifying an Err bitreich.org 70 i-alternate alignment system, eg. :mac68k for 68000-compatible alignment Err bitreich.org 70 i-on Darwin.} Err bitreich.org 70 i-@end defun Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@node Basic Pointer Operations Err bitreich.org 70 i-@chapter Basic Pointer Operations Err bitreich.org 70 i- Err bitreich.org 70 i-@defun pointerp ptr @result{} boolean Err bitreich.org 70 i-Return true if @var{ptr} is a foreign pointer. Err bitreich.org 70 i-@end defun Err bitreich.org 70 i- Err bitreich.org 70 i-@defun null-pointer @result{} pointer Err bitreich.org 70 i-Return a null foreign pointer. Err bitreich.org 70 i-@end defun Err bitreich.org 70 i- Err bitreich.org 70 i-@defun null-pointer-p ptr @result{} boolean Err bitreich.org 70 i-Return true if @var{ptr} is a null foreign pointer. Err bitreich.org 70 i-@end defun Err bitreich.org 70 i- Err bitreich.org 70 i-@defun make-pointer address @result{} pointer Err bitreich.org 70 i-Return a pointer corresponding to the numeric integer @var{address}. Err bitreich.org 70 i-@end defun Err bitreich.org 70 i- Err bitreich.org 70 i-@defun inc-pointer ptr offset @result{} pointer Err bitreich.org 70 i-Return the result of numerically incrementing @var{ptr} by @var{offset}. Err bitreich.org 70 i-@end defun Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@node Foreign Memory Allocation Err bitreich.org 70 i-@chapter Foreign Memory Allocation Err bitreich.org 70 i- Err bitreich.org 70 i-@defun foreign-alloc size @result{} pointer Err bitreich.org 70 i-Allocate @var{size} bytes of foreign-addressable memory and return Err bitreich.org 70 i-a @var{pointer} to the allocated block. An implementation-specific Err bitreich.org 70 i-error is signalled if the memory cannot be allocated. Err bitreich.org 70 i-@end defun Err bitreich.org 70 i- Err bitreich.org 70 i-@defun foreign-free ptr @result{} unspecified Err bitreich.org 70 i-Free a pointer @var{ptr} allocated by @code{foreign-alloc}. The Err bitreich.org 70 i-results are undefined if @var{ptr} is used after being freed. Err bitreich.org 70 i-@end defun Err bitreich.org 70 i- Err bitreich.org 70 i-@defmac with-foreign-pointer (var size &optional size-var) &body body Err bitreich.org 70 i-Bind @var{var} to a pointer to @var{size} bytes of Err bitreich.org 70 i-foreign-accessible memory during @var{body}. Both @var{ptr} and the Err bitreich.org 70 i-memory block it points to have dynamic extent and may be stack Err bitreich.org 70 i-allocated if supported by the implementation. If @var{size-var} is Err bitreich.org 70 i-supplied, it will be bound to @var{size} during @var{body}. Err bitreich.org 70 i-@end defmac Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@node Memory Access Err bitreich.org 70 i-@chapter Memory Access Err bitreich.org 70 i- Err bitreich.org 70 i-@deffn {Accessor} %mem-ref ptr type &optional offset Err bitreich.org 70 i-Dereference a pointer @var{offset} bytes from @var{ptr} to an object Err bitreich.org 70 i-for reading (or writing when used with @code{setf}) of built-in type Err bitreich.org 70 i-@var{type}. Err bitreich.org 70 i-@end deffn Err bitreich.org 70 i- Err bitreich.org 70 i-@heading Example Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-;; An impractical example, since time returns the time as well, Err bitreich.org 70 i-;; but it demonstrates %MEM-REF. Better (simple) examples wanted! Err bitreich.org 70 i-(with-foreign-pointer (p (foreign-type-size :time)) Err bitreich.org 70 i- (foreign-funcall "time" :pointer p :time) Err bitreich.org 70 i- (%mem-ref p :time)) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@node Foreign Function Calling Err bitreich.org 70 i-@chapter Foreign Function Calling Err bitreich.org 70 i- Err bitreich.org 70 i-@defmac %foreign-funcall name @{arg-type arg@}* &optional result-type @result{} object Err bitreich.org 70 i-@defmacx %foreign-funcall-pointer ptr @{arg-type arg@}* &optional result-type @result{} object Err bitreich.org 70 i-Invoke a foreign function called @var{name} in the foreign source code. Err bitreich.org 70 i- Err bitreich.org 70 i-Each @var{arg-type} is a foreign type specifier, followed by Err bitreich.org 70 i-@var{arg}, Lisp data to be converted to foreign data of type Err bitreich.org 70 i-@var{arg-type}. @var{result-type} is the foreign type of the Err bitreich.org 70 i-function's return value, and is assumed to be @code{:void} if not Err bitreich.org 70 i-supplied. Err bitreich.org 70 i- Err bitreich.org 70 i-@code{%foreign-funcall-pointer} takes a pointer @var{ptr} to the Err bitreich.org 70 i-function, as returned by @code{foreign-symbol-pointer}, rather than a Err bitreich.org 70 i-string @var{name}. Err bitreich.org 70 i-@end defmac Err bitreich.org 70 i- Err bitreich.org 70 i-@defmac %foreign-funcall-varargs name (@{fixed-type arg@}*) @{vararg-type arg@}* &optional result-type @result{} object Err bitreich.org 70 i-@defmacx %foreign-funcall-varargs-pointer ptr (@{fixed-type arg@}*) @{vararg-type arg@}* &optional result-type @result{} object Err bitreich.org 70 i-Invoke a foreign variadic function called @var{name} in the foreign Err bitreich.org 70 i-source code. Err bitreich.org 70 i- Err bitreich.org 70 i-Each @var{fixed-type} and @var{vararg-type} is a foreign type Err bitreich.org 70 i-specifier, followed by @var{arg}, Lisp data to be converted to foreign Err bitreich.org 70 i-data of type @var{arg-type}. @var{result-type} is the foreign type of Err bitreich.org 70 i-the function's return value, and is assumed to be @code{:void} if not Err bitreich.org 70 i-supplied. Err bitreich.org 70 i- Err bitreich.org 70 i-@code{%foreign-funcall-pointer-varargs} takes a pointer @var{ptr} to Err bitreich.org 70 i-the variadic function, as returned by @code{foreign-symbol-pointer}, Err bitreich.org 70 i-rather than a string @var{name}. Err bitreich.org 70 i- Err bitreich.org 70 i-Both functions have default implementation which call Err bitreich.org 70 i-@code{%foreign-funcall} and @code{%foreign-funcall-pointer} Err bitreich.org 70 i-approprietly. Err bitreich.org 70 i-@end defmac Err bitreich.org 70 i- Err bitreich.org 70 i-@heading Examples Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-;; Calling a standard C library function: Err bitreich.org 70 i-(%foreign-funcall "sqrtf" :float 16.0 :float) @result{} 4.0 Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i-@lisp Err bitreich.org 70 i-;; Dynamic allocation of a buffer and passing to a function: Err bitreich.org 70 i-(with-foreign-ptr (buf 255 buf-size) Err bitreich.org 70 i- (%foreign-funcall "gethostname" :pointer buf :size buf-size :int) Err bitreich.org 70 i- ;; Convert buf to a Lisp string using MAKE-STRING and %MEM-REF or Err bitreich.org 70 i- ;; a portable CFFI function such as CFFI:FOREIGN-STRING-TO-LISP. Err bitreich.org 70 i- ) Err bitreich.org 70 i-@end lisp Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@node Loading Foreign Libraries Err bitreich.org 70 i-@chapter Loading Foreign Libraries Err bitreich.org 70 i- Err bitreich.org 70 i-@defun %load-foreign-library name @result{} unspecified Err bitreich.org 70 i-Load the foreign shared library @var{name}. Err bitreich.org 70 i- Err bitreich.org 70 i-@impnote{There is a lot of behavior to decide here. Currently I lean Err bitreich.org 70 i-toward not requiring NAME to be a full path to the library so Err bitreich.org 70 i-we can search the system library directories (maybe even get Err bitreich.org 70 i-LD_LIBRARY_PATH from the environment) as necessary.} Err bitreich.org 70 i-@end defun Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-@node Foreign Globals Err bitreich.org 70 i-@chapter Foreign Globals Err bitreich.org 70 i- Err bitreich.org 70 i-@defun foreign-symbol-pointer name @result{} pointer Err bitreich.org 70 i-Return a pointer to a foreign symbol @var{name}. Err bitreich.org 70 i-@end defun Err bitreich.org 70 i- Err bitreich.org 70 i-@node Symbol Index Err bitreich.org 70 i-@unnumbered Symbol Index Err bitreich.org 70 i-@printindex fn Err bitreich.org 70 i- Err bitreich.org 70 i-@bye Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/doc/colorize-lisp-examples.lisp b/3rdparties/software/cffi_0.20.0/doc/colorize-lisp-examples.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/doc/colorize-lisp-examples.lisp.gph bitreich.org 70 i@@ -1,1058 +0,0 @@ Err bitreich.org 70 i-;;; This is code was taken from lisppaste2 and is a quick hack Err bitreich.org 70 i-;;; to colorize lisp examples in the html generated by Texinfo. Err bitreich.org 70 i-;;; It is not general-purpose utility, though it could easily be Err bitreich.org 70 i-;;; turned into one. Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; colorize-package.lisp Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage :colorize Err bitreich.org 70 i- (:use :common-lisp) Err bitreich.org 70 i- (:export :scan-string :format-scan :html-colorization Err bitreich.org 70 i- :find-coloring-type :autodetect-coloring-type Err bitreich.org 70 i- :coloring-types :scan :scan-any :advance :call-parent-formatter Err bitreich.org 70 i- :*coloring-css* :make-background-css :*css-background-class* Err bitreich.org 70 i- :colorize-file :colorize-file-to-stream :*version-token*)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; coloring-css.lisp Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :colorize) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *coloring-css* Err bitreich.org 70 i- ".symbol { color: #770055; background-color: transparent; border: 0px; margin: 0px;} Err bitreich.org 70 i-a.symbol:link { color: #229955; background-color : transparent; text-decoration: none; border: 0px; margin: 0px; } Err bitreich.org 70 i-a.symbol:active { color : #229955; background-color : transparent; text-decoration: none; border: 0px; margin: 0px; } Err bitreich.org 70 i-a.symbol:visited { color : #229955; background-color : transparent; text-decoration: none; border: 0px; margin: 0px; } Err bitreich.org 70 i-a.symbol:hover { color : #229955; background-color : transparent; text-decoration: none; border: 0px; margin: 0px; } Err bitreich.org 70 i-.special { color : #FF5000; background-color : inherit; } Err bitreich.org 70 i-.keyword { color : #770000; background-color : inherit; } Err bitreich.org 70 i-.comment { color : #007777; background-color : inherit; } Err bitreich.org 70 i-.string { color : #777777; background-color : inherit; } Err bitreich.org 70 i-.character { color : #0055AA; background-color : inherit; } Err bitreich.org 70 i-.syntaxerror { color : #FF0000; background-color : inherit; } Err bitreich.org 70 i-span.paren1:hover { color : inherit; background-color : #BAFFFF; } Err bitreich.org 70 i-span.paren2:hover { color : inherit; background-color : #FFCACA; } Err bitreich.org 70 i-span.paren3:hover { color : inherit; background-color : #FFFFBA; } Err bitreich.org 70 i-span.paren4:hover { color : inherit; background-color : #CACAFF; } Err bitreich.org 70 i-span.paren5:hover { color : inherit; background-color : #CAFFCA; } Err bitreich.org 70 i-span.paren6:hover { color : inherit; background-color : #FFBAFF; } Err bitreich.org 70 i-") Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *css-background-class* "lisp-bg") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun for-css (thing) Err bitreich.org 70 i- (if (symbolp thing) (string-downcase (symbol-name thing)) Err bitreich.org 70 i- thing)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-background-css (color &key (class *css-background-class*) (extra nil)) Err bitreich.org 70 i- (format nil ".~A { background-color: ~A; color: black; ~{~A; ~}}~:*~:*~:* Err bitreich.org 70 i-.~A:hover { background-color: ~A; color: black; ~{~A; ~}}~%" Err bitreich.org 70 i- class color Err bitreich.org 70 i- (mapcar #'(lambda (extra) Err bitreich.org 70 i- (format nil "~A : ~{~A ~}" Err bitreich.org 70 i- (for-css (first extra)) Err bitreich.org 70 i- (mapcar #'for-css (cdr extra)))) Err bitreich.org 70 i- extra))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; colorize.lisp Err bitreich.org 70 i- Err bitreich.org 70 i-;(in-package :colorize) Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (defparameter *coloring-types* nil) Err bitreich.org 70 i- (defparameter *version-token* (gensym))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass coloring-type () Err bitreich.org 70 i- ((modes :initarg :modes :accessor coloring-type-modes) Err bitreich.org 70 i- (default-mode :initarg :default-mode :accessor coloring-type-default-mode) Err bitreich.org 70 i- (transition-functions :initarg :transition-functions :accessor coloring-type-transition-functions) Err bitreich.org 70 i- (fancy-name :initarg :fancy-name :accessor coloring-type-fancy-name) Err bitreich.org 70 i- (term-formatter :initarg :term-formatter :accessor coloring-type-term-formatter) Err bitreich.org 70 i- (formatter-initial-values :initarg :formatter-initial-values :accessor coloring-type-formatter-initial-values :initform nil) Err bitreich.org 70 i- (formatter-after-hook :initarg :formatter-after-hook :accessor coloring-type-formatter-after-hook :initform (constantly "")) Err bitreich.org 70 i- (autodetect-function :initarg :autodetect-function :accessor coloring-type-autodetect-function Err bitreich.org 70 i- :initform (constantly nil)) Err bitreich.org 70 i- (parent-type :initarg :parent-type :accessor coloring-type-parent-type Err bitreich.org 70 i- :initform nil) Err bitreich.org 70 i- (visible :initarg :visible :accessor coloring-type-visible Err bitreich.org 70 i- :initform t))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun find-coloring-type (type) Err bitreich.org 70 i- (if (typep type 'coloring-type) Err bitreich.org 70 i- type Err bitreich.org 70 i- (cdr (assoc (symbol-name type) *coloring-types* :test #'string-equal :key #'symbol-name)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun autodetect-coloring-type (name) Err bitreich.org 70 i- (car Err bitreich.org 70 i- (find name *coloring-types* Err bitreich.org 70 i- :key #'cdr Err bitreich.org 70 i- :test #'(lambda (name type) Err bitreich.org 70 i- (and (coloring-type-visible type) Err bitreich.org 70 i- (funcall (coloring-type-autodetect-function type) name)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun coloring-types () Err bitreich.org 70 i- (loop for type-pair in *coloring-types* Err bitreich.org 70 i- if (coloring-type-visible (cdr type-pair)) Err bitreich.org 70 i- collect (cons (car type-pair) Err bitreich.org 70 i- (coloring-type-fancy-name (cdr type-pair))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun (setf find-coloring-type) (new-value type) Err bitreich.org 70 i- (if new-value Err bitreich.org 70 i- (let ((found (assoc type *coloring-types*))) Err bitreich.org 70 i- (if found Err bitreich.org 70 i- (setf (cdr found) new-value) Err bitreich.org 70 i- (setf *coloring-types* Err bitreich.org 70 i- (nconc *coloring-types* Err bitreich.org 70 i- (list (cons type new-value)))))) Err bitreich.org 70 i- (setf *coloring-types* (remove type *coloring-types* :key #'car)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *scan-calls* 0) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *reset-position* nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-gensyms ((&rest names) &body body) Err bitreich.org 70 i- `(let ,(mapcar #'(lambda (name) Err bitreich.org 70 i- (list name `(make-symbol ,(symbol-name name)))) names) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-scanning-functions (string-param position-place mode-place mode-wait-place &body body) Err bitreich.org 70 i- (with-gensyms (num items position not-preceded-by string item new-mode until advancing) Err bitreich.org 70 i- `(labels ((advance (,num) Err bitreich.org 70 i- (setf ,position-place (+ ,position-place ,num)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- (peek-any (,items &key ,not-preceded-by) Err bitreich.org 70 i- (incf *scan-calls*) Err bitreich.org 70 i- (let* ((,items (if (stringp ,items) Err bitreich.org 70 i- (coerce ,items 'list) ,items)) Err bitreich.org 70 i- (,not-preceded-by (if (characterp ,not-preceded-by) Err bitreich.org 70 i- (string ,not-preceded-by) ,not-preceded-by)) Err bitreich.org 70 i- (,position ,position-place) Err bitreich.org 70 i- (,string ,string-param)) Err bitreich.org 70 i- (let ((,item (and Err bitreich.org 70 i- (< ,position (length ,string)) Err bitreich.org 70 i- (find ,string ,items Err bitreich.org 70 i- :test #'(lambda (,string ,item) Err bitreich.org 70 i- #+nil Err bitreich.org 70 i- (format t "looking for ~S in ~S starting at ~S~%" Err bitreich.org 70 i- ,item ,string ,position) Err bitreich.org 70 i- (if (characterp ,item) Err bitreich.org 70 i- (char= (elt ,string ,position) Err bitreich.org 70 i- ,item) Err bitreich.org 70 i- (search ,item ,string :start2 ,position Err bitreich.org 70 i- :end2 (min (length ,string) Err bitreich.org 70 i- (+ ,position (length ,item)))))))))) Err bitreich.org 70 i- (if (characterp ,item) Err bitreich.org 70 i- (setf ,item (string ,item))) Err bitreich.org 70 i- (if Err bitreich.org 70 i- (if ,item Err bitreich.org 70 i- (if ,not-preceded-by Err bitreich.org 70 i- (if (>= (- ,position (length ,not-preceded-by)) 0) Err bitreich.org 70 i- (not (string= (subseq ,string Err bitreich.org 70 i- (- ,position (length ,not-preceded-by)) Err bitreich.org 70 i- ,position) Err bitreich.org 70 i- ,not-preceded-by)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- t) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- ,item Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (and *reset-position* Err bitreich.org 70 i- (setf ,position-place *reset-position*)) Err bitreich.org 70 i- nil))))) Err bitreich.org 70 i- (scan-any (,items &key ,not-preceded-by) Err bitreich.org 70 i- (let ((,item (peek-any ,items :not-preceded-by ,not-preceded-by))) Err bitreich.org 70 i- (and ,item (advance (length ,item))))) Err bitreich.org 70 i- (peek (,item &key ,not-preceded-by) Err bitreich.org 70 i- (peek-any (list ,item) :not-preceded-by ,not-preceded-by)) Err bitreich.org 70 i- (scan (,item &key ,not-preceded-by) Err bitreich.org 70 i- (scan-any (list ,item) :not-preceded-by ,not-preceded-by))) Err bitreich.org 70 i- (macrolet ((set-mode (,new-mode &key ,until (,advancing t)) Err bitreich.org 70 i- (list 'progn Err bitreich.org 70 i- (list 'setf ',mode-place ,new-mode) Err bitreich.org 70 i- (list 'setf ',mode-wait-place Err bitreich.org 70 i- (list 'lambda (list ',position) Err bitreich.org 70 i- (list 'let (list (list '*reset-position* ',position)) Err bitreich.org 70 i- (list 'values ,until ,advancing))))))) Err bitreich.org 70 i- ,@body)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *formatter-local-variables*) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro define-coloring-type (name fancy-name &key modes default-mode transitions formatters Err bitreich.org 70 i- autodetect parent formatter-variables (formatter-after-hook '(constantly "")) Err bitreich.org 70 i- invisible) Err bitreich.org 70 i- (with-gensyms (parent-type term type string current-mode position position-foobage mode-wait new-position advance) Err bitreich.org 70 i- `(let ((,parent-type (or (find-coloring-type ,parent) Err bitreich.org 70 i- (and ,parent Err bitreich.org 70 i- (error "No such coloring type: ~S" ,parent))))) Err bitreich.org 70 i- (setf (find-coloring-type ,name) Err bitreich.org 70 i- (make-instance 'coloring-type Err bitreich.org 70 i- :fancy-name ',fancy-name Err bitreich.org 70 i- :modes (append ',modes (if ,parent-type (coloring-type-modes ,parent-type))) Err bitreich.org 70 i- :default-mode (or ',default-mode Err bitreich.org 70 i- (if ,parent-type (coloring-type-default-mode ,parent-type))) Err bitreich.org 70 i- ,@(if autodetect Err bitreich.org 70 i- `(:autodetect-function ,autodetect)) Err bitreich.org 70 i- :parent-type ,parent-type Err bitreich.org 70 i- :visible (not ,invisible) Err bitreich.org 70 i- :formatter-initial-values (lambda nil Err bitreich.org 70 i- (list* ,@(mapcar #'(lambda (e) Err bitreich.org 70 i- `(cons ',(car e) ,(second e))) Err bitreich.org 70 i- formatter-variables) Err bitreich.org 70 i- (if ,parent-type Err bitreich.org 70 i- (funcall (coloring-type-formatter-initial-values ,parent-type)) Err bitreich.org 70 i- nil))) Err bitreich.org 70 i- :formatter-after-hook (lambda nil Err bitreich.org 70 i- (symbol-macrolet ,(mapcar #'(lambda (e) Err bitreich.org 70 i- `(,(car e) (cdr (assoc ',(car e) *formatter-local-variables*)))) Err bitreich.org 70 i- formatter-variables) Err bitreich.org 70 i- (concatenate 'string Err bitreich.org 70 i- (funcall ,formatter-after-hook) Err bitreich.org 70 i- (if ,parent-type Err bitreich.org 70 i- (funcall (coloring-type-formatter-after-hook ,parent-type)) Err bitreich.org 70 i- "")))) Err bitreich.org 70 i- :term-formatter Err bitreich.org 70 i- (symbol-macrolet ,(mapcar #'(lambda (e) Err bitreich.org 70 i- `(,(car e) (cdr (assoc ',(car e) *formatter-local-variables*)))) Err bitreich.org 70 i- formatter-variables) Err bitreich.org 70 i- (lambda (,term) Err bitreich.org 70 i- (labels ((call-parent-formatter (&optional (,type (car ,term)) Err bitreich.org 70 i- (,string (cdr ,term))) Err bitreich.org 70 i- (if ,parent-type Err bitreich.org 70 i- (funcall (coloring-type-term-formatter ,parent-type) Err bitreich.org 70 i- (cons ,type ,string)))) Err bitreich.org 70 i- (call-formatter (&optional (,type (car ,term)) Err bitreich.org 70 i- (,string (cdr ,term))) Err bitreich.org 70 i- (funcall Err bitreich.org 70 i- (case (first ,type) Err bitreich.org 70 i- ,@formatters Err bitreich.org 70 i- (t (lambda (,type text) Err bitreich.org 70 i- (call-parent-formatter ,type text)))) Err bitreich.org 70 i- ,type ,string))) Err bitreich.org 70 i- (call-formatter)))) Err bitreich.org 70 i- :transition-functions Err bitreich.org 70 i- (list Err bitreich.org 70 i- ,@(loop for transition in transitions Err bitreich.org 70 i- collect (destructuring-bind (mode &rest table) transition Err bitreich.org 70 i- `(cons ',mode Err bitreich.org 70 i- (lambda (,current-mode ,string ,position) Err bitreich.org 70 i- (let ((,mode-wait (constantly nil)) Err bitreich.org 70 i- (,position-foobage ,position)) Err bitreich.org 70 i- (with-scanning-functions ,string ,position-foobage Err bitreich.org 70 i- ,current-mode ,mode-wait Err bitreich.org 70 i- (let ((*reset-position* ,position)) Err bitreich.org 70 i- (cond ,@table)) Err bitreich.org 70 i- (values ,position-foobage ,current-mode Err bitreich.org 70 i- (lambda (,new-position) Err bitreich.org 70 i- (setf ,position-foobage ,new-position) Err bitreich.org 70 i- (let ((,advance (nth-value 1 (funcall ,mode-wait ,position-foobage)))) Err bitreich.org 70 i- (values ,position-foobage ,advance))))) Err bitreich.org 70 i- ))))))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun full-transition-table (coloring-type-object) Err bitreich.org 70 i- (let ((parent (coloring-type-parent-type coloring-type-object))) Err bitreich.org 70 i- (if parent Err bitreich.org 70 i- (append (coloring-type-transition-functions coloring-type-object) Err bitreich.org 70 i- (full-transition-table parent)) Err bitreich.org 70 i- (coloring-type-transition-functions coloring-type-object)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun scan-string (coloring-type string) Err bitreich.org 70 i- (let* ((coloring-type-object (or (find-coloring-type coloring-type) Err bitreich.org 70 i- (error "No such coloring type: ~S" coloring-type))) Err bitreich.org 70 i- (transitions (full-transition-table coloring-type-object)) Err bitreich.org 70 i- (result nil) Err bitreich.org 70 i- (low-bound 0) Err bitreich.org 70 i- (current-mode (coloring-type-default-mode coloring-type-object)) Err bitreich.org 70 i- (mode-stack nil) Err bitreich.org 70 i- (current-wait (constantly nil)) Err bitreich.org 70 i- (wait-stack nil) Err bitreich.org 70 i- (current-position 0) Err bitreich.org 70 i- (*scan-calls* 0)) Err bitreich.org 70 i- (flet ((finish-current (new-position new-mode new-wait &key (extend t) push pop) Err bitreich.org 70 i- (let ((to (if extend new-position current-position))) Err bitreich.org 70 i- (if (> to low-bound) Err bitreich.org 70 i- (setf result (nconc result Err bitreich.org 70 i- (list (cons (cons current-mode mode-stack) Err bitreich.org 70 i- (subseq string low-bound Err bitreich.org 70 i- to)))))) Err bitreich.org 70 i- (setf low-bound to) Err bitreich.org 70 i- (when pop Err bitreich.org 70 i- (pop mode-stack) Err bitreich.org 70 i- (pop wait-stack)) Err bitreich.org 70 i- (when push Err bitreich.org 70 i- (push current-mode mode-stack) Err bitreich.org 70 i- (push current-wait wait-stack)) Err bitreich.org 70 i- (setf current-mode new-mode Err bitreich.org 70 i- current-position new-position Err bitreich.org 70 i- current-wait new-wait)))) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- (if (> current-position (length string)) Err bitreich.org 70 i- (return-from scan-string Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (format *trace-output* "Scan was called ~S times.~%" Err bitreich.org 70 i- *scan-calls*) Err bitreich.org 70 i- (finish-current (length string) nil (constantly nil)) Err bitreich.org 70 i- result)) Err bitreich.org 70 i- (or Err bitreich.org 70 i- (loop for transition in Err bitreich.org 70 i- (mapcar #'cdr Err bitreich.org 70 i- (remove current-mode transitions Err bitreich.org 70 i- :key #'car Err bitreich.org 70 i- :test-not #'(lambda (a b) Err bitreich.org 70 i- (or (eql a b) Err bitreich.org 70 i- (if (listp b) Err bitreich.org 70 i- (member a b)))))) Err bitreich.org 70 i- if Err bitreich.org 70 i- (and transition Err bitreich.org 70 i- (multiple-value-bind Err bitreich.org 70 i- (new-position new-mode new-wait) Err bitreich.org 70 i- (funcall transition current-mode string current-position) Err bitreich.org 70 i- (when (> new-position current-position) Err bitreich.org 70 i- (finish-current new-position new-mode new-wait :extend nil :push t) Err bitreich.org 70 i- t))) Err bitreich.org 70 i- return t) Err bitreich.org 70 i- (multiple-value-bind Err bitreich.org 70 i- (pos advance) Err bitreich.org 70 i- (funcall current-wait current-position) Err bitreich.org 70 i- #+nil Err bitreich.org 70 i- (format t "current-wait returns ~S ~S (mode is ~S, pos is ~S)~%" pos advance current-mode current-position) Err bitreich.org 70 i- (and pos Err bitreich.org 70 i- (when (> pos current-position) Err bitreich.org 70 i- (finish-current (if advance Err bitreich.org 70 i- pos Err bitreich.org 70 i- current-position) Err bitreich.org 70 i- (car mode-stack) Err bitreich.org 70 i- (car wait-stack) Err bitreich.org 70 i- :extend advance Err bitreich.org 70 i- :pop t) Err bitreich.org 70 i- t))) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (incf current-position))) Err bitreich.org 70 i- ))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun format-scan (coloring-type scan) Err bitreich.org 70 i- (let* ((coloring-type-object (or (find-coloring-type coloring-type) Err bitreich.org 70 i- (error "No such coloring type: ~S" coloring-type))) Err bitreich.org 70 i- (color-formatter (coloring-type-term-formatter coloring-type-object)) Err bitreich.org 70 i- (*formatter-local-variables* (funcall (coloring-type-formatter-initial-values coloring-type-object)))) Err bitreich.org 70 i- (format nil "~{~A~}~A" Err bitreich.org 70 i- (mapcar color-formatter scan) Err bitreich.org 70 i- (funcall (coloring-type-formatter-after-hook coloring-type-object))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun encode-for-pre (string) Err bitreich.org 70 i- (declare (simple-string string)) Err bitreich.org 70 i- (let ((output (make-array (truncate (length string) 2/3) Err bitreich.org 70 i- :element-type 'character Err bitreich.org 70 i- :adjustable t Err bitreich.org 70 i- :fill-pointer 0))) Err bitreich.org 70 i- (with-output-to-string (out output) Err bitreich.org 70 i- (loop for char across string Err bitreich.org 70 i- do (case char Err bitreich.org 70 i- ((#\&) (write-string "&" out)) Err bitreich.org 70 i- ((#\<) (write-string "<" out)) Err bitreich.org 70 i- ((#\>) (write-string ">" out)) Err bitreich.org 70 i- ((#\") (write-string """ out)) Err bitreich.org 70 i- ((#\RIGHTWARDS_DOUBLE_ARROW) (write-string "⇒" out)) Err bitreich.org 70 i- (t (write-char char out))))) Err bitreich.org 70 i- (coerce output 'simple-string))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun string-substitute (string substring replacement-string) Err bitreich.org 70 i- "String substitute by Larry Hunter. Obtained from Google" Err bitreich.org 70 i- (let ((substring-length (length substring)) Err bitreich.org 70 i- (last-end 0) Err bitreich.org 70 i- (new-string "")) Err bitreich.org 70 i- (do ((next-start Err bitreich.org 70 i- (search substring string) Err bitreich.org 70 i- (search substring string :start2 last-end))) Err bitreich.org 70 i- ((null next-start) Err bitreich.org 70 i- (concatenate 'string new-string (subseq string last-end))) Err bitreich.org 70 i- (setq new-string Err bitreich.org 70 i- (concatenate 'string Err bitreich.org 70 i- new-string Err bitreich.org 70 i- (subseq string last-end next-start) Err bitreich.org 70 i- replacement-string)) Err bitreich.org 70 i- (setq last-end (+ next-start substring-length))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun decode-from-tt (string) Err bitreich.org 70 i- (string-substitute Err bitreich.org 70 i- (string-substitute Err bitreich.org 70 i- (string-substitute Err bitreich.org 70 i- (string-substitute Err bitreich.org 70 i- (string-substitute string "&" "&") Err bitreich.org 70 i- "<" "<") Err bitreich.org 70 i- ">" ">") Err bitreich.org 70 i- "⇒" (string #\RIGHTWARDS_DOUBLE_ARROW)) Err bitreich.org 70 i- """ "\"")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun html-colorization (coloring-type string) Err bitreich.org 70 i- (format-scan coloring-type Err bitreich.org 70 i- (mapcar #'(lambda (p) Err bitreich.org 70 i- (cons (car p) Err bitreich.org 70 i- (let ((tt (encode-for-pre (cdr p)))) Err bitreich.org 70 i- (if (and (> (length tt) 0) Err bitreich.org 70 i- (char= (elt tt (1- (length tt))) #\>)) Err bitreich.org 70 i- (format nil "~A~%" tt) tt)))) Err bitreich.org 70 i- (scan-string coloring-type string)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun colorize-file-to-stream (coloring-type input-file-name s2 &key (wrap t) (css-background "default")) Err bitreich.org 70 i- (let* ((input-file (if (pathname-type (merge-pathnames input-file-name)) Err bitreich.org 70 i- (merge-pathnames input-file-name) Err bitreich.org 70 i- (make-pathname :type "lisp" Err bitreich.org 70 i- :defaults (merge-pathnames input-file-name)))) Err bitreich.org 70 i- (*css-background-class* css-background)) Err bitreich.org 70 i- (with-open-file (s input-file :direction :input) Err bitreich.org 70 i- (let ((lines nil) Err bitreich.org 70 i- (string nil)) Err bitreich.org 70 i- (block done Err bitreich.org 70 i- (loop (let ((line (read-line s nil nil))) Err bitreich.org 70 i- (if line Err bitreich.org 70 i- (push line lines) Err bitreich.org 70 i- (return-from done))))) Err bitreich.org 70 i- (setf string (format nil "~{~A~%~}" Err bitreich.org 70 i- (nreverse lines))) Err bitreich.org 70 i- (if wrap Err bitreich.org 70 i- (format s2 Err bitreich.org 70 i- " Err bitreich.org 70 i- Err bitreich.org 70 i-
Err bitreich.org 70 i-~A Err bitreich.org 70 i-
" Err bitreich.org 70 i- *coloring-css* Err bitreich.org 70 i- (make-background-css "white") Err bitreich.org 70 i- *css-background-class* Err bitreich.org 70 i- (html-colorization coloring-type string)) Err bitreich.org 70 i- (write-string (html-colorization coloring-type string) s2)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun colorize-file (coloring-type input-file-name &optional output-file-name) Err bitreich.org 70 i- (let* ((input-file (if (pathname-type (merge-pathnames input-file-name)) Err bitreich.org 70 i- (merge-pathnames input-file-name) Err bitreich.org 70 i- (make-pathname :type "lisp" Err bitreich.org 70 i- :defaults (merge-pathnames input-file-name)))) Err bitreich.org 70 i- (output-file (or output-file-name Err bitreich.org 70 i- (make-pathname :type "html" Err bitreich.org 70 i- :defaults input-file)))) Err bitreich.org 70 i- (with-open-file (s2 output-file :direction :output :if-exists :supersede) Err bitreich.org 70 i- (colorize-file-to-stream coloring-type input-file-name s2)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; coloring-types.lisp Err bitreich.org 70 i- Err bitreich.org 70 i-;(in-package :colorize) Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (defparameter *version-token* (gensym))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *symbol-characters* Err bitreich.org 70 i- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*!%$&+-1234567890") Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *non-constituent* Err bitreich.org 70 i- '(#\space #\tab #\newline #\linefeed #\page #\return Err bitreich.org 70 i- #\" #\' #\( #\) #\, #\; #\` #\[ #\])) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *special-forms* Err bitreich.org 70 i- '("let" "load-time-value" "quote" "macrolet" "progn" "progv" "go" "flet" "the" Err bitreich.org 70 i- "if" "throw" "eval-when" "multiple-value-prog1" "unwind-protect" "let*" Err bitreich.org 70 i- "labels" "function" "symbol-macrolet" "block" "tagbody" "catch" "locally" Err bitreich.org 70 i- "return-from" "setq" "multiple-value-call")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *common-macros* Err bitreich.org 70 i- '("loop" "cond" "lambda")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *open-parens* '(#\()) Err bitreich.org 70 i-(defparameter *close-parens* '(#\))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-coloring-type :lisp "Basic Lisp" Err bitreich.org 70 i- :modes (:first-char-on-line :normal :symbol :escaped-symbol :keyword :string :comment Err bitreich.org 70 i- :multiline :character Err bitreich.org 70 i- :single-escaped :in-list :syntax-error) Err bitreich.org 70 i- :default-mode :first-char-on-line Err bitreich.org 70 i- :transitions Err bitreich.org 70 i- (((:in-list) Err bitreich.org 70 i- ((or Err bitreich.org 70 i- (scan-any *symbol-characters*) Err bitreich.org 70 i- (and (scan #\.) (scan-any *symbol-characters*)) Err bitreich.org 70 i- (and (scan #\\) (advance 1))) Err bitreich.org 70 i- (set-mode :symbol Err bitreich.org 70 i- :until (scan-any *non-constituent*) Err bitreich.org 70 i- :advancing nil)) Err bitreich.org 70 i- ((or (scan #\:) (scan "#:")) Err bitreich.org 70 i- (set-mode :keyword Err bitreich.org 70 i- :until (scan-any *non-constituent*) Err bitreich.org 70 i- :advancing nil)) Err bitreich.org 70 i- ((scan "#\\") Err bitreich.org 70 i- (let ((count 0)) Err bitreich.org 70 i- (set-mode :character Err bitreich.org 70 i- :until (progn Err bitreich.org 70 i- (incf count) Err bitreich.org 70 i- (if (> count 1) Err bitreich.org 70 i- (scan-any *non-constituent*))) Err bitreich.org 70 i- :advancing nil))) Err bitreich.org 70 i- ((scan #\") Err bitreich.org 70 i- (set-mode :string Err bitreich.org 70 i- :until (scan #\"))) Err bitreich.org 70 i- ((scan #\;) Err bitreich.org 70 i- (set-mode :comment Err bitreich.org 70 i- :until (scan #\newline))) Err bitreich.org 70 i- ((scan "#|") Err bitreich.org 70 i- (set-mode :multiline Err bitreich.org 70 i- :until (scan "|#"))) Err bitreich.org 70 i- ((scan #\() Err bitreich.org 70 i- (set-mode :in-list Err bitreich.org 70 i- :until (scan #\))))) Err bitreich.org 70 i- ((:normal :first-char-on-line) Err bitreich.org 70 i- ((scan #\() Err bitreich.org 70 i- (set-mode :in-list Err bitreich.org 70 i- :until (scan #\))))) Err bitreich.org 70 i- (:first-char-on-line Err bitreich.org 70 i- ((scan #\;) Err bitreich.org 70 i- (set-mode :comment Err bitreich.org 70 i- :until (scan #\newline))) Err bitreich.org 70 i- ((scan "#|") Err bitreich.org 70 i- (set-mode :multiline Err bitreich.org 70 i- :until (scan "|#"))) Err bitreich.org 70 i- ((advance 1) Err bitreich.org 70 i- (set-mode :normal Err bitreich.org 70 i- :until (scan #\newline)))) Err bitreich.org 70 i- (:multiline Err bitreich.org 70 i- ((scan "#|") Err bitreich.org 70 i- (set-mode :multiline Err bitreich.org 70 i- :until (scan "|#")))) Err bitreich.org 70 i- ((:symbol :keyword :escaped-symbol :string) Err bitreich.org 70 i- ((scan #\\) Err bitreich.org 70 i- (let ((count 0)) Err bitreich.org 70 i- (set-mode :single-escaped Err bitreich.org 70 i- :until (progn Err bitreich.org 70 i- (incf count) Err bitreich.org 70 i- (if (< count 2) Err bitreich.org 70 i- (advance 1)))))))) Err bitreich.org 70 i- :formatter-variables ((paren-counter 0)) Err bitreich.org 70 i- :formatter-after-hook (lambda nil Err bitreich.org 70 i- (format nil "~{~A~}" Err bitreich.org 70 i- (loop for i from paren-counter downto 1 Err bitreich.org 70 i- collect ""))) Err bitreich.org 70 i- :formatters Err bitreich.org 70 i- (((:normal :first-char-on-line) Err bitreich.org 70 i- (lambda (type s) Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- s)) Err bitreich.org 70 i- ((:in-list) Err bitreich.org 70 i- (lambda (type s) Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- (labels ((color-parens (s) Err bitreich.org 70 i- (let ((paren-pos (find-if-not #'null Err bitreich.org 70 i- (mapcar #'(lambda (c) Err bitreich.org 70 i- (position c s)) Err bitreich.org 70 i- (append *open-parens* Err bitreich.org 70 i- *close-parens*))))) Err bitreich.org 70 i- (if paren-pos Err bitreich.org 70 i- (let ((before-paren (subseq s 0 paren-pos)) Err bitreich.org 70 i- (after-paren (subseq s (1+ paren-pos))) Err bitreich.org 70 i- (paren (elt s paren-pos)) Err bitreich.org 70 i- (open nil) Err bitreich.org 70 i- (count 0)) Err bitreich.org 70 i- (when (member paren *open-parens* :test #'char=) Err bitreich.org 70 i- (setf count (mod paren-counter 6)) Err bitreich.org 70 i- (incf paren-counter) Err bitreich.org 70 i- (setf open t)) Err bitreich.org 70 i- (when (member paren *close-parens* :test #'char=) Err bitreich.org 70 i- (decf paren-counter)) Err bitreich.org 70 i- (if open Err bitreich.org 70 i- (format nil "~A~C~A" Err bitreich.org 70 i- before-paren Err bitreich.org 70 i- (1+ count) Err bitreich.org 70 i- paren *css-background-class* Err bitreich.org 70 i- (color-parens after-paren)) Err bitreich.org 70 i- (format nil "~A~C~A" Err bitreich.org 70 i- before-paren Err bitreich.org 70 i- paren (color-parens after-paren)))) Err bitreich.org 70 i- s)))) Err bitreich.org 70 i- (color-parens s)))) Err bitreich.org 70 i- ((:symbol :escaped-symbol) Err bitreich.org 70 i- (lambda (type s) Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- (let* ((colon (position #\: s :from-end t)) Err bitreich.org 70 i- (new-s (or (and colon (subseq s (1+ colon))) s))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((or Err bitreich.org 70 i- (member new-s *common-macros* :test #'string-equal) Err bitreich.org 70 i- (member new-s *special-forms* :test #'string-equal) Err bitreich.org 70 i- (some #'(lambda (e) Err bitreich.org 70 i- (and (> (length new-s) (length e)) Err bitreich.org 70 i- (string-equal e (subseq new-s 0 (length e))))) Err bitreich.org 70 i- '("WITH-" "DEF"))) Err bitreich.org 70 i- (format nil "~A" s)) Err bitreich.org 70 i- ((and (> (length new-s) 2) Err bitreich.org 70 i- (char= (elt new-s 0) #\*) Err bitreich.org 70 i- (char= (elt new-s (1- (length new-s))) #\*)) Err bitreich.org 70 i- (format nil "~A" s)) Err bitreich.org 70 i- (t s))))) Err bitreich.org 70 i- (:keyword (lambda (type s) Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- (format nil "~A" Err bitreich.org 70 i- s))) Err bitreich.org 70 i- ((:comment :multiline) Err bitreich.org 70 i- (lambda (type s) Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- (format nil "~A" Err bitreich.org 70 i- s))) Err bitreich.org 70 i- ((:character) Err bitreich.org 70 i- (lambda (type s) Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- (format nil "~A" Err bitreich.org 70 i- s))) Err bitreich.org 70 i- ((:string) Err bitreich.org 70 i- (lambda (type s) Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- (format nil "~A" Err bitreich.org 70 i- s))) Err bitreich.org 70 i- ((:single-escaped) Err bitreich.org 70 i- (lambda (type s) Err bitreich.org 70 i- (call-formatter (cdr type) s))) Err bitreich.org 70 i- ((:syntax-error) Err bitreich.org 70 i- (lambda (type s) Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- (format nil "~A" Err bitreich.org 70 i- s))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-coloring-type :scheme "Scheme" Err bitreich.org 70 i- :autodetect (lambda (text) Err bitreich.org 70 i- (or Err bitreich.org 70 i- (search "scheme" text :test #'char-equal) Err bitreich.org 70 i- (search "chicken" text :test #'char-equal))) Err bitreich.org 70 i- :parent :lisp Err bitreich.org 70 i- :transitions Err bitreich.org 70 i- (((:normal :in-list) Err bitreich.org 70 i- ((scan "...") Err bitreich.org 70 i- (set-mode :symbol Err bitreich.org 70 i- :until (scan-any *non-constituent*) Err bitreich.org 70 i- :advancing nil)) Err bitreich.org 70 i- ((scan #\[) Err bitreich.org 70 i- (set-mode :in-list Err bitreich.org 70 i- :until (scan #\]))))) Err bitreich.org 70 i- :formatters Err bitreich.org 70 i- (((:in-list) Err bitreich.org 70 i- (lambda (type s) Err bitreich.org 70 i- (declare (ignore type s)) Err bitreich.org 70 i- (let ((*open-parens* (cons #\[ *open-parens*)) Err bitreich.org 70 i- (*close-parens* (cons #\] *close-parens*))) Err bitreich.org 70 i- (call-parent-formatter)))) Err bitreich.org 70 i- ((:symbol :escaped-symbol) Err bitreich.org 70 i- (lambda (type s) Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- (let ((result (if (find-package :r5rs-lookup) Err bitreich.org 70 i- (funcall (symbol-function (intern "SYMBOL-LOOKUP" :r5rs-lookup)) Err bitreich.org 70 i- s)))) Err bitreich.org 70 i- (if result Err bitreich.org 70 i- (format nil "
~A" Err bitreich.org 70 i- result (call-parent-formatter)) Err bitreich.org 70 i- (call-parent-formatter))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-coloring-type :elisp "Emacs Lisp" Err bitreich.org 70 i- :autodetect (lambda (name) Err bitreich.org 70 i- (member name '("emacs") Err bitreich.org 70 i- :test #'(lambda (name ext) Err bitreich.org 70 i- (search ext name :test #'char-equal)))) Err bitreich.org 70 i- :parent :lisp Err bitreich.org 70 i- :formatters Err bitreich.org 70 i- (((:symbol :escaped-symbol) Err bitreich.org 70 i- (lambda (type s) Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- (let ((result (if (find-package :elisp-lookup) Err bitreich.org 70 i- (funcall (symbol-function (intern "SYMBOL-LOOKUP" :elisp-lookup)) Err bitreich.org 70 i- s)))) Err bitreich.org 70 i- (if result Err bitreich.org 70 i- (format nil "~A" Err bitreich.org 70 i- result (call-parent-formatter)) Err bitreich.org 70 i- (call-parent-formatter))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-coloring-type :common-lisp "Common Lisp" Err bitreich.org 70 i- :autodetect (lambda (text) Err bitreich.org 70 i- (search "lisp" text :test #'char-equal)) Err bitreich.org 70 i- :parent :lisp Err bitreich.org 70 i- :transitions Err bitreich.org 70 i- (((:normal :in-list) Err bitreich.org 70 i- ((scan #\|) Err bitreich.org 70 i- (set-mode :escaped-symbol Err bitreich.org 70 i- :until (scan #\|))))) Err bitreich.org 70 i- :formatters Err bitreich.org 70 i- (((:symbol :escaped-symbol) Err bitreich.org 70 i- (lambda (type s) Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- (let* ((colon (position #\: s :from-end t :test #'char=)) Err bitreich.org 70 i- (to-lookup (if colon (subseq s (1+ colon)) s)) Err bitreich.org 70 i- (result (if (find-package :clhs-lookup) Err bitreich.org 70 i- (funcall (symbol-function (intern "SYMBOL-LOOKUP" :clhs-lookup)) Err bitreich.org 70 i- to-lookup)))) Err bitreich.org 70 i- (if result Err bitreich.org 70 i- (format nil "~A" Err bitreich.org 70 i- result (call-parent-formatter)) Err bitreich.org 70 i- (call-parent-formatter))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-coloring-type :common-lisp-file "Common Lisp File" Err bitreich.org 70 i- :parent :common-lisp Err bitreich.org 70 i- :default-mode :in-list Err bitreich.org 70 i- :invisible t) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *c-open-parens* "([{") Err bitreich.org 70 i-(defvar *c-close-parens* ")]}") Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *c-reserved-words* Err bitreich.org 70 i- '("auto" "break" "case" "char" "const" Err bitreich.org 70 i- "continue" "default" "do" "double" "else" Err bitreich.org 70 i- "enum" "extern" "float" "for" "goto" Err bitreich.org 70 i- "if" "int" "long" "register" "return" Err bitreich.org 70 i- "short" "signed" "sizeof" "static" "struct" Err bitreich.org 70 i- "switch" "typedef" "union" "unsigned" "void" Err bitreich.org 70 i- "volatile" "while" "__restrict" "_Bool")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *c-begin-word* "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789") Err bitreich.org 70 i-(defparameter *c-terminators* '(#\space #\return #\tab #\newline #\. #\/ #\- #\* #\+ #\{ #\} #\( #\) #\' #\" #\[ #\] #\< #\> #\#)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-coloring-type :basic-c "Basic C" Err bitreich.org 70 i- :modes (:normal :comment :word-ish :paren-ish :string :char :single-escape :preprocessor) Err bitreich.org 70 i- :default-mode :normal Err bitreich.org 70 i- :invisible t Err bitreich.org 70 i- :transitions Err bitreich.org 70 i- ((:normal Err bitreich.org 70 i- ((scan-any *c-begin-word*) Err bitreich.org 70 i- (set-mode :word-ish Err bitreich.org 70 i- :until (scan-any *c-terminators*) Err bitreich.org 70 i- :advancing nil)) Err bitreich.org 70 i- ((scan "/*") Err bitreich.org 70 i- (set-mode :comment Err bitreich.org 70 i- :until (scan "*/"))) Err bitreich.org 70 i- ((or Err bitreich.org 70 i- (scan-any *c-open-parens*) Err bitreich.org 70 i- (scan-any *c-close-parens*)) Err bitreich.org 70 i- (set-mode :paren-ish Err bitreich.org 70 i- :until (advance 1) Err bitreich.org 70 i- :advancing nil)) Err bitreich.org 70 i- ((scan #\") Err bitreich.org 70 i- (set-mode :string Err bitreich.org 70 i- :until (scan #\"))) Err bitreich.org 70 i- ((or (scan "'\\") Err bitreich.org 70 i- (scan #\')) Err bitreich.org 70 i- (set-mode :character Err bitreich.org 70 i- :until (advance 2)))) Err bitreich.org 70 i- (:string Err bitreich.org 70 i- ((scan #\\) Err bitreich.org 70 i- (set-mode :single-escape Err bitreich.org 70 i- :until (advance 1))))) Err bitreich.org 70 i- :formatter-variables Err bitreich.org 70 i- ((paren-counter 0)) Err bitreich.org 70 i- :formatter-after-hook (lambda nil Err bitreich.org 70 i- (format nil "~{~A~}" Err bitreich.org 70 i- (loop for i from paren-counter downto 1 Err bitreich.org 70 i- collect ""))) Err bitreich.org 70 i- :formatters Err bitreich.org 70 i- ((:normal Err bitreich.org 70 i- (lambda (type s) Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- s)) Err bitreich.org 70 i- (:comment Err bitreich.org 70 i- (lambda (type s) Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- (format nil "~A" Err bitreich.org 70 i- s))) Err bitreich.org 70 i- (:string Err bitreich.org 70 i- (lambda (type s) Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- (format nil "~A" Err bitreich.org 70 i- s))) Err bitreich.org 70 i- (:character Err bitreich.org 70 i- (lambda (type s) Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- (format nil "~A" Err bitreich.org 70 i- s))) Err bitreich.org 70 i- (:single-escape Err bitreich.org 70 i- (lambda (type s) Err bitreich.org 70 i- (call-formatter (cdr type) s))) Err bitreich.org 70 i- (:paren-ish Err bitreich.org 70 i- (lambda (type s) Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- (let ((open nil) Err bitreich.org 70 i- (count 0)) Err bitreich.org 70 i- (if (eql (length s) 1) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (when (member (elt s 0) (coerce *c-open-parens* 'list)) Err bitreich.org 70 i- (setf open t) Err bitreich.org 70 i- (setf count (mod paren-counter 6)) Err bitreich.org 70 i- (incf paren-counter)) Err bitreich.org 70 i- (when (member (elt s 0) (coerce *c-close-parens* 'list)) Err bitreich.org 70 i- (setf open nil) Err bitreich.org 70 i- (decf paren-counter) Err bitreich.org 70 i- (setf count (mod paren-counter 6))) Err bitreich.org 70 i- (if open Err bitreich.org 70 i- (format nil "~A" Err bitreich.org 70 i- (1+ count) s *css-background-class*) Err bitreich.org 70 i- (format nil "~A" Err bitreich.org 70 i- s))) Err bitreich.org 70 i- s)))) Err bitreich.org 70 i- (:word-ish Err bitreich.org 70 i- (lambda (type s) Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- (if (member s *c-reserved-words* :test #'string=) Err bitreich.org 70 i- (format nil "~A" s) Err bitreich.org 70 i- s))) Err bitreich.org 70 i- )) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-coloring-type :c "C" Err bitreich.org 70 i- :parent :basic-c Err bitreich.org 70 i- :transitions Err bitreich.org 70 i- ((:normal Err bitreich.org 70 i- ((scan #\#) Err bitreich.org 70 i- (set-mode :preprocessor Err bitreich.org 70 i- :until (scan-any '(#\return #\newline)))))) Err bitreich.org 70 i- :formatters Err bitreich.org 70 i- ((:preprocessor Err bitreich.org 70 i- (lambda (type s) Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- (format nil "~A" s))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *c++-reserved-words* Err bitreich.org 70 i- '("asm" "auto" "bool" "break" "case" Err bitreich.org 70 i- "catch" "char" "class" "const" "const_cast" Err bitreich.org 70 i- "continue" "default" "delete" "do" "double" Err bitreich.org 70 i- "dynamic_cast" "else" "enum" "explicit" "export" Err bitreich.org 70 i- "extern" "false" "float" "for" "friend" Err bitreich.org 70 i- "goto" "if" "inline" "int" "long" Err bitreich.org 70 i- "mutable" "namespace" "new" "operator" "private" Err bitreich.org 70 i- "protected" "public" "register" "reinterpret_cast" "return" Err bitreich.org 70 i- "short" "signed" "sizeof" "static" "static_cast" Err bitreich.org 70 i- "struct" "switch" "template" "this" "throw" Err bitreich.org 70 i- "true" "try" "typedef" "typeid" "typename" Err bitreich.org 70 i- "union" "unsigned" "using" "virtual" "void" Err bitreich.org 70 i- "volatile" "wchar_t" "while")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-coloring-type :c++ "C++" Err bitreich.org 70 i- :parent :c Err bitreich.org 70 i- :transitions Err bitreich.org 70 i- ((:normal Err bitreich.org 70 i- ((scan "//") Err bitreich.org 70 i- (set-mode :comment Err bitreich.org 70 i- :until (scan-any '(#\return #\newline)))))) Err bitreich.org 70 i- :formatters Err bitreich.org 70 i- ((:word-ish Err bitreich.org 70 i- (lambda (type s) Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- (if (member s *c++-reserved-words* :test #'string=) Err bitreich.org 70 i- (format nil "~A" Err bitreich.org 70 i- s) Err bitreich.org 70 i- s))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *java-reserved-words* Err bitreich.org 70 i- '("abstract" "boolean" "break" "byte" "case" Err bitreich.org 70 i- "catch" "char" "class" "const" "continue" Err bitreich.org 70 i- "default" "do" "double" "else" "extends" Err bitreich.org 70 i- "final" "finally" "float" "for" "goto" Err bitreich.org 70 i- "if" "implements" "import" "instanceof" "int" Err bitreich.org 70 i- "interface" "long" "native" "new" "package" Err bitreich.org 70 i- "private" "protected" "public" "return" "short" Err bitreich.org 70 i- "static" "strictfp" "super" "switch" "synchronized" Err bitreich.org 70 i- "this" "throw" "throws" "transient" "try" Err bitreich.org 70 i- "void" "volatile" "while")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-coloring-type :java "Java" Err bitreich.org 70 i- :parent :c++ Err bitreich.org 70 i- :formatters Err bitreich.org 70 i- ((:word-ish Err bitreich.org 70 i- (lambda (type s) Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- (if (member s *java-reserved-words* :test #'string=) Err bitreich.org 70 i- (format nil "~A" Err bitreich.org 70 i- s) Err bitreich.org 70 i- s))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(let ((terminate-next nil)) Err bitreich.org 70 i- (define-coloring-type :objective-c "Objective C" Err bitreich.org 70 i- :autodetect (lambda (text) (search "mac" text :test #'char=)) Err bitreich.org 70 i- :modes (:begin-message-send :end-message-send) Err bitreich.org 70 i- :transitions Err bitreich.org 70 i- ((:normal Err bitreich.org 70 i- ((scan #\[) Err bitreich.org 70 i- (set-mode :begin-message-send Err bitreich.org 70 i- :until (advance 1) Err bitreich.org 70 i- :advancing nil)) Err bitreich.org 70 i- ((scan #\]) Err bitreich.org 70 i- (set-mode :end-message-send Err bitreich.org 70 i- :until (advance 1) Err bitreich.org 70 i- :advancing nil)) Err bitreich.org 70 i- ((scan-any *c-begin-word*) Err bitreich.org 70 i- (set-mode :word-ish Err bitreich.org 70 i- :until (or Err bitreich.org 70 i- (and (peek-any '(#\:)) Err bitreich.org 70 i- (setf terminate-next t)) Err bitreich.org 70 i- (and terminate-next (progn Err bitreich.org 70 i- (setf terminate-next nil) Err bitreich.org 70 i- (advance 1))) Err bitreich.org 70 i- (scan-any *c-terminators*)) Err bitreich.org 70 i- :advancing nil))) Err bitreich.org 70 i- (:word-ish Err bitreich.org 70 i- #+nil Err bitreich.org 70 i- ((scan #\:) Err bitreich.org 70 i- (format t "hi~%") Err bitreich.org 70 i- (set-mode :word-ish :until (advance 1) :advancing nil) Err bitreich.org 70 i- (setf terminate-next t)))) Err bitreich.org 70 i- :parent :c++ Err bitreich.org 70 i- :formatter-variables ((is-keyword nil) (in-message-send nil)) Err bitreich.org 70 i- :formatters Err bitreich.org 70 i- ((:begin-message-send Err bitreich.org 70 i- (lambda (type s) Err bitreich.org 70 i- (setf is-keyword nil) Err bitreich.org 70 i- (setf in-message-send t) Err bitreich.org 70 i- (call-formatter (cons :paren-ish type) s))) Err bitreich.org 70 i- (:end-message-send Err bitreich.org 70 i- (lambda (type s) Err bitreich.org 70 i- (setf is-keyword nil) Err bitreich.org 70 i- (setf in-message-send nil) Err bitreich.org 70 i- (call-formatter (cons :paren-ish type) s))) Err bitreich.org 70 i- (:word-ish Err bitreich.org 70 i- (lambda (type s) Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- (prog1 Err bitreich.org 70 i- (let ((result (if (find-package :cocoa-lookup) Err bitreich.org 70 i- (funcall (symbol-function (intern "SYMBOL-LOOKUP" :cocoa-lookup)) Err bitreich.org 70 i- s)))) Err bitreich.org 70 i- (if result Err bitreich.org 70 i- (format nil "~A" Err bitreich.org 70 i- result s) Err bitreich.org 70 i- (if (member s *c-reserved-words* :test #'string=) Err bitreich.org 70 i- (format nil "~A" s) Err bitreich.org 70 i- (if in-message-send Err bitreich.org 70 i- (if is-keyword Err bitreich.org 70 i- (format nil "~A" s) Err bitreich.org 70 i- s) Err bitreich.org 70 i- s)))) Err bitreich.org 70 i- (setf is-keyword (not is-keyword)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;#!/usr/bin/clisp Err bitreich.org 70 i-;#+sbcl Err bitreich.org 70 i-;(require :asdf) Err bitreich.org 70 i-;(asdf:oos 'asdf:load-op :colorize) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-each-stream-line ((var stream) &body body) Err bitreich.org 70 i- (let ((eof (gensym)) Err bitreich.org 70 i- (eof-value (gensym)) Err bitreich.org 70 i- (strm (gensym))) Err bitreich.org 70 i- `(let ((,strm ,stream) Err bitreich.org 70 i- (,eof ',eof-value)) Err bitreich.org 70 i- (do ((,var (read-line ,strm nil ,eof) (read-line ,strm nil ,eof))) Err bitreich.org 70 i- ((eql ,var ,eof)) Err bitreich.org 70 i- ,@body)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun system (control-string &rest args) Err bitreich.org 70 i- "Interpolate ARGS into CONTROL-STRING as if by FORMAT, and Err bitreich.org 70 i-synchronously execute the result using a Bourne-compatible shell, with Err bitreich.org 70 i-output to *verbose-out*. Returns the shell's exit code." Err bitreich.org 70 i- (let ((command (apply #'format nil control-string args))) Err bitreich.org 70 i- (format t "; $ ~A~%" command) Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- (sb-impl::process-exit-code Err bitreich.org 70 i- (sb-ext:run-program Err bitreich.org 70 i- "/bin/sh" Err bitreich.org 70 i- (list "-c" command) Err bitreich.org 70 i- :input nil :output *standard-output*)) Err bitreich.org 70 i- #+(or cmucl scl) Err bitreich.org 70 i- (ext:process-exit-code Err bitreich.org 70 i- (ext:run-program Err bitreich.org 70 i- "/bin/sh" Err bitreich.org 70 i- (list "-c" command) Err bitreich.org 70 i- :input nil :output *verbose-out*)) Err bitreich.org 70 i- #+clisp ;XXX not exactly *verbose-out*, I know Err bitreich.org 70 i- (ext:run-shell-command command :output :terminal :wait t) Err bitreich.org 70 i- )) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun strcat (&rest strings) Err bitreich.org 70 i- (apply #'concatenate 'string strings)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun string-starts-with (start str) Err bitreich.org 70 i- (and (>= (length str) (length start)) Err bitreich.org 70 i- (string-equal start str :end2 (length start)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro string-append (outputstr &rest args) Err bitreich.org 70 i- `(setq ,outputstr (concatenate 'string ,outputstr ,@args))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +indent+ 0 Err bitreich.org 70 i- "Indentation used in the examples.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun texinfo->raw-lisp (code) Err bitreich.org 70 i- "Answer CODE with spurious Texinfo output removed. For use in Err bitreich.org 70 i-preprocessing output in a @lisp block before passing to colorize." Err bitreich.org 70 i- (decode-from-tt Err bitreich.org 70 i- (with-output-to-string (output) Err bitreich.org 70 i- (do* ((last-position 0) Err bitreich.org 70 i- (next-position Err bitreich.org 70 i- #0=(search #1="" code Err bitreich.org 70 i- :start2 last-position :test #'char-equal) Err bitreich.org 70 i- #0#)) Err bitreich.org 70 i- ((eq nil next-position) Err bitreich.org 70 i- (write-string code output :start last-position)) Err bitreich.org 70 i- (write-string code output :start last-position :end next-position) Err bitreich.org 70 i- (let ((end (search #2="" code Err bitreich.org 70 i- :start2 (+ next-position (length #1#)) Err bitreich.org 70 i- :test #'char-equal))) Err bitreich.org 70 i- (assert (integerp end) () Err bitreich.org 70 i- "Missing ~A tag in HTML for @lisp block~%~ Err bitreich.org 70 i- HTML contents of block:~%~A" #2# code) Err bitreich.org 70 i- (write-string code output Err bitreich.org 70 i- :start (+ next-position (length #1#)) Err bitreich.org 70 i- :end end) Err bitreich.org 70 i- (setf last-position (+ end (length #2#)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun process-file (from to) Err bitreich.org 70 i- (with-open-file (output to :direction :output :if-exists :error) Err bitreich.org 70 i- (with-open-file (input from :direction :input) Err bitreich.org 70 i- (let ((line-processor nil) Err bitreich.org 70 i- (piece-of-code '())) Err bitreich.org 70 i- (labels Err bitreich.org 70 i- ((process-line-inside-pre (line) Err bitreich.org 70 i- (cond ((string-starts-with "" line) Err bitreich.org 70 i- (with-input-from-string Err bitreich.org 70 i- (stream (colorize:html-colorization Err bitreich.org 70 i- :common-lisp Err bitreich.org 70 i- (texinfo->raw-lisp Err bitreich.org 70 i- (apply #'concatenate 'string Err bitreich.org 70 i- (nreverse piece-of-code))))) Err bitreich.org 70 i- (with-each-stream-line (cline stream) Err bitreich.org 70 i- (format output " ~A~%" cline))) Err bitreich.org 70 i- (write-line line output) Err bitreich.org 70 i- (setq piece-of-code '() Err bitreich.org 70 i- line-processor #'process-regular-line)) Err bitreich.org 70 i- (t (let ((to-append (subseq line +indent+))) Err bitreich.org 70 i- (push (if (string= "" to-append) Err bitreich.org 70 i- " " Err bitreich.org 70 i- to-append) piece-of-code) Err bitreich.org 70 i- (push (string #\Newline) piece-of-code))))) Err bitreich.org 70 i- (process-regular-line (line) Err bitreich.org 70 i- (let ((len (some (lambda (test-string) Err bitreich.org 70 i- (when (string-starts-with test-string line) Err bitreich.org 70 i- (length test-string))) Err bitreich.org 70 i- '("
"	Err	bitreich.org	70
i-                                 "
"))))	Err	bitreich.org	70
i-                 (cond (len	Err	bitreich.org	70
i-                         (setq line-processor #'process-line-inside-pre)	Err	bitreich.org	70
i-                         (write-string "
" output)	Err	bitreich.org	70
i-                         (push (subseq line (+ len +indent+)) piece-of-code)	Err	bitreich.org	70
i-                         (push (string #\Newline) piece-of-code))	Err	bitreich.org	70
i-                       (t (write-line line output))))))	Err	bitreich.org	70
i-          (setf line-processor #'process-regular-line)	Err	bitreich.org	70
i-          (with-each-stream-line (line input)	Err	bitreich.org	70
i-            (funcall line-processor line)))))))	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-(defun process-dir (dir)	Err	bitreich.org	70
i-  (dolist (html-file (directory dir))	Err	bitreich.org	70
i-    (let* ((name (namestring html-file))	Err	bitreich.org	70
i-           (temp-name (strcat name ".temp")))	Err	bitreich.org	70
i-      (process-file name temp-name)	Err	bitreich.org	70
i-      (system "mv ~A ~A" temp-name name))))	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-;; (go "/tmp/doc/manual/html_node/*.html")	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-#+clisp	Err	bitreich.org	70
i-(progn	Err	bitreich.org	70
i-  (assert (first ext:*args*))	Err	bitreich.org	70
i-  (process-dir (first ext:*args*)))	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-#+sbcl	Err	bitreich.org	70
i-(progn	Err	bitreich.org	70
i-  (assert (second sb-ext:*posix-argv*))	Err	bitreich.org	70
i-  (process-dir (second sb-ext:*posix-argv*))	Err	bitreich.org	70
i-  (sb-ext:quit))	Err	bitreich.org	70
1diff --git a/3rdparties/software/cffi_0.20.0/doc/gendocs.sh b/3rdparties/software/cffi_0.20.0/doc/gendocs.sh	/scm/clic/file/3rdparties/software/cffi_0.20.0/doc/gendocs.sh.gph	bitreich.org	70
i@@ -1,313 +0,0 @@	Err	bitreich.org	70
i-#!/bin/sh	Err	bitreich.org	70
i-# gendocs.sh -- generate a GNU manual in many formats.  This script is	Err	bitreich.org	70
i-#   mentioned in maintain.texi.  See the help message below for usage details.	Err	bitreich.org	70
i-# $Id: gendocs.sh,v 1.16 2005/05/15 00:00:08 karl Exp $	Err	bitreich.org	70
i-# 	Err	bitreich.org	70
i-# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.	Err	bitreich.org	70
i-#	Err	bitreich.org	70
i-# This program is free software; you can redistribute it and/or modify	Err	bitreich.org	70
i-# it under the terms of the GNU General Public License as published by	Err	bitreich.org	70
i-# the Free Software Foundation; either version 2, or (at your option)	Err	bitreich.org	70
i-# any later version.	Err	bitreich.org	70
i-#	Err	bitreich.org	70
i-# This program is distributed in the hope that it will be useful,	Err	bitreich.org	70
i-# but WITHOUT ANY WARRANTY; without even the implied warranty of	Err	bitreich.org	70
i-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the	Err	bitreich.org	70
i-# GNU General Public License for more details.	Err	bitreich.org	70
i-#	Err	bitreich.org	70
i-# You should have received a copy of the GNU General Public License	Err	bitreich.org	70
i-# along with this program; if not, you can either send email to this	Err	bitreich.org	70
i-# program's maintainer or write to: The Free Software Foundation,	Err	bitreich.org	70
i-# Inc.; 51 Franklin Street, Fifth Floor; Boston, MA 02110-1301, USA.	Err	bitreich.org	70
i-#	Err	bitreich.org	70
i-# Original author: Mohit Agarwal.	Err	bitreich.org	70
i-# Send bug reports and any other correspondence to bug-texinfo@gnu.org.	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-#set -e	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-prog="`basename \"$0\"`"	Err	bitreich.org	70
i-srcdir=`pwd`	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-scripturl="https://github.com/cffi/cffi/blob/master/doc/gendocs.sh"	Err	bitreich.org	70
i-templateurl="http://savannah.gnu.org/cgi-bin/viewcvs/texinfo/texinfo/util/gendocs_template"	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-: ${MAKEINFO="makeinfo"}	Err	bitreich.org	70
i-: ${TEXI2DVI="texi2dvi -t @finalout"}	Err	bitreich.org	70
i-: ${DVIPS="dvips"}	Err	bitreich.org	70
i-: ${DOCBOOK2TXT="docbook2txt"}	Err	bitreich.org	70
i-: ${DOCBOOK2HTML="docbook2html"}	Err	bitreich.org	70
i-: ${DOCBOOK2PDF="docbook2pdf"}	Err	bitreich.org	70
i-: ${DOCBOOK2PS="docbook2ps"}	Err	bitreich.org	70
i-: ${GENDOCS_TEMPLATE_DIR="."}	Err	bitreich.org	70
i-unset CDPATH	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-rcs_revision='$Revision: 1.16 $'	Err	bitreich.org	70
i-rcs_version=`set - $rcs_revision; echo $2`	Err	bitreich.org	70
i-program=`echo $0 | sed -e 's!.*/!!'`	Err	bitreich.org	70
i-version="gendocs.sh $rcs_version	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-Copyright (C) 2005 Free Software Foundation, Inc.	Err	bitreich.org	70
i-There is NO warranty.  You may redistribute this software	Err	bitreich.org	70
i-under the terms of the GNU General Public License.	Err	bitreich.org	70
i-For more information about these matters, see the files named COPYING."	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-usage="Usage: $prog [OPTION]... PACKAGE MANUAL-TITLE	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-Generate various output formats from PACKAGE.texinfo (or .texi or .txi) source.	Err	bitreich.org	70
i-See the GNU Maintainers document for a more extensive discussion:	Err	bitreich.org	70
i-  http://www.gnu.org/prep/maintain_toc.html	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-Options:	Err	bitreich.org	70
i-  -o OUTDIR   write files into OUTDIR, instead of manual/.	Err	bitreich.org	70
i-  --docbook   convert to DocBook too (xml, txt, html, pdf and ps).	Err	bitreich.org	70
i-  --html ARG  pass indicated ARG to makeinfo for HTML targets.	Err	bitreich.org	70
i-  --help      display this help and exit successfully.	Err	bitreich.org	70
i-  --version   display version information and exit successfully.	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-Simple example: $prog emacs \"GNU Emacs Manual\"	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-Typical sequence:	Err	bitreich.org	70
i-  cd YOURPACKAGESOURCE/doc	Err	bitreich.org	70
i-  wget \"$scripturl\"	Err	bitreich.org	70
i-  wget \"$templateurl\"	Err	bitreich.org	70
i-  $prog YOURMANUAL \"GNU YOURMANUAL - One-line description\"	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-Output will be in a new subdirectory \"manual\" (by default, use -o OUTDIR	Err	bitreich.org	70
i-to override).  Move all the new files into your web CVS tree, as	Err	bitreich.org	70
i-explained in the Web Pages node of maintain.texi.	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-MANUAL-TITLE is included as part of the HTML  of the overall	Err	bitreich.org	70
i-manual/index.html file.  It should include the name of the package being	Err	bitreich.org	70
i-documented.  manual/index.html is created by substitution from the file	Err	bitreich.org	70
i-$GENDOCS_TEMPLATE_DIR/gendocs_template.  (Feel free to modify the	Err	bitreich.org	70
i-generic template for your own purposes.)	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-If you have several manuals, you'll need to run this script several	Err	bitreich.org	70
i-times with different YOURMANUAL values, specifying a different output	Err	bitreich.org	70
i-directory with -o each time.  Then write (by hand) an overall index.html	Err	bitreich.org	70
i-with links to them all.	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-You can set the environment variables MAKEINFO, TEXI2DVI, and DVIPS to	Err	bitreich.org	70
i-control the programs that get executed, and GENDOCS_TEMPLATE_DIR to	Err	bitreich.org	70
i-control where the gendocs_template file is looked for.	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-Email bug reports or enhancement requests to bug-texinfo@gnu.org.	Err	bitreich.org	70
i-"	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-calcsize()	Err	bitreich.org	70
i-{	Err	bitreich.org	70
i-  size="`ls -ksl $1 | awk '{print $1}'`"	Err	bitreich.org	70
i-  echo $size	Err	bitreich.org	70
i-}	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-outdir=manual	Err	bitreich.org	70
i-html=	Err	bitreich.org	70
i-PACKAGE=	Err	bitreich.org	70
i-MANUAL_TITLE=	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-while test $# -gt 0; do	Err	bitreich.org	70
i-  case $1 in	Err	bitreich.org	70
i-    --help) echo "$usage"; exit 0;;	Err	bitreich.org	70
i-    --version) echo "$version"; exit 0;;	Err	bitreich.org	70
i-    -o) shift; outdir=$1;;	Err	bitreich.org	70
i-    --docbook) docbook=yes;;	Err	bitreich.org	70
i-    --html) shift; html=$1;;	Err	bitreich.org	70
i-    -*)	Err	bitreich.org	70
i-      echo "$0: Unknown or ambiguous option \`$1'." >&2	Err	bitreich.org	70
i-      echo "$0: Try \`--help' for more information." >&2	Err	bitreich.org	70
i-      exit 1;;	Err	bitreich.org	70
i-    *)	Err	bitreich.org	70
i-      if test -z "$PACKAGE"; then	Err	bitreich.org	70
i-        PACKAGE=$1	Err	bitreich.org	70
i-      elif test -z "$MANUAL_TITLE"; then	Err	bitreich.org	70
i-        MANUAL_TITLE=$1	Err	bitreich.org	70
i-      else	Err	bitreich.org	70
i-        echo "$0: extra non-option argument \`$1'." >&2	Err	bitreich.org	70
i-        exit 1	Err	bitreich.org	70
i-      fi;;	Err	bitreich.org	70
i-  esac	Err	bitreich.org	70
i-  shift	Err	bitreich.org	70
i-done	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-if test -s $srcdir/$PACKAGE.texinfo; then	Err	bitreich.org	70
i-  srcfile=$srcdir/$PACKAGE.texinfo	Err	bitreich.org	70
i-elif test -s $srcdir/$PACKAGE.texi; then	Err	bitreich.org	70
i-  srcfile=$srcdir/$PACKAGE.texi	Err	bitreich.org	70
i-elif test -s $srcdir/$PACKAGE.txi; then	Err	bitreich.org	70
i-  srcfile=$srcdir/$PACKAGE.txi	Err	bitreich.org	70
i-else	Err	bitreich.org	70
i-  echo "$0: cannot find .texinfo or .texi or .txi for $PACKAGE in $srcdir." >&2	Err	bitreich.org	70
i-  exit 1	Err	bitreich.org	70
i-fi	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-if test ! -r $GENDOCS_TEMPLATE_DIR/gendocs_template; then	Err	bitreich.org	70
i-  echo "$0: cannot read $GENDOCS_TEMPLATE_DIR/gendocs_template." >&2	Err	bitreich.org	70
i-  echo "$0: it is available from $templateurl." >&2	Err	bitreich.org	70
i-  exit 1	Err	bitreich.org	70
i-fi	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-echo Generating output formats for $srcfile	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-cmd="${MAKEINFO} -o $PACKAGE.info $srcfile"	Err	bitreich.org	70
i-echo "Generating info files... ($cmd)"	Err	bitreich.org	70
i-eval $cmd	Err	bitreich.org	70
i-install-info $PACKAGE.info dir	Err	bitreich.org	70
i-mkdir -p $outdir/	Err	bitreich.org	70
i-tar czf $outdir/$PACKAGE.info.tar.gz $PACKAGE.info*	Err	bitreich.org	70
i-info_tgz_size="`calcsize $outdir/$PACKAGE.info.tar.gz`"	Err	bitreich.org	70
i-# do not mv the info files, there's no point in having them available	Err	bitreich.org	70
i-# separately on the web.	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-cmd="${TEXI2DVI} $srcfile"	Err	bitreich.org	70
i-echo "Generating dvi ... ($cmd)"	Err	bitreich.org	70
i-eval $cmd	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-# now, before we compress dvi:	Err	bitreich.org	70
i-echo Generating postscript...	Err	bitreich.org	70
i-${DVIPS} $PACKAGE -o	Err	bitreich.org	70
i-gzip -f -9 $PACKAGE.ps	Err	bitreich.org	70
i-ps_gz_size="`calcsize $PACKAGE.ps.gz`"	Err	bitreich.org	70
i-mv $PACKAGE.ps.gz $outdir/	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-# compress/finish dvi:	Err	bitreich.org	70
i-gzip -f -9 $PACKAGE.dvi	Err	bitreich.org	70
i-dvi_gz_size="`calcsize $PACKAGE.dvi.gz`"	Err	bitreich.org	70
i-mv $PACKAGE.dvi.gz $outdir/	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-cmd="${TEXI2DVI} --pdf $srcfile"	Err	bitreich.org	70
i-echo "Generating pdf ... ($cmd)"	Err	bitreich.org	70
i-eval $cmd	Err	bitreich.org	70
i-pdf_size="`calcsize $PACKAGE.pdf`"	Err	bitreich.org	70
i-mv $PACKAGE.pdf $outdir/	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-cmd="${MAKEINFO} -o $PACKAGE.txt --no-split --no-headers $srcfile"	Err	bitreich.org	70
i-echo "Generating ASCII... ($cmd)"	Err	bitreich.org	70
i-eval $cmd	Err	bitreich.org	70
i-ascii_size="`calcsize $PACKAGE.txt`"	Err	bitreich.org	70
i-gzip -f -9 -c $PACKAGE.txt >$outdir/$PACKAGE.txt.gz	Err	bitreich.org	70
i-ascii_gz_size="`calcsize $outdir/$PACKAGE.txt.gz`"	Err	bitreich.org	70
i-mv $PACKAGE.txt $outdir/	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-# Print a SED expression that will translate references to MANUAL to	Err	bitreich.org	70
i-# the proper page on gnu.org.  This is a horrible shell hack done	Err	bitreich.org	70
i-# because \| in sed regexps is a GNU extension.	Err	bitreich.org	70
i-monognuorg () {	Err	bitreich.org	70
i-    case "$1" in	Err	bitreich.org	70
i-        libtool) echo "s!$1.html!http://www.gnu.org/software/$1/manual.html!" ;;	Err	bitreich.org	70
i-        *) echo "s!$1.html!http://www.gnu.org/software/$1/manual/html_mono/$1.html!" ;;	Err	bitreich.org	70
i-    esac	Err	bitreich.org	70
i-}	Err	bitreich.org	70
i-polygnuorg () {	Err	bitreich.org	70
i-    case "$1" in	Err	bitreich.org	70
i-        libtool) echo 's!\.\./'"$1/.*\.html!http://www.gnu.org/software/$1/manual.html!" ;;	Err	bitreich.org	70
i-        *) echo 's!\.\./'"$1!http://www.gnu.org/software/$1/manual/html_node!" ;;	Err	bitreich.org	70
i-    esac	Err	bitreich.org	70
i-}	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-cmd="${MAKEINFO} --no-split --html -o $PACKAGE.html $html $srcfile"	Err	bitreich.org	70
i-echo "Generating monolithic html... ($cmd)"	Err	bitreich.org	70
i-rm -rf $PACKAGE.html  # in case a directory is left over	Err	bitreich.org	70
i-eval $cmd	Err	bitreich.org	70
i-sbcl --no-sysinit --no-userinit --load colorize-lisp-examples.lisp $PACKAGE.html	Err	bitreich.org	70
i-#fix libc/libtool xrefs	Err	bitreich.org	70
i-sed -e `monognuorg libc` -e `monognuorg libtool` $PACKAGE.html >$outdir/$PACKAGE.html	Err	bitreich.org	70
i-rm $PACKAGE.html	Err	bitreich.org	70
i-html_mono_size="`calcsize $outdir/$PACKAGE.html`"	Err	bitreich.org	70
i-gzip -f -9 -c $outdir/$PACKAGE.html >$outdir/$PACKAGE.html.gz	Err	bitreich.org	70
i-html_mono_gz_size="`calcsize $outdir/$PACKAGE.html.gz`"	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-cmd="${MAKEINFO} --html -o $PACKAGE.html $html $srcfile"	Err	bitreich.org	70
i-echo "Generating html by node... ($cmd)"	Err	bitreich.org	70
i-eval $cmd	Err	bitreich.org	70
i-split_html_dir=$PACKAGE.html	Err	bitreich.org	70
i-sbcl --no-userinit --no-sysinit --load colorize-lisp-examples.lisp "${split_html_dir}"/\*.html	Err	bitreich.org	70
i-(	Err	bitreich.org	70
i-  cd ${split_html_dir} || exit 1	Err	bitreich.org	70
i-  #fix libc xrefs	Err	bitreich.org	70
i-  for broken_file in *.html; do	Err	bitreich.org	70
i-      sed -e `polygnuorg libc` -e `polygnuorg libtool` "$broken_file" > "$broken_file".temp	Err	bitreich.org	70
i-      mv -f "$broken_file".temp "$broken_file"	Err	bitreich.org	70
i-  done	Err	bitreich.org	70
i-  tar -czf ../$outdir/${PACKAGE}.html_node.tar.gz -- *.html	Err	bitreich.org	70
i-)	Err	bitreich.org	70
i-html_node_tgz_size="`calcsize $outdir/${PACKAGE}.html_node.tar.gz`"	Err	bitreich.org	70
i-rm -f $outdir/html_node/*.html	Err	bitreich.org	70
i-mkdir -p $outdir/html_node/	Err	bitreich.org	70
i-mv ${split_html_dir}/*.html $outdir/html_node/	Err	bitreich.org	70
i-rmdir ${split_html_dir}	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-echo Making .tar.gz for sources...	Err	bitreich.org	70
i-srcfiles=`ls *.texinfo *.texi *.txi *.eps 2>/dev/null`	Err	bitreich.org	70
i-tar cvzfh $outdir/$PACKAGE.texi.tar.gz $srcfiles	Err	bitreich.org	70
i-texi_tgz_size="`calcsize $outdir/$PACKAGE.texi.tar.gz`"	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-if test -n "$docbook"; then	Err	bitreich.org	70
i-  cmd="${MAKEINFO} -o - --docbook $srcfile > ${srcdir}/$PACKAGE-db.xml"	Err	bitreich.org	70
i-  echo "Generating docbook XML... $(cmd)"	Err	bitreich.org	70
i-  eval $cmd	Err	bitreich.org	70
i-  docbook_xml_size="`calcsize $PACKAGE-db.xml`"	Err	bitreich.org	70
i-  gzip -f -9 -c $PACKAGE-db.xml >$outdir/$PACKAGE-db.xml.gz	Err	bitreich.org	70
i-  docbook_xml_gz_size="`calcsize $outdir/$PACKAGE-db.xml.gz`"	Err	bitreich.org	70
i-  mv $PACKAGE-db.xml $outdir/	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-  cmd="${DOCBOOK2HTML} -o $split_html_db_dir ${outdir}/$PACKAGE-db.xml"	Err	bitreich.org	70
i-  echo "Generating docbook HTML... ($cmd)"	Err	bitreich.org	70
i-  eval $cmd	Err	bitreich.org	70
i-  split_html_db_dir=html_node_db	Err	bitreich.org	70
i-  (	Err	bitreich.org	70
i-    cd ${split_html_db_dir} || exit 1	Err	bitreich.org	70
i-    tar -czf ../$outdir/${PACKAGE}.html_node_db.tar.gz -- *.html	Err	bitreich.org	70
i-  )	Err	bitreich.org	70
i-  html_node_db_tgz_size="`calcsize $outdir/${PACKAGE}.html_node_db.tar.gz`"	Err	bitreich.org	70
i-  rm -f $outdir/html_node_db/*.html	Err	bitreich.org	70
i-  mkdir -p $outdir/html_node_db	Err	bitreich.org	70
i-  mv ${split_html_db_dir}/*.html $outdir/html_node_db/	Err	bitreich.org	70
i-  rmdir ${split_html_db_dir}	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-  cmd="${DOCBOOK2TXT} ${outdir}/$PACKAGE-db.xml"	Err	bitreich.org	70
i-  echo "Generating docbook ASCII... ($cmd)"	Err	bitreich.org	70
i-  eval $cmd	Err	bitreich.org	70
i-  docbook_ascii_size="`calcsize $PACKAGE-db.txt`"	Err	bitreich.org	70
i-  mv $PACKAGE-db.txt $outdir/	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-  cmd="${DOCBOOK2PS} ${outdir}/$PACKAGE-db.xml"	Err	bitreich.org	70
i-  echo "Generating docbook PS... $(cmd)"	Err	bitreich.org	70
i-  eval $cmd	Err	bitreich.org	70
i-  gzip -f -9 -c $PACKAGE-db.ps >$outdir/$PACKAGE-db.ps.gz	Err	bitreich.org	70
i-  docbook_ps_gz_size="`calcsize $outdir/$PACKAGE-db.ps.gz`"	Err	bitreich.org	70
i-  mv $PACKAGE-db.ps $outdir/	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-  cmd="${DOCBOOK2PDF} ${outdir}/$PACKAGE-db.xml"	Err	bitreich.org	70
i-  echo "Generating docbook PDF... ($cmd)"	Err	bitreich.org	70
i-  eval $cmd	Err	bitreich.org	70
i-  docbook_pdf_size="`calcsize $PACKAGE-db.pdf`"	Err	bitreich.org	70
i-  mv $PACKAGE-db.pdf $outdir/	Err	bitreich.org	70
i-fi	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-echo Writing index file...	Err	bitreich.org	70
i-curdate="`date '+%B %d, %Y'`"	Err	bitreich.org	70
i-sed \	Err	bitreich.org	70
i-   -e "s!%%TITLE%%!$MANUAL_TITLE!g" \	Err	bitreich.org	70
i-   -e "s!%%DATE%%!$curdate!g" \	Err	bitreich.org	70
i-   -e "s!%%PACKAGE%%!$PACKAGE!g" \	Err	bitreich.org	70
i-   -e "s!%%HTML_MONO_SIZE%%!$html_mono_size!g" \	Err	bitreich.org	70
i-   -e "s!%%HTML_MONO_GZ_SIZE%%!$html_mono_gz_size!g" \	Err	bitreich.org	70
i-   -e "s!%%HTML_NODE_TGZ_SIZE%%!$html_node_tgz_size!g" \	Err	bitreich.org	70
i-   -e "s!%%INFO_TGZ_SIZE%%!$info_tgz_size!g" \	Err	bitreich.org	70
i-   -e "s!%%DVI_GZ_SIZE%%!$dvi_gz_size!g" \	Err	bitreich.org	70
i-   -e "s!%%PDF_SIZE%%!$pdf_size!g" \	Err	bitreich.org	70
i-   -e "s!%%PS_GZ_SIZE%%!$ps_gz_size!g" \	Err	bitreich.org	70
i-   -e "s!%%ASCII_SIZE%%!$ascii_size!g" \	Err	bitreich.org	70
i-   -e "s!%%ASCII_GZ_SIZE%%!$ascii_gz_size!g" \	Err	bitreich.org	70
i-   -e "s!%%TEXI_TGZ_SIZE%%!$texi_tgz_size!g" \	Err	bitreich.org	70
i-   -e "s!%%DOCBOOK_HTML_NODE_TGZ_SIZE%%!$html_node_db_tgz_size!g" \	Err	bitreich.org	70
i-   -e "s!%%DOCBOOK_ASCII_SIZE%%!$docbook_ascii_size!g" \	Err	bitreich.org	70
i-   -e "s!%%DOCBOOK_PS_GZ_SIZE%%!$docbook_ps_gz_size!g" \	Err	bitreich.org	70
i-   -e "s!%%DOCBOOK_PDF_SIZE%%!$docbook_pdf_size!g" \	Err	bitreich.org	70
i-   -e "s!%%DOCBOOK_XML_SIZE%%!$docbook_xml_size!g" \	Err	bitreich.org	70
i-   -e "s!%%DOCBOOK_XML_GZ_SIZE%%!$docbook_xml_gz_size!g" \	Err	bitreich.org	70
i-   -e "s,%%SCRIPTURL%%,$scripturl,g" \	Err	bitreich.org	70
i-   -e "s!%%SCRIPTNAME%%!$prog!g" \	Err	bitreich.org	70
i-$GENDOCS_TEMPLATE_DIR/gendocs_template >$outdir/index.html	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-echo "Done!  See $outdir/ subdirectory for new files."	Err	bitreich.org	70
1diff --git a/3rdparties/software/cffi_0.20.0/doc/gendocs_template b/3rdparties/software/cffi_0.20.0/doc/gendocs_template	/scm/clic/file/3rdparties/software/cffi_0.20.0/doc/gendocs_template.gph	bitreich.org	70
i@@ -1,259 +0,0 @@	Err	bitreich.org	70
i-<?xml version="1.0" encoding="utf-8" ?>	Err	bitreich.org	70
i-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"	Err	bitreich.org	70
i-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">	Err	bitreich.org	70
i-<!-- $Id: gendocs_template,v 1.7 2005/05/15 00:00:08 karl Exp $ -->	Err	bitreich.org	70
i-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-<!--	Err	bitreich.org	70
i-	Err	bitreich.org	70
i- This template was adapted from Texinfo:	Err	bitreich.org	70
i- http://savannah.gnu.org/cgi-bin/viewcvs/texinfo/texinfo/util/gendocs_template	Err	bitreich.org	70
i-	Err	bitreich.org	70
i--->	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-<head>	Err	bitreich.org	70
i-<title>%%TITLE%%	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-

%%TITLE%%

Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-
last updated %%DATE%%
Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-

This document is available in the following formats:

Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-

(This page was generated by the %%SCRIPTNAME%% Err bitreich.org 70 i-script.)

Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/doc/mem-vector.txt b/3rdparties/software/cffi_0.20.0/doc/mem-vector.txt /scm/clic/file/3rdparties/software/cffi_0.20.0/doc/mem-vector.txt.gph bitreich.org 70 i@@ -1,75 +0,0 @@ Err bitreich.org 70 i- Err bitreich.org 70 i-# Block Memory Operations Err bitreich.org 70 i- Err bitreich.org 70 i-Function: mem-fill ptr type count value &optional (offset 0) Err bitreich.org 70 i- Err bitreich.org 70 i-Fill COUNT objects of TYPE, starting at PTR plus offset, with VALUE. Err bitreich.org 70 i- Err bitreich.org 70 i-;; Equivalent to (but possibly more efficient than): Err bitreich.org 70 i-(loop for i below count Err bitreich.org 70 i- for off from offset by (%foreign-type-size type) Err bitreich.org 70 i- do (setf (%mem-ref ptr type off) value)) Err bitreich.org 70 i- Err bitreich.org 70 i-Function: mem-read-vector vector ptr type count &optional (offset 0) Err bitreich.org 70 i- Err bitreich.org 70 i-Copy COUNT objects of TYPE from foreign memory at PTR plus OFFSET into Err bitreich.org 70 i-VECTOR. If VECTOR is not large enough to contain COUNT objects, it Err bitreich.org 70 i-will copy as many objects as necessary to fill the vector. The Err bitreich.org 70 i-results are undefined if the foreign memory block is not large enough Err bitreich.org 70 i-to supply the data to copy. Err bitreich.org 70 i- Err bitreich.org 70 i-TYPE must be a built-in foreign type (integer, float, double, or Err bitreich.org 70 i-pointer). Err bitreich.org 70 i- Err bitreich.org 70 i-Returns the number of objects copied. Err bitreich.org 70 i- Err bitreich.org 70 i-;; Equivalent to (but possibly more efficient than): Err bitreich.org 70 i-(loop for i below (min count (length vector)) Err bitreich.org 70 i- for off from offset by (%foreign-type-size type) Err bitreich.org 70 i- do (setf (aref vector i) (%mem-ref ptr type off)) Err bitreich.org 70 i- finally (return i)) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Function: mem-read-c-string string ptr &optional (offset 0) Err bitreich.org 70 i- Err bitreich.org 70 i-Copy a null-terminated C string from PTR plus OFFSET into STRING, a Err bitreich.org 70 i-Lisp string. If STRING is not large enough to contain the data at PTR Err bitreich.org 70 i-it will be truncated. Err bitreich.org 70 i- Err bitreich.org 70 i-Returns the number of characters copied into STRING. Err bitreich.org 70 i- Err bitreich.org 70 i-;; Equivalent to (but possibly more efficient than): Err bitreich.org 70 i-(loop for i below (length string) Err bitreich.org 70 i- for off from offset Err bitreich.org 70 i- for char = (%mem-ref ptr :char off) Err bitreich.org 70 i- until (zerop char) Err bitreich.org 70 i- do (setf (char string i) char) Err bitreich.org 70 i- finally (return i)) Err bitreich.org 70 i- Err bitreich.org 70 i-Function: mem-write-vector vector ptr type &optional Err bitreich.org 70 i- (count (length vector)) (offset 0) Err bitreich.org 70 i- Err bitreich.org 70 i-Copy COUNT objects from VECTOR into objects of TYPE in foreign memory, Err bitreich.org 70 i-starting at PTR plus OFFSET. The results are undefined if PTR does Err bitreich.org 70 i-not point to a memory block large enough to hold the data copied. Err bitreich.org 70 i- Err bitreich.org 70 i-TYPE must be a built-in type (integer, float, double, or pointer). Err bitreich.org 70 i- Err bitreich.org 70 i-Returns the number of objects copied from VECTOR to PTR. Err bitreich.org 70 i- Err bitreich.org 70 i-;; Equivalent to (but possibly more efficient than): Err bitreich.org 70 i-(loop for i below count Err bitreich.org 70 i- for off from offset by (%foreign-type-size type) Err bitreich.org 70 i- do (setf (%mem-ref ptr type off) (aref vector i)) Err bitreich.org 70 i- finally (return i)) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Function: mem-write-c-string string ptr &optional (offset 0) Err bitreich.org 70 i- Err bitreich.org 70 i-Copy the characters from a Lisp STRING to PTR plus OFFSET, adding a Err bitreich.org 70 i-final null terminator at the end. The results are undefined if the Err bitreich.org 70 i-memory at PTR is not large enough to accomodate the data. Err bitreich.org 70 i- Err bitreich.org 70 i-This interface is currently equivalent to MEM-WRITE-VECTOR with a TYPE Err bitreich.org 70 i-of :CHAR, but will be useful when proper support for Unicode strings Err bitreich.org 70 i-is implemented. Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/doc/shareable-vectors.txt b/3rdparties/software/cffi_0.20.0/doc/shareable-vectors.txt /scm/clic/file/3rdparties/software/cffi_0.20.0/doc/shareable-vectors.txt.gph bitreich.org 70 i@@ -1,44 +0,0 @@ Err bitreich.org 70 i- Err bitreich.org 70 i-# Shareable Byte Vectors Err bitreich.org 70 i- Err bitreich.org 70 i-Function: make-shareable-byte-vector size Err bitreich.org 70 i- Err bitreich.org 70 i-Create a vector of element type (UNSIGNED-BYTE 8) suitable for passing Err bitreich.org 70 i-to WITH-POINTER-TO-VECTOR-DATA. Err bitreich.org 70 i- Err bitreich.org 70 i-;; Minimal implementation: Err bitreich.org 70 i-(defun make-shareable-byte-vector (size) Err bitreich.org 70 i- (make-array size :element-type '(unsigned-byte 8))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Macro: with-pointer-to-vector-data (ptr-var vector) &body body Err bitreich.org 70 i- Err bitreich.org 70 i-Bind PTR-VAR to a pointer to the data contained in a shareable byte Err bitreich.org 70 i-vector. Err bitreich.org 70 i- Err bitreich.org 70 i-VECTOR must be a shareable vector created by MAKE-SHAREABLE-BYTE-VECTOR. Err bitreich.org 70 i- Err bitreich.org 70 i-PTR-VAR may point directly into the Lisp vector data, or it may point Err bitreich.org 70 i-to a temporary block of foreign memory which will be copied to and Err bitreich.org 70 i-from VECTOR. Err bitreich.org 70 i- Err bitreich.org 70 i-Both the pointer object in PTR-VAR and the memory it points to have Err bitreich.org 70 i-dynamic extent. The results are undefined if foreign code attempts to Err bitreich.org 70 i-access this memory outside this dynamic contour. Err bitreich.org 70 i- Err bitreich.org 70 i-The implementation must guarantee the memory pointed to by PTR-VAR Err bitreich.org 70 i-will not be moved during the dynamic contour of this operator, either Err bitreich.org 70 i-by creating the vector in a static area or temporarily disabling the Err bitreich.org 70 i-garbage collector. Err bitreich.org 70 i- Err bitreich.org 70 i-;; Minimal (copying) implementation: Err bitreich.org 70 i-(defmacro with-pointer-to-vector-data ((ptr-var vector) &body body) Err bitreich.org 70 i- (let ((vector-var (gensym)) Err bitreich.org 70 i- (size-var (gensym))) Err bitreich.org 70 i- `(let* ((,vector-var ,vector) Err bitreich.org 70 i- (,size-var (length ,vector-var))) Err bitreich.org 70 i- (with-foreign-ptr (,ptr-var ,size-var) Err bitreich.org 70 i- (mem-write-vector ,vector-var ,ptr :uint8) Err bitreich.org 70 i- (prog1 Err bitreich.org 70 i- (progn ,@body) Err bitreich.org 70 i- (mem-read-vector ,vector-var ,ptr-var :uint8 ,size-var)))))) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/doc/style.css b/3rdparties/software/cffi_0.20.0/doc/style.css /scm/clic/file/3rdparties/software/cffi_0.20.0/doc/style.css.gph bitreich.org 70 i@@ -1,48 +0,0 @@ Err bitreich.org 70 i-body {font-family: Georgia, serif; Err bitreich.org 70 i- line-height: 1.3; Err bitreich.org 70 i- padding-left: 5em; padding-right: 1em; Err bitreich.org 70 i- padding-bottom: 1em; max-width: 60em;} Err bitreich.org 70 i-table {border-collapse: collapse} Err bitreich.org 70 i-span.roman { font-family: century schoolbook, serif; font-weight: normal; } Err bitreich.org 70 i-h1, h2, h3, h4, h5, h6 {font-family: Helvetica, sans-serif} Err bitreich.org 70 i-h4 { margin-top: 2.5em; } Err bitreich.org 70 i-dfn {font-family: inherit; font-variant: italic; font-weight: bolder } Err bitreich.org 70 i-kbd {font-family: monospace; text-decoration: underline} Err bitreich.org 70 i-/*var {font-family: Helvetica, sans-serif; font-variant: slanted}*/ Err bitreich.org 70 i-var {font-variant: slanted;} Err bitreich.org 70 i-td {padding-right: 1em; padding-left: 1em} Err bitreich.org 70 i-sub {font-size: smaller} Err bitreich.org 70 i-.node {padding: 0; margin: 0} Err bitreich.org 70 i- Err bitreich.org 70 i-pre.lisp { font-family: monospace; Err bitreich.org 70 i- background-color: #F4F4F4; border: 1px solid #AAA; Err bitreich.org 70 i- padding-top: 0.5em; padding-bottom: 0.5em; } Err bitreich.org 70 i- Err bitreich.org 70 i-/* coloring */ Err bitreich.org 70 i- Err bitreich.org 70 i-.lisp-bg { background-color: #F4F4F4 ; color: black; } Err bitreich.org 70 i-.lisp-bg:hover { background-color: #F4F4F4 ; color: black; } Err bitreich.org 70 i- Err bitreich.org 70 i-.symbol { font-weight: bold; color: #770055; background-color : transparent; border: 0px; margin: 0px;} Err bitreich.org 70 i-a.symbol:link { font-weight: bold; color : #229955; background-color : transparent; text-decoration: none; border: 0px; margin: 0px; } Err bitreich.org 70 i-a.symbol:active { font-weight: bold; color : #229955; background-color : transparent; text-decoration: none; border: 0px; margin: 0px; } Err bitreich.org 70 i-a.symbol:visited { font-weight: bold; color : #229955; background-color : transparent; text-decoration: none; border: 0px; margin: 0px; } Err bitreich.org 70 i-a.symbol:hover { font-weight: bold; color : #229955; background-color : transparent; text-decoration: none; border: 0px; margin: 0px; } Err bitreich.org 70 i-.special { font-weight: bold; color: #FF5000; background-color: inherit; } Err bitreich.org 70 i-.keyword { font-weight: bold; color: #770000; background-color: inherit; } Err bitreich.org 70 i-.comment { font-weight: normal; color: #007777; background-color: inherit; } Err bitreich.org 70 i-.string { font-weight: bold; color: #777777; background-color: inherit; } Err bitreich.org 70 i-.character { font-weight: bold; color: #0055AA; background-color: inherit; } Err bitreich.org 70 i-.syntaxerror { font-weight: bold; color: #FF0000; background-color: inherit; } Err bitreich.org 70 i-span.paren1 { font-weight: bold; color: #777777; } Err bitreich.org 70 i-span.paren1:hover { color: #777777; background-color: #BAFFFF; } Err bitreich.org 70 i-span.paren2 { color: #777777; } Err bitreich.org 70 i-span.paren2:hover { color: #777777; background-color: #FFCACA; } Err bitreich.org 70 i-span.paren3 { color: #777777; } Err bitreich.org 70 i-span.paren3:hover { color: #777777; background-color: #FFFFBA; } Err bitreich.org 70 i-span.paren4 { color: #777777; } Err bitreich.org 70 i-span.paren4:hover { color: #777777; background-color: #CACAFF; } Err bitreich.org 70 i-span.paren5 { color: #777777; } Err bitreich.org 70 i-span.paren5:hover { color: #777777; background-color: #CAFFCA; } Err bitreich.org 70 i-span.paren6 { color: #777777; } Err bitreich.org 70 i-span.paren6:hover { color: #777777; background-color: #FFBAFF; } Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/examples/examples.lisp b/3rdparties/software/cffi_0.20.0/examples/examples.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/examples/examples.lisp.gph bitreich.org 70 i@@ -1,78 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; examples.lisp --- Simple test examples of CFFI. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:cffi-examples Err bitreich.org 70 i- (:use #:cl #:cffi) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- #:run-examples Err bitreich.org 70 i- #:sqrtf Err bitreich.org 70 i- #:getenv)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-examples) Err bitreich.org 70 i- Err bitreich.org 70 i-;; A simple libc function. Err bitreich.org 70 i-(defcfun "sqrtf" :float Err bitreich.org 70 i- (n :float)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; This definition uses the STRING type translator to automatically Err bitreich.org 70 i-;; convert Lisp strings to foreign strings and vice versa. Err bitreich.org 70 i-(defcfun "getenv" :string Err bitreich.org 70 i- (name :string)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Calling a varargs function. Err bitreich.org 70 i-(defun sprintf-test () Err bitreich.org 70 i- "Test calling a varargs function." Err bitreich.org 70 i- (with-foreign-pointer-as-string ((buf buf-size) 255) Err bitreich.org 70 i- (foreign-funcall Err bitreich.org 70 i- "snprintf" :pointer buf :int buf-size Err bitreich.org 70 i- :string "%d %f #x%x!" :int 666 Err bitreich.org 70 i- :double (coerce pi 'double-float) Err bitreich.org 70 i- :unsigned-int #xcafebabe Err bitreich.org 70 i- :void))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Defining an emerated type. Err bitreich.org 70 i-(defcenum test-enum Err bitreich.org 70 i- (:invalid 0) Err bitreich.org 70 i- (:positive 1) Err bitreich.org 70 i- (:negative -1)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Use the absolute value function to test keyword/enum translation. Err bitreich.org 70 i-(defcfun ("abs" c-abs) test-enum Err bitreich.org 70 i- (n test-enum)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun cffi-version () Err bitreich.org 70 i- (asdf:component-version (asdf:find-system 'cffi))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun run-examples () Err bitreich.org 70 i- (format t "~&;;; CFFI version ~A on ~A ~A:~%" Err bitreich.org 70 i- (cffi-version) (lisp-implementation-type) Err bitreich.org 70 i- (lisp-implementation-version)) Err bitreich.org 70 i- (format t "~&;; shell: ~A~%" (getenv "SHELL")) Err bitreich.org 70 i- (format t "~&;; sprintf test: ~A~%" (sprintf-test)) Err bitreich.org 70 i- (format t "~&;; (c-abs :positive): ~A~%" (c-abs :positive)) Err bitreich.org 70 i- (format t "~&;; (c-abs :negative): ~A~%" (c-abs :negative)) Err bitreich.org 70 i- (force-output)) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/examples/gethostname.lisp b/3rdparties/software/cffi_0.20.0/examples/gethostname.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/examples/gethostname.lisp.gph bitreich.org 70 i@@ -1,51 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; gethostname.lisp --- A simple CFFI example. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# CFFI Example: gethostname binding Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; This is a very simple CFFI example that illustrates calling a C Err bitreich.org 70 i-;;; function that fills in a user-supplied string buffer. Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:cffi-example-gethostname Err bitreich.org 70 i- (:use #:common-lisp #:cffi) Err bitreich.org 70 i- (:export #:gethostname)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-example-gethostname) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Define the Lisp function %GETHOSTNAME to call the C 'gethostname' Err bitreich.org 70 i-;;; function, which will fill BUF with up to BUFSIZE characters of the Err bitreich.org 70 i-;;; system's hostname. Err bitreich.org 70 i-(defcfun ("gethostname" %gethostname) :int Err bitreich.org 70 i- (buf :pointer) Err bitreich.org 70 i- (bufsize :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Define a Lispy interface to 'gethostname'. The utility macro Err bitreich.org 70 i-;;; WITH-FOREIGN-POINTER-AS-STRING is used to allocate a temporary Err bitreich.org 70 i-;;; buffer and return it as a Lisp string. Err bitreich.org 70 i-(defun gethostname () Err bitreich.org 70 i- (with-foreign-pointer-as-string ((buf bufsize) 255) Err bitreich.org 70 i- (%gethostname buf bufsize))) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/examples/gettimeofday.lisp b/3rdparties/software/cffi_0.20.0/examples/gettimeofday.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/examples/gettimeofday.lisp.gph bitreich.org 70 i@@ -1,93 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; gettimeofday.lisp --- Example CFFI binding to gettimeofday(2) Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# CFFI Example: gettimeofday binding Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; This example illustrates the use of foreign structures, typedefs, Err bitreich.org 70 i-;;; and using type translators to do checking of input and output Err bitreich.org 70 i-;;; arguments to a foreign function. Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:cffi-example-gettimeofday Err bitreich.org 70 i- (:use #:common-lisp #:cffi) Err bitreich.org 70 i- (:export #:gettimeofday)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-example-gettimeofday) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Define the TIMEVAL structure used by 'gettimeofday'. This assumes Err bitreich.org 70 i-;;; that 'time_t' is a 'long' --- it would be nice if CFFI could Err bitreich.org 70 i-;;; provide a proper :TIME-T type to help make this portable. Err bitreich.org 70 i-(defcstruct timeval Err bitreich.org 70 i- (tv-sec :long) Err bitreich.org 70 i- (tv-usec :long)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; A NULL-POINTER is a foreign :POINTER that must always be NULL. Err bitreich.org 70 i-;;; Both a NULL pointer and NIL are legal values---any others will Err bitreich.org 70 i-;;; result in a runtime error. Err bitreich.org 70 i-(define-foreign-type null-pointer-type () Err bitreich.org 70 i- () Err bitreich.org 70 i- (:actual-type :pointer) Err bitreich.org 70 i- (:simple-parser null-pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; This type translator is used to ensure that a NULL-POINTER has a Err bitreich.org 70 i-;;; null value. It also converts NIL to a null pointer. Err bitreich.org 70 i-(defmethod translate-to-foreign (value (type null-pointer-type)) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((null value) (null-pointer)) Err bitreich.org 70 i- ((null-pointer-p value) value) Err bitreich.org 70 i- (t (error "~A is not a null pointer." value)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; The SYSCALL-RESULT type is an integer type used for the return Err bitreich.org 70 i-;;; value of C functions that return -1 and set errno on errors. Err bitreich.org 70 i-;;; Someday when CFFI has a portable interface for dealing with Err bitreich.org 70 i-;;; 'errno', this error reporting can be more useful. Err bitreich.org 70 i-(define-foreign-type syscall-result-type () Err bitreich.org 70 i- () Err bitreich.org 70 i- (:actual-type :int) Err bitreich.org 70 i- (:simple-parser syscall-result)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Type translator to check a SYSCALL-RESULT and signal a Lisp error Err bitreich.org 70 i-;;; if the value is negative. Err bitreich.org 70 i-(defmethod translate-from-foreign (value (type syscall-result-type)) Err bitreich.org 70 i- (if (minusp value) Err bitreich.org 70 i- (error "System call failed with return value ~D." value) Err bitreich.org 70 i- value)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Define the Lisp function %GETTIMEOFDAY to call the C function Err bitreich.org 70 i-;;; 'gettimeofday', passing a pointer to the TIMEVAL structure to fill Err bitreich.org 70 i-;;; in. The TZP parameter is deprecated and should be NULL --- we can Err bitreich.org 70 i-;;; enforce this by using our NULL-POINTER type defined above. Err bitreich.org 70 i-(defcfun ("gettimeofday" %gettimeofday) syscall-result Err bitreich.org 70 i- (tp :pointer) Err bitreich.org 70 i- (tzp null-pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Define a Lispy interface to 'gettimeofday' that returns the Err bitreich.org 70 i-;;; seconds and microseconds as multiple values. Err bitreich.org 70 i-(defun gettimeofday () Err bitreich.org 70 i- (with-foreign-object (tv 'timeval) Err bitreich.org 70 i- (%gettimeofday tv nil) Err bitreich.org 70 i- (with-foreign-slots ((tv-sec tv-usec) tv timeval) Err bitreich.org 70 i- (values tv-sec tv-usec)))) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/examples/grovel-example.lisp b/3rdparties/software/cffi_0.20.0/examples/grovel-example.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/examples/grovel-example.lisp.gph bitreich.org 70 i@@ -1,20 +0,0 @@ Err bitreich.org 70 i-(in-package #:cffi-example) Err bitreich.org 70 i- Err bitreich.org 70 i-(define "a0(x)" "+x+x") Err bitreich.org 70 i-(define "a1(x)" "a0(+x+x)") Err bitreich.org 70 i-(define "a2(x)" "a1(+x+x)") Err bitreich.org 70 i-(define "a3(x)" "a2(+x+x)") Err bitreich.org 70 i-(define "a4(x)" "a3(+x+x)") Err bitreich.org 70 i-(define "a5(x)" "a4(+x+x)") Err bitreich.org 70 i- Err bitreich.org 70 i-(define "A0" "a0(1)") Err bitreich.org 70 i-(define "A1" "a1(1)") Err bitreich.org 70 i-(define "A2" "a2(1)") Err bitreich.org 70 i-(define "A3" "a3(1)") Err bitreich.org 70 i-(define "A4" "a4(1)") Err bitreich.org 70 i- Err bitreich.org 70 i-(constant (+a0+ "A0")) Err bitreich.org 70 i-(constant (+a1+ "A1")) Err bitreich.org 70 i-(constant (+a2+ "A2")) Err bitreich.org 70 i-(constant (+a3+ "A3")) Err bitreich.org 70 i-(constant (+a4+ "A4")) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/examples/main-example.lisp b/3rdparties/software/cffi_0.20.0/examples/main-example.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/examples/main-example.lisp.gph bitreich.org 70 i@@ -1,17 +0,0 @@ Err bitreich.org 70 i-(in-package #:cffi-example) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "puts" :int Err bitreich.org 70 i- "Put a string to standard output, return non-negative length output, or EOF" Err bitreich.org 70 i- (string :string)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun check-groveller () Err bitreich.org 70 i- (assert (equal (list +a0+ +a1+ +a2+ +a3+ +a4+) '(2 4 8 16 32))) Err bitreich.org 70 i- (assert (equal (bn 1) 32))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun entry-point () Err bitreich.org 70 i- (when uiop:*command-line-arguments* Err bitreich.org 70 i- (uiop:format! t "Arguments: ~A~%" (uiop:escape-command uiop:*command-line-arguments*))) Err bitreich.org 70 i- (puts "hello, world!") Err bitreich.org 70 i- (check-groveller) Err bitreich.org 70 i- (uiop:finish-outputs) Err bitreich.org 70 i- (uiop:quit 0)) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/examples/mapping.lisp b/3rdparties/software/cffi_0.20.0/examples/mapping.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/examples/mapping.lisp.gph bitreich.org 70 i@@ -1,76 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; mapping.lisp --- An example for mapping Lisp objects to ints. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-;;; This is an example on how to tackle the problem of passing Lisp Err bitreich.org 70 i-;;; object identifiers to foreign code. It is not a great example, Err bitreich.org 70 i-;;; but might be useful nevertheless. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Requires trivial-garbage: Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:cffi-mapping-test Err bitreich.org 70 i- (:use #:common-lisp #:cffi #:trivial-garbage) Err bitreich.org 70 i- (:export #:run)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-mapping-test) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-foreign-type lisp-object-type () Err bitreich.org 70 i- ((weakp :initarg :weakp)) Err bitreich.org 70 i- (:actual-type :unsigned-int)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-parse-method lisp-object (&key weak-mapping) Err bitreich.org 70 i- (make-instance 'lisp-object-type :weakp weak-mapping)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *regular-hashtable* (make-hash-table)) Err bitreich.org 70 i-(defvar *weak-hashtable* (make-weak-hash-table :weakness :value)) Err bitreich.org 70 i-(defvar *regular-counter* 0) Err bitreich.org 70 i-(defvar *weak-counter* 0) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun increment-counter (value) Err bitreich.org 70 i- (mod (1+ value) (expt 2 (* 8 (foreign-type-size :unsigned-int))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-modify-macro incf-counter () increment-counter) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-to-foreign (value (type lisp-object-type)) Err bitreich.org 70 i- (with-slots (weakp) type Err bitreich.org 70 i- (let ((id (if weakp Err bitreich.org 70 i- (incf-counter *weak-counter*) Err bitreich.org 70 i- (incf-counter *regular-counter*))) Err bitreich.org 70 i- (ht (if weakp *weak-hashtable* *regular-hashtable*))) Err bitreich.org 70 i- (setf (gethash id ht) value) Err bitreich.org 70 i- id))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-from-foreign (int (type lisp-object-type)) Err bitreich.org 70 i- (with-slots (weakp) type Err bitreich.org 70 i- (gethash int (if weakp *weak-hashtable* *regular-hashtable*)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Silly example. Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype weak-mapping (lisp-object :weak-mapping t)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; (run) => # Err bitreich.org 70 i-(defun run () Err bitreich.org 70 i- (foreign-funcall "abs" weak-mapping (lambda (x) x) weak-mapping)) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/examples/package.lisp b/3rdparties/software/cffi_0.20.0/examples/package.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/examples/package.lisp.gph bitreich.org 70 i@@ -1,30 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; package.lisp --- CFFI-EXAMPLES package definition. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:cffi-example Err bitreich.org 70 i- (:use #:cl #:cffi #:cffi-sys) Err bitreich.org 70 i- (:export #:check-groveller #:entry-point)) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/examples/run-examples.lisp b/3rdparties/software/cffi_0.20.0/examples/run-examples.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/examples/run-examples.lisp.gph bitreich.org 70 i@@ -1,39 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; run-examples.lisp --- Simple script to run the examples. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(setf *load-verbose* nil *compile-verbose* nil) Err bitreich.org 70 i- Err bitreich.org 70 i-#-asdf Err bitreich.org 70 i-(ignore-errors (require "asdf")) Err bitreich.org 70 i-#-asdf Err bitreich.org 70 i-(load "~/common-lisp/asdf/build/asdf.lisp") Err bitreich.org 70 i- Err bitreich.org 70 i-(asdf:load-system 'cffi-examples :verbose nil) Err bitreich.org 70 i-(cffi-examples:run-examples) Err bitreich.org 70 i-(force-output) Err bitreich.org 70 i- Err bitreich.org 70 i-(quit) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/examples/translator-test.lisp b/3rdparties/software/cffi_0.20.0/examples/translator-test.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/examples/translator-test.lisp.gph bitreich.org 70 i@@ -1,88 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; translator-test.lisp --- Testing type translators. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:cffi-translator-test Err bitreich.org 70 i- (:use #:common-lisp #:cffi)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-translator-test) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Verbose Pointer Translator Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; This is a silly type translator that doesn't actually do any Err bitreich.org 70 i-;;; translating, but it prints out a debug message when the pointer is Err bitreich.org 70 i-;;; converted to/from its foreign representation. Err bitreich.org 70 i- Err bitreich.org 70 i-(define-foreign-type verbose-pointer-type () Err bitreich.org 70 i- () Err bitreich.org 70 i- (:actual-type :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-to-foreign (value (type verbose-pointer-type)) Err bitreich.org 70 i- (format *debug-io* "~&;; to foreign: VERBOSE-POINTER: ~S~%" value) Err bitreich.org 70 i- value) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-from-foreign (value (type verbose-pointer-type)) Err bitreich.org 70 i- (format *debug-io* "~&;; from foreign: VERBOSE-POINTER: ~S~%" value) Err bitreich.org 70 i- value) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Verbose String Translator Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; A VERBOSE-STRING extends VERBOSE-POINTER and converts Lisp strings Err bitreich.org 70 i-;;; C strings. If things are working properly, both type translators Err bitreich.org 70 i-;;; should be called when converting a Lisp string to/from a C string. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The translators should be called most-specific-first when Err bitreich.org 70 i-;;; translating to C, and most-specific-last when translating from C. Err bitreich.org 70 i- Err bitreich.org 70 i-(define-foreign-type verbose-string-type (verbose-pointer-type) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:simple-parser verbose-string)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-to-foreign ((s string) (type verbose-string-type)) Err bitreich.org 70 i- (let ((value (foreign-string-alloc s))) Err bitreich.org 70 i- (format *debug-io* "~&;; to foreign: VERBOSE-STRING: ~S -> ~S~%" s value) Err bitreich.org 70 i- (values (call-next-method value type) t))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-to-foreign (value (type verbose-string-type)) Err bitreich.org 70 i- (if (pointerp value) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (format *debug-io* "~&;; to foreign: VERBOSE-STRING: ~S -> ~:*~S~%" value) Err bitreich.org 70 i- (values (call-next-method) nil)) Err bitreich.org 70 i- (error "Cannot convert ~S to a foreign string: it is not a Lisp ~ Err bitreich.org 70 i- string or pointer." value))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-from-foreign (ptr (type verbose-string-type)) Err bitreich.org 70 i- (let ((value (foreign-string-to-lisp (call-next-method)))) Err bitreich.org 70 i- (format *debug-io* "~&;; from foreign: VERBOSE-STRING: ~S -> ~S~%" ptr value) Err bitreich.org 70 i- value)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod free-translated-object (ptr (type verbose-string-type) free-p) Err bitreich.org 70 i- (when free-p Err bitreich.org 70 i- (format *debug-io* "~&;; freeing VERBOSE-STRING: ~S~%" ptr) Err bitreich.org 70 i- (foreign-string-free ptr))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun test-verbose-string () Err bitreich.org 70 i- (foreign-funcall "getenv" verbose-string "SHELL" verbose-string)) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/examples/wrapper-example.lisp b/3rdparties/software/cffi_0.20.0/examples/wrapper-example.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/examples/wrapper-example.lisp.gph bitreich.org 70 i@@ -1,20 +0,0 @@ Err bitreich.org 70 i-(in-package #:cffi-example) Err bitreich.org 70 i- Err bitreich.org 70 i-(defwrapper* "b0" :long ((x :long)) "return x;") Err bitreich.org 70 i-(defwrapper* "b1" :long ((x :long)) "return x;") Err bitreich.org 70 i-(defwrapper* "b2" :long ((x :long)) "return x;") Err bitreich.org 70 i-(defwrapper* "b3" :long ((x :long)) "return x;") Err bitreich.org 70 i-(defwrapper* "b4" :long ((x :long)) "return x;") Err bitreich.org 70 i- Err bitreich.org 70 i-(define "b0_cffi_wrap(x)" Err bitreich.org 70 i- "b0_cffi_wrap(b1_cffi_wrap(b2_cffi_wrap(b3_cffi_wrap(b4_cffi_wrap(+x+x)))))") Err bitreich.org 70 i-(define "b1_cffi_wrap(x)" Err bitreich.org 70 i- "b0_cffi_wrap(b1_cffi_wrap(b2_cffi_wrap(b3_cffi_wrap(b4_cffi_wrap(+x+x)))))") Err bitreich.org 70 i-(define "b2_cffi_wrap(x)" Err bitreich.org 70 i- "b0_cffi_wrap(b1_cffi_wrap(b2_cffi_wrap(b3_cffi_wrap(b4_cffi_wrap(+x+x)))))") Err bitreich.org 70 i-;;(define "b3_cffi_wrap(x)" Err bitreich.org 70 i-;; "b0_cffi_wrap(b1_cffi_wrap(b2_cffi_wrap(b3_cffi_wrap(b4_cffi_wrap(+x+x)))))") Err bitreich.org 70 i-;;(define "b4_cffi_wrap(x)" Err bitreich.org 70 i-;; "b0_cffi_wrap(b1_cffi_wrap(b2_cffi_wrap(b3_cffi_wrap(b4_cffi_wrap(+x+x)))))") Err bitreich.org 70 i- Err bitreich.org 70 i-(defwrapper* "bn" :long ((x :long)) "return b0_cffi_wrap(x);") Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/grovel/asdf.lisp b/3rdparties/software/cffi_0.20.0/grovel/asdf.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/grovel/asdf.lisp.gph bitreich.org 70 i@@ -1,152 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; asdf.lisp --- ASDF components for cffi-grovel. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, Dan Knap Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, Emily Backes Err bitreich.org 70 i-;;; Copyright (C) 2007, Stelian Ionescu Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-grovel) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass cc-flags-mixin () Err bitreich.org 70 i- ((cc-flags :initform nil :accessor cc-flags-of :initarg :cc-flags))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass process-op (downward-operation) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "This ASDF operation performs the steps necessary Err bitreich.org 70 i- to generate a compilable and loadable lisp file from a Err bitreich.org 70 i- PROCESS-OP-INPUT component.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass process-op-input (cl-source-file) Err bitreich.org 70 i- ((generated-lisp-file-type Err bitreich.org 70 i- :initarg :generated-lisp-file-type Err bitreich.org 70 i- :accessor generated-lisp-file-type Err bitreich.org 70 i- :documentation "The :TYPE argument to use for the generated lisp file.")) Err bitreich.org 70 i- (:default-initargs Err bitreich.org 70 i- :generated-lisp-file-type "generated-lisp-file") Err bitreich.org 70 i- (:documentation "This ASDF component represents a file that is Err bitreich.org 70 i- used as input to a function that generates lisp source file. This Err bitreich.org 70 i- component acts as if it is a CL-SOURCE-FILE by applying the Err bitreich.org 70 i- COMPILE-OP and LOAD-SOURCE-OP operations to the file generated by Err bitreich.org 70 i- PROCESS-OP.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod perform :around ((op process-op) (file cc-flags-mixin)) Err bitreich.org 70 i- (let ((*cc-flags* (append (ensure-list (cc-flags-of file)) Err bitreich.org 70 i- *cc-flags*))) Err bitreich.org 70 i- (call-next-method))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod input-files ((op process-op) (c process-op-input)) Err bitreich.org 70 i- (list (component-pathname c))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod input-files ((op compile-op) (c process-op-input)) Err bitreich.org 70 i- (list (first (output-files 'process-op c)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod component-depends-on ((op process-op) (c process-op-input)) Err bitreich.org 70 i- `((prepare-op ,c) ,@(call-next-method))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod component-depends-on ((op compile-op) (c process-op-input)) Err bitreich.org 70 i- `((process-op ,c) ,@(call-next-method))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod component-depends-on ((op load-source-op) (c process-op-input)) Err bitreich.org 70 i- `((process-op ,c) ,@(call-next-method))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# ASDF component: GROVEL-FILE Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass grovel-file (process-op-input cc-flags-mixin) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:default-initargs Err bitreich.org 70 i- :generated-lisp-file-type "processed-grovel-file") Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "This ASDF component represents an input file that is processed Err bitreich.org 70 i- by PROCESS-GROVEL-FILE.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod output-files ((op process-op) (c grovel-file)) Err bitreich.org 70 i- (let* ((input-file (first (input-files op c))) Err bitreich.org 70 i- (output-file (make-pathname :type (generated-lisp-file-type c) Err bitreich.org 70 i- :defaults input-file)) Err bitreich.org 70 i- (c-file (make-c-file-name output-file "__grovel"))) Err bitreich.org 70 i- (list output-file Err bitreich.org 70 i- c-file Err bitreich.org 70 i- (make-exe-file-name c-file)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod perform ((op process-op) (c grovel-file)) Err bitreich.org 70 i- (let* ((output-file (first (output-files op c))) Err bitreich.org 70 i- (input-file (first (input-files op c))) Err bitreich.org 70 i- (tmp-file (process-grovel-file input-file output-file))) Err bitreich.org 70 i- (rename-file-overwriting-target tmp-file output-file))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# ASDF component: WRAPPER-FILE Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass wrapper-file (process-op-input cc-flags-mixin) Err bitreich.org 70 i- ((soname :initform nil :initarg :soname :accessor soname-of)) Err bitreich.org 70 i- (:default-initargs Err bitreich.org 70 i- :generated-lisp-file-type "processed-wrapper-file") Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "This ASDF component represents an input file that is processed Err bitreich.org 70 i- by PROCESS-WRAPPER-FILE. This generates a foreign library and Err bitreich.org 70 i- matching CFFI bindings that are subsequently compiled and Err bitreich.org 70 i- loaded.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun wrapper-soname (c) Err bitreich.org 70 i- (or (soname-of c) Err bitreich.org 70 i- (component-name c))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod output-files ((op process-op) (c wrapper-file)) Err bitreich.org 70 i- (let* ((input-file (first (input-files op c))) Err bitreich.org 70 i- (output-file (make-pathname :type (generated-lisp-file-type c) Err bitreich.org 70 i- :defaults input-file)) Err bitreich.org 70 i- (c-file (make-c-file-name output-file "__wrapper")) Err bitreich.org 70 i- (o-file (make-o-file-name output-file "__wrapper")) Err bitreich.org 70 i- (lib-soname (wrapper-soname c))) Err bitreich.org 70 i- (list output-file Err bitreich.org 70 i- (make-so-file-name (make-soname lib-soname output-file)) Err bitreich.org 70 i- c-file Err bitreich.org 70 i- o-file))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Declare the .o and .so files as compilation outputs, Err bitreich.org 70 i-;;; so they get picked up by bundle operations. Err bitreich.org 70 i-#.(when (version<= "3.1.6" (asdf-version)) Err bitreich.org 70 i- '(defmethod output-files ((op compile-op) (c wrapper-file)) Err bitreich.org 70 i- (destructuring-bind (generated-lisp lib-file c-file o-file) (output-files 'process-op c) Err bitreich.org 70 i- (declare (ignore generated-lisp c-file)) Err bitreich.org 70 i- (multiple-value-bind (files translatedp) (call-next-method) Err bitreich.org 70 i- (values (append files (list lib-file o-file)) translatedp))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod perform ((op process-op) (c wrapper-file)) Err bitreich.org 70 i- (let* ((output-file (first (output-files op c))) Err bitreich.org 70 i- (input-file (first (input-files op c))) Err bitreich.org 70 i- (tmp-file (process-wrapper-file Err bitreich.org 70 i- input-file Err bitreich.org 70 i- :output-defaults output-file Err bitreich.org 70 i- :lib-soname (wrapper-soname c)))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (alexandria:copy-file tmp-file output-file :if-to-exists :supersede) Err bitreich.org 70 i- (delete-file tmp-file)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Allow for naked :cffi-grovel-file and :cffi-wrapper-file in asdf definitions. Err bitreich.org 70 i-(setf (find-class 'asdf::cffi-grovel-file) (find-class 'grovel-file)) Err bitreich.org 70 i-(setf (find-class 'asdf::cffi-wrapper-file) (find-class 'wrapper-file)) Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/grovel/common.h b/3rdparties/software/cffi_0.20.0/grovel/common.h /scm/clic/file/3rdparties/software/cffi_0.20.0/grovel/common.h.gph bitreich.org 70 i@@ -1,57 +0,0 @@ Err bitreich.org 70 i-#include Err bitreich.org 70 i-#include Err bitreich.org 70 i-#include Err bitreich.org 70 i-#include Err bitreich.org 70 i-#include Err bitreich.org 70 i- Err bitreich.org 70 i-#ifndef offsetof Err bitreich.org 70 i-#define offsetof(type, slot) ((long) ((char *) &(((type *) 0)->slot))) Err bitreich.org 70 i-#endif Err bitreich.org 70 i-#define getslot(type, slot) (((type *) 0)->slot) Err bitreich.org 70 i-#define sizeofslot(type, slot) (sizeof(getslot(type, slot))) Err bitreich.org 70 i-#define countofslot(type, slot) \ Err bitreich.org 70 i- (sizeof(getslot(type, slot)) / sizeof(getslot(type, slot)[0])) Err bitreich.org 70 i-#define stringify(x) #x Err bitreich.org 70 i-#define indirect_stringify(x) stringify(x) Err bitreich.org 70 i- Err bitreich.org 70 i-#define TYPE_SIGNED_P(type) (((type)-1)<0LL) Err bitreich.org 70 i-#define _64_BIT_VALUE_FITS_SIGNED_P(value) ( (value) <= 0x7FFFFFFFFFFFFFFFLL ) Err bitreich.org 70 i-#define SLOT_SIGNED_P(result, type, slot) \ Err bitreich.org 70 i- do { \ Err bitreich.org 70 i- type slot_signed_p_struct; \ Err bitreich.org 70 i- slot_signed_p_struct.slot = -1; \ Err bitreich.org 70 i- (result) = slot_signed_p_struct.slot < 0; \ Err bitreich.org 70 i- } while (0) Err bitreich.org 70 i- Err bitreich.org 70 i-void type_name(FILE *output, int signed_p, int size) { Err bitreich.org 70 i- if (signed_p) { Err bitreich.org 70 i- switch (size) { Err bitreich.org 70 i- case 1: fprintf(output, ":int8"); break; Err bitreich.org 70 i- case 2: fprintf(output, ":int16"); break; Err bitreich.org 70 i- case 4: fprintf(output, ":int32"); break; Err bitreich.org 70 i- case 8: fprintf(output, ":int64"); break; Err bitreich.org 70 i- default: goto error; Err bitreich.org 70 i- } Err bitreich.org 70 i- } else { Err bitreich.org 70 i- switch(size) { Err bitreich.org 70 i- case 1: fprintf(output, ":uint8"); break; Err bitreich.org 70 i- case 2: fprintf(output, ":uint16"); break; Err bitreich.org 70 i- case 4: fprintf(output, ":uint32"); break; Err bitreich.org 70 i- case 8: fprintf(output, ":uint64"); break; Err bitreich.org 70 i- default: goto error; Err bitreich.org 70 i- } Err bitreich.org 70 i- } Err bitreich.org 70 i- Err bitreich.org 70 i- return; Err bitreich.org 70 i- Err bitreich.org 70 i-error: Err bitreich.org 70 i- fprintf(output, "(cl:error \"No type of size ~D.\" %i)\n", size); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-char* print_double_for_lisp(double n) Err bitreich.org 70 i-{ Err bitreich.org 70 i- static char buf[256]; Err bitreich.org 70 i- memset(buf, 0, 256); Err bitreich.org 70 i- snprintf(buf, 255, "(let ((*read-default-float-format* 'double-float)) (coerce (read-from-string \"%.20E\") 'double-float))", n); Err bitreich.org 70 i- return buf; Err bitreich.org 70 i-} Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/grovel/grovel.lisp b/3rdparties/software/cffi_0.20.0/grovel/grovel.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/grovel/grovel.lisp.gph bitreich.org 70 i@@ -1,913 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; grovel.lisp --- The CFFI Groveller. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, Dan Knap Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, Emily Backes Err bitreich.org 70 i-;;; Copyright (C) 2007, Stelian Ionescu Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-grovel) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Error Conditions Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition grovel-error (simple-error) ()) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun grovel-error (format-control &rest format-arguments) Err bitreich.org 70 i- (error 'grovel-error Err bitreich.org 70 i- :format-control format-control Err bitreich.org 70 i- :format-arguments format-arguments)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; This warning is signalled when cffi-grovel can't find some macro. Err bitreich.org 70 i-;;; Signalled by CONSTANT or CONSTANTENUM. Err bitreich.org 70 i-(define-condition missing-definition (warning) Err bitreich.org 70 i- ((%name :initarg :name :reader name-of)) Err bitreich.org 70 i- (:report (lambda (condition stream) Err bitreich.org 70 i- (format stream "No definition for ~A" Err bitreich.org 70 i- (name-of condition))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Grovelling Err bitreich.org 70 i- Err bitreich.org 70 i-;;; The header of the intermediate C file. Err bitreich.org 70 i-(defparameter *header* Err bitreich.org 70 i- "/* Err bitreich.org 70 i- * This file has been automatically generated by cffi-grovel. Err bitreich.org 70 i- * Do not edit it by hand. Err bitreich.org 70 i- */ Err bitreich.org 70 i- Err bitreich.org 70 i-") Err bitreich.org 70 i- Err bitreich.org 70 i-;;; C code generated by cffi-grovel is inserted between the contents Err bitreich.org 70 i-;;; of *PROLOGUE* and *POSTSCRIPT*, inside the main function's body. Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *prologue* Err bitreich.org 70 i- " Err bitreich.org 70 i-#include Err bitreich.org 70 i- Err bitreich.org 70 i-int main(int argc, char**argv) { Err bitreich.org 70 i- int autotype_tmp; Err bitreich.org 70 i- FILE *output = argc > 1 ? fopen(argv[1], \"w\") : stdout; Err bitreich.org 70 i- fprintf(output, \";;;; This file has been automatically generated by \" Err bitreich.org 70 i- \"cffi-grovel.\\n;;;; Do not edit it by hand.\\n\\n\"); Err bitreich.org 70 i-") Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *postscript* Err bitreich.org 70 i- " Err bitreich.org 70 i- if (output != stdout) Err bitreich.org 70 i- fclose(output); Err bitreich.org 70 i- return 0; Err bitreich.org 70 i-} Err bitreich.org 70 i-") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun unescape-for-c (text) Err bitreich.org 70 i- (with-output-to-string (result) Err bitreich.org 70 i- (loop for i below (length text) Err bitreich.org 70 i- for char = (char text i) do Err bitreich.org 70 i- (cond ((eql char #\") (princ "\\\"" result)) Err bitreich.org 70 i- ((eql char #\newline) (princ "\\n" result)) Err bitreich.org 70 i- (t (princ char result)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun c-format (out fmt &rest args) Err bitreich.org 70 i- (let ((text (unescape-for-c (format nil "~?" fmt args)))) Err bitreich.org 70 i- (format out "~& fputs(\"~A\", output);~%" text))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun c-printf (out fmt &rest args) Err bitreich.org 70 i- (flet ((item (item) Err bitreich.org 70 i- (format out "~A" (unescape-for-c (format nil item))))) Err bitreich.org 70 i- (format out "~& fprintf(output, \"") Err bitreich.org 70 i- (item fmt) Err bitreich.org 70 i- (format out "\"") Err bitreich.org 70 i- (loop for arg in args do Err bitreich.org 70 i- (format out ", ") Err bitreich.org 70 i- (item arg)) Err bitreich.org 70 i- (format out ");~%"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun c-print-integer-constant (out arg &optional foreign-type) Err bitreich.org 70 i- (let ((foreign-type (or foreign-type :int))) Err bitreich.org 70 i- (c-format out "#.(cffi-grovel::convert-intmax-constant ") Err bitreich.org 70 i- (format out "~& fprintf(output, \"%\"PRIiMAX, (intmax_t)~A);~%" Err bitreich.org 70 i- arg) Err bitreich.org 70 i- (c-format out " ") Err bitreich.org 70 i- (c-write out `(quote ,foreign-type)) Err bitreich.org 70 i- (c-format out ")"))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; TODO: handle packages in a better way. One way is to process each Err bitreich.org 70 i-;;; grovel form as it is read (like we already do for wrapper Err bitreich.org 70 i-;;; forms). This way in can expect *PACKAGE* to have sane values. Err bitreich.org 70 i-;;; This would require that "header forms" come before any other Err bitreich.org 70 i-;;; forms. Err bitreich.org 70 i-(defun c-print-symbol (out symbol &optional no-package) Err bitreich.org 70 i- (c-format out Err bitreich.org 70 i- (let ((package (symbol-package symbol))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((eq (find-package '#:keyword) package) ":~(~A~)") Err bitreich.org 70 i- (no-package "~(~A~)") Err bitreich.org 70 i- ((eq (find-package '#:cl) package) "cl:~(~A~)") Err bitreich.org 70 i- (t "~(~A~)"))) Err bitreich.org 70 i- symbol)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun c-write (out form &optional no-package) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((and (listp form) Err bitreich.org 70 i- (eq 'quote (car form))) Err bitreich.org 70 i- (c-format out "'") Err bitreich.org 70 i- (c-write out (cadr form) no-package)) Err bitreich.org 70 i- ((listp form) Err bitreich.org 70 i- (c-format out "(") Err bitreich.org 70 i- (loop for subform in form Err bitreich.org 70 i- for first-p = t then nil Err bitreich.org 70 i- unless first-p do (c-format out " ") Err bitreich.org 70 i- do (c-write out subform no-package)) Err bitreich.org 70 i- (c-format out ")")) Err bitreich.org 70 i- ((symbolp form) Err bitreich.org 70 i- (c-print-symbol out form no-package)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Always NIL for now, add {ENABLE,DISABLE}-AUTO-EXPORT grovel forms Err bitreich.org 70 i-;;; later, if necessary. Err bitreich.org 70 i-(defvar *auto-export* nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun c-export (out symbol) Err bitreich.org 70 i- (when (and *auto-export* (not (keywordp symbol))) Err bitreich.org 70 i- (c-format out "(cl:export '") Err bitreich.org 70 i- (c-print-symbol out symbol t) Err bitreich.org 70 i- (c-format out ")~%"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun c-section-header (out section-type section-symbol) Err bitreich.org 70 i- (format out "~% /* ~A section for ~S */~%" Err bitreich.org 70 i- section-type Err bitreich.org 70 i- section-symbol)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun remove-suffix (string suffix) Err bitreich.org 70 i- (let ((suffix-start (- (length string) (length suffix)))) Err bitreich.org 70 i- (if (and (> suffix-start 0) Err bitreich.org 70 i- (string= string suffix :start1 suffix-start)) Err bitreich.org 70 i- (subseq string 0 suffix-start) Err bitreich.org 70 i- string))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric %process-grovel-form (name out arguments) Err bitreich.org 70 i- (:method (name out arguments) Err bitreich.org 70 i- (declare (ignore out arguments)) Err bitreich.org 70 i- (grovel-error "Unknown Grovel syntax: ~S" name))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun process-grovel-form (out form) Err bitreich.org 70 i- (%process-grovel-form (form-kind form) out (cdr form))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun form-kind (form) Err bitreich.org 70 i- ;; Using INTERN here instead of FIND-SYMBOL will result in less Err bitreich.org 70 i- ;; cryptic error messages when an undefined grovel/wrapper form is Err bitreich.org 70 i- ;; found. Err bitreich.org 70 i- (intern (symbol-name (car form)) '#:cffi-grovel)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *header-forms* '(c include define flag typedef)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun header-form-p (form) Err bitreich.org 70 i- (member (form-kind form) *header-forms*)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun generate-c-file (input-file output-defaults) Err bitreich.org 70 i- (nest Err bitreich.org 70 i- (with-standard-io-syntax) Err bitreich.org 70 i- (let ((c-file (make-c-file-name output-defaults "__grovel")) Err bitreich.org 70 i- (*print-readably* nil) Err bitreich.org 70 i- (*print-escape* t))) Err bitreich.org 70 i- (with-open-file (out c-file :direction :output :if-exists :supersede)) Err bitreich.org 70 i- (with-open-file (in input-file :direction :input)) Err bitreich.org 70 i- (flet ((read-forms (s) Err bitreich.org 70 i- (do ((forms ()) Err bitreich.org 70 i- (form (read s nil nil) (read s nil nil))) Err bitreich.org 70 i- ((null form) (nreverse forms)) Err bitreich.org 70 i- (labels Err bitreich.org 70 i- ((process-form (f) Err bitreich.org 70 i- (case (form-kind f) Err bitreich.org 70 i- (flag (warn "Groveler clause FLAG is deprecated, use CC-FLAGS instead."))) Err bitreich.org 70 i- (case (form-kind f) Err bitreich.org 70 i- (in-package Err bitreich.org 70 i- (setf *package* (find-package (second f))) Err bitreich.org 70 i- (push f forms)) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- ;; flatten progn forms Err bitreich.org 70 i- (mapc #'process-form (rest f))) Err bitreich.org 70 i- (t (push f forms))))) Err bitreich.org 70 i- (process-form form)))))) Err bitreich.org 70 i- (let* ((forms (read-forms in)) Err bitreich.org 70 i- (header-forms (remove-if-not #'header-form-p forms)) Err bitreich.org 70 i- (body-forms (remove-if #'header-form-p forms))) Err bitreich.org 70 i- (write-string *header* out) Err bitreich.org 70 i- (dolist (form header-forms) Err bitreich.org 70 i- (process-grovel-form out form)) Err bitreich.org 70 i- (write-string *prologue* out) Err bitreich.org 70 i- (dolist (form body-forms) Err bitreich.org 70 i- (process-grovel-form out form)) Err bitreich.org 70 i- (write-string *postscript* out) Err bitreich.org 70 i- c-file))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun tmp-lisp-file-name (defaults) Err bitreich.org 70 i- (make-pathname :name (strcat (pathname-name defaults) ".grovel-tmp") Err bitreich.org 70 i- :type "lisp" :defaults defaults)) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; *PACKAGE* is rebound so that the IN-PACKAGE form can set it during Err bitreich.org 70 i-;;; *the extent of a given grovel file. Err bitreich.org 70 i-(defun process-grovel-file (input-file &optional (output-defaults input-file)) Err bitreich.org 70 i- (with-standard-io-syntax Err bitreich.org 70 i- (let* ((c-file (generate-c-file input-file output-defaults)) Err bitreich.org 70 i- (o-file (make-o-file-name c-file)) Err bitreich.org 70 i- (exe-file (make-exe-file-name c-file)) Err bitreich.org 70 i- (lisp-file (tmp-lisp-file-name c-file)) Err bitreich.org 70 i- (inputs (list (cc-include-grovel-argument) c-file))) Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (progn Err bitreich.org 70 i- ;; at least MKCL wants to separate compile and link Err bitreich.org 70 i- (cc-compile o-file inputs) Err bitreich.org 70 i- (link-executable exe-file (list o-file))) Err bitreich.org 70 i- (error (e) Err bitreich.org 70 i- (grovel-error "~a" e))) Err bitreich.org 70 i- (invoke exe-file lisp-file) Err bitreich.org 70 i- lisp-file))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; OUT is lexically bound to the output stream within BODY. Err bitreich.org 70 i-(defmacro define-grovel-syntax (name lambda-list &body body) Err bitreich.org 70 i- (with-unique-names (name-var args) Err bitreich.org 70 i- `(defmethod %process-grovel-form ((,name-var (eql ',name)) out ,args) Err bitreich.org 70 i- (declare (ignorable out)) Err bitreich.org 70 i- (destructuring-bind ,lambda-list ,args Err bitreich.org 70 i- ,@body)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-grovel-syntax c (body) Err bitreich.org 70 i- (format out "~%~A~%" body)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-grovel-syntax include (&rest includes) Err bitreich.org 70 i- (format out "~{#include <~A>~%~}" includes)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-grovel-syntax define (name &optional value) Err bitreich.org 70 i- (format out "#define ~A~@[ ~A~]~%" name value)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-grovel-syntax typedef (base-type new-type) Err bitreich.org 70 i- (format out "typedef ~A ~A;~%" base-type new-type)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Is this really needed? Err bitreich.org 70 i-(define-grovel-syntax ffi-typedef (new-type base-type) Err bitreich.org 70 i- (c-format out "(cffi:defctype ~S ~S)~%" new-type base-type)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-grovel-syntax flag (&rest flags) Err bitreich.org 70 i- (appendf *cc-flags* (parse-command-flags-list flags))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-grovel-syntax cc-flags (&rest flags) Err bitreich.org 70 i- (appendf *cc-flags* (parse-command-flags-list flags))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-grovel-syntax pkg-config-cflags (pkg &key optional) Err bitreich.org 70 i- (let ((output-stream (make-string-output-stream)) Err bitreich.org 70 i- (program+args (list "pkg-config" pkg "--cflags"))) Err bitreich.org 70 i- (format *debug-io* "~&;~{ ~a~}~%" program+args) Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (run-program program+args Err bitreich.org 70 i- :output (make-broadcast-stream output-stream *debug-io*) Err bitreich.org 70 i- :error-output output-stream) Err bitreich.org 70 i- (appendf *cc-flags* Err bitreich.org 70 i- (parse-command-flags (get-output-stream-string output-stream)))) Err bitreich.org 70 i- (error (e) Err bitreich.org 70 i- (let ((message (format nil "~a~&~%~a~&" Err bitreich.org 70 i- e (get-output-stream-string output-stream)))) Err bitreich.org 70 i- (cond (optional Err bitreich.org 70 i- (format *debug-io* "~&; ERROR: ~a" message) Err bitreich.org 70 i- (format *debug-io* "~&~%; Attempting to continue anyway.~%")) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (grovel-error "~a" message)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; This form also has some "read time" effects. See GENERATE-C-FILE. Err bitreich.org 70 i-(define-grovel-syntax in-package (name) Err bitreich.org 70 i- (c-format out "(cl:in-package #:~A)~%~%" name)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-grovel-syntax ctype (lisp-name size-designator) Err bitreich.org 70 i- (c-section-header out "ctype" lisp-name) Err bitreich.org 70 i- (c-export out lisp-name) Err bitreich.org 70 i- (c-format out "(cffi:defctype ") Err bitreich.org 70 i- (c-print-symbol out lisp-name t) Err bitreich.org 70 i- (c-format out " ") Err bitreich.org 70 i- (format out "~& type_name(output, TYPE_SIGNED_P(~A), ~:[sizeof(~A)~;~D~]);~%" Err bitreich.org 70 i- size-designator Err bitreich.org 70 i- (etypecase size-designator Err bitreich.org 70 i- (string nil) Err bitreich.org 70 i- (integer t)) Err bitreich.org 70 i- size-designator) Err bitreich.org 70 i- (c-format out ")~%") Err bitreich.org 70 i- (unless (keywordp lisp-name) Err bitreich.org 70 i- (c-export out lisp-name)) Err bitreich.org 70 i- (let ((size-of-constant-name (symbolicate '#:size-of- lisp-name))) Err bitreich.org 70 i- (c-export out size-of-constant-name) Err bitreich.org 70 i- (c-format out "(cl:defconstant " Err bitreich.org 70 i- size-of-constant-name lisp-name) Err bitreich.org 70 i- (c-print-symbol out size-of-constant-name) Err bitreich.org 70 i- (c-format out " (cffi:foreign-type-size '") Err bitreich.org 70 i- (c-print-symbol out lisp-name) Err bitreich.org 70 i- (c-format out "))~%"))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Syntax differs from anything else in CFFI. Fix? Err bitreich.org 70 i-(define-grovel-syntax constant ((lisp-name &rest c-names) Err bitreich.org 70 i- &key (type 'integer) documentation optional) Err bitreich.org 70 i- (when (keywordp lisp-name) Err bitreich.org 70 i- (setf lisp-name (format-symbol "~A" lisp-name))) Err bitreich.org 70 i- (c-section-header out "constant" lisp-name) Err bitreich.org 70 i- (dolist (c-name c-names) Err bitreich.org 70 i- (format out "~&#ifdef ~A~%" c-name) Err bitreich.org 70 i- (c-export out lisp-name) Err bitreich.org 70 i- (c-format out "(cl:defconstant ") Err bitreich.org 70 i- (c-print-symbol out lisp-name t) Err bitreich.org 70 i- (c-format out " ") Err bitreich.org 70 i- (ecase type Err bitreich.org 70 i- (integer Err bitreich.org 70 i- (format out "~& if(_64_BIT_VALUE_FITS_SIGNED_P(~A))~%" c-name) Err bitreich.org 70 i- (format out " fprintf(output, \"%lli\", (long long signed) ~A);" c-name) Err bitreich.org 70 i- (format out "~& else~%") Err bitreich.org 70 i- (format out " fprintf(output, \"%llu\", (long long unsigned) ~A);" c-name)) Err bitreich.org 70 i- (double-float Err bitreich.org 70 i- (format out "~& fprintf(output, \"%s\", print_double_for_lisp((double)~A));~%" c-name))) Err bitreich.org 70 i- (when documentation Err bitreich.org 70 i- (c-format out " ~S" documentation)) Err bitreich.org 70 i- (c-format out ")~%") Err bitreich.org 70 i- (format out "~&#else~%")) Err bitreich.org 70 i- (unless optional Err bitreich.org 70 i- (c-format out "(cl:warn 'cffi-grovel:missing-definition :name '~A)~%" Err bitreich.org 70 i- lisp-name)) Err bitreich.org 70 i- (dotimes (i (length c-names)) Err bitreich.org 70 i- (format out "~&#endif~%"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-grovel-syntax feature (lisp-feature-name c-name &key (feature-list 'cl:*features*)) Err bitreich.org 70 i- (c-section-header out "feature" lisp-feature-name) Err bitreich.org 70 i- (format out "~&#ifdef ~A~%" c-name) Err bitreich.org 70 i- (c-format out "(cl:pushnew '") Err bitreich.org 70 i- (c-print-symbol out lisp-feature-name t) Err bitreich.org 70 i- (c-format out " ") Err bitreich.org 70 i- (c-print-symbol out feature-list) Err bitreich.org 70 i- (c-format out ")~%") Err bitreich.org 70 i- (format out "~&#endif~%")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-grovel-syntax cunion (union-lisp-name union-c-name &rest slots) Err bitreich.org 70 i- (let ((documentation (when (stringp (car slots)) (pop slots)))) Err bitreich.org 70 i- (c-section-header out "cunion" union-lisp-name) Err bitreich.org 70 i- (c-export out union-lisp-name) Err bitreich.org 70 i- (dolist (slot slots) Err bitreich.org 70 i- (let ((slot-lisp-name (car slot))) Err bitreich.org 70 i- (c-export out slot-lisp-name))) Err bitreich.org 70 i- (c-format out "(cffi:defcunion (") Err bitreich.org 70 i- (c-print-symbol out union-lisp-name t) Err bitreich.org 70 i- (c-printf out " :size %llu)" (format nil "(long long unsigned) sizeof(~A)" union-c-name)) Err bitreich.org 70 i- (when documentation Err bitreich.org 70 i- (c-format out "~% ~S" documentation)) Err bitreich.org 70 i- (dolist (slot slots) Err bitreich.org 70 i- (destructuring-bind (slot-lisp-name slot-c-name &key type count) Err bitreich.org 70 i- slot Err bitreich.org 70 i- (declare (ignore slot-c-name)) Err bitreich.org 70 i- (c-format out "~% (") Err bitreich.org 70 i- (c-print-symbol out slot-lisp-name t) Err bitreich.org 70 i- (c-format out " ") Err bitreich.org 70 i- (c-write out type) Err bitreich.org 70 i- (etypecase count Err bitreich.org 70 i- (integer Err bitreich.org 70 i- (c-format out " :count ~D" count)) Err bitreich.org 70 i- ((eql :auto) Err bitreich.org 70 i- ;; nb, works like :count :auto does in cstruct below Err bitreich.org 70 i- (c-printf out " :count %llu" Err bitreich.org 70 i- (format nil "(long long unsigned) sizeof(~A)" union-c-name))) Err bitreich.org 70 i- (null t)) Err bitreich.org 70 i- (c-format out ")"))) Err bitreich.org 70 i- (c-format out ")~%"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-from-pointer-function-name (type-name) Err bitreich.org 70 i- (symbolicate '#:make- type-name '#:-from-pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; DEFINE-C-STRUCT-WRAPPER (in ../src/types.lisp) seems like a much Err bitreich.org 70 i-;;; cleaner way to do this. Unless I can find any advantage in doing Err bitreich.org 70 i-;;; it this way I'll delete this soon. --luis Err bitreich.org 70 i-(define-grovel-syntax cstruct-and-class-item (&rest arguments) Err bitreich.org 70 i- (process-grovel-form out (cons 'cstruct arguments)) Err bitreich.org 70 i- (destructuring-bind (struct-lisp-name struct-c-name &rest slots) Err bitreich.org 70 i- arguments Err bitreich.org 70 i- (declare (ignore struct-c-name)) Err bitreich.org 70 i- (let* ((slot-names (mapcar #'car slots)) Err bitreich.org 70 i- (reader-names (mapcar Err bitreich.org 70 i- (lambda (slot-name) Err bitreich.org 70 i- (intern Err bitreich.org 70 i- (strcat (symbol-name struct-lisp-name) "-" Err bitreich.org 70 i- (symbol-name slot-name)))) Err bitreich.org 70 i- slot-names)) Err bitreich.org 70 i- (initarg-names (mapcar Err bitreich.org 70 i- (lambda (slot-name) Err bitreich.org 70 i- (intern (symbol-name slot-name) "KEYWORD")) Err bitreich.org 70 i- slot-names)) Err bitreich.org 70 i- (slot-decoders (mapcar (lambda (slot) Err bitreich.org 70 i- (destructuring-bind Err bitreich.org 70 i- (lisp-name c-name Err bitreich.org 70 i- &key type count Err bitreich.org 70 i- &allow-other-keys) Err bitreich.org 70 i- slot Err bitreich.org 70 i- (declare (ignore lisp-name c-name)) Err bitreich.org 70 i- (cond ((and (eq type :char) count) Err bitreich.org 70 i- 'cffi:foreign-string-to-lisp) Err bitreich.org 70 i- (t nil)))) Err bitreich.org 70 i- slots)) Err bitreich.org 70 i- (defclass-form Err bitreich.org 70 i- `(defclass ,struct-lisp-name () Err bitreich.org 70 i- ,(mapcar (lambda (slot-name initarg-name reader-name) Err bitreich.org 70 i- `(,slot-name :initarg ,initarg-name Err bitreich.org 70 i- :reader ,reader-name)) Err bitreich.org 70 i- slot-names Err bitreich.org 70 i- initarg-names Err bitreich.org 70 i- reader-names))) Err bitreich.org 70 i- (make-function-name Err bitreich.org 70 i- (make-from-pointer-function-name struct-lisp-name)) Err bitreich.org 70 i- (make-defun-form Err bitreich.org 70 i- ;; this function is then used as a constructor for this class. Err bitreich.org 70 i- `(defun ,make-function-name (pointer) Err bitreich.org 70 i- (cffi:with-foreign-slots Err bitreich.org 70 i- (,slot-names pointer ,struct-lisp-name) Err bitreich.org 70 i- (make-instance ',struct-lisp-name Err bitreich.org 70 i- ,@(loop for slot-name in slot-names Err bitreich.org 70 i- for initarg-name in initarg-names Err bitreich.org 70 i- for slot-decoder in slot-decoders Err bitreich.org 70 i- collect initarg-name Err bitreich.org 70 i- if slot-decoder Err bitreich.org 70 i- collect `(,slot-decoder ,slot-name) Err bitreich.org 70 i- else collect slot-name)))))) Err bitreich.org 70 i- (c-export out make-function-name) Err bitreich.org 70 i- (dolist (reader-name reader-names) Err bitreich.org 70 i- (c-export out reader-name)) Err bitreich.org 70 i- (c-write out defclass-form) Err bitreich.org 70 i- (c-write out make-defun-form)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-grovel-syntax cstruct (struct-lisp-name struct-c-name &rest slots) Err bitreich.org 70 i- (let ((documentation (when (stringp (car slots)) (pop slots)))) Err bitreich.org 70 i- (c-section-header out "cstruct" struct-lisp-name) Err bitreich.org 70 i- (c-export out struct-lisp-name) Err bitreich.org 70 i- (dolist (slot slots) Err bitreich.org 70 i- (let ((slot-lisp-name (car slot))) Err bitreich.org 70 i- (c-export out slot-lisp-name))) Err bitreich.org 70 i- (c-format out "(cffi:defcstruct (") Err bitreich.org 70 i- (c-print-symbol out struct-lisp-name t) Err bitreich.org 70 i- (c-printf out " :size %llu)" Err bitreich.org 70 i- (format nil "(long long unsigned) sizeof(~A)" struct-c-name)) Err bitreich.org 70 i- (when documentation Err bitreich.org 70 i- (c-format out "~% ~S" documentation)) Err bitreich.org 70 i- (dolist (slot slots) Err bitreich.org 70 i- (destructuring-bind (slot-lisp-name slot-c-name &key type count) Err bitreich.org 70 i- slot Err bitreich.org 70 i- (c-format out "~% (") Err bitreich.org 70 i- (c-print-symbol out slot-lisp-name t) Err bitreich.org 70 i- (c-format out " ") Err bitreich.org 70 i- (etypecase type Err bitreich.org 70 i- ((eql :auto) Err bitreich.org 70 i- (format out "~& SLOT_SIGNED_P(autotype_tmp, ~A, ~A~@[[0]~]);~@*~%~ Err bitreich.org 70 i- ~& type_name(output, autotype_tmp, sizeofslot(~A, ~A~@[[0]~]));~%" Err bitreich.org 70 i- struct-c-name Err bitreich.org 70 i- slot-c-name Err bitreich.org 70 i- (not (null count)))) Err bitreich.org 70 i- ((or cons symbol) Err bitreich.org 70 i- (c-write out type)) Err bitreich.org 70 i- (string Err bitreich.org 70 i- (c-format out "~A" type))) Err bitreich.org 70 i- (etypecase count Err bitreich.org 70 i- (null t) Err bitreich.org 70 i- (integer Err bitreich.org 70 i- (c-format out " :count ~D" count)) Err bitreich.org 70 i- ((eql :auto) Err bitreich.org 70 i- (c-printf out " :count %llu" Err bitreich.org 70 i- (format nil "(long long unsigned) countofslot(~A, ~A)" Err bitreich.org 70 i- struct-c-name Err bitreich.org 70 i- slot-c-name))) Err bitreich.org 70 i- ((or symbol string) Err bitreich.org 70 i- (format out "~&#ifdef ~A~%" count) Err bitreich.org 70 i- (c-printf out " :count %llu" Err bitreich.org 70 i- (format nil "(long long unsigned) (~A)" count)) Err bitreich.org 70 i- (format out "~&#endif~%"))) Err bitreich.org 70 i- (c-printf out " :offset %lli)" Err bitreich.org 70 i- (format nil "(long long signed) offsetof(~A, ~A)" Err bitreich.org 70 i- struct-c-name Err bitreich.org 70 i- slot-c-name)))) Err bitreich.org 70 i- (c-format out ")~%") Err bitreich.org 70 i- (let ((size-of-constant-name Err bitreich.org 70 i- (symbolicate '#:size-of- struct-lisp-name))) Err bitreich.org 70 i- (c-export out size-of-constant-name) Err bitreich.org 70 i- (c-format out "(cl:defconstant " Err bitreich.org 70 i- size-of-constant-name struct-lisp-name) Err bitreich.org 70 i- (c-print-symbol out size-of-constant-name) Err bitreich.org 70 i- (c-format out " (cffi:foreign-type-size '(:struct ") Err bitreich.org 70 i- (c-print-symbol out struct-lisp-name) Err bitreich.org 70 i- (c-format out ")))~%")))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro define-pseudo-cvar (str name type &key read-only) Err bitreich.org 70 i- (let ((c-parse (let ((*read-eval* nil) Err bitreich.org 70 i- (*readtable* (copy-readtable nil))) Err bitreich.org 70 i- (setf (readtable-case *readtable*) :preserve) Err bitreich.org 70 i- (read-from-string str)))) Err bitreich.org 70 i- (typecase c-parse Err bitreich.org 70 i- (symbol `(cffi:defcvar (,(symbol-name c-parse) ,name Err bitreich.org 70 i- :read-only ,read-only) Err bitreich.org 70 i- ,type)) Err bitreich.org 70 i- (list (unless (and (= (length c-parse) 2) Err bitreich.org 70 i- (null (second c-parse)) Err bitreich.org 70 i- (symbolp (first c-parse)) Err bitreich.org 70 i- (eql #\* (char (symbol-name (first c-parse)) 0))) Err bitreich.org 70 i- (grovel-error "Unable to parse c-string ~s." str)) Err bitreich.org 70 i- (let ((func-name (symbolicate "%" name '#:-accessor))) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (declaim (inline ,func-name)) Err bitreich.org 70 i- (cffi:defcfun (,(string-trim "*" (symbol-name (first c-parse))) Err bitreich.org 70 i- ,func-name) :pointer) Err bitreich.org 70 i- (define-symbol-macro ,name Err bitreich.org 70 i- (cffi:mem-ref (,func-name) ',type))))) Err bitreich.org 70 i- (t (grovel-error "Unable to parse c-string ~s." str))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-name-to-symbol (s) Err bitreich.org 70 i- (intern (substitute #\- #\_ (string-upcase s)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun choose-lisp-and-foreign-names (string-or-list) Err bitreich.org 70 i- (etypecase string-or-list Err bitreich.org 70 i- (string (values string-or-list (foreign-name-to-symbol string-or-list))) Err bitreich.org 70 i- (list (destructuring-bind (fname lname &rest args) string-or-list Err bitreich.org 70 i- (declare (ignore args)) Err bitreich.org 70 i- (assert (and (stringp fname) (symbolp lname))) Err bitreich.org 70 i- (values fname lname))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-grovel-syntax cvar (name type &key read-only) Err bitreich.org 70 i- (multiple-value-bind (c-name lisp-name) Err bitreich.org 70 i- (choose-lisp-and-foreign-names name) Err bitreich.org 70 i- (c-section-header out "cvar" lisp-name) Err bitreich.org 70 i- (c-export out lisp-name) Err bitreich.org 70 i- (c-printf out "(cffi-grovel::define-pseudo-cvar \"%s\" " Err bitreich.org 70 i- (format nil "indirect_stringify(~A)" c-name)) Err bitreich.org 70 i- (c-print-symbol out lisp-name t) Err bitreich.org 70 i- (c-format out " ") Err bitreich.org 70 i- (c-write out type) Err bitreich.org 70 i- (when read-only Err bitreich.org 70 i- (c-format out " :read-only t")) Err bitreich.org 70 i- (c-format out ")~%"))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; FIXME: where would docs on enum elements go? Err bitreich.org 70 i-(define-grovel-syntax cenum (name &rest enum-list) Err bitreich.org 70 i- (destructuring-bind (name &key base-type define-constants) Err bitreich.org 70 i- (ensure-list name) Err bitreich.org 70 i- (c-section-header out "cenum" name) Err bitreich.org 70 i- (c-export out name) Err bitreich.org 70 i- (c-format out "(cffi:defcenum (") Err bitreich.org 70 i- (c-print-symbol out name t) Err bitreich.org 70 i- (when base-type Err bitreich.org 70 i- (c-printf out " ") Err bitreich.org 70 i- (c-print-symbol out base-type t)) Err bitreich.org 70 i- (c-format out ")") Err bitreich.org 70 i- (dolist (enum enum-list) Err bitreich.org 70 i- (destructuring-bind ((lisp-name &rest c-names) &key documentation) Err bitreich.org 70 i- enum Err bitreich.org 70 i- (declare (ignore documentation)) Err bitreich.org 70 i- (check-type lisp-name keyword) Err bitreich.org 70 i- (loop for c-name in c-names do Err bitreich.org 70 i- (check-type c-name string) Err bitreich.org 70 i- (c-format out " (") Err bitreich.org 70 i- (c-print-symbol out lisp-name) Err bitreich.org 70 i- (c-format out " ") Err bitreich.org 70 i- (c-print-integer-constant out c-name base-type) Err bitreich.org 70 i- (c-format out ")~%")))) Err bitreich.org 70 i- (c-format out ")~%") Err bitreich.org 70 i- (when define-constants Err bitreich.org 70 i- (define-constants-from-enum out enum-list)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-grovel-syntax constantenum (name &rest enum-list) Err bitreich.org 70 i- (destructuring-bind (name &key base-type define-constants) Err bitreich.org 70 i- (ensure-list name) Err bitreich.org 70 i- (c-section-header out "constantenum" name) Err bitreich.org 70 i- (c-export out name) Err bitreich.org 70 i- (c-format out "(cffi:defcenum (") Err bitreich.org 70 i- (c-print-symbol out name t) Err bitreich.org 70 i- (when base-type Err bitreich.org 70 i- (c-printf out " ") Err bitreich.org 70 i- (c-print-symbol out base-type t)) Err bitreich.org 70 i- (c-format out ")") Err bitreich.org 70 i- (dolist (enum enum-list) Err bitreich.org 70 i- (destructuring-bind ((lisp-name &rest c-names) Err bitreich.org 70 i- &key optional documentation) enum Err bitreich.org 70 i- (declare (ignore documentation)) Err bitreich.org 70 i- (check-type lisp-name keyword) Err bitreich.org 70 i- (c-format out "~% (") Err bitreich.org 70 i- (c-print-symbol out lisp-name) Err bitreich.org 70 i- (loop for c-name in c-names do Err bitreich.org 70 i- (check-type c-name string) Err bitreich.org 70 i- (format out "~&#ifdef ~A~%" c-name) Err bitreich.org 70 i- (c-format out " ") Err bitreich.org 70 i- (c-print-integer-constant out c-name base-type) Err bitreich.org 70 i- (format out "~&#else~%")) Err bitreich.org 70 i- (unless optional Err bitreich.org 70 i- (c-format out Err bitreich.org 70 i- "~% #.(cl:progn ~ Err bitreich.org 70 i- (cl:warn 'cffi-grovel:missing-definition :name '~A) ~ Err bitreich.org 70 i- -1)" Err bitreich.org 70 i- lisp-name)) Err bitreich.org 70 i- (dotimes (i (length c-names)) Err bitreich.org 70 i- (format out "~&#endif~%")) Err bitreich.org 70 i- (c-format out ")"))) Err bitreich.org 70 i- (c-format out ")~%") Err bitreich.org 70 i- (when define-constants Err bitreich.org 70 i- (define-constants-from-enum out enum-list)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun define-constants-from-enum (out enum-list) Err bitreich.org 70 i- (dolist (enum enum-list) Err bitreich.org 70 i- (destructuring-bind ((lisp-name &rest c-names) &rest options) Err bitreich.org 70 i- enum Err bitreich.org 70 i- (%process-grovel-form Err bitreich.org 70 i- 'constant out Err bitreich.org 70 i- `((,(intern (string lisp-name)) ,(car c-names)) Err bitreich.org 70 i- ,@options))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun convert-intmax-constant (constant base-type) Err bitreich.org 70 i- "Convert the C CONSTANT to an integer of BASE-TYPE. The constant is Err bitreich.org 70 i-assumed to be an integer printed using the PRIiMAX printf(3) format Err bitreich.org 70 i-string." Err bitreich.org 70 i- ;; | C Constant | Type | Return Value | Notes | Err bitreich.org 70 i- ;; |------------+---------+--------------+---------------------------------------| Err bitreich.org 70 i- ;; | -1 | :int32 | -1 | | Err bitreich.org 70 i- ;; | 0xffffffff | :int32 | -1 | CONSTANT may be a positive integer if | Err bitreich.org 70 i- ;; | | | | sizeof(intmax_t) > sizeof(int32_t) | Err bitreich.org 70 i- ;; | 0xffffffff | :uint32 | 4294967295 | | Err bitreich.org 70 i- ;; | -1 | :uint32 | 4294967295 | | Err bitreich.org 70 i- ;; |------------+---------+--------------+---------------------------------------| Err bitreich.org 70 i- (let* ((canonical-type (cffi::canonicalize-foreign-type base-type)) Err bitreich.org 70 i- (type-bits (* 8 (cffi:foreign-type-size canonical-type))) Err bitreich.org 70 i- (2^n (ash 1 type-bits))) Err bitreich.org 70 i- (ecase canonical-type Err bitreich.org 70 i- ((:unsigned-char :unsigned-short :unsigned-int Err bitreich.org 70 i- :unsigned-long :unsigned-long-long) Err bitreich.org 70 i- (mod constant 2^n)) Err bitreich.org 70 i- ((:char :short :int :long :long-long) Err bitreich.org 70 i- (let ((v (mod constant 2^n))) Err bitreich.org 70 i- (if (logbitp (1- type-bits) v) Err bitreich.org 70 i- (- (mask-field (byte (1- type-bits) 0) v) Err bitreich.org 70 i- (ash 1 (1- type-bits))) Err bitreich.org 70 i- v)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-type-to-printf-specification (type) Err bitreich.org 70 i- "Return the printf specification associated with the foreign type TYPE." Err bitreich.org 70 i- (ecase (cffi::canonicalize-foreign-type type) Err bitreich.org 70 i- (:char "\"%hhd\"") Err bitreich.org 70 i- (:unsigned-char "\"%hhu\"") Err bitreich.org 70 i- (:short "\"%hd\"") Err bitreich.org 70 i- (:unsigned-short "\"%hu\"") Err bitreich.org 70 i- (:int "\"%d\"") Err bitreich.org 70 i- (:unsigned-int "\"%u\"") Err bitreich.org 70 i- (:long "\"%ld\"") Err bitreich.org 70 i- (:unsigned-long "\"%lu\"") Err bitreich.org 70 i- (:long-long "\"%lld\"") Err bitreich.org 70 i- (:unsigned-long-long "\"%llu\""))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Defines a bitfield, with elements specified as ((LISP-NAME C-NAME) Err bitreich.org 70 i-;; &key DOCUMENTATION). NAME-AND-OPTS can be either a symbol as name, Err bitreich.org 70 i-;; or a list (NAME &key BASE-TYPE). Err bitreich.org 70 i-(define-grovel-syntax bitfield (name-and-opts &rest masks) Err bitreich.org 70 i- (destructuring-bind (name &key base-type) Err bitreich.org 70 i- (ensure-list name-and-opts) Err bitreich.org 70 i- (c-section-header out "bitfield" name) Err bitreich.org 70 i- (c-export out name) Err bitreich.org 70 i- (c-format out "(cffi:defbitfield (") Err bitreich.org 70 i- (c-print-symbol out name t) Err bitreich.org 70 i- (when base-type Err bitreich.org 70 i- (c-printf out " ") Err bitreich.org 70 i- (c-print-symbol out base-type t)) Err bitreich.org 70 i- (c-format out ")") Err bitreich.org 70 i- (dolist (mask masks) Err bitreich.org 70 i- (destructuring-bind ((lisp-name &rest c-names) Err bitreich.org 70 i- &key optional documentation) mask Err bitreich.org 70 i- (declare (ignore documentation)) Err bitreich.org 70 i- (check-type lisp-name symbol) Err bitreich.org 70 i- (c-format out "~% (") Err bitreich.org 70 i- (c-print-symbol out lisp-name) Err bitreich.org 70 i- (c-format out " ") Err bitreich.org 70 i- (dolist (c-name c-names) Err bitreich.org 70 i- (check-type c-name string) Err bitreich.org 70 i- (format out "~&#ifdef ~A~%" c-name) Err bitreich.org 70 i- (format out "~& fprintf(output, ~A, ~A);~%" Err bitreich.org 70 i- (foreign-type-to-printf-specification (or base-type :int)) Err bitreich.org 70 i- c-name) Err bitreich.org 70 i- (format out "~&#else~%")) Err bitreich.org 70 i- (unless optional Err bitreich.org 70 i- (c-format out Err bitreich.org 70 i- "~% #.(cl:progn ~ Err bitreich.org 70 i- (cl:warn 'cffi-grovel:missing-definition :name '~A) ~ Err bitreich.org 70 i- -1)" Err bitreich.org 70 i- lisp-name)) Err bitreich.org 70 i- (dotimes (i (length c-names)) Err bitreich.org 70 i- (format out "~&#endif~%")) Err bitreich.org 70 i- (c-format out ")"))) Err bitreich.org 70 i- (c-format out ")~%"))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Wrapper Generation Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Here we generate a C file from a s-exp specification but instead Err bitreich.org 70 i-;;; of compiling and running it, we compile it as a shared library Err bitreich.org 70 i-;;; that can be subsequently loaded with LOAD-FOREIGN-LIBRARY. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Useful to get at macro functionality, errno, system calls, Err bitreich.org 70 i-;;; functions that handle structures by value, etc... Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Matching CFFI bindings are generated along with said C file. Err bitreich.org 70 i- Err bitreich.org 70 i-(defun process-wrapper-form (out form) Err bitreich.org 70 i- (%process-wrapper-form (form-kind form) out (cdr form))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; The various operators push Lisp forms onto this list which will be Err bitreich.org 70 i-;;; written out by PROCESS-WRAPPER-FILE once everything is processed. Err bitreich.org 70 i-(defvar *lisp-forms*) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun generate-c-lib-file (input-file output-defaults) Err bitreich.org 70 i- (let ((*lisp-forms* nil) Err bitreich.org 70 i- (c-file (make-c-file-name output-defaults "__wrapper"))) Err bitreich.org 70 i- (with-open-file (out c-file :direction :output :if-exists :supersede) Err bitreich.org 70 i- (with-open-file (in input-file :direction :input) Err bitreich.org 70 i- (write-string *header* out) Err bitreich.org 70 i- (loop for form = (read in nil nil) while form Err bitreich.org 70 i- do (process-wrapper-form out form)))) Err bitreich.org 70 i- (values c-file (nreverse *lisp-forms*)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-soname (lib-soname output-defaults) Err bitreich.org 70 i- (make-pathname :name lib-soname Err bitreich.org 70 i- :defaults output-defaults)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun generate-bindings-file (lib-file lib-soname lisp-forms output-defaults) Err bitreich.org 70 i- (with-standard-io-syntax Err bitreich.org 70 i- (let ((lisp-file (tmp-lisp-file-name output-defaults)) Err bitreich.org 70 i- (*print-readably* nil) Err bitreich.org 70 i- (*print-escape* t)) Err bitreich.org 70 i- (with-open-file (out lisp-file :direction :output :if-exists :supersede) Err bitreich.org 70 i- (format out ";;;; This file was automatically generated by cffi-grovel.~%~ Err bitreich.org 70 i- ;;;; Do not edit by hand.~%") Err bitreich.org 70 i- (let ((*package* (find-package '#:cl)) Err bitreich.org 70 i- (named-library-name Err bitreich.org 70 i- (let ((*package* (find-package :keyword)) Err bitreich.org 70 i- (*read-eval* nil)) Err bitreich.org 70 i- (read-from-string lib-soname)))) Err bitreich.org 70 i- (pprint `(progn Err bitreich.org 70 i- (cffi:define-foreign-library Err bitreich.org 70 i- (,named-library-name Err bitreich.org 70 i- :type :grovel-wrapper Err bitreich.org 70 i- :search-path ,(directory-namestring lib-file)) Err bitreich.org 70 i- (t ,(namestring (make-so-file-name lib-soname)))) Err bitreich.org 70 i- (cffi:use-foreign-library ,named-library-name)) Err bitreich.org 70 i- out) Err bitreich.org 70 i- (fresh-line out)) Err bitreich.org 70 i- (dolist (form lisp-forms) Err bitreich.org 70 i- (print form out)) Err bitreich.org 70 i- (terpri out)) Err bitreich.org 70 i- lisp-file))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun cc-include-grovel-argument () Err bitreich.org 70 i- (format nil "-I~A" (truename (system-source-directory :cffi-grovel)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; *PACKAGE* is rebound so that the IN-PACKAGE form can set it during Err bitreich.org 70 i-;;; *the extent of a given wrapper file. Err bitreich.org 70 i-(defun process-wrapper-file (input-file Err bitreich.org 70 i- &key Err bitreich.org 70 i- (output-defaults (make-pathname :defaults input-file :type "processed")) Err bitreich.org 70 i- lib-soname) Err bitreich.org 70 i- (with-standard-io-syntax Err bitreich.org 70 i- (multiple-value-bind (c-file lisp-forms) Err bitreich.org 70 i- (generate-c-lib-file input-file output-defaults) Err bitreich.org 70 i- (let ((lib-file (make-so-file-name (make-soname lib-soname output-defaults))) Err bitreich.org 70 i- (o-file (make-o-file-name output-defaults "__wrapper"))) Err bitreich.org 70 i- (cc-compile o-file (list (cc-include-grovel-argument) c-file)) Err bitreich.org 70 i- (link-shared-library lib-file (list o-file)) Err bitreich.org 70 i- ;; FIXME: hardcoded library path. Err bitreich.org 70 i- (values (generate-bindings-file lib-file lib-soname lisp-forms output-defaults) Err bitreich.org 70 i- lib-file))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric %process-wrapper-form (name out arguments) Err bitreich.org 70 i- (:method (name out arguments) Err bitreich.org 70 i- (declare (ignore out arguments)) Err bitreich.org 70 i- (grovel-error "Unknown Grovel syntax: ~S" name))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; OUT is lexically bound to the output stream within BODY. Err bitreich.org 70 i-(defmacro define-wrapper-syntax (name lambda-list &body body) Err bitreich.org 70 i- (with-unique-names (name-var args) Err bitreich.org 70 i- `(defmethod %process-wrapper-form ((,name-var (eql ',name)) out ,args) Err bitreich.org 70 i- (declare (ignorable out)) Err bitreich.org 70 i- (destructuring-bind ,lambda-list ,args Err bitreich.org 70 i- ,@body)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-wrapper-syntax progn (&rest forms) Err bitreich.org 70 i- (dolist (form forms) Err bitreich.org 70 i- (process-wrapper-form out form))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-wrapper-syntax in-package (name) Err bitreich.org 70 i- (assert (find-package name) (name) Err bitreich.org 70 i- "Wrapper file specified (in-package ~s)~%~ Err bitreich.org 70 i- however that does not name a known package." Err bitreich.org 70 i- name) Err bitreich.org 70 i- (setq *package* (find-package name)) Err bitreich.org 70 i- (push `(in-package ,name) *lisp-forms*)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-wrapper-syntax c (&rest strings) Err bitreich.org 70 i- (dolist (string strings) Err bitreich.org 70 i- (write-line string out))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-wrapper-syntax flag (&rest flags) Err bitreich.org 70 i- (appendf *cc-flags* (parse-command-flags-list flags))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-wrapper-syntax proclaim (&rest proclamations) Err bitreich.org 70 i- (push `(proclaim ,@proclamations) *lisp-forms*)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-wrapper-syntax declaim (&rest declamations) Err bitreich.org 70 i- (push `(declaim ,@declamations) *lisp-forms*)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-wrapper-syntax define (name &optional value) Err bitreich.org 70 i- (format out "#define ~A~@[ ~A~]~%" name value)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-wrapper-syntax include (&rest includes) Err bitreich.org 70 i- (format out "~{#include <~A>~%~}" includes)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; FIXME: this function is not complete. Should probably follow Err bitreich.org 70 i-;;; typedefs? Should definitely understand pointer types. Err bitreich.org 70 i-(defun c-type-name (typespec) Err bitreich.org 70 i- (let ((spec (ensure-list typespec))) Err bitreich.org 70 i- (if (stringp (car spec)) Err bitreich.org 70 i- (car spec) Err bitreich.org 70 i- (case (car spec) Err bitreich.org 70 i- ((:uchar :unsigned-char) "unsigned char") Err bitreich.org 70 i- ((:unsigned-short :ushort) "unsigned short") Err bitreich.org 70 i- ((:unsigned-int :uint) "unsigned int") Err bitreich.org 70 i- ((:unsigned-long :ulong) "unsigned long") Err bitreich.org 70 i- ((:long-long :llong) "long long") Err bitreich.org 70 i- ((:unsigned-long-long :ullong) "unsigned long long") Err bitreich.org 70 i- (:pointer "void*") Err bitreich.org 70 i- (:string "char*") Err bitreich.org 70 i- (t (cffi::foreign-name (car spec) nil)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun cffi-type (typespec) Err bitreich.org 70 i- (if (and (listp typespec) (stringp (car typespec))) Err bitreich.org 70 i- (second typespec) Err bitreich.org 70 i- typespec)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun symbol* (s) Err bitreich.org 70 i- (check-type s (and symbol (not null))) Err bitreich.org 70 i- s) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-wrapper-syntax defwrapper (name-and-options rettype &rest args) Err bitreich.org 70 i- (multiple-value-bind (lisp-name foreign-name options) Err bitreich.org 70 i- (cffi::parse-name-and-options name-and-options) Err bitreich.org 70 i- (let* ((foreign-name-wrap (strcat foreign-name "_cffi_wrap")) Err bitreich.org 70 i- (fargs (mapcar (lambda (arg) Err bitreich.org 70 i- (list (c-type-name (second arg)) Err bitreich.org 70 i- (cffi::foreign-name (first arg) nil))) Err bitreich.org 70 i- args)) Err bitreich.org 70 i- (fargnames (mapcar #'second fargs))) Err bitreich.org 70 i- ;; output C code Err bitreich.org 70 i- (format out "~A ~A" (c-type-name rettype) foreign-name-wrap) Err bitreich.org 70 i- (format out "(~{~{~A ~A~}~^, ~})~%" fargs) Err bitreich.org 70 i- (format out "{~% return ~A(~{~A~^, ~});~%}~%~%" foreign-name fargnames) Err bitreich.org 70 i- ;; matching bindings Err bitreich.org 70 i- (push `(cffi:defcfun (,foreign-name-wrap ,lisp-name ,@options) Err bitreich.org 70 i- ,(cffi-type rettype) Err bitreich.org 70 i- ,@(mapcar (lambda (arg) Err bitreich.org 70 i- (list (symbol* (first arg)) Err bitreich.org 70 i- (cffi-type (second arg)))) Err bitreich.org 70 i- args)) Err bitreich.org 70 i- *lisp-forms*)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-wrapper-syntax defwrapper* (name-and-options rettype args &rest c-lines) Err bitreich.org 70 i- ;; output C code Err bitreich.org 70 i- (multiple-value-bind (lisp-name foreign-name options) Err bitreich.org 70 i- (cffi::parse-name-and-options name-and-options) Err bitreich.org 70 i- (let ((foreign-name-wrap (strcat foreign-name "_cffi_wrap")) Err bitreich.org 70 i- (fargs (mapcar (lambda (arg) Err bitreich.org 70 i- (list (c-type-name (second arg)) Err bitreich.org 70 i- (cffi::foreign-name (first arg) nil))) Err bitreich.org 70 i- args))) Err bitreich.org 70 i- (format out "~A ~A" (c-type-name rettype) Err bitreich.org 70 i- foreign-name-wrap) Err bitreich.org 70 i- (format out "(~{~{~A ~A~}~^, ~})~%" fargs) Err bitreich.org 70 i- (format out "{~%~{ ~A~%~}}~%~%" c-lines) Err bitreich.org 70 i- ;; matching bindings Err bitreich.org 70 i- (push `(cffi:defcfun (,foreign-name-wrap ,lisp-name ,@options) Err bitreich.org 70 i- ,(cffi-type rettype) Err bitreich.org 70 i- ,@(mapcar (lambda (arg) Err bitreich.org 70 i- (list (symbol* (first arg)) Err bitreich.org 70 i- (cffi-type (second arg)))) Err bitreich.org 70 i- args)) Err bitreich.org 70 i- *lisp-forms*)))) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/grovel/package.lisp b/3rdparties/software/cffi_0.20.0/grovel/package.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/grovel/package.lisp.gph bitreich.org 70 i@@ -1,36 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; package.lisp --- Groveler DEFPACKAGE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(uiop:define-package #:cffi-grovel Err bitreich.org 70 i- (:mix #:cffi-toolchain #:asdf #:uiop #:alexandria #:common-lisp) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- ;; Class name Err bitreich.org 70 i- #:grovel-file Err bitreich.org 70 i- #:process-grovel-file Err bitreich.org 70 i- #:wrapper-file Err bitreich.org 70 i- #:process-wrapper-file Err bitreich.org 70 i- ;; Error conditions Err bitreich.org 70 i- #:grovel-error Err bitreich.org 70 i- #:missing-definition)) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/libffi/funcall.lisp b/3rdparties/software/cffi_0.20.0/libffi/funcall.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/libffi/funcall.lisp.gph bitreich.org 70 i@@ -1,132 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; funcall.lisp -- FOREIGN-FUNCALL implementation using libffi Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2009, 2010, 2011 Liam M. Healy Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition libffi-error (cffi-error) Err bitreich.org 70 i- ((function-name Err bitreich.org 70 i- :initarg :function-name :reader function-name))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition simple-libffi-error (simple-error libffi-error) Err bitreich.org 70 i- ()) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun libffi-error (function-name format-control &rest format-arguments) Err bitreich.org 70 i- (error 'simple-libffi-error Err bitreich.org 70 i- :function-name function-name Err bitreich.org 70 i- :format-control format-control Err bitreich.org 70 i- :format-arguments format-arguments)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-libffi-cif (function-name return-type argument-types Err bitreich.org 70 i- &optional (abi :default-abi)) Err bitreich.org 70 i- "Generate or retrieve the Call InterFace needed to call the function through libffi." Err bitreich.org 70 i- (let* ((argument-count (length argument-types)) Err bitreich.org 70 i- (cif (foreign-alloc '(:struct ffi-cif))) Err bitreich.org 70 i- (ffi-argtypes (foreign-alloc :pointer :count argument-count))) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- :for type :in argument-types Err bitreich.org 70 i- :for index :from 0 Err bitreich.org 70 i- :do (setf (mem-aref ffi-argtypes :pointer index) Err bitreich.org 70 i- (make-libffi-type-descriptor (parse-type type)))) Err bitreich.org 70 i- (unless (eql :ok (libffi/prep-cif cif abi argument-count Err bitreich.org 70 i- (make-libffi-type-descriptor (parse-type return-type)) Err bitreich.org 70 i- ffi-argtypes)) Err bitreich.org 70 i- (libffi-error function-name Err bitreich.org 70 i- "The 'ffi_prep_cif' libffi call failed for function ~S." Err bitreich.org 70 i- function-name)) Err bitreich.org 70 i- cif)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun free-libffi-cif (ptr) Err bitreich.org 70 i- (foreign-free (foreign-slot-value ptr '(:struct ffi-cif) 'argument-types)) Err bitreich.org 70 i- (foreign-free ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun translate-objects-ret (symbols function-arguments types return-type call-form) Err bitreich.org 70 i- (translate-objects Err bitreich.org 70 i- symbols Err bitreich.org 70 i- function-arguments Err bitreich.org 70 i- types Err bitreich.org 70 i- return-type Err bitreich.org 70 i- (if (or (eql return-type :void) Err bitreich.org 70 i- (typep (parse-type return-type) 'translatable-foreign-type)) Err bitreich.org 70 i- call-form Err bitreich.org 70 i- ;; built-in types won't be translated by Err bitreich.org 70 i- ;; expand-from-foreign, we have to do it here Err bitreich.org 70 i- `(mem-ref Err bitreich.org 70 i- ,call-form Err bitreich.org 70 i- ',(canonicalize-foreign-type return-type))) Err bitreich.org 70 i- t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-funcall-form/fsbv-with-libffi (function function-arguments symbols types Err bitreich.org 70 i- return-type argument-types Err bitreich.org 70 i- &optional pointerp (abi :default-abi)) Err bitreich.org 70 i- "A body of foreign-funcall calling the libffi function #'call (ffi_call)." Err bitreich.org 70 i- (let ((argument-count (length argument-types))) Err bitreich.org 70 i- `(with-foreign-objects ((argument-values :pointer ,argument-count) Err bitreich.org 70 i- ,@(unless (eql return-type :void) Err bitreich.org 70 i- `((result ',return-type)))) Err bitreich.org 70 i- ,(translate-objects-ret Err bitreich.org 70 i- symbols function-arguments types return-type Err bitreich.org 70 i- ;; NOTE: We must delay the cif creation until the first call Err bitreich.org 70 i- ;; because it's FOREIGN-ALLOC'd, i.e. it gets corrupted by an Err bitreich.org 70 i- ;; image save/restore cycle. This way a lib will remain usable Err bitreich.org 70 i- ;; through a save/restore cycle if the save happens before any Err bitreich.org 70 i- ;; FFI calls will have been made, i.e. nothing is malloc'd yet. Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (loop Err bitreich.org 70 i- :for arg :in (list ,@symbols) Err bitreich.org 70 i- :for count :from 0 Err bitreich.org 70 i- :do (setf (mem-aref argument-values :pointer count) arg)) Err bitreich.org 70 i- (let* ((libffi-cif-cache (load-time-value (cons 'libffi-cif-cache nil))) Err bitreich.org 70 i- (libffi-cif (or (cdr libffi-cif-cache) Err bitreich.org 70 i- (setf (cdr libffi-cif-cache) Err bitreich.org 70 i- ;; FIXME ideally we should install a finalizer on the cons Err bitreich.org 70 i- ;; that calls FREE-LIBFFI-CIF on the cif (when the function Err bitreich.org 70 i- ;; gets redefined, and the cif becomes unreachable). but a Err bitreich.org 70 i- ;; finite world is full of compromises... - attila Err bitreich.org 70 i- (make-libffi-cif ,function ',return-type Err bitreich.org 70 i- ',argument-types ',abi))))) Err bitreich.org 70 i- (libffi/call libffi-cif Err bitreich.org 70 i- ,(if pointerp Err bitreich.org 70 i- function Err bitreich.org 70 i- `(foreign-symbol-pointer ,function)) Err bitreich.org 70 i- ,(if (eql return-type :void) '(null-pointer) 'result) Err bitreich.org 70 i- argument-values) Err bitreich.org 70 i- ,(if (eql return-type :void) Err bitreich.org 70 i- '(values) Err bitreich.org 70 i- 'result))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(setf *foreign-structures-by-value* 'foreign-funcall-form/fsbv-with-libffi) Err bitreich.org 70 i- Err bitreich.org 70 i-;; DEPRECATED Its presence encourages the use of #+fsbv which may lead to the Err bitreich.org 70 i-;; situation where a fasl was produced by an image that has fsbv feature Err bitreich.org 70 i-;; and then ends up being loaded into an image later that has no fsbv support Err bitreich.org 70 i-;; loaded. Use explicit ASDF dependencies instead and assume the presence Err bitreich.org 70 i-;; of the feature accordingly. Err bitreich.org 70 i-(pushnew :fsbv *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;; DEPRECATED This is here only for backwards compatibility until its fate is Err bitreich.org 70 i-;; decided. See the mailing list discussion for details. Err bitreich.org 70 i-(defctype :sizet size-t) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/libffi/libffi-functions.lisp b/3rdparties/software/cffi_0.20.0/libffi/libffi-functions.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/libffi/libffi-functions.lisp.gph bitreich.org 70 i@@ -1,43 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; init.lisp --- Load libffi and define basics Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2009, 2010, 2011 Liam Healy Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; See file:///usr/share/doc/libffi-dev/html/The-Basics.html#The-Basics Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun ("ffi_prep_cif" libffi/prep-cif) status Err bitreich.org 70 i- (ffi-cif :pointer) Err bitreich.org 70 i- (ffi-abi abi) Err bitreich.org 70 i- (nargs :uint) Err bitreich.org 70 i- (rtype :pointer) Err bitreich.org 70 i- (argtypes :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun ("ffi_call" libffi/call) :void Err bitreich.org 70 i- (ffi-cif :pointer) Err bitreich.org 70 i- (function :pointer) Err bitreich.org 70 i- (rvalue :pointer) Err bitreich.org 70 i- (avalues :pointer)) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/libffi/libffi-types.lisp b/3rdparties/software/cffi_0.20.0/libffi/libffi-types.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/libffi/libffi-types.lisp.gph bitreich.org 70 i@@ -1,109 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; libffi-types.lisp -- CFFI-Grovel definitions for libffi Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2009, 2010, 2011, 2017 Liam M. Healy Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi) Err bitreich.org 70 i- Err bitreich.org 70 i-#+linux Err bitreich.org 70 i-(define "_GNU_SOURCE") Err bitreich.org 70 i- Err bitreich.org 70 i-;; When installed through Mac Ports, libffi include files Err bitreich.org 70 i-;; will be found in /opt/local/include. Err bitreich.org 70 i-#+darwin Err bitreich.org 70 i-(cc-flags "-I/opt/local/include/") Err bitreich.org 70 i- Err bitreich.org 70 i-#+openbsd Err bitreich.org 70 i-(cc-flags "-I/usr/local/include") Err bitreich.org 70 i- Err bitreich.org 70 i-#+freebsd Err bitreich.org 70 i-(cc-flags "-I/usr/local/include") Err bitreich.org 70 i- Err bitreich.org 70 i-(pkg-config-cflags "libffi" :optional t) Err bitreich.org 70 i- Err bitreich.org 70 i-#+darwin Err bitreich.org 70 i-(include "ffi/ffi.h") Err bitreich.org 70 i-#-darwin Err bitreich.org 70 i-(include "ffi.h") Err bitreich.org 70 i- Err bitreich.org 70 i-(cenum status Err bitreich.org 70 i- ((:ok "FFI_OK")) Err bitreich.org 70 i- ((:bad-typedef "FFI_BAD_TYPEDEF")) Err bitreich.org 70 i- ((:bad-abi "FFI_BAD_ABI"))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+freebsd Err bitreich.org 70 i-(cenum abi Err bitreich.org 70 i- ((:default-abi "FFI_DEFAULT_ABI"))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and windows x86-64) Err bitreich.org 70 i-(cenum abi Err bitreich.org 70 i- ((:default-abi "FFI_DEFAULT_ABI")) Err bitreich.org 70 i- ((:win64 "FFI_WIN64"))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and windows (not x86-64)) Err bitreich.org 70 i-(cenum abi Err bitreich.org 70 i- ((:default-abi "FFI_DEFAULT_ABI")) Err bitreich.org 70 i- ((:sysv "FFI_SYSV")) Err bitreich.org 70 i- ((:stdcall "FFI_STDCALL"))) Err bitreich.org 70 i- Err bitreich.org 70 i-#-(or freebsd windows) Err bitreich.org 70 i-(cenum abi Err bitreich.org 70 i- ((:default-abi "FFI_DEFAULT_ABI")) Err bitreich.org 70 i- ((:sysv "FFI_SYSV")) Err bitreich.org 70 i- ((:unix64 "FFI_UNIX64"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(ctype ffi-abi "ffi_abi") Err bitreich.org 70 i- Err bitreich.org 70 i-(ctype size-t "size_t") Err bitreich.org 70 i- Err bitreich.org 70 i-(cstruct ffi-type "struct _ffi_type" Err bitreich.org 70 i- (size "size" :type size-t) Err bitreich.org 70 i- (alignment "alignment" :type :unsigned-short) Err bitreich.org 70 i- (type "type" :type :unsigned-short) Err bitreich.org 70 i- (elements "elements" :type :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(cstruct ffi-cif "ffi_cif" Err bitreich.org 70 i- (abi "abi" :type ffi-abi) Err bitreich.org 70 i- (argument-count "nargs" :type :unsigned-int) Err bitreich.org 70 i- (argument-types "arg_types" :type :pointer) Err bitreich.org 70 i- (return-type "rtype" :type :pointer) Err bitreich.org 70 i- (bytes "bytes" :type :unsigned-int) Err bitreich.org 70 i- (flags "flags" :type :unsigned-int)) Err bitreich.org 70 i- Err bitreich.org 70 i-(constant (+type-void+ "FFI_TYPE_VOID")) Err bitreich.org 70 i-(constant (+type-int+ "FFI_TYPE_INT")) Err bitreich.org 70 i-(constant (+type-float+ "FFI_TYPE_FLOAT")) Err bitreich.org 70 i-(constant (+type-double+ "FFI_TYPE_DOUBLE")) Err bitreich.org 70 i-(constant (+type-longdouble+ "FFI_TYPE_LONGDOUBLE")) Err bitreich.org 70 i-(constant (+type-uint8+ "FFI_TYPE_UINT8")) Err bitreich.org 70 i-(constant (+type-sint8+ "FFI_TYPE_SINT8")) Err bitreich.org 70 i-(constant (+type-uint16+ "FFI_TYPE_UINT16")) Err bitreich.org 70 i-(constant (+type-sint16+ "FFI_TYPE_SINT16")) Err bitreich.org 70 i-(constant (+type-uint32+ "FFI_TYPE_UINT32")) Err bitreich.org 70 i-(constant (+type-sint32+ "FFI_TYPE_SINT32")) Err bitreich.org 70 i-(constant (+type-uint64+ "FFI_TYPE_UINT64")) Err bitreich.org 70 i-(constant (+type-sint64+ "FFI_TYPE_SINT64")) Err bitreich.org 70 i-(constant (+type-struct+ "FFI_TYPE_STRUCT")) Err bitreich.org 70 i-(constant (+type-pointer+ "FFI_TYPE_POINTER")) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/libffi/libffi.lisp b/3rdparties/software/cffi_0.20.0/libffi/libffi.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/libffi/libffi.lisp.gph bitreich.org 70 i@@ -1,38 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; libffi.lisp --- Load libffi Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2009, 2011 Liam M. Healy Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-foreign-library (libffi) Err bitreich.org 70 i- (:darwin (:or "libffi.dylib" "libffi32.dylib" "/usr/lib/libffi.dylib")) Err bitreich.org 70 i- (:solaris (:or "/usr/lib/amd64/libffi.so" "/usr/lib/libffi.so")) Err bitreich.org 70 i- (:openbsd "libffi.so") Err bitreich.org 70 i- (:unix (:or "libffi.so.6" "libffi32.so.6" "libffi.so.5" "libffi32.so.5")) Err bitreich.org 70 i- (:windows (:or "libffi-6.dll" "libffi-5.dll" "libffi.dll")) Err bitreich.org 70 i- (t (:default "libffi"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(load-foreign-library 'libffi) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/libffi/type-descriptors.lisp b/3rdparties/software/cffi_0.20.0/libffi/type-descriptors.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/libffi/type-descriptors.lisp.gph bitreich.org 70 i@@ -1,106 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; type-descriptors.lisp --- Build malloc'd libffi type descriptors Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2009, 2011 Liam M. Healy Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro type-descriptor-ptr (type) Err bitreich.org 70 i- `(foreign-symbol-pointer ,(format nil "ffi_type_~(~A~)" type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro type-descriptor-ptr/integer (type) Err bitreich.org 70 i- `(foreign-symbol-pointer Err bitreich.org 70 i- ,(format nil "ffi_type_~Aint~D" Err bitreich.org 70 i- (if (string-equal type "unsigned" Err bitreich.org 70 i- :end1 (min 8 (length (string type)))) Err bitreich.org 70 i- "u" "s") Err bitreich.org 70 i- (* 8 (foreign-type-size type))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %make-libffi-type-descriptor/struct (type) Err bitreich.org 70 i- (labels Err bitreich.org 70 i- ((slot-multiplicity (slot) Err bitreich.org 70 i- (if (typep slot 'aggregate-struct-slot) Err bitreich.org 70 i- (slot-count slot) Err bitreich.org 70 i- 1)) Err bitreich.org 70 i- (number-of-items (structure-type) Err bitreich.org 70 i- "Total number of items in the foreign structure." Err bitreich.org 70 i- (loop for val being the hash-value of (structure-slots structure-type) Err bitreich.org 70 i- sum (slot-multiplicity val)))) Err bitreich.org 70 i- (let* ((ptr (foreign-alloc '(:struct ffi-type))) Err bitreich.org 70 i- (nitems (number-of-items type)) Err bitreich.org 70 i- (type-pointer-array Err bitreich.org 70 i- (foreign-alloc :pointer :count (1+ nitems)))) Err bitreich.org 70 i- (loop for slot in (slots-in-order type) Err bitreich.org 70 i- for ltp = (make-libffi-type-descriptor Err bitreich.org 70 i- (parse-type (slot-type slot))) Err bitreich.org 70 i- with slot-counter = 0 Err bitreich.org 70 i- do (if ltp Err bitreich.org 70 i- (loop Err bitreich.org 70 i- repeat (slot-multiplicity slot) Err bitreich.org 70 i- do (setf Err bitreich.org 70 i- (mem-aref Err bitreich.org 70 i- type-pointer-array :pointer slot-counter) Err bitreich.org 70 i- ltp) Err bitreich.org 70 i- (incf slot-counter)) Err bitreich.org 70 i- (libffi-error nil Err bitreich.org 70 i- "Slot type ~A in foreign structure is unknown to libffi." Err bitreich.org 70 i- (unparse-type (slot-type slot))))) Err bitreich.org 70 i- (setf (mem-aref type-pointer-array :pointer nitems) Err bitreich.org 70 i- (null-pointer)) Err bitreich.org 70 i- (macrolet ((store (slot value) Err bitreich.org 70 i- `(setf (foreign-slot-value ptr '(:struct ffi-type) ',slot) ,value))) Err bitreich.org 70 i- (store size 0) Err bitreich.org 70 i- (store alignment 0) Err bitreich.org 70 i- (store type +type-struct+) Err bitreich.org 70 i- (store elements type-pointer-array)) Err bitreich.org 70 i- ptr))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric make-libffi-type-descriptor (object) Err bitreich.org 70 i- (:documentation "Build a libffi struct that describes the type for libffi. This will be used as a cached static read-only argument when the actual call happens.") Err bitreich.org 70 i- (:method ((object foreign-built-in-type)) Err bitreich.org 70 i- (let ((type-keyword (type-keyword object))) Err bitreich.org 70 i- #.`(case type-keyword Err bitreich.org 70 i- ,@(loop Err bitreich.org 70 i- :for type :in (append *built-in-float-types* Err bitreich.org 70 i- *other-builtin-types*) Err bitreich.org 70 i- :collect `(,type (type-descriptor-ptr ,type))) Err bitreich.org 70 i- ,@(loop Err bitreich.org 70 i- :for type :in *built-in-integer-types* Err bitreich.org 70 i- :collect `(,type (type-descriptor-ptr/integer ,type))) Err bitreich.org 70 i- ;; there's a generic error report in an :around method Err bitreich.org 70 i- ))) Err bitreich.org 70 i- (:method ((type foreign-pointer-type)) Err bitreich.org 70 i- ;; simplify all pointer types into a void* Err bitreich.org 70 i- (type-descriptor-ptr :pointer)) Err bitreich.org 70 i- (:method ((type foreign-struct-type)) Err bitreich.org 70 i- (%make-libffi-type-descriptor/struct type)) Err bitreich.org 70 i- (:method :around (object) Err bitreich.org 70 i- (let ((result (call-next-method))) Err bitreich.org 70 i- (assert result () "~S failed on ~S. That's bad." Err bitreich.org 70 i- 'make-libffi-type-descriptor object) Err bitreich.org 70 i- result)) Err bitreich.org 70 i- (:method ((type foreign-type-alias)) Err bitreich.org 70 i- ;; Set the type pointer on demand for alias types (e.g. typedef, enum, etc) Err bitreich.org 70 i- (make-libffi-type-descriptor (actual-type type)))) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/scripts/release.lisp b/3rdparties/software/cffi_0.20.0/scripts/release.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/scripts/release.lisp.gph bitreich.org 70 i@@ -1,248 +0,0 @@ Err bitreich.org 70 i-#!/usr/bin/env clisp Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage :release-script (:use #:cl #:regexp)) Err bitreich.org 70 i-(in-package :release-script) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Configuration ------------------------------------------------------------ Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *project-name* "cffi") Err bitreich.org 70 i-(defparameter *asdf-file* (format nil "~A.asd" *project-name*)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *host* "common-lisp.net") Err bitreich.org 70 i-(defparameter *release-dir* Err bitreich.org 70 i- (format nil "/project/~A/public_html/releases" *project-name*)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *version-file* "VERSION") Err bitreich.org 70 i-(defparameter *version-file-dir* Err bitreich.org 70 i- (format nil "/project/~A/public_html" *project-name*)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; -------------------------------------------------------------------------- Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Utilities Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ensure-list (x) Err bitreich.org 70 i- (if (listp x) x (list x))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro string-case (expression &body clauses) Err bitreich.org 70 i- `(let ((it ,expression)) ; yes, anaphoric, deal with it. Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ,@(loop for clause in clauses collect Err bitreich.org 70 i- `((or ,@(loop for alternative in (ensure-list (first clause)) Err bitreich.org 70 i- collect (or (eq t alternative) Err bitreich.org 70 i- `(string= it ,alternative)))) Err bitreich.org 70 i- ,@(rest clause)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *development-mode* nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun die (format-control &rest format-args) Err bitreich.org 70 i- (format *error-output* "~?" format-control format-args) Err bitreich.org 70 i- (if *development-mode* Err bitreich.org 70 i- (cerror "continue" "die") Err bitreich.org 70 i- (ext:quit 1))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun numeric-split (string) Err bitreich.org 70 i- (if (digit-char-p (char string 0)) Err bitreich.org 70 i- (multiple-value-bind (number next-position) Err bitreich.org 70 i- (parse-integer string :junk-allowed t) Err bitreich.org 70 i- (cons number (when (< next-position (length string)) Err bitreich.org 70 i- (numeric-split (subseq string next-position))))) Err bitreich.org 70 i- (let ((next-digit-position (position-if #'digit-char-p string))) Err bitreich.org 70 i- (if next-digit-position Err bitreich.org 70 i- (cons (subseq string 0 next-digit-position) Err bitreich.org 70 i- (numeric-split (subseq string next-digit-position))) Err bitreich.org 70 i- (list string))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun natural-string-< (s1 s2) Err bitreich.org 70 i- (labels ((aux< (l1 l2) Err bitreich.org 70 i- (cond ((null l1) (not (null l2))) Err bitreich.org 70 i- ((null l2) nil) Err bitreich.org 70 i- (t (destructuring-bind (x . xs) l1 Err bitreich.org 70 i- (destructuring-bind (y . ys) l2 Err bitreich.org 70 i- (cond ((and (numberp x) (stringp y)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- ((and (numberp y) (stringp x)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- ((and (numberp x) (numberp y)) Err bitreich.org 70 i- (or (< x y) (and (= x y) (aux< xs ys)))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (or (string-lessp x y) Err bitreich.org 70 i- (and (string-equal x y) Err bitreich.org 70 i- (aux< xs ys))))))))))) Err bitreich.org 70 i- (aux< (numeric-split s1) Err bitreich.org 70 i- (numeric-split s2)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Running commands Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *dry-run* nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun cmd? (format-control &rest format-args) Err bitreich.org 70 i- (let ((cmd (format nil "~?" format-control format-args))) Err bitreich.org 70 i- (with-open-stream (s1 (ext:run-shell-command cmd :output :stream)) Err bitreich.org 70 i- (loop for line = (read-line s1 nil nil) Err bitreich.org 70 i- while line Err bitreich.org 70 i- collect line)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; XXX: quote arguments. Err bitreich.org 70 i-(defun cmd (format-control &rest format-args) Err bitreich.org 70 i- (when *development-mode* Err bitreich.org 70 i- (format *debug-io* "CMD: ~?~%" format-control format-args)) Err bitreich.org 70 i- (let ((ret (ext:run-shell-command (format nil "~?" format-control format-args)))) Err bitreich.org 70 i- (or (null ret) Err bitreich.org 70 i- (zerop ret)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun cmd! (format-control &rest format-args) Err bitreich.org 70 i- (or (apply #'cmd format-control format-args) Err bitreich.org 70 i- (die "cmd '~?' failed." format-control format-args))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun maybe-cmd! (format-control &rest format-args) Err bitreich.org 70 i- (if *dry-run* Err bitreich.org 70 i- (format t "SUPPRESSING: ~?~%" format-control format-args) Err bitreich.org 70 i- (apply #'cmd! format-control format-args))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(defun find-current-version () Err bitreich.org 70 i- (subseq (reduce (lambda (x y) (if (natural-string-< x y) y x)) Err bitreich.org 70 i- (or (cmd? "git tag -l v\\*") Err bitreich.org 70 i- (die "no version tags found. Please specify initial version."))) Err bitreich.org 70 i- 1)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun parse-version (string) Err bitreich.org 70 i- (mapcar (lambda (x) Err bitreich.org 70 i- (parse-integer x :junk-allowed t)) Err bitreich.org 70 i- (loop repeat 3 ; XXX: parameterize Err bitreich.org 70 i- for el in (regexp-split "\\." (find-current-version)) Err bitreich.org 70 i- collect el))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun check-for-unrecorded-changes (&optional force) Err bitreich.org 70 i- (unless (cmd "git diff --exit-code") Err bitreich.org 70 i- (write-line "Unrecorded changes.") Err bitreich.org 70 i- (if force Err bitreich.org 70 i- (write-line "Continuing anyway.") Err bitreich.org 70 i- (die "Aborting.~@ Err bitreich.org 70 i- Use -f or --force if you want to make a release anyway.")))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun new-version-number-candidates (current-version) Err bitreich.org 70 i- (labels ((alternatives (before after) Err bitreich.org 70 i- (when after Err bitreich.org 70 i- (cons (append before Err bitreich.org 70 i- (list (1+ (first after))) Err bitreich.org 70 i- (mapcar (constantly 0) (rest after))) Err bitreich.org 70 i- (alternatives (append before (list (first after))) Err bitreich.org 70 i- (rest after)))))) Err bitreich.org 70 i- (loop for alt in (alternatives nil (parse-version current-version)) Err bitreich.org 70 i- collect (format nil "~{~d~^.~}" alt)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ask-user-for-version (current-version next-versions) Err bitreich.org 70 i- (format *query-io* "Current version is ~A. Which will be the next one?~%" Err bitreich.org 70 i- current-version) Err bitreich.org 70 i- (loop for i from 1 and version in next-versions Err bitreich.org 70 i- do (format *query-io* "~T~A) ~A~%" i version)) Err bitreich.org 70 i- (format *query-io* "? ") Err bitreich.org 70 i- (finish-output *query-io*) Err bitreich.org 70 i- (nth (1- (parse-integer (read-line) :junk-allowed t)) Err bitreich.org 70 i- next-versions)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun git-tag-tree (version) Err bitreich.org 70 i- (write-line "Tagging the tree...") Err bitreich.org 70 i- (maybe-cmd! "git tag \"v~A\"" version)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun add-version-to-system-file (version path-in path-out) Err bitreich.org 70 i- (let ((defsystem-line (format nil "(defsystem :~A" *project-name*))) Err bitreich.org 70 i- (with-open-file (in path-in :direction :input) Err bitreich.org 70 i- (with-open-file (out path-out :direction :output) Err bitreich.org 70 i- (loop for line = (read-line in nil nil) while line Err bitreich.org 70 i- do (write-line line out) Err bitreich.org 70 i- when (string= defsystem-line line) Err bitreich.org 70 i- do (format out " :version ~s~%" version)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun create-dist (version distname) Err bitreich.org 70 i- (write-line "Creating distribution...") Err bitreich.org 70 i- (cmd! "mkdir \"~a\"" distname) Err bitreich.org 70 i- (cmd! "git archive master | tar xC \"~A\"" distname) Err bitreich.org 70 i- (format t "Updating ~A with new version: ~A~%" *asdf-file* version) Err bitreich.org 70 i- (let* ((asdf-file-path (format nil "~A/~A" distname *asdf-file*)) Err bitreich.org 70 i- (tmp-asdf-file-path (format nil "~a.tmp" asdf-file-path))) Err bitreich.org 70 i- (add-version-to-system-file version asdf-file-path tmp-asdf-file-path) Err bitreich.org 70 i- (cmd! "mv \"~a\" \"~a\"" tmp-asdf-file-path asdf-file-path))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun tar-and-sign (distname tarball) Err bitreich.org 70 i- (write-line "Creating and signing tarball...") Err bitreich.org 70 i- (cmd! "tar czf \"~a\" \"~a\"" tarball distname) Err bitreich.org 70 i- (cmd! "gpg -b -a \"~a\"" tarball)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *remote-directory* (format nil "~A:~A" *host* *release-dir*)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun upload-tarball (tarball signature remote-directory) Err bitreich.org 70 i- (write-line "Copying tarball to web server...") Err bitreich.org 70 i- (maybe-cmd! "scp \"~A\" \"~A\" \"~A\"" tarball signature remote-directory) Err bitreich.org 70 i- (format t "Uploaded ~A and ~A.~%" tarball signature)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun update-remote-links (tarball signature host release-dir project-name) Err bitreich.org 70 i- (format t "Updating ~A_latest links...~%" project-name) Err bitreich.org 70 i- (maybe-cmd! "ssh \"~A\" ln -sf \"~A\" \"~A/~A_latest.tar.gz\"" Err bitreich.org 70 i- host tarball release-dir project-name) Err bitreich.org 70 i- (maybe-cmd! "ssh \"~A\" ln -sf \"~A\" \"~A/~A_latest.tar.gz.asc\"" Err bitreich.org 70 i- host signature release-dir project-name)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun upload-version-file (version version-file host version-file-dir) Err bitreich.org 70 i- (format t "Uploading ~A...~%" version-file) Err bitreich.org 70 i- (with-open-file (out version-file :direction :output) Err bitreich.org 70 i- (write-string version out)) Err bitreich.org 70 i- (maybe-cmd! "scp \"~A\" \"~A\":\"~A\"" version-file host version-file-dir) Err bitreich.org 70 i- (maybe-cmd! "rm \"~A\"" version-file)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun maybe-clean-things-up (tarball signature) Err bitreich.org 70 i- (when (y-or-n-p "Clean local tarball and signature?") Err bitreich.org 70 i- (cmd! "rm \"~A\" \"~A\"" tarball signature))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun run (force version) Err bitreich.org 70 i- (check-for-unrecorded-changes force) Err bitreich.org 70 i- ;; figure out what version we'll be preparing. Err bitreich.org 70 i- (unless version Err bitreich.org 70 i- (let* ((current-version (find-current-version)) Err bitreich.org 70 i- (next-versions (new-version-number-candidates current-version))) Err bitreich.org 70 i- (setf version (or (ask-user-for-version current-version next-versions) Err bitreich.org 70 i- (die "invalid selection."))))) Err bitreich.org 70 i- (git-tag-tree version) Err bitreich.org 70 i- (let* ((distname (format nil "~A_~A" *project-name* version)) Err bitreich.org 70 i- (tarball (format nil "~A.tar.gz" distname)) Err bitreich.org 70 i- (signature (format nil "~A.asc" tarball))) Err bitreich.org 70 i- ;; package things up. Err bitreich.org 70 i- (create-dist version distname) Err bitreich.org 70 i- (tar-and-sign distname tarball) Err bitreich.org 70 i- ;; upload. Err bitreich.org 70 i- (upload-tarball tarball signature *remote-directory*) Err bitreich.org 70 i- (update-remote-links tarball signature *host* *release-dir* *project-name*) Err bitreich.org 70 i- (when *version-file* Err bitreich.org 70 i- (upload-version-file version *version-file* *host* *version-file-dir*)) Err bitreich.org 70 i- ;; clean up. Err bitreich.org 70 i- (maybe-clean-things-up tarball signature) Err bitreich.org 70 i- ;; documentation. Err bitreich.org 70 i- (write-line "Building and uploading documentation...") Err bitreich.org 70 i- (maybe-cmd! "make -C doc upload-docs") Err bitreich.org 70 i- ;; push tags and any outstanding changes. Err bitreich.org 70 i- (write-line "Pushing tags and changes...") Err bitreich.org 70 i- (maybe-cmd! "git push --tags origin master"))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Do it to it Err bitreich.org 70 i- Err bitreich.org 70 i-(let ((force nil) Err bitreich.org 70 i- (version nil) Err bitreich.org 70 i- (args ext:*args*)) Err bitreich.org 70 i- (loop while args Err bitreich.org 70 i- do (string-case (pop args) Err bitreich.org 70 i- (("-h" "--help") Err bitreich.org 70 i- (write-line "No help, sorry. Read the source.") Err bitreich.org 70 i- (ext:quit 0)) Err bitreich.org 70 i- (("-f" "--force") Err bitreich.org 70 i- (setf force t)) Err bitreich.org 70 i- (("-v" "--version") Err bitreich.org 70 i- (setf version (pop args))) Err bitreich.org 70 i- (("-n" "--dry-run") Err bitreich.org 70 i- (setf *dry-run* t)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (die "Unrecognized argument '~a'" it)))) Err bitreich.org 70 i- (run force version)) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/src/c2ffi/asdf.lisp b/3rdparties/software/cffi_0.20.0/src/c2ffi/asdf.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/src/c2ffi/asdf.lisp.gph bitreich.org 70 i@@ -1,211 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; asdf.lisp --- ASDF components for cffi/c2ffi. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2015, Attila Lendvai Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi/c2ffi) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass c2ffi-file (cl-source-file) Err bitreich.org 70 i- ((package :initarg :package Err bitreich.org 70 i- :initform nil Err bitreich.org 70 i- :accessor c2ffi-file/package) Err bitreich.org 70 i- (c2ffi-executable :initarg :c2ffi-executable Err bitreich.org 70 i- :accessor c2ffi-file/c2ffi-executable) Err bitreich.org 70 i- (trace-c2ffi :initarg :trace-c2ffi Err bitreich.org 70 i- :accessor c2ffi-file/trace-c2ffi) Err bitreich.org 70 i- (prelude :initform nil Err bitreich.org 70 i- :initarg :prelude Err bitreich.org 70 i- :accessor c2ffi-file/prelude) Err bitreich.org 70 i- (sys-include-paths :initarg :sys-include-paths Err bitreich.org 70 i- :initform nil Err bitreich.org 70 i- :accessor c2ffi-file/sys-include-paths) Err bitreich.org 70 i- (exclude-archs :initarg :exclude-archs Err bitreich.org 70 i- :initform nil Err bitreich.org 70 i- :accessor c2ffi-file/exclude-archs) Err bitreich.org 70 i- ;; The following slots correspond to an arg of the same name for Err bitreich.org 70 i- ;; the generator function. No accessors are needed, they just hold Err bitreich.org 70 i- ;; the data until it gets delegated to the generator function using Err bitreich.org 70 i- ;; SLOT-VALUE and a LOOP. Err bitreich.org 70 i- (ffi-name-transformer :initarg :ffi-name-transformer Err bitreich.org 70 i- :initform 'default-ffi-name-transformer) Err bitreich.org 70 i- (ffi-name-export-predicate :initarg :ffi-name-export-predicate Err bitreich.org 70 i- :initform 'default-ffi-name-export-predicate) Err bitreich.org 70 i- (ffi-type-transformer :initarg :ffi-type-transformer Err bitreich.org 70 i- :initform 'default-ffi-type-transformer) Err bitreich.org 70 i- (callback-factory :initarg :callback-factory Err bitreich.org 70 i- :initform 'default-callback-factory) Err bitreich.org 70 i- (foreign-library-name :initarg :foreign-library-name Err bitreich.org 70 i- :initform nil) Err bitreich.org 70 i- (foreign-library-spec :initarg :foreign-library-spec Err bitreich.org 70 i- :initform nil) Err bitreich.org 70 i- (emit-generated-name-mappings :initarg :emit-generated-name-mappings Err bitreich.org 70 i- :initform :t) Err bitreich.org 70 i- (include-sources :initarg :include-sources Err bitreich.org 70 i- :initform :all) Err bitreich.org 70 i- (exclude-sources :initarg :exclude-sources Err bitreich.org 70 i- :initform nil) Err bitreich.org 70 i- (include-definitions :initarg :include-definitions Err bitreich.org 70 i- :initform :all) Err bitreich.org 70 i- (exclude-definitions :initarg :exclude-definitions Err bitreich.org 70 i- :initform nil)) Err bitreich.org 70 i- (:default-initargs Err bitreich.org 70 i- :type nil) Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "The input of this ASDF component is a C header file and the configuration for Err bitreich.org 70 i-the binding generation process. This header file will define the initial scope of Err bitreich.org 70 i-the generation process, which can be further filtered by other configuration Err bitreich.org 70 i-parameters. Err bitreich.org 70 i- Err bitreich.org 70 i-A clang/llvm based external program called 'c2ffi' is used to process this header Err bitreich.org 70 i-file and generate a json spec file for each supported architecture triplet. Normally Err bitreich.org 70 i-these .spec files are only (re)generated by the author of the lib and are checked into Err bitreich.org 70 i-the corresponding source repository. It needs to be done manually by invoking the Err bitreich.org 70 i-following command: Err bitreich.org 70 i- Err bitreich.org 70 i-(cffi/c2ffi:generate-spec :your-system) Err bitreich.org 70 i- Err bitreich.org 70 i-which is a shorthand for: Err bitreich.org 70 i- Err bitreich.org 70 i-(asdf:operate 'cffi/c2ffi::generate-spec-op :your-system) Err bitreich.org 70 i- Err bitreich.org 70 i-The generation of the underlying platform's json file must succeed, but the Err bitreich.org 70 i-generation for the other arch's is allowed to fail Err bitreich.org 70 i-\(see ENSURE-SPEC-FILE-IS-UP-TO-DATE for details). Err bitreich.org 70 i- Err bitreich.org 70 i-During the normal build process the json file is used as the input to generate Err bitreich.org 70 i-a lisp file containing the CFFI definitions (see PROCESS-C2FFI-SPEC-FILE). Err bitreich.org 70 i-This file will be placed next to the .spec file, and will be compiled as any Err bitreich.org 70 i-other lisp file. This process requires loading the ASDF system called Err bitreich.org 70 i-\"cffi/c2ffi-generator\" that has more dependencies than CFFI itself. If you Err bitreich.org 70 i-want to avoid those extra dependencies in your project, then you can check in Err bitreich.org 70 i-these generated lisp files into your source repository, but keep in mind that Err bitreich.org 70 i-you'll need to manually force their regeneration if CFFI/C2FFI itself gets Err bitreich.org 70 i-updated (by e.g. deleting them from the filesystem) .")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun input-file (operation component) Err bitreich.org 70 i- (let ((files (input-files operation component))) Err bitreich.org 70 i- (assert (length=n-p files 1)) Err bitreich.org 70 i- (first files))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass generate-spec-op (downward-operation) Err bitreich.org 70 i- ()) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun generate-spec (system) Err bitreich.org 70 i- (asdf:operate 'generate-spec-op system)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod input-files ((op generate-spec-op) (c c2ffi-file)) Err bitreich.org 70 i- (list (component-pathname c))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod component-depends-on ((op generate-spec-op) (c c2ffi-file)) Err bitreich.org 70 i- `((prepare-op ,c) ,@(call-next-method))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod output-files ((op generate-spec-op) (c c2ffi-file)) Err bitreich.org 70 i- (let* ((input-file (input-file op c)) Err bitreich.org 70 i- (spec-file (spec-path input-file))) Err bitreich.org 70 i- (values Err bitreich.org 70 i- (list spec-file) Err bitreich.org 70 i- ;; Tell ASDF not to apply output translation. Err bitreich.org 70 i- t))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod perform ((op generate-spec-op) (c asdf:component)) Err bitreich.org 70 i- (values)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod perform ((op generate-spec-op) (c c2ffi-file)) Err bitreich.org 70 i- (let ((input-file (input-file op c)) Err bitreich.org 70 i- (*c2ffi-executable* (if (slot-boundp c 'c2ffi-executable) Err bitreich.org 70 i- (c2ffi-file/c2ffi-executable c) Err bitreich.org 70 i- *c2ffi-executable*)) Err bitreich.org 70 i- (*trace-c2ffi* (if (slot-boundp c 'trace-c2ffi) Err bitreich.org 70 i- (c2ffi-file/trace-c2ffi c) Err bitreich.org 70 i- *trace-c2ffi*))) Err bitreich.org 70 i- ;; NOTE: we don't call OUTPUT-FILE here, which may be a violation Err bitreich.org 70 i- ;; of the ASDF contract, that promises that OUTPUT-FILE can be Err bitreich.org 70 i- ;; customized by users. Err bitreich.org 70 i- (ensure-spec-file-is-up-to-date Err bitreich.org 70 i- input-file Err bitreich.org 70 i- :exclude-archs (c2ffi-file/exclude-archs c) Err bitreich.org 70 i- :sys-include-paths (c2ffi-file/sys-include-paths c)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass generate-lisp-op (downward-operation) Err bitreich.org 70 i- ()) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod component-depends-on ((op generate-lisp-op) (c c2ffi-file)) Err bitreich.org 70 i- `((load-op ,(find-system "cffi/c2ffi-generator")) Err bitreich.org 70 i- ,@(call-next-method))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod component-depends-on ((op compile-op) (c c2ffi-file)) Err bitreich.org 70 i- `((generate-lisp-op ,c) ,@(call-next-method))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod component-depends-on ((op load-source-op) (c c2ffi-file)) Err bitreich.org 70 i- `((generate-lisp-op ,c) ,@(call-next-method))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod input-files ((op generate-lisp-op) (c c2ffi-file)) Err bitreich.org 70 i- (list (output-file 'generate-spec-op c))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod input-files ((op compile-op) (c c2ffi-file)) Err bitreich.org 70 i- (list (output-file 'generate-lisp-op c))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod output-files ((op generate-lisp-op) (c c2ffi-file)) Err bitreich.org 70 i- (let* ((spec-file (input-file op c)) Err bitreich.org 70 i- (generated-lisp-file (make-pathname :type "lisp" Err bitreich.org 70 i- :defaults spec-file))) Err bitreich.org 70 i- (values Err bitreich.org 70 i- (list generated-lisp-file) Err bitreich.org 70 i- ;; Tell ASDF not to apply output translation. Err bitreich.org 70 i- t))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod perform ((op generate-lisp-op) (c c2ffi-file)) Err bitreich.org 70 i- (let ((spec-file (input-file op c)) Err bitreich.org 70 i- (generated-lisp-file (output-file op c))) Err bitreich.org 70 i- (with-staging-pathname (tmp-output generated-lisp-file) Err bitreich.org 70 i- (format *debug-io* "~&; CFFI/C2FFI is generating the file ~S~%" generated-lisp-file) Err bitreich.org 70 i- (apply 'process-c2ffi-spec-file Err bitreich.org 70 i- spec-file (c2ffi-file/package c) Err bitreich.org 70 i- :output tmp-output Err bitreich.org 70 i- :output-encoding (asdf:component-encoding c) Err bitreich.org 70 i- :prelude (let ((prelude (c2ffi-file/prelude c))) Err bitreich.org 70 i- (if (and (pathnamep prelude) Err bitreich.org 70 i- (not (absolute-pathname-p prelude))) Err bitreich.org 70 i- (merge-pathnames* prelude (component-pathname c)) Err bitreich.org 70 i- prelude)) Err bitreich.org 70 i- ;; The following slots and keyword args have the same name in the ASDF Err bitreich.org 70 i- ;; component and in PROCESS-C2FFI-SPEC-FILE, and this loop copies them. Err bitreich.org 70 i- (loop Err bitreich.org 70 i- :for arg :in '(ffi-name-transformer Err bitreich.org 70 i- ffi-name-export-predicate Err bitreich.org 70 i- ffi-type-transformer Err bitreich.org 70 i- callback-factory Err bitreich.org 70 i- foreign-library-name Err bitreich.org 70 i- foreign-library-spec Err bitreich.org 70 i- emit-generated-name-mappings Err bitreich.org 70 i- include-sources Err bitreich.org 70 i- exclude-sources Err bitreich.org 70 i- include-definitions Err bitreich.org 70 i- exclude-definitions) Err bitreich.org 70 i- :append (list (make-keyword arg) Err bitreich.org 70 i- (slot-value c arg))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Allow for naked :cffi/c2ffi-file in asdf definitions. Err bitreich.org 70 i-(setf (find-class 'asdf::cffi/c2ffi-file) (find-class 'c2ffi-file)) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/src/c2ffi/c2ffi.lisp b/3rdparties/software/cffi_0.20.0/src/c2ffi/c2ffi.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/src/c2ffi/c2ffi.lisp.gph bitreich.org 70 i@@ -1,194 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; c2ffi.lisp --- c2ffi related code Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2013, Ryan Pavlik Err bitreich.org 70 i-;;; Copyright (C) 2015, Attila Lendvai Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi/c2ffi) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; NOTE: Most of this has been taken over from cl-autowrap. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Note this is rather untested and not very extensive at the moment; Err bitreich.org 70 i-;;; it should probably work on linux/win/osx though. Patches welcome. Err bitreich.org 70 i- Err bitreich.org 70 i-(defun local-cpu () Err bitreich.org 70 i- #+x86-64 "x86_64" Err bitreich.org 70 i- #+(and (not (or x86-64 freebsd)) x86) "i686" Err bitreich.org 70 i- #+(and (not x86-64) x86 freebsd) "i386" Err bitreich.org 70 i- #+arm "arm") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun local-vendor () Err bitreich.org 70 i- #+(or linux windows) "-pc" Err bitreich.org 70 i- #+darwin "-apple" Err bitreich.org 70 i- #+(not (or linux windows darwin)) "-unknown") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun local-os () Err bitreich.org 70 i- #+linux "-linux" Err bitreich.org 70 i- #+windows "-windows-msvc" Err bitreich.org 70 i- #+darwin "-darwin9" Err bitreich.org 70 i- #+freebsd "-freebsd") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun local-environment () Err bitreich.org 70 i- #+linux "-gnu" Err bitreich.org 70 i- #-linux "") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun local-arch () Err bitreich.org 70 i- (strcat (local-cpu) (local-vendor) (local-os) (local-environment))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *known-archs* Err bitreich.org 70 i- '("i686-pc-linux-gnu" Err bitreich.org 70 i- "x86_64-pc-linux-gnu" Err bitreich.org 70 i- "i686-pc-windows-msvc" Err bitreich.org 70 i- "x86_64-pc-windows-msvc" Err bitreich.org 70 i- "i686-apple-darwin9" Err bitreich.org 70 i- "x86_64-apple-darwin9" Err bitreich.org 70 i- "i386-unknown-freebsd" Err bitreich.org 70 i- "x86_64-unknown-freebsd")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *c2ffi-executable* "c2ffi") Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *trace-c2ffi* nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun c2ffi-executable-available? () Err bitreich.org 70 i- ;; This is a hack to determine if c2ffi exists; it assumes if it Err bitreich.org 70 i- ;; doesn't exist, we will get a return code other than 0. Err bitreich.org 70 i- (zerop (nth-value 2 (uiop:run-program `(,*c2ffi-executable* "-h") Err bitreich.org 70 i- :ignore-error-status t)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun run-program* (program args &key (output (if *trace-c2ffi* *standard-output* nil)) Err bitreich.org 70 i- (error-output (if *trace-c2ffi* *error-output* nil)) Err bitreich.org 70 i- ignore-error-status) Err bitreich.org 70 i- (when *trace-c2ffi* Err bitreich.org 70 i- (format *debug-io* "~&; Invoking: ~A~{ ~A~}~%" program args)) Err bitreich.org 70 i- (zerop (nth-value 2 (uiop:run-program (list* program args) :output output Err bitreich.org 70 i- :error-output error-output Err bitreich.org 70 i- :ignore-error-status ignore-error-status)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun generate-spec-with-c2ffi (input-header-file output-spec-path Err bitreich.org 70 i- &key arch sys-include-paths ignore-error-status) Err bitreich.org 70 i- "Run c2ffi on `INPUT-HEADER-FILE`, outputting to `OUTPUT-FILE` and Err bitreich.org 70 i-`MACRO-OUTPUT-FILE`, optionally specifying a target triple `ARCH`." Err bitreich.org 70 i- (uiop:with-temporary-file (:pathname tmp-macro-file Err bitreich.org 70 i- :keep *trace-c2ffi*) Err bitreich.org 70 i- nil ; workaround for an UIOP bug; delme eventually (attila, 2016-01-27). Err bitreich.org 70 i- :close-stream Err bitreich.org 70 i- (let* ((arch (when arch (list "--arch" arch))) Err bitreich.org 70 i- (sys-include-paths (loop Err bitreich.org 70 i- :for dir :in sys-include-paths Err bitreich.org 70 i- :append (list "--sys-include" dir)))) Err bitreich.org 70 i- ;; Invoke c2ffi to first emit C #define's into TMP-MACRO-FILE. We ask c2ffi Err bitreich.org 70 i- ;; to first generate a file of C global variables that are assigned the Err bitreich.org 70 i- ;; value of the corresponding #define's, so that in the second pass below Err bitreich.org 70 i- ;; the C compiler evaluates for us their right hand side and thus we can Err bitreich.org 70 i- ;; get hold of their value. This is a kludge and eventually we could/should Err bitreich.org 70 i- ;; support generating cffi-grovel files, and in grovel mode not rely Err bitreich.org 70 i- ;; on this kludge anymore. Err bitreich.org 70 i- (when (run-program* *c2ffi-executable* (list* (namestring input-header-file) Err bitreich.org 70 i- "--driver" "null" Err bitreich.org 70 i- "--macro-file" (namestring tmp-macro-file) Err bitreich.org 70 i- (append arch sys-include-paths)) Err bitreich.org 70 i- :output *standard-output* Err bitreich.org 70 i- :ignore-error-status ignore-error-status) Err bitreich.org 70 i- ;; Write a tmp header file that #include's the original input file and Err bitreich.org 70 i- ;; the above generated macros file which will form the input for our Err bitreich.org 70 i- ;; final, second pass. Err bitreich.org 70 i- (uiop:with-temporary-file (:stream tmp-include-file-stream Err bitreich.org 70 i- :pathname tmp-include-file Err bitreich.org 70 i- :keep *trace-c2ffi*) Err bitreich.org 70 i- (format tmp-include-file-stream "#include \"~A\"~%" input-header-file) Err bitreich.org 70 i- (format tmp-include-file-stream "#include \"~A\"~%" tmp-macro-file) Err bitreich.org 70 i- :close-stream Err bitreich.org 70 i- ;; Invoke c2ffi again to generate the final output. Err bitreich.org 70 i- (run-program* *c2ffi-executable* (list* (namestring tmp-include-file) Err bitreich.org 70 i- "--output" (namestring output-spec-path) Err bitreich.org 70 i- (append arch sys-include-paths)) Err bitreich.org 70 i- :output *standard-output* Err bitreich.org 70 i- :ignore-error-status ignore-error-status)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun spec-path (base-name &key version (arch (local-arch))) Err bitreich.org 70 i- (check-type base-name pathname) Err bitreich.org 70 i- (make-pathname :defaults base-name Err bitreich.org 70 i- :name (strcat (pathname-name base-name) Err bitreich.org 70 i- (if version Err bitreich.org 70 i- (strcat "-" version) Err bitreich.org 70 i- "") Err bitreich.org 70 i- "." Err bitreich.org 70 i- arch) Err bitreich.org 70 i- :type "spec")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun find-local-spec (base-name &optional (errorp t)) Err bitreich.org 70 i- (let* ((spec-path (spec-path base-name)) Err bitreich.org 70 i- (probed (probe-file spec-path))) Err bitreich.org 70 i- (if probed Err bitreich.org 70 i- spec-path Err bitreich.org 70 i- (when errorp Err bitreich.org 70 i- (error "c2ffi spec file not found for base name ~S" base-name))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ensure-spec-file-is-up-to-date (header-file-path Err bitreich.org 70 i- &key exclude-archs sys-include-paths version) Err bitreich.org 70 i- (let ((spec-path (find-local-spec header-file-path nil))) Err bitreich.org 70 i- (flet ((regenerate-spec-file () Err bitreich.org 70 i- (let ((local-arch (local-arch))) Err bitreich.org 70 i- (unless (c2ffi-executable-available?) Err bitreich.org 70 i- (error "No spec found for ~S on arch '~A' and c2ffi not found" Err bitreich.org 70 i- header-file-path local-arch)) Err bitreich.org 70 i- (generate-spec-with-c2ffi header-file-path Err bitreich.org 70 i- (spec-path header-file-path Err bitreich.org 70 i- :arch local-arch Err bitreich.org 70 i- :version version) Err bitreich.org 70 i- :arch local-arch Err bitreich.org 70 i- :sys-include-paths sys-include-paths) Err bitreich.org 70 i- ;; Try to run c2ffi for other architectures, but tolerate failure Err bitreich.org 70 i- (dolist (arch *known-archs*) Err bitreich.org 70 i- (unless (or (string= local-arch arch) Err bitreich.org 70 i- (member arch exclude-archs :test #'string=)) Err bitreich.org 70 i- (unless (generate-spec-with-c2ffi header-file-path Err bitreich.org 70 i- (spec-path header-file-path Err bitreich.org 70 i- :arch arch Err bitreich.org 70 i- :version version) Err bitreich.org 70 i- :arch arch Err bitreich.org 70 i- :sys-include-paths sys-include-paths Err bitreich.org 70 i- :ignore-error-status t) Err bitreich.org 70 i- (warn "Failed to generate spec for other arch: ~S" arch)))) Err bitreich.org 70 i- (find-local-spec header-file-path)))) Err bitreich.org 70 i- (if (and spec-path Err bitreich.org 70 i- (uiop:timestamp< (file-write-date header-file-path) Err bitreich.org 70 i- (file-write-date spec-path))) Err bitreich.org 70 i- spec-path ; it's up to date, just return it as is Err bitreich.org 70 i- (restart-case Err bitreich.org 70 i- (regenerate-spec-file) Err bitreich.org 70 i- (touch-old-copy () Err bitreich.org 70 i- :report (lambda (stream) Err bitreich.org 70 i- (format stream "Update the modification time of the out-of-date copy ~S" spec-path)) Err bitreich.org 70 i- ;; Make it only be visible when the spec file exists (but it's out of date) Err bitreich.org 70 i- :test (lambda (condition) Err bitreich.org 70 i- (declare (ignore condition)) Err bitreich.org 70 i- (not (null spec-path))) Err bitreich.org 70 i- ;; Update the last modification time. Yes, it's convoluted and wasteful, Err bitreich.org 70 i- ;; but I can't see any other way. Err bitreich.org 70 i- (with-staging-pathname (tmp-file spec-path) Err bitreich.org 70 i- (copy-file spec-path tmp-file)) Err bitreich.org 70 i- ;; The return value of RESTART-CASE Err bitreich.org 70 i- spec-path)))))) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/src/c2ffi/generator.lisp b/3rdparties/software/cffi_0.20.0/src/c2ffi/generator.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/src/c2ffi/generator.lisp.gph bitreich.org 70 i@@ -1,838 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; generator.lisp --- Generate CFFI bindings for a c2ffi output. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2015, Attila Lendvai Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi/c2ffi) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Output generation happens in one phase, straight into the output Err bitreich.org 70 i-;;; stream. There's minimal look-ahead (for source-location and name) Err bitreich.org 70 i-;;; which is needed to apply user specified filters in time. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Each CFFI form is also EVAL'd during generation because the CFFI Err bitreich.org 70 i-;;; type lookup/parsing mechanism is used while generating the output. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Nomenclature: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; - variable names in this file are to be interpreted in the Err bitreich.org 70 i-;;; C,c2ffi,json context, and 'cffi' is added to names that denote Err bitreich.org 70 i-;;; the cffi name. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Possible improvments: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; - generate an additional grovel file for C inline function Err bitreich.org 70 i-;;; declarations found in header files Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; - generate struct-by-value DEFCFUN's into a separate file so that Err bitreich.org 70 i-;;; users can decide whether to depend on libffi, or they can make do Err bitreich.org 70 i-;;; without those definitions Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *allow-pointer-type-simplification* t) Err bitreich.org 70 i-(defvar *allow-skipping-struct-fields* t) Err bitreich.org 70 i-(defvar *assume-struct-by-value-support* t) Err bitreich.org 70 i-;; Called on the json name and may return a symbol to be used, or a string. Err bitreich.org 70 i-(defvar *ffi-name-transformer* 'default-ffi-name-transformer) Err bitreich.org 70 i-;; Called on the already transformed name to decide whether to export it Err bitreich.org 70 i-(defvar *ffi-name-export-predicate* 'default-ffi-name-export-predicate) Err bitreich.org 70 i-;; Called on the CFFI type, e.g. to turn (:pointer :char) into a :string. Err bitreich.org 70 i-(defvar *ffi-type-transformer* 'default-ffi-type-transformer) Err bitreich.org 70 i-;; May return up to two closures using VALUES. The first one will be called Err bitreich.org 70 i-;; with each emitted form, and the second one once, at the end. They both may Err bitreich.org 70 i-;; return a list of forms that will be emitted using OUTPUT/CODE. Err bitreich.org 70 i-(defvar *callback-factory* 'default-callback-factory) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +generated-file-header+ Err bitreich.org 70 i- ";;; -*- Mode: lisp -*-~%~ Err bitreich.org 70 i- ;;;~%~ Err bitreich.org 70 i- ;;; This file has been automatically generated by cffi/c2ffi. Editing it by hand is not wise.~%~ Err bitreich.org 70 i- ;;;~%~%" Err bitreich.org 70 i- :test 'equal) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *c2ffi-output-stream*) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun output/export (names package) Err bitreich.org 70 i- (let ((names (uiop:ensure-list names))) Err bitreich.org 70 i- ;; Make sure we have something PRINT-READABLY as a package name, Err bitreich.org 70 i- ;; i.e. not a SIMPLE-BASE-STRING on SBCL. Err bitreich.org 70 i- (output/code `(export ',names ',(make-symbol (package-name package)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun output/code (form) Err bitreich.org 70 i- (check-type form cons) Err bitreich.org 70 i- (format *c2ffi-output-stream* "~&") Err bitreich.org 70 i- (write form Err bitreich.org 70 i- :stream *c2ffi-output-stream* Err bitreich.org 70 i- :circle t Err bitreich.org 70 i- :pretty t Err bitreich.org 70 i- :escape t Err bitreich.org 70 i- :readably t) Err bitreich.org 70 i- (format *c2ffi-output-stream* "~%~%") Err bitreich.org 70 i- (unless (member (first form) '(cffi:defcfun alexandria:define-constant) :test 'eq) Err bitreich.org 70 i- (eval form))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun output/string (message-control &rest message-arguments) Err bitreich.org 70 i- (apply 'format *c2ffi-output-stream* message-control message-arguments)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; NOTE: as per c2ffi json output. A notable difference to Err bitreich.org 70 i-;; CFFI::*BUILT-IN-FOREIGN-TYPES* is the presence of :SIGNED-CHAR. Err bitreich.org 70 i-(define-constant +c-builtin-types+ '(":void" ":_Bool" ":char" ":signed-char" ":unsigned-char" ":short" Err bitreich.org 70 i- ":unsigned-short" ":int" ":unsigned-int" ":long" ":unsigned-long" Err bitreich.org 70 i- ":long-long" ":unsigned-long-long" ":float" ":double" ":long-double") Err bitreich.org 70 i- :test 'equal) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition unsupported-type (cffi::foreign-type-error) Err bitreich.org 70 i- ((json-definition :initarg :json-definition Err bitreich.org 70 i- :accessor json-definition-of))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun unsupported-type (json-entry) Err bitreich.org 70 i- (error 'unsupported-type :type-name nil :json-definition json-entry)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;;;; Err bitreich.org 70 i-;;; Utilities Err bitreich.org 70 i- Err bitreich.org 70 i-(defun compile-rules (rules) Err bitreich.org 70 i- (case rules Err bitreich.org 70 i- (:all rules) Err bitreich.org 70 i- (t (mapcar (lambda (pattern) Err bitreich.org 70 i- (check-type pattern string "Patterns in the inclusion/exclusion rules must be strings.") Err bitreich.org 70 i- (let ((scanner (cl-ppcre:create-scanner pattern))) Err bitreich.org 70 i- (named-lambda cffi/c2ffi/cl-ppcre-rule-matcher Err bitreich.org 70 i- (string) Err bitreich.org 70 i- (funcall scanner string 0 (length string))))) Err bitreich.org 70 i- rules)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun include-definition? (name source-location Err bitreich.org 70 i- include-definitions exclude-definitions Err bitreich.org 70 i- include-sources exclude-sources) Err bitreich.org 70 i- (labels Err bitreich.org 70 i- ((covered-by-a-rule? (name rules) Err bitreich.org 70 i- (or (eq rules :all) Err bitreich.org 70 i- (not (null (some (rcurry #'funcall name) rules))))) Err bitreich.org 70 i- (weak? (rules) Err bitreich.org 70 i- (eq :all rules)) Err bitreich.org 70 i- (strong? (name rules) Err bitreich.org 70 i- (and name Err bitreich.org 70 i- (not (weak? rules)) Err bitreich.org 70 i- (covered-by-a-rule? name rules)))) Err bitreich.org 70 i- (let* ((excl-def/weak (weak? exclude-definitions)) Err bitreich.org 70 i- (excl-def/strong (strong? name exclude-definitions)) Err bitreich.org 70 i- (incl-def/weak (weak? include-definitions)) Err bitreich.org 70 i- (incl-def/strong (strong? name include-definitions)) Err bitreich.org 70 i- (excl-src/weak (weak? exclude-sources)) Err bitreich.org 70 i- (excl-src/strong (strong? source-location exclude-sources)) Err bitreich.org 70 i- (incl-src/weak (weak? include-sources)) Err bitreich.org 70 i- (incl-src/strong (strong? source-location include-sources)) Err bitreich.org 70 i- (incl/strong (or incl-def/strong Err bitreich.org 70 i- incl-src/strong)) Err bitreich.org 70 i- (excl/strong (or excl-def/strong Err bitreich.org 70 i- excl-src/strong)) Err bitreich.org 70 i- (incl/weak (or incl-def/weak Err bitreich.org 70 i- incl-src/weak)) Err bitreich.org 70 i- (excl/weak (or excl-def/weak Err bitreich.org 70 i- excl-src/weak))) Err bitreich.org 70 i- (or incl-def/strong Err bitreich.org 70 i- (and (not excl/strong) Err bitreich.org 70 i- (or incl/strong Err bitreich.org 70 i- (and incl/weak Err bitreich.org 70 i- ;; we want src exclude rules to be stronger Err bitreich.org 70 i- (not excl-src/weak)) Err bitreich.org 70 i- (not excl/weak))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun coerce-to-byte-size (bit-size) Err bitreich.org 70 i- (let ((byte-size (/ bit-size 8))) Err bitreich.org 70 i- (unless (integerp byte-size) Err bitreich.org 70 i- (error "Non-byte size encountered where it wasn't expected (~A bits)" bit-size)) Err bitreich.org 70 i- byte-size)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro assume (condition &optional format-control &rest format-arguments) Err bitreich.org 70 i- "Similar to ASSERT, but WARN's only." Err bitreich.org 70 i- `(unless ,condition Err bitreich.org 70 i- ,(if format-control Err bitreich.org 70 i- `(warn ,format-control ,@format-arguments) Err bitreich.org 70 i- `(warn "ASSUME failed: ~S" ',condition)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun canonicalize-transformer-hook (hook) Err bitreich.org 70 i- (etypecase hook Err bitreich.org 70 i- ((and (or function symbol) Err bitreich.org 70 i- (not null)) Err bitreich.org 70 i- hook) Err bitreich.org 70 i- (string Err bitreich.org 70 i- (the symbol (safe-read-from-string hook))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;;;; Err bitreich.org 70 i-;;; Json access Err bitreich.org 70 i- Err bitreich.org 70 i-(defun json-value (alist key &key (otherwise nil otherwise?)) Err bitreich.org 70 i- (check-type alist list) Err bitreich.org 70 i- (check-type key (and symbol (not null))) Err bitreich.org 70 i- (let* ((entry (assoc key alist)) Err bitreich.org 70 i- (result (cond Err bitreich.org 70 i- (entry Err bitreich.org 70 i- (cdr entry)) Err bitreich.org 70 i- (otherwise? Err bitreich.org 70 i- otherwise) Err bitreich.org 70 i- (t (error "Key ~S not found in json entry ~S." key alist))))) Err bitreich.org 70 i- (if (equal result "") Err bitreich.org 70 i- nil Err bitreich.org 70 i- result))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-json-values ((json-entry &rest args) &body body) Err bitreich.org 70 i- (if (null args) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- ,@body) Err bitreich.org 70 i- (once-only (json-entry) Err bitreich.org 70 i- `(let (,@(loop Err bitreich.org 70 i- :for entry :in args Err bitreich.org 70 i- :collect (let* ((args (ensure-list entry)) Err bitreich.org 70 i- (name (pop args)) Err bitreich.org 70 i- (key (or (pop args) Err bitreich.org 70 i- (make-keyword (symbol-name name))))) Err bitreich.org 70 i- (destructuring-bind Err bitreich.org 70 i- ;; using &optional would trigger a warning (on SBCL) Err bitreich.org 70 i- (&key (otherwise nil otherwise?)) Err bitreich.org 70 i- args Err bitreich.org 70 i- `(,name Err bitreich.org 70 i- (json-value ,json-entry ,key ,@(when otherwise? Err bitreich.org 70 i- `(:otherwise ,otherwise)))))))) Err bitreich.org 70 i- ,@body)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun expected-json-keys (alist &rest keys) Err bitreich.org 70 i- (let* ((keys (list* :location keys)) Err bitreich.org 70 i- (outliers (remove-if (lambda (el) Err bitreich.org 70 i- (member (car el) keys :test 'eq)) Err bitreich.org 70 i- alist))) Err bitreich.org 70 i- (when outliers Err bitreich.org 70 i- (warn "Unexpected key(s) in json entry ~S: ~S" alist outliers)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;;;; Err bitreich.org 70 i-;;; Namespaces, names and conversions Err bitreich.org 70 i- Err bitreich.org 70 i-;; an alist of (name . hashtable) Err bitreich.org 70 i-(defvar *generated-names*) Err bitreich.org 70 i-(defvar *anon-name-counter*) Err bitreich.org 70 i-(defvar *anon-entities*) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun register-anon-entity (id name) Err bitreich.org 70 i- (check-type id integer) Err bitreich.org 70 i- (check-type name string) Err bitreich.org 70 i- (assert (not (zerop (length name)))) Err bitreich.org 70 i- (setf (gethash id *anon-entities*) name) Err bitreich.org 70 i- name) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun lookup-anon-entity (id) Err bitreich.org 70 i- (or (gethash id *anon-entities*) Err bitreich.org 70 i- (error "Could not find anonymous entity with id ~S." id))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun generate-anon-name (base-name) Err bitreich.org 70 i- (format nil "~A" Err bitreich.org 70 i- (strcat (symbol-name base-name) Err bitreich.org 70 i- (princ-to-string (incf *anon-name-counter*))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun valid-name-or-die (name) Err bitreich.org 70 i- ;; checks for valid json names (*not* CFFI names) Err bitreich.org 70 i- (etypecase name Err bitreich.org 70 i- (string Err bitreich.org 70 i- (assert (not (zerop (length name))))) Err bitreich.org 70 i- (cons Err bitreich.org 70 i- (assert (= 2 (length name))) Err bitreich.org 70 i- (assert (member (first name) '(:struct :union :enum))) Err bitreich.org 70 i- (valid-name-or-die (second name))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun call-hook (hook &rest args) Err bitreich.org 70 i- (apply hook Err bitreich.org 70 i- ;; indiscriminately add one keyword arg entry to warn Err bitreich.org 70 i- (append args '(just-a-warning "Make sure your transformer hook has &key &allow-other-keys for future extendability.")))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun find-cffi-type-or-die (type-name &optional (namespace :default)) Err bitreich.org 70 i- (when (eq namespace :enum) Err bitreich.org 70 i- ;; TODO FIXME this should be cleaned up in CFFI. more about namespace confusion at: Err bitreich.org 70 i- ;; https://bugs.launchpad.net/cffi/+bug/1527947 Err bitreich.org 70 i- (setf namespace :default)) Err bitreich.org 70 i- (cffi::find-type-parser type-name namespace)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-constant +name-kinds+ '(:struct :union :function :variable :type Err bitreich.org 70 i- :constant :field :argument :enum :member) Err bitreich.org 70 i- :test 'equal) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype ffi-name-kind () Err bitreich.org 70 i- '#.(list* 'member +name-kinds+)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun json-name-to-cffi-name (name kind &optional anonymous) Err bitreich.org 70 i- (check-type name string) Err bitreich.org 70 i- (check-type kind ffi-name-kind) Err bitreich.org 70 i- (when *ffi-name-transformer* Err bitreich.org 70 i- (setf name (call-hook *ffi-name-transformer* name kind)) Err bitreich.org 70 i- (unless (or (and (symbolp name) Err bitreich.org 70 i- (not (null name))) Err bitreich.org 70 i- (stringp name)) Err bitreich.org 70 i- (error "The FFI-NAME-TRANSFORMER ~S returned with ~S which is not a valid name." Err bitreich.org 70 i- *ffi-name-transformer* name))) Err bitreich.org 70 i- (let ((cffi-name (if (symbolp name) Err bitreich.org 70 i- name Err bitreich.org 70 i- (intern name)))) Err bitreich.org 70 i- (when (and (not anonymous) Err bitreich.org 70 i- (boundp '*generated-names*)) Err bitreich.org 70 i- ;; TODO FIXME this function also gets called for e.g. argument types of a function. and Err bitreich.org 70 i- ;; if the function ends up *not* getting emitted, e.g. because of a missing type, then Err bitreich.org 70 i- ;; we wrongly record here the missing type in the *generated-names* registry. Err bitreich.org 70 i- (setf (gethash name (cdr (assoc kind *generated-names*))) Err bitreich.org 70 i- cffi-name)) Err bitreich.org 70 i- cffi-name)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun default-callback-factory (&key &allow-other-keys) Err bitreich.org 70 i- (values)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun default-ffi-name-transformer (name kind &key &allow-other-keys) Err bitreich.org 70 i- (check-type name string) Err bitreich.org 70 i- (case kind Err bitreich.org 70 i- #+nil Err bitreich.org 70 i- ((:constant :member) Err bitreich.org 70 i- (assert (not (symbolp name))) Err bitreich.org 70 i- (format nil "+~A+" name)) Err bitreich.org 70 i- (t name))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun change-case-to-readtable-case (name &optional (reatable *readtable*)) Err bitreich.org 70 i- (ecase (readtable-case reatable) Err bitreich.org 70 i- (:upcase (string-upcase name)) Err bitreich.org 70 i- (:downcase (string-downcase name)) Err bitreich.org 70 i- (:preserve name) Err bitreich.org 70 i- ;; (:invert no, you don't) Err bitreich.org 70 i- )) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun camelcased? (name) Err bitreich.org 70 i- (and (>= (length name) 3) Err bitreich.org 70 i- (let ((lower 0) Err bitreich.org 70 i- (upper 0)) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- :for char :across name Err bitreich.org 70 i- :do (cond Err bitreich.org 70 i- ((upper-case-p char) Err bitreich.org 70 i- (incf upper)) Err bitreich.org 70 i- ((lower-case-p char) Err bitreich.org 70 i- (incf lower)))) Err bitreich.org 70 i- (unless (or (zerop lower) Err bitreich.org 70 i- (zerop upper)) Err bitreich.org 70 i- (let ((ratio (/ upper lower))) Err bitreich.org 70 i- (and (<= 0.05 ratio 0.5))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun camelcase-to-dash-separated (name) Err bitreich.org 70 i- (coerce (loop Err bitreich.org 70 i- :for char :across name Err bitreich.org 70 i- :for index :from 0 Err bitreich.org 70 i- :when (and (upper-case-p char) Err bitreich.org 70 i- (not (zerop index))) Err bitreich.org 70 i- :collect #\- Err bitreich.org 70 i- :collect (char-downcase char)) Err bitreich.org 70 i- 'string)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun maybe-camelcase-to-dash-separated (name) Err bitreich.org 70 i- (if (camelcased? name) Err bitreich.org 70 i- (camelcase-to-dash-separated name) Err bitreich.org 70 i- name)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun default-ffi-name-export-predicate (symbol &key &allow-other-keys) Err bitreich.org 70 i- (declare (ignore symbol)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun default-ffi-type-transformer (type context &key &allow-other-keys) Err bitreich.org 70 i- (declare (ignore context)) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((and (consp type) Err bitreich.org 70 i- (eq :pointer (first type))) Err bitreich.org 70 i- (let ((pointed-to-type (second type))) Err bitreich.org 70 i- (if (eq pointed-to-type :char) Err bitreich.org 70 i- :string Err bitreich.org 70 i- type))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun function-pointer-type-name () Err bitreich.org 70 i- (symbolicate '#:function-pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-allowed-foreign-type-errors ((on-failure-form &key (enabled t)) &body body) Err bitreich.org 70 i- (with-unique-names (type-block) Err bitreich.org 70 i- `(block ,type-block Err bitreich.org 70 i- (handler-bind Err bitreich.org 70 i- ((cffi::foreign-type-error Err bitreich.org 70 i- (lambda (_) Err bitreich.org 70 i- (declare (ignore _)) Err bitreich.org 70 i- (when ,enabled Err bitreich.org 70 i- (return-from ,type-block ,on-failure-form))))) Err bitreich.org 70 i- ,@body)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %json-type-to-cffi-type (json-entry) Err bitreich.org 70 i- (with-json-values (json-entry tag) Err bitreich.org 70 i- (let ((cffi-type Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((switch (tag :test 'equal) Err bitreich.org 70 i- (":void" :void) Err bitreich.org 70 i- (":_Bool" :bool) Err bitreich.org 70 i- ;; regarding :signed-char see https://stackoverflow.com/questions/436513/char-signed-char-char-unsigned-char Err bitreich.org 70 i- (":char" :char) Err bitreich.org 70 i- (":signed-char" :char) Err bitreich.org 70 i- (":unsigned-char" :unsigned-char) Err bitreich.org 70 i- (":short" :short) Err bitreich.org 70 i- (":unsigned-short" :unsigned-short) Err bitreich.org 70 i- (":int" :int) Err bitreich.org 70 i- (":unsigned-int" :unsigned-int) Err bitreich.org 70 i- (":long" :long) Err bitreich.org 70 i- (":unsigned-long" :unsigned-long) Err bitreich.org 70 i- (":long-long" :long-long) Err bitreich.org 70 i- (":unsigned-long-long" :unsigned-long-long) Err bitreich.org 70 i- (":float" :float) Err bitreich.org 70 i- (":double" :double) Err bitreich.org 70 i- ;; TODO FIXME Err bitreich.org 70 i- ;;(":long-double" :long-double) Err bitreich.org 70 i- ) Err bitreich.org 70 i- ;; return the result of the condition expression Err bitreich.org 70 i- ) Err bitreich.org 70 i- ((or (progn Err bitreich.org 70 i- (assert (not (member tag +c-builtin-types+ :test 'equal)) () Err bitreich.org 70 i- "Not all C basic types are covered! The outlier is: ~S" tag) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- (equal tag ":struct") Err bitreich.org 70 i- (equal tag ":union")) Err bitreich.org 70 i- ;; ":struct" is a "struct foo-struct var" kind of reference Err bitreich.org 70 i- (expected-json-keys json-entry :name :tag :id) Err bitreich.org 70 i- (with-json-values (json-entry name id) Err bitreich.org 70 i- (let* ((kind (if (equal tag ":struct") Err bitreich.org 70 i- :struct Err bitreich.org 70 i- :union)) Err bitreich.org 70 i- (cffi-name (if name Err bitreich.org 70 i- (json-name-to-cffi-name name kind) Err bitreich.org 70 i- (lookup-anon-entity id)))) Err bitreich.org 70 i- (find-cffi-type-or-die cffi-name kind) Err bitreich.org 70 i- `(,kind ,cffi-name)))) Err bitreich.org 70 i- ((or (equal tag "struct") Err bitreich.org 70 i- (equal tag "union")) Err bitreich.org 70 i- ;; "struct" denotes a "struct {} var", or "typedef struct {} my_type" Err bitreich.org 70 i- ;; kind of inline anonymous declaration. Let's call PROCESS-C2FFI-ENTRY Err bitreich.org 70 i- ;; to emit it for us, and return with the generated name (first value) Err bitreich.org 70 i- ;; as if it was a standalone toplevel struct definition. Err bitreich.org 70 i- ;; TODO is it a problem that we don't invoke the CALLBACK-FACTORY stuff here? Err bitreich.org 70 i- (let ((form (process-c2ffi-entry json-entry)) Err bitreich.org 70 i- (kind (if (equal tag "struct") Err bitreich.org 70 i- :struct Err bitreich.org 70 i- :union))) Err bitreich.org 70 i- (assert (and (consp form) Err bitreich.org 70 i- (member (first form) '(cffi:defcstruct cffi:defcunion)))) Err bitreich.org 70 i- `(,kind ,(first (ensure-list (second form)))))) Err bitreich.org 70 i- ((equal tag ":enum") Err bitreich.org 70 i- ;; ":enum" is an "enum foo var" kind of reference Err bitreich.org 70 i- (expected-json-keys json-entry :name :tag :id) Err bitreich.org 70 i- (with-json-values (json-entry name id) Err bitreich.org 70 i- (let ((cffi-name (json-name-to-cffi-name (or name Err bitreich.org 70 i- (lookup-anon-entity id)) Err bitreich.org 70 i- :enum))) Err bitreich.org 70 i- (find-cffi-type-or-die cffi-name :enum) Err bitreich.org 70 i- ;; TODO FIXME this would be the proper one, but CFFI is broken: `(:enum ,cffi-name) Err bitreich.org 70 i- cffi-name))) Err bitreich.org 70 i- ((equal tag "enum") Err bitreich.org 70 i- ;; "enum" is an inline "typedef enum {m1, m2} var" kind of inline declaration Err bitreich.org 70 i- (expected-json-keys json-entry :name :tag :id) Err bitreich.org 70 i- ;; TODO FIXME similarly to struct, but it would be nice to see an example Err bitreich.org 70 i- (error "not yet implemented")) Err bitreich.org 70 i- ((equal tag ":array") Err bitreich.org 70 i- (expected-json-keys json-entry :tag :type :size) Err bitreich.org 70 i- (with-json-values (json-entry type size) Err bitreich.org 70 i- (check-type size integer) Err bitreich.org 70 i- `(:array ,(json-type-to-cffi-type type) ,size))) Err bitreich.org 70 i- ((equal tag ":pointer") Err bitreich.org 70 i- (expected-json-keys json-entry :tag :type :id) Err bitreich.org 70 i- (with-json-values (json-entry type) Err bitreich.org 70 i- `(:pointer ,(with-allowed-foreign-type-errors Err bitreich.org 70 i- (:void :enabled *allow-pointer-type-simplification*) Err bitreich.org 70 i- (json-type-to-cffi-type type))))) Err bitreich.org 70 i- ((equal tag ":function-pointer") Err bitreich.org 70 i- (expected-json-keys json-entry :tag) Err bitreich.org 70 i- (function-pointer-type-name)) Err bitreich.org 70 i- ((equal tag ":function") Err bitreich.org 70 i- (unsupported-type json-entry)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (assert (not (starts-with #\: tag))) Err bitreich.org 70 i- (let ((cffi-name (json-name-to-cffi-name tag :type))) Err bitreich.org 70 i- ;; TODO FIXME json-name-to-cffi-name collects the mentioned Err bitreich.org 70 i- ;; types to later emit +TYPE-NAMES+, but if this next Err bitreich.org 70 i- ;; find-cffi-type-or-die dies then the entire function is Err bitreich.org 70 i- ;; skipped. Err bitreich.org 70 i- (find-cffi-type-or-die cffi-name) Err bitreich.org 70 i- cffi-name))))) Err bitreich.org 70 i- (assert cffi-type () "Failed to map ~S to a cffi type" json-entry) Err bitreich.org 70 i- cffi-type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun should-export-p (symbol) Err bitreich.org 70 i- (and symbol Err bitreich.org 70 i- (symbolp symbol) Err bitreich.org 70 i- (not (keywordp symbol)) Err bitreich.org 70 i- *ffi-name-export-predicate* Err bitreich.org 70 i- (call-hook *ffi-name-export-predicate* symbol))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun json-type-to-cffi-type (json-entry &optional (context nil context?)) Err bitreich.org 70 i- (let ((cffi-type (%json-type-to-cffi-type json-entry))) Err bitreich.org 70 i- (if context? Err bitreich.org 70 i- (call-hook *ffi-type-transformer* cffi-type context) Err bitreich.org 70 i- cffi-type))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;;;; Err bitreich.org 70 i-;;; Entry point, the "API" Err bitreich.org 70 i- Err bitreich.org 70 i-(defun process-c2ffi-spec-file (c2ffi-spec-file package-name Err bitreich.org 70 i- &key Err bitreich.org 70 i- (allow-pointer-type-simplification *allow-pointer-type-simplification*) Err bitreich.org 70 i- (allow-skipping-struct-fields *allow-skipping-struct-fields*) Err bitreich.org 70 i- (assume-struct-by-value-support *assume-struct-by-value-support*) Err bitreich.org 70 i- ;; either a pathname or a string (will be copied as is), Err bitreich.org 70 i- ;; or a function that will be funcall'd with one argument Err bitreich.org 70 i- ;; to emit a form (i.e. OUTPUT/CODE). Err bitreich.org 70 i- prelude Err bitreich.org 70 i- (output (make-pathname :name (strcat (pathname-name c2ffi-spec-file) ".cffi-tmp") Err bitreich.org 70 i- :type "lisp" :defaults c2ffi-spec-file)) Err bitreich.org 70 i- (output-encoding asdf:*default-encoding*) Err bitreich.org 70 i- ;; The args following this point are mirrored in the ASDF Err bitreich.org 70 i- ;; component on the same name. Err bitreich.org 70 i- (ffi-name-transformer *ffi-name-transformer*) Err bitreich.org 70 i- (ffi-name-export-predicate *ffi-name-export-predicate*) Err bitreich.org 70 i- ;; as per CFFI:DEFINE-FOREIGN-LIBRARY and CFFI:LOAD-FOREIGN-LIBRARY Err bitreich.org 70 i- (ffi-type-transformer *ffi-type-transformer*) Err bitreich.org 70 i- (callback-factory *callback-factory*) Err bitreich.org 70 i- foreign-library-name Err bitreich.org 70 i- foreign-library-spec Err bitreich.org 70 i- (emit-generated-name-mappings t) Err bitreich.org 70 i- (include-sources :all) Err bitreich.org 70 i- exclude-sources Err bitreich.org 70 i- (include-definitions :all) Err bitreich.org 70 i- exclude-definitions) Err bitreich.org 70 i- "Generates a lisp file with CFFI definitions from C2FFI-SPEC-FILE. Err bitreich.org 70 i-PACKAGE-NAME will be overwritten, it assumes full control over the Err bitreich.org 70 i-target package." Err bitreich.org 70 i- (check-type c2ffi-spec-file (or pathname string)) Err bitreich.org 70 i- (macrolet ((@ (var) Err bitreich.org 70 i- `(setf ,var (compile-rules ,var)))) Err bitreich.org 70 i- (@ include-sources) Err bitreich.org 70 i- (@ exclude-sources) Err bitreich.org 70 i- (@ include-definitions) Err bitreich.org 70 i- (@ exclude-definitions)) Err bitreich.org 70 i- (with-standard-io-syntax Err bitreich.org 70 i- (with-input-from-file (in c2ffi-spec-file :external-format (asdf/driver:encoding-external-format :utf-8)) Err bitreich.org 70 i- (with-output-to-file (*c2ffi-output-stream* output :if-exists :supersede Err bitreich.org 70 i- :external-format (asdf/driver:encoding-external-format output-encoding)) Err bitreich.org 70 i- (let* ((*package* (or (find-package package-name) Err bitreich.org 70 i- (make-package package-name))) Err bitreich.org 70 i- ;; Make sure we use an uninterned symbol, so that it's neutral to READTABLE-CASE. Err bitreich.org 70 i- (package-name (make-symbol (package-name *package*))) Err bitreich.org 70 i- ;; Let's rebind a copy, so that when we are done with Err bitreich.org 70 i- ;; the generation (which also EVAL's the forms) then Err bitreich.org 70 i- ;; the CFFI type repository is also reverted back to Err bitreich.org 70 i- ;; the previous state. This avoids redefinition warning Err bitreich.org 70 i- ;; when the generated file gets compiled and loaded Err bitreich.org 70 i- ;; later. Err bitreich.org 70 i- (cffi::*type-parsers* (copy-hash-table cffi::*type-parsers*)) Err bitreich.org 70 i- (*anon-name-counter* 0) Err bitreich.org 70 i- (*anon-entities* (make-hash-table)) Err bitreich.org 70 i- (*generated-names* (mapcar (lambda (key) Err bitreich.org 70 i- `(,key . ,(make-hash-table :test 'equal))) Err bitreich.org 70 i- +name-kinds+)) Err bitreich.org 70 i- (*allow-pointer-type-simplification* allow-pointer-type-simplification) Err bitreich.org 70 i- (*allow-skipping-struct-fields* allow-skipping-struct-fields) Err bitreich.org 70 i- (*assume-struct-by-value-support* assume-struct-by-value-support) Err bitreich.org 70 i- (*ffi-name-transformer* (canonicalize-transformer-hook ffi-name-transformer)) Err bitreich.org 70 i- (*ffi-name-export-predicate* (canonicalize-transformer-hook ffi-name-export-predicate)) Err bitreich.org 70 i- (*ffi-type-transformer* (canonicalize-transformer-hook ffi-type-transformer)) Err bitreich.org 70 i- (*callback-factory* (canonicalize-transformer-hook callback-factory)) Err bitreich.org 70 i- (*read-default-float-format* 'double-float) Err bitreich.org 70 i- (json (json:decode-json in))) Err bitreich.org 70 i- (output/string +generated-file-header+) Err bitreich.org 70 i- ;; some forms that are always emitted Err bitreich.org 70 i- (mapc 'output/code Err bitreich.org 70 i- ;; Make sure the package exists. We don't even want to :use COMMON-LISP here, Err bitreich.org 70 i- ;; to avoid any possible name clashes. Err bitreich.org 70 i- `((uiop:define-package ,package-name (:use)) Err bitreich.org 70 i- (in-package ,package-name) Err bitreich.org 70 i- (cffi:defctype ,(function-pointer-type-name) :pointer))) Err bitreich.org 70 i- (when (and foreign-library-name Err bitreich.org 70 i- foreign-library-spec) Err bitreich.org 70 i- (when (stringp foreign-library-name) Err bitreich.org 70 i- (setf foreign-library-name (safe-read-from-string foreign-library-name))) Err bitreich.org 70 i- (output/code `(cffi:define-foreign-library ,foreign-library-name Err bitreich.org 70 i- ,@foreign-library-spec)) Err bitreich.org 70 i- ;; TODO: Unconditionally emitting a USE-FOREIGN-LIBRARY may not be smart. Err bitreich.org 70 i- ;; For details see: https://bugs.launchpad.net/cffi/+bug/1593635 Err bitreich.org 70 i- (output/code `(cffi:use-foreign-library ,foreign-library-name))) Err bitreich.org 70 i- (etypecase prelude Err bitreich.org 70 i- (null) Err bitreich.org 70 i- (string Err bitreich.org 70 i- (output/string prelude)) Err bitreich.org 70 i- (pathname Err bitreich.org 70 i- (with-input-from-file (prelude-stream prelude) Err bitreich.org 70 i- (alexandria:copy-stream prelude-stream *c2ffi-output-stream* Err bitreich.org 70 i- :element-type 'character))) Err bitreich.org 70 i- ((or symbol function) Err bitreich.org 70 i- (funcall prelude 'output/code))) Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; Let's enumerate the entries Err bitreich.org 70 i- (multiple-value-bind (form-callback epilogue-callback) Err bitreich.org 70 i- (funcall *callback-factory*) Err bitreich.org 70 i- (dolist (json-entry json) Err bitreich.org 70 i- (with-json-values (json-entry name location) Err bitreich.org 70 i- (let ((source-location-file (subseq location Err bitreich.org 70 i- 0 Err bitreich.org 70 i- (or (position #\: location) Err bitreich.org 70 i- 0)))) Err bitreich.org 70 i- (if (include-definition? Err bitreich.org 70 i- name source-location-file Err bitreich.org 70 i- include-definitions exclude-definitions Err bitreich.org 70 i- include-sources exclude-sources) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (output/string "~&~%;; ~S" location) Err bitreich.org 70 i- (let ((emitted-definition (process-c2ffi-entry json-entry))) Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; Call the plugin to let the user emit a form after the given Err bitreich.org 70 i- ;; definition Err bitreich.org 70 i- (when (and emitted-definition Err bitreich.org 70 i- form-callback) Err bitreich.org 70 i- (map nil 'output/code (call-hook form-callback emitted-definition))))) Err bitreich.org 70 i- (output/string "~&;; Skipped ~S due to filters" name))))) Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; Call the plugin to let the user append multiple forms after the Err bitreich.org 70 i- ;; emitted definitions Err bitreich.org 70 i- (when epilogue-callback Err bitreich.org 70 i- (map nil 'output/code (call-hook epilogue-callback)))) Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; emit optional exports Err bitreich.org 70 i- (maphash Err bitreich.org 70 i- (lambda (package-name symbols) Err bitreich.org 70 i- (output/export (sort (remove-if-not #'should-export-p symbols) #'string<) Err bitreich.org 70 i- package-name)) Err bitreich.org 70 i- (get-all-names-by-package *generated-names*)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; emit optional mappings Err bitreich.org 70 i- (when emit-generated-name-mappings Err bitreich.org 70 i- (mapcar (lambda (entry) Err bitreich.org 70 i- (destructuring-bind (kind variable-name) entry Err bitreich.org 70 i- (output/code `(defparameter Err bitreich.org 70 i- ,(intern (symbol-name variable-name)) Err bitreich.org 70 i- ',(hash-table-alist (cdr (assoc kind *generated-names*))))))) Err bitreich.org 70 i- `((:function #:+function-names+) Err bitreich.org 70 i- (:struct #:+struct-names+) Err bitreich.org 70 i- (:union #:+union-names+) Err bitreich.org 70 i- (:variable #:+variable-names+) Err bitreich.org 70 i- (:type #:+type-names+) Err bitreich.org 70 i- (:constant #:+constant-names+) Err bitreich.org 70 i- (:argument #:+argument-names+) Err bitreich.org 70 i- (:field #:+field-names+)))))))) Err bitreich.org 70 i- output) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-all-names-by-package (name-collection) Err bitreich.org 70 i- (let ((tables (mapcar #'cdr name-collection)) Err bitreich.org 70 i- all Err bitreich.org 70 i- (grouped (make-hash-table))) Err bitreich.org 70 i- (loop :for table :in tables :do Err bitreich.org 70 i- (loop :for s :being :the :hash-values :of table :do Err bitreich.org 70 i- (push s all))) Err bitreich.org 70 i- (remove-duplicates all :test #'eq) Err bitreich.org 70 i- (loop :for name :in all Err bitreich.org 70 i- :for package-name := (package-name (symbol-package name)) Err bitreich.org 70 i- :do (setf (gethash package-name grouped) Err bitreich.org 70 i- (cons name (gethash package-name grouped)))) Err bitreich.org 70 i- grouped)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;;;; Err bitreich.org 70 i-;;; Processors for various definitions Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *c2ffi-entry-processors* (make-hash-table :test 'equal)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun process-c2ffi-entry (json-entry) Err bitreich.org 70 i- (let* ((kind (json-value json-entry :tag)) Err bitreich.org 70 i- (processor (gethash kind *c2ffi-entry-processors*))) Err bitreich.org 70 i- (if processor Err bitreich.org 70 i- (let ((definition-form Err bitreich.org 70 i- (handler-bind Err bitreich.org 70 i- ((unsupported-type Err bitreich.org 70 i- (lambda (e) Err bitreich.org 70 i- (warn "Skip definition because cannot map ~S to any CFFI type. The definition is ~S" Err bitreich.org 70 i- (json-definition-of e) json-entry) Err bitreich.org 70 i- (return-from process-c2ffi-entry (values)))) Err bitreich.org 70 i- (cffi::undefined-foreign-type-error Err bitreich.org 70 i- (lambda (e) Err bitreich.org 70 i- (output/string "~&;; Skipping definition ~S because of missing type ~S" Err bitreich.org 70 i- json-entry (cffi::foreign-type-error/compound-name e)) Err bitreich.org 70 i- (return-from process-c2ffi-entry (values))))) Err bitreich.org 70 i- (funcall processor json-entry)))) Err bitreich.org 70 i- (when definition-form Err bitreich.org 70 i- (output/code definition-form) Err bitreich.org 70 i- definition-form)) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (warn "No cffi/c2ffi processor defined for ~A" json-entry) Err bitreich.org 70 i- (values))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro define-processor (kind args &body body) Err bitreich.org 70 i- `(setf (gethash ,(string-downcase kind) *c2ffi-entry-processors*) Err bitreich.org 70 i- (named-lambda ,(symbolicate 'c2ffi-processor/ kind) (-json-entry-) Err bitreich.org 70 i- (with-json-values (-json-entry- ,@args) Err bitreich.org 70 i- ,@body)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %process-struct-like (json-entry kind definer anon-base-name) Err bitreich.org 70 i- (expected-json-keys json-entry :tag :ns :name :id :bit-size :bit-alignment :fields) Err bitreich.org 70 i- (with-json-values (json-entry tag (struct-name :name) fields bit-size id) Err bitreich.org 70 i- (assert (member tag '(":struct" "struct" ":union" "union") :test 'equal)) Err bitreich.org 70 i- (flet ((process-field (json-entry) Err bitreich.org 70 i- (with-json-values (json-entry (field-name :name) bit-offset type) Err bitreich.org 70 i- (let ((cffi-type (with-allowed-foreign-type-errors Err bitreich.org 70 i- ('failed :enabled *allow-skipping-struct-fields*) Err bitreich.org 70 i- (json-type-to-cffi-type type `(,kind ,struct-name ,field-name))))) Err bitreich.org 70 i- (if (eq cffi-type 'failed) Err bitreich.org 70 i- (output/string "~&;; skipping field due to missing type ~S, full json entry: ~S" type json-entry) Err bitreich.org 70 i- `(,(json-name-to-cffi-name field-name :field) Err bitreich.org 70 i- ,cffi-type Err bitreich.org 70 i- ,@(unless (eq kind :union) Err bitreich.org 70 i- `(:offset ,(coerce-to-byte-size bit-offset))))))))) Err bitreich.org 70 i- `(,definer (,(json-name-to-cffi-name (or struct-name Err bitreich.org 70 i- (register-anon-entity Err bitreich.org 70 i- id Err bitreich.org 70 i- (generate-anon-name anon-base-name))) Err bitreich.org 70 i- kind Err bitreich.org 70 i- (null struct-name)) Err bitreich.org 70 i- :size ,(coerce-to-byte-size bit-size)) Err bitreich.org 70 i- ,@(remove nil (mapcar #'process-field fields)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-processor struct () Err bitreich.org 70 i- (%process-struct-like -json-entry- :struct 'cffi:defcstruct '#:anon-struct-)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-processor union () Err bitreich.org 70 i- (%process-struct-like -json-entry- :union 'cffi:defcunion '#:anon-union-)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-processor typedef (name type) Err bitreich.org 70 i- (expected-json-keys -json-entry- :tag :name :ns :type) Err bitreich.org 70 i- `(cffi:defctype ,(json-name-to-cffi-name name :type) Err bitreich.org 70 i- ,(json-type-to-cffi-type type `(:typedef ,name)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-processor function (return-type (function-name :name) parameters inline variadic storage-class) Err bitreich.org 70 i- (declare (ignore storage-class)) Err bitreich.org 70 i- ;; TODO does storage-class matter for FFI accessibility? Err bitreich.org 70 i- #+nil Err bitreich.org 70 i- (assume (equal "extern" storage-class) Err bitreich.org 70 i- "Unexpected function STORAGE-CLASS: ~S for function ~S" storage-class function-name) Err bitreich.org 70 i- (expected-json-keys -json-entry- :tag :name :return-type :parameters :variadic :inline :storage-class :ns) Err bitreich.org 70 i- (let ((uses-struct-by-value? nil)) Err bitreich.org 70 i- (flet ((process-arg (json-entry index) Err bitreich.org 70 i- (expected-json-keys json-entry :tag :name :type) Err bitreich.org 70 i- (with-json-values (json-entry tag (argument-name :name) type) Err bitreich.org 70 i- (assert (equal tag "parameter")) Err bitreich.org 70 i- (let* ((cffi-type (json-type-to-cffi-type type `(:function ,function-name ,argument-name))) Err bitreich.org 70 i- (canonicalized-type (cffi::canonicalize-foreign-type cffi-type))) Err bitreich.org 70 i- (when (and (consp canonicalized-type) Err bitreich.org 70 i- (member (first canonicalized-type) '(:struct :union))) Err bitreich.org 70 i- (setf uses-struct-by-value? t)) Err bitreich.org 70 i- `(,(if argument-name Err bitreich.org 70 i- (json-name-to-cffi-name argument-name :argument) Err bitreich.org 70 i- (symbolicate '#:arg (princ-to-string index))) Err bitreich.org 70 i- ,cffi-type))))) Err bitreich.org 70 i- (let ((cffi-args (loop Err bitreich.org 70 i- :for arg :in parameters Err bitreich.org 70 i- :for index :upfrom 1 Err bitreich.org 70 i- :collect (process-arg arg index)))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((and uses-struct-by-value? Err bitreich.org 70 i- (not *assume-struct-by-value-support*)) Err bitreich.org 70 i- (values)) Err bitreich.org 70 i- (inline Err bitreich.org 70 i- ;; TODO inline functions should go into a separate grovel file? Err bitreich.org 70 i- (output/string "~&;; Skipping inline function ~S" function-name) Err bitreich.org 70 i- (values)) Err bitreich.org 70 i- (t `(cffi:defcfun (,function-name ,(json-name-to-cffi-name function-name :function)) Err bitreich.org 70 i- ,(json-type-to-cffi-type return-type `(:function ,function-name :return-type)) Err bitreich.org 70 i- ,@(append cffi-args Err bitreich.org 70 i- (when variadic Err bitreich.org 70 i- '(&rest)))))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-processor extern (name type) Err bitreich.org 70 i- (expected-json-keys -json-entry- :tag :name :type) Err bitreich.org 70 i- `(cffi:defcvar (,name ,(json-name-to-cffi-name name :variable)) Err bitreich.org 70 i- ,(json-type-to-cffi-type type `(:variable ,name)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; ((TAG . enum) (NS . 0) (NAME . ) (ID . 3) (LOCATION . /usr/include/bits/confname.h:24:1) (FIELDS ((TAG . field) (NAME . _PC_LINK_MAX) (VALUE . 0)) ((TAG . field) (NAME . _PC_MAX_CANON) (VALUE . 1)) ((TAG . field) (NAME . _PC_MAX_INPUT) (VALUE . 2)) ((TAG . field) (NAME . _PC_NAME_MAX) (VALUE . 3)) ((TAG . field) (NAME . _PC_PATH_MAX) (VALUE . 4)) ((TAG . field) (NAME . _PC_PIPE_BUF) (VALUE . 5)) ((TAG . field) (NAME . _PC_CHOWN_RESTRICTED) (VALUE . 6)) ((TAG . field) (NAME . _PC_NO_TRUNC) (VALUE . 7)) ((TAG . field) (NAME . _PC_VDISABLE) (VALUE . 8)) ((TAG . field) (NAME . _PC_SYNC_IO) (VALUE . 9)) ((TAG . field) (NAME . _PC_ASYNC_IO) (VALUE . 10)) ((TAG . field) (NAME . _PC_PRIO_IO) (VALUE . 11)) ((TAG . field) (NAME . _PC_SOCK_MAXBUF) (VALUE . 12)) ((TAG . field) (NAME . _PC_FILESIZEBITS) (VALUE . 13)) ((TAG . field) (NAME . _PC_REC_INCR_XFER_SIZE) (VALUE . 14)) ((TAG . field) (NAME . _PC_REC_MAX_XFER_SIZE) (VALUE . 15)) ((TAG . field) (NAME . _PC_REC_MIN_XFER_SIZE) (VALUE . 16)) ((TAG . field) (NAME . _PC_REC_XFER_ALIGN) (VALUE . 17)) ((TAG . field) (NAME . _PC_ALLOC_SIZE_MIN) (VALUE . 18)) ((TAG . field) (NAME . _PC_SYMLINK_MAX) (VALUE . 19)) ((TAG . field) (NAME . _PC_2_SYMLINKS) (VALUE . 20)))) Err bitreich.org 70 i-(define-processor enum (name fields id) Err bitreich.org 70 i- (let ((bitmasks 0) Err bitreich.org 70 i- (non-bitmasks 0)) Err bitreich.org 70 i- (labels Err bitreich.org 70 i- ((for-bitmask-statistics (name value) Err bitreich.org 70 i- (declare (ignore name)) Err bitreich.org 70 i- (if (cffi::single-bit-p value) Err bitreich.org 70 i- (incf bitmasks) Err bitreich.org 70 i- (incf non-bitmasks))) Err bitreich.org 70 i- (for-enum-body (name value) Err bitreich.org 70 i- `(,(json-name-to-cffi-name name :member) Err bitreich.org 70 i- ,value)) Err bitreich.org 70 i- (process-fields (visitor) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- :for json-entry :in fields Err bitreich.org 70 i- :do (expected-json-keys json-entry :tag :name :value) Err bitreich.org 70 i- :collect Err bitreich.org 70 i- (with-json-values (json-entry tag name value) Err bitreich.org 70 i- (assert (equal tag "field")) Err bitreich.org 70 i- (check-type value integer) Err bitreich.org 70 i- (funcall visitor name value))))) Err bitreich.org 70 i- (process-fields #'for-bitmask-statistics) Err bitreich.org 70 i- `(,(if (> (/ bitmasks Err bitreich.org 70 i- (+ non-bitmasks bitmasks)) Err bitreich.org 70 i- 0.8) Err bitreich.org 70 i- 'cffi:defbitfield Err bitreich.org 70 i- 'cffi:defcenum) Err bitreich.org 70 i- ,(json-name-to-cffi-name (or name Err bitreich.org 70 i- (register-anon-entity Err bitreich.org 70 i- id Err bitreich.org 70 i- (generate-anon-name '#:anon-enum-))) Err bitreich.org 70 i- :enum Err bitreich.org 70 i- (null name)) Err bitreich.org 70 i- ,@(process-fields #'for-enum-body))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-define-constant-form (name value) Err bitreich.org 70 i- (valid-name-or-die name) Err bitreich.org 70 i- (let ((test-fn (typecase value Err bitreich.org 70 i- (number) Err bitreich.org 70 i- (t 'equal)))) Err bitreich.org 70 i- `(alexandria:define-constant ,(json-name-to-cffi-name name :constant) Err bitreich.org 70 i- ,value ,@(when test-fn `(:test ',test-fn))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-processor const (name type (value :value :otherwise nil)) Err bitreich.org 70 i- (expected-json-keys -json-entry- :tag :name :type :value :ns) Err bitreich.org 70 i- (let ((cffi-type (json-type-to-cffi-type type `(:contant ,name)))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((not value) Err bitreich.org 70 i- ;; #define __FOO_H and friends... just ignore them. Err bitreich.org 70 i- (values)) Err bitreich.org 70 i- ((and (member cffi-type '(:int :unsigned-int Err bitreich.org 70 i- :long :unsigned-long Err bitreich.org 70 i- :long-long :unsigned-long-long)) Err bitreich.org 70 i- (integerp value)) Err bitreich.org 70 i- (make-define-constant-form name value)) Err bitreich.org 70 i- ((and (member cffi-type '(:float :double)) Err bitreich.org 70 i- (floatp value)) Err bitreich.org 70 i- (make-define-constant-form name value)) Err bitreich.org 70 i- ((member cffi-type '(:string (:pointer :char)) :test 'equal) Err bitreich.org 70 i- (make-define-constant-form name value)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (warn "Don't know how to emit a constant of CFFI type ~S, with value ~S (json type is ~S)." cffi-type value type) Err bitreich.org 70 i- (values))))) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/src/c2ffi/package.lisp b/3rdparties/software/cffi_0.20.0/src/c2ffi/package.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/src/c2ffi/package.lisp.gph bitreich.org 70 i@@ -1,54 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2015, Attila Lendvai Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(uiop:define-package #:cffi/c2ffi Err bitreich.org 70 i- (:mix #:uiop Err bitreich.org 70 i- #:alexandria Err bitreich.org 70 i- #:common-lisp) Err bitreich.org 70 i- (:import-from :asdf Err bitreich.org 70 i- #:cl-source-file Err bitreich.org 70 i- #:find-system Err bitreich.org 70 i- #:output-file Err bitreich.org 70 i- #:output-files Err bitreich.org 70 i- #:input-files Err bitreich.org 70 i- #:perform Err bitreich.org 70 i- #:compile-op Err bitreich.org 70 i- #:load-op Err bitreich.org 70 i- #:load-source-op Err bitreich.org 70 i- #:prepare-op Err bitreich.org 70 i- #:component-pathname Err bitreich.org 70 i- #:component-depends-on Err bitreich.org 70 i- #:downward-operation Err bitreich.org 70 i- #:load-system Err bitreich.org 70 i- #:component-loaded-p) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- #:c2ffi-file Err bitreich.org 70 i- #:camelcased? Err bitreich.org 70 i- #:camelcase-to-dash-separated Err bitreich.org 70 i- #:change-case-to-readtable-case Err bitreich.org 70 i- #:default-ffi-name-transformer Err bitreich.org 70 i- #:default-ffi-type-transformer Err bitreich.org 70 i- #:generate-spec Err bitreich.org 70 i- #:maybe-camelcase-to-dash-separated)) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/src/cffi-abcl.lisp b/3rdparties/software/cffi_0.20.0/src/cffi-abcl.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/src/cffi-abcl.lisp.gph bitreich.org 70 i@@ -1,664 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; cffi-abcl.lisp --- CFFI-SYS implementation for ABCL/JNA. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2009, Luis Oliveira Err bitreich.org 70 i-;;; Copyright (C) 2012, Mark Evenson Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-;;; This implementation requires the Java Native Access (JNA) library. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; JNA may be automatically loaded into the current JVM process from Err bitreich.org 70 i-;;; abcl-1.1.0-dev via the contrib mechanism. Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (require :abcl-contrib) Err bitreich.org 70 i- (require :jna) Err bitreich.org 70 i- (require :jss)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; This is a preliminary version that will have to be cleaned up, Err bitreich.org 70 i-;;; optimized, etc. Nevertheless, it passes all of the relevant CFFI Err bitreich.org 70 i-;;; tests except MAKE-POINTER.HIGH. Shareable Vectors are not Err bitreich.org 70 i-;;; implemented yet. Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Administrivia Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:cffi-sys Err bitreich.org 70 i- (:use #:cl #:java) Err bitreich.org 70 i- (:import-from #:alexandria #:hash-table-values #:length= #:format-symbol) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- #:canonicalize-symbol-name-case Err bitreich.org 70 i- #:foreign-pointer Err bitreich.org 70 i- #:pointerp Err bitreich.org 70 i- #:pointer-eq Err bitreich.org 70 i- #:null-pointer Err bitreich.org 70 i- #:null-pointer-p Err bitreich.org 70 i- #:inc-pointer Err bitreich.org 70 i- #:make-pointer Err bitreich.org 70 i- #:pointer-address Err bitreich.org 70 i- #:%foreign-alloc Err bitreich.org 70 i- #:foreign-free Err bitreich.org 70 i- #:with-foreign-pointer Err bitreich.org 70 i- #:%foreign-funcall Err bitreich.org 70 i- #:%foreign-funcall-pointer Err bitreich.org 70 i- #:%foreign-type-alignment Err bitreich.org 70 i- #:%foreign-type-size Err bitreich.org 70 i- #:%load-foreign-library Err bitreich.org 70 i- #:%close-foreign-library Err bitreich.org 70 i- #:native-namestring Err bitreich.org 70 i- #:%mem-ref Err bitreich.org 70 i- #:%mem-set Err bitreich.org 70 i- ;; #:make-shareable-byte-vector Err bitreich.org 70 i- ;; #:with-pointer-to-vector-data Err bitreich.org 70 i- #:%foreign-symbol-pointer Err bitreich.org 70 i- #:%defcallback Err bitreich.org 70 i- #:%callback Err bitreich.org 70 i- #:with-pointer-to-vector-data Err bitreich.org 70 i- #:make-shareable-byte-vector)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-sys) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Loading and Closing Foreign Libraries Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *loaded-libraries* (make-hash-table)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %load-foreign-library (name path) Err bitreich.org 70 i- "Load a foreign library, signals a simple error on failure." Err bitreich.org 70 i- (flet ((load-and-register (name path) Err bitreich.org 70 i- (let ((lib (jstatic "getInstance" "com.sun.jna.NativeLibrary" path))) Err bitreich.org 70 i- (setf (gethash name *loaded-libraries*) lib) Err bitreich.org 70 i- lib)) Err bitreich.org 70 i- (foreign-library-type-p (type) Err bitreich.org 70 i- (find type '("so" "dll" "dylib") :test #'string=)) Err bitreich.org 70 i- (java-error (e) Err bitreich.org 70 i- (error (jcall (jmethod "java.lang.Exception" "getMessage") Err bitreich.org 70 i- (java-exception-cause e))))) Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (load-and-register name path) Err bitreich.org 70 i- (java-exception (e) Err bitreich.org 70 i- ;; From JNA http://jna.java.net/javadoc/com/sun/jna/NativeLibrary.html Err bitreich.org 70 i- ;; ``[The name] can be short form (e.g. "c"), an explicit Err bitreich.org 70 i- ;; version (e.g. "libc.so.6"), or the full path to the library Err bitreich.org 70 i- ;; (e.g. "/lib/libc.so.6")'' Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; Try to deal with the occurance "libXXX" and "libXXX.so" as Err bitreich.org 70 i- ;; "libXXX.so.6" and "XXX" should have succesfully loaded. Err bitreich.org 70 i- (let ((p (pathname path))) Err bitreich.org 70 i- (if (and (not (pathname-directory p)) Err bitreich.org 70 i- (= (search "lib" (pathname-name p)) 0)) Err bitreich.org 70 i- (let ((short-name (if (foreign-library-type-p (pathname-type p)) Err bitreich.org 70 i- (subseq (pathname-name p) 3) Err bitreich.org 70 i- (pathname-name p)))) Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (load-and-register name short-name) Err bitreich.org 70 i- (java-exception (e) (java-error e)))) Err bitreich.org 70 i- (java-error e))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; FIXME. Should remove libraries from the hash table. Err bitreich.org 70 i-(defun %close-foreign-library (handle) Err bitreich.org 70 i- "Closes a foreign library." Err bitreich.org 70 i- #+#:ignore (setf *loaded-libraries* (remove handle *loaded-libraries*)) Err bitreich.org 70 i- (jcall-raw (jmethod "com.sun.jna.NativeLibrary" "dispose") handle)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-;;; FIXME! We should probably define a private-jfield-accessor that does the hard work once! Err bitreich.org 70 i-(let ((get-declared-fields-jmethod (jmethod "java.lang.Class" "getDeclaredFields"))) Err bitreich.org 70 i- (defun private-jfield (class-name field-name instance) Err bitreich.org 70 i- (let ((field (find field-name Err bitreich.org 70 i- (jcall get-declared-fields-jmethod Err bitreich.org 70 i- (jclass class-name)) Err bitreich.org 70 i- :key #'jfield-name Err bitreich.org 70 i- :test #'string=))) Err bitreich.org 70 i- (jcall (jmethod "java.lang.reflect.Field" "setAccessible" "boolean") Err bitreich.org 70 i- field +true+) Err bitreich.org 70 i- (jcall (jmethod "java.lang.reflect.Field" "get" "java.lang.Object") Err bitreich.org 70 i- field instance)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; XXX: doesn't match jmethod-arguments. Err bitreich.org 70 i- Err bitreich.org 70 i-(let ((get-declared-methods-jmethod (jmethod "java.lang.Class" "getDeclaredMethods"))) Err bitreich.org 70 i- (defun private-jmethod (class-name method-name) Err bitreich.org 70 i- (let ((method (find method-name Err bitreich.org 70 i- (jcall get-declared-methods-jmethod Err bitreich.org 70 i- (jclass class-name)) Err bitreich.org 70 i- :key #'jmethod-name Err bitreich.org 70 i- :test #'string=))) Err bitreich.org 70 i- (jcall (jmethod "java.lang.reflect.Method" "setAccessible" "boolean") Err bitreich.org 70 i- method +true+) Err bitreich.org 70 i- method))) Err bitreich.org 70 i- Err bitreich.org 70 i-(let ((get-declared-constructors-jmethod (jmethod "java.lang.Class" Err bitreich.org 70 i- "getDeclaredConstructors")) Err bitreich.org 70 i- (set-accessible-jmethod (jmethod "java.lang.reflect.Constructor" "setAccessible" "boolean"))) Err bitreich.org 70 i- (defun private-jconstructor (class-name &rest params) Err bitreich.org 70 i- (let* ((param-classes (mapcar #'jclass params)) Err bitreich.org 70 i- (cons (find-if (lambda (x &aux (cons-params (jconstructor-params x))) Err bitreich.org 70 i- (and (length= param-classes cons-params) Err bitreich.org 70 i- (loop for param in param-classes Err bitreich.org 70 i- and param-x across cons-params Err bitreich.org 70 i- always (string= (jclass-name param) Err bitreich.org 70 i- (jclass-name param-x))))) Err bitreich.org 70 i- (jcall get-declared-constructors-jmethod (jclass class-name))))) Err bitreich.org 70 i- (jcall set-accessible-jmethod cons +true+) Err bitreich.org 70 i- cons))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Symbol Case Err bitreich.org 70 i- Err bitreich.org 70 i-(defun canonicalize-symbol-name-case (name) Err bitreich.org 70 i- (string-upcase name)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Pointers Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype foreign-pointer () Err bitreich.org 70 i- '(satisfies pointerp)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun pointerp (ptr) Err bitreich.org 70 i- "Return true if PTR is a foreign pointer." Err bitreich.org 70 i- (let ((jclass (jclass-of ptr))) Err bitreich.org 70 i- (when jclass Err bitreich.org 70 i- (jclass-superclass-p (jclass "com.sun.jna.Pointer") jclass)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(let ((jconstructor (private-jconstructor "com.sun.jna.Pointer" "long"))) Err bitreich.org 70 i- (defun make-pointer (address) Err bitreich.org 70 i- "Return a pointer pointing to ADDRESS." Err bitreich.org 70 i- (jnew jconstructor address))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-private-jfield-accessor (class-name field-name) Err bitreich.org 70 i- (let ((field (find field-name Err bitreich.org 70 i- (jcall (jmethod "java.lang.Class" "getDeclaredFields") Err bitreich.org 70 i- (jclass class-name)) Err bitreich.org 70 i- :key #'jfield-name Err bitreich.org 70 i- :test #'string=))) Err bitreich.org 70 i- (jcall (jmethod "java.lang.reflect.Field" "setAccessible" "boolean") Err bitreich.org 70 i- field +true+) Err bitreich.org 70 i- (let ((get-jmethod (jmethod "java.lang.reflect.Field" "get" "java.lang.Object"))) Err bitreich.org 70 i- (lambda (instance) Err bitreich.org 70 i- (jcall get-jmethod field instance))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(let ((accessor (make-private-jfield-accessor "com.sun.jna.Pointer" "peer"))) Err bitreich.org 70 i- (defun %pointer-address (pointer) Err bitreich.org 70 i- (funcall accessor pointer))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun pointer-address (pointer) Err bitreich.org 70 i- "Return the address pointed to by PTR." Err bitreich.org 70 i- (let ((peer (%pointer-address pointer))) Err bitreich.org 70 i- (if (< peer 0) Err bitreich.org 70 i- (+ #.(ash 1 64) peer) Err bitreich.org 70 i- peer))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun pointer-eq (ptr1 ptr2) Err bitreich.org 70 i- "Return true if PTR1 and PTR2 point to the same address." Err bitreich.org 70 i- (= (%pointer-address ptr1) (%pointer-address ptr2))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun null-pointer () Err bitreich.org 70 i- "Construct and return a null pointer." Err bitreich.org 70 i- (make-pointer 0)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun null-pointer-p (ptr) Err bitreich.org 70 i- "Return true if PTR is a null pointer." Err bitreich.org 70 i- (zerop (%pointer-address ptr))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun inc-pointer (ptr offset) Err bitreich.org 70 i- "Return a fresh pointer pointing OFFSET bytes past PTR." Err bitreich.org 70 i- (make-pointer (+ (%pointer-address ptr) offset))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Allocation Err bitreich.org 70 i- Err bitreich.org 70 i-(let ((malloc-jmethod (private-jmethod "com.sun.jna.Memory" "malloc"))) Err bitreich.org 70 i- (defun %foreign-alloc (size) Err bitreich.org 70 i- "Allocate SIZE bytes on the heap and return a pointer." Err bitreich.org 70 i- (make-pointer Err bitreich.org 70 i- (jstatic-raw malloc-jmethod nil size)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(let ((free-jmethod (private-jmethod "com.sun.jna.Memory" "free"))) Err bitreich.org 70 i- (defun foreign-free (ptr) Err bitreich.org 70 i- "Free a PTR allocated by FOREIGN-ALLOC." Err bitreich.org 70 i- (jstatic-raw free-jmethod nil (%pointer-address ptr)) Err bitreich.org 70 i- nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; TODO: stack allocation. Err bitreich.org 70 i-(defmacro with-foreign-pointer ((var size &optional size-var) &body body) Err bitreich.org 70 i- "Bind VAR to SIZE bytes of foreign memory during BODY. The pointer Err bitreich.org 70 i-in VAR is invalid beyond the dynamic extent of BODY, and may be Err bitreich.org 70 i-stack-allocated if supported by the implementation. If SIZE-VAR is Err bitreich.org 70 i-supplied, it will be bound to SIZE during BODY." Err bitreich.org 70 i- (unless size-var Err bitreich.org 70 i- (setf size-var (gensym "SIZE"))) Err bitreich.org 70 i- `(let* ((,size-var ,size) Err bitreich.org 70 i- (,var (%foreign-alloc ,size-var))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn ,@body) Err bitreich.org 70 i- (foreign-free ,var)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Shareable Vectors Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; This interface is very experimental. WITH-POINTER-TO-VECTOR-DATA Err bitreich.org 70 i-;;; should be defined to perform a copy-in/copy-out if the Lisp Err bitreich.org 70 i-;;; implementation can't do this. Err bitreich.org 70 i- Err bitreich.org 70 i-(defun jna-setter (type) Err bitreich.org 70 i- (ecase type Err bitreich.org 70 i- ((:char :unsigned-char) "setByte") Err bitreich.org 70 i- (:double "setDouble") Err bitreich.org 70 i- (:float "setFloat") Err bitreich.org 70 i- ((:int :unsigned-int) "setInt") Err bitreich.org 70 i- ((:long :unsigned-long) "setNativeLong") Err bitreich.org 70 i- ((:long-long :unsigned-long-long) "setLong") Err bitreich.org 70 i- (:pointer "setPointer") Err bitreich.org 70 i- ((:short :unsigned-short) "setShort"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun jna-setter-arg-type (type) Err bitreich.org 70 i- (ecase type Err bitreich.org 70 i- ((:char :unsigned-char) "byte") Err bitreich.org 70 i- (:double "double") Err bitreich.org 70 i- (:float "float") Err bitreich.org 70 i- ((:int :unsigned-int) "int") Err bitreich.org 70 i- ((:long :unsigned-long) "com.sun.jna.NativeLong") Err bitreich.org 70 i- ((:long-long :unsigned-long-long) "long") Err bitreich.org 70 i- (:pointer "com.sun.jna.Pointer") Err bitreich.org 70 i- ((:short :unsigned-short) "short"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun jna-getter (type) Err bitreich.org 70 i- (ecase type Err bitreich.org 70 i- ((:char :unsigned-char) "getByte") Err bitreich.org 70 i- (:double "getDouble") Err bitreich.org 70 i- (:float "getFloat") Err bitreich.org 70 i- ((:int :unsigned-int) "getInt") Err bitreich.org 70 i- ((:long :unsigned-long) "getNativeLong") Err bitreich.org 70 i- ((:long-long :unsigned-long-long) "getLong") Err bitreich.org 70 i- (:pointer "getPointer") Err bitreich.org 70 i- ((:short :unsigned-short) "getShort"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-shareable-byte-vector (size) Err bitreich.org 70 i- "Create a Lisp vector of SIZE bytes can passed to Err bitreich.org 70 i-WITH-POINTER-TO-VECTOR-DATA." Err bitreich.org 70 i- (make-array size :element-type '(unsigned-byte 8))) Err bitreich.org 70 i- Err bitreich.org 70 i-(let ((method (jmethod "com.sun.jna.Pointer" Err bitreich.org 70 i- (jna-setter :char) "long" (jna-setter-arg-type :char)))) Err bitreich.org 70 i- (defun copy-to-foreign-vector (vector foreign-pointer) Err bitreich.org 70 i- (loop for i below (length vector) Err bitreich.org 70 i- do Err bitreich.org 70 i- (jcall-raw method Err bitreich.org 70 i- foreign-pointer i Err bitreich.org 70 i- (aref vector i))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; hand-roll the jna-getter method instead of calling %mem-ref every time through Err bitreich.org 70 i-(let ((method (jmethod "com.sun.jna.Pointer" (jna-getter :char) "long"))) Err bitreich.org 70 i- (defun copy-from-foreign-vector (vector foreign-pointer) Err bitreich.org 70 i- (loop for i below (length vector) Err bitreich.org 70 i- do (setf (aref vector i) Err bitreich.org 70 i- (java:jobject-lisp-value (jcall-raw method foreign-pointer i)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-pointer-to-vector-data ((ptr-var vector) &body body) Err bitreich.org 70 i- "Bind PTR-VAR to a foreign pointer to the data in VECTOR." Err bitreich.org 70 i- (let ((vector-sym (gensym "VECTOR"))) Err bitreich.org 70 i- `(let ((,vector-sym ,vector)) Err bitreich.org 70 i- (with-foreign-pointer (,ptr-var (length ,vector-sym)) Err bitreich.org 70 i- (copy-to-foreign-vector ,vector-sym ,ptr-var) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn ,@body) Err bitreich.org 70 i- (copy-from-foreign-vector ,vector-sym ,ptr-var)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Dereferencing Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-type-to-java-class (type) Err bitreich.org 70 i- (jclass Err bitreich.org 70 i- (ecase type Err bitreich.org 70 i- ((:int :unsigned-int) "java.lang.Integer") Err bitreich.org 70 i- ((:long :unsigned-long) "com.sun.jna.NativeLong") Err bitreich.org 70 i- ((:long-long :unsigned-long-long) "java.lang.Long") Err bitreich.org 70 i- (:pointer "com.sun.jna.Pointer") ;; void * is pointer? Err bitreich.org 70 i- (:float "java.lang.Float") Err bitreich.org 70 i- (:double "java.lang.Double") Err bitreich.org 70 i- ((:char :unsigned-char) "java.lang.Byte") Err bitreich.org 70 i- ((:short :unsigned-short) "java.lang.Short")))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-type-size (type) Err bitreich.org 70 i- "Return the size in bytes of a foreign type." Err bitreich.org 70 i- (jstatic "getNativeSize" "com.sun.jna.Native" Err bitreich.org 70 i- (foreign-type-to-java-class type))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; FIXME. Err bitreich.org 70 i-(defun %foreign-type-alignment (type) Err bitreich.org 70 i- "Return the alignment in bytes of a foreign type." Err bitreich.org 70 i- (%foreign-type-size type)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun unsigned-type-p (type) Err bitreich.org 70 i- (case type Err bitreich.org 70 i- ((:unsigned-char Err bitreich.org 70 i- :unsigned-int Err bitreich.org 70 i- :unsigned-short Err bitreich.org 70 i- :unsigned-long Err bitreich.org 70 i- :unsigned-long-long) t) Err bitreich.org 70 i- (t nil))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun lispify-value (value type) Err bitreich.org 70 i- (when (and (eq type :pointer) (or (null (java:jobject-lisp-value value)) Err bitreich.org 70 i- (eq +null+ (java:jobject-lisp-value value)))) Err bitreich.org 70 i- (return-from lispify-value (null-pointer))) Err bitreich.org 70 i- (when (or (eq type :long) (eq type :unsigned-long)) Err bitreich.org 70 i- (setq value (jcall-raw (jmethod "com.sun.jna.NativeLong" "longValue") Err bitreich.org 70 i- (java:jobject-lisp-value value)))) Err bitreich.org 70 i- (let ((bit-size (* 8 (%foreign-type-size type)))) Err bitreich.org 70 i- (let ((lisp-value (java:jobject-lisp-value value))) Err bitreich.org 70 i- (if (and (unsigned-type-p type) Err bitreich.org 70 i- (logbitp (1- bit-size) lisp-value)) Err bitreich.org 70 i- (lognot (logxor lisp-value (1- (expt 2 bit-size)))) Err bitreich.org 70 i- lisp-value)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %mem-ref (ptr type &optional (offset 0)) Err bitreich.org 70 i- (lispify-value Err bitreich.org 70 i- (jcall-raw (jmethod "com.sun.jna.Pointer" (jna-getter type) "long") Err bitreich.org 70 i- ptr offset) Err bitreich.org 70 i- type)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %mem-set (value ptr type &optional (offset 0)) Err bitreich.org 70 i- (let* ((bit-size (* 8 (%foreign-type-size type))) Err bitreich.org 70 i- (val (if (and (unsigned-type-p type) (logbitp (1- bit-size) value)) Err bitreich.org 70 i- (lognot (logxor value (1- (expt 2 bit-size)))) Err bitreich.org 70 i- value))) Err bitreich.org 70 i- (jcall-raw (jmethod "com.sun.jna.Pointer" Err bitreich.org 70 i- (jna-setter type) "long" (jna-setter-arg-type type)) Err bitreich.org 70 i- ptr Err bitreich.org 70 i- offset Err bitreich.org 70 i- (if (or (eq type :long) (eq type :unsigned-long)) Err bitreich.org 70 i- (jnew (jconstructor "com.sun.jna.NativeLong" "long") val) Err bitreich.org 70 i- val))) Err bitreich.org 70 i- value) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Foreign Globals Err bitreich.org 70 i-(let ((get-symbol-address-jmethod (private-jmethod "com.sun.jna.NativeLibrary" "getSymbolAddress"))) Err bitreich.org 70 i- (defun %foreign-symbol-pointer (name library) Err bitreich.org 70 i- "Returns a pointer to a foreign symbol NAME." Err bitreich.org 70 i- (flet ((find-it (library) Err bitreich.org 70 i- (ignore-errors Err bitreich.org 70 i- (make-pointer Err bitreich.org 70 i- (jcall-raw get-symbol-address-jmethod library name))))) Err bitreich.org 70 i- (if (eq library :default) Err bitreich.org 70 i- (or (find-it Err bitreich.org 70 i- (jstatic "getProcess" "com.sun.jna.NativeLibrary")) Err bitreich.org 70 i- ;; The above should find it, but I'm not exactly sure, so Err bitreich.org 70 i- ;; let's still do it manually just in case. Err bitreich.org 70 i- (loop for lib being the hash-values of *loaded-libraries* Err bitreich.org 70 i- thereis (find-it lib))) Err bitreich.org 70 i- (find-it library))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Calling Foreign Functions Err bitreich.org 70 i- Err bitreich.org 70 i-(defun find-foreign-function (name library) Err bitreich.org 70 i- (flet ((find-it (library) Err bitreich.org 70 i- (ignore-errors Err bitreich.org 70 i- (jcall-raw (jmethod "com.sun.jna.NativeLibrary" "getFunction" Err bitreich.org 70 i- "java.lang.String") Err bitreich.org 70 i- library name)))) Err bitreich.org 70 i- (if (eq library :default) Err bitreich.org 70 i- (or (find-it Err bitreich.org 70 i- (jstatic "getProcess" "com.sun.jna.NativeLibrary")) Err bitreich.org 70 i- ;; The above should find it, but I'm not exactly sure, so Err bitreich.org 70 i- ;; let's still do it manually just in case. Err bitreich.org 70 i- (loop for lib being the hash-values of *loaded-libraries* Err bitreich.org 70 i- thereis (find-it lib))) Err bitreich.org 70 i- (find-it (gethash library *loaded-libraries*))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun convert-calling-convention (convention) Err bitreich.org 70 i- (ecase convention Err bitreich.org 70 i- (:stdcall "ALT_CONVENTION") Err bitreich.org 70 i- (:cdecl "C_CONVENTION"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *jna-string-encoding* "UTF-8" Err bitreich.org 70 i- "Encoding for conversion between Java and native strings that occurs within JNA. Err bitreich.org 70 i- Err bitreich.org 70 i-Used with jna-4.0.0 or later.") Err bitreich.org 70 i- Err bitreich.org 70 i-;;; c.f. Err bitreich.org 70 i-(defvar *jna-4.0.0-or-later-p* Err bitreich.org 70 i- (ignore-errors (private-jconstructor "com.sun.jna.Function" Err bitreich.org 70 i- "com.sun.jna.Pointer" "int" "java.lang.String"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(let ((jconstructor Err bitreich.org 70 i- (if *jna-4.0.0-or-later-p* Err bitreich.org 70 i- (private-jconstructor "com.sun.jna.Function" Err bitreich.org 70 i- "com.sun.jna.Pointer" "int" "java.lang.String") Err bitreich.org 70 i- (private-jconstructor "com.sun.jna.Function" Err bitreich.org 70 i- "com.sun.jna.Pointer" "int")))) Err bitreich.org 70 i- (defun make-function-pointer (pointer convention) Err bitreich.org 70 i- (apply Err bitreich.org 70 i- #'jnew jconstructor pointer Err bitreich.org 70 i- (jfield "com.sun.jna.Function" (convert-calling-convention convention)) Err bitreich.org 70 i- (when *jna-4.0.0-or-later-p* Err bitreich.org 70 i- (list *jna-string-encoding*))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun lisp-value-to-java (value foreign-type) Err bitreich.org 70 i- (case foreign-type Err bitreich.org 70 i- (:pointer value) Err bitreich.org 70 i- (:void nil) Err bitreich.org 70 i- (t (jnew (ecase foreign-type Err bitreich.org 70 i- ((:int :unsigned-int) (jconstructor "java.lang.Integer" "int")) Err bitreich.org 70 i- ((:long-long :unsigned-long-long) Err bitreich.org 70 i- (jconstructor "java.lang.Long" "long")) Err bitreich.org 70 i- ((:long :unsigned-long) Err bitreich.org 70 i- (jconstructor "com.sun.jna.NativeLong" "long")) Err bitreich.org 70 i- ((:short :unsigned-short) (jconstructor "java.lang.Short" "short")) Err bitreich.org 70 i- ((:char :unsigned-char) (jconstructor "java.lang.Byte" "byte")) Err bitreich.org 70 i- (:float (jconstructor "java.lang.Float" "float")) Err bitreich.org 70 i- (:double (jconstructor "java.lang.Double" "double"))) Err bitreich.org 70 i- value)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %%foreign-funcall (function args arg-types return-type) Err bitreich.org 70 i- (let ((jargs (jnew-array "java.lang.Object" (length args)))) Err bitreich.org 70 i- (loop for arg in args and type in arg-types and i from 0 Err bitreich.org 70 i- do (setf (jarray-ref jargs i) Err bitreich.org 70 i- (lisp-value-to-java arg type))) Err bitreich.org 70 i- (if (eq return-type :void) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (jcall-raw (jmethod "com.sun.jna.Function" "invoke" "[Ljava.lang.Object;") Err bitreich.org 70 i- function jargs) Err bitreich.org 70 i- (values)) Err bitreich.org 70 i- (lispify-value Err bitreich.org 70 i- (jcall-raw (jmethod "com.sun.jna.Function" "invoke" Err bitreich.org 70 i- "java.lang.Class" "[Ljava.lang.Object;") Err bitreich.org 70 i- function Err bitreich.org 70 i- (foreign-type-to-java-class return-type) Err bitreich.org 70 i- jargs) Err bitreich.org 70 i- return-type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-funcall-type-and-args (args) Err bitreich.org 70 i- (let ((return-type :void)) Err bitreich.org 70 i- (loop for (type arg) on args by #'cddr Err bitreich.org 70 i- if arg collect type into types Err bitreich.org 70 i- and collect arg into fargs Err bitreich.org 70 i- else do (setf return-type type) Err bitreich.org 70 i- finally (return (values types fargs return-type))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %foreign-funcall (name args &key library convention) Err bitreich.org 70 i- (declare (ignore convention)) Err bitreich.org 70 i- (multiple-value-bind (types fargs rettype) Err bitreich.org 70 i- (foreign-funcall-type-and-args args) Err bitreich.org 70 i- `(%%foreign-funcall (find-foreign-function ',name ',library) Err bitreich.org 70 i- (list ,@fargs) ',types ',rettype))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %foreign-funcall-pointer (ptr args &key convention) Err bitreich.org 70 i- (multiple-value-bind (types fargs rettype) Err bitreich.org 70 i- (foreign-funcall-type-and-args args) Err bitreich.org 70 i- `(%%foreign-funcall (make-function-pointer ,ptr ',convention) Err bitreich.org 70 i- (list ,@fargs) ',types ',rettype))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Callbacks Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-to-callback-type (type) Err bitreich.org 70 i- (ecase type Err bitreich.org 70 i- ((:int :unsigned-int) Err bitreich.org 70 i- :int) Err bitreich.org 70 i- ((:long :unsigned-long) Err bitreich.org 70 i- (jvm::make-jvm-class-name "com.sun.jna.NativeLong")) Err bitreich.org 70 i- ((:long-long :unsigned-long-long) Err bitreich.org 70 i- (jvm::make-jvm-class-name "java.lang.Long")) Err bitreich.org 70 i- (:pointer Err bitreich.org 70 i- (jvm::make-jvm-class-name "com.sun.jna.Pointer")) Err bitreich.org 70 i- (:float Err bitreich.org 70 i- :float) Err bitreich.org 70 i- (:double Err bitreich.org 70 i- :double) Err bitreich.org 70 i- ((:char :unsigned-char) Err bitreich.org 70 i- :byte) Err bitreich.org 70 i- ((:short :unsigned-short) Err bitreich.org 70 i- :short) Err bitreich.org 70 i- (:wchar_t Err bitreich.org 70 i- :int) Err bitreich.org 70 i- (:void Err bitreich.org 70 i- :void))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *callbacks* (make-hash-table)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro convert-args-to-lisp-values (arg-names arg-types &body body) Err bitreich.org 70 i- (let ((gensym-args (loop for name in arg-names Err bitreich.org 70 i- collect (format-symbol t '#:callback-arg-~a- name)))) Err bitreich.org 70 i- `(lambda (,@gensym-args) Err bitreich.org 70 i- (let ,(loop for arg in arg-names Err bitreich.org 70 i- for type in arg-types Err bitreich.org 70 i- for gensym-arg in gensym-args Err bitreich.org 70 i- collecting `(,arg (if (typep ,gensym-arg 'java:java-object) Err bitreich.org 70 i- (lispify-value ,gensym-arg ,type) Err bitreich.org 70 i- ,gensym-arg))) Err bitreich.org 70 i- ,@body)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %defcallback (name return-type arg-names arg-types body Err bitreich.org 70 i- &key convention) Err bitreich.org 70 i- (declare (ignore convention)) ;; I'm always up for ignoring convention, but this is probably wrong. Err bitreich.org 70 i- `(setf (gethash ',name *callbacks*) Err bitreich.org 70 i- (jinterface-implementation Err bitreich.org 70 i- (ensure-callback-interface ',return-type ',arg-types) Err bitreich.org 70 i- "callback" Err bitreich.org 70 i- (convert-args-to-lisp-values ,arg-names ,arg-types (lisp-value-to-java ,body ',return-type))))) Err bitreich.org 70 i-;; (lambda (,@arg-names) ,body)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(jvm::define-class-name +callback-object+ "com.sun.jna.Callback") Err bitreich.org 70 i-(defconstant Err bitreich.org 70 i- +dynamic-callback-package+ Err bitreich.org 70 i- "org/armedbear/jna/dynamic/callbacks" Err bitreich.org 70 i- "The slash-delimited Java package in which we create classes dynamically to specify callback interfaces.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ensure-callback-interface (returns args) Err bitreich.org 70 i- "Ensure that the jvm interface for the callback exists in the current JVM. Err bitreich.org 70 i- Err bitreich.org 70 i-Returns the fully dot qualified name of the interface." Err bitreich.org 70 i- (let* ((jvm-returns (foreign-to-callback-type returns)) Err bitreich.org 70 i- (jvm-args (mapcar #'foreign-to-callback-type args)) Err bitreich.org 70 i- (interface-name (qualified-callback-interface-classname jvm-returns jvm-args))) Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (jss:find-java-class interface-name) Err bitreich.org 70 i- (java-exception (e) Err bitreich.org 70 i- (when (jinstance-of-p (java:java-exception-cause e) Err bitreich.org 70 i- "java.lang.ClassNotFoundException") Err bitreich.org 70 i- (let ((interface-class-bytes (%define-jna-callback-interface jvm-returns jvm-args)) Err bitreich.org 70 i- (simple-interface-name (callback-interface-classname jvm-returns jvm-args))) Err bitreich.org 70 i- (load-class interface-name interface-class-bytes))))) Err bitreich.org 70 i- interface-name)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun qualified-callback-interface-classname (returns args) Err bitreich.org 70 i- (format nil "~A.~A" Err bitreich.org 70 i- (substitute #\. #\/ +dynamic-callback-package+) Err bitreich.org 70 i- (callback-interface-classname returns args))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun callback-interface-classname (returns args) Err bitreich.org 70 i- (flet ((stringify (thing) Err bitreich.org 70 i- (typecase thing Err bitreich.org 70 i- (jvm::jvm-class-name Err bitreich.org 70 i- (substitute #\_ #\/ Err bitreich.org 70 i- (jvm::class-name-internal thing))) Err bitreich.org 70 i- (t (string thing))))) Err bitreich.org 70 i- (format nil "~A__~{~A~^__~}" Err bitreich.org 70 i- (stringify returns) Err bitreich.org 70 i- (mapcar #'stringify args)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %define-jna-callback-interface (returns args) Err bitreich.org 70 i- "Returns the Java byte[] array of a class representing a Java Err bitreich.org 70 i- interface descending form +CALLBACK-OBJECT+ which contains the Err bitreich.org 70 i- single function 'callback' which takes ARGS returning RETURNS. Err bitreich.org 70 i- Err bitreich.org 70 i-The fully qualified dotted name of the generated class is returned as Err bitreich.org 70 i-the second value." Err bitreich.org 70 i- (let ((name (callback-interface-classname returns args))) Err bitreich.org 70 i- (values Err bitreich.org 70 i- (define-java-interface name +dynamic-callback-package+ Err bitreich.org 70 i- `(("callback" ,returns ,args)) Err bitreich.org 70 i- `(,+callback-object+)) Err bitreich.org 70 i- (qualified-callback-interface-classname returns args)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun define-java-interface (name package methods Err bitreich.org 70 i- &optional (superinterfaces nil)) Err bitreich.org 70 i-"Returns the bytes of the Java class interface called NAME in PACKAGE with METHODS. Err bitreich.org 70 i- Err bitreich.org 70 i-METHODS is a list of (NAME RETURN-TYPE (ARG-TYPES)) entries. NAME is Err bitreich.org 70 i-a string. The values of RETURN-TYPE and the list of ARG-TYPES for the Err bitreich.org 70 i-defined method follow the are either references to Java objects as Err bitreich.org 70 i-created by JVM::MAKE-JVM-CLASS-NAME, or keywords representing Java Err bitreich.org 70 i-primtive types as contained in JVM::MAP-PRIMITIVE-TYPE. Err bitreich.org 70 i- Err bitreich.org 70 i-SUPERINTERFACES optionally contains a list of interfaces that this Err bitreich.org 70 i-interface extends specified as fully qualifed dotted Java names." Err bitreich.org 70 i- (let* ((class-name-string (format nil "~A/~A" package name)) Err bitreich.org 70 i- (class-name (jvm::make-jvm-class-name class-name-string)) Err bitreich.org 70 i- (class (jvm::make-class-interface-file class-name))) Err bitreich.org 70 i- (dolist (superinterface superinterfaces) Err bitreich.org 70 i- (jvm::class-add-superinterface Err bitreich.org 70 i- class Err bitreich.org 70 i- (if (typep superinterface 'jvm::jvm-class-name) Err bitreich.org 70 i- superinterface Err bitreich.org 70 i- (jvm::make-jvm-class-name superinterface)))) Err bitreich.org 70 i- (dolist (method methods) Err bitreich.org 70 i- (let ((name (first method)) Err bitreich.org 70 i- (returns (second method)) Err bitreich.org 70 i- (args (third method))) Err bitreich.org 70 i- (jvm::class-add-method Err bitreich.org 70 i- class Err bitreich.org 70 i- (jvm::make-jvm-method name returns args Err bitreich.org 70 i- :flags '(:public :abstract))))) Err bitreich.org 70 i- (jvm::finalize-class-file class) Err bitreich.org 70 i- (let ((s (sys::%make-byte-array-output-stream))) Err bitreich.org 70 i- (jvm::write-class-file class s) Err bitreich.org 70 i- (sys::%get-output-stream-bytes s)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun load-class (name bytes) Err bitreich.org 70 i- "Load the byte[] array BYTES as a Java class called NAME." Err bitreich.org 70 i- (#"loadClassFromByteArray" java::*classloader* name bytes)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Test function: unused in CFFI Err bitreich.org 70 i-(defun write-class (class-bytes pathname) Err bitreich.org 70 i- "Write the Java byte[] array CLASS-BYTES to PATHNAME." Err bitreich.org 70 i- (with-open-file (stream pathname Err bitreich.org 70 i- :direction :output Err bitreich.org 70 i- :element-type '(signed-byte 8)) Err bitreich.org 70 i- (dotimes (i (jarray-length class-bytes)) Err bitreich.org 70 i- (write-byte (jarray-ref class-bytes i) stream)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %callback (name) Err bitreich.org 70 i- (or (#"getFunctionPointer" 'com.sun.jna.CallbackReference Err bitreich.org 70 i- (gethash name *callbacks*)) Err bitreich.org 70 i- (error "Undefined callback: ~S" name))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun native-namestring (pathname) Err bitreich.org 70 i- (namestring pathname)) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/src/cffi-allegro.lisp b/3rdparties/software/cffi_0.20.0/src/cffi-allegro.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/src/cffi-allegro.lisp.gph bitreich.org 70 i@@ -1,446 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; cffi-allegro.lisp --- CFFI-SYS implementation for Allegro CL. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2009, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Administrivia Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:cffi-sys Err bitreich.org 70 i- (:use #:common-lisp) Err bitreich.org 70 i- (:import-from #:alexandria #:if-let #:with-unique-names #:once-only) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- #:canonicalize-symbol-name-case Err bitreich.org 70 i- #:foreign-pointer Err bitreich.org 70 i- #:pointerp Err bitreich.org 70 i- #:pointer-eq Err bitreich.org 70 i- #:null-pointer Err bitreich.org 70 i- #:null-pointer-p Err bitreich.org 70 i- #:inc-pointer Err bitreich.org 70 i- #:make-pointer Err bitreich.org 70 i- #:pointer-address Err bitreich.org 70 i- #:%foreign-alloc Err bitreich.org 70 i- #:foreign-free Err bitreich.org 70 i- #:with-foreign-pointer Err bitreich.org 70 i- #:%foreign-funcall Err bitreich.org 70 i- #:%foreign-funcall-pointer Err bitreich.org 70 i- #:%foreign-type-alignment Err bitreich.org 70 i- #:%foreign-type-size Err bitreich.org 70 i- #:%load-foreign-library Err bitreich.org 70 i- #:%close-foreign-library Err bitreich.org 70 i- #:native-namestring Err bitreich.org 70 i- #:%mem-ref Err bitreich.org 70 i- #:%mem-set Err bitreich.org 70 i- #:make-shareable-byte-vector Err bitreich.org 70 i- #:with-pointer-to-vector-data Err bitreich.org 70 i- #:%foreign-symbol-pointer Err bitreich.org 70 i- #:defcfun-helper-forms Err bitreich.org 70 i- #:%defcallback Err bitreich.org 70 i- #:%callback)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-sys) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Mis-features Err bitreich.org 70 i- Err bitreich.org 70 i-#-64bit (pushnew 'no-long-long *features*) Err bitreich.org 70 i-(pushnew 'flat-namespace *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Symbol Case Err bitreich.org 70 i- Err bitreich.org 70 i-(defun canonicalize-symbol-name-case (name) Err bitreich.org 70 i- (declare (string name)) Err bitreich.org 70 i- (if (eq excl:*current-case-mode* :case-sensitive-lower) Err bitreich.org 70 i- (string-downcase name) Err bitreich.org 70 i- (string-upcase name))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Basic Pointer Operations Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype foreign-pointer () Err bitreich.org 70 i- 'ff:foreign-address) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun pointerp (ptr) Err bitreich.org 70 i- "Return true if PTR is a foreign pointer." Err bitreich.org 70 i- (ff:foreign-address-p ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun pointer-eq (ptr1 ptr2) Err bitreich.org 70 i- "Return true if PTR1 and PTR2 point to the same address." Err bitreich.org 70 i- (eql ptr1 ptr2)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun null-pointer () Err bitreich.org 70 i- "Return a null pointer." Err bitreich.org 70 i- 0) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun null-pointer-p (ptr) Err bitreich.org 70 i- "Return true if PTR is a null pointer." Err bitreich.org 70 i- (zerop ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun inc-pointer (ptr offset) Err bitreich.org 70 i- "Return a pointer pointing OFFSET bytes past PTR." Err bitreich.org 70 i- (+ ptr offset)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-pointer (address) Err bitreich.org 70 i- "Return a pointer pointing to ADDRESS." Err bitreich.org 70 i- (check-type address ff:foreign-address) Err bitreich.org 70 i- address) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun pointer-address (ptr) Err bitreich.org 70 i- "Return the address pointed to by PTR." Err bitreich.org 70 i- (check-type ptr ff:foreign-address) Err bitreich.org 70 i- ptr) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Allocation Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Functions and macros for allocating foreign memory on the stack Err bitreich.org 70 i-;;; and on the heap. The main CFFI package defines macros that wrap Err bitreich.org 70 i-;;; FOREIGN-ALLOC and FOREIGN-FREE in UNWIND-PROTECT for the common usage Err bitreich.org 70 i-;;; when the memory has dynamic extent. Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-alloc (size) Err bitreich.org 70 i- "Allocate SIZE bytes on the heap and return a pointer." Err bitreich.org 70 i- (ff:allocate-fobject :char :c size)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-free (ptr) Err bitreich.org 70 i- "Free a PTR allocated by FOREIGN-ALLOC." Err bitreich.org 70 i- (ff:free-fobject ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-foreign-pointer ((var size &optional size-var) &body body) Err bitreich.org 70 i- "Bind VAR to SIZE bytes of foreign memory during BODY. The Err bitreich.org 70 i-pointer in VAR is invalid beyond the dynamic extent of BODY, and Err bitreich.org 70 i-may be stack-allocated if supported by the implementation. If Err bitreich.org 70 i-SIZE-VAR is supplied, it will be bound to SIZE during BODY." Err bitreich.org 70 i- (unless size-var Err bitreich.org 70 i- (setf size-var (gensym "SIZE"))) Err bitreich.org 70 i- #+(version>= 8 1) Err bitreich.org 70 i- (when (and (constantp size) (<= (eval size) ff:*max-stack-fobject-bytes*)) Err bitreich.org 70 i- (return-from with-foreign-pointer Err bitreich.org 70 i- `(let ((,size-var ,(eval size))) Err bitreich.org 70 i- (declare (ignorable ,size-var)) Err bitreich.org 70 i- (ff:with-static-fobject (,var '(:array :char ,(eval size)) Err bitreich.org 70 i- :allocation :foreign-static-gc) Err bitreich.org 70 i- ;; (excl::stack-allocated-p var) => T Err bitreich.org 70 i- (let ((,var (ff:fslot-address ,var))) Err bitreich.org 70 i- ,@body))))) Err bitreich.org 70 i- `(let* ((,size-var ,size) Err bitreich.org 70 i- (,var (ff:allocate-fobject :char :c ,size-var))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn ,@body) Err bitreich.org 70 i- (ff:free-fobject ,var)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Shareable Vectors Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; This interface is very experimental. WITH-POINTER-TO-VECTOR-DATA Err bitreich.org 70 i-;;; should be defined to perform a copy-in/copy-out if the Lisp Err bitreich.org 70 i-;;; implementation can't do this. Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-shareable-byte-vector (size) Err bitreich.org 70 i- "Create a Lisp vector of SIZE bytes can passed to Err bitreich.org 70 i-WITH-POINTER-TO-VECTOR-DATA." Err bitreich.org 70 i- (make-array size :element-type '(unsigned-byte 8) Err bitreich.org 70 i- :allocation :static-reclaimable)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-pointer-to-vector-data ((ptr-var vector) &body body) Err bitreich.org 70 i- "Bind PTR-VAR to a foreign pointer to the data in VECTOR." Err bitreich.org 70 i- ;; An array allocated in static-reclamable is a non-simple array in Err bitreich.org 70 i- ;; the normal Lisp allocation area, pointing to a simple array in Err bitreich.org 70 i- ;; the static-reclaimable allocation area. Therefore we have to get Err bitreich.org 70 i- ;; out the simple-array to find the pointer to the actual contents. Err bitreich.org 70 i- (with-unique-names (simple-vec) Err bitreich.org 70 i- `(excl:with-underlying-simple-vector (,vector ,simple-vec) Err bitreich.org 70 i- (let ((,ptr-var (ff:fslot-address-typed :unsigned-char :lisp Err bitreich.org 70 i- ,simple-vec))) Err bitreich.org 70 i- ,@body)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Dereferencing Err bitreich.org 70 i- Err bitreich.org 70 i-(defun convert-foreign-type (type-keyword) Err bitreich.org 70 i- "Convert a CFFI type keyword to an Allegro type." Err bitreich.org 70 i- (ecase type-keyword Err bitreich.org 70 i- (:char :char) Err bitreich.org 70 i- (:unsigned-char :unsigned-char) Err bitreich.org 70 i- (:short :short) Err bitreich.org 70 i- (:unsigned-short :unsigned-short) Err bitreich.org 70 i- (:int :int) Err bitreich.org 70 i- (:unsigned-int :unsigned-int) Err bitreich.org 70 i- (:long :long) Err bitreich.org 70 i- (:unsigned-long :unsigned-long) Err bitreich.org 70 i- (:long-long Err bitreich.org 70 i- #+64bit :nat Err bitreich.org 70 i- #-64bit (error "this platform does not support :long-long.")) Err bitreich.org 70 i- (:unsigned-long-long Err bitreich.org 70 i- #+64bit :unsigned-nat Err bitreich.org 70 i- #-64bit (error "this platform does not support :unsigned-long-long")) Err bitreich.org 70 i- (:float :float) Err bitreich.org 70 i- (:double :double) Err bitreich.org 70 i- (:pointer :unsigned-nat) Err bitreich.org 70 i- (:void :void))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %mem-ref (ptr type &optional (offset 0)) Err bitreich.org 70 i- "Dereference an object of TYPE at OFFSET bytes from PTR." Err bitreich.org 70 i- (unless (zerop offset) Err bitreich.org 70 i- (setf ptr (inc-pointer ptr offset))) Err bitreich.org 70 i- (ff:fslot-value-typed (convert-foreign-type type) :c ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Compiler macro to open-code the call to FSLOT-VALUE-TYPED when the Err bitreich.org 70 i-;;; CFFI type is constant. Allegro does its own transformation on the Err bitreich.org 70 i-;;; call that results in efficient code. Err bitreich.org 70 i-(define-compiler-macro %mem-ref (&whole form ptr type &optional (off 0)) Err bitreich.org 70 i- (if (constantp type) Err bitreich.org 70 i- (let ((ptr-form (if (eql off 0) ptr `(+ ,ptr ,off)))) Err bitreich.org 70 i- `(ff:fslot-value-typed ',(convert-foreign-type (eval type)) Err bitreich.org 70 i- :c ,ptr-form)) Err bitreich.org 70 i- form)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %mem-set (value ptr type &optional (offset 0)) Err bitreich.org 70 i- "Set the object of TYPE at OFFSET bytes from PTR." Err bitreich.org 70 i- (unless (zerop offset) Err bitreich.org 70 i- (setf ptr (inc-pointer ptr offset))) Err bitreich.org 70 i- (setf (ff:fslot-value-typed (convert-foreign-type type) :c ptr) value)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Compiler macro to open-code the call to (SETF FSLOT-VALUE-TYPED) Err bitreich.org 70 i-;;; when the CFFI type is constant. Allegro does its own Err bitreich.org 70 i-;;; transformation on the call that results in efficient code. Err bitreich.org 70 i-(define-compiler-macro %mem-set (&whole form val ptr type &optional (off 0)) Err bitreich.org 70 i- (if (constantp type) Err bitreich.org 70 i- (once-only (val) Err bitreich.org 70 i- (let ((ptr-form (if (eql off 0) ptr `(+ ,ptr ,off)))) Err bitreich.org 70 i- `(setf (ff:fslot-value-typed ',(convert-foreign-type (eval type)) Err bitreich.org 70 i- :c ,ptr-form) ,val))) Err bitreich.org 70 i- form)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Calling Foreign Functions Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-type-size (type-keyword) Err bitreich.org 70 i- "Return the size in bytes of a foreign type." Err bitreich.org 70 i- (ff:sizeof-fobject (convert-foreign-type type-keyword))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-type-alignment (type-keyword) Err bitreich.org 70 i- "Returns the alignment in bytes of a foreign type." Err bitreich.org 70 i- #+(and powerpc macosx32) Err bitreich.org 70 i- (when (eq type-keyword :double) Err bitreich.org 70 i- (return-from %foreign-type-alignment 8)) Err bitreich.org 70 i- ;; No override necessary for the remaining types.... Err bitreich.org 70 i- (ff::sized-ftype-prim-align Err bitreich.org 70 i- (ff::iforeign-type-sftype Err bitreich.org 70 i- (ff:get-foreign-type Err bitreich.org 70 i- (convert-foreign-type type-keyword))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-funcall-type-and-args (args) Err bitreich.org 70 i- "Returns a list of types, list of args and return type." Err bitreich.org 70 i- (let ((return-type :void)) Err bitreich.org 70 i- (loop for (type arg) on args by #'cddr Err bitreich.org 70 i- if arg collect type into types Err bitreich.org 70 i- and collect arg into fargs Err bitreich.org 70 i- else do (setf return-type type) Err bitreich.org 70 i- finally (return (values types fargs return-type))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun convert-to-lisp-type (type) Err bitreich.org 70 i- (ecase type Err bitreich.org 70 i- ((:char :short :int :long :nat) Err bitreich.org 70 i- `(signed-byte ,(* 8 (ff:sizeof-fobject type)))) Err bitreich.org 70 i- ((:unsigned-char :unsigned-short :unsigned-int :unsigned-long :unsigned-nat) Err bitreich.org 70 i- `(unsigned-byte ,(* 8 (ff:sizeof-fobject type)))) Err bitreich.org 70 i- (:float 'single-float) Err bitreich.org 70 i- (:double 'double-float) Err bitreich.org 70 i- (:void 'null))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun allegro-type-pair (cffi-type) Err bitreich.org 70 i- ;; the :FOREIGN-ADDRESS pseudo-type accepts both pointers and Err bitreich.org 70 i- ;; arrays. We need the latter for shareable byte vector support. Err bitreich.org 70 i- (if (eq cffi-type :pointer) Err bitreich.org 70 i- (list :foreign-address) Err bitreich.org 70 i- (let ((ftype (convert-foreign-type cffi-type))) Err bitreich.org 70 i- (list ftype (convert-to-lisp-type ftype))))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+ignore Err bitreich.org 70 i-(defun note-named-foreign-function (symbol name types rettype) Err bitreich.org 70 i- "Give Allegro's compiler a hint to perform a direct call." Err bitreich.org 70 i- `(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (setf (get ',symbol 'system::direct-ff-call) Err bitreich.org 70 i- (list '(,name :language :c) Err bitreich.org 70 i- t ; callback Err bitreich.org 70 i- :c ; convention Err bitreich.org 70 i- ;; return type '(:c-type lisp-type) Err bitreich.org 70 i- ',(allegro-type-pair rettype) Err bitreich.org 70 i- ;; arg types '({(:c-type lisp-type)}*) Err bitreich.org 70 i- '(,@(mapcar #'allegro-type-pair types)) Err bitreich.org 70 i- nil ; arg-checking Err bitreich.org 70 i- ff::ep-flag-never-release)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %foreign-funcall (name args &key convention library) Err bitreich.org 70 i- (declare (ignore convention library)) Err bitreich.org 70 i- (multiple-value-bind (types fargs rettype) Err bitreich.org 70 i- (foreign-funcall-type-and-args args) Err bitreich.org 70 i- `(system::ff-funcall Err bitreich.org 70 i- (load-time-value (excl::determine-foreign-address Err bitreich.org 70 i- '(,name :language :c) Err bitreich.org 70 i- #-(version>= 8 1) ff::ep-flag-never-release Err bitreich.org 70 i- #+(version>= 8 1) ff::ep-flag-always-release Err bitreich.org 70 i- nil ; method-index Err bitreich.org 70 i- )) Err bitreich.org 70 i- ;; arg types {'(:c-type lisp-type) argN}* Err bitreich.org 70 i- ,@(mapcan (lambda (type arg) Err bitreich.org 70 i- `(',(allegro-type-pair type) ,arg)) Err bitreich.org 70 i- types fargs) Err bitreich.org 70 i- ;; return type '(:c-type lisp-type) Err bitreich.org 70 i- ',(allegro-type-pair rettype)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun defcfun-helper-forms (name lisp-name rettype args types options) Err bitreich.org 70 i- "Return 2 values for DEFCFUN. A prelude form and a caller form." Err bitreich.org 70 i- (declare (ignore options)) Err bitreich.org 70 i- (let ((ff-name (intern (format nil "%cffi-foreign-function/~A" lisp-name)))) Err bitreich.org 70 i- (values Err bitreich.org 70 i- `(ff:def-foreign-call (,ff-name ,name) Err bitreich.org 70 i- ,(loop for type in types Err bitreich.org 70 i- collect (list* (gensym) (allegro-type-pair type))) Err bitreich.org 70 i- :returning ,(allegro-type-pair rettype) Err bitreich.org 70 i- ;; Don't use call-direct when there are no arguments. Err bitreich.org 70 i- ,@(unless (null args) '(:call-direct t)) Err bitreich.org 70 i- :arg-checking nil Err bitreich.org 70 i- :strings-convert nil Err bitreich.org 70 i- #+(version>= 8 1) ,@'(:release-heap :when-ok Err bitreich.org 70 i- :release-heap-ignorable t) Err bitreich.org 70 i- #+smp ,@'(:release-heap-implies-allow-gc t)) Err bitreich.org 70 i- `(,ff-name ,@args)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; See doc/allegro-internals.txt for a clue about entry-vec. Err bitreich.org 70 i-(defmacro %foreign-funcall-pointer (ptr args &key convention) Err bitreich.org 70 i- (declare (ignore convention)) Err bitreich.org 70 i- (multiple-value-bind (types fargs rettype) Err bitreich.org 70 i- (foreign-funcall-type-and-args args) Err bitreich.org 70 i- (with-unique-names (entry-vec) Err bitreich.org 70 i- `(let ((,entry-vec (excl::make-entry-vec-boa))) Err bitreich.org 70 i- (setf (aref ,entry-vec 1) ,ptr) ; set jump address Err bitreich.org 70 i- (system::ff-funcall Err bitreich.org 70 i- ,entry-vec Err bitreich.org 70 i- ;; arg types {'(:c-type lisp-type) argN}* Err bitreich.org 70 i- ,@(mapcan (lambda (type arg) Err bitreich.org 70 i- `(',(allegro-type-pair type) ,arg)) Err bitreich.org 70 i- types fargs) Err bitreich.org 70 i- ;; return type '(:c-type lisp-type) Err bitreich.org 70 i- ',(allegro-type-pair rettype)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Callbacks Err bitreich.org 70 i- Err bitreich.org 70 i-;;; The *CALLBACKS* hash table contains information about a callback Err bitreich.org 70 i-;;; for the Allegro FFI. The key is the name of the CFFI callback, Err bitreich.org 70 i-;;; and the value is a cons, the car containing the symbol the Err bitreich.org 70 i-;;; callback was defined on in the CFFI-CALLBACKS package, the cdr Err bitreich.org 70 i-;;; being an Allegro FFI pointer (a fixnum) that can be passed to C Err bitreich.org 70 i-;;; functions. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; These pointers must be restored when a saved Lisp image is loaded. Err bitreich.org 70 i-;;; The RESTORE-CALLBACKS function is added to *RESTART-ACTIONS* to Err bitreich.org 70 i-;;; re-register the callbacks during Lisp startup. Err bitreich.org 70 i-(defvar *callbacks* (make-hash-table)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Register a callback in the *CALLBACKS* hash table. Err bitreich.org 70 i-(defun register-callback (cffi-name callback-name) Err bitreich.org 70 i- (setf (gethash cffi-name *callbacks*) Err bitreich.org 70 i- (cons callback-name (ff:register-foreign-callable Err bitreich.org 70 i- callback-name :reuse t)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Restore the saved pointers in *CALLBACKS* when loading an image. Err bitreich.org 70 i-(defun restore-callbacks () Err bitreich.org 70 i- (maphash (lambda (key value) Err bitreich.org 70 i- (register-callback key (car value))) Err bitreich.org 70 i- *callbacks*)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Arrange for RESTORE-CALLBACKS to run when a saved image containing Err bitreich.org 70 i-;;; CFFI is restarted. Err bitreich.org 70 i-(eval-when (:load-toplevel :execute) Err bitreich.org 70 i- (pushnew 'restore-callbacks excl:*restart-actions*)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Create a package to contain the symbols for callback functions. Err bitreich.org 70 i-(defpackage #:cffi-callbacks Err bitreich.org 70 i- (:use)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun intern-callback (name) Err bitreich.org 70 i- (intern (format nil "~A::~A" Err bitreich.org 70 i- (if-let (package (symbol-package name)) Err bitreich.org 70 i- (package-name package) Err bitreich.org 70 i- "#") Err bitreich.org 70 i- (symbol-name name)) Err bitreich.org 70 i- '#:cffi-callbacks)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun convert-calling-convention (convention) Err bitreich.org 70 i- (ecase convention Err bitreich.org 70 i- (:cdecl :c) Err bitreich.org 70 i- (:stdcall :stdcall))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %defcallback (name rettype arg-names arg-types body Err bitreich.org 70 i- &key convention) Err bitreich.org 70 i- (declare (ignore rettype)) Err bitreich.org 70 i- (let ((cb-name (intern-callback name))) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (ff:defun-foreign-callable ,cb-name Err bitreich.org 70 i- ,(mapcar (lambda (sym type) (list sym (convert-foreign-type type))) Err bitreich.org 70 i- arg-names arg-types) Err bitreich.org 70 i- (declare (:convention ,(convert-calling-convention convention))) Err bitreich.org 70 i- ,body) Err bitreich.org 70 i- (register-callback ',name ',cb-name)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Return the saved Lisp callback pointer from *CALLBACKS* for the Err bitreich.org 70 i-;;; CFFI callback named NAME. Err bitreich.org 70 i-(defun %callback (name) Err bitreich.org 70 i- (or (cdr (gethash name *callbacks*)) Err bitreich.org 70 i- (error "Undefined callback: ~S" name))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Loading and Closing Foreign Libraries Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %load-foreign-library (name path) Err bitreich.org 70 i- "Load a foreign library." Err bitreich.org 70 i- ;; ACL 8.0 honors the :FOREIGN option and always tries to foreign load Err bitreich.org 70 i- ;; the argument. However, previous versions do not and will only Err bitreich.org 70 i- ;; foreign load the argument if its type is a member of the Err bitreich.org 70 i- ;; EXCL::*LOAD-FOREIGN-TYPES* list. Therefore, we bind that special Err bitreich.org 70 i- ;; to a list containing whatever type NAME has. Err bitreich.org 70 i- (declare (ignore name)) Err bitreich.org 70 i- (let ((excl::*load-foreign-types* Err bitreich.org 70 i- (list (pathname-type (parse-namestring path))))) Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (progn Err bitreich.org 70 i- #+(version>= 7) (load path :foreign t) Err bitreich.org 70 i- #-(version>= 7) (load path)) Err bitreich.org 70 i- (file-error (fe) Err bitreich.org 70 i- (error (change-class fe 'simple-error)))) Err bitreich.org 70 i- path)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %close-foreign-library (name) Err bitreich.org 70 i- "Close the foreign library NAME." Err bitreich.org 70 i- (ff:unload-foreign-library name)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun native-namestring (pathname) Err bitreich.org 70 i- (namestring pathname)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Foreign Globals Err bitreich.org 70 i- Err bitreich.org 70 i-(defun convert-external-name (name) Err bitreich.org 70 i- "Add an underscore to NAME if necessary for the ABI." Err bitreich.org 70 i- #+macosx (concatenate 'string "_" name) Err bitreich.org 70 i- #-macosx name) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-symbol-pointer (name library) Err bitreich.org 70 i- "Returns a pointer to a foreign symbol NAME." Err bitreich.org 70 i- (declare (ignore library)) Err bitreich.org 70 i- (prog1 (ff:get-entry-point (convert-external-name name)))) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/src/cffi-clasp.lisp b/3rdparties/software/cffi_0.20.0/src/cffi-clasp.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/src/cffi-clasp.lisp.gph bitreich.org 70 i@@ -1,201 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; cffi-clasp.lisp --- CFFI-SYS implementation for Clasp. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2017 Frank Goenninger Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Administrivia Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:cffi-sys Err bitreich.org 70 i- (:use #:common-lisp #:alexandria) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- #:canonicalize-symbol-name-case Err bitreich.org 70 i- #:foreign-pointer Err bitreich.org 70 i- #:pointerp Err bitreich.org 70 i- #:pointer-eq Err bitreich.org 70 i- #:%foreign-alloc Err bitreich.org 70 i- #:foreign-free Err bitreich.org 70 i- #:with-foreign-pointer Err bitreich.org 70 i- #:null-pointer Err bitreich.org 70 i- #:null-pointer-p Err bitreich.org 70 i- #:inc-pointer Err bitreich.org 70 i- #:make-pointer Err bitreich.org 70 i- #:pointer-address Err bitreich.org 70 i- #:%mem-ref Err bitreich.org 70 i- #:%mem-set Err bitreich.org 70 i- #:%foreign-funcall Err bitreich.org 70 i- #:%foreign-funcall-pointer Err bitreich.org 70 i- #:%foreign-type-alignment Err bitreich.org 70 i- #:%foreign-type-size Err bitreich.org 70 i- #:%load-foreign-library Err bitreich.org 70 i- #:%close-foreign-library Err bitreich.org 70 i- #:native-namestring Err bitreich.org 70 i- #:make-shareable-byte-vector Err bitreich.org 70 i- #:with-pointer-to-vector-data Err bitreich.org 70 i- #:%defcallback Err bitreich.org 70 i- #:%callback Err bitreich.org 70 i- #:%foreign-symbol-pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-sys) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Mis-features Err bitreich.org 70 i- Err bitreich.org 70 i-(pushnew 'flat-namespace cl:*features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Symbol Case Err bitreich.org 70 i- Err bitreich.org 70 i-(defun canonicalize-symbol-name-case (name) Err bitreich.org 70 i- (declare (string name)) Err bitreich.org 70 i- (string-upcase name)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Allocation Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-alloc (size) Err bitreich.org 70 i- "Allocate SIZE bytes of foreign-addressable memory." Err bitreich.org 70 i- (clasp-ffi:%foreign-alloc size)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-free (ptr) Err bitreich.org 70 i- "Free a pointer PTR allocated by FOREIGN-ALLOC." Err bitreich.org 70 i- (clasp-ffi:%foreign-free ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-foreign-pointer ((var size &optional size-var) &body body) Err bitreich.org 70 i- "Bind VAR to SIZE bytes of foreign memory during BODY. The Err bitreich.org 70 i-pointer in VAR is invalid beyond the dynamic extent of BODY, and Err bitreich.org 70 i-may be stack-allocated if supported by the implementation. If Err bitreich.org 70 i-SIZE-VAR is supplied, it will be bound to SIZE during BODY." Err bitreich.org 70 i- (unless size-var Err bitreich.org 70 i- (setf size-var (gensym "SIZE"))) Err bitreich.org 70 i- `(let* ((,size-var ,size) Err bitreich.org 70 i- (,var (%foreign-alloc ,size-var))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn ,@body) Err bitreich.org 70 i- (foreign-free ,var)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Misc. Pointer Operations Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype foreign-pointer () Err bitreich.org 70 i- 'clasp-ffi:foreign-data) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun null-pointer-p (ptr) Err bitreich.org 70 i- "Test if PTR is a null pointer." Err bitreich.org 70 i- (clasp-ffi:%null-pointer-p ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun null-pointer () Err bitreich.org 70 i- "Construct and return a null pointer." Err bitreich.org 70 i- (clasp-ffi:%make-nullpointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-pointer (address) Err bitreich.org 70 i- "Return a pointer pointing to ADDRESS." Err bitreich.org 70 i- (clasp-ffi:%make-pointer address)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun inc-pointer (ptr offset) Err bitreich.org 70 i- "Return a pointer OFFSET bytes past PTR." Err bitreich.org 70 i- (clasp-ffi:%inc-pointer ptr offset)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun pointer-address (ptr) Err bitreich.org 70 i- "Return the address pointed to by PTR." Err bitreich.org 70 i- (clasp-ffi:%foreign-data-address ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun pointerp (ptr) Err bitreich.org 70 i- "Return true if PTR is a foreign pointer." Err bitreich.org 70 i- (typep ptr 'clasp-ffi:foreign-data)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun pointer-eq (ptr1 ptr2) Err bitreich.org 70 i- "Return true if PTR1 and PTR2 point to the same address." Err bitreich.org 70 i- (check-type ptr1 clasp-ffi:foreign-data) Err bitreich.org 70 i- (check-type ptr2 clasp-ffi:foreign-data) Err bitreich.org 70 i- (eql (pointer-address ptr1) (pointer-address ptr2))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Shareable Vectors Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; This interface is very experimental. WITH-POINTER-TO-VECTOR-DATA Err bitreich.org 70 i-;;; should be defined to perform a copy-in/copy-out if the Lisp Err bitreich.org 70 i-;;; implementation can't do this. Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-shareable-byte-vector (size) Err bitreich.org 70 i- "Create a Lisp vector of SIZE bytes that can passed to Err bitreich.org 70 i-WITH-POINTER-TO-VECTOR-DATA." Err bitreich.org 70 i- (make-array size :element-type '(unsigned-byte 8))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; frgo, 2016-07-02: TODO: Implemenent! Err bitreich.org 70 i-;; (defmacro with-pointer-to-vector-data ((ptr-var vector) &body body) Err bitreich.org 70 i-;; "Bind PTR-VAR to a foreign pointer to the data in VECTOR." Err bitreich.org 70 i-;; `(let ((,ptr-var (si:make-foreign-data-from-array ,vector))) Err bitreich.org 70 i-;; ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-type-size (type-keyword) Err bitreich.org 70 i- "Return the size in bytes of a foreign type." Err bitreich.org 70 i- (clasp-ffi:%foreign-type-size type-keyword)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-type-alignment (type-keyword) Err bitreich.org 70 i- "Return the alignment in bytes of a foreign type." Err bitreich.org 70 i- (clasp-ffi:%foreign-type-alignment type-keyword)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Dereferencing Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %mem-ref (ptr type &optional (offset 0)) Err bitreich.org 70 i- "Dereference an object of TYPE at OFFSET bytes from PTR." Err bitreich.org 70 i- (clasp-ffi:%mem-ref ptr type offset)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %mem-set (value ptr type &optional (offset 0)) Err bitreich.org 70 i- "Set an object of TYPE at OFFSET bytes from PTR." Err bitreich.org 70 i- (clasp-ffi:%mem-set ptr type value offset)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %foreign-funcall (name args &key library convention) Err bitreich.org 70 i- "Call a foreign function." Err bitreich.org 70 i- (declare (ignore library convention)) Err bitreich.org 70 i- `(clasp-ffi:%foreign-funcall ,name ,@args)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %foreign-funcall-pointer (ptr args &key convention) Err bitreich.org 70 i- "Funcall a pointer to a foreign function." Err bitreich.org 70 i- (declare (ignore convention)) Err bitreich.org 70 i- `(clasp-ffi:%foreign-funcall-pointer ,ptr ,@args)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Foreign Libraries Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %load-foreign-library (name path) Err bitreich.org 70 i- "Load a foreign library." Err bitreich.org 70 i- (clasp-ffi:%load-foreign-library name path)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %close-foreign-library (handle) Err bitreich.org 70 i- "Close a foreign library." Err bitreich.org 70 i- (clasp-ffi:%close-foreign-library handle)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-symbol-pointer (name library) Err bitreich.org 70 i- "Returns a pointer to a foreign symbol NAME." Err bitreich.org 70 i- (clasp-ffi:%foreign-symbol-pointer name library)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun native-namestring (pathname) Err bitreich.org 70 i- (namestring pathname)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Callbacks Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %defcallback (name rettype arg-names arg-types body Err bitreich.org 70 i- &key convention) Err bitreich.org 70 i- `(clasp-ffi:%defcallback (,name ,@(when convention `(:convention ,convention))) Err bitreich.org 70 i- ,rettype ,arg-names ,arg-types ,body)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %callback (name) Err bitreich.org 70 i- (clasp-ffi:%get-callback name)) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/src/cffi-clisp.lisp b/3rdparties/software/cffi_0.20.0/src/cffi-clisp.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/src/cffi-clisp.lisp.gph bitreich.org 70 i@@ -1,432 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; cffi-clisp.lisp --- CFFI-SYS implementation for CLISP. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, Joerg Hoehle Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Administrivia Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:cffi-sys Err bitreich.org 70 i- (:use #:common-lisp #:alexandria) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- #:canonicalize-symbol-name-case Err bitreich.org 70 i- #:foreign-pointer Err bitreich.org 70 i- #:pointerp Err bitreich.org 70 i- #:pointer-eq Err bitreich.org 70 i- #:null-pointer Err bitreich.org 70 i- #:null-pointer-p Err bitreich.org 70 i- #:inc-pointer Err bitreich.org 70 i- #:make-pointer Err bitreich.org 70 i- #:pointer-address Err bitreich.org 70 i- #:%foreign-alloc Err bitreich.org 70 i- #:foreign-free Err bitreich.org 70 i- #:with-foreign-pointer Err bitreich.org 70 i- #:%foreign-funcall Err bitreich.org 70 i- #:%foreign-funcall-pointer Err bitreich.org 70 i- #:%foreign-type-alignment Err bitreich.org 70 i- #:%foreign-type-size Err bitreich.org 70 i- #:%load-foreign-library Err bitreich.org 70 i- #:%close-foreign-library Err bitreich.org 70 i- #:native-namestring Err bitreich.org 70 i- #:%mem-ref Err bitreich.org 70 i- #:%mem-set Err bitreich.org 70 i- #:make-shareable-byte-vector Err bitreich.org 70 i- #:with-pointer-to-vector-data Err bitreich.org 70 i- #:%foreign-symbol-pointer Err bitreich.org 70 i- #:%defcallback Err bitreich.org 70 i- #:%callback)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-sys) Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (unless (find-package :ffi) Err bitreich.org 70 i- (error "CFFI requires CLISP compiled with dynamic FFI support."))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Symbol Case Err bitreich.org 70 i- Err bitreich.org 70 i-(defun canonicalize-symbol-name-case (name) Err bitreich.org 70 i- (declare (string name)) Err bitreich.org 70 i- (string-upcase name)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Built-In Foreign Types Err bitreich.org 70 i- Err bitreich.org 70 i-(defun convert-foreign-type (type) Err bitreich.org 70 i- "Convert a CFFI built-in type keyword to a CLisp FFI type." Err bitreich.org 70 i- (ecase type Err bitreich.org 70 i- (:char 'ffi:char) Err bitreich.org 70 i- (:unsigned-char 'ffi:uchar) Err bitreich.org 70 i- (:short 'ffi:short) Err bitreich.org 70 i- (:unsigned-short 'ffi:ushort) Err bitreich.org 70 i- (:int 'ffi:int) Err bitreich.org 70 i- (:unsigned-int 'ffi:uint) Err bitreich.org 70 i- (:long 'ffi:long) Err bitreich.org 70 i- (:unsigned-long 'ffi:ulong) Err bitreich.org 70 i- (:long-long 'ffi:sint64) Err bitreich.org 70 i- (:unsigned-long-long 'ffi:uint64) Err bitreich.org 70 i- (:float 'ffi:single-float) Err bitreich.org 70 i- (:double 'ffi:double-float) Err bitreich.org 70 i- ;; Clisp's FFI:C-POINTER converts NULL to NIL. For now Err bitreich.org 70 i- ;; we have a workaround in the pointer operations... Err bitreich.org 70 i- (:pointer 'ffi:c-pointer) Err bitreich.org 70 i- (:void nil))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-type-size (type) Err bitreich.org 70 i- "Return the size in bytes of objects having foreign type TYPE." Err bitreich.org 70 i- (nth-value 0 (ffi:sizeof (convert-foreign-type type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Remind me to buy a beer for whoever made getting the alignment Err bitreich.org 70 i-;; of foreign types part of the public interface in CLisp. :-) Err bitreich.org 70 i-(defun %foreign-type-alignment (type) Err bitreich.org 70 i- "Return the structure alignment in bytes of foreign TYPE." Err bitreich.org 70 i- #+(and darwin ppc) Err bitreich.org 70 i- (case type Err bitreich.org 70 i- ((:double :long-long :unsigned-long-long) Err bitreich.org 70 i- (return-from %foreign-type-alignment 8))) Err bitreich.org 70 i- ;; Override not necessary for the remaining types... Err bitreich.org 70 i- (nth-value 1 (ffi:sizeof (convert-foreign-type type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Basic Pointer Operations Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype foreign-pointer () Err bitreich.org 70 i- 'ffi:foreign-address) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun pointerp (ptr) Err bitreich.org 70 i- "Return true if PTR is a foreign pointer." Err bitreich.org 70 i- (typep ptr 'ffi:foreign-address)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun pointer-eq (ptr1 ptr2) Err bitreich.org 70 i- "Return true if PTR1 and PTR2 point to the same address." Err bitreich.org 70 i- (eql (ffi:foreign-address-unsigned ptr1) Err bitreich.org 70 i- (ffi:foreign-address-unsigned ptr2))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun null-pointer () Err bitreich.org 70 i- "Return a null foreign pointer." Err bitreich.org 70 i- (ffi:unsigned-foreign-address 0)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun null-pointer-p (ptr) Err bitreich.org 70 i- "Return true if PTR is a null foreign pointer." Err bitreich.org 70 i- (zerop (ffi:foreign-address-unsigned ptr))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun inc-pointer (ptr offset) Err bitreich.org 70 i- "Return a pointer pointing OFFSET bytes past PTR." Err bitreich.org 70 i- (ffi:unsigned-foreign-address Err bitreich.org 70 i- (+ offset (ffi:foreign-address-unsigned ptr)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-pointer (address) Err bitreich.org 70 i- "Return a pointer pointing to ADDRESS." Err bitreich.org 70 i- (ffi:unsigned-foreign-address address)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun pointer-address (ptr) Err bitreich.org 70 i- "Return the address pointed to by PTR." Err bitreich.org 70 i- (ffi:foreign-address-unsigned ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Foreign Memory Allocation Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-alloc (size) Err bitreich.org 70 i- "Allocate SIZE bytes of foreign-addressable memory and return a Err bitreich.org 70 i-pointer to the allocated block. An implementation-specific error Err bitreich.org 70 i-is signalled if the memory cannot be allocated." Err bitreich.org 70 i- (ffi:foreign-address Err bitreich.org 70 i- (ffi:allocate-shallow 'ffi:uint8 :count (if (zerop size) 1 size)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-free (ptr) Err bitreich.org 70 i- "Free a pointer PTR allocated by FOREIGN-ALLOC. The results Err bitreich.org 70 i-are undefined if PTR is used after being freed." Err bitreich.org 70 i- (ffi:foreign-free ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-foreign-pointer ((var size &optional size-var) &body body) Err bitreich.org 70 i- "Bind VAR to a pointer to SIZE bytes of foreign-addressable Err bitreich.org 70 i-memory during BODY. Both PTR and the memory block pointed to Err bitreich.org 70 i-have dynamic extent and may be stack allocated if supported by Err bitreich.org 70 i-the implementation. If SIZE-VAR is supplied, it will be bound to Err bitreich.org 70 i-SIZE during BODY." Err bitreich.org 70 i- (unless size-var Err bitreich.org 70 i- (setf size-var (gensym "SIZE"))) Err bitreich.org 70 i- (let ((obj-var (gensym))) Err bitreich.org 70 i- `(let ((,size-var ,size)) Err bitreich.org 70 i- (ffi:with-foreign-object Err bitreich.org 70 i- (,obj-var `(ffi:c-array ffi:uint8 ,,size-var)) Err bitreich.org 70 i- (let ((,var (ffi:foreign-address ,obj-var))) Err bitreich.org 70 i- ,@body))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Memory Access Err bitreich.org 70 i- Err bitreich.org 70 i-;;; %MEM-REF and its compiler macro work around CLISP's FFI:C-POINTER Err bitreich.org 70 i-;;; type and convert NILs back to null pointers. Err bitreich.org 70 i-(defun %mem-ref (ptr type &optional (offset 0)) Err bitreich.org 70 i- "Dereference a pointer OFFSET bytes from PTR to an object of Err bitreich.org 70 i-built-in foreign TYPE. Returns the object as a foreign pointer Err bitreich.org 70 i-or Lisp number." Err bitreich.org 70 i- (let ((value (ffi:memory-as ptr (convert-foreign-type type) offset))) Err bitreich.org 70 i- (if (eq type :pointer) Err bitreich.org 70 i- (or value (null-pointer)) Err bitreich.org 70 i- value))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-compiler-macro %mem-ref (&whole form ptr type &optional (offset 0)) Err bitreich.org 70 i- "Compiler macro to open-code when TYPE is constant." Err bitreich.org 70 i- (if (constantp type) Err bitreich.org 70 i- (let* ((ftype (convert-foreign-type (eval type))) Err bitreich.org 70 i- (form `(ffi:memory-as ,ptr ',ftype ,offset))) Err bitreich.org 70 i- (if (eq type :pointer) Err bitreich.org 70 i- `(or ,form (null-pointer)) Err bitreich.org 70 i- form)) Err bitreich.org 70 i- form)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %mem-set (value ptr type &optional (offset 0)) Err bitreich.org 70 i- "Set a pointer OFFSET bytes from PTR to an object of built-in Err bitreich.org 70 i-foreign TYPE to VALUE." Err bitreich.org 70 i- (setf (ffi:memory-as ptr (convert-foreign-type type) offset) value)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-compiler-macro %mem-set Err bitreich.org 70 i- (&whole form value ptr type &optional (offset 0)) Err bitreich.org 70 i- (if (constantp type) Err bitreich.org 70 i- ;; (setf (ffi:memory-as) value) is exported, but not so nice Err bitreich.org 70 i- ;; w.r.t. the left to right evaluation rule Err bitreich.org 70 i- `(ffi::write-memory-as Err bitreich.org 70 i- ,value ,ptr ',(convert-foreign-type (eval type)) ,offset) Err bitreich.org 70 i- form)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Shareable Vectors Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; This interface is very experimental. WITH-POINTER-TO-VECTOR-DATA Err bitreich.org 70 i-;;; should be defined to perform a copy-in/copy-out if the Lisp Err bitreich.org 70 i-;;; implementation can't do this. Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline make-shareable-byte-vector)) Err bitreich.org 70 i-(defun make-shareable-byte-vector (size) Err bitreich.org 70 i- "Create a Lisp vector of SIZE bytes can passed to Err bitreich.org 70 i-WITH-POINTER-TO-VECTOR-DATA." Err bitreich.org 70 i- (make-array size :element-type '(unsigned-byte 8))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype shareable-byte-vector () Err bitreich.org 70 i- `(vector (unsigned-byte 8))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-pointer-to-vector-data ((ptr-var vector) &body body) Err bitreich.org 70 i- "Bind PTR-VAR to a foreign pointer to the data in VECTOR." Err bitreich.org 70 i- (with-unique-names (vector-var size-var) Err bitreich.org 70 i- `(let ((,vector-var ,vector)) Err bitreich.org 70 i- (check-type ,vector-var shareable-byte-vector) Err bitreich.org 70 i- (with-foreign-pointer (,ptr-var (length ,vector-var) ,size-var) Err bitreich.org 70 i- ;; copy-in Err bitreich.org 70 i- (loop for i below ,size-var do Err bitreich.org 70 i- (%mem-set (aref ,vector-var i) ,ptr-var :unsigned-char i)) Err bitreich.org 70 i- (unwind-protect (progn ,@body) Err bitreich.org 70 i- ;; copy-out Err bitreich.org 70 i- (loop for i below ,size-var do Err bitreich.org 70 i- (setf (aref ,vector-var i) Err bitreich.org 70 i- (%mem-ref ,ptr-var :unsigned-char i)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Foreign Function Calling Err bitreich.org 70 i- Err bitreich.org 70 i-(defun parse-foreign-funcall-args (args) Err bitreich.org 70 i- "Return three values, a list of CLISP FFI types, a list of Err bitreich.org 70 i-values to pass to the function, and the CLISP FFI return type." Err bitreich.org 70 i- (let ((return-type nil)) Err bitreich.org 70 i- (loop for (type arg) on args by #'cddr Err bitreich.org 70 i- if arg collect (list (gensym) (convert-foreign-type type)) into types Err bitreich.org 70 i- and collect arg into fargs Err bitreich.org 70 i- else do (setf return-type (convert-foreign-type type)) Err bitreich.org 70 i- finally (return (values types fargs return-type))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun convert-calling-convention (convention) Err bitreich.org 70 i- (ecase convention Err bitreich.org 70 i- (:stdcall :stdc-stdcall) Err bitreich.org 70 i- (:cdecl :stdc))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun c-function-type (arg-types rettype convention) Err bitreich.org 70 i- "Generate the apropriate CLISP foreign type specification. Also Err bitreich.org 70 i-takes care of converting the calling convention names." Err bitreich.org 70 i- `(ffi:c-function (:arguments ,@arg-types) Err bitreich.org 70 i- (:return-type ,rettype) Err bitreich.org 70 i- (:language ,(convert-calling-convention convention)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Quick hack around the fact that the CFFI package is not yet Err bitreich.org 70 i-;;; defined when this file is loaded. I suppose we could arrange for Err bitreich.org 70 i-;;; the CFFI package to be defined a bit earlier, though. Err bitreich.org 70 i-(defun library-handle-form (name) Err bitreich.org 70 i- (flet ((find-cffi-symbol (symbol) Err bitreich.org 70 i- (find-symbol (symbol-name symbol) '#:cffi))) Err bitreich.org 70 i- `(,(find-cffi-symbol '#:foreign-library-handle) Err bitreich.org 70 i- (,(find-cffi-symbol '#:get-foreign-library) ',name)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- ;; version 2.40 (CVS 2006-09-03, to be more precise) added a Err bitreich.org 70 i- ;; PROPERTIES argument to FFI::FOREIGN-LIBRARY-FUNCTION. Err bitreich.org 70 i- (defun post-2.40-ffi-interface-p () Err bitreich.org 70 i- (let ((f-l-f (find-symbol (string '#:foreign-library-function) '#:ffi))) Err bitreich.org 70 i- (if (and f-l-f (= (length (ext:arglist f-l-f)) 5)) Err bitreich.org 70 i- '(:and) Err bitreich.org 70 i- '(:or)))) Err bitreich.org 70 i- ;; FFI::FOREIGN-LIBRARY-FUNCTION and FFI::FOREIGN-LIBRARY-VARIABLE Err bitreich.org 70 i- ;; were deprecated in 2.41 and removed in 2.45. Err bitreich.org 70 i- (defun post-2.45-ffi-interface-p () Err bitreich.org 70 i- (if (find-symbol (string '#:foreign-library-function) '#:ffi) Err bitreich.org 70 i- '(:or) Err bitreich.org 70 i- '(:and)))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+#.(cffi-sys::post-2.45-ffi-interface-p) Err bitreich.org 70 i-(defun %foreign-funcall-aux (name type library) Err bitreich.org 70 i- `(ffi::find-foreign-function ,name ,type nil ,library nil nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-#-#.(cffi-sys::post-2.45-ffi-interface-p) Err bitreich.org 70 i-(defun %foreign-funcall-aux (name type library) Err bitreich.org 70 i- `(ffi::foreign-library-function Err bitreich.org 70 i- ,name ,library nil Err bitreich.org 70 i- #+#.(cffi-sys::post-2.40-ffi-interface-p) Err bitreich.org 70 i- nil Err bitreich.org 70 i- ,type)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %foreign-funcall (name args &key library convention) Err bitreich.org 70 i- "Invoke a foreign function called NAME, taking pairs of Err bitreich.org 70 i-foreign-type/value pairs from ARGS. If a single element is left Err bitreich.org 70 i-over at the end of ARGS, it specifies the foreign return type of Err bitreich.org 70 i-the function call." Err bitreich.org 70 i- (multiple-value-bind (types fargs rettype) Err bitreich.org 70 i- (parse-foreign-funcall-args args) Err bitreich.org 70 i- (let* ((fn (%foreign-funcall-aux Err bitreich.org 70 i- name Err bitreich.org 70 i- `(ffi:parse-c-type Err bitreich.org 70 i- ',(c-function-type types rettype convention)) Err bitreich.org 70 i- (if (eq library :default) Err bitreich.org 70 i- :default Err bitreich.org 70 i- (library-handle-form library)))) Err bitreich.org 70 i- (form `(funcall Err bitreich.org 70 i- (load-time-value Err bitreich.org 70 i- (handler-case ,fn Err bitreich.org 70 i- (error (err) Err bitreich.org 70 i- (warn "~A" err)))) Err bitreich.org 70 i- ,@fargs))) Err bitreich.org 70 i- (if (eq rettype 'ffi:c-pointer) Err bitreich.org 70 i- `(or ,form (null-pointer)) Err bitreich.org 70 i- form)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %foreign-funcall-pointer (ptr args &key convention) Err bitreich.org 70 i- "Similar to %foreign-funcall but takes a pointer instead of a string." Err bitreich.org 70 i- (multiple-value-bind (types fargs rettype) Err bitreich.org 70 i- (parse-foreign-funcall-args args) Err bitreich.org 70 i- `(funcall (ffi:foreign-function Err bitreich.org 70 i- ,ptr (load-time-value Err bitreich.org 70 i- (ffi:parse-c-type ',(c-function-type Err bitreich.org 70 i- types rettype convention)))) Err bitreich.org 70 i- ,@fargs))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Callbacks Err bitreich.org 70 i- Err bitreich.org 70 i-;;; *CALLBACKS* contains the callbacks defined by the CFFI DEFCALLBACK Err bitreich.org 70 i-;;; macro. The symbol naming the callback is the key, and the value Err bitreich.org 70 i-;;; is a list containing a Lisp function, the parsed CLISP FFI type of Err bitreich.org 70 i-;;; the callback, and a saved pointer that should not persist across Err bitreich.org 70 i-;;; saved images. Err bitreich.org 70 i-(defvar *callbacks* (make-hash-table)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Return a CLISP FFI function type for a CFFI callback function Err bitreich.org 70 i-;;; given a return type and list of argument names and types. Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (defun callback-type (rettype arg-names arg-types convention) Err bitreich.org 70 i- (ffi:parse-c-type Err bitreich.org 70 i- `(ffi:c-function Err bitreich.org 70 i- (:arguments ,@(mapcar (lambda (sym type) Err bitreich.org 70 i- (list sym (convert-foreign-type type))) Err bitreich.org 70 i- arg-names arg-types)) Err bitreich.org 70 i- (:return-type ,(convert-foreign-type rettype)) Err bitreich.org 70 i- (:language ,(convert-calling-convention convention)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Register and create a callback function. Err bitreich.org 70 i-(defun register-callback (name function parsed-type) Err bitreich.org 70 i- (setf (gethash name *callbacks*) Err bitreich.org 70 i- (list function parsed-type Err bitreich.org 70 i- (ffi:with-foreign-object (ptr 'ffi:c-pointer) Err bitreich.org 70 i- ;; Create callback by converting Lisp function to foreign Err bitreich.org 70 i- (setf (ffi:memory-as ptr parsed-type) function) Err bitreich.org 70 i- (ffi:foreign-value ptr))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Restore all saved callback pointers when restarting the Lisp Err bitreich.org 70 i-;;; image. This is pushed onto CUSTOM:*INIT-HOOKS*. Err bitreich.org 70 i-;;; Needs clisp > 2.35, bugfix 2005-09-29 Err bitreich.org 70 i-(defun restore-callback-pointers () Err bitreich.org 70 i- (maphash Err bitreich.org 70 i- (lambda (name list) Err bitreich.org 70 i- (register-callback name (first list) (second list))) Err bitreich.org 70 i- *callbacks*)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Add RESTORE-CALLBACK-POINTERS to the lists of functions to run Err bitreich.org 70 i-;;; when an image is restarted. Err bitreich.org 70 i-(eval-when (:load-toplevel :execute) Err bitreich.org 70 i- (pushnew 'restore-callback-pointers custom:*init-hooks*)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Define a callback function NAME to run BODY with arguments Err bitreich.org 70 i-;;; ARG-NAMES translated according to ARG-TYPES and the return type Err bitreich.org 70 i-;;; translated according to RETTYPE. Obtain a pointer that can be Err bitreich.org 70 i-;;; passed to C code for this callback by calling %CALLBACK. Err bitreich.org 70 i-(defmacro %defcallback (name rettype arg-names arg-types body Err bitreich.org 70 i- &key convention) Err bitreich.org 70 i- `(register-callback Err bitreich.org 70 i- ',name Err bitreich.org 70 i- (lambda ,arg-names Err bitreich.org 70 i- ;; Work around CLISP's FFI:C-POINTER type and convert NIL values Err bitreich.org 70 i- ;; back into a null pointers. Err bitreich.org 70 i- (let (,@(loop for name in arg-names Err bitreich.org 70 i- and type in arg-types Err bitreich.org 70 i- when (eq type :pointer) Err bitreich.org 70 i- collect `(,name (or ,name (null-pointer))))) Err bitreich.org 70 i- ,body)) Err bitreich.org 70 i- ,(callback-type rettype arg-names arg-types convention))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Look up the name of a callback and return a pointer that can be Err bitreich.org 70 i-;;; passed to a C function. Signals an error if no callback is Err bitreich.org 70 i-;;; defined called NAME. Err bitreich.org 70 i-(defun %callback (name) Err bitreich.org 70 i- (multiple-value-bind (list winp) (gethash name *callbacks*) Err bitreich.org 70 i- (unless winp Err bitreich.org 70 i- (error "Undefined callback: ~S" name)) Err bitreich.org 70 i- (third list))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Loading and Closing Foreign Libraries Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %load-foreign-library (name path) Err bitreich.org 70 i- "Load a foreign library from PATH." Err bitreich.org 70 i- (declare (ignore name)) Err bitreich.org 70 i- #+#.(cffi-sys::post-2.45-ffi-interface-p) Err bitreich.org 70 i- (ffi:open-foreign-library path) Err bitreich.org 70 i- #-#.(cffi-sys::post-2.45-ffi-interface-p) Err bitreich.org 70 i- (ffi::foreign-library path)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %close-foreign-library (handle) Err bitreich.org 70 i- "Close a foreign library." Err bitreich.org 70 i- (ffi:close-foreign-library handle)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun native-namestring (pathname) Err bitreich.org 70 i- (namestring pathname)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Foreign Globals Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-symbol-pointer (name library) Err bitreich.org 70 i- "Returns a pointer to a foreign symbol NAME." Err bitreich.org 70 i- (prog1 (ignore-errors Err bitreich.org 70 i- (ffi:foreign-address Err bitreich.org 70 i- #+#.(cffi-sys::post-2.45-ffi-interface-p) Err bitreich.org 70 i- (ffi::find-foreign-variable name nil library nil nil) Err bitreich.org 70 i- #-#.(cffi-sys::post-2.45-ffi-interface-p) Err bitreich.org 70 i- (ffi::foreign-library-variable name library nil nil))))) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/src/cffi-cmucl.lisp b/3rdparties/software/cffi_0.20.0/src/cffi-cmucl.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/src/cffi-cmucl.lisp.gph bitreich.org 70 i@@ -1,384 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; cffi-cmucl.lisp --- CFFI-SYS implementation for CMU CL. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Administrivia Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:cffi-sys Err bitreich.org 70 i- (:use #:common-lisp #:alien #:c-call) Err bitreich.org 70 i- (:import-from #:alexandria #:once-only #:with-unique-names #:if-let) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- #:canonicalize-symbol-name-case Err bitreich.org 70 i- #:foreign-pointer Err bitreich.org 70 i- #:pointerp Err bitreich.org 70 i- #:pointer-eq Err bitreich.org 70 i- #:null-pointer Err bitreich.org 70 i- #:null-pointer-p Err bitreich.org 70 i- #:inc-pointer Err bitreich.org 70 i- #:make-pointer Err bitreich.org 70 i- #:pointer-address Err bitreich.org 70 i- #:%foreign-alloc Err bitreich.org 70 i- #:foreign-free Err bitreich.org 70 i- #:with-foreign-pointer Err bitreich.org 70 i- #:%foreign-funcall Err bitreich.org 70 i- #:%foreign-funcall-pointer Err bitreich.org 70 i- #:%foreign-type-alignment Err bitreich.org 70 i- #:%foreign-type-size Err bitreich.org 70 i- #:%load-foreign-library Err bitreich.org 70 i- #:%close-foreign-library Err bitreich.org 70 i- #:native-namestring Err bitreich.org 70 i- #:%mem-ref Err bitreich.org 70 i- #:%mem-set Err bitreich.org 70 i- #:make-shareable-byte-vector Err bitreich.org 70 i- #:with-pointer-to-vector-data Err bitreich.org 70 i- #:%foreign-symbol-pointer Err bitreich.org 70 i- #:%defcallback Err bitreich.org 70 i- #:%callback)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-sys) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Misfeatures Err bitreich.org 70 i- Err bitreich.org 70 i-(pushnew 'flat-namespace *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Symbol Case Err bitreich.org 70 i- Err bitreich.org 70 i-(defun canonicalize-symbol-name-case (name) Err bitreich.org 70 i- (declare (string name)) Err bitreich.org 70 i- (string-upcase name)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Basic Pointer Operations Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype foreign-pointer () Err bitreich.org 70 i- 'sys:system-area-pointer) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline pointerp)) Err bitreich.org 70 i-(defun pointerp (ptr) Err bitreich.org 70 i- "Return true if PTR is a foreign pointer." Err bitreich.org 70 i- (sys:system-area-pointer-p ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline pointer-eq)) Err bitreich.org 70 i-(defun pointer-eq (ptr1 ptr2) Err bitreich.org 70 i- "Return true if PTR1 and PTR2 point to the same address." Err bitreich.org 70 i- (sys:sap= ptr1 ptr2)) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline null-pointer)) Err bitreich.org 70 i-(defun null-pointer () Err bitreich.org 70 i- "Construct and return a null pointer." Err bitreich.org 70 i- (sys:int-sap 0)) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline null-pointer-p)) Err bitreich.org 70 i-(defun null-pointer-p (ptr) Err bitreich.org 70 i- "Return true if PTR is a null pointer." Err bitreich.org 70 i- (zerop (sys:sap-int ptr))) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline inc-pointer)) Err bitreich.org 70 i-(defun inc-pointer (ptr offset) Err bitreich.org 70 i- "Return a pointer pointing OFFSET bytes past PTR." Err bitreich.org 70 i- (sys:sap+ ptr offset)) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline make-pointer)) Err bitreich.org 70 i-(defun make-pointer (address) Err bitreich.org 70 i- "Return a pointer pointing to ADDRESS." Err bitreich.org 70 i- (sys:int-sap address)) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline pointer-address)) Err bitreich.org 70 i-(defun pointer-address (ptr) Err bitreich.org 70 i- "Return the address pointed to by PTR." Err bitreich.org 70 i- (sys:sap-int ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-foreign-pointer ((var size &optional size-var) &body body) Err bitreich.org 70 i- "Bind VAR to SIZE bytes of foreign memory during BODY. The Err bitreich.org 70 i-pointer in VAR is invalid beyond the dynamic extent of BODY, and Err bitreich.org 70 i-may be stack-allocated if supported by the implementation. If Err bitreich.org 70 i-SIZE-VAR is supplied, it will be bound to SIZE during BODY." Err bitreich.org 70 i- (unless size-var Err bitreich.org 70 i- (setf size-var (gensym "SIZE"))) Err bitreich.org 70 i- ;; If the size is constant we can stack-allocate. Err bitreich.org 70 i- (if (constantp size) Err bitreich.org 70 i- (let ((alien-var (gensym "ALIEN"))) Err bitreich.org 70 i- `(with-alien ((,alien-var (array (unsigned 8) ,(eval size)))) Err bitreich.org 70 i- (let ((,size-var ,(eval size)) Err bitreich.org 70 i- (,var (alien-sap ,alien-var))) Err bitreich.org 70 i- (declare (ignorable ,size-var)) Err bitreich.org 70 i- ,@body))) Err bitreich.org 70 i- `(let* ((,size-var ,size) Err bitreich.org 70 i- (,var (%foreign-alloc ,size-var))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn ,@body) Err bitreich.org 70 i- (foreign-free ,var))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Allocation Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Functions and macros for allocating foreign memory on the stack Err bitreich.org 70 i-;;; and on the heap. The main CFFI package defines macros that wrap Err bitreich.org 70 i-;;; FOREIGN-ALLOC and FOREIGN-FREE in UNWIND-PROTECT for the common usage Err bitreich.org 70 i-;;; when the memory has dynamic extent. Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-alloc (size) Err bitreich.org 70 i- "Allocate SIZE bytes on the heap and return a pointer." Err bitreich.org 70 i- (declare (type (unsigned-byte 32) size)) Err bitreich.org 70 i- (alien-funcall Err bitreich.org 70 i- (extern-alien Err bitreich.org 70 i- "malloc" Err bitreich.org 70 i- (function system-area-pointer unsigned)) Err bitreich.org 70 i- size)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-free (ptr) Err bitreich.org 70 i- "Free a PTR allocated by FOREIGN-ALLOC." Err bitreich.org 70 i- (declare (type system-area-pointer ptr)) Err bitreich.org 70 i- (alien-funcall Err bitreich.org 70 i- (extern-alien Err bitreich.org 70 i- "free" Err bitreich.org 70 i- (function (values) system-area-pointer)) Err bitreich.org 70 i- ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Shareable Vectors Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; This interface is very experimental. WITH-POINTER-TO-VECTOR-DATA Err bitreich.org 70 i-;;; should be defined to perform a copy-in/copy-out if the Lisp Err bitreich.org 70 i-;;; implementation can't do this. Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-shareable-byte-vector (size) Err bitreich.org 70 i- "Create a Lisp vector of SIZE bytes that can passed to Err bitreich.org 70 i-WITH-POINTER-TO-VECTOR-DATA." Err bitreich.org 70 i- (make-array size :element-type '(unsigned-byte 8))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-pointer-to-vector-data ((ptr-var vector) &body body) Err bitreich.org 70 i- "Bind PTR-VAR to a foreign pointer to the data in VECTOR." Err bitreich.org 70 i- `(sys:without-gcing Err bitreich.org 70 i- (let ((,ptr-var (sys:vector-sap ,vector))) Err bitreich.org 70 i- ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Dereferencing Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Define the %MEM-REF and %MEM-SET functions, as well as compiler Err bitreich.org 70 i-;;; macros that optimize the case where the type keyword is constant Err bitreich.org 70 i-;;; at compile-time. Err bitreich.org 70 i-(defmacro define-mem-accessors (&body pairs) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (defun %mem-ref (ptr type &optional (offset 0)) Err bitreich.org 70 i- (ecase type Err bitreich.org 70 i- ,@(loop for (keyword fn) in pairs Err bitreich.org 70 i- collect `(,keyword (,fn ptr offset))))) Err bitreich.org 70 i- (defun %mem-set (value ptr type &optional (offset 0)) Err bitreich.org 70 i- (ecase type Err bitreich.org 70 i- ,@(loop for (keyword fn) in pairs Err bitreich.org 70 i- collect `(,keyword (setf (,fn ptr offset) value))))) Err bitreich.org 70 i- (define-compiler-macro %mem-ref Err bitreich.org 70 i- (&whole form ptr type &optional (offset 0)) Err bitreich.org 70 i- (if (constantp type) Err bitreich.org 70 i- (ecase (eval type) Err bitreich.org 70 i- ,@(loop for (keyword fn) in pairs Err bitreich.org 70 i- collect `(,keyword `(,',fn ,ptr ,offset)))) Err bitreich.org 70 i- form)) Err bitreich.org 70 i- (define-compiler-macro %mem-set Err bitreich.org 70 i- (&whole form value ptr type &optional (offset 0)) Err bitreich.org 70 i- (if (constantp type) Err bitreich.org 70 i- (once-only (value) Err bitreich.org 70 i- (ecase (eval type) Err bitreich.org 70 i- ,@(loop for (keyword fn) in pairs Err bitreich.org 70 i- collect `(,keyword `(setf (,',fn ,ptr ,offset) Err bitreich.org 70 i- ,value))))) Err bitreich.org 70 i- form)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-mem-accessors Err bitreich.org 70 i- (:char sys:signed-sap-ref-8) Err bitreich.org 70 i- (:unsigned-char sys:sap-ref-8) Err bitreich.org 70 i- (:short sys:signed-sap-ref-16) Err bitreich.org 70 i- (:unsigned-short sys:sap-ref-16) Err bitreich.org 70 i- (:int sys:signed-sap-ref-32) Err bitreich.org 70 i- (:unsigned-int sys:sap-ref-32) Err bitreich.org 70 i- (:long sys:signed-sap-ref-32) Err bitreich.org 70 i- (:unsigned-long sys:sap-ref-32) Err bitreich.org 70 i- (:long-long sys:signed-sap-ref-64) Err bitreich.org 70 i- (:unsigned-long-long sys:sap-ref-64) Err bitreich.org 70 i- (:float sys:sap-ref-single) Err bitreich.org 70 i- (:double sys:sap-ref-double) Err bitreich.org 70 i- (:pointer sys:sap-ref-sap)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Calling Foreign Functions Err bitreich.org 70 i- Err bitreich.org 70 i-(defun convert-foreign-type (type-keyword) Err bitreich.org 70 i- "Convert a CFFI type keyword to an ALIEN type." Err bitreich.org 70 i- (ecase type-keyword Err bitreich.org 70 i- (:char 'char) Err bitreich.org 70 i- (:unsigned-char 'unsigned-char) Err bitreich.org 70 i- (:short 'short) Err bitreich.org 70 i- (:unsigned-short 'unsigned-short) Err bitreich.org 70 i- (:int 'int) Err bitreich.org 70 i- (:unsigned-int 'unsigned-int) Err bitreich.org 70 i- (:long 'long) Err bitreich.org 70 i- (:unsigned-long 'unsigned-long) Err bitreich.org 70 i- (:long-long '(signed 64)) Err bitreich.org 70 i- (:unsigned-long-long '(unsigned 64)) Err bitreich.org 70 i- (:float 'single-float) Err bitreich.org 70 i- (:double 'double-float) Err bitreich.org 70 i- (:pointer 'system-area-pointer) Err bitreich.org 70 i- (:void 'void))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-type-size (type-keyword) Err bitreich.org 70 i- "Return the size in bytes of a foreign type." Err bitreich.org 70 i- (/ (alien-internals:alien-type-bits Err bitreich.org 70 i- (alien-internals:parse-alien-type Err bitreich.org 70 i- (convert-foreign-type type-keyword))) 8)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-type-alignment (type-keyword) Err bitreich.org 70 i- "Return the alignment in bytes of a foreign type." Err bitreich.org 70 i- (/ (alien-internals:alien-type-alignment Err bitreich.org 70 i- (alien-internals:parse-alien-type Err bitreich.org 70 i- (convert-foreign-type type-keyword))) 8)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-funcall-type-and-args (args) Err bitreich.org 70 i- "Return an ALIEN function type for ARGS." Err bitreich.org 70 i- (let ((return-type nil)) Err bitreich.org 70 i- (loop for (type arg) on args by #'cddr Err bitreich.org 70 i- if arg collect (convert-foreign-type type) into types Err bitreich.org 70 i- and collect arg into fargs Err bitreich.org 70 i- else do (setf return-type (convert-foreign-type type)) Err bitreich.org 70 i- finally (return (values types fargs return-type))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %%foreign-funcall (name types fargs rettype) Err bitreich.org 70 i- "Internal guts of %FOREIGN-FUNCALL." Err bitreich.org 70 i- `(alien-funcall Err bitreich.org 70 i- (extern-alien ,name (function ,rettype ,@types)) Err bitreich.org 70 i- ,@fargs)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %foreign-funcall (name args &key library convention) Err bitreich.org 70 i- "Perform a foreign function call, document it more later." Err bitreich.org 70 i- (declare (ignore library convention)) Err bitreich.org 70 i- (multiple-value-bind (types fargs rettype) Err bitreich.org 70 i- (foreign-funcall-type-and-args args) Err bitreich.org 70 i- `(%%foreign-funcall ,name ,types ,fargs ,rettype))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %foreign-funcall-pointer (ptr args &key convention) Err bitreich.org 70 i- "Funcall a pointer to a foreign function." Err bitreich.org 70 i- (declare (ignore convention)) Err bitreich.org 70 i- (multiple-value-bind (types fargs rettype) Err bitreich.org 70 i- (foreign-funcall-type-and-args args) Err bitreich.org 70 i- (with-unique-names (function) Err bitreich.org 70 i- `(with-alien ((,function (* (function ,rettype ,@types)) ,ptr)) Err bitreich.org 70 i- (alien-funcall ,function ,@fargs))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Callbacks Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *callbacks* (make-hash-table)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Create a package to contain the symbols for callback functions. We Err bitreich.org 70 i-;;; want to redefine callbacks with the same symbol so the internal data Err bitreich.org 70 i-;;; structures are reused. Err bitreich.org 70 i-(defpackage #:cffi-callbacks Err bitreich.org 70 i- (:use)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Intern a symbol in the CFFI-CALLBACKS package used to name the internal Err bitreich.org 70 i-;;; callback for NAME. Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (defun intern-callback (name) Err bitreich.org 70 i- (intern (format nil "~A::~A" Err bitreich.org 70 i- (if-let (package (symbol-package name)) Err bitreich.org 70 i- (package-name package) Err bitreich.org 70 i- name) Err bitreich.org 70 i- (symbol-name name)) Err bitreich.org 70 i- '#:cffi-callbacks))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %defcallback (name rettype arg-names arg-types body Err bitreich.org 70 i- &key convention) Err bitreich.org 70 i- (declare (ignore convention)) Err bitreich.org 70 i- (let ((cb-name (intern-callback name))) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (def-callback ,cb-name Err bitreich.org 70 i- (,(convert-foreign-type rettype) Err bitreich.org 70 i- ,@(mapcar (lambda (sym type) Err bitreich.org 70 i- (list sym (convert-foreign-type type))) Err bitreich.org 70 i- arg-names arg-types)) Err bitreich.org 70 i- ,body) Err bitreich.org 70 i- (setf (gethash ',name *callbacks*) (callback ,cb-name))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %callback (name) Err bitreich.org 70 i- (multiple-value-bind (pointer winp) Err bitreich.org 70 i- (gethash name *callbacks*) Err bitreich.org 70 i- (unless winp Err bitreich.org 70 i- (error "Undefined callback: ~S" name)) Err bitreich.org 70 i- pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; CMUCL makes new callback trampolines when it reloads, so we need Err bitreich.org 70 i-;;; to update CFFI's copies. Err bitreich.org 70 i-(defun reset-callbacks () Err bitreich.org 70 i- (loop for k being the hash-keys of *callbacks* Err bitreich.org 70 i- do (setf (gethash k *callbacks*) Err bitreich.org 70 i- (alien::symbol-trampoline (intern-callback k))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Needs to be after cmucl's restore-callbacks, so put at the end... Err bitreich.org 70 i-(unless (member 'reset-callbacks ext:*after-save-initializations*) Err bitreich.org 70 i- (setf ext:*after-save-initializations* Err bitreich.org 70 i- (append ext:*after-save-initializations* (list 'reset-callbacks)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Loading and Closing Foreign Libraries Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Work-around for compiling ffi code without loading the Err bitreich.org 70 i-;;; respective library at compile-time. Err bitreich.org 70 i-(setf c::top-level-lambda-max 0) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %load-foreign-library (name path) Err bitreich.org 70 i- "Load the foreign library NAME." Err bitreich.org 70 i- ;; On some platforms SYS::LOAD-OBJECT-FILE signals an error when Err bitreich.org 70 i- ;; loading fails, but on others (Linux for instance) it returns Err bitreich.org 70 i- ;; two values: NIL and an error string. Err bitreich.org 70 i- (declare (ignore name)) Err bitreich.org 70 i- (multiple-value-bind (ret message) Err bitreich.org 70 i- (sys::load-object-file path) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ;; Loading failed. Err bitreich.org 70 i- ((stringp message) (error "~A" message)) Err bitreich.org 70 i- ;; The library was already loaded. Err bitreich.org 70 i- ((null ret) (cdr (rassoc path sys::*global-table* :test #'string=))) Err bitreich.org 70 i- ;; The library has been loaded, but since SYS::LOAD-OBJECT-FILE Err bitreich.org 70 i- ;; returns an alist of *all* loaded libraries along with their addresses Err bitreich.org 70 i- ;; we return only the handler associated with the library just loaded. Err bitreich.org 70 i- (t (cdr (rassoc path ret :test #'string=)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; XXX: doesn't work on Darwin; does not check for errors. I suppose we'd Err bitreich.org 70 i-;;; want something like SBCL's dlclose-or-lose in foreign-load.lisp:66 Err bitreich.org 70 i-(defun %close-foreign-library (handler) Err bitreich.org 70 i- "Closes a foreign library." Err bitreich.org 70 i- (let ((lib (rassoc (ext:unix-namestring handler) sys::*global-table* Err bitreich.org 70 i- :test #'string=))) Err bitreich.org 70 i- (sys::dlclose (car lib)) Err bitreich.org 70 i- (setf (car lib) (sys:int-sap 0)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun native-namestring (pathname) Err bitreich.org 70 i- (ext:unix-namestring pathname nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Foreign Globals Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-symbol-pointer (name library) Err bitreich.org 70 i- "Returns a pointer to a foreign symbol NAME." Err bitreich.org 70 i- (declare (ignore library)) Err bitreich.org 70 i- (let ((address (sys:alternate-get-global-address Err bitreich.org 70 i- (vm:extern-alien-name name)))) Err bitreich.org 70 i- (if (zerop address) Err bitreich.org 70 i- nil Err bitreich.org 70 i- (sys:int-sap address)))) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/src/cffi-corman.lisp b/3rdparties/software/cffi_0.20.0/src/cffi-corman.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/src/cffi-corman.lisp.gph bitreich.org 70 i@@ -1,331 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; cffi-corman.lisp --- CFFI-SYS implementation for Corman Lisp. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2008, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-;;; This port is suffering from bitrot as of 2007-03-29. Corman Lisp Err bitreich.org 70 i-;;; is too funky with ASDF, crashes easily, makes it very painful to Err bitreich.org 70 i-;;; do any testing. -- luis Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Administrivia Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:cffi-sys Err bitreich.org 70 i- (:use #:common-lisp #:c-types) Err bitreich.org 70 i- (:import-from #:alexandria #:with-unique-names) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- #:canonicalize-symbol-name-case Err bitreich.org 70 i- #:foreign-pointer Err bitreich.org 70 i- #:pointerp Err bitreich.org 70 i- #:pointer-eq Err bitreich.org 70 i- #:null-pointer Err bitreich.org 70 i- #:null-pointer-p Err bitreich.org 70 i- #:inc-pointer Err bitreich.org 70 i- #:make-pointer Err bitreich.org 70 i- #:pointer-address Err bitreich.org 70 i- #:%foreign-alloc Err bitreich.org 70 i- #:foreign-free Err bitreich.org 70 i- #:with-foreign-pointer Err bitreich.org 70 i- #:%foreign-funcall Err bitreich.org 70 i- #:%foreign-type-alignment Err bitreich.org 70 i- #:%foreign-type-size Err bitreich.org 70 i- #:%load-foreign-library Err bitreich.org 70 i- #:native-namestring Err bitreich.org 70 i- #:%mem-ref Err bitreich.org 70 i- #:%mem-set Err bitreich.org 70 i- ;#:make-shareable-byte-vector Err bitreich.org 70 i- ;#:with-pointer-to-vector-data Err bitreich.org 70 i- #:foreign-symbol-pointer Err bitreich.org 70 i- #:defcfun-helper-forms Err bitreich.org 70 i- #:%defcallback Err bitreich.org 70 i- #:%callback)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-sys) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Misfeatures Err bitreich.org 70 i- Err bitreich.org 70 i-(pushnew 'no-long-long *features*) Err bitreich.org 70 i-(pushnew 'no-foreign-funcall *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;$ Symbol Case Err bitreich.org 70 i- Err bitreich.org 70 i-(defun canonicalize-symbol-name-case (name) Err bitreich.org 70 i- (declare (string name)) Err bitreich.org 70 i- (string-upcase name)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Basic Pointer Operations Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype foreign-pointer () Err bitreich.org 70 i- 'cl::foreign) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun pointerp (ptr) Err bitreich.org 70 i- "Return true if PTR is a foreign pointer." Err bitreich.org 70 i- (cpointerp ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun pointer-eq (ptr1 ptr2) Err bitreich.org 70 i- "Return true if PTR1 and PTR2 point to the same address." Err bitreich.org 70 i- (cpointer= ptr1 ptr2)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun null-pointer () Err bitreich.org 70 i- "Return a null pointer." Err bitreich.org 70 i- (create-foreign-ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun null-pointer-p (ptr) Err bitreich.org 70 i- "Return true if PTR is a null pointer." Err bitreich.org 70 i- (cpointer-null ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun inc-pointer (ptr offset) Err bitreich.org 70 i- "Return a pointer pointing OFFSET bytes past PTR." Err bitreich.org 70 i- (let ((new-ptr (create-foreign-ptr))) Err bitreich.org 70 i- (setf (cpointer-value new-ptr) Err bitreich.org 70 i- (+ (cpointer-value ptr) offset)) Err bitreich.org 70 i- new-ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-pointer (address) Err bitreich.org 70 i- "Return a pointer pointing to ADDRESS." Err bitreich.org 70 i- (int-to-foreign-ptr address)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun pointer-address (ptr) Err bitreich.org 70 i- "Return the address pointed to by PTR." Err bitreich.org 70 i- (foreign-ptr-to-int ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Allocation Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Functions and macros for allocating foreign memory on the stack Err bitreich.org 70 i-;;; and on the heap. The main CFFI package defines macros that wrap Err bitreich.org 70 i-;;; FOREIGN-ALLOC and FOREIGN-FREE in UNWIND-PROTECT for the common usage Err bitreich.org 70 i-;;; when the memory has dynamic extent. Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-alloc (size) Err bitreich.org 70 i- "Allocate SIZE bytes on the heap and return a pointer." Err bitreich.org 70 i- (malloc size)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-free (ptr) Err bitreich.org 70 i- "Free a PTR allocated by FOREIGN-ALLOC." Err bitreich.org 70 i- (free ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-foreign-pointer ((var size &optional size-var) &body body) Err bitreich.org 70 i- "Bind VAR to SIZE bytes of foreign memory during BODY. The Err bitreich.org 70 i-pointer in VAR is invalid beyond the dynamic extent of BODY, and Err bitreich.org 70 i-may be stack-allocated if supported by the implementation. If Err bitreich.org 70 i-SIZE-VAR is supplied, it will be bound to SIZE during BODY." Err bitreich.org 70 i- (unless size-var Err bitreich.org 70 i- (setf size-var (gensym "SIZE"))) Err bitreich.org 70 i- `(let* ((,size-var ,size) Err bitreich.org 70 i- (,var (malloc ,size-var))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn ,@body) Err bitreich.org 70 i- (free ,var)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Shareable Vectors Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; This interface is very experimental. WITH-POINTER-TO-VECTOR-DATA Err bitreich.org 70 i-;;; should be defined to perform a copy-in/copy-out if the Lisp Err bitreich.org 70 i-;;; implementation can't do this. Err bitreich.org 70 i- Err bitreich.org 70 i-;(defun make-shareable-byte-vector (size) Err bitreich.org 70 i-; "Create a Lisp vector of SIZE bytes can passed to Err bitreich.org 70 i-;WITH-POINTER-TO-VECTOR-DATA." Err bitreich.org 70 i-; (make-array size :element-type '(unsigned-byte 8))) Err bitreich.org 70 i-; Err bitreich.org 70 i-;(defmacro with-pointer-to-vector-data ((ptr-var vector) &body body) Err bitreich.org 70 i-; "Bind PTR-VAR to a foreign pointer to the data in VECTOR." Err bitreich.org 70 i-; `(sb-sys:without-gcing Err bitreich.org 70 i-; (let ((,ptr-var (sb-sys:vector-sap ,vector))) Err bitreich.org 70 i-; ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Dereferencing Err bitreich.org 70 i- Err bitreich.org 70 i-;;; According to the docs, Corman's C Function Definition Parser Err bitreich.org 70 i-;;; converts int to long, so we'll assume that. Err bitreich.org 70 i-(defun convert-foreign-type (type-keyword) Err bitreich.org 70 i- "Convert a CFFI type keyword to a CormanCL type." Err bitreich.org 70 i- (ecase type-keyword Err bitreich.org 70 i- (:char :char) Err bitreich.org 70 i- (:unsigned-char :unsigned-char) Err bitreich.org 70 i- (:short :short) Err bitreich.org 70 i- (:unsigned-short :unsigned-short) Err bitreich.org 70 i- (:int :long) Err bitreich.org 70 i- (:unsigned-int :unsigned-long) Err bitreich.org 70 i- (:long :long) Err bitreich.org 70 i- (:unsigned-long :unsigned-long) Err bitreich.org 70 i- (:float :single-float) Err bitreich.org 70 i- (:double :double-float) Err bitreich.org 70 i- (:pointer :handle) Err bitreich.org 70 i- (:void :void))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %mem-ref (ptr type &optional (offset 0)) Err bitreich.org 70 i- "Dereference an object of TYPE at OFFSET bytes from PTR." Err bitreich.org 70 i- (unless (eql offset 0) Err bitreich.org 70 i- (setq ptr (inc-pointer ptr offset))) Err bitreich.org 70 i- (ecase type Err bitreich.org 70 i- (:char (cref (:char *) ptr 0)) Err bitreich.org 70 i- (:unsigned-char (cref (:unsigned-char *) ptr 0)) Err bitreich.org 70 i- (:short (cref (:short *) ptr 0)) Err bitreich.org 70 i- (:unsigned-short (cref (:unsigned-short *) ptr 0)) Err bitreich.org 70 i- (:int (cref (:long *) ptr 0)) Err bitreich.org 70 i- (:unsigned-int (cref (:unsigned-long *) ptr 0)) Err bitreich.org 70 i- (:long (cref (:long *) ptr 0)) Err bitreich.org 70 i- (:unsigned-long (cref (:unsigned-long *) ptr 0)) Err bitreich.org 70 i- (:float (cref (:single-float *) ptr 0)) Err bitreich.org 70 i- (:double (cref (:double-float *) ptr 0)) Err bitreich.org 70 i- (:pointer (cref (:handle *) ptr 0)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;(define-compiler-macro %mem-ref (&whole form ptr type &optional (offset 0)) Err bitreich.org 70 i-; (if (constantp type) Err bitreich.org 70 i-; `(cref (,(convert-foreign-type type) *) ,ptr ,offset) Err bitreich.org 70 i-; form)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %mem-set (value ptr type &optional (offset 0)) Err bitreich.org 70 i- "Set the object of TYPE at OFFSET bytes from PTR." Err bitreich.org 70 i- (unless (eql offset 0) Err bitreich.org 70 i- (setq ptr (inc-pointer ptr offset))) Err bitreich.org 70 i- (ecase type Err bitreich.org 70 i- (:char (setf (cref (:char *) ptr 0) value)) Err bitreich.org 70 i- (:unsigned-char (setf (cref (:unsigned-char *) ptr 0) value)) Err bitreich.org 70 i- (:short (setf (cref (:short *) ptr 0) value)) Err bitreich.org 70 i- (:unsigned-short (setf (cref (:unsigned-short *) ptr 0) value)) Err bitreich.org 70 i- (:int (setf (cref (:long *) ptr 0) value)) Err bitreich.org 70 i- (:unsigned-int (setf (cref (:unsigned-long *) ptr 0) value)) Err bitreich.org 70 i- (:long (setf (cref (:long *) ptr 0) value)) Err bitreich.org 70 i- (:unsigned-long (setf (cref (:unsigned-long *) ptr 0) value)) Err bitreich.org 70 i- (:float (setf (cref (:single-float *) ptr 0) value)) Err bitreich.org 70 i- (:double (setf (cref (:double-float *) ptr 0) value)) Err bitreich.org 70 i- (:pointer (setf (cref (:handle *) ptr 0) value)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Calling Foreign Functions Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-type-size (type-keyword) Err bitreich.org 70 i- "Return the size in bytes of a foreign type." Err bitreich.org 70 i- (sizeof (convert-foreign-type type-keyword))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Couldn't find anything in sys/ffi.lisp and the C declaration parser Err bitreich.org 70 i-;;; doesn't seem to care about alignment so we'll assume that it's the Err bitreich.org 70 i-;;; same as its size. Err bitreich.org 70 i-(defun %foreign-type-alignment (type-keyword) Err bitreich.org 70 i- (sizeof (convert-foreign-type type-keyword))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun find-dll-containing-function (name) Err bitreich.org 70 i- "Searches for NAME in the loaded DLLs. If found, returns Err bitreich.org 70 i-the DLL's name (a string), else returns NIL." Err bitreich.org 70 i- (dolist (dll ct::*dlls-loaded*) Err bitreich.org 70 i- (when (ignore-errors Err bitreich.org 70 i- (ct::get-dll-proc-address name (ct::dll-record-handle dll))) Err bitreich.org 70 i- (return (ct::dll-record-name dll))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; This won't work at all... Err bitreich.org 70 i-#|| Err bitreich.org 70 i-(defmacro %foreign-funcall (name &rest args) Err bitreich.org 70 i- (let ((sym (gensym))) Err bitreich.org 70 i- `(let (,sym) Err bitreich.org 70 i- (ct::install-dll-function ,(find-dll-containing-function name) Err bitreich.org 70 i- ,name ,sym) Err bitreich.org 70 i- (funcall ,sym ,@(loop for (type arg) on args by #'cddr Err bitreich.org 70 i- if arg collect arg))))) Err bitreich.org 70 i-||# Err bitreich.org 70 i- Err bitreich.org 70 i-;;; It *might* be possible to implement by copying most of the code Err bitreich.org 70 i-;;; from Corman's DEFUN-DLL. Alternatively, it could implemented the Err bitreich.org 70 i-;;; same way as Lispworks' foreign-funcall. In practice, nobody uses Err bitreich.org 70 i-;;; Corman with CFFI, apparently. :) Err bitreich.org 70 i-(defmacro %foreign-funcall (name &rest args) Err bitreich.org 70 i- "Call a foreign function NAME passing arguments ARGS." Err bitreich.org 70 i- `(format t "~&;; Calling ~A with args ~S.~%" ,name ',args)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun defcfun-helper-forms (name lisp-name rettype args types) Err bitreich.org 70 i- "Return 2 values for DEFCFUN. A prelude form and a caller form." Err bitreich.org 70 i- (let ((ff-name (intern (format nil "%cffi-foreign-function/~A" lisp-name))) Err bitreich.org 70 i- ;; XXX This will only work if the dll is already loaded, fix this. Err bitreich.org 70 i- (dll (find-dll-containing-function name))) Err bitreich.org 70 i- (values Err bitreich.org 70 i- `(defun-dll ,ff-name Err bitreich.org 70 i- ,(mapcar (lambda (type) Err bitreich.org 70 i- (list (gensym) (convert-foreign-type type))) Err bitreich.org 70 i- types) Err bitreich.org 70 i- :return-type ,(convert-foreign-type rettype) Err bitreich.org 70 i- :library-name ,dll Err bitreich.org 70 i- :entry-name ,name Err bitreich.org 70 i- ;; we want also :pascal linkage type to access Err bitreich.org 70 i- ;; the win32 api for instance.. Err bitreich.org 70 i- :linkage-type :c) Err bitreich.org 70 i- `(,ff-name ,@args)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Callbacks Err bitreich.org 70 i- Err bitreich.org 70 i-;;; defun-c-callback vs. defun-direct-c-callback? Err bitreich.org 70 i-;;; same issue as Allegro, no return type declaration, should we coerce? Err bitreich.org 70 i-(defmacro %defcallback (name rettype arg-names arg-types body-form) Err bitreich.org 70 i- (declare (ignore rettype)) Err bitreich.org 70 i- (with-unique-names (cb-sym) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (defun-c-callback ,cb-sym Err bitreich.org 70 i- ,(mapcar (lambda (sym type) (list sym (convert-foreign-type type))) Err bitreich.org 70 i- arg-names arg-types) Err bitreich.org 70 i- ,body-form) Err bitreich.org 70 i- (setf (get ',name 'callback-ptr) Err bitreich.org 70 i- (get-callback-procinst ',cb-sym))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Just continue to use the plist for now even though this really Err bitreich.org 70 i-;;; should use a *CALLBACKS* hash table and not define the callbacks Err bitreich.org 70 i-;;; as gensyms. Someone with access to Corman should update this. Err bitreich.org 70 i-(defun %callback (name) Err bitreich.org 70 i- (get name 'callback-ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Loading Foreign Libraries Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %load-foreign-library (name) Err bitreich.org 70 i- "Load the foreign library NAME." Err bitreich.org 70 i- (ct::get-dll-record name)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %close-foreign-library (name) Err bitreich.org 70 i- "Close the foreign library NAME." Err bitreich.org 70 i- (error "Not implemented.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun native-namestring (pathname) Err bitreich.org 70 i- (namestring pathname)) ; TODO: confirm Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Foreign Globals Err bitreich.org 70 i- Err bitreich.org 70 i-;;; FFI to GetProcAddress from the Win32 API. Err bitreich.org 70 i-;;; "The GetProcAddress function retrieves the address of an exported Err bitreich.org 70 i-;;; function or variable from the specified dynamic-link library (DLL)." Err bitreich.org 70 i-(defun-dll get-proc-address Err bitreich.org 70 i- ((module HMODULE) Err bitreich.org 70 i- (name LPCSTR)) Err bitreich.org 70 i- :return-type FARPROC Err bitreich.org 70 i- :library-name "Kernel32.dll" Err bitreich.org 70 i- :entry-name "GetProcAddress" Err bitreich.org 70 i- :linkage-type :pascal) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-symbol-pointer (name) Err bitreich.org 70 i- "Returns a pointer to a foreign symbol NAME." Err bitreich.org 70 i- (let ((str (lisp-string-to-c-string name))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (dolist (dll ct::*dlls-loaded*) Err bitreich.org 70 i- (let ((ptr (get-proc-address Err bitreich.org 70 i- (int-to-foreign-ptr (ct::dll-record-handle dll)) Err bitreich.org 70 i- str))) Err bitreich.org 70 i- (when (not (cpointer-null ptr)) Err bitreich.org 70 i- (return ptr)))) Err bitreich.org 70 i- (free str)))) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/src/cffi-ecl.lisp b/3rdparties/software/cffi_0.20.0/src/cffi-ecl.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/src/cffi-ecl.lisp.gph bitreich.org 70 i@@ -1,454 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; cffi-ecl.lisp --- ECL backend for CFFI. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Administrivia Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:cffi-sys Err bitreich.org 70 i- (:use #:common-lisp #:alexandria) Err bitreich.org 70 i- (:import-from #:si #:null-pointer-p) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- #:*cffi-ecl-method* Err bitreich.org 70 i- #:canonicalize-symbol-name-case Err bitreich.org 70 i- #:foreign-pointer Err bitreich.org 70 i- #:pointerp Err bitreich.org 70 i- #:pointer-eq Err bitreich.org 70 i- #:%foreign-alloc Err bitreich.org 70 i- #:foreign-free Err bitreich.org 70 i- #:with-foreign-pointer Err bitreich.org 70 i- #:null-pointer Err bitreich.org 70 i- #:null-pointer-p Err bitreich.org 70 i- #:inc-pointer Err bitreich.org 70 i- #:make-pointer Err bitreich.org 70 i- #:pointer-address Err bitreich.org 70 i- #:%mem-ref Err bitreich.org 70 i- #:%mem-set Err bitreich.org 70 i- #:%foreign-funcall Err bitreich.org 70 i- #:%foreign-funcall-pointer Err bitreich.org 70 i- #:%foreign-funcall-varargs Err bitreich.org 70 i- #:%foreign-funcall-pointer-varargs Err bitreich.org 70 i- #:%foreign-type-alignment Err bitreich.org 70 i- #:%foreign-type-size Err bitreich.org 70 i- #:%load-foreign-library Err bitreich.org 70 i- #:%close-foreign-library Err bitreich.org 70 i- #:native-namestring Err bitreich.org 70 i- #:make-shareable-byte-vector Err bitreich.org 70 i- #:with-pointer-to-vector-data Err bitreich.org 70 i- #:%defcallback Err bitreich.org 70 i- #:%callback Err bitreich.org 70 i- #:%foreign-symbol-pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-sys) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; ECL allows many ways of calling a foreign function, and also many Err bitreich.org 70 i-;;; ways of finding the pointer associated to a function name. They Err bitreich.org 70 i-;;; depend on whether the FFI relies on libffi or on the C/C++ compiler, Err bitreich.org 70 i-;;; and whether they use the shared library loader to locate symbols Err bitreich.org 70 i-;;; or they are linked by the linker. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; :DFFI Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; ECL uses libffi to call foreign functions. The only way to find out Err bitreich.org 70 i-;;; foreign symbols is by loading shared libraries and using dlopen() Err bitreich.org 70 i-;;; or similar. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; :DLOPEN Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; ECL compiles FFI code as C/C++ statements. The names are resolved Err bitreich.org 70 i-;;; at run time by the shared library loader every time the function Err bitreich.org 70 i-;;; is called Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; :C/C++ Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; ECL compiles FFI code as C/C++ statements, but the name resolution Err bitreich.org 70 i-;;; happens at link time. In this case you have to tell the ECL Err bitreich.org 70 i-;;; compiler which are the right ld-flags (c:*ld-flags*) to link in Err bitreich.org 70 i-;;; the library. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-(defvar *cffi-ecl-method* Err bitreich.org 70 i- #+dffi :dffi Err bitreich.org 70 i- #+(and dlopen (not dffi)) :dlopen Err bitreich.org 70 i- #-(or dffi dlopen) :c/c++ Err bitreich.org 70 i- "The type of code that CFFI generates for ECL: :DFFI when using the Err bitreich.org 70 i-dynamical foreign function interface; :DLOPEN when using C code and Err bitreich.org 70 i-dynamical references to symbols; :C/C++ for C/C++ code with static Err bitreich.org 70 i-references to symbols.") Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Mis-features Err bitreich.org 70 i- Err bitreich.org 70 i-#-long-long Err bitreich.org 70 i-(pushnew 'no-long-long *features*) Err bitreich.org 70 i-(pushnew 'flat-namespace *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Symbol Case Err bitreich.org 70 i- Err bitreich.org 70 i-(defun canonicalize-symbol-name-case (name) Err bitreich.org 70 i- (declare (string name)) Err bitreich.org 70 i- (string-upcase name)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Allocation Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-alloc (size) Err bitreich.org 70 i- "Allocate SIZE bytes of foreign-addressable memory." Err bitreich.org 70 i- (si:allocate-foreign-data :void size)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-free (ptr) Err bitreich.org 70 i- "Free a pointer PTR allocated by FOREIGN-ALLOC." Err bitreich.org 70 i- (si:free-foreign-data ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-foreign-pointer ((var size &optional size-var) &body body) Err bitreich.org 70 i- "Bind VAR to SIZE bytes of foreign memory during BODY. The Err bitreich.org 70 i-pointer in VAR is invalid beyond the dynamic extent of BODY, and Err bitreich.org 70 i-may be stack-allocated if supported by the implementation. If Err bitreich.org 70 i-SIZE-VAR is supplied, it will be bound to SIZE during BODY." Err bitreich.org 70 i- (unless size-var Err bitreich.org 70 i- (setf size-var (gensym "SIZE"))) Err bitreich.org 70 i- `(let* ((,size-var ,size) Err bitreich.org 70 i- (,var (%foreign-alloc ,size-var))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn ,@body) Err bitreich.org 70 i- (foreign-free ,var)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Misc. Pointer Operations Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype foreign-pointer () Err bitreich.org 70 i- 'si:foreign-data) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun null-pointer () Err bitreich.org 70 i- "Construct and return a null pointer." Err bitreich.org 70 i- (si:allocate-foreign-data :void 0)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun inc-pointer (ptr offset) Err bitreich.org 70 i- "Return a pointer OFFSET bytes past PTR." Err bitreich.org 70 i- (ffi:make-pointer (+ (ffi:pointer-address ptr) offset) :void)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun pointerp (ptr) Err bitreich.org 70 i- "Return true if PTR is a foreign pointer." Err bitreich.org 70 i- (typep ptr 'si:foreign-data)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun pointer-eq (ptr1 ptr2) Err bitreich.org 70 i- "Return true if PTR1 and PTR2 point to the same address." Err bitreich.org 70 i- (= (ffi:pointer-address ptr1) (ffi:pointer-address ptr2))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-pointer (address) Err bitreich.org 70 i- "Return a pointer pointing to ADDRESS." Err bitreich.org 70 i- (ffi:make-pointer address :void)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun pointer-address (ptr) Err bitreich.org 70 i- "Return the address pointed to by PTR." Err bitreich.org 70 i- (ffi:pointer-address ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Shareable Vectors Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; This interface is very experimental. WITH-POINTER-TO-VECTOR-DATA Err bitreich.org 70 i-;;; should be defined to perform a copy-in/copy-out if the Lisp Err bitreich.org 70 i-;;; implementation can't do this. Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-shareable-byte-vector (size) Err bitreich.org 70 i- "Create a Lisp vector of SIZE bytes that can passed to Err bitreich.org 70 i-WITH-POINTER-TO-VECTOR-DATA." Err bitreich.org 70 i- (make-array size :element-type '(unsigned-byte 8))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-pointer-to-vector-data ((ptr-var vector) &body body) Err bitreich.org 70 i- "Bind PTR-VAR to a foreign pointer to the data in VECTOR." Err bitreich.org 70 i- `(let ((,ptr-var (si:make-foreign-data-from-array ,vector))) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Type Operations Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +translation-table+ Err bitreich.org 70 i- '((:char :byte "char") Err bitreich.org 70 i- (:unsigned-char :unsigned-byte "unsigned char") Err bitreich.org 70 i- (:short :short "short") Err bitreich.org 70 i- (:unsigned-short :unsigned-short "unsigned short") Err bitreich.org 70 i- (:int :int "int") Err bitreich.org 70 i- (:unsigned-int :unsigned-int "unsigned int") Err bitreich.org 70 i- (:long :long "long") Err bitreich.org 70 i- (:unsigned-long :unsigned-long "unsigned long") Err bitreich.org 70 i- #+long-long Err bitreich.org 70 i- (:long-long :long-long "long long") Err bitreich.org 70 i- #+long-long Err bitreich.org 70 i- (:unsigned-long-long :unsigned-long-long "unsigned long long") Err bitreich.org 70 i- (:float :float "float") Err bitreich.org 70 i- (:double :double "double") Err bitreich.org 70 i- (:pointer :pointer-void "void*") Err bitreich.org 70 i- (:void :void "void"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun cffi-type->ecl-type (type-keyword) Err bitreich.org 70 i- "Convert a CFFI type keyword to an ECL type keyword." Err bitreich.org 70 i- (or (second (find type-keyword +translation-table+ :key #'first)) Err bitreich.org 70 i- (error "~S is not a valid CFFI type" type-keyword))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ecl-type->c-type (type-keyword) Err bitreich.org 70 i- "Convert a CFFI type keyword to an valid C type keyword." Err bitreich.org 70 i- (or (third (find type-keyword +translation-table+ :key #'second)) Err bitreich.org 70 i- (error "~S is not a valid CFFI type" type-keyword))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-type-size (type-keyword) Err bitreich.org 70 i- "Return the size in bytes of a foreign type." Err bitreich.org 70 i- (nth-value 0 (ffi:size-of-foreign-type Err bitreich.org 70 i- (cffi-type->ecl-type type-keyword)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-type-alignment (type-keyword) Err bitreich.org 70 i- "Return the alignment in bytes of a foreign type." Err bitreich.org 70 i- (nth-value 1 (ffi:size-of-foreign-type Err bitreich.org 70 i- (cffi-type->ecl-type type-keyword)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Dereferencing Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %mem-ref (ptr type &optional (offset 0)) Err bitreich.org 70 i- "Dereference an object of TYPE at OFFSET bytes from PTR." Err bitreich.org 70 i- (let* ((type (cffi-type->ecl-type type)) Err bitreich.org 70 i- (type-size (ffi:size-of-foreign-type type))) Err bitreich.org 70 i- (si:foreign-data-ref-elt Err bitreich.org 70 i- (si:foreign-data-recast ptr (+ offset type-size) :void) offset type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %mem-set (value ptr type &optional (offset 0)) Err bitreich.org 70 i- "Set an object of TYPE at OFFSET bytes from PTR." Err bitreich.org 70 i- (let* ((type (cffi-type->ecl-type type)) Err bitreich.org 70 i- (type-size (ffi:size-of-foreign-type type))) Err bitreich.org 70 i- (si:foreign-data-set-elt Err bitreich.org 70 i- (si:foreign-data-recast ptr (+ offset type-size) :void) Err bitreich.org 70 i- offset type value))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Inline versions that use C expressions instead of function calls. Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter +mem-ref-strings+ Err bitreich.org 70 i- (loop for (cffi-type ecl-type c-string) in +translation-table+ Err bitreich.org 70 i- for string = (format nil "*((~A *)(((char*)#0)+#1))" c-string) Err bitreich.org 70 i- collect (list cffi-type ecl-type string))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter +mem-set-strings+ Err bitreich.org 70 i- (loop for (cffi-type ecl-type c-string) in +translation-table+ Err bitreich.org 70 i- for string = (format nil "*((~A *)(((char*)#0)+#1))=#2" c-string) Err bitreich.org 70 i- collect (list cffi-type ecl-type string))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-compiler-macro %mem-ref (&whole whole ptr type &optional (offset 0)) Err bitreich.org 70 i- (if (and (constantp type) (constantp offset)) Err bitreich.org 70 i- (let ((record (assoc (eval type) +mem-ref-strings+))) Err bitreich.org 70 i- `(ffi:c-inline (,ptr ,offset) Err bitreich.org 70 i- (:pointer-void :cl-index) ; argument types Err bitreich.org 70 i- ,(second record) ; return type Err bitreich.org 70 i- ,(third record) ; the precomputed expansion Err bitreich.org 70 i- :one-liner t)) Err bitreich.org 70 i- whole)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-compiler-macro %mem-set (&whole whole value ptr type &optional (offset 0)) Err bitreich.org 70 i- (if (and (constantp type) (constantp offset)) Err bitreich.org 70 i- (let ((record (assoc (eval type) +mem-set-strings+))) Err bitreich.org 70 i- `(ffi:c-inline (,ptr ,offset ,value) ; arguments with type translated Err bitreich.org 70 i- (:pointer-void :cl-index ,(second record)) Err bitreich.org 70 i- :void ; does not return anything Err bitreich.org 70 i- ,(third record) ; precomputed expansion Err bitreich.org 70 i- :one-liner t)) Err bitreich.org 70 i- whole)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Calling Foreign Functions Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +ecl-inline-codes+ "#0,#1,#2,#3,#4,#5,#6,#7,#8,#9,#a,#b,#c,#d,#e,#f,#g,#h,#i,#j,#k,#l,#m,#n,#o,#p,#q,#r,#s,#t,#u,#v,#w,#x,#y,#z") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun c-inline-function-call (thing fixed-types types values return-type dynamic-call variadic) Err bitreich.org 70 i- (when dynamic-call Err bitreich.org 70 i- (when (stringp thing) Err bitreich.org 70 i- (setf thing `(%foreign-symbol-pointer ,thing nil))) Err bitreich.org 70 i- (push thing values) Err bitreich.org 70 i- (push :pointer-void types)) Err bitreich.org 70 i- (let* ((decl-args Err bitreich.org 70 i- (format nil "~{~A~^, ~}~A" Err bitreich.org 70 i- (mapcar #'ecl-type->c-type fixed-types) (if (null variadic) "" ", ..."))) Err bitreich.org 70 i- (call-args Err bitreich.org 70 i- (if dynamic-call Err bitreich.org 70 i- ;; #0 is already used in a cast (it is a function pointer) Err bitreich.org 70 i- (subseq +ecl-inline-codes+ 3 (max 3 (1- (* (length values) 3)))) Err bitreich.org 70 i- ;; #0 is not used, so we start from the beginning Err bitreich.org 70 i- (subseq +ecl-inline-codes+ 0 (max 0 (1- (* (length values) 3)))))) Err bitreich.org 70 i- (clines Err bitreich.org 70 i- (if dynamic-call Err bitreich.org 70 i- nil Err bitreich.org 70 i- (format nil "extern ~A ~A(~A);" Err bitreich.org 70 i- (ecl-type->c-type return-type) thing decl-args))) Err bitreich.org 70 i- (call-code Err bitreich.org 70 i- (if dynamic-call Err bitreich.org 70 i- (format nil "((~A (*)(~A))(#0))(~A)" Err bitreich.org 70 i- (ecl-type->c-type return-type) decl-args call-args) Err bitreich.org 70 i- (format nil "~A(~A)" thing call-args)))) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (ffi:clines ,@(ensure-list clines)) Err bitreich.org 70 i- (ffi:c-inline ,values ,types ,return-type ,call-code :one-liner t :side-effects t)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun dffi-function-pointer-call (pointer types values return-type) Err bitreich.org 70 i- (when (stringp pointer) Err bitreich.org 70 i- (setf pointer `(%foreign-symbol-pointer ,pointer nil))) Err bitreich.org 70 i- #-dffi Err bitreich.org 70 i- `(error "In interpreted code, attempted to call a foreign function~% ~A~%~ Err bitreich.org 70 i- but ECL was built without support for that." ,pointer) Err bitreich.org 70 i- #+dffi Err bitreich.org 70 i- `(si::call-cfun ,pointer ,return-type (list ,@types) (list ,@values))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-funcall-parse-args (args) Err bitreich.org 70 i- "Return three values, lists of arg types, values, and result type." Err bitreich.org 70 i- (let ((return-type :void)) Err bitreich.org 70 i- (loop for (type arg) on args by #'cddr Err bitreich.org 70 i- if arg collect (cffi-type->ecl-type type) into types Err bitreich.org 70 i- and collect arg into values Err bitreich.org 70 i- else do (setf return-type (cffi-type->ecl-type type)) Err bitreich.org 70 i- finally (return (values types values return-type))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %foreign-funcall (name args &key library convention) Err bitreich.org 70 i- "Call a foreign function." Err bitreich.org 70 i- (declare (ignore library convention)) Err bitreich.org 70 i- (multiple-value-bind (types values return-type) Err bitreich.org 70 i- (foreign-funcall-parse-args args) Err bitreich.org 70 i- `(ext:with-backend Err bitreich.org 70 i- :bytecodes Err bitreich.org 70 i- ,(dffi-function-pointer-call name types values return-type) Err bitreich.org 70 i- :c/c++ Err bitreich.org 70 i- ,(ecase *cffi-ecl-method* Err bitreich.org 70 i- (:dffi (dffi-function-pointer-call name types values return-type)) Err bitreich.org 70 i- (:dlopen (c-inline-function-call name types types values return-type t nil)) Err bitreich.org 70 i- (:c/c++ (c-inline-function-call name types types values return-type nil nil)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %foreign-funcall-pointer (pointer args &key convention) Err bitreich.org 70 i- "Funcall a pointer to a foreign function." Err bitreich.org 70 i- (declare (ignore convention)) Err bitreich.org 70 i- (multiple-value-bind (types values return-type) Err bitreich.org 70 i- (foreign-funcall-parse-args args) Err bitreich.org 70 i- `(ext:with-backend Err bitreich.org 70 i- :bytecodes Err bitreich.org 70 i- ,(dffi-function-pointer-call pointer types values return-type) Err bitreich.org 70 i- :c/c++ Err bitreich.org 70 i- ,(if (eq *cffi-ecl-method* :dffi) Err bitreich.org 70 i- (dffi-function-pointer-call pointer types values return-type) Err bitreich.org 70 i- (c-inline-function-call pointer types types values return-type t nil))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %foreign-funcall-varargs (name args varargs &key library convention) Err bitreich.org 70 i- (declare (ignore library convention)) Err bitreich.org 70 i- (multiple-value-bind (fixed-types fixed-values) Err bitreich.org 70 i- (foreign-funcall-parse-args args) Err bitreich.org 70 i- (multiple-value-bind (varargs-types varargs-values return-type) Err bitreich.org 70 i- (foreign-funcall-parse-args varargs) Err bitreich.org 70 i- (let ((all-types (append fixed-types varargs-types)) Err bitreich.org 70 i- (values (append fixed-values varargs-values))) Err bitreich.org 70 i- `(ext:with-backend Err bitreich.org 70 i- :bytecodes Err bitreich.org 70 i- ,(dffi-function-pointer-call name all-types values return-type) Err bitreich.org 70 i- :c/c++ Err bitreich.org 70 i- ,(ecase *cffi-ecl-method* Err bitreich.org 70 i- (:dffi (dffi-function-pointer-call name all-types values return-type)) Err bitreich.org 70 i- (:dlopen (c-inline-function-call name fixed-types all-types values return-type t t)) Err bitreich.org 70 i- (:c/c++ (c-inline-function-call name fixed-types all-types values return-type nil t)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %foreign-funcall-pointer-varargs (pointer args varargs &key convention) Err bitreich.org 70 i- (declare (ignore convention)) Err bitreich.org 70 i- (multiple-value-bind (fixed-types fixed-values) Err bitreich.org 70 i- (foreign-funcall-parse-args args) Err bitreich.org 70 i- (multiple-value-bind (varargs-types varargs-values return-type) Err bitreich.org 70 i- (foreign-funcall-parse-args varargs) Err bitreich.org 70 i- (let ((all-types (append fixed-types varargs-types)) Err bitreich.org 70 i- (values (append fixed-values varargs-values))) Err bitreich.org 70 i- `(ext:with-backend Err bitreich.org 70 i- :bytecodes Err bitreich.org 70 i- ,(dffi-function-pointer-call pointer all-types values return-type) Err bitreich.org 70 i- :c/c++ Err bitreich.org 70 i- ,(if (eq *cffi-ecl-method* :dffi) Err bitreich.org 70 i- (dffi-function-pointer-call pointer all-types values return-type) Err bitreich.org 70 i- (c-inline-function-call pointer fixed-types all-types values return-type t t))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Foreign Libraries Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %load-foreign-library (name path) Err bitreich.org 70 i- "Load a foreign library." Err bitreich.org 70 i- (declare (ignore name)) Err bitreich.org 70 i- #-dffi (error "LOAD-FOREIGN-LIBRARY requires ECL's DFFI support. Use ~ Err bitreich.org 70 i- FFI:LOAD-FOREIGN-LIBRARY with a constant argument instead.") Err bitreich.org 70 i- #+dffi Err bitreich.org 70 i- (handler-case (si:load-foreign-module path) Err bitreich.org 70 i- (file-error () Err bitreich.org 70 i- (error "file error while trying to load `~A'" path)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %close-foreign-library (handle) Err bitreich.org 70 i- "Close a foreign library." Err bitreich.org 70 i- (handler-case (si::unload-foreign-module handle) Err bitreich.org 70 i- (undefined-function () Err bitreich.org 70 i- (restart-case (error "Detected ECL prior to version 15.2.21. ~ Err bitreich.org 70 i- Function CFFI:CLOSE-FOREIGN-LIBRARY isn't implemented yet.") Err bitreich.org 70 i- (ignore () :report "Continue anyway (foreign library will remain opened)."))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun native-namestring (pathname) Err bitreich.org 70 i- (namestring pathname)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Callbacks Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Create a package to contain the symbols for callback functions. Err bitreich.org 70 i-;;; We want to redefine callbacks with the same symbol so the internal Err bitreich.org 70 i-;;; data structures are reused. Err bitreich.org 70 i-(defpackage #:cffi-callbacks Err bitreich.org 70 i- (:use)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *callbacks* (make-hash-table)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Intern a symbol in the CFFI-CALLBACKS package used to name the Err bitreich.org 70 i-;;; internal callback for NAME. Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (defun intern-callback (name) Err bitreich.org 70 i- (intern (format nil "~A::~A" Err bitreich.org 70 i- (if-let (package (symbol-package name)) Err bitreich.org 70 i- (package-name package) Err bitreich.org 70 i- "#") Err bitreich.org 70 i- (symbol-name name)) Err bitreich.org 70 i- '#:cffi-callbacks))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %defcallback (name rettype arg-names arg-types body Err bitreich.org 70 i- &key convention) Err bitreich.org 70 i- (declare (ignore convention)) Err bitreich.org 70 i- (let ((cb-name (intern-callback name)) Err bitreich.org 70 i- (cb-type #.(if (> ext:+ecl-version-number+ 160102) Err bitreich.org 70 i- :default :cdecl))) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (ffi:defcallback (,cb-name ,cb-type) Err bitreich.org 70 i- ,(cffi-type->ecl-type rettype) Err bitreich.org 70 i- ,(mapcar #'list arg-names Err bitreich.org 70 i- (mapcar #'cffi-type->ecl-type arg-types)) Err bitreich.org 70 i- ,body) Err bitreich.org 70 i- (setf (gethash ',name *callbacks*) ',cb-name)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %callback (name) Err bitreich.org 70 i- (multiple-value-bind (symbol winp) Err bitreich.org 70 i- (gethash name *callbacks*) Err bitreich.org 70 i- (unless winp Err bitreich.org 70 i- (error "Undefined callback: ~S" name)) Err bitreich.org 70 i- (ffi:callback symbol))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Foreign Globals Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-symbol-pointer (name library) Err bitreich.org 70 i- "Returns a pointer to a foreign symbol NAME." Err bitreich.org 70 i- (declare (ignore library)) Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (si:find-foreign-symbol (coerce name 'base-string) Err bitreich.org 70 i- :default :pointer-void 0) Err bitreich.org 70 i- (error (c) nil))) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/src/cffi-gcl.lisp b/3rdparties/software/cffi_0.20.0/src/cffi-gcl.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/src/cffi-gcl.lisp.gph bitreich.org 70 i@@ -1,313 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; cffi-gcl.lisp --- CFFI-SYS implementation for GNU Common Lisp. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-;;; GCL specific notes: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; On ELF systems, a library can be loaded with the help of this: Err bitreich.org 70 i-;;; http://www.copyleft.de/lisp/gcl-elf-loader.html Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Another way is to link the library when creating a new image: Err bitreich.org 70 i-;;; (compiler::link nil "new_image" "" "-lfoo") Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; As GCL's FFI is not dynamic, CFFI declarations will only work Err bitreich.org 70 i-;;; after compiled and loaded. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; *** this port is broken *** Err bitreich.org 70 i-;;; gcl doesn't compile the rest of CFFI anyway.. Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Administrivia Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:cffi-sys Err bitreich.org 70 i- (:use #:common-lisp #:alexandria) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- #:canonicalize-symbol-name-case Err bitreich.org 70 i- #:pointerp Err bitreich.org 70 i- #:%foreign-alloc Err bitreich.org 70 i- #:foreign-free Err bitreich.org 70 i- #:with-foreign-ptr Err bitreich.org 70 i- #:null-ptr Err bitreich.org 70 i- #:null-ptr-p Err bitreich.org 70 i- #:inc-ptr Err bitreich.org 70 i- #:%mem-ref Err bitreich.org 70 i- #:%mem-set Err bitreich.org 70 i- #:%foreign-funcall Err bitreich.org 70 i- #:%foreign-type-alignment Err bitreich.org 70 i- #:%foreign-type-size Err bitreich.org 70 i- #:%load-foreign-library Err bitreich.org 70 i- ;#:make-shareable-byte-vector Err bitreich.org 70 i- ;#:with-pointer-to-vector-data Err bitreich.org 70 i- #:foreign-var-ptr Err bitreich.org 70 i- #:make-callback)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-sys) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Mis-*features* Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (pushnew :cffi/no-foreign-funcall *features*)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Symbol case. Err bitreich.org 70 i- Err bitreich.org 70 i-(defun canonicalize-symbol-name-case (name) Err bitreich.org 70 i- (declare (string name)) Err bitreich.org 70 i- (string-upcase name)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Allocation Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Functions and macros for allocating foreign memory on the stack Err bitreich.org 70 i-;;; and on the heap. The main CFFI package defines macros that wrap Err bitreich.org 70 i-;;; FOREIGN-ALLOC and FOREIGN-FREE in UNWIND-PROTECT for the common Err bitreich.org 70 i-;;; usage when the memory has dynamic extent. Err bitreich.org 70 i- Err bitreich.org 70 i-(defentry %foreign-alloc (int) (int "malloc")) Err bitreich.org 70 i- Err bitreich.org 70 i-;(defun foreign-alloc (size) Err bitreich.org 70 i-; "Allocate SIZE bytes on the heap and return a pointer." Err bitreich.org 70 i-; (%foreign-alloc size)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defentry foreign-free (int) (void "free")) Err bitreich.org 70 i- Err bitreich.org 70 i-;(defun foreign-free (ptr) Err bitreich.org 70 i-; "Free a PTR allocated by FOREIGN-ALLOC." Err bitreich.org 70 i-; (%free ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-foreign-ptr ((var size &optional size-var) &body body) Err bitreich.org 70 i- "Bind VAR to SIZE bytes of foreign memory during BODY. The Err bitreich.org 70 i-pointer in VAR is invalid beyond the dynamic extent of BODY, and Err bitreich.org 70 i-may be stack-allocated if supported by the implementation. If Err bitreich.org 70 i-SIZE-VAR is supplied, it will be bound to SIZE during BODY." Err bitreich.org 70 i- (unless size-var Err bitreich.org 70 i- (setf size-var (gensym "SIZE"))) Err bitreich.org 70 i- `(let* ((,size-var ,size) Err bitreich.org 70 i- (,var (foreign-alloc ,size-var))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn ,@body) Err bitreich.org 70 i- (foreign-free ,var)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Misc. Pointer Operations Err bitreich.org 70 i- Err bitreich.org 70 i-(defun pointerp (ptr) Err bitreich.org 70 i- "Return true if PTR is a foreign pointer." Err bitreich.org 70 i- (integerp ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun null-ptr () Err bitreich.org 70 i- "Construct and return a null pointer." Err bitreich.org 70 i- 0) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun null-ptr-p (ptr) Err bitreich.org 70 i- "Return true if PTR is a null pointer." Err bitreich.org 70 i- (= ptr 0)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun inc-ptr (ptr offset) Err bitreich.org 70 i- "Return a pointer OFFSET bytes past PTR." Err bitreich.org 70 i- (+ ptr offset)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Shareable Vectors Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; This interface is very experimental. WITH-POINTER-TO-VECTOR-DATA Err bitreich.org 70 i-;;; should be defined to perform a copy-in/copy-out if the Lisp Err bitreich.org 70 i-;;; implementation can't do this. Err bitreich.org 70 i- Err bitreich.org 70 i-;(defun make-shareable-byte-vector (size) Err bitreich.org 70 i-; "Create a Lisp vector of SIZE bytes that can passed to Err bitreich.org 70 i-;WITH-POINTER-TO-VECTOR-DATA." Err bitreich.org 70 i-; (make-array size :element-type '(unsigned-byte 8))) Err bitreich.org 70 i- Err bitreich.org 70 i-;(defmacro with-pointer-to-vector-data ((ptr-var vector) &body body) Err bitreich.org 70 i-; "Bind PTR-VAR to a foreign pointer to the data in VECTOR." Err bitreich.org 70 i-; `(ccl:with-pointer-to-ivector (,ptr-var ,vector) Err bitreich.org 70 i-; ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Dereferencing Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro define-mem-ref/set (type gcl-type &optional c-name) Err bitreich.org 70 i- (unless c-name Err bitreich.org 70 i- (setq c-name (substitute #\_ #\Space type))) Err bitreich.org 70 i- (let ((ref-fn (concatenate 'string "ref_" c-name)) Err bitreich.org 70 i- (set-fn (concatenate 'string "set_" c-name))) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- ;; ref Err bitreich.org 70 i- (defcfun ,(format nil "~A ~A(~A *ptr)" type ref-fn type) Err bitreich.org 70 i- 0 "return *ptr;") Err bitreich.org 70 i- (defentry ,(intern (string-upcase (substitute #\- #\_ ref-fn))) Err bitreich.org 70 i- (int) (,gcl-type ,ref-fn)) Err bitreich.org 70 i- ;; set Err bitreich.org 70 i- (defcfun ,(format nil "void ~A(~A *ptr, ~A value)" set-fn type type) Err bitreich.org 70 i- 0 "*ptr = value;") Err bitreich.org 70 i- (defentry ,(intern (string-upcase (substitute #\- #\_ set-fn))) Err bitreich.org 70 i- (int ,gcl-type) (void ,set-fn))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-mem-ref/set "char" char) Err bitreich.org 70 i-(define-mem-ref/set "unsigned char" char) Err bitreich.org 70 i-(define-mem-ref/set "short" int) Err bitreich.org 70 i-(define-mem-ref/set "unsigned short" int) Err bitreich.org 70 i-(define-mem-ref/set "int" int) Err bitreich.org 70 i-(define-mem-ref/set "unsigned int" int) Err bitreich.org 70 i-(define-mem-ref/set "long" int) Err bitreich.org 70 i-(define-mem-ref/set "unsigned long" int) Err bitreich.org 70 i-(define-mem-ref/set "float" float) Err bitreich.org 70 i-(define-mem-ref/set "double" double) Err bitreich.org 70 i-(define-mem-ref/set "void *" int "ptr") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %mem-ref (ptr type &optional (offset 0)) Err bitreich.org 70 i- "Dereference an object of TYPE at OFFSET bytes from PTR." Err bitreich.org 70 i- (unless (zerop offset) Err bitreich.org 70 i- (incf ptr offset)) Err bitreich.org 70 i- (ecase type Err bitreich.org 70 i- (:char (ref-char ptr)) Err bitreich.org 70 i- (:unsigned-char (ref-unsigned-char ptr)) Err bitreich.org 70 i- (:short (ref-short ptr)) Err bitreich.org 70 i- (:unsigned-short (ref-unsigned-short ptr)) Err bitreich.org 70 i- (:int (ref-int ptr)) Err bitreich.org 70 i- (:unsigned-int (ref-unsigned-int ptr)) Err bitreich.org 70 i- (:long (ref-long ptr)) Err bitreich.org 70 i- (:unsigned-long (ref-unsigned-long ptr)) Err bitreich.org 70 i- (:float (ref-float ptr)) Err bitreich.org 70 i- (:double (ref-double ptr)) Err bitreich.org 70 i- (:pointer (ref-ptr ptr)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %mem-set (value ptr type &optional (offset 0)) Err bitreich.org 70 i- (unless (zerop offset) Err bitreich.org 70 i- (incf ptr offset)) Err bitreich.org 70 i- (ecase type Err bitreich.org 70 i- (:char (set-char ptr value)) Err bitreich.org 70 i- (:unsigned-char (set-unsigned-char ptr value)) Err bitreich.org 70 i- (:short (set-short ptr value)) Err bitreich.org 70 i- (:unsigned-short (set-unsigned-short ptr value)) Err bitreich.org 70 i- (:int (set-int ptr value)) Err bitreich.org 70 i- (:unsigned-int (set-unsigned-int ptr value)) Err bitreich.org 70 i- (:long (set-long ptr value)) Err bitreich.org 70 i- (:unsigned-long (set-unsigned-long ptr value)) Err bitreich.org 70 i- (:float (set-float ptr value)) Err bitreich.org 70 i- (:double (set-double ptr value)) Err bitreich.org 70 i- (:pointer (set-ptr ptr value))) Err bitreich.org 70 i- value) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Calling Foreign Functions Err bitreich.org 70 i- Err bitreich.org 70 i-;; TODO: figure out if these type conversions make any sense... Err bitreich.org 70 i-(defun convert-foreign-type (type-keyword) Err bitreich.org 70 i- "Convert a CFFI type keyword to a GCL type." Err bitreich.org 70 i- (ecase type-keyword Err bitreich.org 70 i- (:char 'char) Err bitreich.org 70 i- (:unsigned-char 'char) Err bitreich.org 70 i- (:short 'int) Err bitreich.org 70 i- (:unsigned-short 'int) Err bitreich.org 70 i- (:int 'int) Err bitreich.org 70 i- (:unsigned-int 'int) Err bitreich.org 70 i- (:long 'int) Err bitreich.org 70 i- (:unsigned-long 'int) Err bitreich.org 70 i- (:float 'float) Err bitreich.org 70 i- (:double 'double) Err bitreich.org 70 i- (:pointer 'int) Err bitreich.org 70 i- (:void 'void))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter +cffi-types+ Err bitreich.org 70 i- '(:char :unsigned-char :short :unsigned-short :int :unsigned-int Err bitreich.org 70 i- :long :unsigned-long :float :double :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "int size_of(int type)" 0 Err bitreich.org 70 i- "switch (type) { Err bitreich.org 70 i- case 0: return sizeof(char); Err bitreich.org 70 i- case 1: return sizeof(unsigned char); Err bitreich.org 70 i- case 2: return sizeof(short); Err bitreich.org 70 i- case 3: return sizeof(unsigned short); Err bitreich.org 70 i- case 4: return sizeof(int); Err bitreich.org 70 i- case 5: return sizeof(unsigned int); Err bitreich.org 70 i- case 6: return sizeof(long); Err bitreich.org 70 i- case 7: return sizeof(unsigned long); Err bitreich.org 70 i- case 8: return sizeof(float); Err bitreich.org 70 i- case 9: return sizeof(double); Err bitreich.org 70 i- case 10: return sizeof(void *); Err bitreich.org 70 i- default: return -1; Err bitreich.org 70 i- }") Err bitreich.org 70 i- Err bitreich.org 70 i-(defentry size-of (int) (int "size_of")) Err bitreich.org 70 i- Err bitreich.org 70 i-;; TODO: all this is doable inside the defcfun; figure that out.. Err bitreich.org 70 i-(defun %foreign-type-size (type-keyword) Err bitreich.org 70 i- "Return the size in bytes of a foreign type." Err bitreich.org 70 i- (size-of (position type-keyword +cffi-types+))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "int align_of(int type)" 0 Err bitreich.org 70 i- "switch (type) { Err bitreich.org 70 i- case 0: return __alignof__(char); Err bitreich.org 70 i- case 1: return __alignof__(unsigned char); Err bitreich.org 70 i- case 2: return __alignof__(short); Err bitreich.org 70 i- case 3: return __alignof__(unsigned short); Err bitreich.org 70 i- case 4: return __alignof__(int); Err bitreich.org 70 i- case 5: return __alignof__(unsigned int); Err bitreich.org 70 i- case 6: return __alignof__(long); Err bitreich.org 70 i- case 7: return __alignof__(unsigned long); Err bitreich.org 70 i- case 8: return __alignof__(float); Err bitreich.org 70 i- case 9: return __alignof__(double); Err bitreich.org 70 i- case 10: return __alignof__(void *); Err bitreich.org 70 i- default: return -1; Err bitreich.org 70 i- }") Err bitreich.org 70 i- Err bitreich.org 70 i-(defentry align-of (int) (int "align_of")) Err bitreich.org 70 i- Err bitreich.org 70 i-;; TODO: like %foreign-type-size Err bitreich.org 70 i-(defun %foreign-type-alignment (type-keyword) Err bitreich.org 70 i- "Return the alignment in bytes of a foreign type." Err bitreich.org 70 i- (align-of (position type-keyword +cffi-types+))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+ignore Err bitreich.org 70 i-(defun convert-external-name (name) Err bitreich.org 70 i- "Add an underscore to NAME if necessary for the ABI." Err bitreich.org 70 i- #+darwinppc-target (concatenate 'string "_" name) Err bitreich.org 70 i- #-darwinppc-target name) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %foreign-funcall (function-name &rest args) Err bitreich.org 70 i- "Perform a foreign function all, document it more later." Err bitreich.org 70 i- `(format t "~&;; Calling ~A with args ~S.~%" ,name ',args)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun defcfun-helper-forms (name rettype args types) Err bitreich.org 70 i- "Return 2 values for DEFCFUN. A prelude form and a caller form." Err bitreich.org 70 i- (let ((ff-name (intern (format nil "%foreign-function/TildeA:~A" name)))) Err bitreich.org 70 i- (values Err bitreich.org 70 i- `(defentry ,ff-name ,(mapcar #'convert-foreign-type types) Err bitreich.org 70 i- (,(convert-foreign-type rettype) ,name)) Err bitreich.org 70 i- `(,ff-name ,@args)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Callbacks Err bitreich.org 70 i- Err bitreich.org 70 i-;;; XXX unimplemented Err bitreich.org 70 i-(defmacro make-callback (name rettype arg-names arg-types body-form) Err bitreich.org 70 i- 0) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Loading Foreign Libraries Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %load-foreign-library (name) Err bitreich.org 70 i- "_Won't_ load the foreign library NAME." Err bitreich.org 70 i- (declare (ignore name))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Foreign Globals Err bitreich.org 70 i- Err bitreich.org 70 i-;;; XXX unimplemented Err bitreich.org 70 i-(defmacro foreign-var-ptr (name) Err bitreich.org 70 i- "Return a pointer pointing to the foreign symbol NAME." Err bitreich.org 70 i- 0) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/src/cffi-lispworks.lisp b/3rdparties/software/cffi_0.20.0/src/cffi-lispworks.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/src/cffi-lispworks.lisp.gph bitreich.org 70 i@@ -1,417 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; cffi-lispworks.lisp --- Lispworks CFFI-SYS implementation. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Administrivia Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:cffi-sys Err bitreich.org 70 i- (:use #:cl #:alexandria) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- #:canonicalize-symbol-name-case Err bitreich.org 70 i- #:foreign-pointer Err bitreich.org 70 i- #:pointerp Err bitreich.org 70 i- #:pointer-eq Err bitreich.org 70 i- #:null-pointer Err bitreich.org 70 i- #:null-pointer-p Err bitreich.org 70 i- #:inc-pointer Err bitreich.org 70 i- #:make-pointer Err bitreich.org 70 i- #:pointer-address Err bitreich.org 70 i- #:%foreign-alloc Err bitreich.org 70 i- #:foreign-free Err bitreich.org 70 i- #:with-foreign-pointer Err bitreich.org 70 i- #:%foreign-funcall Err bitreich.org 70 i- #:%foreign-funcall-pointer Err bitreich.org 70 i- #:%foreign-type-alignment Err bitreich.org 70 i- #:%foreign-type-size Err bitreich.org 70 i- #:%load-foreign-library Err bitreich.org 70 i- #:%close-foreign-library Err bitreich.org 70 i- #:native-namestring Err bitreich.org 70 i- #:%mem-ref Err bitreich.org 70 i- #:%mem-set Err bitreich.org 70 i- #:make-shareable-byte-vector Err bitreich.org 70 i- #:with-pointer-to-vector-data Err bitreich.org 70 i- #:%foreign-symbol-pointer Err bitreich.org 70 i- #:defcfun-helper-forms Err bitreich.org 70 i- #:%defcallback Err bitreich.org 70 i- #:%callback)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-sys) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Misfeatures Err bitreich.org 70 i- Err bitreich.org 70 i-#-lispworks-64bit (pushnew 'no-long-long *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Symbol Case Err bitreich.org 70 i- Err bitreich.org 70 i-(defun canonicalize-symbol-name-case (name) Err bitreich.org 70 i- (declare (string name)) Err bitreich.org 70 i- (string-upcase name)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Basic Pointer Operations Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype foreign-pointer () Err bitreich.org 70 i- 'fli::pointer) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun pointerp (ptr) Err bitreich.org 70 i- "Return true if PTR is a foreign pointer." Err bitreich.org 70 i- (fli:pointerp ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun pointer-eq (ptr1 ptr2) Err bitreich.org 70 i- "Return true if PTR1 and PTR2 point to the same address." Err bitreich.org 70 i- (fli:pointer-eq ptr1 ptr2)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; We use FLI:MAKE-POINTER here instead of FLI:*NULL-POINTER* since old Err bitreich.org 70 i-;; versions of Lispworks don't seem to have it. Err bitreich.org 70 i-(defun null-pointer () Err bitreich.org 70 i- "Return a null foreign pointer." Err bitreich.org 70 i- (fli:make-pointer :address 0 :type :void)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun null-pointer-p (ptr) Err bitreich.org 70 i- "Return true if PTR is a null pointer." Err bitreich.org 70 i- (check-type ptr fli::pointer) Err bitreich.org 70 i- (fli:null-pointer-p ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; FLI:INCF-POINTER won't work on FLI pointers to :void so we Err bitreich.org 70 i-;; increment "manually." Err bitreich.org 70 i-(defun inc-pointer (ptr offset) Err bitreich.org 70 i- "Return a pointer OFFSET bytes past PTR." Err bitreich.org 70 i- (fli:make-pointer :type :void :address (+ (fli:pointer-address ptr) offset))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-pointer (address) Err bitreich.org 70 i- "Return a pointer pointing to ADDRESS." Err bitreich.org 70 i- (fli:make-pointer :type :void :address address)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun pointer-address (ptr) Err bitreich.org 70 i- "Return the address pointed to by PTR." Err bitreich.org 70 i- (fli:pointer-address ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Allocation Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-alloc (size) Err bitreich.org 70 i- "Allocate SIZE bytes of memory and return a pointer." Err bitreich.org 70 i- (fli:allocate-foreign-object :type :byte :nelems size)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-free (ptr) Err bitreich.org 70 i- "Free a pointer PTR allocated by FOREIGN-ALLOC." Err bitreich.org 70 i- (fli:free-foreign-object ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-foreign-pointer ((var size &optional size-var) &body body) Err bitreich.org 70 i- "Bind VAR to SIZE bytes of foreign memory during BODY. Both the Err bitreich.org 70 i-pointer in VAR and the memory it points to have dynamic extent and may Err bitreich.org 70 i-be stack allocated if supported by the implementation." Err bitreich.org 70 i- (unless size-var Err bitreich.org 70 i- (setf size-var (gensym "SIZE"))) Err bitreich.org 70 i- `(fli:with-dynamic-foreign-objects () Err bitreich.org 70 i- (let* ((,size-var ,size) Err bitreich.org 70 i- (,var (fli:alloca :type :byte :nelems ,size-var))) Err bitreich.org 70 i- ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Shareable Vectors Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-shareable-byte-vector (size) Err bitreich.org 70 i- "Create a shareable byte vector." Err bitreich.org 70 i- #+(or lispworks3 lispworks4 lispworks5.0) Err bitreich.org 70 i- (sys:in-static-area Err bitreich.org 70 i- (make-array size :element-type '(unsigned-byte 8))) Err bitreich.org 70 i- #-(or lispworks3 lispworks4 lispworks5.0) Err bitreich.org 70 i- (make-array size :element-type '(unsigned-byte 8) :allocation :static)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-pointer-to-vector-data ((ptr-var vector) &body body) Err bitreich.org 70 i- "Bind PTR-VAR to a pointer at the data in VECTOR." Err bitreich.org 70 i- `(fli:with-dynamic-lisp-array-pointer (,ptr-var ,vector) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Dereferencing Err bitreich.org 70 i- Err bitreich.org 70 i-(defun convert-foreign-type (cffi-type) Err bitreich.org 70 i- "Convert a CFFI type keyword to an FLI type." Err bitreich.org 70 i- (ecase cffi-type Err bitreich.org 70 i- (:char :byte) Err bitreich.org 70 i- (:unsigned-char '(:unsigned :byte)) Err bitreich.org 70 i- (:short :short) Err bitreich.org 70 i- (:unsigned-short '(:unsigned :short)) Err bitreich.org 70 i- (:int :int) Err bitreich.org 70 i- (:unsigned-int '(:unsigned :int)) Err bitreich.org 70 i- (:long :long) Err bitreich.org 70 i- (:unsigned-long '(:unsigned :long)) Err bitreich.org 70 i- ;; On 32-bit platforms, Lispworks 5.0+ supports long-long for Err bitreich.org 70 i- ;; DEFCFUN and FOREIGN-FUNCALL. Err bitreich.org 70 i- (:long-long '(:long :long)) Err bitreich.org 70 i- (:unsigned-long-long '(:unsigned :long :long)) Err bitreich.org 70 i- (:float :float) Err bitreich.org 70 i- (:double :double) Err bitreich.org 70 i- (:pointer :pointer) Err bitreich.org 70 i- (:void :void))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Convert a CFFI type keyword to a symbol suitable for passing to Err bitreich.org 70 i-;;; FLI:FOREIGN-TYPED-AREF. Err bitreich.org 70 i-#+#.(cl:if (cl:find-symbol "FOREIGN-TYPED-AREF" "FLI") '(and) '(or)) Err bitreich.org 70 i-(defun convert-foreign-typed-aref-type (cffi-type) Err bitreich.org 70 i- (ecase cffi-type Err bitreich.org 70 i- ((:char :short :int :long #+lispworks-64bit :long-long) Err bitreich.org 70 i- `(signed-byte ,(* 8 (%foreign-type-size cffi-type)))) Err bitreich.org 70 i- ((:unsigned-char :unsigned-short :unsigned-int :unsigned-long Err bitreich.org 70 i- #+lispworks-64bit :unsigned-long-long) Err bitreich.org 70 i- `(unsigned-byte ,(* 8 (%foreign-type-size cffi-type)))) Err bitreich.org 70 i- (:float 'single-float) Err bitreich.org 70 i- (:double 'double-float))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %mem-ref (ptr type &optional (offset 0)) Err bitreich.org 70 i- "Dereference an object of type TYPE OFFSET bytes from PTR." Err bitreich.org 70 i- (unless (zerop offset) Err bitreich.org 70 i- (setf ptr (inc-pointer ptr offset))) Err bitreich.org 70 i- (fli:dereference ptr :type (convert-foreign-type type))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Lispworks 5.0 on 64-bit platforms doesn't have [u]int64 support in Err bitreich.org 70 i-;; FOREIGN-TYPED-AREF. That was implemented in 5.1. Err bitreich.org 70 i-#+(and lispworks-64bit lispworks5.0) Err bitreich.org 70 i-(defun 64-bit-type-p (type) Err bitreich.org 70 i- (member type '(:long :unsigned-long :long-long :unsigned-long-long))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; In LispWorks versions where FLI:FOREIGN-TYPED-AREF is fbound, use Err bitreich.org 70 i-;;; it instead of FLI:DEREFERENCE in the optimizer for %MEM-REF. Err bitreich.org 70 i-#+#.(cl:if (cl:find-symbol "FOREIGN-TYPED-AREF" "FLI") '(and) '(or)) Err bitreich.org 70 i-(define-compiler-macro %mem-ref (&whole form ptr type &optional (off 0)) Err bitreich.org 70 i- (if (constantp type) Err bitreich.org 70 i- (let ((type (eval type))) Err bitreich.org 70 i- (if (or #+(and lispworks-64bit lispworks5.0) (64-bit-type-p type) Err bitreich.org 70 i- (eql type :pointer)) Err bitreich.org 70 i- (let ((fli-type (convert-foreign-type type)) Err bitreich.org 70 i- (ptr-form (if (eql off 0) ptr `(inc-pointer ,ptr ,off)))) Err bitreich.org 70 i- `(fli:dereference ,ptr-form :type ',fli-type)) Err bitreich.org 70 i- (let ((lisp-type (convert-foreign-typed-aref-type type))) Err bitreich.org 70 i- `(locally Err bitreich.org 70 i- (declare (optimize (speed 3) (safety 0))) Err bitreich.org 70 i- (fli:foreign-typed-aref ',lisp-type ,ptr (the fixnum ,off)))))) Err bitreich.org 70 i- form)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Open-code the call to FLI:DEREFERENCE when TYPE is constant at Err bitreich.org 70 i-;;; macroexpansion time, when FLI:FOREIGN-TYPED-AREF is not available. Err bitreich.org 70 i-#-#.(cl:if (cl:find-symbol "FOREIGN-TYPED-AREF" "FLI") '(and) '(or)) Err bitreich.org 70 i-(define-compiler-macro %mem-ref (&whole form ptr type &optional (off 0)) Err bitreich.org 70 i- (if (constantp type) Err bitreich.org 70 i- (let ((ptr-form (if (eql off 0) ptr `(inc-pointer ,ptr ,off))) Err bitreich.org 70 i- (type (convert-foreign-type (eval type)))) Err bitreich.org 70 i- `(fli:dereference ,ptr-form :type ',type)) Err bitreich.org 70 i- form)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %mem-set (value ptr type &optional (offset 0)) Err bitreich.org 70 i- "Set the object of TYPE at OFFSET bytes from PTR." Err bitreich.org 70 i- (unless (zerop offset) Err bitreich.org 70 i- (setf ptr (inc-pointer ptr offset))) Err bitreich.org 70 i- (setf (fli:dereference ptr :type (convert-foreign-type type)) value)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; In LispWorks versions where FLI:FOREIGN-TYPED-AREF is fbound, use Err bitreich.org 70 i-;;; it instead of FLI:DEREFERENCE in the optimizer for %MEM-SET. Err bitreich.org 70 i-#+#.(cl:if (cl:find-symbol "FOREIGN-TYPED-AREF" "FLI") '(and) '(or)) Err bitreich.org 70 i-(define-compiler-macro %mem-set (&whole form val ptr type &optional (off 0)) Err bitreich.org 70 i- (if (constantp type) Err bitreich.org 70 i- (once-only (val) Err bitreich.org 70 i- (let ((type (eval type))) Err bitreich.org 70 i- (if (or #+(and lispworks-64bit lispworks5.0) (64-bit-type-p type) Err bitreich.org 70 i- (eql type :pointer)) Err bitreich.org 70 i- (let ((fli-type (convert-foreign-type type)) Err bitreich.org 70 i- (ptr-form (if (eql off 0) ptr `(inc-pointer ,ptr ,off)))) Err bitreich.org 70 i- `(setf (fli:dereference ,ptr-form :type ',fli-type) ,val)) Err bitreich.org 70 i- (let ((lisp-type (convert-foreign-typed-aref-type type))) Err bitreich.org 70 i- `(locally Err bitreich.org 70 i- (declare (optimize (speed 3) (safety 0))) Err bitreich.org 70 i- (setf (fli:foreign-typed-aref ',lisp-type ,ptr Err bitreich.org 70 i- (the fixnum ,off)) Err bitreich.org 70 i- ,val)))))) Err bitreich.org 70 i- form)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Open-code the call to (SETF FLI:DEREFERENCE) when TYPE is constant Err bitreich.org 70 i-;;; at macroexpansion time. Err bitreich.org 70 i-#-#.(cl:if (cl:find-symbol "FOREIGN-TYPED-AREF" "FLI") '(and) '(or)) Err bitreich.org 70 i-(define-compiler-macro %mem-set (&whole form val ptr type &optional (off 0)) Err bitreich.org 70 i- (if (constantp type) Err bitreich.org 70 i- (once-only (val) Err bitreich.org 70 i- (let ((ptr-form (if (eql off 0) ptr `(inc-pointer ,ptr ,off))) Err bitreich.org 70 i- (type (convert-foreign-type (eval type)))) Err bitreich.org 70 i- `(setf (fli:dereference ,ptr-form :type ',type) ,val))) Err bitreich.org 70 i- form)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Foreign Type Operations Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-type-size (type) Err bitreich.org 70 i- "Return the size in bytes of a foreign type." Err bitreich.org 70 i- (fli:size-of (convert-foreign-type type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-type-alignment (type) Err bitreich.org 70 i- "Return the structure alignment in bytes of foreign type." Err bitreich.org 70 i- #+(and darwin harp::powerpc) Err bitreich.org 70 i- (when (eq type :double) Err bitreich.org 70 i- (return-from %foreign-type-alignment 8)) Err bitreich.org 70 i- ;; Override not necessary for the remaining types... Err bitreich.org 70 i- (fli:align-of (convert-foreign-type type))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Calling Foreign Functions Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *foreign-funcallable-cache* (make-hash-table :test 'equal) Err bitreich.org 70 i- "Caches foreign funcallables created by %FOREIGN-FUNCALL or Err bitreich.org 70 i-%FOREIGN-FUNCALL-POINTER. We only need to have one per each Err bitreich.org 70 i-signature.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-funcall-type-and-args (args) Err bitreich.org 70 i- "Returns a list of types, list of args and return type." Err bitreich.org 70 i- (let ((return-type :void)) Err bitreich.org 70 i- (loop for (type arg) on args by #'cddr Err bitreich.org 70 i- if arg collect (convert-foreign-type type) into types Err bitreich.org 70 i- and collect arg into fargs Err bitreich.org 70 i- else do (setf return-type (convert-foreign-type type)) Err bitreich.org 70 i- finally (return (values types fargs return-type))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun create-foreign-funcallable (types rettype convention) Err bitreich.org 70 i- "Creates a foreign funcallable for the signature TYPES -> RETTYPE." Err bitreich.org 70 i- #+mac (declare (ignore convention)) Err bitreich.org 70 i- (format t "~&Creating foreign funcallable for signature ~S -> ~S~%" Err bitreich.org 70 i- types rettype) Err bitreich.org 70 i- ;; yes, ugly, this most likely wants to be a top-level form... Err bitreich.org 70 i- (let ((internal-name (gensym))) Err bitreich.org 70 i- (funcall Err bitreich.org 70 i- (compile nil Err bitreich.org 70 i- `(lambda () Err bitreich.org 70 i- (fli:define-foreign-funcallable ,internal-name Err bitreich.org 70 i- ,(loop for type in types Err bitreich.org 70 i- collect (list (gensym) type)) Err bitreich.org 70 i- :result-type ,rettype Err bitreich.org 70 i- :language :ansi-c Err bitreich.org 70 i- ;; avoid warning about cdecl not being supported on mac Err bitreich.org 70 i- #-mac ,@(list :calling-convention convention))))) Err bitreich.org 70 i- internal-name)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-foreign-funcallable (types rettype convention) Err bitreich.org 70 i- "Returns a foreign funcallable for the signature TYPES -> RETTYPE - Err bitreich.org 70 i-either from the cache or newly created." Err bitreich.org 70 i- (let ((signature (cons rettype types))) Err bitreich.org 70 i- (or (gethash signature *foreign-funcallable-cache*) Err bitreich.org 70 i- ;; (SETF GETHASH) is supposed to be thread-safe Err bitreich.org 70 i- (setf (gethash signature *foreign-funcallable-cache*) Err bitreich.org 70 i- (create-foreign-funcallable types rettype convention))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %%foreign-funcall (foreign-function args convention) Err bitreich.org 70 i- "Does the actual work for %FOREIGN-FUNCALL-POINTER and %FOREIGN-FUNCALL. Err bitreich.org 70 i-Checks if a foreign funcallable which fits ARGS already exists and creates Err bitreich.org 70 i-and caches it if necessary. Finally calls it." Err bitreich.org 70 i- (multiple-value-bind (types fargs rettype) Err bitreich.org 70 i- (foreign-funcall-type-and-args args) Err bitreich.org 70 i- `(funcall (load-time-value Err bitreich.org 70 i- (get-foreign-funcallable ',types ',rettype ',convention)) Err bitreich.org 70 i- ,foreign-function ,@fargs))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %foreign-funcall (name args &key library convention) Err bitreich.org 70 i- "Calls a foreign function named NAME passing arguments ARGS." Err bitreich.org 70 i- `(%%foreign-funcall Err bitreich.org 70 i- (fli:make-pointer :symbol-name ,name Err bitreich.org 70 i- :module ',(if (eq library :default) nil library)) Err bitreich.org 70 i- ,args ,convention)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %foreign-funcall-pointer (ptr args &key convention) Err bitreich.org 70 i- "Calls a foreign function pointed at by PTR passing arguments ARGS." Err bitreich.org 70 i- `(%%foreign-funcall ,ptr ,args ,convention)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun defcfun-helper-forms (name lisp-name rettype args types options) Err bitreich.org 70 i- "Return 2 values for DEFCFUN. A prelude form and a caller form." Err bitreich.org 70 i- (let ((ff-name (intern (format nil "%cffi-foreign-function/~A" lisp-name)))) Err bitreich.org 70 i- (values Err bitreich.org 70 i- `(fli:define-foreign-function (,ff-name ,name :source) Err bitreich.org 70 i- ,(mapcar (lambda (ty) (list (gensym) (convert-foreign-type ty))) Err bitreich.org 70 i- types) Err bitreich.org 70 i- :result-type ,(convert-foreign-type rettype) Err bitreich.org 70 i- :language :ansi-c Err bitreich.org 70 i- :module ',(let ((lib (getf options :library))) Err bitreich.org 70 i- (if (eq lib :default) nil lib)) Err bitreich.org 70 i- ;; avoid warning about cdecl not being supported on mac platforms Err bitreich.org 70 i- #-mac ,@(list :calling-convention (getf options :convention))) Err bitreich.org 70 i- `(,ff-name ,@args)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Callbacks Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *callbacks* (make-hash-table)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Create a package to contain the symbols for callback functions. We Err bitreich.org 70 i-;;; want to redefine callbacks with the same symbol so the internal data Err bitreich.org 70 i-;;; structures are reused. Err bitreich.org 70 i-(defpackage #:cffi-callbacks Err bitreich.org 70 i- (:use)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Intern a symbol in the CFFI-CALLBACKS package used to name the internal Err bitreich.org 70 i-;;; callback for NAME. Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (defun intern-callback (name) Err bitreich.org 70 i- (intern (format nil "~A::~A" Err bitreich.org 70 i- (if-let (package (symbol-package name)) Err bitreich.org 70 i- (package-name package) Err bitreich.org 70 i- "#") Err bitreich.org 70 i- (symbol-name name)) Err bitreich.org 70 i- '#:cffi-callbacks))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %defcallback (name rettype arg-names arg-types body Err bitreich.org 70 i- &key convention) Err bitreich.org 70 i- (let ((cb-name (intern-callback name))) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (fli:define-foreign-callable Err bitreich.org 70 i- (,cb-name :encode :lisp Err bitreich.org 70 i- :result-type ,(convert-foreign-type rettype) Err bitreich.org 70 i- :calling-convention ,convention Err bitreich.org 70 i- :language :ansi-c Err bitreich.org 70 i- :no-check nil) Err bitreich.org 70 i- ,(mapcar (lambda (sym type) Err bitreich.org 70 i- (list sym (convert-foreign-type type))) Err bitreich.org 70 i- arg-names arg-types) Err bitreich.org 70 i- ,body) Err bitreich.org 70 i- (setf (gethash ',name *callbacks*) ',cb-name)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %callback (name) Err bitreich.org 70 i- (multiple-value-bind (symbol winp) Err bitreich.org 70 i- (gethash name *callbacks*) Err bitreich.org 70 i- (unless winp Err bitreich.org 70 i- (error "Undefined callback: ~S" name)) Err bitreich.org 70 i- (fli:make-pointer :symbol-name symbol :module :callbacks))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Loading Foreign Libraries Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %load-foreign-library (name path) Err bitreich.org 70 i- "Load the foreign library NAME." Err bitreich.org 70 i- (fli:register-module (or name path) :connection-style :immediate Err bitreich.org 70 i- :real-name path)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %close-foreign-library (name) Err bitreich.org 70 i- "Close the foreign library NAME." Err bitreich.org 70 i- (fli:disconnect-module name :remove t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun native-namestring (pathname) Err bitreich.org 70 i- (namestring pathname)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Foreign Globals Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-symbol-pointer (name library) Err bitreich.org 70 i- "Returns a pointer to a foreign symbol NAME." Err bitreich.org 70 i- (values Err bitreich.org 70 i- (ignore-errors Err bitreich.org 70 i- (fli:make-pointer :symbol-name name :type :void Err bitreich.org 70 i- :module (if (eq library :default) nil library))))) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/src/cffi-mcl.lisp b/3rdparties/software/cffi_0.20.0/src/cffi-mcl.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/src/cffi-mcl.lisp.gph bitreich.org 70 i@@ -1,396 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; cffi-mcl.lisp --- CFFI-SYS implementation for Digitool MCL. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright 2010 james.anderson@setf.de Err bitreich.org 70 i-;;; Copyright 2005-2006, James Bielman Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-;;; this is a stop-gap emulation. (at least) three things are not right Err bitreich.org 70 i-;;; - integer vector arguments are copied Err bitreich.org 70 i-;;; - return values are not typed Err bitreich.org 70 i-;;; - a shared library must be packaged as a framework and statically loaded Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; on the topic of shared libraries, see Err bitreich.org 70 i-;;; http://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/MachOTopics/1-Articles/loading_code.html Err bitreich.org 70 i-;;; which describes how to package a shared library as a framework. Err bitreich.org 70 i-;;; once a framework exists, load it as, eg. Err bitreich.org 70 i-;;; (ccl::add-framework-bundle "fftw.framework" :pathname "ccl:frameworks;" ) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Administrivia Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:cffi-sys Err bitreich.org 70 i- (:use #:common-lisp #:ccl) Err bitreich.org 70 i- (:import-from #:alexandria #:once-only #:if-let) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- #:canonicalize-symbol-name-case Err bitreich.org 70 i- #:foreign-pointer Err bitreich.org 70 i- #:pointerp ; ccl:pointerp Err bitreich.org 70 i- #:pointer-eq Err bitreich.org 70 i- #:%foreign-alloc Err bitreich.org 70 i- #:foreign-free Err bitreich.org 70 i- #:with-foreign-pointer Err bitreich.org 70 i- #:null-pointer Err bitreich.org 70 i- #:null-pointer-p Err bitreich.org 70 i- #:inc-pointer Err bitreich.org 70 i- #:make-pointer Err bitreich.org 70 i- #:pointer-address Err bitreich.org 70 i- #:%mem-ref Err bitreich.org 70 i- #:%mem-set Err bitreich.org 70 i- #:%foreign-funcall Err bitreich.org 70 i- #:%foreign-funcall-pointer Err bitreich.org 70 i- #:%foreign-type-alignment Err bitreich.org 70 i- #:%foreign-type-size Err bitreich.org 70 i- #:%load-foreign-library Err bitreich.org 70 i- #:%close-foreign-library Err bitreich.org 70 i- #:native-namestring Err bitreich.org 70 i- #:make-shareable-byte-vector Err bitreich.org 70 i- #:with-pointer-to-vector-data Err bitreich.org 70 i- #:%foreign-symbol-pointer Err bitreich.org 70 i- #:%defcallback Err bitreich.org 70 i- #:%callback)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-sys) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Misfeatures Err bitreich.org 70 i- Err bitreich.org 70 i-(pushnew 'flat-namespace *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Symbol Case Err bitreich.org 70 i- Err bitreich.org 70 i-(defun canonicalize-symbol-name-case (name) Err bitreich.org 70 i- (declare (string name)) Err bitreich.org 70 i- (string-upcase name)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Allocation Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Functions and macros for allocating foreign memory on the stack Err bitreich.org 70 i-;;; and on the heap. The main CFFI package defines macros that wrap Err bitreich.org 70 i-;;; FOREIGN-ALLOC and FOREIGN-FREE in UNWIND-PROTECT for the common Err bitreich.org 70 i-;;; usage when the memory has dynamic extent. Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-alloc (size) Err bitreich.org 70 i- "Allocate SIZE bytes on the heap and return a pointer." Err bitreich.org 70 i- (#_newPtr size)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-free (ptr) Err bitreich.org 70 i- "Free a PTR allocated by FOREIGN-ALLOC." Err bitreich.org 70 i- ;; TODO: Should we make this a dead macptr? Err bitreich.org 70 i- (#_disposePtr ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-foreign-pointer ((var size &optional size-var) &body body) Err bitreich.org 70 i- "Bind VAR to SIZE bytes of foreign memory during BODY. The Err bitreich.org 70 i-pointer in VAR is invalid beyond the dynamic extent of BODY, and Err bitreich.org 70 i-may be stack-allocated if supported by the implementation. If Err bitreich.org 70 i-SIZE-VAR is supplied, it will be bound to SIZE during BODY." Err bitreich.org 70 i- (unless size-var Err bitreich.org 70 i- (setf size-var (gensym "SIZE"))) Err bitreich.org 70 i- `(let ((,size-var ,size)) Err bitreich.org 70 i- (ccl:%stack-block ((,var ,size-var)) Err bitreich.org 70 i- ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Misc. Pointer Operations Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype foreign-pointer () Err bitreich.org 70 i- 'ccl:macptr) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun null-pointer () Err bitreich.org 70 i- "Construct and return a null pointer." Err bitreich.org 70 i- (ccl:%null-ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun null-pointer-p (ptr) Err bitreich.org 70 i- "Return true if PTR is a null pointer." Err bitreich.org 70 i- (ccl:%null-ptr-p ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun inc-pointer (ptr offset) Err bitreich.org 70 i- "Return a pointer OFFSET bytes past PTR." Err bitreich.org 70 i- (ccl:%inc-ptr ptr offset)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun pointer-eq (ptr1 ptr2) Err bitreich.org 70 i- "Return true if PTR1 and PTR2 point to the same address." Err bitreich.org 70 i- (ccl:%ptr-eql ptr1 ptr2)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-pointer (address) Err bitreich.org 70 i- "Return a pointer pointing to ADDRESS." Err bitreich.org 70 i- (ccl:%int-to-ptr address)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun pointer-address (ptr) Err bitreich.org 70 i- "Return the address pointed to by PTR." Err bitreich.org 70 i- (ccl:%ptr-to-int ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Shareable Vectors Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; This interface is very experimental. WITH-POINTER-TO-VECTOR-DATA Err bitreich.org 70 i-;;; should be defined to perform a copy-in/copy-out if the Lisp Err bitreich.org 70 i-;;; implementation can't do this. Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-shareable-byte-vector (size) Err bitreich.org 70 i- "Create a Lisp vector of SIZE bytes that can passed to Err bitreich.org 70 i-WITH-POINTER-TO-VECTOR-DATA." Err bitreich.org 70 i- (make-array size :element-type '(unsigned-byte 8))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; from openmcl::macros.lisp Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-pointer-to-vector-data ((ptr ivector) &body body) Err bitreich.org 70 i- "Bind PTR-VAR to a foreign pointer to the data in VECTOR." Err bitreich.org 70 i- (let* ((v (gensym)) Err bitreich.org 70 i- (l (gensym))) Err bitreich.org 70 i- `(let* ((,v ,ivector) Err bitreich.org 70 i- (,l (length ,v))) Err bitreich.org 70 i- (unless (typep ,v 'ccl::ivector) (ccl::report-bad-arg ,v 'ccl::ivector)) Err bitreich.org 70 i- ;;;!!! this, unless it's possible to suppress gc Err bitreich.org 70 i- (let ((,ptr (#_newPtr ,l))) Err bitreich.org 70 i- (unwind-protect (progn (ccl::%copy-ivector-to-ptr ,v 0 ,ptr 0 ,l) Err bitreich.org 70 i- (mutliple-value-prog1 Err bitreich.org 70 i- (locally ,@body) Err bitreich.org 70 i- (ccl::%copy-ptr-to-ivector ,ptr 0 ,v 0 ,l))) Err bitreich.org 70 i- (#_disposePtr ,ptr)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Dereferencing Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Define the %MEM-REF and %MEM-SET functions, as well as compiler Err bitreich.org 70 i-;;; macros that optimize the case where the type keyword is constant Err bitreich.org 70 i-;;; at compile-time. Err bitreich.org 70 i-(defmacro define-mem-accessors (&body pairs) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (defun %mem-ref (ptr type &optional (offset 0)) Err bitreich.org 70 i- (ecase type Err bitreich.org 70 i- ,@(loop for (keyword fn) in pairs Err bitreich.org 70 i- collect `(,keyword (,fn ptr offset))))) Err bitreich.org 70 i- (defun %mem-set (value ptr type &optional (offset 0)) Err bitreich.org 70 i- (ecase type Err bitreich.org 70 i- ,@(loop for (keyword fn) in pairs Err bitreich.org 70 i- collect `(,keyword (setf (,fn ptr offset) value))))) Err bitreich.org 70 i- (define-compiler-macro %mem-ref Err bitreich.org 70 i- (&whole form ptr type &optional (offset 0)) Err bitreich.org 70 i- (if (constantp type) Err bitreich.org 70 i- (ecase (eval type) Err bitreich.org 70 i- ,@(loop for (keyword fn) in pairs Err bitreich.org 70 i- collect `(,keyword `(,',fn ,ptr ,offset)))) Err bitreich.org 70 i- form)) Err bitreich.org 70 i- (define-compiler-macro %mem-set Err bitreich.org 70 i- (&whole form value ptr type &optional (offset 0)) Err bitreich.org 70 i- (if (constantp type) Err bitreich.org 70 i- (once-only (value) Err bitreich.org 70 i- (ecase (eval type) Err bitreich.org 70 i- ,@(loop for (keyword fn) in pairs Err bitreich.org 70 i- collect `(,keyword `(setf (,',fn ,ptr ,offset) Err bitreich.org 70 i- ,value))))) Err bitreich.org 70 i- form)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-mem-accessors Err bitreich.org 70 i- (:char %get-signed-byte) Err bitreich.org 70 i- (:unsigned-char %get-unsigned-byte) Err bitreich.org 70 i- (:short %get-signed-word) Err bitreich.org 70 i- (:unsigned-short %get-unsigned-word) Err bitreich.org 70 i- (:int %get-signed-long) Err bitreich.org 70 i- (:unsigned-int %get-unsigned-long) Err bitreich.org 70 i- (:long %get-signed-long) Err bitreich.org 70 i- (:unsigned-long %get-unsigned-long) Err bitreich.org 70 i- (:long-long ccl::%get-signed-long-long) Err bitreich.org 70 i- (:unsigned-long-long ccl::%get-unsigned-long-long) Err bitreich.org 70 i- (:float %get-single-float) Err bitreich.org 70 i- (:double %get-double-float) Err bitreich.org 70 i- (:pointer %get-ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ccl::%get-unsigned-long-long (ptr offset) Err bitreich.org 70 i- (let ((value 0) (bit 0)) Err bitreich.org 70 i- (dotimes (i 8) Err bitreich.org 70 i- (setf (ldb (byte 8 (shiftf bit (+ bit 8))) value) Err bitreich.org 70 i- (ccl:%get-unsigned-byte ptr (+ offset i)))) Err bitreich.org 70 i- value)) Err bitreich.org 70 i- Err bitreich.org 70 i-(setf (fdefinition 'ccl::%get-signed-long-long) Err bitreich.org 70 i- (fdefinition 'ccl::%get-unsigned-long-long)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun (setf ccl::%get-unsigned-long-long) (value ptr offset) Err bitreich.org 70 i- (let ((bit 0)) Err bitreich.org 70 i- (dotimes (i 8) Err bitreich.org 70 i- (setf (ccl:%get-unsigned-byte ptr (+ offset i)) Err bitreich.org 70 i- (ldb (byte 8 (shiftf bit (+ bit 8))) value)))) Err bitreich.org 70 i- ptr) Err bitreich.org 70 i- Err bitreich.org 70 i-(setf (fdefinition '(setf ccl::%get-signed-long-long)) Err bitreich.org 70 i- (fdefinition '(setf ccl::%get-unsigned-long-long))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Calling Foreign Functions Err bitreich.org 70 i- Err bitreich.org 70 i-(defun convert-foreign-type (type-keyword) Err bitreich.org 70 i- "Convert a CFFI type keyword to a ppc-ff-call type." Err bitreich.org 70 i- (ecase type-keyword Err bitreich.org 70 i- (:char :signed-byte) Err bitreich.org 70 i- (:unsigned-char :unsigned-byte) Err bitreich.org 70 i- (:short :signed-short) Err bitreich.org 70 i- (:unsigned-short :unsigned-short) Err bitreich.org 70 i- (:int :signed-fullword) Err bitreich.org 70 i- (:unsigned-int :unsigned-fullword) Err bitreich.org 70 i- (:long :signed-fullword) Err bitreich.org 70 i- (:unsigned-long :unsigned-fullword) Err bitreich.org 70 i- (:long-long :signed-doubleword) Err bitreich.org 70 i- (:unsigned-long-long :unsigned-doubleword) Err bitreich.org 70 i- (:float :single-float) Err bitreich.org 70 i- (:double :double-float) Err bitreich.org 70 i- (:pointer :address) Err bitreich.org 70 i- (:void :void))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ppc-ff-call-type=>mactype-name (type-keyword) Err bitreich.org 70 i- (ecase type-keyword Err bitreich.org 70 i- (:signed-byte :sint8) Err bitreich.org 70 i- (:unsigned-byte :uint8) Err bitreich.org 70 i- (:signed-short :sint16) Err bitreich.org 70 i- (:unsigned-short :uint16) Err bitreich.org 70 i- (:signed-halfword :sint16) Err bitreich.org 70 i- (:unsigned-halfword :uint16) Err bitreich.org 70 i- (:signed-fullword :sint32) Err bitreich.org 70 i- (:unsigned-fullword :uint32) Err bitreich.org 70 i- ;(:signed-doubleword :long-long) Err bitreich.org 70 i- ;(:unsigned-doubleword :unsigned-long-long) Err bitreich.org 70 i- (:single-float :single-float) Err bitreich.org 70 i- (:double-float :double-float) Err bitreich.org 70 i- (:address :pointer) Err bitreich.org 70 i- (:void :void))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-type-size (type-keyword) Err bitreich.org 70 i- "Return the size in bytes of a foreign type." Err bitreich.org 70 i- (case type-keyword Err bitreich.org 70 i- ((:long-long :unsigned-long-long) 8) Err bitreich.org 70 i- (t (ccl::mactype-record-size Err bitreich.org 70 i- (ccl::find-mactype Err bitreich.org 70 i- (ppc-ff-call-type=>mactype-name (convert-foreign-type type-keyword))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; There be dragons here. See the following thread for details: Err bitreich.org 70 i-;; http://clozure.com/pipermail/openmcl-devel/2005-June/002777.html Err bitreich.org 70 i-(defun %foreign-type-alignment (type-keyword) Err bitreich.org 70 i- "Return the alignment in bytes of a foreign type." Err bitreich.org 70 i- (case type-keyword Err bitreich.org 70 i- ((:long-long :unsigned-long-long) 4) Err bitreich.org 70 i- (t (ccl::mactype-record-size Err bitreich.org 70 i- (ccl::find-mactype Err bitreich.org 70 i- (ppc-ff-call-type=>mactype-name (convert-foreign-type type-keyword))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun convert-foreign-funcall-types (args) Err bitreich.org 70 i- "Convert foreign types for a call to FOREIGN-FUNCALL." Err bitreich.org 70 i- (loop for (type arg) on args by #'cddr Err bitreich.org 70 i- collect (convert-foreign-type type) Err bitreich.org 70 i- if arg collect arg)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun convert-external-name (name) Err bitreich.org 70 i- "no '_' is necessary here, the internal lookup operators handle it" Err bitreich.org 70 i- name) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %foreign-funcall (function-name args &key library convention) Err bitreich.org 70 i- "Perform a foreign function call, document it more later." Err bitreich.org 70 i- (declare (ignore library convention)) Err bitreich.org 70 i- `(ccl::ppc-ff-call Err bitreich.org 70 i- (ccl::macho-address ,(ccl::get-macho-entry-point (convert-external-name function-name))) Err bitreich.org 70 i- ,@(convert-foreign-funcall-types args))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %foreign-funcall-pointer (ptr args &key convention) Err bitreich.org 70 i- (declare (ignore convention)) Err bitreich.org 70 i- `(ccl::ppc-ff-call ,ptr ,@(convert-foreign-funcall-types args))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Callbacks Err bitreich.org 70 i- Err bitreich.org 70 i-;;; The *CALLBACKS* hash table maps CFFI callback names to OpenMCL "macptr" Err bitreich.org 70 i-;;; entry points. It is safe to store the pointers directly because Err bitreich.org 70 i-;;; OpenMCL will update the address of these pointers when a saved image Err bitreich.org 70 i-;;; is loaded (see CCL::RESTORE-PASCAL-FUNCTIONS). Err bitreich.org 70 i-(defvar *callbacks* (make-hash-table)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Create a package to contain the symbols for callback functions. We Err bitreich.org 70 i-;;; want to redefine callbacks with the same symbol so the internal data Err bitreich.org 70 i-;;; structures are reused. Err bitreich.org 70 i-(defpackage #:cffi-callbacks Err bitreich.org 70 i- (:use)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Intern a symbol in the CFFI-CALLBACKS package used to name the internal Err bitreich.org 70 i-;;; callback for NAME. Err bitreich.org 70 i-(defun intern-callback (name) Err bitreich.org 70 i- (intern (format nil "~A::~A" Err bitreich.org 70 i- (if-let (package (symbol-package name)) Err bitreich.org 70 i- (package-name package) Err bitreich.org 70 i- "#") Err bitreich.org 70 i- (symbol-name name)) Err bitreich.org 70 i- '#:cffi-callbacks)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %defcallback (name rettype arg-names arg-types body Err bitreich.org 70 i- &key convention) Err bitreich.org 70 i- (declare (ignore convention)) Err bitreich.org 70 i- (let ((cb-name (intern-callback name))) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (ccl::ppc-defpascal ,cb-name Err bitreich.org 70 i- (;; ? ,@(when (eq convention :stdcall) '(:discard-stack-args)) Err bitreich.org 70 i- ,@(mapcan (lambda (sym type) Err bitreich.org 70 i- (list (ppc-ff-call-type=>mactype-name (convert-foreign-type type)) sym)) Err bitreich.org 70 i- arg-names arg-types) Err bitreich.org 70 i- ,(ppc-ff-call-type=>mactype-name (convert-foreign-type rettype))) Err bitreich.org 70 i- ,body) Err bitreich.org 70 i- (setf (gethash ',name *callbacks*) (symbol-value ',cb-name))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %callback (name) Err bitreich.org 70 i- (or (gethash name *callbacks*) Err bitreich.org 70 i- (error "Undefined callback: ~S" name))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Loading Foreign Libraries Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %load-foreign-library (name path) Err bitreich.org 70 i- "Load the foreign library NAME." Err bitreich.org 70 i- (declare (ignore path)) Err bitreich.org 70 i- (setf name (string name)) Err bitreich.org 70 i- ;; for mcl emulate this wrt frameworks Err bitreich.org 70 i- (unless (and (> (length name) 10) Err bitreich.org 70 i- (string-equal name ".framework" :start1 (- (length name) 10))) Err bitreich.org 70 i- (setf name (concatenate 'string name ".framework"))) Err bitreich.org 70 i- ;; if the framework was not registered, add it Err bitreich.org 70 i- (unless (gethash name ccl::*framework-descriptors*) Err bitreich.org 70 i- (ccl::add-framework-bundle name :pathname "ccl:frameworks;" )) Err bitreich.org 70 i- (ccl::load-framework-bundle name)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %close-foreign-library (name) Err bitreich.org 70 i- "Close the foreign library NAME." Err bitreich.org 70 i- ;; for mcl do nothing Err bitreich.org 70 i- (declare (ignore name)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun native-namestring (pathname) Err bitreich.org 70 i- (ccl::posix-namestring (ccl:full-pathname pathname))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Foreign Globals Err bitreich.org 70 i- Err bitreich.org 70 i-(deftrap-inline "_findsymbol" Err bitreich.org 70 i- ((map :pointer) Err bitreich.org 70 i- (name :pointer)) Err bitreich.org 70 i- :pointer Err bitreich.org 70 i- ()) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-symbol-pointer (name library) Err bitreich.org 70 i- "Returns a pointer to a foreign symbol NAME." Err bitreich.org 70 i- (declare (ignore library)) Err bitreich.org 70 i- (ccl::macho-address Err bitreich.org 70 i- (ccl::get-macho-entry-point (convert-external-name name)))) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/src/cffi-mkcl.lisp b/3rdparties/software/cffi_0.20.0/src/cffi-mkcl.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/src/cffi-mkcl.lisp.gph bitreich.org 70 i@@ -1,342 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; cffi-mkcl.lisp --- MKCL backend for CFFI. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2010-2012, Jean-Claude Beaudoin Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Administrivia Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:cffi-sys Err bitreich.org 70 i- (:use #:common-lisp #:alexandria) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- #:canonicalize-symbol-name-case Err bitreich.org 70 i- #:foreign-pointer Err bitreich.org 70 i- #:pointerp Err bitreich.org 70 i- #:pointer-eq Err bitreich.org 70 i- #:null-pointer Err bitreich.org 70 i- #:null-pointer-p Err bitreich.org 70 i- #:inc-pointer Err bitreich.org 70 i- #:make-pointer Err bitreich.org 70 i- #:pointer-address Err bitreich.org 70 i- #:%foreign-alloc Err bitreich.org 70 i- #:foreign-free Err bitreich.org 70 i- #:with-foreign-pointer Err bitreich.org 70 i- #:%foreign-funcall Err bitreich.org 70 i- #:%foreign-funcall-pointer Err bitreich.org 70 i- #:%foreign-type-alignment Err bitreich.org 70 i- #:%foreign-type-size Err bitreich.org 70 i- #:%load-foreign-library Err bitreich.org 70 i- #:%close-foreign-library Err bitreich.org 70 i- #:native-namestring Err bitreich.org 70 i- #:%mem-ref Err bitreich.org 70 i- #:%mem-set Err bitreich.org 70 i- #:make-shareable-byte-vector Err bitreich.org 70 i- #:with-pointer-to-vector-data Err bitreich.org 70 i- #:%foreign-symbol-pointer Err bitreich.org 70 i- #:%defcallback Err bitreich.org 70 i- #:%callback)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-sys) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Mis-features Err bitreich.org 70 i- Err bitreich.org 70 i-(pushnew 'flat-namespace *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Symbol Case Err bitreich.org 70 i- Err bitreich.org 70 i-(defun canonicalize-symbol-name-case (name) Err bitreich.org 70 i- (declare (string name)) Err bitreich.org 70 i- (string-upcase name)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Allocation Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-alloc (size) Err bitreich.org 70 i- "Allocate SIZE bytes of foreign-addressable memory." Err bitreich.org 70 i- (si:allocate-foreign-data :void size)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-free (ptr) Err bitreich.org 70 i- "Free a pointer PTR allocated by FOREIGN-ALLOC." Err bitreich.org 70 i- (si:free-foreign-data ptr) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-foreign-pointer ((var size &optional size-var) &body body) Err bitreich.org 70 i- "Bind VAR to SIZE bytes of foreign memory during BODY. The Err bitreich.org 70 i-pointer in VAR is invalid beyond the dynamic extent of BODY, and Err bitreich.org 70 i-may be stack-allocated if supported by the implementation. If Err bitreich.org 70 i-SIZE-VAR is supplied, it will be bound to SIZE during BODY." Err bitreich.org 70 i- (unless size-var Err bitreich.org 70 i- (setf size-var (gensym "SIZE"))) Err bitreich.org 70 i- `(let* ((,size-var ,size) Err bitreich.org 70 i- (,var (%foreign-alloc ,size-var))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn ,@body) Err bitreich.org 70 i- (foreign-free ,var)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Misc. Pointer Operations Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype foreign-pointer () Err bitreich.org 70 i- 'si:foreign) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun null-pointer () Err bitreich.org 70 i- "Construct and return a null pointer." Err bitreich.org 70 i- (si:make-foreign-null-pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun null-pointer-p (ptr) Err bitreich.org 70 i- "Return true if PTR is a null pointer." Err bitreich.org 70 i- (si:null-pointer-p ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun inc-pointer (ptr offset) Err bitreich.org 70 i- "Return a pointer OFFSET bytes past PTR." Err bitreich.org 70 i- (ffi:make-pointer (+ (ffi:pointer-address ptr) offset) :void)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun pointerp (ptr) Err bitreich.org 70 i- "Return true if PTR is a foreign pointer." Err bitreich.org 70 i- ;;(typep ptr 'si:foreign) Err bitreich.org 70 i- (si:foreignp ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun pointer-eq (ptr1 ptr2) Err bitreich.org 70 i- "Return true if PTR1 and PTR2 point to the same address." Err bitreich.org 70 i- (= (ffi:pointer-address ptr1) (ffi:pointer-address ptr2))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-pointer (address) Err bitreich.org 70 i- "Return a pointer pointing to ADDRESS." Err bitreich.org 70 i- (ffi:make-pointer address :void)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun pointer-address (ptr) Err bitreich.org 70 i- "Return the address pointed to by PTR." Err bitreich.org 70 i- (ffi:pointer-address ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Shareable Vectors Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; This interface is very experimental. WITH-POINTER-TO-VECTOR-DATA Err bitreich.org 70 i-;;; should be defined to perform a copy-in/copy-out if the Lisp Err bitreich.org 70 i-;;; implementation can't do this. Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-shareable-byte-vector (size) Err bitreich.org 70 i- "Create a Lisp vector of SIZE bytes that can passed to Err bitreich.org 70 i-WITH-POINTER-TO-VECTOR-DATA." Err bitreich.org 70 i- (make-array size :element-type '(unsigned-byte 8))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; MKCL, built with the Boehm GC never moves allocated data, so this Err bitreich.org 70 i-;;; isn't nearly as hard to do. Err bitreich.org 70 i-(defun %vector-address (vector) Err bitreich.org 70 i- "Return the address of VECTOR's data." Err bitreich.org 70 i- (check-type vector (vector (unsigned-byte 8))) Err bitreich.org 70 i- #-mingw64 Err bitreich.org 70 i- (ffi:c-inline (vector) (object) Err bitreich.org 70 i- :unsigned-long Err bitreich.org 70 i- "(uintptr_t) #0->vector.self.b8" Err bitreich.org 70 i- :side-effects nil Err bitreich.org 70 i- :one-liner t) Err bitreich.org 70 i- #+mingw64 Err bitreich.org 70 i- (ffi:c-inline (vector) (object) Err bitreich.org 70 i- :unsigned-long-long Err bitreich.org 70 i- "(uintptr_t) #0->vector.self.b8" Err bitreich.org 70 i- :side-effects nil Err bitreich.org 70 i- :one-liner t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-pointer-to-vector-data ((ptr-var vector) &body body) Err bitreich.org 70 i- "Bind PTR-VAR to a foreign pointer to the data in VECTOR." Err bitreich.org 70 i- `(let ((,ptr-var (make-pointer (%vector-address ,vector)))) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Dereferencing Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %mem-ref (ptr type &optional (offset 0)) Err bitreich.org 70 i- "Dereference an object of TYPE at OFFSET bytes from PTR." Err bitreich.org 70 i- (let* ((type (cffi-type->mkcl-type type)) Err bitreich.org 70 i- (type-size (ffi:size-of-foreign-type type))) Err bitreich.org 70 i- (si:foreign-ref-elt Err bitreich.org 70 i- (si:foreign-recast ptr (+ offset type-size) :void) offset type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %mem-set (value ptr type &optional (offset 0)) Err bitreich.org 70 i- "Set an object of TYPE at OFFSET bytes from PTR." Err bitreich.org 70 i- (let* ((type (cffi-type->mkcl-type type)) Err bitreich.org 70 i- (type-size (ffi:size-of-foreign-type type))) Err bitreich.org 70 i- (si:foreign-set-elt Err bitreich.org 70 i- (si:foreign-recast ptr (+ offset type-size) :void) Err bitreich.org 70 i- offset type value))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Type Operations Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +translation-table+ Err bitreich.org 70 i- '((:char :byte "char") Err bitreich.org 70 i- (:unsigned-char :unsigned-byte "unsigned char") Err bitreich.org 70 i- (:short :short "short") Err bitreich.org 70 i- (:unsigned-short :unsigned-short "unsigned short") Err bitreich.org 70 i- (:int :int "int") Err bitreich.org 70 i- (:unsigned-int :unsigned-int "unsigned int") Err bitreich.org 70 i- (:long :long "long") Err bitreich.org 70 i- (:unsigned-long :unsigned-long "unsigned long") Err bitreich.org 70 i- (:long-long :long-long "long long") Err bitreich.org 70 i- (:unsigned-long-long :unsigned-long-long "unsigned long long") Err bitreich.org 70 i- (:float :float "float") Err bitreich.org 70 i- (:double :double "double") Err bitreich.org 70 i- (:pointer :pointer-void "void*") Err bitreich.org 70 i- (:void :void "void"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun cffi-type->mkcl-type (type-keyword) Err bitreich.org 70 i- "Convert a CFFI type keyword to an MKCL type keyword." Err bitreich.org 70 i- (or (second (find type-keyword +translation-table+ :key #'first)) Err bitreich.org 70 i- (error "~S is not a valid CFFI type" type-keyword))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun mkcl-type->c-type (type-keyword) Err bitreich.org 70 i- "Convert a CFFI type keyword to an valid C type keyword." Err bitreich.org 70 i- (or (third (find type-keyword +translation-table+ :key #'second)) Err bitreich.org 70 i- (error "~S is not a valid CFFI type" type-keyword))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-type-size (type-keyword) Err bitreich.org 70 i- "Return the size in bytes of a foreign type." Err bitreich.org 70 i- (nth-value 0 (ffi:size-of-foreign-type Err bitreich.org 70 i- (cffi-type->mkcl-type type-keyword)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-type-alignment (type-keyword) Err bitreich.org 70 i- "Return the alignment in bytes of a foreign type." Err bitreich.org 70 i- (nth-value 1 (ffi:size-of-foreign-type Err bitreich.org 70 i- (cffi-type->mkcl-type type-keyword)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Calling Foreign Functions Err bitreich.org 70 i- Err bitreich.org 70 i-#| Err bitreich.org 70 i-(defconstant +mkcl-inline-codes+ "#0,#1,#2,#3,#4,#5,#6,#7,#8,#9,#a,#b,#c,#d,#e,#f,#g,#h,#i,#j,#k,#l,#m,#n,#o,#p,#q,#r,#s,#t,#u,#v,#w,#x,#y,#z") Err bitreich.org 70 i-|# Err bitreich.org 70 i- Err bitreich.org 70 i-(defun produce-function-pointer-call (pointer types values return-type) Err bitreich.org 70 i-#| Err bitreich.org 70 i- (if (stringp pointer) Err bitreich.org 70 i- (produce-function-pointer-call Err bitreich.org 70 i- `(%foreign-symbol-pointer ,pointer nil) types values return-type) Err bitreich.org 70 i- `(ffi:c-inline Err bitreich.org 70 i- ,(list* pointer values) Err bitreich.org 70 i- ,(list* :pointer-void types) ,return-type Err bitreich.org 70 i- ,(with-output-to-string (s) Err bitreich.org 70 i- (let ((types (mapcar #'mkcl-type->c-type types))) Err bitreich.org 70 i- ;; On AMD64, the following code only works with the extra Err bitreich.org 70 i- ;; argument ",...". If this is not present, functions Err bitreich.org 70 i- ;; like sprintf do not work Err bitreich.org 70 i- (format s "((~A (*)(~@[~{~A,~}...~]))(#0))(~A)" Err bitreich.org 70 i- (mkcl-type->c-type return-type) types Err bitreich.org 70 i- (subseq +mkcl-inline-codes+ 3 Err bitreich.org 70 i- (max 3 (+ 2 (* (length values) 3))))))) Err bitreich.org 70 i- :one-liner t :side-effects t)) Err bitreich.org 70 i-|# Err bitreich.org 70 i- ;; The version here below is definitely not as efficient as the one above Err bitreich.org 70 i- ;; but it has the great vertue of working in all cases, (contrary to the Err bitreich.org 70 i- ;; silent and unsafe limitations of the one above). JCB Err bitreich.org 70 i- ;; I should re-optimize this one day, when I get time... JCB Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (when (stringp pointer) Err bitreich.org 70 i- (setf pointer `(%foreign-symbol-pointer ,pointer nil))) Err bitreich.org 70 i- `(si:call-cfun ,pointer ,return-type (list ,@types) (list ,@values)))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-funcall-parse-args (args) Err bitreich.org 70 i- "Return three values, lists of arg types, values, and result type." Err bitreich.org 70 i- (let ((return-type :void)) Err bitreich.org 70 i- (loop for (type arg) on args by #'cddr Err bitreich.org 70 i- if arg collect (cffi-type->mkcl-type type) into types Err bitreich.org 70 i- and collect arg into values Err bitreich.org 70 i- else do (setf return-type (cffi-type->mkcl-type type)) Err bitreich.org 70 i- finally (return (values types values return-type))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %foreign-funcall (name args &key library convention) Err bitreich.org 70 i- "Call a foreign function." Err bitreich.org 70 i- (declare (ignore library convention)) Err bitreich.org 70 i- (multiple-value-bind (types values return-type) Err bitreich.org 70 i- (foreign-funcall-parse-args args) Err bitreich.org 70 i- (produce-function-pointer-call name types values return-type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %foreign-funcall-pointer (ptr args &key convention) Err bitreich.org 70 i- "Funcall a pointer to a foreign function." Err bitreich.org 70 i- (declare (ignore convention)) Err bitreich.org 70 i- (multiple-value-bind (types values return-type) Err bitreich.org 70 i- (foreign-funcall-parse-args args) Err bitreich.org 70 i- (produce-function-pointer-call ptr types values return-type))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Foreign Libraries Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %load-foreign-library (name path) Err bitreich.org 70 i- "Load a foreign library." Err bitreich.org 70 i- (declare (ignore name)) Err bitreich.org 70 i- (handler-case (si:load-foreign-module path) Err bitreich.org 70 i- (file-error () Err bitreich.org 70 i- (error "file error while trying to load `~A'" path)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %close-foreign-library (handle) Err bitreich.org 70 i- ;;(declare (ignore handle)) Err bitreich.org 70 i- ;;(error "%CLOSE-FOREIGN-LIBRARY unimplemented.") Err bitreich.org 70 i- (si:unload-foreign-module handle)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun native-namestring (pathname) Err bitreich.org 70 i- (namestring pathname)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Callbacks Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Create a package to contain the symbols for callback functions. Err bitreich.org 70 i-;;; We want to redefine callbacks with the same symbol so the internal Err bitreich.org 70 i-;;; data structures are reused. Err bitreich.org 70 i-(defpackage #:cffi-callbacks Err bitreich.org 70 i- (:use)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *callbacks* (make-hash-table)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Intern a symbol in the CFFI-CALLBACKS package used to name the Err bitreich.org 70 i-;;; internal callback for NAME. Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (defun intern-callback (name) Err bitreich.org 70 i- (intern (format nil "~A::~A" Err bitreich.org 70 i- (if-let (package (symbol-package name)) Err bitreich.org 70 i- (package-name package) Err bitreich.org 70 i- "#") Err bitreich.org 70 i- (symbol-name name)) Err bitreich.org 70 i- '#:cffi-callbacks))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %defcallback (name rettype arg-names arg-types body Err bitreich.org 70 i- &key convention) Err bitreich.org 70 i- (declare (ignore convention)) Err bitreich.org 70 i- (let ((cb-name (intern-callback name))) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (ffi:defcallback (,cb-name :cdecl) Err bitreich.org 70 i- ,(cffi-type->mkcl-type rettype) Err bitreich.org 70 i- ,(mapcar #'list arg-names Err bitreich.org 70 i- (mapcar #'cffi-type->mkcl-type arg-types)) Err bitreich.org 70 i- ;;(block ,cb-name ,@body) Err bitreich.org 70 i- (block ,cb-name ,body)) Err bitreich.org 70 i- (setf (gethash ',name *callbacks*) ',cb-name)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %callback (name) Err bitreich.org 70 i- (multiple-value-bind (symbol winp) Err bitreich.org 70 i- (gethash name *callbacks*) Err bitreich.org 70 i- (unless winp Err bitreich.org 70 i- (error "Undefined callback: ~S" name)) Err bitreich.org 70 i- (ffi:callback symbol))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Foreign Globals Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-symbol-pointer (name library) Err bitreich.org 70 i- "Returns a pointer to a foreign symbol NAME." Err bitreich.org 70 i- (declare (ignore library)) Err bitreich.org 70 i- (values (ignore-errors (si:find-foreign-symbol name :default :pointer-void 0)))) Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/src/cffi-openmcl.lisp b/3rdparties/software/cffi_0.20.0/src/cffi-openmcl.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/src/cffi-openmcl.lisp.gph bitreich.org 70 i@@ -1,314 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; cffi-openmcl.lisp --- CFFI-SYS implementation for OpenMCL. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Administrivia Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:cffi-sys Err bitreich.org 70 i- (:use #:common-lisp #:ccl) Err bitreich.org 70 i- (:import-from #:alexandria #:once-only #:if-let) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- #:canonicalize-symbol-name-case Err bitreich.org 70 i- #:foreign-pointer Err bitreich.org 70 i- #:pointerp ; ccl:pointerp Err bitreich.org 70 i- #:pointer-eq Err bitreich.org 70 i- #:%foreign-alloc Err bitreich.org 70 i- #:foreign-free Err bitreich.org 70 i- #:with-foreign-pointer Err bitreich.org 70 i- #:null-pointer Err bitreich.org 70 i- #:null-pointer-p Err bitreich.org 70 i- #:inc-pointer Err bitreich.org 70 i- #:make-pointer Err bitreich.org 70 i- #:pointer-address Err bitreich.org 70 i- #:%mem-ref Err bitreich.org 70 i- #:%mem-set Err bitreich.org 70 i- #:%foreign-funcall Err bitreich.org 70 i- #:%foreign-funcall-pointer Err bitreich.org 70 i- #:%foreign-type-alignment Err bitreich.org 70 i- #:%foreign-type-size Err bitreich.org 70 i- #:%load-foreign-library Err bitreich.org 70 i- #:%close-foreign-library Err bitreich.org 70 i- #:native-namestring Err bitreich.org 70 i- #:make-shareable-byte-vector Err bitreich.org 70 i- #:with-pointer-to-vector-data Err bitreich.org 70 i- #:%foreign-symbol-pointer Err bitreich.org 70 i- #:%defcallback Err bitreich.org 70 i- #:%callback)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-sys) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Misfeatures Err bitreich.org 70 i- Err bitreich.org 70 i-(pushnew 'flat-namespace *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Symbol Case Err bitreich.org 70 i- Err bitreich.org 70 i-(defun canonicalize-symbol-name-case (name) Err bitreich.org 70 i- (declare (string name)) Err bitreich.org 70 i- (string-upcase name)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Allocation Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Functions and macros for allocating foreign memory on the stack Err bitreich.org 70 i-;;; and on the heap. The main CFFI package defines macros that wrap Err bitreich.org 70 i-;;; FOREIGN-ALLOC and FOREIGN-FREE in UNWIND-PROTECT for the common Err bitreich.org 70 i-;;; usage when the memory has dynamic extent. Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-alloc (size) Err bitreich.org 70 i- "Allocate SIZE bytes on the heap and return a pointer." Err bitreich.org 70 i- (ccl::malloc size)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-free (ptr) Err bitreich.org 70 i- "Free a PTR allocated by FOREIGN-ALLOC." Err bitreich.org 70 i- ;; TODO: Should we make this a dead macptr? Err bitreich.org 70 i- (ccl::free ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-foreign-pointer ((var size &optional size-var) &body body) Err bitreich.org 70 i- "Bind VAR to SIZE bytes of foreign memory during BODY. The Err bitreich.org 70 i-pointer in VAR is invalid beyond the dynamic extent of BODY, and Err bitreich.org 70 i-may be stack-allocated if supported by the implementation. If Err bitreich.org 70 i-SIZE-VAR is supplied, it will be bound to SIZE during BODY." Err bitreich.org 70 i- (unless size-var Err bitreich.org 70 i- (setf size-var (gensym "SIZE"))) Err bitreich.org 70 i- `(let ((,size-var ,size)) Err bitreich.org 70 i- (%stack-block ((,var ,size-var)) Err bitreich.org 70 i- ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Misc. Pointer Operations Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype foreign-pointer () Err bitreich.org 70 i- 'ccl:macptr) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun null-pointer () Err bitreich.org 70 i- "Construct and return a null pointer." Err bitreich.org 70 i- (ccl:%null-ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun null-pointer-p (ptr) Err bitreich.org 70 i- "Return true if PTR is a null pointer." Err bitreich.org 70 i- (ccl:%null-ptr-p ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun inc-pointer (ptr offset) Err bitreich.org 70 i- "Return a pointer OFFSET bytes past PTR." Err bitreich.org 70 i- (ccl:%inc-ptr ptr offset)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun pointer-eq (ptr1 ptr2) Err bitreich.org 70 i- "Return true if PTR1 and PTR2 point to the same address." Err bitreich.org 70 i- (ccl:%ptr-eql ptr1 ptr2)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-pointer (address) Err bitreich.org 70 i- "Return a pointer pointing to ADDRESS." Err bitreich.org 70 i- (ccl:%int-to-ptr address)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun pointer-address (ptr) Err bitreich.org 70 i- "Return the address pointed to by PTR." Err bitreich.org 70 i- (ccl:%ptr-to-int ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Shareable Vectors Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; This interface is very experimental. WITH-POINTER-TO-VECTOR-DATA Err bitreich.org 70 i-;;; should be defined to perform a copy-in/copy-out if the Lisp Err bitreich.org 70 i-;;; implementation can't do this. Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-shareable-byte-vector (size) Err bitreich.org 70 i- "Create a Lisp vector of SIZE bytes that can passed to Err bitreich.org 70 i-WITH-POINTER-TO-VECTOR-DATA." Err bitreich.org 70 i- (make-array size :element-type '(unsigned-byte 8))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-pointer-to-vector-data ((ptr-var vector) &body body) Err bitreich.org 70 i- "Bind PTR-VAR to a foreign pointer to the data in VECTOR." Err bitreich.org 70 i- `(ccl:with-pointer-to-ivector (,ptr-var ,vector) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Dereferencing Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Define the %MEM-REF and %MEM-SET functions, as well as compiler Err bitreich.org 70 i-;;; macros that optimize the case where the type keyword is constant Err bitreich.org 70 i-;;; at compile-time. Err bitreich.org 70 i-(defmacro define-mem-accessors (&body pairs) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (defun %mem-ref (ptr type &optional (offset 0)) Err bitreich.org 70 i- (ecase type Err bitreich.org 70 i- ,@(loop for (keyword fn) in pairs Err bitreich.org 70 i- collect `(,keyword (,fn ptr offset))))) Err bitreich.org 70 i- (defun %mem-set (value ptr type &optional (offset 0)) Err bitreich.org 70 i- (ecase type Err bitreich.org 70 i- ,@(loop for (keyword fn) in pairs Err bitreich.org 70 i- collect `(,keyword (setf (,fn ptr offset) value))))) Err bitreich.org 70 i- (define-compiler-macro %mem-ref Err bitreich.org 70 i- (&whole form ptr type &optional (offset 0)) Err bitreich.org 70 i- (if (constantp type) Err bitreich.org 70 i- (ecase (eval type) Err bitreich.org 70 i- ,@(loop for (keyword fn) in pairs Err bitreich.org 70 i- collect `(,keyword `(,',fn ,ptr ,offset)))) Err bitreich.org 70 i- form)) Err bitreich.org 70 i- (define-compiler-macro %mem-set Err bitreich.org 70 i- (&whole form value ptr type &optional (offset 0)) Err bitreich.org 70 i- (if (constantp type) Err bitreich.org 70 i- (once-only (value) Err bitreich.org 70 i- (ecase (eval type) Err bitreich.org 70 i- ,@(loop for (keyword fn) in pairs Err bitreich.org 70 i- collect `(,keyword `(setf (,',fn ,ptr ,offset) Err bitreich.org 70 i- ,value))))) Err bitreich.org 70 i- form)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-mem-accessors Err bitreich.org 70 i- (:char %get-signed-byte) Err bitreich.org 70 i- (:unsigned-char %get-unsigned-byte) Err bitreich.org 70 i- (:short %get-signed-word) Err bitreich.org 70 i- (:unsigned-short %get-unsigned-word) Err bitreich.org 70 i- (:int %get-signed-long) Err bitreich.org 70 i- (:unsigned-int %get-unsigned-long) Err bitreich.org 70 i- #+(or 32-bit-target windows-target) (:long %get-signed-long) Err bitreich.org 70 i- #+(and (not windows-target) 64-bit-target) (:long ccl::%%get-signed-longlong) Err bitreich.org 70 i- #+(or 32-bit-target windows-target) (:unsigned-long %get-unsigned-long) Err bitreich.org 70 i- #+(and 64-bit-target (not windows-target)) (:unsigned-long ccl::%%get-unsigned-longlong) Err bitreich.org 70 i- (:long-long ccl::%get-signed-long-long) Err bitreich.org 70 i- (:unsigned-long-long ccl::%get-unsigned-long-long) Err bitreich.org 70 i- (:float %get-single-float) Err bitreich.org 70 i- (:double %get-double-float) Err bitreich.org 70 i- (:pointer %get-ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Calling Foreign Functions Err bitreich.org 70 i- Err bitreich.org 70 i-(defun convert-foreign-type (type-keyword) Err bitreich.org 70 i- "Convert a CFFI type keyword to an OpenMCL type." Err bitreich.org 70 i- (ecase type-keyword Err bitreich.org 70 i- (:char :signed-byte) Err bitreich.org 70 i- (:unsigned-char :unsigned-byte) Err bitreich.org 70 i- (:short :signed-short) Err bitreich.org 70 i- (:unsigned-short :unsigned-short) Err bitreich.org 70 i- (:int :signed-int) Err bitreich.org 70 i- (:unsigned-int :unsigned-int) Err bitreich.org 70 i- (:long :signed-long) Err bitreich.org 70 i- (:unsigned-long :unsigned-long) Err bitreich.org 70 i- (:long-long :signed-doubleword) Err bitreich.org 70 i- (:unsigned-long-long :unsigned-doubleword) Err bitreich.org 70 i- (:float :single-float) Err bitreich.org 70 i- (:double :double-float) Err bitreich.org 70 i- (:pointer :address) Err bitreich.org 70 i- (:void :void))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-type-size (type-keyword) Err bitreich.org 70 i- "Return the size in bytes of a foreign type." Err bitreich.org 70 i- (/ (ccl::foreign-type-bits Err bitreich.org 70 i- (ccl::parse-foreign-type Err bitreich.org 70 i- (convert-foreign-type type-keyword))) Err bitreich.org 70 i- 8)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; There be dragons here. See the following thread for details: Err bitreich.org 70 i-;; http://clozure.com/pipermail/openmcl-devel/2005-June/002777.html Err bitreich.org 70 i-(defun %foreign-type-alignment (type-keyword) Err bitreich.org 70 i- "Return the alignment in bytes of a foreign type." Err bitreich.org 70 i- (/ (ccl::foreign-type-alignment Err bitreich.org 70 i- (ccl::parse-foreign-type Err bitreich.org 70 i- (convert-foreign-type type-keyword))) 8)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun convert-foreign-funcall-types (args) Err bitreich.org 70 i- "Convert foreign types for a call to FOREIGN-FUNCALL." Err bitreich.org 70 i- (loop for (type arg) on args by #'cddr Err bitreich.org 70 i- collect (convert-foreign-type type) Err bitreich.org 70 i- if arg collect arg)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun convert-external-name (name) Err bitreich.org 70 i- "Add an underscore to NAME if necessary for the ABI." Err bitreich.org 70 i- #+darwin (concatenate 'string "_" name) Err bitreich.org 70 i- #-darwin name) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %foreign-funcall (function-name args &key library convention) Err bitreich.org 70 i- "Perform a foreign function call, document it more later." Err bitreich.org 70 i- (declare (ignore library convention)) Err bitreich.org 70 i- `(external-call Err bitreich.org 70 i- ,(convert-external-name function-name) Err bitreich.org 70 i- ,@(convert-foreign-funcall-types args))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %foreign-funcall-pointer (ptr args &key convention) Err bitreich.org 70 i- (declare (ignore convention)) Err bitreich.org 70 i- `(ff-call ,ptr ,@(convert-foreign-funcall-types args))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Callbacks Err bitreich.org 70 i- Err bitreich.org 70 i-;;; The *CALLBACKS* hash table maps CFFI callback names to OpenMCL "macptr" Err bitreich.org 70 i-;;; entry points. It is safe to store the pointers directly because Err bitreich.org 70 i-;;; OpenMCL will update the address of these pointers when a saved image Err bitreich.org 70 i-;;; is loaded (see CCL::RESTORE-PASCAL-FUNCTIONS). Err bitreich.org 70 i-(defvar *callbacks* (make-hash-table)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Create a package to contain the symbols for callback functions. We Err bitreich.org 70 i-;;; want to redefine callbacks with the same symbol so the internal data Err bitreich.org 70 i-;;; structures are reused. Err bitreich.org 70 i-(defpackage #:cffi-callbacks Err bitreich.org 70 i- (:use)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Intern a symbol in the CFFI-CALLBACKS package used to name the internal Err bitreich.org 70 i-;;; callback for NAME. Err bitreich.org 70 i-(defun intern-callback (name) Err bitreich.org 70 i- (intern (format nil "~A::~A" Err bitreich.org 70 i- (if-let (package (symbol-package name)) Err bitreich.org 70 i- (package-name package) Err bitreich.org 70 i- "#") Err bitreich.org 70 i- (symbol-name name)) Err bitreich.org 70 i- '#:cffi-callbacks)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %defcallback (name rettype arg-names arg-types body Err bitreich.org 70 i- &key convention) Err bitreich.org 70 i- (let ((cb-name (intern-callback name))) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (defcallback ,cb-name Err bitreich.org 70 i- (,@(when (eq convention :stdcall) Err bitreich.org 70 i- '(:discard-stack-args)) Err bitreich.org 70 i- ,@(mapcan (lambda (sym type) Err bitreich.org 70 i- (list (convert-foreign-type type) sym)) Err bitreich.org 70 i- arg-names arg-types) Err bitreich.org 70 i- ,(convert-foreign-type rettype)) Err bitreich.org 70 i- ,body) Err bitreich.org 70 i- (setf (gethash ',name *callbacks*) (symbol-value ',cb-name))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %callback (name) Err bitreich.org 70 i- (or (gethash name *callbacks*) Err bitreich.org 70 i- (error "Undefined callback: ~S" name))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Loading Foreign Libraries Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %load-foreign-library (name path) Err bitreich.org 70 i- "Load the foreign library NAME." Err bitreich.org 70 i- (declare (ignore name)) Err bitreich.org 70 i- (open-shared-library path)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %close-foreign-library (name) Err bitreich.org 70 i- "Close the foreign library NAME." Err bitreich.org 70 i- ;; C-S-L sometimes ends in an endless loop Err bitreich.org 70 i- ;; with :COMPLETELY T Err bitreich.org 70 i- (close-shared-library name :completely nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun native-namestring (pathname) Err bitreich.org 70 i- (ccl::native-translated-namestring pathname)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Foreign Globals Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-symbol-pointer (name library) Err bitreich.org 70 i- "Returns a pointer to a foreign symbol NAME." Err bitreich.org 70 i- (declare (ignore library)) Err bitreich.org 70 i- (foreign-symbol-address (convert-external-name name))) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/src/cffi-sbcl.lisp b/3rdparties/software/cffi_0.20.0/src/cffi-sbcl.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/src/cffi-sbcl.lisp.gph bitreich.org 70 i@@ -1,408 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; cffi-sbcl.lisp --- CFFI-SYS implementation for SBCL. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Administrivia Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:cffi-sys Err bitreich.org 70 i- (:use #:common-lisp #:sb-alien) Err bitreich.org 70 i- (:import-from #:alexandria Err bitreich.org 70 i- #:once-only #:with-unique-names #:when-let #:removef) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- #:canonicalize-symbol-name-case Err bitreich.org 70 i- #:foreign-pointer Err bitreich.org 70 i- #:pointerp Err bitreich.org 70 i- #:pointer-eq Err bitreich.org 70 i- #:null-pointer Err bitreich.org 70 i- #:null-pointer-p Err bitreich.org 70 i- #:inc-pointer Err bitreich.org 70 i- #:make-pointer Err bitreich.org 70 i- #:pointer-address Err bitreich.org 70 i- #:%foreign-alloc Err bitreich.org 70 i- #:foreign-free Err bitreich.org 70 i- #:with-foreign-pointer Err bitreich.org 70 i- #:%foreign-funcall Err bitreich.org 70 i- #:%foreign-funcall-pointer Err bitreich.org 70 i- #:%foreign-type-alignment Err bitreich.org 70 i- #:%foreign-type-size Err bitreich.org 70 i- #:%load-foreign-library Err bitreich.org 70 i- #:%close-foreign-library Err bitreich.org 70 i- #:native-namestring Err bitreich.org 70 i- #:%mem-ref Err bitreich.org 70 i- #:%mem-set Err bitreich.org 70 i- #:make-shareable-byte-vector Err bitreich.org 70 i- #:with-pointer-to-vector-data Err bitreich.org 70 i- #:%foreign-symbol-pointer Err bitreich.org 70 i- #:%defcallback Err bitreich.org 70 i- #:%callback)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-sys) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Misfeatures Err bitreich.org 70 i- Err bitreich.org 70 i-(pushnew 'flat-namespace *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Symbol Case Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline canonicalize-symbol-name-case)) Err bitreich.org 70 i-(defun canonicalize-symbol-name-case (name) Err bitreich.org 70 i- (declare (string name)) Err bitreich.org 70 i- (string-upcase name)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Basic Pointer Operations Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype foreign-pointer () Err bitreich.org 70 i- 'sb-sys:system-area-pointer) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline pointerp)) Err bitreich.org 70 i-(defun pointerp (ptr) Err bitreich.org 70 i- "Return true if PTR is a foreign pointer." Err bitreich.org 70 i- (sb-sys:system-area-pointer-p ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline pointer-eq)) Err bitreich.org 70 i-(defun pointer-eq (ptr1 ptr2) Err bitreich.org 70 i- "Return true if PTR1 and PTR2 point to the same address." Err bitreich.org 70 i- (declare (type system-area-pointer ptr1 ptr2)) Err bitreich.org 70 i- (sb-sys:sap= ptr1 ptr2)) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline null-pointer)) Err bitreich.org 70 i-(defun null-pointer () Err bitreich.org 70 i- "Construct and return a null pointer." Err bitreich.org 70 i- (sb-sys:int-sap 0)) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline null-pointer-p)) Err bitreich.org 70 i-(defun null-pointer-p (ptr) Err bitreich.org 70 i- "Return true if PTR is a null pointer." Err bitreich.org 70 i- (declare (type system-area-pointer ptr)) Err bitreich.org 70 i- (zerop (sb-sys:sap-int ptr))) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline inc-pointer)) Err bitreich.org 70 i-(defun inc-pointer (ptr offset) Err bitreich.org 70 i- "Return a pointer pointing OFFSET bytes past PTR." Err bitreich.org 70 i- (declare (type system-area-pointer ptr) Err bitreich.org 70 i- (type integer offset)) Err bitreich.org 70 i- (sb-sys:sap+ ptr offset)) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline make-pointer)) Err bitreich.org 70 i-(defun make-pointer (address) Err bitreich.org 70 i- "Return a pointer pointing to ADDRESS." Err bitreich.org 70 i- ;; (declare (type (unsigned-byte 32) address)) Err bitreich.org 70 i- (sb-sys:int-sap address)) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline pointer-address)) Err bitreich.org 70 i-(defun pointer-address (ptr) Err bitreich.org 70 i- "Return the address pointed to by PTR." Err bitreich.org 70 i- (declare (type system-area-pointer ptr)) Err bitreich.org 70 i- (sb-sys:sap-int ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Allocation Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Functions and macros for allocating foreign memory on the stack Err bitreich.org 70 i-;;; and on the heap. The main CFFI package defines macros that wrap Err bitreich.org 70 i-;;; FOREIGN-ALLOC and FOREIGN-FREE in UNWIND-PROTECT for the common usage Err bitreich.org 70 i-;;; when the memory has dynamic extent. Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline %foreign-alloc)) Err bitreich.org 70 i-(defun %foreign-alloc (size) Err bitreich.org 70 i- "Allocate SIZE bytes on the heap and return a pointer." Err bitreich.org 70 i- ;; (declare (type (unsigned-byte 32) size)) Err bitreich.org 70 i- (alien-sap (make-alien (unsigned 8) size))) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline foreign-free)) Err bitreich.org 70 i-(defun foreign-free (ptr) Err bitreich.org 70 i- "Free a PTR allocated by FOREIGN-ALLOC." Err bitreich.org 70 i- (declare (type system-area-pointer ptr) Err bitreich.org 70 i- (optimize speed)) Err bitreich.org 70 i- (free-alien (sap-alien ptr (* (unsigned 8))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-foreign-pointer ((var size &optional size-var) &body body) Err bitreich.org 70 i- "Bind VAR to SIZE bytes of foreign memory during BODY. The Err bitreich.org 70 i-pointer in VAR is invalid beyond the dynamic extent of BODY, and Err bitreich.org 70 i-may be stack-allocated if supported by the implementation. If Err bitreich.org 70 i-SIZE-VAR is supplied, it will be bound to SIZE during BODY." Err bitreich.org 70 i- (unless size-var Err bitreich.org 70 i- (setf size-var (gensym "SIZE"))) Err bitreich.org 70 i- ;; If the size is constant we can stack-allocate. Err bitreich.org 70 i- (if (constantp size) Err bitreich.org 70 i- (let ((alien-var (gensym "ALIEN"))) Err bitreich.org 70 i- `(with-alien ((,alien-var (array (unsigned 8) ,(eval size)))) Err bitreich.org 70 i- (let ((,size-var ,(eval size)) Err bitreich.org 70 i- (,var (alien-sap ,alien-var))) Err bitreich.org 70 i- (declare (ignorable ,size-var)) Err bitreich.org 70 i- ,@body))) Err bitreich.org 70 i- `(let* ((,size-var ,size) Err bitreich.org 70 i- (,var (%foreign-alloc ,size-var))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn ,@body) Err bitreich.org 70 i- (foreign-free ,var))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Shareable Vectors Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; This interface is very experimental. WITH-POINTER-TO-VECTOR-DATA Err bitreich.org 70 i-;;; should be defined to perform a copy-in/copy-out if the Lisp Err bitreich.org 70 i-;;; implementation can't do this. Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline make-shareable-byte-vector)) Err bitreich.org 70 i-(defun make-shareable-byte-vector (size) Err bitreich.org 70 i- "Create a Lisp vector of SIZE bytes can passed to Err bitreich.org 70 i-WITH-POINTER-TO-VECTOR-DATA." Err bitreich.org 70 i- ; (declare (type sb-int:index size)) Err bitreich.org 70 i- (make-array size :element-type '(unsigned-byte 8))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-pointer-to-vector-data ((ptr-var vector) &body body) Err bitreich.org 70 i- "Bind PTR-VAR to a foreign pointer to the data in VECTOR." Err bitreich.org 70 i- (let ((vector-var (gensym "VECTOR"))) Err bitreich.org 70 i- `(let ((,vector-var ,vector)) Err bitreich.org 70 i- (declare (type (sb-kernel:simple-unboxed-array (*)) ,vector-var)) Err bitreich.org 70 i- (sb-sys:with-pinned-objects (,vector-var) Err bitreich.org 70 i- (let ((,ptr-var (sb-sys:vector-sap ,vector-var))) Err bitreich.org 70 i- ,@body))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Dereferencing Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Define the %MEM-REF and %MEM-SET functions, as well as compiler Err bitreich.org 70 i-;;; macros that optimize the case where the type keyword is constant Err bitreich.org 70 i-;;; at compile-time. Err bitreich.org 70 i-(defmacro define-mem-accessors (&body pairs) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (defun %mem-ref (ptr type &optional (offset 0)) Err bitreich.org 70 i- (ecase type Err bitreich.org 70 i- ,@(loop for (keyword fn) in pairs Err bitreich.org 70 i- collect `(,keyword (,fn ptr offset))))) Err bitreich.org 70 i- (defun %mem-set (value ptr type &optional (offset 0)) Err bitreich.org 70 i- (ecase type Err bitreich.org 70 i- ,@(loop for (keyword fn) in pairs Err bitreich.org 70 i- collect `(,keyword (setf (,fn ptr offset) value))))) Err bitreich.org 70 i- (define-compiler-macro %mem-ref Err bitreich.org 70 i- (&whole form ptr type &optional (offset 0)) Err bitreich.org 70 i- (if (constantp type) Err bitreich.org 70 i- (ecase (eval type) Err bitreich.org 70 i- ,@(loop for (keyword fn) in pairs Err bitreich.org 70 i- collect `(,keyword `(,',fn ,ptr ,offset)))) Err bitreich.org 70 i- form)) Err bitreich.org 70 i- (define-compiler-macro %mem-set Err bitreich.org 70 i- (&whole form value ptr type &optional (offset 0)) Err bitreich.org 70 i- (if (constantp type) Err bitreich.org 70 i- (once-only (value) Err bitreich.org 70 i- (ecase (eval type) Err bitreich.org 70 i- ,@(loop for (keyword fn) in pairs Err bitreich.org 70 i- collect `(,keyword `(setf (,',fn ,ptr ,offset) Err bitreich.org 70 i- ,value))))) Err bitreich.org 70 i- form)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Look up alien type information and build both define-mem-accessors form Err bitreich.org 70 i-;;; and convert-foreign-type function definition. Err bitreich.org 70 i-(defmacro define-type-mapping (accessor-table alien-table) Err bitreich.org 70 i- (let* ((accessible-types Err bitreich.org 70 i- (remove 'void alien-table :key #'second)) Err bitreich.org 70 i- (size-and-signedp-forms Err bitreich.org 70 i- (mapcar (lambda (name) Err bitreich.org 70 i- (list (eval `(alien-size ,(second name))) Err bitreich.org 70 i- (typep -1 `(alien ,(second name))))) Err bitreich.org 70 i- accessible-types))) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (define-mem-accessors Err bitreich.org 70 i- ,@(loop for (cffi-keyword alien-type fixed-accessor) Err bitreich.org 70 i- in accessible-types Err bitreich.org 70 i- and (alien-size signedp) Err bitreich.org 70 i- in size-and-signedp-forms Err bitreich.org 70 i- for (signed-ref unsigned-ref) Err bitreich.org 70 i- = (cdr (assoc alien-size accessor-table)) Err bitreich.org 70 i- collect Err bitreich.org 70 i- `(,cffi-keyword Err bitreich.org 70 i- ,(or fixed-accessor Err bitreich.org 70 i- (if signedp signed-ref unsigned-ref) Err bitreich.org 70 i- (error "No accessor found for ~S" Err bitreich.org 70 i- alien-type))))) Err bitreich.org 70 i- (defun convert-foreign-type (type-keyword) Err bitreich.org 70 i- (ecase type-keyword Err bitreich.org 70 i- ,@(loop for (cffi-keyword alien-type) in alien-table Err bitreich.org 70 i- collect `(,cffi-keyword (quote ,alien-type)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-type-mapping Err bitreich.org 70 i- ((8 sb-sys:signed-sap-ref-8 sb-sys:sap-ref-8) Err bitreich.org 70 i- (16 sb-sys:signed-sap-ref-16 sb-sys:sap-ref-16) Err bitreich.org 70 i- (32 sb-sys:signed-sap-ref-32 sb-sys:sap-ref-32) Err bitreich.org 70 i- (64 sb-sys:signed-sap-ref-64 sb-sys:sap-ref-64)) Err bitreich.org 70 i- ((:char char) Err bitreich.org 70 i- (:unsigned-char unsigned-char) Err bitreich.org 70 i- (:short short) Err bitreich.org 70 i- (:unsigned-short unsigned-short) Err bitreich.org 70 i- (:int int) Err bitreich.org 70 i- (:unsigned-int unsigned-int) Err bitreich.org 70 i- (:long long) Err bitreich.org 70 i- (:unsigned-long unsigned-long) Err bitreich.org 70 i- (:long-long long-long) Err bitreich.org 70 i- (:unsigned-long-long unsigned-long-long) Err bitreich.org 70 i- (:float single-float Err bitreich.org 70 i- sb-sys:sap-ref-single) Err bitreich.org 70 i- (:double double-float Err bitreich.org 70 i- sb-sys:sap-ref-double) Err bitreich.org 70 i- (:pointer system-area-pointer Err bitreich.org 70 i- sb-sys:sap-ref-sap) Err bitreich.org 70 i- (:void void))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Calling Foreign Functions Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-type-size (type-keyword) Err bitreich.org 70 i- "Return the size in bytes of a foreign type." Err bitreich.org 70 i- (/ (sb-alien-internals:alien-type-bits Err bitreich.org 70 i- (sb-alien-internals:parse-alien-type Err bitreich.org 70 i- (convert-foreign-type type-keyword) nil)) 8)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-type-alignment (type-keyword) Err bitreich.org 70 i- "Return the alignment in bytes of a foreign type." Err bitreich.org 70 i- #+(and darwin ppc (not ppc64)) Err bitreich.org 70 i- (case type-keyword Err bitreich.org 70 i- ((:double :long-long :unsigned-long-long) Err bitreich.org 70 i- (return-from %foreign-type-alignment 8))) Err bitreich.org 70 i- ;; No override necessary for other types... Err bitreich.org 70 i- (/ (sb-alien-internals:alien-type-alignment Err bitreich.org 70 i- (sb-alien-internals:parse-alien-type Err bitreich.org 70 i- (convert-foreign-type type-keyword) nil)) 8)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-funcall-type-and-args (args) Err bitreich.org 70 i- "Return an SB-ALIEN function type for ARGS." Err bitreich.org 70 i- (let ((return-type 'void)) Err bitreich.org 70 i- (loop for (type arg) on args by #'cddr Err bitreich.org 70 i- if arg collect (convert-foreign-type type) into types Err bitreich.org 70 i- and collect arg into fargs Err bitreich.org 70 i- else do (setf return-type (convert-foreign-type type)) Err bitreich.org 70 i- finally (return (values types fargs return-type))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %%foreign-funcall (name types fargs rettype) Err bitreich.org 70 i- "Internal guts of %FOREIGN-FUNCALL." Err bitreich.org 70 i- `(alien-funcall Err bitreich.org 70 i- (extern-alien ,name (function ,rettype ,@types)) Err bitreich.org 70 i- ,@fargs)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %foreign-funcall (name args &key library convention) Err bitreich.org 70 i- "Perform a foreign function call, document it more later." Err bitreich.org 70 i- (declare (ignore library convention)) Err bitreich.org 70 i- (multiple-value-bind (types fargs rettype) Err bitreich.org 70 i- (foreign-funcall-type-and-args args) Err bitreich.org 70 i- `(%%foreign-funcall ,name ,types ,fargs ,rettype))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %foreign-funcall-pointer (ptr args &key convention) Err bitreich.org 70 i- "Funcall a pointer to a foreign function." Err bitreich.org 70 i- (declare (ignore convention)) Err bitreich.org 70 i- (multiple-value-bind (types fargs rettype) Err bitreich.org 70 i- (foreign-funcall-type-and-args args) Err bitreich.org 70 i- (with-unique-names (function) Err bitreich.org 70 i- `(with-alien ((,function (* (function ,rettype ,@types)) ,ptr)) Err bitreich.org 70 i- (alien-funcall ,function ,@fargs))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Callbacks Err bitreich.org 70 i- Err bitreich.org 70 i-;;; The *CALLBACKS* hash table contains a direct mapping of CFFI Err bitreich.org 70 i-;;; callback names to SYSTEM-AREA-POINTERs obtained by ALIEN-LAMBDA. Err bitreich.org 70 i-;;; SBCL will maintain the addresses of the callbacks across saved Err bitreich.org 70 i-;;; images, so it is safe to store the pointers directly. Err bitreich.org 70 i-(defvar *callbacks* (make-hash-table)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %defcallback (name rettype arg-names arg-types body Err bitreich.org 70 i- &key convention) Err bitreich.org 70 i- (check-type convention (member :stdcall :cdecl)) Err bitreich.org 70 i- `(setf (gethash ',name *callbacks*) Err bitreich.org 70 i- (alien-sap Err bitreich.org 70 i- (sb-alien::alien-lambda Err bitreich.org 70 i- #+alien-callback-conventions Err bitreich.org 70 i- (,convention ,(convert-foreign-type rettype)) Err bitreich.org 70 i- #-alien-callback-conventions Err bitreich.org 70 i- ,(convert-foreign-type rettype) Err bitreich.org 70 i- ,(mapcar (lambda (sym type) Err bitreich.org 70 i- (list sym (convert-foreign-type type))) Err bitreich.org 70 i- arg-names arg-types) Err bitreich.org 70 i- ,body)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %callback (name) Err bitreich.org 70 i- (or (gethash name *callbacks*) Err bitreich.org 70 i- (error "Undefined callback: ~S" name))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Loading and Closing Foreign Libraries Err bitreich.org 70 i- Err bitreich.org 70 i-#+darwin Err bitreich.org 70 i-(defun call-within-initial-thread (fn &rest args) Err bitreich.org 70 i- (let (result Err bitreich.org 70 i- error Err bitreich.org 70 i- (sem (sb-thread:make-semaphore))) Err bitreich.org 70 i- (sb-thread:interrupt-thread Err bitreich.org 70 i- ;; KLUDGE: find a better way to get the initial thread. Err bitreich.org 70 i- (car (last (sb-thread:list-all-threads))) Err bitreich.org 70 i- (lambda () Err bitreich.org 70 i- (multiple-value-setq (result error) Err bitreich.org 70 i- (ignore-errors (apply fn args))) Err bitreich.org 70 i- (sb-thread:signal-semaphore sem))) Err bitreich.org 70 i- (sb-thread:wait-on-semaphore sem) Err bitreich.org 70 i- (if error Err bitreich.org 70 i- (signal error) Err bitreich.org 70 i- result))) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline %load-foreign-library)) Err bitreich.org 70 i-(defun %load-foreign-library (name path) Err bitreich.org 70 i- "Load a foreign library." Err bitreich.org 70 i- (declare (ignore name)) Err bitreich.org 70 i- ;; As of MacOS X 10.6.6, loading things like CoreFoundation from a Err bitreich.org 70 i- ;; thread other than the initial one results in a crash. Err bitreich.org 70 i- #+darwin (call-within-initial-thread 'load-shared-object path) Err bitreich.org 70 i- #-darwin (load-shared-object path)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; SBCL 1.0.21.15 renamed SB-ALIEN::SHARED-OBJECT-FILE but introduced Err bitreich.org 70 i-;;; SB-ALIEN:UNLOAD-SHARED-OBJECT which we can use instead. Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (defun unload-shared-object-present-p () Err bitreich.org 70 i- (multiple-value-bind (foundp kind) Err bitreich.org 70 i- (find-symbol "UNLOAD-SHARED-OBJECT" "SB-ALIEN") Err bitreich.org 70 i- (if (and foundp (eq kind :external)) Err bitreich.org 70 i- '(:and) Err bitreich.org 70 i- '(:or))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %close-foreign-library (handle) Err bitreich.org 70 i- "Closes a foreign library." Err bitreich.org 70 i- #+#.(cffi-sys::unload-shared-object-present-p) Err bitreich.org 70 i- (sb-alien:unload-shared-object handle) Err bitreich.org 70 i- #-#.(cffi-sys::unload-shared-object-present-p) Err bitreich.org 70 i- (sb-thread:with-mutex (sb-alien::*shared-objects-lock*) Err bitreich.org 70 i- (let ((obj (find (sb-ext:native-namestring handle) Err bitreich.org 70 i- sb-alien::*shared-objects* Err bitreich.org 70 i- :key #'sb-alien::shared-object-file Err bitreich.org 70 i- :test #'string=))) Err bitreich.org 70 i- (when obj Err bitreich.org 70 i- (sb-alien::dlclose-or-lose obj) Err bitreich.org 70 i- (removef sb-alien::*shared-objects* obj) Err bitreich.org 70 i- #+(and linkage-table (not win32)) Err bitreich.org 70 i- (sb-alien::update-linkage-table))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun native-namestring (pathname) Err bitreich.org 70 i- (sb-ext:native-namestring pathname)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Foreign Globals Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-symbol-pointer (name library) Err bitreich.org 70 i- "Returns a pointer to a foreign symbol NAME." Err bitreich.org 70 i- (declare (ignore library)) Err bitreich.org 70 i- (when-let (address (sb-sys:find-foreign-symbol-address name)) Err bitreich.org 70 i- (sb-sys:int-sap address))) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/src/cffi-scl.lisp b/3rdparties/software/cffi_0.20.0/src/cffi-scl.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/src/cffi-scl.lisp.gph bitreich.org 70 i@@ -1,322 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; cffi-scl.lisp --- CFFI-SYS implementation for the Scieneer Common Lisp. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Copyright (C) 2006-2007, Scieneer Pty Ltd. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Administrivia Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:cffi-sys Err bitreich.org 70 i- (:use #:common-lisp #:alien #:c-call) Err bitreich.org 70 i- (:import-from #:alexandria #:once-only #:with-unique-names) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- #:canonicalize-symbol-name-case Err bitreich.org 70 i- #:foreign-pointer Err bitreich.org 70 i- #:pointerp Err bitreich.org 70 i- #:pointer-eq Err bitreich.org 70 i- #:null-pointer Err bitreich.org 70 i- #:null-pointer-p Err bitreich.org 70 i- #:inc-pointer Err bitreich.org 70 i- #:make-pointer Err bitreich.org 70 i- #:pointer-address Err bitreich.org 70 i- #:%foreign-alloc Err bitreich.org 70 i- #:foreign-free Err bitreich.org 70 i- #:with-foreign-pointer Err bitreich.org 70 i- #:%foreign-funcall Err bitreich.org 70 i- #:%foreign-funcall-pointer Err bitreich.org 70 i- #:%foreign-type-alignment Err bitreich.org 70 i- #:%foreign-type-size Err bitreich.org 70 i- #:%load-foreign-library Err bitreich.org 70 i- #:%close-foreign-library Err bitreich.org 70 i- #:native-namestring Err bitreich.org 70 i- #:%mem-ref Err bitreich.org 70 i- #:%mem-set Err bitreich.org 70 i- #:make-shareable-byte-vector Err bitreich.org 70 i- #:with-pointer-to-vector-data Err bitreich.org 70 i- #:%foreign-symbol-pointer Err bitreich.org 70 i- #:%defcallback Err bitreich.org 70 i- #:%callback)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-sys) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Mis-features Err bitreich.org 70 i- Err bitreich.org 70 i-(pushnew 'flat-namespace *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Symbol Case Err bitreich.org 70 i- Err bitreich.org 70 i-(defun canonicalize-symbol-name-case (name) Err bitreich.org 70 i- (declare (string name)) Err bitreich.org 70 i- (if (eq ext:*case-mode* :upper) Err bitreich.org 70 i- (string-upcase name) Err bitreich.org 70 i- (string-downcase name))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Basic Pointer Operations Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype foreign-pointer () Err bitreich.org 70 i- 'sys:system-area-pointer) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline pointerp)) Err bitreich.org 70 i-(defun pointerp (ptr) Err bitreich.org 70 i- "Return true if 'ptr is a foreign pointer." Err bitreich.org 70 i- (sys:system-area-pointer-p ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline pointer-eq)) Err bitreich.org 70 i-(defun pointer-eq (ptr1 ptr2) Err bitreich.org 70 i- "Return true if 'ptr1 and 'ptr2 point to the same address." Err bitreich.org 70 i- (sys:sap= ptr1 ptr2)) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline null-pointer)) Err bitreich.org 70 i-(defun null-pointer () Err bitreich.org 70 i- "Construct and return a null pointer." Err bitreich.org 70 i- (sys:int-sap 0)) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline null-pointer-p)) Err bitreich.org 70 i-(defun null-pointer-p (ptr) Err bitreich.org 70 i- "Return true if 'ptr is a null pointer." Err bitreich.org 70 i- (zerop (sys:sap-int ptr))) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline inc-pointer)) Err bitreich.org 70 i-(defun inc-pointer (ptr offset) Err bitreich.org 70 i- "Return a pointer pointing 'offset bytes past 'ptr." Err bitreich.org 70 i- (sys:sap+ ptr offset)) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline make-pointer)) Err bitreich.org 70 i-(defun make-pointer (address) Err bitreich.org 70 i- "Return a pointer pointing to 'address." Err bitreich.org 70 i- (sys:int-sap address)) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline pointer-address)) Err bitreich.org 70 i-(defun pointer-address (ptr) Err bitreich.org 70 i- "Return the address pointed to by 'ptr." Err bitreich.org 70 i- (sys:sap-int ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-foreign-pointer ((var size &optional size-var) &body body) Err bitreich.org 70 i- "Bind 'var to 'size bytes of foreign memory during 'body. The Err bitreich.org 70 i- pointer in 'var is invalid beyond the dynamic extent of 'body, and Err bitreich.org 70 i- may be stack-allocated if supported by the implementation. If Err bitreich.org 70 i- 'size-var is supplied, it will be bound to 'size during 'body." Err bitreich.org 70 i- (unless size-var Err bitreich.org 70 i- (setf size-var (gensym (symbol-name '#:size)))) Err bitreich.org 70 i- ;; If the size is constant we can stack-allocate. Err bitreich.org 70 i- (cond ((constantp size) Err bitreich.org 70 i- (let ((alien-var (gensym (symbol-name '#:alien)))) Err bitreich.org 70 i- `(with-alien ((,alien-var (array (unsigned 8) ,(eval size)))) Err bitreich.org 70 i- (let ((,size-var ,size) Err bitreich.org 70 i- (,var (alien-sap ,alien-var))) Err bitreich.org 70 i- (declare (ignorable ,size-var)) Err bitreich.org 70 i- ,@body)))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- `(let ((,size-var ,size)) Err bitreich.org 70 i- (alien:with-bytes (,var ,size-var) Err bitreich.org 70 i- ,@body))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Allocation Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Functions and macros for allocating foreign memory on the stack and on the Err bitreich.org 70 i-;;; heap. The main CFFI package defines macros that wrap 'foreign-alloc and Err bitreich.org 70 i-;;; 'foreign-free in 'unwind-protect for the common usage when the memory has Err bitreich.org 70 i-;;; dynamic extent. Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-alloc (size) Err bitreich.org 70 i- "Allocate 'size bytes on the heap and return a pointer." Err bitreich.org 70 i- (declare (type (unsigned-byte #-64bit 32 #+64bit 64) size)) Err bitreich.org 70 i- (alien-funcall (extern-alien "malloc" Err bitreich.org 70 i- (function system-area-pointer unsigned)) Err bitreich.org 70 i- size)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-free (ptr) Err bitreich.org 70 i- "Free a 'ptr allocated by 'foreign-alloc." Err bitreich.org 70 i- (declare (type system-area-pointer ptr)) Err bitreich.org 70 i- (alien-funcall (extern-alien "free" Err bitreich.org 70 i- (function (values) system-area-pointer)) Err bitreich.org 70 i- ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Shareable Vectors Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-shareable-byte-vector (size) Err bitreich.org 70 i- "Create a Lisp vector of 'size bytes that can passed to Err bitreich.org 70 i- 'with-pointer-to-vector-data." Err bitreich.org 70 i- (make-array size :element-type '(unsigned-byte 8))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-pointer-to-vector-data ((ptr-var vector) &body body) Err bitreich.org 70 i- "Bind 'ptr-var to a foreign pointer to the data in 'vector." Err bitreich.org 70 i- (let ((vector-var (gensym (symbol-name '#:vector)))) Err bitreich.org 70 i- `(let ((,vector-var ,vector)) Err bitreich.org 70 i- (ext:with-pinned-object (,vector-var) Err bitreich.org 70 i- (let ((,ptr-var (sys:vector-sap ,vector-var))) Err bitreich.org 70 i- ,@body))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Dereferencing Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Define the %MEM-REF and %MEM-SET functions, as well as compiler Err bitreich.org 70 i-;;; macros that optimize the case where the type keyword is constant Err bitreich.org 70 i-;;; at compile-time. Err bitreich.org 70 i-(defmacro define-mem-accessors (&body pairs) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (defun %mem-ref (ptr type &optional (offset 0)) Err bitreich.org 70 i- (ecase type Err bitreich.org 70 i- ,@(loop for (keyword fn) in pairs Err bitreich.org 70 i- collect `(,keyword (,fn ptr offset))))) Err bitreich.org 70 i- (defun %mem-set (value ptr type &optional (offset 0)) Err bitreich.org 70 i- (ecase type Err bitreich.org 70 i- ,@(loop for (keyword fn) in pairs Err bitreich.org 70 i- collect `(,keyword (setf (,fn ptr offset) value))))) Err bitreich.org 70 i- (define-compiler-macro %mem-ref Err bitreich.org 70 i- (&whole form ptr type &optional (offset 0)) Err bitreich.org 70 i- (if (constantp type) Err bitreich.org 70 i- (ecase (eval type) Err bitreich.org 70 i- ,@(loop for (keyword fn) in pairs Err bitreich.org 70 i- collect `(,keyword `(,',fn ,ptr ,offset)))) Err bitreich.org 70 i- form)) Err bitreich.org 70 i- (define-compiler-macro %mem-set Err bitreich.org 70 i- (&whole form value ptr type &optional (offset 0)) Err bitreich.org 70 i- (if (constantp type) Err bitreich.org 70 i- (once-only (value) Err bitreich.org 70 i- (ecase (eval type) Err bitreich.org 70 i- ,@(loop for (keyword fn) in pairs Err bitreich.org 70 i- collect `(,keyword `(setf (,',fn ,ptr ,offset) Err bitreich.org 70 i- ,value))))) Err bitreich.org 70 i- form)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-mem-accessors Err bitreich.org 70 i- (:char sys:signed-sap-ref-8) Err bitreich.org 70 i- (:unsigned-char sys:sap-ref-8) Err bitreich.org 70 i- (:short sys:signed-sap-ref-16) Err bitreich.org 70 i- (:unsigned-short sys:sap-ref-16) Err bitreich.org 70 i- (:int sys:signed-sap-ref-32) Err bitreich.org 70 i- (:unsigned-int sys:sap-ref-32) Err bitreich.org 70 i- (:long #-64bit sys:signed-sap-ref-32 #+64bit sys:signed-sap-ref-64) Err bitreich.org 70 i- (:unsigned-long #-64bit sys:sap-ref-32 #+64bit sys:sap-ref-64) Err bitreich.org 70 i- (:long-long sys:signed-sap-ref-64) Err bitreich.org 70 i- (:unsigned-long-long sys:sap-ref-64) Err bitreich.org 70 i- (:float sys:sap-ref-single) Err bitreich.org 70 i- (:double sys:sap-ref-double) Err bitreich.org 70 i- #+long-float (:long-double sys:sap-ref-long) Err bitreich.org 70 i- (:pointer sys:sap-ref-sap)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Calling Foreign Functions Err bitreich.org 70 i- Err bitreich.org 70 i-(defun convert-foreign-type (type-keyword) Err bitreich.org 70 i- "Convert a CFFI type keyword to an ALIEN type." Err bitreich.org 70 i- (ecase type-keyword Err bitreich.org 70 i- (:char 'char) Err bitreich.org 70 i- (:unsigned-char 'unsigned-char) Err bitreich.org 70 i- (:short 'short) Err bitreich.org 70 i- (:unsigned-short 'unsigned-short) Err bitreich.org 70 i- (:int 'int) Err bitreich.org 70 i- (:unsigned-int 'unsigned-int) Err bitreich.org 70 i- (:long 'long) Err bitreich.org 70 i- (:unsigned-long 'unsigned-long) Err bitreich.org 70 i- (:long-long '(signed 64)) Err bitreich.org 70 i- (:unsigned-long-long '(unsigned 64)) Err bitreich.org 70 i- (:float 'single-float) Err bitreich.org 70 i- (:double 'double-float) Err bitreich.org 70 i- #+long-float Err bitreich.org 70 i- (:long-double 'long-float) Err bitreich.org 70 i- (:pointer 'system-area-pointer) Err bitreich.org 70 i- (:void 'void))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-type-size (type-keyword) Err bitreich.org 70 i- "Return the size in bytes of a foreign type." Err bitreich.org 70 i- (values (truncate (alien-internals:alien-type-bits Err bitreich.org 70 i- (alien-internals:parse-alien-type Err bitreich.org 70 i- (convert-foreign-type type-keyword))) Err bitreich.org 70 i- 8))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-type-alignment (type-keyword) Err bitreich.org 70 i- "Return the alignment in bytes of a foreign type." Err bitreich.org 70 i- (values (truncate (alien-internals:alien-type-alignment Err bitreich.org 70 i- (alien-internals:parse-alien-type Err bitreich.org 70 i- (convert-foreign-type type-keyword))) Err bitreich.org 70 i- 8))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-funcall-type-and-args (args) Err bitreich.org 70 i- "Return an 'alien function type for 'args." Err bitreich.org 70 i- (let ((return-type nil)) Err bitreich.org 70 i- (loop for (type arg) on args by #'cddr Err bitreich.org 70 i- if arg collect (convert-foreign-type type) into types Err bitreich.org 70 i- and collect arg into fargs Err bitreich.org 70 i- else do (setf return-type (convert-foreign-type type)) Err bitreich.org 70 i- finally (return (values types fargs return-type))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %%foreign-funcall (name types fargs rettype) Err bitreich.org 70 i- "Internal guts of '%foreign-funcall." Err bitreich.org 70 i- `(alien-funcall (extern-alien ,name (function ,rettype ,@types)) Err bitreich.org 70 i- ,@fargs)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %foreign-funcall (name args &key library convention) Err bitreich.org 70 i- "Perform a foreign function call, document it more later." Err bitreich.org 70 i- (declare (ignore library convention)) Err bitreich.org 70 i- (multiple-value-bind (types fargs rettype) Err bitreich.org 70 i- (foreign-funcall-type-and-args args) Err bitreich.org 70 i- `(%%foreign-funcall ,name ,types ,fargs ,rettype))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %foreign-funcall-pointer (ptr args &key convention) Err bitreich.org 70 i- "Funcall a pointer to a foreign function." Err bitreich.org 70 i- (declare (ignore convention)) Err bitreich.org 70 i- (multiple-value-bind (types fargs rettype) Err bitreich.org 70 i- (foreign-funcall-type-and-args args) Err bitreich.org 70 i- (with-unique-names (function) Err bitreich.org 70 i- `(with-alien ((,function (* (function ,rettype ,@types)) ,ptr)) Err bitreich.org 70 i- (alien-funcall ,function ,@fargs))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Callbacks Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro %defcallback (name rettype arg-names arg-types body Err bitreich.org 70 i- &key convention) Err bitreich.org 70 i- (declare (ignore convention)) Err bitreich.org 70 i- `(alien:defcallback ,name Err bitreich.org 70 i- (,(convert-foreign-type rettype) Err bitreich.org 70 i- ,@(mapcar (lambda (sym type) Err bitreich.org 70 i- (list sym (convert-foreign-type type))) Err bitreich.org 70 i- arg-names arg-types)) Err bitreich.org 70 i- ,body)) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline %callback)) Err bitreich.org 70 i-(defun %callback (name) Err bitreich.org 70 i- (alien:callback-sap name)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Loading and Closing Foreign Libraries Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %load-foreign-library (name path) Err bitreich.org 70 i- "Load the foreign library 'name." Err bitreich.org 70 i- (declare (ignore name)) Err bitreich.org 70 i- (ext:load-dynamic-object path)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %close-foreign-library (name) Err bitreich.org 70 i- "Closes the foreign library 'name." Err bitreich.org 70 i- (ext:close-dynamic-object name)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun native-namestring (pathname) Err bitreich.org 70 i- (ext:unix-namestring pathname nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Foreign Globals Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-symbol-pointer (name library) Err bitreich.org 70 i- "Returns a pointer to a foreign symbol 'name." Err bitreich.org 70 i- (declare (ignore library)) Err bitreich.org 70 i- (let ((sap (sys:foreign-symbol-address name))) Err bitreich.org 70 i- (if (zerop (sys:sap-int sap)) nil sap))) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/src/early-types.lisp b/3rdparties/software/cffi_0.20.0/src/early-types.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/src/early-types.lisp.gph bitreich.org 70 i@@ -1,713 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; early-types.lisp --- Low-level foreign type operations. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Copyright (C) 2005-2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Early Type Definitions Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; This module contains basic operations on foreign types. These Err bitreich.org 70 i-;;; definitions are in a separate file because they may be used in Err bitreich.org 70 i-;;; compiler macros defined later on. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Foreign Types Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Type specifications are of the form (type {args}*). The type Err bitreich.org 70 i-;;; parser can specify how its arguments should look like through a Err bitreich.org 70 i-;;; lambda list. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; "type" is a shortcut for "(type)", ie, no args were specified. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Examples of such types: boolean, (boolean), (boolean :int) If the Err bitreich.org 70 i-;;; boolean type parser specifies the lambda list: &optional Err bitreich.org 70 i-;;; (base-type :int), then all of the above three type specs would be Err bitreich.org 70 i-;;; parsed to an identical type. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Type parsers, defined with DEFINE-PARSE-METHOD should return a Err bitreich.org 70 i-;;; subtype of the foreign-type class. Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *type-parsers* (make-hash-table :test 'equal) Err bitreich.org 70 i- "Hash table of defined type parsers.") Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition cffi-error (error) Err bitreich.org 70 i- ()) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition foreign-type-error (cffi-error) Err bitreich.org 70 i- ((type-name :initarg :type-name Err bitreich.org 70 i- :initform (error "Must specify TYPE-NAME.") Err bitreich.org 70 i- :accessor foreign-type-error/type-name) Err bitreich.org 70 i- (namespace :initarg :namespace Err bitreich.org 70 i- :initform :default Err bitreich.org 70 i- :accessor foreign-type-error/namespace))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-type-error/compound-name (e) Err bitreich.org 70 i- (let ((name (foreign-type-error/type-name e)) Err bitreich.org 70 i- (namespace (foreign-type-error/namespace e))) Err bitreich.org 70 i- (if (eq namespace :default) Err bitreich.org 70 i- name Err bitreich.org 70 i- `(,namespace ,name)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition simple-foreign-type-error (simple-error foreign-type-error) Err bitreich.org 70 i- ()) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun simple-foreign-type-error (type-name namespace format-control &rest format-arguments) Err bitreich.org 70 i- (error 'simple-foreign-type-error Err bitreich.org 70 i- :type-name type-name :namespace namespace Err bitreich.org 70 i- :format-control format-control :format-arguments format-arguments)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition undefined-foreign-type-error (foreign-type-error) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:report (lambda (e stream) Err bitreich.org 70 i- (format stream "Unknown CFFI type ~S" (foreign-type-error/compound-name e))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun undefined-foreign-type-error (type-name &optional (namespace :default)) Err bitreich.org 70 i- (error 'undefined-foreign-type-error :type-name type-name :namespace namespace)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; TODO this is not according to the C namespace rules, Err bitreich.org 70 i-;; see bug: https://bugs.launchpad.net/cffi/+bug/1527947 Err bitreich.org 70 i-(deftype c-namespace-name () Err bitreich.org 70 i- '(member :default :struct :union)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; for C namespaces read: https://stackoverflow.com/questions/12579142/type-namespace-in-c Err bitreich.org 70 i-;; (section 6.2.3 Name spaces of identifiers) Err bitreich.org 70 i-;; NOTE: :struct is probably an unfortunate name for the tagged (?) namespace Err bitreich.org 70 i-(defun find-type-parser (symbol &optional (namespace :default)) Err bitreich.org 70 i- "Return the type parser for SYMBOL. NAMESPACE is either :DEFAULT (for Err bitreich.org 70 i-variables, functions, and typedefs) or :STRUCT (for structs, unions, and enums)." Err bitreich.org 70 i- (check-type symbol (and symbol (not null))) Err bitreich.org 70 i- (check-type namespace c-namespace-name) Err bitreich.org 70 i- (or (gethash (cons namespace symbol) *type-parsers*) Err bitreich.org 70 i- (undefined-foreign-type-error symbol namespace))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun (setf find-type-parser) (func symbol &optional (namespace :default)) Err bitreich.org 70 i- "Set the type parser for SYMBOL." Err bitreich.org 70 i- (check-type symbol (and symbol (not null))) Err bitreich.org 70 i- (check-type namespace c-namespace-name) Err bitreich.org 70 i- ;; TODO Shall we signal a redefinition warning here? Err bitreich.org 70 i- (setf (gethash (cons namespace symbol) *type-parsers*) func)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun undefine-foreign-type (symbol &optional (namespace :default)) Err bitreich.org 70 i- (remhash (cons namespace symbol) *type-parsers*) Err bitreich.org 70 i- (values)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Using a generic function would have been nicer but generates lots Err bitreich.org 70 i-;;; of style warnings in SBCL. (Silly reason, yes.) Err bitreich.org 70 i-(defmacro define-parse-method (name lambda-list &body body) Err bitreich.org 70 i- "Define a type parser on NAME and lists whose CAR is NAME." Err bitreich.org 70 i- (discard-docstring body) Err bitreich.org 70 i- (warn-if-kw-or-belongs-to-cl name) Err bitreich.org 70 i- `(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (setf (find-type-parser ',name) Err bitreich.org 70 i- (lambda ,lambda-list ,@body)) Err bitreich.org 70 i- ',name)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Utility function for the simple case where the type takes no Err bitreich.org 70 i-;;; arguments. Err bitreich.org 70 i-(defun notice-foreign-type (name type &optional (namespace :default)) Err bitreich.org 70 i- (setf (find-type-parser name namespace) (lambda () type)) Err bitreich.org 70 i- name) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Generic Functions on Types Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric canonicalize (foreign-type) Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "Return the most primitive foreign type for FOREIGN-TYPE, either a built-in Err bitreich.org 70 i-type--a keyword--or a struct/union type--a list of the form (:STRUCT/:UNION name). Err bitreich.org 70 i-Signals an error if FOREIGN-TYPE is undefined.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric aggregatep (foreign-type) Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "Return true if FOREIGN-TYPE is an aggregate type.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric foreign-type-alignment (foreign-type) Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "Return the structure alignment in bytes of a foreign type.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric foreign-type-size (foreign-type) Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "Return the size in bytes of a foreign type.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric unparse-type (foreign-type) Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "Unparse FOREIGN-TYPE to a type specification (symbol or list).")) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Foreign Types Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass foreign-type () Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Base class for all foreign types.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod make-load-form ((type foreign-type) &optional env) Err bitreich.org 70 i- "Return the form used to dump types to a FASL file." Err bitreich.org 70 i- (declare (ignore env)) Err bitreich.org 70 i- `(parse-type ',(unparse-type type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod foreign-type-size (type) Err bitreich.org 70 i- "Return the size in bytes of a foreign type." Err bitreich.org 70 i- (foreign-type-size (parse-type type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass named-foreign-type (foreign-type) Err bitreich.org 70 i- ((name Err bitreich.org 70 i- ;; Name of this foreign type, a symbol. Err bitreich.org 70 i- :initform (error "Must specify a NAME.") Err bitreich.org 70 i- :initarg :name Err bitreich.org 70 i- :accessor name))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod print-object ((type named-foreign-type) stream) Err bitreich.org 70 i- "Print a FOREIGN-TYPEDEF instance to STREAM unreadably." Err bitreich.org 70 i- (print-unreadable-object (type stream :type t :identity nil) Err bitreich.org 70 i- (format stream "~S" (name type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Return the type's name which can be passed to PARSE-TYPE. If Err bitreich.org 70 i-;;; that's not the case for some subclass of NAMED-FOREIGN-TYPE then Err bitreich.org 70 i-;;; it should specialize UNPARSE-TYPE. Err bitreich.org 70 i-(defmethod unparse-type ((type named-foreign-type)) Err bitreich.org 70 i- (name type)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Built-In Foreign Types Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass foreign-built-in-type (foreign-type) Err bitreich.org 70 i- ((type-keyword Err bitreich.org 70 i- ;; Keyword in CFFI-SYS representing this type. Err bitreich.org 70 i- :initform (error "A type keyword is required.") Err bitreich.org 70 i- :initarg :type-keyword Err bitreich.org 70 i- :accessor type-keyword)) Err bitreich.org 70 i- (:documentation "A built-in foreign type.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod canonicalize ((type foreign-built-in-type)) Err bitreich.org 70 i- "Return the built-in type keyword for TYPE." Err bitreich.org 70 i- (type-keyword type)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod aggregatep ((type foreign-built-in-type)) Err bitreich.org 70 i- "Returns false, built-in types are never aggregate types." Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod foreign-type-alignment ((type foreign-built-in-type)) Err bitreich.org 70 i- "Return the alignment of a built-in type." Err bitreich.org 70 i- (%foreign-type-alignment (type-keyword type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod foreign-type-size ((type foreign-built-in-type)) Err bitreich.org 70 i- "Return the size of a built-in type." Err bitreich.org 70 i- (%foreign-type-size (type-keyword type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod unparse-type ((type foreign-built-in-type)) Err bitreich.org 70 i- "Returns the symbolic representation of a built-in type." Err bitreich.org 70 i- (type-keyword type)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod print-object ((type foreign-built-in-type) stream) Err bitreich.org 70 i- "Print a FOREIGN-TYPE instance to STREAM unreadably." Err bitreich.org 70 i- (print-unreadable-object (type stream :type t :identity nil) Err bitreich.org 70 i- (format stream "~S" (type-keyword type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *built-in-foreign-types* nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro define-built-in-foreign-type (keyword) Err bitreich.org 70 i- "Defines a built-in foreign-type." Err bitreich.org 70 i- `(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (pushnew ,keyword *built-in-foreign-types*) Err bitreich.org 70 i- (notice-foreign-type Err bitreich.org 70 i- ,keyword (make-instance 'foreign-built-in-type :type-keyword ,keyword)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Foreign Pointer Types Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass foreign-pointer-type (foreign-built-in-type) Err bitreich.org 70 i- ((pointer-type Err bitreich.org 70 i- ;; Type of object pointed at by this pointer, or nil for an Err bitreich.org 70 i- ;; untyped (void) pointer. Err bitreich.org 70 i- :initform nil Err bitreich.org 70 i- :initarg :pointer-type Err bitreich.org 70 i- :accessor pointer-type)) Err bitreich.org 70 i- (:default-initargs :type-keyword :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Define the type parser for the :POINTER type. If no type argument Err bitreich.org 70 i-;;; is provided, a void pointer will be created. Err bitreich.org 70 i-(let ((void-pointer (make-instance 'foreign-pointer-type))) Err bitreich.org 70 i- (define-parse-method :pointer (&optional type) Err bitreich.org 70 i- (if type Err bitreich.org 70 i- (make-instance 'foreign-pointer-type :pointer-type (parse-type type)) Err bitreich.org 70 i- ;; A bit of premature optimization here. Err bitreich.org 70 i- void-pointer))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Unparse a foreign pointer type when dumping to a fasl. Err bitreich.org 70 i-(defmethod unparse-type ((type foreign-pointer-type)) Err bitreich.org 70 i- (if (pointer-type type) Err bitreich.org 70 i- `(:pointer ,(unparse-type (pointer-type type))) Err bitreich.org 70 i- :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Print a foreign pointer type unreadably in unparsed form. Err bitreich.org 70 i-(defmethod print-object ((type foreign-pointer-type) stream) Err bitreich.org 70 i- (print-unreadable-object (type stream :type t :identity nil) Err bitreich.org 70 i- (format stream "~S" (unparse-type type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Structure Type Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric bare-struct-type-p (foreign-type) Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "Return true if FOREIGN-TYPE is a bare struct type or an alias of a bare struct type. ")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod bare-struct-type-p ((type foreign-type)) Err bitreich.org 70 i- "Return true if FOREIGN-TYPE is a bare struct type or an alias of a bare struct type. " Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass foreign-struct-type (named-foreign-type) Err bitreich.org 70 i- ((slots Err bitreich.org 70 i- ;; Hash table of slots in this structure, keyed by name. Err bitreich.org 70 i- :initform (make-hash-table) Err bitreich.org 70 i- :initarg :slots Err bitreich.org 70 i- :accessor slots) Err bitreich.org 70 i- (size Err bitreich.org 70 i- ;; Cached size in bytes of this structure. Err bitreich.org 70 i- :initarg :size Err bitreich.org 70 i- :accessor size) Err bitreich.org 70 i- (alignment Err bitreich.org 70 i- ;; This struct's alignment requirements Err bitreich.org 70 i- :initarg :alignment Err bitreich.org 70 i- :accessor alignment) Err bitreich.org 70 i- (bare Err bitreich.org 70 i- ;; we use this flag to support the (old, deprecated) semantics of Err bitreich.org 70 i- ;; bare struct types. FOO means (:POINTER (:STRUCT FOO) in Err bitreich.org 70 i- ;; functions declarations whereas FOO in a structure definition is Err bitreich.org 70 i- ;; a proper aggregate type: (:STRUCT FOO), etc. Err bitreich.org 70 i- :initform nil Err bitreich.org 70 i- :initarg :bare Err bitreich.org 70 i- :reader bare-struct-type-p))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun slots-in-order (structure-type) Err bitreich.org 70 i- "A list of the structure's slots in order." Err bitreich.org 70 i- (sort (loop for slots being the hash-value of (structure-slots structure-type) Err bitreich.org 70 i- collect slots) Err bitreich.org 70 i- #'< Err bitreich.org 70 i- :key 'slot-offset)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod canonicalize ((type foreign-struct-type)) Err bitreich.org 70 i- (if (bare-struct-type-p type) Err bitreich.org 70 i- :pointer Err bitreich.org 70 i- `(:struct ,(name type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod unparse-type ((type foreign-struct-type)) Err bitreich.org 70 i- (if (bare-struct-type-p type) Err bitreich.org 70 i- (name type) Err bitreich.org 70 i- (canonicalize type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod aggregatep ((type foreign-struct-type)) Err bitreich.org 70 i- "Returns true, structure types are aggregate." Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod foreign-type-size ((type foreign-struct-type)) Err bitreich.org 70 i- "Return the size in bytes of a foreign structure type." Err bitreich.org 70 i- (size type)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod foreign-type-alignment ((type foreign-struct-type)) Err bitreich.org 70 i- "Return the alignment requirements for this struct." Err bitreich.org 70 i- (alignment type)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass foreign-union-type (foreign-struct-type) ()) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod canonicalize ((type foreign-union-type)) Err bitreich.org 70 i- (if (bare-struct-type-p type) Err bitreich.org 70 i- :pointer Err bitreich.org 70 i- `(:union ,(name type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Foreign Typedefs Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass foreign-type-alias (foreign-type) Err bitreich.org 70 i- ((actual-type Err bitreich.org 70 i- ;; The FOREIGN-TYPE instance this type is an alias for. Err bitreich.org 70 i- :initarg :actual-type Err bitreich.org 70 i- :accessor actual-type Err bitreich.org 70 i- :initform (error "Must specify an ACTUAL-TYPE."))) Err bitreich.org 70 i- (:documentation "A type that aliases another type.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod canonicalize ((type foreign-type-alias)) Err bitreich.org 70 i- "Return the built-in type keyword for TYPE." Err bitreich.org 70 i- (canonicalize (actual-type type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod aggregatep ((type foreign-type-alias)) Err bitreich.org 70 i- "Return true if TYPE's actual type is aggregate." Err bitreich.org 70 i- (aggregatep (actual-type type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod foreign-type-alignment ((type foreign-type-alias)) Err bitreich.org 70 i- "Return the alignment of a foreign typedef." Err bitreich.org 70 i- (foreign-type-alignment (actual-type type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod foreign-type-size ((type foreign-type-alias)) Err bitreich.org 70 i- "Return the size in bytes of a foreign typedef." Err bitreich.org 70 i- (foreign-type-size (actual-type type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass foreign-typedef (foreign-type-alias named-foreign-type) Err bitreich.org 70 i- ()) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun follow-typedefs (type) Err bitreich.org 70 i- (if (typep type 'foreign-typedef) Err bitreich.org 70 i- (follow-typedefs (actual-type type)) Err bitreich.org 70 i- type)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod bare-struct-type-p ((type foreign-typedef)) Err bitreich.org 70 i- (bare-struct-type-p (follow-typedefs type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun structure-slots (type) Err bitreich.org 70 i- "The hash table of slots for the structure type." Err bitreich.org 70 i- (slots (follow-typedefs type))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Type Translators Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Type translation is done with generic functions at runtime for Err bitreich.org 70 i-;;; subclasses of TRANSLATABLE-FOREIGN-TYPE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The main interface for defining type translations is through the Err bitreich.org 70 i-;;; generic functions TRANSLATE-{TO,FROM}-FOREIGN and Err bitreich.org 70 i-;;; FREE-TRANSLATED-OBJECT. Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass translatable-foreign-type (foreign-type) ()) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; ENHANCED-FOREIGN-TYPE is used to define translations on top of Err bitreich.org 70 i-;;; previously defined foreign types. Err bitreich.org 70 i-(defclass enhanced-foreign-type (translatable-foreign-type Err bitreich.org 70 i- foreign-type-alias) Err bitreich.org 70 i- ((unparsed-type :accessor unparsed-type))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; If actual-type isn't parsed already, let's parse it. This way we Err bitreich.org 70 i-;;; don't have to export PARSE-TYPE and users don't have to worry Err bitreich.org 70 i-;;; about this in DEFINE-FOREIGN-TYPE or DEFINE-PARSE-METHOD. Err bitreich.org 70 i-(defmethod initialize-instance :after ((type enhanced-foreign-type) &key) Err bitreich.org 70 i- (unless (typep (actual-type type) 'foreign-type) Err bitreich.org 70 i- (setf (actual-type type) (parse-type (actual-type type))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod unparse-type ((type enhanced-foreign-type)) Err bitreich.org 70 i- (unparsed-type type)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Checks NAMEs, not object identity. Err bitreich.org 70 i-(defun check-for-typedef-cycles (type) Err bitreich.org 70 i- (let ((seen (make-hash-table :test 'eq))) Err bitreich.org 70 i- (labels ((%check (cur-type) Err bitreich.org 70 i- (when (typep cur-type 'foreign-typedef) Err bitreich.org 70 i- (when (gethash (name cur-type) seen) Err bitreich.org 70 i- (simple-foreign-type-error type :default Err bitreich.org 70 i- "Detected cycle in type ~S." type)) Err bitreich.org 70 i- (setf (gethash (name cur-type) seen) t) Err bitreich.org 70 i- (%check (actual-type cur-type))))) Err bitreich.org 70 i- (%check type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Only now we define PARSE-TYPE because it needs to do some extra Err bitreich.org 70 i-;;; work for ENHANCED-FOREIGN-TYPES. Err bitreich.org 70 i-(defun parse-type (type) Err bitreich.org 70 i- (let* ((spec (ensure-list type)) Err bitreich.org 70 i- (ptype (apply (find-type-parser (car spec)) (cdr spec)))) Err bitreich.org 70 i- (when (typep ptype 'foreign-typedef) Err bitreich.org 70 i- (check-for-typedef-cycles ptype)) Err bitreich.org 70 i- (when (typep ptype 'enhanced-foreign-type) Err bitreich.org 70 i- (setf (unparsed-type ptype) type)) Err bitreich.org 70 i- ptype)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ensure-parsed-base-type (type) Err bitreich.org 70 i- (follow-typedefs Err bitreich.org 70 i- (if (typep type 'foreign-type) Err bitreich.org 70 i- type Err bitreich.org 70 i- (parse-type type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun canonicalize-foreign-type (type) Err bitreich.org 70 i- "Convert TYPE to a built-in type by following aliases. Err bitreich.org 70 i-Signals an error if the type cannot be resolved." Err bitreich.org 70 i- (canonicalize (parse-type type))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Translate VALUE to a foreign object of the type represented by Err bitreich.org 70 i-;;; TYPE, which will be a subclass of TRANSLATABLE-FOREIGN-TYPE. Err bitreich.org 70 i-;;; Returns the foreign value and an optional second value which will Err bitreich.org 70 i-;;; be passed to FREE-TRANSLATED-OBJECT as the PARAM argument. Err bitreich.org 70 i-(defgeneric translate-to-foreign (value type) Err bitreich.org 70 i- (:method (value type) Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- value)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric translate-into-foreign-memory (value type pointer) Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "Translate the Lisp value into the foreign memory location given by pointer. Return value is not used.") Err bitreich.org 70 i- (:argument-precedence-order type value pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Similar to TRANSLATE-TO-FOREIGN, used exclusively by Err bitreich.org 70 i-;;; (SETF FOREIGN-STRUCT-SLOT-VALUE). Err bitreich.org 70 i-(defgeneric translate-aggregate-to-foreign (ptr value type)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Translate the foreign object VALUE from the type repsented by Err bitreich.org 70 i-;;; TYPE, which will be a subclass of TRANSLATABLE-FOREIGN-TYPE. Err bitreich.org 70 i-;;; Returns the converted Lisp value. Err bitreich.org 70 i-(defgeneric translate-from-foreign (value type) Err bitreich.org 70 i- (:argument-precedence-order type value) Err bitreich.org 70 i- (:method (value type) Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- value)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Free an object allocated by TRANSLATE-TO-FOREIGN. VALUE is a Err bitreich.org 70 i-;;; foreign object of the type represented by TYPE, which will be a Err bitreich.org 70 i-;;; TRANSLATABLE-FOREIGN-TYPE subclass. PARAM, if present, contains Err bitreich.org 70 i-;;; the second value returned by TRANSLATE-TO-FOREIGN, and is used to Err bitreich.org 70 i-;;; communicate between the two functions. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; FIXME: I don't think this PARAM argument is necessary anymore Err bitreich.org 70 i-;;; because the TYPE object can contain that information. [2008-12-31 LO] Err bitreich.org 70 i-(defgeneric free-translated-object (value type param) Err bitreich.org 70 i- (:method (value type param) Err bitreich.org 70 i- (declare (ignore value type param)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;## Macroexpansion Time Translation Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The following EXPAND-* generic functions are similar to their Err bitreich.org 70 i-;;; TRANSLATE-* counterparts but are usually called at macroexpansion Err bitreich.org 70 i-;;; time. They offer a way to optimize the runtime translators. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; This special variable is bound by the various :around methods Err bitreich.org 70 i-;;; below to the respective form generated by the above %EXPAND-* Err bitreich.org 70 i-;;; functions. This way, an expander can "bail out" by calling the Err bitreich.org 70 i-;;; next method. All 6 of the below-defined GFs have a default method Err bitreich.org 70 i-;;; that simply answers the rtf bound by the default :around method. Err bitreich.org 70 i-(defvar *runtime-translator-form*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; EXPAND-FROM-FOREIGN Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric expand-from-foreign (value type) Err bitreich.org 70 i- (:method (value type) Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- value)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod expand-from-foreign :around (value (type translatable-foreign-type)) Err bitreich.org 70 i- (let ((*runtime-translator-form* `(translate-from-foreign ,value ,type))) Err bitreich.org 70 i- (call-next-method))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod expand-from-foreign (value (type translatable-foreign-type)) Err bitreich.org 70 i- (declare (ignore value)) Err bitreich.org 70 i- *runtime-translator-form*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; EXPAND-TO-FOREIGN Err bitreich.org 70 i- Err bitreich.org 70 i-;; The second return value is used to tell EXPAND-TO-FOREIGN-DYN that Err bitreich.org 70 i-;; an unspecialized method was called. Err bitreich.org 70 i-(defgeneric expand-to-foreign (value type) Err bitreich.org 70 i- (:method (value type) Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- (values value t))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod expand-to-foreign :around (value (type translatable-foreign-type)) Err bitreich.org 70 i- (let ((*runtime-translator-form* `(translate-to-foreign ,value ,type))) Err bitreich.org 70 i- (call-next-method))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod expand-to-foreign (value (type translatable-foreign-type)) Err bitreich.org 70 i- (declare (ignore value)) Err bitreich.org 70 i- (values *runtime-translator-form* t)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; EXPAND-INTO-FOREIGN-MEMORY Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric expand-into-foreign-memory (value type ptr) Err bitreich.org 70 i- (:method (value type ptr) Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- value)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod expand-into-foreign-memory :around Err bitreich.org 70 i- (value (type translatable-foreign-type) ptr) Err bitreich.org 70 i- (let ((*runtime-translator-form* Err bitreich.org 70 i- `(translate-into-foreign-memory ,value ,type ,ptr))) Err bitreich.org 70 i- (call-next-method))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod expand-into-foreign-memory (value (type translatable-foreign-type) ptr) Err bitreich.org 70 i- (declare (ignore value)) Err bitreich.org 70 i- *runtime-translator-form*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; EXPAND-TO-FOREIGN-DYN Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric expand-to-foreign-dyn (value var body type) Err bitreich.org 70 i- (:method (value var body type) Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- `(let ((,var ,value)) ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod expand-to-foreign-dyn :around Err bitreich.org 70 i- (value var body (type enhanced-foreign-type)) Err bitreich.org 70 i- (let ((*runtime-translator-form* Err bitreich.org 70 i- (with-unique-names (param) Err bitreich.org 70 i- `(multiple-value-bind (,var ,param) Err bitreich.org 70 i- (translate-to-foreign ,value ,type) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn ,@body) Err bitreich.org 70 i- (free-translated-object ,var ,type ,param)))))) Err bitreich.org 70 i- (call-next-method))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; If this method is called it means the user hasn't defined a Err bitreich.org 70 i-;;; to-foreign-dyn expansion, so we use the to-foreign expansion. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; However, we do so *only* if there's a specialized Err bitreich.org 70 i-;;; EXPAND-TO-FOREIGN for TYPE because otherwise we want to use the Err bitreich.org 70 i-;;; above *RUNTIME-TRANSLATOR-FORM* which includes a call to Err bitreich.org 70 i-;;; FREE-TRANSLATED-OBJECT. (Or else there would occur no translation Err bitreich.org 70 i-;;; at all.) Err bitreich.org 70 i-(defun foreign-expand-runtime-translator-or-binding (value var body type) Err bitreich.org 70 i- (multiple-value-bind (expansion default-etp-p) Err bitreich.org 70 i- (expand-to-foreign value type) Err bitreich.org 70 i- (if default-etp-p Err bitreich.org 70 i- *runtime-translator-form* Err bitreich.org 70 i- `(let ((,var ,expansion)) Err bitreich.org 70 i- ,@body)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod expand-to-foreign-dyn (value var body (type enhanced-foreign-type)) Err bitreich.org 70 i- (foreign-expand-runtime-translator-or-binding value var body type)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; EXPAND-TO-FOREIGN-DYN-INDIRECT Err bitreich.org 70 i-;;; Like expand-to-foreign-dyn, but always give form that returns a Err bitreich.org 70 i-;;; pointer to the object, even if it's directly representable in Err bitreich.org 70 i-;;; CL, e.g. numbers. Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric expand-to-foreign-dyn-indirect (value var body type) Err bitreich.org 70 i- (:method (value var body type) Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- `(let ((,var ,value)) ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod expand-to-foreign-dyn-indirect :around Err bitreich.org 70 i- (value var body (type translatable-foreign-type)) Err bitreich.org 70 i- (let ((*runtime-translator-form* Err bitreich.org 70 i- `(with-foreign-object (,var ',(unparse-type type)) Err bitreich.org 70 i- (translate-into-foreign-memory ,value ,type ,var) Err bitreich.org 70 i- ,@body))) Err bitreich.org 70 i- (call-next-method))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod expand-to-foreign-dyn-indirect Err bitreich.org 70 i- (value var body (type foreign-pointer-type)) Err bitreich.org 70 i- `(with-foreign-object (,var :pointer) Err bitreich.org 70 i- (translate-into-foreign-memory ,value ,type ,var) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod expand-to-foreign-dyn-indirect Err bitreich.org 70 i- (value var body (type foreign-built-in-type)) Err bitreich.org 70 i- `(with-foreign-object (,var ,type) Err bitreich.org 70 i- (translate-into-foreign-memory ,value ,type ,var) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod expand-to-foreign-dyn-indirect Err bitreich.org 70 i- (value var body (type translatable-foreign-type)) Err bitreich.org 70 i- (foreign-expand-runtime-translator-or-binding value var body type)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod expand-to-foreign-dyn-indirect (value var body (type foreign-type-alias)) Err bitreich.org 70 i- (expand-to-foreign-dyn-indirect value var body (actual-type type))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; User interface for converting values from/to foreign using the Err bitreich.org 70 i-;;; type translators. The compiler macros use the expanders when Err bitreich.org 70 i-;;; possible. Err bitreich.org 70 i- Err bitreich.org 70 i-(defun convert-to-foreign (value type) Err bitreich.org 70 i- (translate-to-foreign value (parse-type type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-compiler-macro convert-to-foreign (value type) Err bitreich.org 70 i- (if (constantp type) Err bitreich.org 70 i- (expand-to-foreign value (parse-type (eval type))) Err bitreich.org 70 i- `(translate-to-foreign ,value (parse-type ,type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun convert-from-foreign (value type) Err bitreich.org 70 i- (translate-from-foreign value (parse-type type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-compiler-macro convert-from-foreign (value type) Err bitreich.org 70 i- (if (constantp type) Err bitreich.org 70 i- (expand-from-foreign value (parse-type (eval type))) Err bitreich.org 70 i- `(translate-from-foreign ,value (parse-type ,type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun convert-into-foreign-memory (value type ptr) Err bitreich.org 70 i- (translate-into-foreign-memory value (parse-type type) ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-compiler-macro convert-into-foreign-memory (value type ptr) Err bitreich.org 70 i- (if (constantp type) Err bitreich.org 70 i- (expand-into-foreign-memory value (parse-type (eval type)) ptr) Err bitreich.org 70 i- `(translate-into-foreign-memory ,value (parse-type ,type) ,ptr))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun free-converted-object (value type param) Err bitreich.org 70 i- (free-translated-object value (parse-type type) param)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Enhanced typedefs Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass enhanced-typedef (foreign-typedef) Err bitreich.org 70 i- ()) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-to-foreign (value (type enhanced-typedef)) Err bitreich.org 70 i- (translate-to-foreign value (actual-type type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-into-foreign-memory (value (type enhanced-typedef) pointer) Err bitreich.org 70 i- (translate-into-foreign-memory value (actual-type type) pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-from-foreign (value (type enhanced-typedef)) Err bitreich.org 70 i- (translate-from-foreign value (actual-type type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod free-translated-object (value (type enhanced-typedef) param) Err bitreich.org 70 i- (free-translated-object value (actual-type type) param)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod expand-from-foreign (value (type enhanced-typedef)) Err bitreich.org 70 i- (expand-from-foreign value (actual-type type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod expand-to-foreign (value (type enhanced-typedef)) Err bitreich.org 70 i- (expand-to-foreign value (actual-type type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod expand-to-foreign-dyn (value var body (type enhanced-typedef)) Err bitreich.org 70 i- (expand-to-foreign-dyn value var body (actual-type type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod expand-into-foreign-memory (value (type enhanced-typedef) ptr) Err bitreich.org 70 i- (expand-into-foreign-memory value (actual-type type) ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# User-defined Types and Translations. Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro define-foreign-type (name supers slots &rest options) Err bitreich.org 70 i- (multiple-value-bind (new-options simple-parser actual-type initargs) Err bitreich.org 70 i- (let ((keywords '(:simple-parser :actual-type :default-initargs))) Err bitreich.org 70 i- (apply #'values Err bitreich.org 70 i- (remove-if (lambda (opt) (member (car opt) keywords)) options) Err bitreich.org 70 i- (mapcar (lambda (kw) (cdr (assoc kw options))) keywords))) Err bitreich.org 70 i- `(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (defclass ,name ,(or supers '(enhanced-foreign-type)) Err bitreich.org 70 i- ,slots Err bitreich.org 70 i- (:default-initargs ,@(when actual-type `(:actual-type ',actual-type)) Err bitreich.org 70 i- ,@initargs) Err bitreich.org 70 i- ,@new-options) Err bitreich.org 70 i- ,(when simple-parser Err bitreich.org 70 i- `(define-parse-method ,(car simple-parser) (&rest args) Err bitreich.org 70 i- (apply #'make-instance ',name args))) Err bitreich.org 70 i- ',name))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro defctype (name base-type &optional documentation) Err bitreich.org 70 i- "Utility macro for simple C-like typedefs." Err bitreich.org 70 i- (declare (ignore documentation)) Err bitreich.org 70 i- (warn-if-kw-or-belongs-to-cl name) Err bitreich.org 70 i- (let* ((btype (parse-type base-type)) Err bitreich.org 70 i- (dtype (if (typep btype 'enhanced-foreign-type) Err bitreich.org 70 i- 'enhanced-typedef Err bitreich.org 70 i- 'foreign-typedef))) Err bitreich.org 70 i- `(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (notice-foreign-type Err bitreich.org 70 i- ',name (make-instance ',dtype :name ',name :actual-type ,btype))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; For Verrazano. We memoize the type this way to help detect cycles. Err bitreich.org 70 i-(defmacro defctype* (name base-type) Err bitreich.org 70 i- "Like DEFCTYPE but defers instantiation until parse-time." Err bitreich.org 70 i- `(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (let (memoized-type) Err bitreich.org 70 i- (define-parse-method ,name () Err bitreich.org 70 i- (unless memoized-type Err bitreich.org 70 i- (setf memoized-type (make-instance 'foreign-typedef :name ',name Err bitreich.org 70 i- :actual-type nil) Err bitreich.org 70 i- (actual-type memoized-type) (parse-type ',base-type))) Err bitreich.org 70 i- memoized-type)))) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/src/enum.lisp b/3rdparties/software/cffi_0.20.0/src/enum.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/src/enum.lisp.gph bitreich.org 70 i@@ -1,369 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; enum.lisp --- Defining foreign constants as Lisp keywords. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi) Err bitreich.org 70 i- Err bitreich.org 70 i-;; TODO the accessors names are rather inconsistent: Err bitreich.org 70 i-;; FOREIGN-ENUM-VALUE FOREIGN-BITFIELD-VALUE Err bitreich.org 70 i-;; FOREIGN-ENUM-KEYWORD FOREIGN-BITFIELD-SYMBOLS Err bitreich.org 70 i-;; FOREIGN-ENUM-KEYWORD-LIST FOREIGN-BITFIELD-SYMBOL-LIST Err bitreich.org 70 i-;; I'd rename them to: FOREIGN-*-KEY(S) and FOREIGN-*-ALL-KEYS -- attila Err bitreich.org 70 i- Err bitreich.org 70 i-;; TODO bitfield is a confusing name, because the C standard calls Err bitreich.org 70 i-;; the "int foo : 3" type as a bitfield. Maybe rename to defbitmask? Err bitreich.org 70 i-;; -- attila Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Foreign Constants as Lisp Keywords Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; This module defines the DEFCENUM macro, which provides an Err bitreich.org 70 i-;;; interface for defining a type and associating a set of integer Err bitreich.org 70 i-;;; constants with keyword symbols for that type. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The keywords are automatically translated to the appropriate Err bitreich.org 70 i-;;; constant for the type by a type translator when passed as Err bitreich.org 70 i-;;; arguments or a return value to a foreign function. Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass foreign-enum (named-foreign-type enhanced-foreign-type) Err bitreich.org 70 i- ((keyword-values Err bitreich.org 70 i- :initform (error "Must specify KEYWORD-VALUES.") Err bitreich.org 70 i- :initarg :keyword-values Err bitreich.org 70 i- :reader keyword-values) Err bitreich.org 70 i- (value-keywords Err bitreich.org 70 i- :initform (error "Must specify VALUE-KEYWORDS.") Err bitreich.org 70 i- :initarg :value-keywords Err bitreich.org 70 i- :reader value-keywords)) Err bitreich.org 70 i- (:documentation "Describes a foreign enumerated type.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype enum-key () Err bitreich.org 70 i- '(and symbol (not null))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter +valid-enum-base-types+ *built-in-integer-types*) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun parse-foreign-enum-like (type-name base-type values Err bitreich.org 70 i- &optional field-mode-p) Err bitreich.org 70 i- (let ((keyword-values (make-hash-table :test 'eq)) Err bitreich.org 70 i- (value-keywords (make-hash-table)) Err bitreich.org 70 i- (field-keywords (list)) Err bitreich.org 70 i- (bit-index->keyword (make-array 0 :adjustable t Err bitreich.org 70 i- :element-type t)) Err bitreich.org 70 i- (default-value (if field-mode-p 1 0)) Err bitreich.org 70 i- (most-extreme-value 0) Err bitreich.org 70 i- (has-negative-value? nil)) Err bitreich.org 70 i- (dolist (pair values) Err bitreich.org 70 i- (destructuring-bind (keyword &optional (value default-value valuep)) Err bitreich.org 70 i- (ensure-list pair) Err bitreich.org 70 i- (check-type keyword enum-key) Err bitreich.org 70 i- ;;(check-type value integer) Err bitreich.org 70 i- (when (> (abs value) (abs most-extreme-value)) Err bitreich.org 70 i- (setf most-extreme-value value)) Err bitreich.org 70 i- (when (minusp value) Err bitreich.org 70 i- (setf has-negative-value? t)) Err bitreich.org 70 i- (if field-mode-p Err bitreich.org 70 i- (if valuep Err bitreich.org 70 i- (when (and (>= value default-value) Err bitreich.org 70 i- (single-bit-p value)) Err bitreich.org 70 i- (setf default-value (ash value 1))) Err bitreich.org 70 i- (setf default-value (ash default-value 1))) Err bitreich.org 70 i- (setf default-value (1+ value))) Err bitreich.org 70 i- (if (gethash keyword keyword-values) Err bitreich.org 70 i- (error "A foreign enum cannot contain duplicate keywords: ~S." Err bitreich.org 70 i- keyword) Err bitreich.org 70 i- (setf (gethash keyword keyword-values) value)) Err bitreich.org 70 i- ;; This is completely arbitrary behaviour: we keep the last Err bitreich.org 70 i- ;; value->keyword mapping. I suppose the opposite would be Err bitreich.org 70 i- ;; just as good (keeping the first). Returning a list with all Err bitreich.org 70 i- ;; the keywords might be a solution too? Suggestions Err bitreich.org 70 i- ;; welcome. --luis Err bitreich.org 70 i- (setf (gethash value value-keywords) keyword) Err bitreich.org 70 i- (when (and field-mode-p Err bitreich.org 70 i- (single-bit-p value)) Err bitreich.org 70 i- (let ((bit-index (1- (integer-length value)))) Err bitreich.org 70 i- (push keyword field-keywords) Err bitreich.org 70 i- (when (<= (array-dimension bit-index->keyword 0) Err bitreich.org 70 i- bit-index) Err bitreich.org 70 i- (setf bit-index->keyword Err bitreich.org 70 i- (adjust-array bit-index->keyword (1+ bit-index) Err bitreich.org 70 i- :initial-element nil))) Err bitreich.org 70 i- (setf (aref bit-index->keyword bit-index) Err bitreich.org 70 i- keyword))))) Err bitreich.org 70 i- (if base-type Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (setf base-type (canonicalize-foreign-type base-type)) Err bitreich.org 70 i- ;; I guess we don't lose much by not strictly adhering to Err bitreich.org 70 i- ;; the C standard here, and some libs out in the wild are Err bitreich.org 70 i- ;; already using e.g. :double. Err bitreich.org 70 i- #+nil Err bitreich.org 70 i- (assert (member base-type +valid-enum-base-types+ :test 'eq) () Err bitreich.org 70 i- "Invalid base type ~S for enum type ~S. Must be one of ~S." Err bitreich.org 70 i- base-type type-name +valid-enum-base-types+)) Err bitreich.org 70 i- ;; details: https://stackoverflow.com/questions/1122096/what-is-the-underlying-type-of-a-c-enum Err bitreich.org 70 i- (let ((bits (integer-length most-extreme-value))) Err bitreich.org 70 i- (setf base-type Err bitreich.org 70 i- (let ((most-uint-bits (load-time-value (* (foreign-type-size :unsigned-int) 8))) Err bitreich.org 70 i- (most-ulong-bits (load-time-value (* (foreign-type-size :unsigned-long) 8))) Err bitreich.org 70 i- (most-ulonglong-bits (load-time-value (* (foreign-type-size :unsigned-long-long) 8)))) Err bitreich.org 70 i- (or (if has-negative-value? Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((<= (1+ bits) most-uint-bits) Err bitreich.org 70 i- :int) Err bitreich.org 70 i- ((<= (1+ bits) most-ulong-bits) Err bitreich.org 70 i- :long) Err bitreich.org 70 i- ((<= (1+ bits) most-ulonglong-bits) Err bitreich.org 70 i- :long-long)) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((<= bits most-uint-bits) Err bitreich.org 70 i- :unsigned-int) Err bitreich.org 70 i- ((<= bits most-ulong-bits) Err bitreich.org 70 i- :unsigned-long) Err bitreich.org 70 i- ((<= bits most-ulonglong-bits) Err bitreich.org 70 i- :unsigned-long-long))) Err bitreich.org 70 i- (error "Enum value ~S of enum ~S is too large to store." Err bitreich.org 70 i- most-extreme-value type-name)))))) Err bitreich.org 70 i- (values base-type keyword-values value-keywords Err bitreich.org 70 i- field-keywords (when field-mode-p Err bitreich.org 70 i- (alexandria:copy-array Err bitreich.org 70 i- bit-index->keyword :adjustable nil Err bitreich.org 70 i- :fill-pointer nil))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-foreign-enum (type-name base-type values) Err bitreich.org 70 i- "Makes a new instance of the foreign-enum class." Err bitreich.org 70 i- (multiple-value-bind Err bitreich.org 70 i- (base-type keyword-values value-keywords) Err bitreich.org 70 i- (parse-foreign-enum-like type-name base-type values) Err bitreich.org 70 i- (make-instance 'foreign-enum Err bitreich.org 70 i- :name type-name Err bitreich.org 70 i- :actual-type (parse-type base-type) Err bitreich.org 70 i- :keyword-values keyword-values Err bitreich.org 70 i- :value-keywords value-keywords))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %defcenum-like (name-and-options enum-list type-factory) Err bitreich.org 70 i- (discard-docstring enum-list) Err bitreich.org 70 i- (destructuring-bind (name &optional base-type) Err bitreich.org 70 i- (ensure-list name-and-options) Err bitreich.org 70 i- (let ((type (funcall type-factory name base-type enum-list))) Err bitreich.org 70 i- `(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (notice-foreign-type ',name Err bitreich.org 70 i- ;; ,type is not enough here, someone needs to Err bitreich.org 70 i- ;; define it when we're being loaded from a fasl. Err bitreich.org 70 i- (,type-factory ',name ',base-type ',enum-list)) Err bitreich.org 70 i- ,@(remove nil Err bitreich.org 70 i- (mapcar (lambda (key) Err bitreich.org 70 i- (unless (keywordp key) Err bitreich.org 70 i- `(defconstant ,key ,(foreign-enum-value type key)))) Err bitreich.org 70 i- (foreign-enum-keyword-list type))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro defcenum (name-and-options &body enum-list) Err bitreich.org 70 i- "Define an foreign enumerated type." Err bitreich.org 70 i- (%defcenum-like name-and-options enum-list 'make-foreign-enum)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun hash-keys-to-list (ht) Err bitreich.org 70 i- (loop for k being the hash-keys in ht collect k)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-enum-keyword-list (enum-type) Err bitreich.org 70 i- "Return a list of KEYWORDS defined in ENUM-TYPE." Err bitreich.org 70 i- (hash-keys-to-list (keyword-values (ensure-parsed-base-type enum-type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; These [four] functions could be good canditates for compiler macros Err bitreich.org 70 i-;;; when the value or keyword is constant. I am not going to bother Err bitreich.org 70 i-;;; until someone has a serious performance need to do so though. --jamesjb Err bitreich.org 70 i-(defun %foreign-enum-value (type keyword &key errorp) Err bitreich.org 70 i- (check-type keyword enum-key) Err bitreich.org 70 i- (or (gethash keyword (keyword-values type)) Err bitreich.org 70 i- (when errorp Err bitreich.org 70 i- (error "~S is not defined as a keyword for enum type ~S." Err bitreich.org 70 i- keyword type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-enum-value (type keyword &key (errorp t)) Err bitreich.org 70 i- "Convert a KEYWORD into an integer according to the enum TYPE." Err bitreich.org 70 i- (let ((type-obj (ensure-parsed-base-type type))) Err bitreich.org 70 i- (if (not (typep type-obj 'foreign-enum)) Err bitreich.org 70 i- (error "~S is not a foreign enum type." type) Err bitreich.org 70 i- (%foreign-enum-value type-obj keyword :errorp errorp)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-enum-keyword (type value &key errorp) Err bitreich.org 70 i- (check-type value integer) Err bitreich.org 70 i- (or (gethash value (value-keywords type)) Err bitreich.org 70 i- (when errorp Err bitreich.org 70 i- (error "~S is not defined as a value for enum type ~S." Err bitreich.org 70 i- value type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-enum-keyword (type value &key (errorp t)) Err bitreich.org 70 i- "Convert an integer VALUE into a keyword according to the enum TYPE." Err bitreich.org 70 i- (let ((type-obj (ensure-parsed-base-type type))) Err bitreich.org 70 i- (if (not (typep type-obj 'foreign-enum)) Err bitreich.org 70 i- (error "~S is not a foreign enum type." type) Err bitreich.org 70 i- (%foreign-enum-keyword type-obj value :errorp errorp)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-to-foreign (value (type foreign-enum)) Err bitreich.org 70 i- (if (keywordp value) Err bitreich.org 70 i- (%foreign-enum-value type value :errorp t) Err bitreich.org 70 i- value)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-into-foreign-memory Err bitreich.org 70 i- (value (type foreign-enum) pointer) Err bitreich.org 70 i- (setf (mem-aref pointer (unparse-type (actual-type type))) Err bitreich.org 70 i- (translate-to-foreign value type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-from-foreign (value (type foreign-enum)) Err bitreich.org 70 i- (%foreign-enum-keyword type value :errorp t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod expand-to-foreign (value (type foreign-enum)) Err bitreich.org 70 i- (once-only (value) Err bitreich.org 70 i- `(if (keywordp ,value) Err bitreich.org 70 i- (%foreign-enum-value ,type ,value :errorp t) Err bitreich.org 70 i- ,value))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; There are two expansions necessary for an enum: first, the enum Err bitreich.org 70 i-;;; keyword needs to be translated to an int, and then the int needs Err bitreich.org 70 i-;;; to be made indirect. Err bitreich.org 70 i-(defmethod expand-to-foreign-dyn-indirect (value var body (type foreign-enum)) Err bitreich.org 70 i- (expand-to-foreign-dyn-indirect ; Make the integer indirect Err bitreich.org 70 i- (with-unique-names (feint) Err bitreich.org 70 i- (call-next-method value feint (list feint) type)) ; TRANSLATABLE-FOREIGN-TYPE method Err bitreich.org 70 i- var Err bitreich.org 70 i- body Err bitreich.org 70 i- (actual-type type))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Foreign Bitfields as Lisp keywords Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; DEFBITFIELD is an abstraction similar to the one provided by DEFCENUM. Err bitreich.org 70 i-;;; With some changes to DEFCENUM, this could certainly be implemented on Err bitreich.org 70 i-;;; top of it. Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass foreign-bitfield (foreign-enum) Err bitreich.org 70 i- ((field-keywords Err bitreich.org 70 i- :initform (error "Must specify FIELD-KEYWORDS.") Err bitreich.org 70 i- :initarg :field-keywords Err bitreich.org 70 i- :reader field-keywords) Err bitreich.org 70 i- (bit-index->keyword Err bitreich.org 70 i- :initform (error "Must specify BIT-INDEX->KEYWORD") Err bitreich.org 70 i- :initarg :bit-index->keyword Err bitreich.org 70 i- :reader bit-index->keyword)) Err bitreich.org 70 i- (:documentation "Describes a foreign bitfield type.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-foreign-bitfield (type-name base-type values) Err bitreich.org 70 i- "Makes a new instance of the foreign-bitfield class." Err bitreich.org 70 i- (multiple-value-bind Err bitreich.org 70 i- (base-type keyword-values value-keywords Err bitreich.org 70 i- field-keywords bit-index->keyword) Err bitreich.org 70 i- (parse-foreign-enum-like type-name base-type values t) Err bitreich.org 70 i- (make-instance 'foreign-bitfield Err bitreich.org 70 i- :name type-name Err bitreich.org 70 i- :actual-type (parse-type base-type) Err bitreich.org 70 i- :keyword-values keyword-values Err bitreich.org 70 i- :value-keywords value-keywords Err bitreich.org 70 i- :field-keywords field-keywords Err bitreich.org 70 i- :bit-index->keyword bit-index->keyword))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro defbitfield (name-and-options &body masks) Err bitreich.org 70 i- "Define an foreign enumerated type." Err bitreich.org 70 i- (%defcenum-like name-and-options masks 'make-foreign-bitfield)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-bitfield-symbol-list (bitfield-type) Err bitreich.org 70 i- "Return a list of SYMBOLS defined in BITFIELD-TYPE." Err bitreich.org 70 i- (field-keywords (ensure-parsed-base-type bitfield-type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-bitfield-value (type symbols) Err bitreich.org 70 i- (declare (optimize speed)) Err bitreich.org 70 i- (labels ((process-one (symbol) Err bitreich.org 70 i- (check-type symbol symbol) Err bitreich.org 70 i- (or (gethash symbol (keyword-values type)) Err bitreich.org 70 i- (error "~S is not a valid symbol for bitfield type ~S." Err bitreich.org 70 i- symbol type)))) Err bitreich.org 70 i- (declare (dynamic-extent #'process-one)) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((consp symbols) Err bitreich.org 70 i- (reduce #'logior symbols :key #'process-one)) Err bitreich.org 70 i- ((null symbols) Err bitreich.org 70 i- 0) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (process-one symbols))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-bitfield-value (type symbols) Err bitreich.org 70 i- "Convert a list of symbols into an integer according to the TYPE bitfield." Err bitreich.org 70 i- (let ((type-obj (ensure-parsed-base-type type))) Err bitreich.org 70 i- (assert (typep type-obj 'foreign-bitfield) () Err bitreich.org 70 i- "~S is not a foreign bitfield type." type) Err bitreich.org 70 i- (%foreign-bitfield-value type-obj symbols))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-compiler-macro foreign-bitfield-value (&whole form type symbols) Err bitreich.org 70 i- "Optimize for when TYPE and SYMBOLS are constant." Err bitreich.org 70 i- (declare (notinline foreign-bitfield-value)) Err bitreich.org 70 i- (if (and (constantp type) (constantp symbols)) Err bitreich.org 70 i- (foreign-bitfield-value (eval type) (eval symbols)) Err bitreich.org 70 i- form)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-bitfield-symbols (type value) Err bitreich.org 70 i- (check-type value integer) Err bitreich.org 70 i- (check-type type foreign-bitfield) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- :with bit-index->keyword = (bit-index->keyword type) Err bitreich.org 70 i- :for bit-index :from 0 :below (array-dimension bit-index->keyword 0) Err bitreich.org 70 i- :for mask = 1 :then (ash mask 1) Err bitreich.org 70 i- :for key = (aref bit-index->keyword bit-index) Err bitreich.org 70 i- :when (and key Err bitreich.org 70 i- (= (logand value mask) mask)) Err bitreich.org 70 i- :collect key)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-bitfield-symbols (type value) Err bitreich.org 70 i- "Convert an integer VALUE into a list of matching symbols according to Err bitreich.org 70 i-the bitfield TYPE." Err bitreich.org 70 i- (let ((type-obj (ensure-parsed-base-type type))) Err bitreich.org 70 i- (if (not (typep type-obj 'foreign-bitfield)) Err bitreich.org 70 i- (error "~S is not a foreign bitfield type." type) Err bitreich.org 70 i- (%foreign-bitfield-symbols type-obj value)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-compiler-macro foreign-bitfield-symbols (&whole form type value) Err bitreich.org 70 i- "Optimize for when TYPE and SYMBOLS are constant." Err bitreich.org 70 i- (declare (notinline foreign-bitfield-symbols)) Err bitreich.org 70 i- (if (and (constantp type) (constantp value)) Err bitreich.org 70 i- `(quote ,(foreign-bitfield-symbols (eval type) (eval value))) Err bitreich.org 70 i- form)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-to-foreign (value (type foreign-bitfield)) Err bitreich.org 70 i- (if (integerp value) Err bitreich.org 70 i- value Err bitreich.org 70 i- (%foreign-bitfield-value type (ensure-list value)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-from-foreign (value (type foreign-bitfield)) Err bitreich.org 70 i- (%foreign-bitfield-symbols type value)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod expand-to-foreign (value (type foreign-bitfield)) Err bitreich.org 70 i- (flet ((expander (value type) Err bitreich.org 70 i- `(if (integerp ,value) Err bitreich.org 70 i- ,value Err bitreich.org 70 i- (%foreign-bitfield-value ,type (ensure-list ,value))))) Err bitreich.org 70 i- (if (constantp value) Err bitreich.org 70 i- (eval (expander value type)) Err bitreich.org 70 i- (expander value type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod expand-from-foreign (value (type foreign-bitfield)) Err bitreich.org 70 i- (flet ((expander (value type) Err bitreich.org 70 i- `(%foreign-bitfield-symbols ,type ,value))) Err bitreich.org 70 i- (if (constantp value) Err bitreich.org 70 i- (eval (expander value type)) Err bitreich.org 70 i- (expander value type)))) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/src/features.lisp b/3rdparties/software/cffi_0.20.0/src/features.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/src/features.lisp.gph bitreich.org 70 i@@ -1,111 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; features.lisp --- CFFI-specific features (DEPRECATED). Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2006-2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cl-user) Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (pushnew :cffi *features*)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; CFFI-SYS backends take care of pushing the appropriate features to Err bitreich.org 70 i-;;; *features*. See each cffi-*.lisp file. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Not anymore, I think we should use TRIVIAL-FEATURES for the Err bitreich.org 70 i-;;; platform features instead. Less pain. CFFI-FEATURES is now Err bitreich.org 70 i-;;; deprecated and this code will stay here for a while for backwards Err bitreich.org 70 i-;;; compatibility purposes, to be removed in a future release. Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:cffi-features Err bitreich.org 70 i- (:use #:cl) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- #:cffi-feature-p Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Features related to the CFFI-SYS backend. Why no-*? This Err bitreich.org 70 i- ;; reflects the hope that these symbols will go away completely Err bitreich.org 70 i- ;; meaning that at some point all lisps will support long-longs, Err bitreich.org 70 i- ;; the foreign-funcall primitive, etc... Err bitreich.org 70 i- #:no-long-long Err bitreich.org 70 i- #:no-foreign-funcall Err bitreich.org 70 i- #:no-stdcall Err bitreich.org 70 i- #:flat-namespace Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Only SCL supports long-double... Err bitreich.org 70 i- ;;#:no-long-double Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Features related to the operating system. Err bitreich.org 70 i- ;; More should be added. Err bitreich.org 70 i- #:darwin Err bitreich.org 70 i- #:unix Err bitreich.org 70 i- #:windows Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Features related to the processor. Err bitreich.org 70 i- ;; More should be added. Err bitreich.org 70 i- #:ppc32 Err bitreich.org 70 i- #:x86 Err bitreich.org 70 i- #:x86-64 Err bitreich.org 70 i- #:sparc Err bitreich.org 70 i- #:sparc64 Err bitreich.org 70 i- #:hppa Err bitreich.org 70 i- #:hppa64)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-features) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun cffi-feature-p (feature-expression) Err bitreich.org 70 i- "Matches a FEATURE-EXPRESSION against those symbols in *FEATURES* Err bitreich.org 70 i-that belong to the CFFI-FEATURES package." Err bitreich.org 70 i- (when (eql feature-expression t) Err bitreich.org 70 i- (return-from cffi-feature-p t)) Err bitreich.org 70 i- (let ((features-package (find-package '#:cffi-features))) Err bitreich.org 70 i- (flet ((cffi-feature-eq (name feature-symbol) Err bitreich.org 70 i- (and (eq (symbol-package feature-symbol) features-package) Err bitreich.org 70 i- (string= name (symbol-name feature-symbol))))) Err bitreich.org 70 i- (etypecase feature-expression Err bitreich.org 70 i- (symbol Err bitreich.org 70 i- (not (null (member (symbol-name feature-expression) *features* Err bitreich.org 70 i- :test #'cffi-feature-eq)))) Err bitreich.org 70 i- (cons Err bitreich.org 70 i- (ecase (first feature-expression) Err bitreich.org 70 i- (:and (every #'cffi-feature-p (rest feature-expression))) Err bitreich.org 70 i- (:or (some #'cffi-feature-p (rest feature-expression))) Err bitreich.org 70 i- (:not (not (cffi-feature-p (cadr feature-expression)))))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; for backwards compatibility Err bitreich.org 70 i-(mapc (lambda (sym) (pushnew sym *features*)) Err bitreich.org 70 i- '(#+darwin darwin Err bitreich.org 70 i- #+unix unix Err bitreich.org 70 i- #+windows windows Err bitreich.org 70 i- #+ppc ppc32 Err bitreich.org 70 i- #+x86 x86 Err bitreich.org 70 i- #+x86-64 x86-64 Err bitreich.org 70 i- #+sparc sparc Err bitreich.org 70 i- #+sparc64 sparc64 Err bitreich.org 70 i- #+hppa hppa Err bitreich.org 70 i- #+hppa64 hppa64 Err bitreich.org 70 i- #+cffi-sys::no-long-long no-long-long Err bitreich.org 70 i- #+cffi-sys::flat-namespace flat-namespace Err bitreich.org 70 i- #+cffi-sys::no-foreign-funcall no-foreign-funcall Err bitreich.org 70 i- #+cffi-sys::no-stdcall no-stdcall Err bitreich.org 70 i- )) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/src/foreign-vars.lisp b/3rdparties/software/cffi_0.20.0/src/foreign-vars.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/src/foreign-vars.lisp.gph bitreich.org 70 i@@ -1,90 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; foreign-vars.lisp --- High-level interface to foreign globals. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2008, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Accessing Foreign Globals Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Called by FOREIGN-OPTIONS in functions.lisp. Err bitreich.org 70 i-(defun parse-defcvar-options (options) Err bitreich.org 70 i- (destructuring-bind (&key (library :default) read-only) options Err bitreich.org 70 i- (list :library library :read-only read-only))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-var-pointer (symbol) Err bitreich.org 70 i- "Return a pointer to the foreign global variable relative to SYMBOL." Err bitreich.org 70 i- (foreign-symbol-pointer (get symbol 'foreign-var-name) Err bitreich.org 70 i- :library (get symbol 'foreign-var-library))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Note: this will lookup not only variables but also functions. Err bitreich.org 70 i-(defun foreign-symbol-pointer (name &key (library :default)) Err bitreich.org 70 i- (check-type name string) Err bitreich.org 70 i- (%foreign-symbol-pointer Err bitreich.org 70 i- name (if (eq library :default) Err bitreich.org 70 i- :default Err bitreich.org 70 i- (foreign-library-handle Err bitreich.org 70 i- (get-foreign-library library))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun fs-pointer-or-lose (foreign-name library) Err bitreich.org 70 i- "Like foreign-symbol-ptr but throws an error instead of Err bitreich.org 70 i-returning nil when foreign-name is not found." Err bitreich.org 70 i- (or (foreign-symbol-pointer foreign-name :library library) Err bitreich.org 70 i- (error "Trying to access undefined foreign variable ~S." foreign-name))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro defcvar (name-and-options type &optional documentation) Err bitreich.org 70 i- "Define a foreign global variable." Err bitreich.org 70 i- (multiple-value-bind (lisp-name foreign-name options) Err bitreich.org 70 i- (parse-name-and-options name-and-options t) Err bitreich.org 70 i- (let ((fn (symbolicate '#:%var-accessor- lisp-name)) Err bitreich.org 70 i- (read-only (getf options :read-only)) Err bitreich.org 70 i- (library (getf options :library))) Err bitreich.org 70 i- ;; We can't really setf an aggregate type. Err bitreich.org 70 i- (when (aggregatep (parse-type type)) Err bitreich.org 70 i- (setq read-only t)) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (setf (documentation ',lisp-name 'variable) ,documentation) Err bitreich.org 70 i- ;; Save foreign-name and library for posterior access by Err bitreich.org 70 i- ;; GET-VAR-POINTER. Err bitreich.org 70 i- (setf (get ',lisp-name 'foreign-var-name) ,foreign-name) Err bitreich.org 70 i- (setf (get ',lisp-name 'foreign-var-library) ',library) Err bitreich.org 70 i- ;; Getter Err bitreich.org 70 i- (defun ,fn () Err bitreich.org 70 i- (mem-ref (fs-pointer-or-lose ,foreign-name ',library) ',type)) Err bitreich.org 70 i- ;; Setter Err bitreich.org 70 i- (defun (setf ,fn) (value) Err bitreich.org 70 i- ,(if read-only '(declare (ignore value)) (values)) Err bitreich.org 70 i- ,(if read-only Err bitreich.org 70 i- `(error ,(format nil Err bitreich.org 70 i- "Trying to modify read-only foreign var: ~A." Err bitreich.org 70 i- lisp-name)) Err bitreich.org 70 i- `(setf (mem-ref (fs-pointer-or-lose ,foreign-name ',library) Err bitreich.org 70 i- ',type) Err bitreich.org 70 i- value))) Err bitreich.org 70 i- ;; While most Lisps already expand DEFINE-SYMBOL-MACRO to an Err bitreich.org 70 i- ;; EVAL-WHEN form like this, that is not required by the Err bitreich.org 70 i- ;; standard so we do it ourselves. Err bitreich.org 70 i- (eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (define-symbol-macro ,lisp-name (,fn))))))) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/src/functions.lisp b/3rdparties/software/cffi_0.20.0/src/functions.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/src/functions.lisp.gph bitreich.org 70 i@@ -1,441 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; functions.lisp --- High-level interface to foreign functions. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Copyright (C) 2005-2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Calling Foreign Functions Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; FOREIGN-FUNCALL is the main primitive for calling foreign Err bitreich.org 70 i-;;; functions. It converts each argument based on the installed Err bitreich.org 70 i-;;; translators for its type, then passes the resulting list to Err bitreich.org 70 i-;;; CFFI-SYS:%FOREIGN-FUNCALL. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; For implementation-specific reasons, DEFCFUN doesn't use Err bitreich.org 70 i-;;; FOREIGN-FUNCALL directly and might use something else (passed to Err bitreich.org 70 i-;;; TRANSLATE-OBJECTS as the CALL-FORM argument) instead of Err bitreich.org 70 i-;;; CFFI-SYS:%FOREIGN-FUNCALL to call the foreign-function. Err bitreich.org 70 i- Err bitreich.org 70 i-(defun translate-objects (syms args types rettype call-form &optional indirect) Err bitreich.org 70 i- "Helper function for FOREIGN-FUNCALL and DEFCFUN. If 'indirect is T, all arguments are represented by foreign pointers, even those that can be represented by CL objects." Err bitreich.org 70 i- (if (null args) Err bitreich.org 70 i- (expand-from-foreign call-form (parse-type rettype)) Err bitreich.org 70 i- (funcall Err bitreich.org 70 i- (if indirect Err bitreich.org 70 i- #'expand-to-foreign-dyn-indirect Err bitreich.org 70 i- #'expand-to-foreign-dyn) Err bitreich.org 70 i- (car args) (car syms) Err bitreich.org 70 i- (list (translate-objects (cdr syms) (cdr args) Err bitreich.org 70 i- (cdr types) rettype call-form indirect)) Err bitreich.org 70 i- (parse-type (car types))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun parse-args-and-types (args) Err bitreich.org 70 i- "Returns 4 values: types, canonicalized types, args and return type." Err bitreich.org 70 i- (let* ((len (length args)) Err bitreich.org 70 i- (return-type (if (oddp len) (lastcar args) :void))) Err bitreich.org 70 i- (loop repeat (floor len 2) Err bitreich.org 70 i- for (type arg) on args by #'cddr Err bitreich.org 70 i- collect type into types Err bitreich.org 70 i- collect (canonicalize-foreign-type type) into ctypes Err bitreich.org 70 i- collect arg into fargs Err bitreich.org 70 i- finally (return (values types ctypes fargs return-type))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; While the options passed directly to DEFCFUN/FOREIGN-FUNCALL have Err bitreich.org 70 i-;;; precedence, we also grab its library's options, if possible. Err bitreich.org 70 i-(defun parse-function-options (options &key pointer) Err bitreich.org 70 i- (destructuring-bind (&key (library :default libraryp) Err bitreich.org 70 i- (cconv nil cconv-p) Err bitreich.org 70 i- (calling-convention cconv calling-convention-p) Err bitreich.org 70 i- (convention calling-convention)) Err bitreich.org 70 i- options Err bitreich.org 70 i- (when cconv-p Err bitreich.org 70 i- (warn-obsolete-argument :cconv :convention)) Err bitreich.org 70 i- (when calling-convention-p Err bitreich.org 70 i- (warn-obsolete-argument :calling-convention :convention)) Err bitreich.org 70 i- (list* :convention Err bitreich.org 70 i- (or convention Err bitreich.org 70 i- (when libraryp Err bitreich.org 70 i- (let ((lib-options (foreign-library-options Err bitreich.org 70 i- (get-foreign-library library)))) Err bitreich.org 70 i- (getf lib-options :convention))) Err bitreich.org 70 i- :cdecl) Err bitreich.org 70 i- ;; Don't pass the library option if we're dealing with Err bitreich.org 70 i- ;; FOREIGN-FUNCALL-POINTER. Err bitreich.org 70 i- (unless pointer Err bitreich.org 70 i- (list :library library))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun structure-by-value-p (ctype) Err bitreich.org 70 i- "A structure or union is to be called or returned by value." Err bitreich.org 70 i- (let ((actual-type (ensure-parsed-base-type ctype))) Err bitreich.org 70 i- (or (and (typep actual-type 'foreign-struct-type) Err bitreich.org 70 i- (not (bare-struct-type-p actual-type))) Err bitreich.org 70 i- #+cffi::no-long-long (typep actual-type 'emulated-llong-type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun fn-call-by-value-p (argument-types return-type) Err bitreich.org 70 i- "One or more structures in the arguments or return from the function are called by value." Err bitreich.org 70 i- (or (some 'structure-by-value-p argument-types) Err bitreich.org 70 i- (structure-by-value-p return-type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *foreign-structures-by-value* Err bitreich.org 70 i- (lambda (&rest args) Err bitreich.org 70 i- (declare (ignore args)) Err bitreich.org 70 i- (restart-case Err bitreich.org 70 i- (error "Unable to call structures by value without cffi-libffi loaded.") Err bitreich.org 70 i- (load-cffi-libffi () :report "Load cffi-libffi." Err bitreich.org 70 i- (asdf:operate 'asdf:load-op 'cffi-libffi)))) Err bitreich.org 70 i- "A function that produces a form suitable for calling structures by value.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-funcall-form (thing options args pointerp) Err bitreich.org 70 i- (multiple-value-bind (types ctypes fargs rettype) Err bitreich.org 70 i- (parse-args-and-types args) Err bitreich.org 70 i- (let ((syms (make-gensym-list (length fargs))) Err bitreich.org 70 i- (fsbvp (fn-call-by-value-p ctypes rettype))) Err bitreich.org 70 i- (if fsbvp Err bitreich.org 70 i- ;; Structures by value call through *foreign-structures-by-value* Err bitreich.org 70 i- (funcall *foreign-structures-by-value* Err bitreich.org 70 i- thing Err bitreich.org 70 i- fargs Err bitreich.org 70 i- syms Err bitreich.org 70 i- types Err bitreich.org 70 i- rettype Err bitreich.org 70 i- ctypes Err bitreich.org 70 i- pointerp) Err bitreich.org 70 i- (translate-objects Err bitreich.org 70 i- syms fargs types rettype Err bitreich.org 70 i- `(,(if pointerp '%foreign-funcall-pointer '%foreign-funcall) Err bitreich.org 70 i- ;; No structures by value, direct call Err bitreich.org 70 i- ,thing Err bitreich.org 70 i- (,@(mapcan #'list ctypes syms) Err bitreich.org 70 i- ,(canonicalize-foreign-type rettype)) Err bitreich.org 70 i- ,@(parse-function-options options :pointer pointerp))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro foreign-funcall (name-and-options &rest args) Err bitreich.org 70 i- "Wrapper around %FOREIGN-FUNCALL that translates its arguments." Err bitreich.org 70 i- (let ((name (car (ensure-list name-and-options))) Err bitreich.org 70 i- (options (cdr (ensure-list name-and-options)))) Err bitreich.org 70 i- (foreign-funcall-form name options args nil))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro foreign-funcall-pointer (pointer options &rest args) Err bitreich.org 70 i- (foreign-funcall-form pointer options args t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun promote-varargs-type (builtin-type) Err bitreich.org 70 i- "Default argument promotions." Err bitreich.org 70 i- (case builtin-type Err bitreich.org 70 i- (:float :double) Err bitreich.org 70 i- ((:char :short) :int) Err bitreich.org 70 i- ((:unsigned-char :unsigned-short) :unsigned-int) Err bitreich.org 70 i- (t builtin-type))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; If cffi-sys doesn't provide a %foreign-funcall-varargs macros we Err bitreich.org 70 i-;; define one that use %foreign-funcall. Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (unless (fboundp '%foreign-funcall-varargs) Err bitreich.org 70 i- (defmacro %foreign-funcall-varargs (name fixed-args varargs Err bitreich.org 70 i- &rest args &key convention library) Err bitreich.org 70 i- (declare (ignore convention library)) Err bitreich.org 70 i- `(%foreign-funcall ,name ,(append fixed-args varargs) ,@args))) Err bitreich.org 70 i- (unless (fboundp '%foreign-funcall-pointer-varargs) Err bitreich.org 70 i- (defmacro %foreign-funcall-pointer-varargs (pointer fixed-args varargs Err bitreich.org 70 i- &rest args &key convention) Err bitreich.org 70 i- (declare (ignore convention)) Err bitreich.org 70 i- `(%foreign-funcall-pointer ,pointer ,(append fixed-args varargs) ,@args)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-funcall-varargs-form (thing options fixed-args varargs pointerp) Err bitreich.org 70 i- (multiple-value-bind (fixed-types fixed-ctypes fixed-fargs) Err bitreich.org 70 i- (parse-args-and-types fixed-args) Err bitreich.org 70 i- (multiple-value-bind (varargs-types varargs-ctypes varargs-fargs rettype) Err bitreich.org 70 i- (parse-args-and-types varargs) Err bitreich.org 70 i- (let ((fixed-syms (make-gensym-list (length fixed-fargs))) Err bitreich.org 70 i- (varargs-syms (make-gensym-list (length varargs-fargs)))) Err bitreich.org 70 i- (translate-objects Err bitreich.org 70 i- (append fixed-syms varargs-syms) Err bitreich.org 70 i- (append fixed-fargs varargs-fargs) Err bitreich.org 70 i- (append fixed-types varargs-types) Err bitreich.org 70 i- rettype Err bitreich.org 70 i- `(,(if pointerp '%foreign-funcall-pointer-varargs '%foreign-funcall-varargs) Err bitreich.org 70 i- ,thing Err bitreich.org 70 i- ,(mapcan #'list fixed-ctypes fixed-syms) Err bitreich.org 70 i- ,(append Err bitreich.org 70 i- (mapcan #'list Err bitreich.org 70 i- (mapcar #'promote-varargs-type varargs-ctypes) Err bitreich.org 70 i- (loop for sym in varargs-syms Err bitreich.org 70 i- and type in varargs-ctypes Err bitreich.org 70 i- if (eq type :float) Err bitreich.org 70 i- collect `(float ,sym 1.0d0) Err bitreich.org 70 i- else collect sym)) Err bitreich.org 70 i- (list (canonicalize-foreign-type rettype))) Err bitreich.org 70 i- ,@options)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro foreign-funcall-varargs (name-and-options fixed-args Err bitreich.org 70 i- &rest varargs) Err bitreich.org 70 i- "Wrapper around %FOREIGN-FUNCALL that translates its arguments Err bitreich.org 70 i-and does type promotion for the variadic arguments." Err bitreich.org 70 i- (let ((name (car (ensure-list name-and-options))) Err bitreich.org 70 i- (options (cdr (ensure-list name-and-options)))) Err bitreich.org 70 i- (foreign-funcall-varargs-form name options fixed-args varargs nil))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro foreign-funcall-pointer-varargs (pointer options fixed-args Err bitreich.org 70 i- &rest varargs) Err bitreich.org 70 i- "Wrapper around %FOREIGN-FUNCALL-POINTER that translates its Err bitreich.org 70 i-arguments and does type promotion for the variadic arguments." Err bitreich.org 70 i- (foreign-funcall-varargs-form pointer options fixed-args varargs t)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Defining Foreign Functions Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The DEFCFUN macro provides a declarative interface for defining Err bitreich.org 70 i-;;; Lisp functions that call foreign functions. Err bitreich.org 70 i- Err bitreich.org 70 i-;; If cffi-sys doesn't provide a defcfun-helper-forms, Err bitreich.org 70 i-;; we define one that uses %foreign-funcall. Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (unless (fboundp 'defcfun-helper-forms) Err bitreich.org 70 i- (defun defcfun-helper-forms (name lisp-name rettype args types options) Err bitreich.org 70 i- (declare (ignore lisp-name)) Err bitreich.org 70 i- (values Err bitreich.org 70 i- '() Err bitreich.org 70 i- `(%foreign-funcall ,name ,(append (mapcan #'list types args) Err bitreich.org 70 i- (list rettype)) Err bitreich.org 70 i- ,@options))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %defcfun (lisp-name foreign-name return-type args options docstring) Err bitreich.org 70 i- (let* ((arg-names (mapcar #'first args)) Err bitreich.org 70 i- (arg-types (mapcar #'second args)) Err bitreich.org 70 i- (syms (make-gensym-list (length args))) Err bitreich.org 70 i- (call-by-value (fn-call-by-value-p arg-types return-type))) Err bitreich.org 70 i- (multiple-value-bind (prelude caller) Err bitreich.org 70 i- (if call-by-value Err bitreich.org 70 i- (values nil nil) Err bitreich.org 70 i- (defcfun-helper-forms Err bitreich.org 70 i- foreign-name lisp-name (canonicalize-foreign-type return-type) Err bitreich.org 70 i- syms (mapcar #'canonicalize-foreign-type arg-types) options)) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- ,prelude Err bitreich.org 70 i- (defun ,lisp-name ,arg-names Err bitreich.org 70 i- ,@(ensure-list docstring) Err bitreich.org 70 i- ,(if call-by-value Err bitreich.org 70 i- `(foreign-funcall Err bitreich.org 70 i- ,(cons foreign-name options) Err bitreich.org 70 i- ,@(append (mapcan #'list arg-types arg-names) Err bitreich.org 70 i- (list return-type))) Err bitreich.org 70 i- (translate-objects Err bitreich.org 70 i- syms arg-names arg-types return-type caller))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %defcfun-varargs (lisp-name foreign-name return-type args options doc) Err bitreich.org 70 i- (with-unique-names (varargs) Err bitreich.org 70 i- (let ((arg-names (mapcar #'car args))) Err bitreich.org 70 i- `(defmacro ,lisp-name (,@arg-names &rest ,varargs) Err bitreich.org 70 i- ,@(ensure-list doc) Err bitreich.org 70 i- `(foreign-funcall-varargs Err bitreich.org 70 i- ,'(,foreign-name ,@options) Err bitreich.org 70 i- ,,`(list ,@(loop for (name type) in args Err bitreich.org 70 i- collect `',type collect name)) Err bitreich.org 70 i- ,@,varargs Err bitreich.org 70 i- ,',return-type))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric translate-underscore-separated-name (name) Err bitreich.org 70 i- (:method ((name string)) Err bitreich.org 70 i- (values (intern (canonicalize-symbol-name-case (substitute #\- #\_ name))))) Err bitreich.org 70 i- (:method ((name symbol)) Err bitreich.org 70 i- (substitute #\_ #\- (string-downcase (symbol-name name))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun collapse-prefix (l special-words) Err bitreich.org 70 i- (unless (null l) Err bitreich.org 70 i- (multiple-value-bind (newpre skip) (check-prefix l special-words) Err bitreich.org 70 i- (cons newpre (collapse-prefix (nthcdr skip l) special-words))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun check-prefix (l special-words) Err bitreich.org 70 i- (let ((pl (loop for i from (1- (length l)) downto 0 Err bitreich.org 70 i- collect (apply #'concatenate 'simple-string (butlast l i))))) Err bitreich.org 70 i- (loop for w in special-words Err bitreich.org 70 i- for p = (position-if #'(lambda (s) (string= s w)) pl) Err bitreich.org 70 i- when p do (return-from check-prefix (values (nth p pl) (1+ p)))) Err bitreich.org 70 i- (values (first l) 1))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric translate-camelcase-name (name &key upper-initial-p special-words) Err bitreich.org 70 i- (:method ((name string) &key upper-initial-p special-words) Err bitreich.org 70 i- (declare (ignore upper-initial-p)) Err bitreich.org 70 i- (values (intern (reduce #'(lambda (s1 s2) Err bitreich.org 70 i- (concatenate 'simple-string s1 "-" s2)) Err bitreich.org 70 i- (mapcar #'string-upcase Err bitreich.org 70 i- (collapse-prefix Err bitreich.org 70 i- (split-if #'(lambda (ch) Err bitreich.org 70 i- (or (upper-case-p ch) Err bitreich.org 70 i- (digit-char-p ch))) Err bitreich.org 70 i- name) Err bitreich.org 70 i- special-words)))))) Err bitreich.org 70 i- (:method ((name symbol) &key upper-initial-p special-words) Err bitreich.org 70 i- (apply #'concatenate Err bitreich.org 70 i- 'string Err bitreich.org 70 i- (loop for str in (split-if #'(lambda (ch) (eq ch #\-)) Err bitreich.org 70 i- (string name) Err bitreich.org 70 i- :elide) Err bitreich.org 70 i- for first-word-p = t then nil Err bitreich.org 70 i- for e = (member str special-words Err bitreich.org 70 i- :test #'equal :key #'string-upcase) Err bitreich.org 70 i- collect (cond Err bitreich.org 70 i- ((and first-word-p (not upper-initial-p)) Err bitreich.org 70 i- (string-downcase str)) Err bitreich.org 70 i- (e (first e)) Err bitreich.org 70 i- (t (string-capitalize str))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric translate-name-from-foreign (foreign-name package &optional varp) Err bitreich.org 70 i- (:method (foreign-name package &optional varp) Err bitreich.org 70 i- (declare (ignore package)) Err bitreich.org 70 i- (let ((sym (translate-underscore-separated-name foreign-name))) Err bitreich.org 70 i- (if varp Err bitreich.org 70 i- (values (intern (format nil "*~A*" Err bitreich.org 70 i- (canonicalize-symbol-name-case Err bitreich.org 70 i- (symbol-name sym))))) Err bitreich.org 70 i- sym)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric translate-name-to-foreign (lisp-name package &optional varp) Err bitreich.org 70 i- (:method (lisp-name package &optional varp) Err bitreich.org 70 i- (declare (ignore package)) Err bitreich.org 70 i- (let ((name (translate-underscore-separated-name lisp-name))) Err bitreich.org 70 i- (if varp Err bitreich.org 70 i- (string-trim '(#\*) name) Err bitreich.org 70 i- name)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun lisp-name (spec varp) Err bitreich.org 70 i- (check-type spec string) Err bitreich.org 70 i- (translate-name-from-foreign spec *package* varp)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-name (spec varp) Err bitreich.org 70 i- (check-type spec (and symbol (not null))) Err bitreich.org 70 i- (translate-name-to-foreign spec *package* varp)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-options (opts varp) Err bitreich.org 70 i- (if varp Err bitreich.org 70 i- (funcall 'parse-defcvar-options opts) Err bitreich.org 70 i- (parse-function-options opts))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun lisp-name-p (name) Err bitreich.org 70 i- (and name (symbolp name) (not (keywordp name)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %parse-name-and-options (spec varp) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((stringp spec) Err bitreich.org 70 i- (values (lisp-name spec varp) spec nil)) Err bitreich.org 70 i- ((symbolp spec) Err bitreich.org 70 i- (assert (not (null spec))) Err bitreich.org 70 i- (values spec (foreign-name spec varp) nil)) Err bitreich.org 70 i- ((and (consp spec) (stringp (first spec))) Err bitreich.org 70 i- (destructuring-bind (foreign-name &rest options) Err bitreich.org 70 i- spec Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((or (null options) Err bitreich.org 70 i- (keywordp (first options))) Err bitreich.org 70 i- (values (lisp-name foreign-name varp) foreign-name options)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (assert (lisp-name-p (first options))) Err bitreich.org 70 i- (values (first options) foreign-name (rest options)))))) Err bitreich.org 70 i- ((and (consp spec) (lisp-name-p (first spec))) Err bitreich.org 70 i- (destructuring-bind (lisp-name &rest options) Err bitreich.org 70 i- spec Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((or (null options) Err bitreich.org 70 i- (keywordp (first options))) Err bitreich.org 70 i- (values lisp-name (foreign-name spec varp) options)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (assert (stringp (first options))) Err bitreich.org 70 i- (values lisp-name (first options) (rest options)))))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (error "Not a valid foreign function specifier: ~A" spec)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; DEFCFUN's first argument has can have the following syntax: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; 1. string Err bitreich.org 70 i-;;; 2. symbol Err bitreich.org 70 i-;;; 3. \( string [symbol] options* ) Err bitreich.org 70 i-;;; 4. \( symbol [string] options* ) Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The string argument denotes the foreign function's name. The Err bitreich.org 70 i-;;; symbol argument is used to name the Lisp function. If one isn't Err bitreich.org 70 i-;;; present, its name is derived from the other. See the user Err bitreich.org 70 i-;;; documentation for an explanation of the derivation rules. Err bitreich.org 70 i-(defun parse-name-and-options (spec &optional varp) Err bitreich.org 70 i- (multiple-value-bind (lisp-name foreign-name options) Err bitreich.org 70 i- (%parse-name-and-options spec varp) Err bitreich.org 70 i- (values lisp-name foreign-name (foreign-options options varp)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; If we find a &REST token at the end of ARGS, it means this is a Err bitreich.org 70 i-;;; varargs foreign function therefore we define a lisp macro using Err bitreich.org 70 i-;;; %DEFCFUN-VARARGS. Otherwise, a lisp function is defined with Err bitreich.org 70 i-;;; %DEFCFUN. Err bitreich.org 70 i-(defmacro defcfun (name-and-options return-type &body args) Err bitreich.org 70 i- "Defines a Lisp function that calls a foreign function." Err bitreich.org 70 i- (let ((docstring (when (stringp (car args)) (pop args)))) Err bitreich.org 70 i- (multiple-value-bind (lisp-name foreign-name options) Err bitreich.org 70 i- (parse-name-and-options name-and-options) Err bitreich.org 70 i- (if (eq (lastcar args) '&rest) Err bitreich.org 70 i- (%defcfun-varargs lisp-name foreign-name return-type Err bitreich.org 70 i- (butlast args) options docstring) Err bitreich.org 70 i- (%defcfun lisp-name foreign-name return-type args options Err bitreich.org 70 i- docstring))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Defining Callbacks Err bitreich.org 70 i- Err bitreich.org 70 i-(defun inverse-translate-objects (args types declarations rettype call) Err bitreich.org 70 i- `(let (,@(loop for arg in args and type in types Err bitreich.org 70 i- collect (list arg (expand-from-foreign Err bitreich.org 70 i- arg (parse-type type))))) Err bitreich.org 70 i- ,@declarations Err bitreich.org 70 i- ,(expand-to-foreign call (parse-type rettype)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun parse-defcallback-options (options) Err bitreich.org 70 i- (destructuring-bind (&key (cconv :cdecl cconv-p) Err bitreich.org 70 i- (calling-convention cconv calling-convention-p) Err bitreich.org 70 i- (convention calling-convention)) Err bitreich.org 70 i- options Err bitreich.org 70 i- (when cconv-p Err bitreich.org 70 i- (warn-obsolete-argument :cconv :convention)) Err bitreich.org 70 i- (when calling-convention-p Err bitreich.org 70 i- (warn-obsolete-argument :calling-convention :convention)) Err bitreich.org 70 i- (list :convention convention))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro defcallback (name-and-options return-type args &body body) Err bitreich.org 70 i- (multiple-value-bind (body declarations) Err bitreich.org 70 i- (parse-body body :documentation t) Err bitreich.org 70 i- (let ((arg-names (mapcar #'car args)) Err bitreich.org 70 i- (arg-types (mapcar #'cadr args)) Err bitreich.org 70 i- (name (car (ensure-list name-and-options))) Err bitreich.org 70 i- (options (cdr (ensure-list name-and-options)))) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (%defcallback ,name ,(canonicalize-foreign-type return-type) Err bitreich.org 70 i- ,arg-names ,(mapcar #'canonicalize-foreign-type arg-types) Err bitreich.org 70 i- ,(inverse-translate-objects Err bitreich.org 70 i- arg-names arg-types declarations return-type Err bitreich.org 70 i- `(block ,name ,@body)) Err bitreich.org 70 i- ,@(parse-defcallback-options options)) Err bitreich.org 70 i- ',name)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline get-callback)) Err bitreich.org 70 i-(defun get-callback (symbol) Err bitreich.org 70 i- (%callback symbol)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro callback (name) Err bitreich.org 70 i- `(%callback ',name)) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/src/libraries.lisp b/3rdparties/software/cffi_0.20.0/src/libraries.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/src/libraries.lisp.gph bitreich.org 70 i@@ -1,457 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; libraries.lisp --- Finding and loading foreign libraries. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Copyright (C) 2006-2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Finding Foreign Libraries Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; We offer two ways for the user of a CFFI library to define Err bitreich.org 70 i-;;; his/her own library directories: *FOREIGN-LIBRARY-DIRECTORIES* Err bitreich.org 70 i-;;; for regular libraries and *DARWIN-FRAMEWORK-DIRECTORIES* for Err bitreich.org 70 i-;;; Darwin frameworks. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; These two special variables behave similarly to Err bitreich.org 70 i-;;; ASDF:*CENTRAL-REGISTRY* as its arguments are evaluated before Err bitreich.org 70 i-;;; being used. We used our MINI-EVAL instead of the full-blown EVAL Err bitreich.org 70 i-;;; and the evaluated form should yield a single pathname or a list of Err bitreich.org 70 i-;;; pathnames. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Only after failing to find a library through the normal ways Err bitreich.org 70 i-;;; (eg: on Linux LD_LIBRARY_PATH, /etc/ld.so.cache, /usr/lib/, /lib) Err bitreich.org 70 i-;;; do we try to find the library ourselves. Err bitreich.org 70 i- Err bitreich.org 70 i-(defun explode-path-environment-variable (name) Err bitreich.org 70 i- (mapcar #'uiop:ensure-directory-pathname Err bitreich.org 70 i- (split-if (lambda (c) (eql #\: c)) Err bitreich.org 70 i- (uiop:getenv name) Err bitreich.org 70 i- :elide))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun darwin-fallback-library-path () Err bitreich.org 70 i- (or (explode-path-environment-variable "DYLD_FALLBACK_LIBRARY_PATH") Err bitreich.org 70 i- (list (merge-pathnames #p"lib/" (user-homedir-pathname)) Err bitreich.org 70 i- #p"/usr/local/lib/" Err bitreich.org 70 i- #p"/usr/lib/"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *foreign-library-directories* Err bitreich.org 70 i- (if (featurep :darwin) Err bitreich.org 70 i- '((explode-path-environment-variable "LD_LIBRARY_PATH") Err bitreich.org 70 i- (explode-path-environment-variable "DYLD_LIBRARY_PATH") Err bitreich.org 70 i- (uiop:getcwd) Err bitreich.org 70 i- (darwin-fallback-library-path)) Err bitreich.org 70 i- '()) Err bitreich.org 70 i- "List onto which user-defined library paths can be pushed.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun fallback-darwin-framework-directories () Err bitreich.org 70 i- (or (explode-path-environment-variable "DYLD_FALLBACK_FRAMEWORK_PATH") Err bitreich.org 70 i- (list (uiop:getcwd) Err bitreich.org 70 i- (merge-pathnames #p"Library/Frameworks/" (user-homedir-pathname)) Err bitreich.org 70 i- #p"/Library/Frameworks/" Err bitreich.org 70 i- #p"/System/Library/Frameworks/"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *darwin-framework-directories* Err bitreich.org 70 i- '((explode-path-environment-variable "DYLD_FRAMEWORK_PATH") Err bitreich.org 70 i- (fallback-darwin-framework-directories)) Err bitreich.org 70 i- "List of directories where Frameworks are searched for.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun mini-eval (form) Err bitreich.org 70 i- "Simple EVAL-like function to evaluate the elements of Err bitreich.org 70 i-*FOREIGN-LIBRARY-DIRECTORIES* and *DARWIN-FRAMEWORK-DIRECTORIES*." Err bitreich.org 70 i- (typecase form Err bitreich.org 70 i- (cons (apply (car form) (mapcar #'mini-eval (cdr form)))) Err bitreich.org 70 i- (symbol (symbol-value form)) Err bitreich.org 70 i- (t form))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun parse-directories (list) Err bitreich.org 70 i- (mappend (compose #'ensure-list #'mini-eval) list)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun find-file (path directories) Err bitreich.org 70 i- "Searches for PATH in a list of DIRECTORIES and returns the first it finds." Err bitreich.org 70 i- (some (lambda (directory) (probe-file (merge-pathnames path directory))) Err bitreich.org 70 i- directories)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun find-darwin-framework (framework-name) Err bitreich.org 70 i- "Searches for FRAMEWORK-NAME in *DARWIN-FRAMEWORK-DIRECTORIES*." Err bitreich.org 70 i- (dolist (directory (parse-directories *darwin-framework-directories*)) Err bitreich.org 70 i- (let ((path (make-pathname Err bitreich.org 70 i- :name framework-name Err bitreich.org 70 i- :directory Err bitreich.org 70 i- (append (pathname-directory directory) Err bitreich.org 70 i- (list (format nil "~A.framework" framework-name)))))) Err bitreich.org 70 i- (when (probe-file path) Err bitreich.org 70 i- (return-from find-darwin-framework path))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Defining Foreign Libraries Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Foreign libraries can be defined using the Err bitreich.org 70 i-;;; DEFINE-FOREIGN-LIBRARY macro. Example usage: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; (define-foreign-library opengl Err bitreich.org 70 i-;;; (:darwin (:framework "OpenGL")) Err bitreich.org 70 i-;;; (:unix (:or "libGL.so" "libGL.so.1" Err bitreich.org 70 i-;;; #p"/myhome/mylibGL.so")) Err bitreich.org 70 i-;;; (:windows "opengl32.dll") Err bitreich.org 70 i-;;; ;; an hypothetical example of a particular platform Err bitreich.org 70 i-;;; ((:and :some-system :some-cpu) "libGL-support.lib") Err bitreich.org 70 i-;;; ;; if no other clauses apply, this one will and a type will be Err bitreich.org 70 i-;;; ;; automagically appended to the name passed to :default Err bitreich.org 70 i-;;; (t (:default "libGL"))) Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; This information is stored in the *FOREIGN-LIBRARIES* hashtable Err bitreich.org 70 i-;;; and when the library is loaded through LOAD-FOREIGN-LIBRARY (or Err bitreich.org 70 i-;;; USE-FOREIGN-LIBRARY) the first clause matched by FEATUREP is Err bitreich.org 70 i-;;; processed. Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *foreign-libraries* (make-hash-table :test 'eq) Err bitreich.org 70 i- "Hashtable of defined libraries.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass foreign-library () Err bitreich.org 70 i- ((name :initform nil :initarg :name :accessor foreign-library-name) Err bitreich.org 70 i- (type :initform :system :initarg :type) Err bitreich.org 70 i- (spec :initarg :spec) Err bitreich.org 70 i- (options :initform nil :initarg :options) Err bitreich.org 70 i- (handle :initform nil :initarg :handle :accessor foreign-library-handle) Err bitreich.org 70 i- (pathname :initform nil))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod print-object ((library foreign-library) stream) Err bitreich.org 70 i- (with-slots (name pathname) library Err bitreich.org 70 i- (print-unreadable-object (library stream :type t) Err bitreich.org 70 i- (when name Err bitreich.org 70 i- (format stream "~A" name)) Err bitreich.org 70 i- (when pathname Err bitreich.org 70 i- (format stream " ~S" (file-namestring pathname)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition foreign-library-undefined-error (error) Err bitreich.org 70 i- ((name :initarg :name :reader fl-name)) Err bitreich.org 70 i- (:report (lambda (c s) Err bitreich.org 70 i- (format s "Undefined foreign library: ~S" Err bitreich.org 70 i- (fl-name c))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-foreign-library (lib) Err bitreich.org 70 i- "Look up a library by NAME, signalling an error if not found." Err bitreich.org 70 i- (if (typep lib 'foreign-library) Err bitreich.org 70 i- lib Err bitreich.org 70 i- (or (gethash lib *foreign-libraries*) Err bitreich.org 70 i- (error 'foreign-library-undefined-error :name lib)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun (setf get-foreign-library) (value name) Err bitreich.org 70 i- (setf (gethash name *foreign-libraries*) value)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-library-type (lib) Err bitreich.org 70 i- (slot-value (get-foreign-library lib) 'type)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-library-pathname (lib) Err bitreich.org 70 i- (slot-value (get-foreign-library lib) 'pathname)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %foreign-library-spec (lib) Err bitreich.org 70 i- (assoc-if (lambda (feature) Err bitreich.org 70 i- (or (eq feature t) Err bitreich.org 70 i- (featurep feature))) Err bitreich.org 70 i- (slot-value lib 'spec))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-library-spec (lib) Err bitreich.org 70 i- (second (%foreign-library-spec lib))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-library-options (lib) Err bitreich.org 70 i- (append (cddr (%foreign-library-spec lib)) Err bitreich.org 70 i- (slot-value lib 'options))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-library-search-path (lib) Err bitreich.org 70 i- (loop for (opt val) on (foreign-library-options lib) by #'cddr Err bitreich.org 70 i- when (eql opt :search-path) Err bitreich.org 70 i- append (ensure-list val) into search-path Err bitreich.org 70 i- finally (return (mapcar #'pathname search-path)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-library-loaded-p (lib) Err bitreich.org 70 i- (not (null (foreign-library-handle (get-foreign-library lib))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun list-foreign-libraries (&key (loaded-only t) type) Err bitreich.org 70 i- "Return a list of defined foreign libraries. Err bitreich.org 70 i-If LOADED-ONLY is non-null only loaded libraries are returned. Err bitreich.org 70 i-TYPE restricts the output to a specific library type: if NIL Err bitreich.org 70 i-all libraries are returned." Err bitreich.org 70 i- (let ((libs (hash-table-values *foreign-libraries*))) Err bitreich.org 70 i- (remove-if (lambda (lib) Err bitreich.org 70 i- (or (and type Err bitreich.org 70 i- (not (eql type (foreign-library-type lib)))) Err bitreich.org 70 i- (and loaded-only Err bitreich.org 70 i- (not (foreign-library-loaded-p lib))))) Err bitreich.org 70 i- libs))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; :CONVENTION, :CALLING-CONVENTION and :CCONV are coalesced, Err bitreich.org 70 i-;; the former taking priority Err bitreich.org 70 i-;; options with NULL values are removed Err bitreich.org 70 i-(defun clean-spec-up (spec) Err bitreich.org 70 i- (mapcar (lambda (x) Err bitreich.org 70 i- (list* (first x) (second x) Err bitreich.org 70 i- (let* ((opts (cddr x)) Err bitreich.org 70 i- (cconv (getf opts :cconv)) Err bitreich.org 70 i- (calling-convention (getf opts :calling-convention)) Err bitreich.org 70 i- (convention (getf opts :convention)) Err bitreich.org 70 i- (search-path (getf opts :search-path))) Err bitreich.org 70 i- (remf opts :cconv) (remf opts :calling-convention) Err bitreich.org 70 i- (when cconv Err bitreich.org 70 i- (warn-obsolete-argument :cconv :convention)) Err bitreich.org 70 i- (when calling-convention Err bitreich.org 70 i- (warn-obsolete-argument :calling-convention Err bitreich.org 70 i- :convention)) Err bitreich.org 70 i- (setf (getf opts :convention) Err bitreich.org 70 i- (or convention calling-convention cconv)) Err bitreich.org 70 i- (setf (getf opts :search-path) Err bitreich.org 70 i- (mapcar #'pathname (ensure-list search-path))) Err bitreich.org 70 i- (loop for (opt val) on opts by #'cddr Err bitreich.org 70 i- when val append (list opt val) into new-opts Err bitreich.org 70 i- finally (return new-opts))))) Err bitreich.org 70 i- spec)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod initialize-instance :after Err bitreich.org 70 i- ((lib foreign-library) &key search-path Err bitreich.org 70 i- (cconv :cdecl cconv-p) Err bitreich.org 70 i- (calling-convention cconv calling-convention-p) Err bitreich.org 70 i- (convention calling-convention)) Err bitreich.org 70 i- (with-slots (type options spec) lib Err bitreich.org 70 i- (check-type type (member :system :test :grovel-wrapper)) Err bitreich.org 70 i- (setf spec (clean-spec-up spec)) Err bitreich.org 70 i- (let ((all-options Err bitreich.org 70 i- (apply #'append options (mapcar #'cddr spec)))) Err bitreich.org 70 i- (assert (subsetp (loop for (key . nil) on all-options by #'cddr Err bitreich.org 70 i- collect key) Err bitreich.org 70 i- '(:convention :search-path))) Err bitreich.org 70 i- (when cconv-p Err bitreich.org 70 i- (warn-obsolete-argument :cconv :convention)) Err bitreich.org 70 i- (when calling-convention-p Err bitreich.org 70 i- (warn-obsolete-argument :calling-convention :convention)) Err bitreich.org 70 i- (flet ((set-option (key value) Err bitreich.org 70 i- (when value (setf (getf options key) value)))) Err bitreich.org 70 i- (set-option :convention convention) Err bitreich.org 70 i- (set-option :search-path Err bitreich.org 70 i- (mapcar #'pathname (ensure-list search-path))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun register-foreign-library (name spec &rest options) Err bitreich.org 70 i- (let ((old-handle Err bitreich.org 70 i- (when-let ((old-lib (gethash name *foreign-libraries*))) Err bitreich.org 70 i- (foreign-library-handle old-lib)))) Err bitreich.org 70 i- (setf (get-foreign-library name) Err bitreich.org 70 i- (apply #'make-instance 'foreign-library Err bitreich.org 70 i- :name name Err bitreich.org 70 i- :spec spec Err bitreich.org 70 i- :handle old-handle Err bitreich.org 70 i- options)) Err bitreich.org 70 i- name)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro define-foreign-library (name-and-options &body pairs) Err bitreich.org 70 i- "Defines a foreign library NAME that can be posteriorly used with Err bitreich.org 70 i-the USE-FOREIGN-LIBRARY macro." Err bitreich.org 70 i- (destructuring-bind (name . options) Err bitreich.org 70 i- (ensure-list name-and-options) Err bitreich.org 70 i- (check-type name symbol) Err bitreich.org 70 i- `(register-foreign-library ',name ',pairs ,@options))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# LOAD-FOREIGN-LIBRARY-ERROR condition Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The various helper functions that load foreign libraries can Err bitreich.org 70 i-;;; signal this error when something goes wrong. We ignore the host's Err bitreich.org 70 i-;;; error. We should probably reuse its error message. Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition load-foreign-library-error (simple-error) Err bitreich.org 70 i- ()) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun read-new-value () Err bitreich.org 70 i- (format *query-io* "~&Enter a new value (unevaluated): ") Err bitreich.org 70 i- (force-output *query-io*) Err bitreich.org 70 i- (read *query-io*)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun fl-error (control &rest arguments) Err bitreich.org 70 i- (error 'load-foreign-library-error Err bitreich.org 70 i- :format-control control Err bitreich.org 70 i- :format-arguments arguments)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Loading Foreign Libraries Err bitreich.org 70 i- Err bitreich.org 70 i-(defun load-darwin-framework (name framework-name) Err bitreich.org 70 i- "Tries to find and load a darwin framework in one of the directories Err bitreich.org 70 i-in *DARWIN-FRAMEWORK-DIRECTORIES*. If unable to find FRAMEWORK-NAME, Err bitreich.org 70 i-it signals a LOAD-FOREIGN-LIBRARY-ERROR." Err bitreich.org 70 i- (let ((framework (find-darwin-framework framework-name))) Err bitreich.org 70 i- (if framework Err bitreich.org 70 i- (load-foreign-library-path name (native-namestring framework)) Err bitreich.org 70 i- (fl-error "Unable to find framework ~A" framework-name)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun report-simple-error (name error) Err bitreich.org 70 i- (fl-error "Unable to load foreign library (~A).~% ~A" Err bitreich.org 70 i- name Err bitreich.org 70 i- (format nil "~?" (simple-condition-format-control error) Err bitreich.org 70 i- (simple-condition-format-arguments error)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; FIXME: haven't double checked whether all Lisps signal a Err bitreich.org 70 i-;;; SIMPLE-ERROR on %load-foreign-library failure. In any case they Err bitreich.org 70 i-;;; should be throwing a more specific error. Err bitreich.org 70 i-(defun load-foreign-library-path (name path &optional search-path) Err bitreich.org 70 i- "Tries to load PATH using %LOAD-FOREIGN-LIBRARY which should try and Err bitreich.org 70 i-find it using the OS's usual methods. If that fails we try to find it Err bitreich.org 70 i-ourselves." Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (values (%load-foreign-library name path) Err bitreich.org 70 i- (pathname path)) Err bitreich.org 70 i- (simple-error (error) Err bitreich.org 70 i- (let ((dirs (parse-directories *foreign-library-directories*))) Err bitreich.org 70 i- (if-let (file (find-file path (append search-path dirs))) Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (values (%load-foreign-library name (native-namestring file)) Err bitreich.org 70 i- file) Err bitreich.org 70 i- (simple-error (error) Err bitreich.org 70 i- (report-simple-error name error))) Err bitreich.org 70 i- (report-simple-error name error)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun try-foreign-library-alternatives (name library-list &optional search-path) Err bitreich.org 70 i- "Goes through a list of alternatives and only signals an error when Err bitreich.org 70 i-none of alternatives were successfully loaded." Err bitreich.org 70 i- (dolist (lib library-list) Err bitreich.org 70 i- (multiple-value-bind (handle pathname) Err bitreich.org 70 i- (ignore-errors (load-foreign-library-helper name lib search-path)) Err bitreich.org 70 i- (when handle Err bitreich.org 70 i- (return-from try-foreign-library-alternatives Err bitreich.org 70 i- (values handle pathname))))) Err bitreich.org 70 i- ;; Perhaps we should show the error messages we got for each Err bitreich.org 70 i- ;; alternative if we can figure out a nice way to do that. Err bitreich.org 70 i- (fl-error "Unable to load any of the alternatives:~% ~S" library-list)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *cffi-feature-suffix-map* Err bitreich.org 70 i- '((:windows . ".dll") Err bitreich.org 70 i- (:darwin . ".dylib") Err bitreich.org 70 i- (:unix . ".so") Err bitreich.org 70 i- (t . ".so")) Err bitreich.org 70 i- "Mapping of OS feature keywords to shared library suffixes.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun default-library-suffix () Err bitreich.org 70 i- "Return a string to use as default library suffix based on the Err bitreich.org 70 i-operating system. This is used to implement the :DEFAULT option. Err bitreich.org 70 i-This will need to be extended as we test on more OSes." Err bitreich.org 70 i- (or (cdr (assoc-if #'featurep *cffi-feature-suffix-map*)) Err bitreich.org 70 i- (fl-error "Unable to determine the default library suffix on this OS."))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun load-foreign-library-helper (name thing &optional search-path) Err bitreich.org 70 i- (etypecase thing Err bitreich.org 70 i- ((or pathname string) Err bitreich.org 70 i- (load-foreign-library-path name (filter-pathname thing) search-path)) Err bitreich.org 70 i- (cons Err bitreich.org 70 i- (ecase (first thing) Err bitreich.org 70 i- (:framework (load-darwin-framework name (second thing))) Err bitreich.org 70 i- (:default Err bitreich.org 70 i- (unless (stringp (second thing)) Err bitreich.org 70 i- (fl-error "Argument to :DEFAULT must be a string.")) Err bitreich.org 70 i- (let ((library-path Err bitreich.org 70 i- (concatenate 'string Err bitreich.org 70 i- (second thing) Err bitreich.org 70 i- (default-library-suffix)))) Err bitreich.org 70 i- (load-foreign-library-path name library-path search-path))) Err bitreich.org 70 i- (:or (try-foreign-library-alternatives name (rest thing) search-path)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %do-load-foreign-library (library search-path) Err bitreich.org 70 i- (flet ((%do-load (lib name spec) Err bitreich.org 70 i- (when (foreign-library-spec lib) Err bitreich.org 70 i- (with-slots (handle pathname) lib Err bitreich.org 70 i- (setf (values handle pathname) Err bitreich.org 70 i- (load-foreign-library-helper Err bitreich.org 70 i- name spec (foreign-library-search-path lib))))) Err bitreich.org 70 i- lib)) Err bitreich.org 70 i- (etypecase library Err bitreich.org 70 i- (symbol Err bitreich.org 70 i- (let* ((lib (get-foreign-library library)) Err bitreich.org 70 i- (spec (foreign-library-spec lib))) Err bitreich.org 70 i- (%do-load lib library spec))) Err bitreich.org 70 i- ((or string list) Err bitreich.org 70 i- (let* ((lib-name (gensym Err bitreich.org 70 i- (format nil "~:@(~A~)-" Err bitreich.org 70 i- (if (listp library) Err bitreich.org 70 i- (first library) Err bitreich.org 70 i- (file-namestring library))))) Err bitreich.org 70 i- (lib (make-instance 'foreign-library Err bitreich.org 70 i- :type :system Err bitreich.org 70 i- :name lib-name Err bitreich.org 70 i- :spec `((t ,library)) Err bitreich.org 70 i- :search-path search-path))) Err bitreich.org 70 i- ;; first try to load the anonymous library Err bitreich.org 70 i- ;; and register it only if that worked Err bitreich.org 70 i- (%do-load lib lib-name library) Err bitreich.org 70 i- (setf (get-foreign-library lib-name) lib)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun filter-pathname (thing) Err bitreich.org 70 i- (typecase thing Err bitreich.org 70 i- (pathname (namestring thing)) Err bitreich.org 70 i- (t thing))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun load-foreign-library (library &key search-path) Err bitreich.org 70 i- "Loads a foreign LIBRARY which can be a symbol denoting a library defined Err bitreich.org 70 i-through DEFINE-FOREIGN-LIBRARY; a pathname or string in which case we try to Err bitreich.org 70 i-load it directly first then search for it in *FOREIGN-LIBRARY-DIRECTORIES*; Err bitreich.org 70 i-or finally list: either (:or lib1 lib2) or (:framework )." Err bitreich.org 70 i- (let ((library (filter-pathname library))) Err bitreich.org 70 i- (restart-case Err bitreich.org 70 i- (progn Err bitreich.org 70 i- ;; dlopen/dlclose does reference counting, but the CFFI-SYS Err bitreich.org 70 i- ;; API has no infrastructure to track that. Therefore if we Err bitreich.org 70 i- ;; want to avoid increasing the internal dlopen reference Err bitreich.org 70 i- ;; counter, and thus thwarting dlclose, then we need to try Err bitreich.org 70 i- ;; to call CLOSE-FOREIGN-LIBRARY and ignore any signaled Err bitreich.org 70 i- ;; errors. Err bitreich.org 70 i- (ignore-some-conditions (foreign-library-undefined-error) Err bitreich.org 70 i- (close-foreign-library library)) Err bitreich.org 70 i- (%do-load-foreign-library library search-path)) Err bitreich.org 70 i- ;; Offer these restarts that will retry the call to Err bitreich.org 70 i- ;; %LOAD-FOREIGN-LIBRARY. Err bitreich.org 70 i- (retry () Err bitreich.org 70 i- :report "Try loading the foreign library again." Err bitreich.org 70 i- (load-foreign-library library :search-path search-path)) Err bitreich.org 70 i- (use-value (new-library) Err bitreich.org 70 i- :report "Use another library instead." Err bitreich.org 70 i- :interactive read-new-value Err bitreich.org 70 i- (load-foreign-library new-library :search-path search-path))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro use-foreign-library (name) Err bitreich.org 70 i- `(load-foreign-library ',name)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Closing Foreign Libraries Err bitreich.org 70 i- Err bitreich.org 70 i-(defun close-foreign-library (library) Err bitreich.org 70 i- "Closes a foreign library." Err bitreich.org 70 i- (let* ((library (filter-pathname library)) Err bitreich.org 70 i- (lib (get-foreign-library library)) Err bitreich.org 70 i- (handle (foreign-library-handle lib))) Err bitreich.org 70 i- (when handle Err bitreich.org 70 i- (%close-foreign-library handle) Err bitreich.org 70 i- (setf (foreign-library-handle lib) nil) Err bitreich.org 70 i- t))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun reload-foreign-libraries (&key (test #'foreign-library-loaded-p)) Err bitreich.org 70 i- "(Re)load all currently loaded foreign libraries." Err bitreich.org 70 i- (let ((libs (list-foreign-libraries))) Err bitreich.org 70 i- (loop for l in libs Err bitreich.org 70 i- for name = (foreign-library-name l) Err bitreich.org 70 i- when (funcall test name) Err bitreich.org 70 i- do (load-foreign-library name)) Err bitreich.org 70 i- libs)) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/src/package.lisp b/3rdparties/software/cffi_0.20.0/src/package.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/src/package.lisp.gph bitreich.org 70 i@@ -1,181 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; package.lisp --- Package definition for CFFI. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cl-user) Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:cffi Err bitreich.org 70 i- (:use #:common-lisp #:cffi-sys #:babel-encodings) Err bitreich.org 70 i- (:import-from #:alexandria Err bitreich.org 70 i- #:compose Err bitreich.org 70 i- #:ensure-list Err bitreich.org 70 i- #:featurep Err bitreich.org 70 i- #:format-symbol Err bitreich.org 70 i- #:hash-table-values Err bitreich.org 70 i- #:if-let Err bitreich.org 70 i- #:ignore-some-conditions Err bitreich.org 70 i- #:lastcar Err bitreich.org 70 i- #:make-gensym-list Err bitreich.org 70 i- #:make-keyword Err bitreich.org 70 i- #:mappend Err bitreich.org 70 i- #:once-only Err bitreich.org 70 i- #:parse-body Err bitreich.org 70 i- #:simple-style-warning Err bitreich.org 70 i- #:symbolicate Err bitreich.org 70 i- #:unwind-protect-case Err bitreich.org 70 i- #:when-let Err bitreich.org 70 i- #:with-unique-names) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- ;; Types. Err bitreich.org 70 i- #:foreign-pointer Err bitreich.org 70 i- Err bitreich.org 70 i- ;; FIXME: the following types are undocumented. They should Err bitreich.org 70 i- ;; probably be replaced with a proper type introspection API Err bitreich.org 70 i- ;; though. Err bitreich.org 70 i- #:*built-in-foreign-types* Err bitreich.org 70 i- #:*other-builtin-types* Err bitreich.org 70 i- #:*built-in-integer-types* Err bitreich.org 70 i- #:*built-in-float-types* Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Primitive pointer operations. Err bitreich.org 70 i- #:foreign-free Err bitreich.org 70 i- #:foreign-alloc Err bitreich.org 70 i- #:mem-aptr Err bitreich.org 70 i- #:mem-aref Err bitreich.org 70 i- #:mem-ref Err bitreich.org 70 i- #:pointerp Err bitreich.org 70 i- #:pointer-eq Err bitreich.org 70 i- #:null-pointer Err bitreich.org 70 i- #:null-pointer-p Err bitreich.org 70 i- #:inc-pointer Err bitreich.org 70 i- #:incf-pointer Err bitreich.org 70 i- #:with-foreign-pointer Err bitreich.org 70 i- #:make-pointer Err bitreich.org 70 i- #:pointer-address Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Shareable vectors. Err bitreich.org 70 i- #:make-shareable-byte-vector Err bitreich.org 70 i- #:with-pointer-to-vector-data Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Foreign string operations. Err bitreich.org 70 i- #:*default-foreign-encoding* Err bitreich.org 70 i- #:foreign-string-alloc Err bitreich.org 70 i- #:foreign-string-free Err bitreich.org 70 i- #:foreign-string-to-lisp Err bitreich.org 70 i- #:lisp-string-to-foreign Err bitreich.org 70 i- #:with-foreign-string Err bitreich.org 70 i- #:with-foreign-strings Err bitreich.org 70 i- #:with-foreign-pointer-as-string Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Foreign array operations. Err bitreich.org 70 i- ;; TODO: document these Err bitreich.org 70 i- #:foreign-array-alloc Err bitreich.org 70 i- #:foreign-array-free Err bitreich.org 70 i- #:foreign-array-to-lisp Err bitreich.org 70 i- #:lisp-array-to-foreign Err bitreich.org 70 i- #:with-foreign-array Err bitreich.org 70 i- #:foreign-aref Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Foreign function operations. Err bitreich.org 70 i- #:defcfun Err bitreich.org 70 i- #:foreign-funcall Err bitreich.org 70 i- #:foreign-funcall-pointer Err bitreich.org 70 i- #:foreign-funcall-varargs Err bitreich.org 70 i- #:foreign-funcall-pointer-varargs Err bitreich.org 70 i- #:translate-camelcase-name Err bitreich.org 70 i- #:translate-name-from-foreign Err bitreich.org 70 i- #:translate-name-to-foreign Err bitreich.org 70 i- #:translate-underscore-separated-name Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Foreign library operations. Err bitreich.org 70 i- #:*foreign-library-directories* Err bitreich.org 70 i- #:*darwin-framework-directories* Err bitreich.org 70 i- #:foreign-library Err bitreich.org 70 i- #:foreign-library-name Err bitreich.org 70 i- #:foreign-library-pathname Err bitreich.org 70 i- #:foreign-library-type Err bitreich.org 70 i- #:foreign-library-loaded-p Err bitreich.org 70 i- #:list-foreign-libraries Err bitreich.org 70 i- #:define-foreign-library Err bitreich.org 70 i- #:load-foreign-library Err bitreich.org 70 i- #:load-foreign-library-error Err bitreich.org 70 i- #:use-foreign-library Err bitreich.org 70 i- #:close-foreign-library Err bitreich.org 70 i- #:reload-foreign-libraries Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Callbacks. Err bitreich.org 70 i- #:callback Err bitreich.org 70 i- #:get-callback Err bitreich.org 70 i- #:defcallback Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Foreign type operations. Err bitreich.org 70 i- #:defcstruct Err bitreich.org 70 i- #:defcunion Err bitreich.org 70 i- #:defctype Err bitreich.org 70 i- #:defcenum Err bitreich.org 70 i- #:defbitfield Err bitreich.org 70 i- #:define-foreign-type Err bitreich.org 70 i- #:define-parse-method Err bitreich.org 70 i- #:define-c-struct-wrapper Err bitreich.org 70 i- #:foreign-enum-keyword Err bitreich.org 70 i- #:foreign-enum-keyword-list Err bitreich.org 70 i- #:foreign-enum-value Err bitreich.org 70 i- #:foreign-bitfield-symbol-list Err bitreich.org 70 i- #:foreign-bitfield-symbols Err bitreich.org 70 i- #:foreign-bitfield-value Err bitreich.org 70 i- #:foreign-slot-pointer Err bitreich.org 70 i- #:foreign-slot-value Err bitreich.org 70 i- #:foreign-slot-type Err bitreich.org 70 i- #:foreign-slot-offset Err bitreich.org 70 i- #:foreign-slot-count Err bitreich.org 70 i- #:foreign-slot-names Err bitreich.org 70 i- #:foreign-type-alignment Err bitreich.org 70 i- #:foreign-type-size Err bitreich.org 70 i- #:with-foreign-object Err bitreich.org 70 i- #:with-foreign-objects Err bitreich.org 70 i- #:with-foreign-slots Err bitreich.org 70 i- #:convert-to-foreign Err bitreich.org 70 i- #:convert-from-foreign Err bitreich.org 70 i- #:convert-into-foreign-memory Err bitreich.org 70 i- #:free-converted-object Err bitreich.org 70 i- #:translation-forms-for-class Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Extensible foreign type operations. Err bitreich.org 70 i- #:define-translation-method ; FIXME: undocumented Err bitreich.org 70 i- #:translate-to-foreign Err bitreich.org 70 i- #:translate-from-foreign Err bitreich.org 70 i- #:translate-into-foreign-memory Err bitreich.org 70 i- #:free-translated-object Err bitreich.org 70 i- #:expand-to-foreign-dyn Err bitreich.org 70 i- #:expand-to-foreign Err bitreich.org 70 i- #:expand-from-foreign Err bitreich.org 70 i- #:expand-into-foreign-memory Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Foreign globals. Err bitreich.org 70 i- #:defcvar Err bitreich.org 70 i- #:get-var-pointer Err bitreich.org 70 i- #:foreign-symbol-pointer Err bitreich.org 70 i- )) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/src/strings.lisp b/3rdparties/software/cffi_0.20.0/src/strings.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/src/strings.lisp.gph bitreich.org 70 i@@ -1,305 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; strings.lisp --- Operations on foreign strings. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Copyright (C) 2005-2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Foreign String Conversion Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Functions for converting NULL-terminated C-strings to Lisp strings Err bitreich.org 70 i-;;; and vice versa. The string functions accept an ENCODING keyword Err bitreich.org 70 i-;;; argument which is used to specify the encoding to use when Err bitreich.org 70 i-;;; converting to/from foreign strings. Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *default-foreign-encoding* :utf-8 Err bitreich.org 70 i- "Default foreign encoding.") Err bitreich.org 70 i- Err bitreich.org 70 i-;;; TODO: refactor, sigh. Also, this should probably be a function. Err bitreich.org 70 i-(defmacro bget (ptr off &optional (bytes 1) (endianness :ne)) Err bitreich.org 70 i- (let ((big-endian (member endianness Err bitreich.org 70 i- '(:be #+big-endian :ne #+little-endian :re)))) Err bitreich.org 70 i- (once-only (ptr off) Err bitreich.org 70 i- (ecase bytes Err bitreich.org 70 i- (1 `(mem-ref ,ptr :uint8 ,off)) Err bitreich.org 70 i- (2 (if big-endian Err bitreich.org 70 i- #+big-endian Err bitreich.org 70 i- `(mem-ref ,ptr :uint16 ,off) Err bitreich.org 70 i- #-big-endian Err bitreich.org 70 i- `(dpb (mem-ref ,ptr :uint8 ,off) (byte 8 8) Err bitreich.org 70 i- (mem-ref ,ptr :uint8 (1+ ,off))) Err bitreich.org 70 i- #+little-endian Err bitreich.org 70 i- `(mem-ref ,ptr :uint16 ,off) Err bitreich.org 70 i- #-little-endian Err bitreich.org 70 i- `(dpb (mem-ref ,ptr :uint8 (1+ ,off)) (byte 8 8) Err bitreich.org 70 i- (mem-ref ,ptr :uint8 ,off)))) Err bitreich.org 70 i- (4 (if big-endian Err bitreich.org 70 i- #+big-endian Err bitreich.org 70 i- `(mem-ref ,ptr :uint32 ,off) Err bitreich.org 70 i- #-big-endian Err bitreich.org 70 i- `(dpb (mem-ref ,ptr :uint8 ,off) (byte 8 24) Err bitreich.org 70 i- (dpb (mem-ref ,ptr :uint8 (1+ ,off)) (byte 8 16) Err bitreich.org 70 i- (dpb (mem-ref ,ptr :uint8 (+ ,off 2)) (byte 8 8) Err bitreich.org 70 i- (mem-ref ,ptr :uint8 (+ ,off 3))))) Err bitreich.org 70 i- #+little-endian Err bitreich.org 70 i- `(mem-ref ,ptr :uint32 ,off) Err bitreich.org 70 i- #-little-endian Err bitreich.org 70 i- `(dpb (mem-ref ,ptr :uint8 (+ ,off 3)) (byte 8 24) Err bitreich.org 70 i- (dpb (mem-ref ,ptr :uint8 (+ ,off 2)) (byte 8 16) Err bitreich.org 70 i- (dpb (mem-ref ,ptr :uint8 (1+ ,off)) (byte 8 8) Err bitreich.org 70 i- (mem-ref ,ptr :uint8 ,off)))))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro bset (val ptr off &optional (bytes 1) (endianness :ne)) Err bitreich.org 70 i- (let ((big-endian (member endianness Err bitreich.org 70 i- '(:be #+big-endian :ne #+little-endian :re)))) Err bitreich.org 70 i- (ecase bytes Err bitreich.org 70 i- (1 `(setf (mem-ref ,ptr :uint8 ,off) ,val)) Err bitreich.org 70 i- (2 (if big-endian Err bitreich.org 70 i- #+big-endian Err bitreich.org 70 i- `(setf (mem-ref ,ptr :uint16 ,off) ,val) Err bitreich.org 70 i- #-big-endian Err bitreich.org 70 i- `(setf (mem-ref ,ptr :uint8 (1+ ,off)) (ldb (byte 8 0) ,val) Err bitreich.org 70 i- (mem-ref ,ptr :uint8 ,off) (ldb (byte 8 8) ,val)) Err bitreich.org 70 i- #+little-endian Err bitreich.org 70 i- `(setf (mem-ref ,ptr :uint16 ,off) ,val) Err bitreich.org 70 i- #-little-endian Err bitreich.org 70 i- `(setf (mem-ref ,ptr :uint8 ,off) (ldb (byte 8 0) ,val) Err bitreich.org 70 i- (mem-ref ,ptr :uint8 (1+ ,off)) (ldb (byte 8 8) ,val)))) Err bitreich.org 70 i- (4 (if big-endian Err bitreich.org 70 i- #+big-endian Err bitreich.org 70 i- `(setf (mem-ref ,ptr :uint32 ,off) ,val) Err bitreich.org 70 i- #-big-endian Err bitreich.org 70 i- `(setf (mem-ref ,ptr :uint8 (+ 3 ,off)) (ldb (byte 8 0) ,val) Err bitreich.org 70 i- (mem-ref ,ptr :uint8 (+ 2 ,off)) (ldb (byte 8 8) ,val) Err bitreich.org 70 i- (mem-ref ,ptr :uint8 (1+ ,off)) (ldb (byte 8 16) ,val) Err bitreich.org 70 i- (mem-ref ,ptr :uint8 ,off) (ldb (byte 8 24) ,val)) Err bitreich.org 70 i- #+little-endian Err bitreich.org 70 i- `(setf (mem-ref ,ptr :uint32 ,off) ,val) Err bitreich.org 70 i- #-little-endian Err bitreich.org 70 i- `(setf (mem-ref ,ptr :uint8 ,off) (ldb (byte 8 0) ,val) Err bitreich.org 70 i- (mem-ref ,ptr :uint8 (1+ ,off)) (ldb (byte 8 8) ,val) Err bitreich.org 70 i- (mem-ref ,ptr :uint8 (+ ,off 2)) (ldb (byte 8 16) ,val) Err bitreich.org 70 i- (mem-ref ,ptr :uint8 (+ ,off 3)) (ldb (byte 8 24) ,val))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; TODO: tackle optimization notes. Err bitreich.org 70 i-(defparameter *foreign-string-mappings* Err bitreich.org 70 i- (instantiate-concrete-mappings Err bitreich.org 70 i- ;; :optimize ((speed 3) (debug 0) (compilation-speed 0) (safety 0)) Err bitreich.org 70 i- :octet-seq-getter bget Err bitreich.org 70 i- :octet-seq-setter bset Err bitreich.org 70 i- :octet-seq-type foreign-pointer Err bitreich.org 70 i- :code-point-seq-getter babel::string-get Err bitreich.org 70 i- :code-point-seq-setter babel::string-set Err bitreich.org 70 i- :code-point-seq-type babel:simple-unicode-string)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun null-terminator-len (encoding) Err bitreich.org 70 i- (length (enc-nul-encoding (get-character-encoding encoding)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun lisp-string-to-foreign (string buffer bufsize &key (start 0) end offset Err bitreich.org 70 i- (encoding *default-foreign-encoding*)) Err bitreich.org 70 i- (check-type string string) Err bitreich.org 70 i- (when offset Err bitreich.org 70 i- (setq buffer (inc-pointer buffer offset))) Err bitreich.org 70 i- (with-checked-simple-vector ((string (coerce string 'babel:unicode-string)) Err bitreich.org 70 i- (start start) (end end)) Err bitreich.org 70 i- (declare (type simple-string string)) Err bitreich.org 70 i- (let ((mapping (lookup-mapping *foreign-string-mappings* encoding)) Err bitreich.org 70 i- (nul-len (null-terminator-len encoding))) Err bitreich.org 70 i- (assert (plusp bufsize)) Err bitreich.org 70 i- (multiple-value-bind (size end) Err bitreich.org 70 i- (funcall (octet-counter mapping) string start end (- bufsize nul-len)) Err bitreich.org 70 i- (funcall (encoder mapping) string start end buffer 0) Err bitreich.org 70 i- (dotimes (i nul-len) Err bitreich.org 70 i- (setf (mem-ref buffer :char (+ size i)) 0)))) Err bitreich.org 70 i- buffer)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Expands into a loop that calculates the length of the foreign Err bitreich.org 70 i-;;; string at PTR plus OFFSET, using ACCESSOR and looking for a null Err bitreich.org 70 i-;;; terminator of LENGTH bytes. Err bitreich.org 70 i-(defmacro %foreign-string-length (ptr offset type length) Err bitreich.org 70 i- (once-only (ptr offset) Err bitreich.org 70 i- `(do ((i 0 (+ i ,length))) Err bitreich.org 70 i- ((zerop (mem-ref ,ptr ,type (+ ,offset i))) i) Err bitreich.org 70 i- (declare (fixnum i))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Return the length in octets of the null terminated foreign string Err bitreich.org 70 i-;;; at POINTER plus OFFSET octets, assumed to be encoded in ENCODING, Err bitreich.org 70 i-;;; a CFFI encoding. This should be smart enough to look for 8-bit vs Err bitreich.org 70 i-;;; 16-bit null terminators, as appropriate for the encoding. Err bitreich.org 70 i-(defun foreign-string-length (pointer &key (encoding *default-foreign-encoding*) Err bitreich.org 70 i- (offset 0)) Err bitreich.org 70 i- (ecase (null-terminator-len encoding) Err bitreich.org 70 i- (1 (%foreign-string-length pointer offset :uint8 1)) Err bitreich.org 70 i- (2 (%foreign-string-length pointer offset :uint16 2)) Err bitreich.org 70 i- (4 (%foreign-string-length pointer offset :uint32 4)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-string-to-lisp (pointer &key (offset 0) count Err bitreich.org 70 i- (max-chars (1- array-total-size-limit)) Err bitreich.org 70 i- (encoding *default-foreign-encoding*)) Err bitreich.org 70 i- "Copy at most COUNT bytes from POINTER plus OFFSET encoded in Err bitreich.org 70 i-ENCODING into a Lisp string and return it. If POINTER is a null Err bitreich.org 70 i-pointer, NIL is returned." Err bitreich.org 70 i- (unless (null-pointer-p pointer) Err bitreich.org 70 i- (let ((count (or count Err bitreich.org 70 i- (foreign-string-length Err bitreich.org 70 i- pointer :encoding encoding :offset offset))) Err bitreich.org 70 i- (mapping (lookup-mapping *foreign-string-mappings* encoding))) Err bitreich.org 70 i- (assert (plusp max-chars)) Err bitreich.org 70 i- (multiple-value-bind (size new-end) Err bitreich.org 70 i- (funcall (code-point-counter mapping) Err bitreich.org 70 i- pointer offset (+ offset count) max-chars) Err bitreich.org 70 i- (let ((string (make-string size :element-type 'babel:unicode-char))) Err bitreich.org 70 i- (funcall (decoder mapping) pointer offset new-end string 0) Err bitreich.org 70 i- (values string (- new-end offset))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Using Foreign Strings Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-string-alloc (string &key (encoding *default-foreign-encoding*) Err bitreich.org 70 i- (null-terminated-p t) (start 0) end) Err bitreich.org 70 i- "Allocate a foreign string containing Lisp string STRING. Err bitreich.org 70 i-The string must be freed with FOREIGN-STRING-FREE." Err bitreich.org 70 i- (check-type string string) Err bitreich.org 70 i- (with-checked-simple-vector ((string (coerce string 'babel:unicode-string)) Err bitreich.org 70 i- (start start) (end end)) Err bitreich.org 70 i- (declare (type simple-string string)) Err bitreich.org 70 i- (let* ((mapping (lookup-mapping *foreign-string-mappings* encoding)) Err bitreich.org 70 i- (count (funcall (octet-counter mapping) string start end 0)) Err bitreich.org 70 i- (nul-length (if null-terminated-p Err bitreich.org 70 i- (null-terminator-len encoding) Err bitreich.org 70 i- 0)) Err bitreich.org 70 i- (length (+ count nul-length)) Err bitreich.org 70 i- (ptr (foreign-alloc :char :count length))) Err bitreich.org 70 i- (funcall (encoder mapping) string start end ptr 0) Err bitreich.org 70 i- (dotimes (i nul-length) Err bitreich.org 70 i- (setf (mem-ref ptr :char (+ count i)) 0)) Err bitreich.org 70 i- (values ptr length)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-string-free (ptr) Err bitreich.org 70 i- "Free a foreign string allocated by FOREIGN-STRING-ALLOC." Err bitreich.org 70 i- (foreign-free ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-foreign-string ((var-or-vars lisp-string &rest args) &body body) Err bitreich.org 70 i- "VAR-OR-VARS is not evaluated and should be a list of the form Err bitreich.org 70 i-\(VAR &OPTIONAL BYTE-SIZE-VAR) or just a VAR symbol. VAR is Err bitreich.org 70 i-bound to a foreign string containing LISP-STRING in BODY. When Err bitreich.org 70 i-BYTE-SIZE-VAR is specified then bind the C buffer size Err bitreich.org 70 i-\(including the possible null terminator\(s)) to this variable." Err bitreich.org 70 i- (destructuring-bind (var &optional size-var) Err bitreich.org 70 i- (ensure-list var-or-vars) Err bitreich.org 70 i- `(multiple-value-bind (,var ,@(when size-var (list size-var))) Err bitreich.org 70 i- (foreign-string-alloc ,lisp-string ,@args) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn ,@body) Err bitreich.org 70 i- (foreign-string-free ,var))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-foreign-strings (bindings &body body) Err bitreich.org 70 i- "See WITH-FOREIGN-STRING's documentation." Err bitreich.org 70 i- (if bindings Err bitreich.org 70 i- `(with-foreign-string ,(first bindings) Err bitreich.org 70 i- (with-foreign-strings ,(rest bindings) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- `(progn ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-foreign-pointer-as-string Err bitreich.org 70 i- ((var-or-vars size &rest args) &body body) Err bitreich.org 70 i- "VAR-OR-VARS is not evaluated and should be a list of the form Err bitreich.org 70 i-\(VAR &OPTIONAL SIZE-VAR) or just a VAR symbol. VAR is bound to Err bitreich.org 70 i-a foreign buffer of size SIZE within BODY. The return value is Err bitreich.org 70 i-constructed by calling FOREIGN-STRING-TO-LISP on the foreign Err bitreich.org 70 i-buffer along with ARGS." ; fix wording, sigh Err bitreich.org 70 i- (destructuring-bind (var &optional size-var) Err bitreich.org 70 i- (ensure-list var-or-vars) Err bitreich.org 70 i- `(with-foreign-pointer (,var ,size ,size-var) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- ,@body Err bitreich.org 70 i- (values (foreign-string-to-lisp ,var ,@args)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Automatic Conversion of Foreign Strings Err bitreich.org 70 i- Err bitreich.org 70 i-(define-foreign-type foreign-string-type () Err bitreich.org 70 i- (;; CFFI encoding of this string. Err bitreich.org 70 i- (encoding :initform nil :initarg :encoding :reader encoding) Err bitreich.org 70 i- ;; Should we free after translating from foreign? Err bitreich.org 70 i- (free-from-foreign :initarg :free-from-foreign Err bitreich.org 70 i- :reader fst-free-from-foreign-p Err bitreich.org 70 i- :initform nil :type boolean) Err bitreich.org 70 i- ;; Should we free after translating to foreign? Err bitreich.org 70 i- (free-to-foreign :initarg :free-to-foreign Err bitreich.org 70 i- :reader fst-free-to-foreign-p Err bitreich.org 70 i- :initform t :type boolean)) Err bitreich.org 70 i- (:actual-type :pointer) Err bitreich.org 70 i- (:simple-parser :string)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; describe me Err bitreich.org 70 i-(defun fst-encoding (type) Err bitreich.org 70 i- (or (encoding type) *default-foreign-encoding*)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Display the encoding when printing a FOREIGN-STRING-TYPE instance. Err bitreich.org 70 i-(defmethod print-object ((type foreign-string-type) stream) Err bitreich.org 70 i- (print-unreadable-object (type stream :type t) Err bitreich.org 70 i- (format stream "~S" (fst-encoding type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-to-foreign ((s string) (type foreign-string-type)) Err bitreich.org 70 i- (values (foreign-string-alloc s :encoding (fst-encoding type)) Err bitreich.org 70 i- (fst-free-to-foreign-p type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-to-foreign (obj (type foreign-string-type)) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((pointerp obj) Err bitreich.org 70 i- (values obj nil)) Err bitreich.org 70 i- ;; FIXME: we used to support UB8 vectors but not anymore. Err bitreich.org 70 i- ;; ((typep obj '(array (unsigned-byte 8))) Err bitreich.org 70 i- ;; (values (foreign-string-alloc obj) t)) Err bitreich.org 70 i- (t (error "~A is not a Lisp string or pointer." obj)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-from-foreign (ptr (type foreign-string-type)) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (values (foreign-string-to-lisp ptr :encoding (fst-encoding type))) Err bitreich.org 70 i- (when (fst-free-from-foreign-p type) Err bitreich.org 70 i- (foreign-free ptr)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod free-translated-object (ptr (type foreign-string-type) free-p) Err bitreich.org 70 i- (when free-p Err bitreich.org 70 i- (foreign-string-free ptr))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod expand-to-foreign-dyn-indirect Err bitreich.org 70 i- (value var body (type foreign-string-type)) Err bitreich.org 70 i- (alexandria:with-gensyms (str) Err bitreich.org 70 i- (expand-to-foreign-dyn Err bitreich.org 70 i- value Err bitreich.org 70 i- str Err bitreich.org 70 i- (list Err bitreich.org 70 i- (expand-to-foreign-dyn-indirect str var body (parse-type :pointer))) Err bitreich.org 70 i- type))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# STRING+PTR Err bitreich.org 70 i- Err bitreich.org 70 i-(define-foreign-type foreign-string+ptr-type (foreign-string-type) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:simple-parser :string+ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-from-foreign (value (type foreign-string+ptr-type)) Err bitreich.org 70 i- (list (call-next-method) value)) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/src/structures.lisp b/3rdparties/software/cffi_0.20.0/src/structures.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/src/structures.lisp.gph bitreich.org 70 i@@ -1,133 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; structures.lisp --- Methods for translating foreign structures. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2011, Liam M. Healy Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Definitions for conversion of foreign structures. Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-into-foreign-memory ((object list) Err bitreich.org 70 i- (type foreign-struct-type) Err bitreich.org 70 i- p) Err bitreich.org 70 i- (unless (bare-struct-type-p type) Err bitreich.org 70 i- (loop for (name value) on object by #'cddr Err bitreich.org 70 i- do (setf (foreign-slot-value p (unparse-type type) name) Err bitreich.org 70 i- (let ((slot (gethash name (structure-slots type)))) Err bitreich.org 70 i- (convert-to-foreign value (slot-type slot))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-to-foreign (value (type foreign-struct-type)) Err bitreich.org 70 i- (let ((ptr (foreign-alloc type))) Err bitreich.org 70 i- (translate-into-foreign-memory value type ptr) Err bitreich.org 70 i- ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-from-foreign (p (type foreign-struct-type)) Err bitreich.org 70 i- ;; Iterate over slots, make plist Err bitreich.org 70 i- (if (bare-struct-type-p type) Err bitreich.org 70 i- p Err bitreich.org 70 i- (let ((plist (list))) Err bitreich.org 70 i- (loop for slot being the hash-value of (structure-slots type) Err bitreich.org 70 i- for name = (slot-name slot) Err bitreich.org 70 i- do (setf (getf plist name) Err bitreich.org 70 i- (foreign-struct-slot-value p slot))) Err bitreich.org 70 i- plist))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod free-translated-object (ptr (type foreign-struct-type) freep) Err bitreich.org 70 i- (unless (bare-struct-type-p type) Err bitreich.org 70 i- ;; Look for any pointer slots and free them first Err bitreich.org 70 i- (loop for slot being the hash-value of (structure-slots type) Err bitreich.org 70 i- when (and (listp (slot-type slot)) (eq (first (slot-type slot)) :pointer)) Err bitreich.org 70 i- do Err bitreich.org 70 i- ;; Free if the pointer is to a specific type, not generic :pointer Err bitreich.org 70 i- (free-translated-object Err bitreich.org 70 i- (foreign-slot-value ptr type (slot-name slot)) Err bitreich.org 70 i- (rest (slot-type slot)) Err bitreich.org 70 i- freep)) Err bitreich.org 70 i- (foreign-free ptr))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro define-translation-method ((object type method) &body body) Err bitreich.org 70 i- "Define a translation method for the foreign structure type; 'method is one of :into, :from, or :to, meaning relation to foreign memory. If :into, the variable 'pointer is the foreign pointer. Note: type must be defined and loaded before this macro is expanded, and just the bare name (without :struct) should be specified." Err bitreich.org 70 i- (let ((tclass (class-name (class-of (cffi::parse-type `(:struct ,type)))))) Err bitreich.org 70 i- (when (eq tclass 'foreign-struct-type) Err bitreich.org 70 i- (error "Won't replace existing translation method for foreign-struct-type")) Err bitreich.org 70 i- `(defmethod Err bitreich.org 70 i- ,(case method Err bitreich.org 70 i- (:into 'translate-into-foreign-memory) Err bitreich.org 70 i- (:from 'translate-from-foreign) Err bitreich.org 70 i- (:to 'translate-to-foreign)) Err bitreich.org 70 i- ;; Arguments to the method Err bitreich.org 70 i- (,object Err bitreich.org 70 i- (type ,tclass) Err bitreich.org 70 i- ,@(when (eq method :into) '(pointer))) ; is intentional variable capture a good idea? Err bitreich.org 70 i- ;; The body Err bitreich.org 70 i- (declare (ignorable type)) ; I can't think of a reason why you'd want to use this Err bitreich.org 70 i- ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro translation-forms-for-class (class type-class) Err bitreich.org 70 i- "Make forms for translation of foreign structures to and from a standard class. The class slots are assumed to have the same name as the foreign structure." Err bitreich.org 70 i- ;; Possible improvement: optional argument to map structure slot names to/from class slot names. Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (defmethod translate-from-foreign (pointer (type ,type-class)) Err bitreich.org 70 i- ;; Make the instance from the plist Err bitreich.org 70 i- (apply 'make-instance ',class (call-next-method))) Err bitreich.org 70 i- (defmethod translate-into-foreign-memory ((object ,class) (type ,type-class) pointer) Err bitreich.org 70 i- (call-next-method Err bitreich.org 70 i- ;; Translate into a plist and call the general method Err bitreich.org 70 i- (loop for slot being the hash-value of (structure-slots type) Err bitreich.org 70 i- for name = (slot-name slot) Err bitreich.org 70 i- append (list slot-name (slot-value object slot-name))) Err bitreich.org 70 i- type Err bitreich.org 70 i- pointer)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; For a class already defined and loaded, and a defcstruct already defined, use Err bitreich.org 70 i-;;; (translation-forms-for-class class type-class) Err bitreich.org 70 i-;;; to connnect the two. It would be nice to have a macro to do all three simultaneously. Err bitreich.org 70 i-;;; (defmacro define-foreign-structure (class )) Err bitreich.org 70 i- Err bitreich.org 70 i-#| Err bitreich.org 70 i-(defmacro define-structure-conversion Err bitreich.org 70 i- (value-symbol type lisp-class slot-names to-form from-form &optional (struct-name type)) Err bitreich.org 70 i- "Define the functions necessary to convert to and from a foreign structure. The to-form sets each of the foreign slots in succession, assume the foreign object exists. The from-form creates the Lisp object, making it with the correct value by reference to foreign slots." Err bitreich.org 70 i- `(flet ((map-slots (fn val) Err bitreich.org 70 i- (maphash Err bitreich.org 70 i- (lambda (name slot-struct) Err bitreich.org 70 i- (funcall fn (foreign-slot-value val ',type name) (slot-type slot-struct))) Err bitreich.org 70 i- (slots (follow-typedefs (parse-type ',type)))))) Err bitreich.org 70 i- ;; Convert this to a separate function so it doesn't have to be recomputed on the fly each time. Err bitreich.org 70 i- (defmethod translate-to-foreign ((,value-symbol ,lisp-class) (type ,type)) Err bitreich.org 70 i- (let ((p (foreign-alloc ',struct-name))) Err bitreich.org 70 i- ;;(map-slots #'translate-to-foreign ,value-symbol) ; recursive translation of slots Err bitreich.org 70 i- (with-foreign-slots (,slot-names p ,struct-name) Err bitreich.org 70 i- ,to-form) Err bitreich.org 70 i- (values p t))) ; second value is passed to FREE-TRANSLATED-OBJECT Err bitreich.org 70 i- (defmethod free-translated-object (,value-symbol (p ,type) freep) Err bitreich.org 70 i- (when freep Err bitreich.org 70 i- ;; Is this redundant? Err bitreich.org 70 i- (map-slots #'free-translated-object value) ; recursively free slots Err bitreich.org 70 i- (foreign-free ,value-symbol))) Err bitreich.org 70 i- (defmethod translate-from-foreign (,value-symbol (type ,type)) Err bitreich.org 70 i- (with-foreign-slots (,slot-names ,value-symbol ,struct-name) Err bitreich.org 70 i- ,from-form)))) Err bitreich.org 70 i-|# Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/src/types.lisp b/3rdparties/software/cffi_0.20.0/src/types.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/src/types.lisp.gph bitreich.org 70 i@@ -1,1051 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; types.lisp --- User-defined CFFI types. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Copyright (C) 2005-2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Built-In Types Err bitreich.org 70 i- Err bitreich.org 70 i-;; NOTE: In the C standard there's a "signed-char": Err bitreich.org 70 i-;; https://stackoverflow.com/questions/436513/char-signed-char-char-unsigned-char Err bitreich.org 70 i-;; and "char" may be either signed or unsigned, i.e. treating it as a small int Err bitreich.org 70 i-;; is not wise. At the level of CFFI we can safely ignore this and assume that Err bitreich.org 70 i-;; :char is mapped to "signed-char" by the CL implementation under us. Err bitreich.org 70 i-(define-built-in-foreign-type :char) Err bitreich.org 70 i-(define-built-in-foreign-type :unsigned-char) Err bitreich.org 70 i-(define-built-in-foreign-type :short) Err bitreich.org 70 i-(define-built-in-foreign-type :unsigned-short) Err bitreich.org 70 i-(define-built-in-foreign-type :int) Err bitreich.org 70 i-(define-built-in-foreign-type :unsigned-int) Err bitreich.org 70 i-(define-built-in-foreign-type :long) Err bitreich.org 70 i-(define-built-in-foreign-type :unsigned-long) Err bitreich.org 70 i-(define-built-in-foreign-type :float) Err bitreich.org 70 i-(define-built-in-foreign-type :double) Err bitreich.org 70 i-(define-built-in-foreign-type :void) Err bitreich.org 70 i- Err bitreich.org 70 i-#-cffi-sys::no-long-long Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (define-built-in-foreign-type :long-long) Err bitreich.org 70 i- (define-built-in-foreign-type :unsigned-long-long)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Define emulated LONG-LONG types. Needs checking whether we're Err bitreich.org 70 i-;;; using the right sizes on various platforms. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; A possibly better, certainly faster though more intrusive, Err bitreich.org 70 i-;;; alternative is available here: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-#+cffi-sys::no-long-long Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (defclass emulated-llong-type (foreign-type) ()) Err bitreich.org 70 i- (defmethod foreign-type-size ((tp emulated-llong-type)) 8) Err bitreich.org 70 i- (defmethod foreign-type-alignment ((tp emulated-llong-type)) Err bitreich.org 70 i- ;; better than assuming that the alignment is 8 Err bitreich.org 70 i- (foreign-type-alignment :long)) Err bitreich.org 70 i- (defmethod aggregatep ((tp emulated-llong-type)) nil) Err bitreich.org 70 i- Err bitreich.org 70 i- (define-foreign-type emulated-llong (emulated-llong-type) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:simple-parser :long-long)) Err bitreich.org 70 i- Err bitreich.org 70 i- (define-foreign-type emulated-ullong (emulated-llong-type) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:simple-parser :unsigned-long-long)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod canonicalize ((tp emulated-llong)) :long-long) Err bitreich.org 70 i- (defmethod unparse-type ((tp emulated-llong)) :long-long) Err bitreich.org 70 i- (defmethod canonicalize ((tp emulated-ullong)) :unsigned-long-long) Err bitreich.org 70 i- (defmethod unparse-type ((tp emulated-ullong)) :unsigned-long-long) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %emulated-mem-ref-64 (ptr type offset) Err bitreich.org 70 i- (let ((value #+big-endian Err bitreich.org 70 i- (+ (ash (mem-ref ptr :unsigned-long offset) 32) Err bitreich.org 70 i- (mem-ref ptr :unsigned-long (+ offset 4))) Err bitreich.org 70 i- #+little-endian Err bitreich.org 70 i- (+ (mem-ref ptr :unsigned-long offset) Err bitreich.org 70 i- (ash (mem-ref ptr :unsigned-long (+ offset 4)) 32)))) Err bitreich.org 70 i- (if (and (eq type :long-long) (logbitp 63 value)) Err bitreich.org 70 i- (lognot (logxor value #xFFFFFFFFFFFFFFFF)) Err bitreich.org 70 i- value))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %emulated-mem-set-64 (value ptr type offset) Err bitreich.org 70 i- (when (and (eq type :long-long) (minusp value)) Err bitreich.org 70 i- (setq value (lognot (logxor value #xFFFFFFFFFFFFFFFF)))) Err bitreich.org 70 i- (%mem-set (ldb (byte 32 0) value) ptr :unsigned-long Err bitreich.org 70 i- #+big-endian (+ offset 4) #+little-endian offset) Err bitreich.org 70 i- (%mem-set (ldb (byte 32 32) value) ptr :unsigned-long Err bitreich.org 70 i- #+big-endian offset #+little-endian (+ offset 4)) Err bitreich.org 70 i- value)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; When some lisp other than SCL supports :long-double we should Err bitreich.org 70 i-;;; use #-cffi-sys::no-long-double here instead. Err bitreich.org 70 i-#+(and scl long-float) (define-built-in-foreign-type :long-double) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *possible-float-types* '(:float :double :long-double)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *other-builtin-types* '(:pointer :void) Err bitreich.org 70 i- "List of types other than integer or float built in to CFFI.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *built-in-integer-types* Err bitreich.org 70 i- (set-difference Err bitreich.org 70 i- cffi:*built-in-foreign-types* Err bitreich.org 70 i- (append *possible-float-types* *other-builtin-types*)) Err bitreich.org 70 i- "List of integer types supported by CFFI.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *built-in-float-types* Err bitreich.org 70 i- (set-difference Err bitreich.org 70 i- cffi:*built-in-foreign-types* Err bitreich.org 70 i- (append *built-in-integer-types* *other-builtin-types*)) Err bitreich.org 70 i- "List of real float types supported by CFFI.") Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Foreign Pointers Err bitreich.org 70 i- Err bitreich.org 70 i-(define-modify-macro incf-pointer (&optional (offset 1)) inc-pointer) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun mem-ref (ptr type &optional (offset 0)) Err bitreich.org 70 i- "Return the value of TYPE at OFFSET bytes from PTR. If TYPE is aggregate, Err bitreich.org 70 i-we don't return its 'value' but a pointer to it, which is PTR itself." Err bitreich.org 70 i- (let* ((parsed-type (parse-type type)) Err bitreich.org 70 i- (ctype (canonicalize parsed-type))) Err bitreich.org 70 i- #+cffi-sys::no-long-long Err bitreich.org 70 i- (when (member ctype '(:long-long :unsigned-long-long)) Err bitreich.org 70 i- (return-from mem-ref Err bitreich.org 70 i- (translate-from-foreign (%emulated-mem-ref-64 ptr ctype offset) Err bitreich.org 70 i- parsed-type))) Err bitreich.org 70 i- ;; normal branch Err bitreich.org 70 i- (if (aggregatep parsed-type) Err bitreich.org 70 i- (if (bare-struct-type-p parsed-type) Err bitreich.org 70 i- (inc-pointer ptr offset) Err bitreich.org 70 i- (translate-from-foreign (inc-pointer ptr offset) parsed-type)) Err bitreich.org 70 i- (translate-from-foreign (%mem-ref ptr ctype offset) parsed-type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-compiler-macro mem-ref (&whole form ptr type &optional (offset 0)) Err bitreich.org 70 i- "Compiler macro to open-code MEM-REF when TYPE is constant." Err bitreich.org 70 i- (if (constantp type) Err bitreich.org 70 i- (let* ((parsed-type (parse-type (eval type))) Err bitreich.org 70 i- (ctype (canonicalize parsed-type))) Err bitreich.org 70 i- ;; Bail out when using emulated long long types. Err bitreich.org 70 i- #+cffi-sys::no-long-long Err bitreich.org 70 i- (when (member ctype '(:long-long :unsigned-long-long)) Err bitreich.org 70 i- (return-from mem-ref form)) Err bitreich.org 70 i- (if (aggregatep parsed-type) Err bitreich.org 70 i- (if (bare-struct-type-p parsed-type) Err bitreich.org 70 i- `(inc-pointer ,ptr ,offset) Err bitreich.org 70 i- (expand-from-foreign `(inc-pointer ,ptr ,offset) parsed-type)) Err bitreich.org 70 i- (expand-from-foreign `(%mem-ref ,ptr ,ctype ,offset) parsed-type))) Err bitreich.org 70 i- form)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun mem-set (value ptr type &optional (offset 0)) Err bitreich.org 70 i- "Set the value of TYPE at OFFSET bytes from PTR to VALUE." Err bitreich.org 70 i- (let* ((ptype (parse-type type)) Err bitreich.org 70 i- (ctype (canonicalize ptype))) Err bitreich.org 70 i- #+cffi-sys::no-long-long Err bitreich.org 70 i- (when (or (eq ctype :long-long) (eq ctype :unsigned-long-long)) Err bitreich.org 70 i- (return-from mem-set Err bitreich.org 70 i- (%emulated-mem-set-64 (translate-to-foreign value ptype) Err bitreich.org 70 i- ptr ctype offset))) Err bitreich.org 70 i- (if (aggregatep ptype) ; XXX: backwards incompatible? Err bitreich.org 70 i- (translate-into-foreign-memory value ptype (inc-pointer ptr offset)) Err bitreich.org 70 i- (%mem-set (translate-to-foreign value ptype) ptr ctype offset)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-setf-expander mem-ref (ptr type &optional (offset 0) &environment env) Err bitreich.org 70 i- "SETF expander for MEM-REF that doesn't rebind TYPE. Err bitreich.org 70 i-This is necessary for the compiler macro on MEM-SET to be able Err bitreich.org 70 i-to open-code (SETF MEM-REF) forms." Err bitreich.org 70 i- (multiple-value-bind (dummies vals newval setter getter) Err bitreich.org 70 i- (get-setf-expansion ptr env) Err bitreich.org 70 i- (declare (ignore setter newval)) Err bitreich.org 70 i- ;; if either TYPE or OFFSET are constant, we avoid rebinding them Err bitreich.org 70 i- ;; so that the compiler macros on MEM-SET and %MEM-SET work. Err bitreich.org 70 i- (with-unique-names (store type-tmp offset-tmp) Err bitreich.org 70 i- (values Err bitreich.org 70 i- (append (unless (constantp type) (list type-tmp)) Err bitreich.org 70 i- (unless (constantp offset) (list offset-tmp)) Err bitreich.org 70 i- dummies) Err bitreich.org 70 i- (append (unless (constantp type) (list type)) Err bitreich.org 70 i- (unless (constantp offset) (list offset)) Err bitreich.org 70 i- vals) Err bitreich.org 70 i- (list store) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (mem-set ,store ,getter Err bitreich.org 70 i- ,@(if (constantp type) (list type) (list type-tmp)) Err bitreich.org 70 i- ,@(if (constantp offset) (list offset) (list offset-tmp))) Err bitreich.org 70 i- ,store) Err bitreich.org 70 i- `(mem-ref ,getter Err bitreich.org 70 i- ,@(if (constantp type) (list type) (list type-tmp)) Err bitreich.org 70 i- ,@(if (constantp offset) (list offset) (list offset-tmp))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-compiler-macro mem-set Err bitreich.org 70 i- (&whole form value ptr type &optional (offset 0)) Err bitreich.org 70 i- "Compiler macro to open-code (SETF MEM-REF) when type is constant." Err bitreich.org 70 i- (if (constantp type) Err bitreich.org 70 i- (let* ((parsed-type (parse-type (eval type))) Err bitreich.org 70 i- (ctype (canonicalize parsed-type))) Err bitreich.org 70 i- ;; Bail out when using emulated long long types. Err bitreich.org 70 i- #+cffi-sys::no-long-long Err bitreich.org 70 i- (when (member ctype '(:long-long :unsigned-long-long)) Err bitreich.org 70 i- (return-from mem-set form)) Err bitreich.org 70 i- (if (aggregatep parsed-type) Err bitreich.org 70 i- (expand-into-foreign-memory Err bitreich.org 70 i- value parsed-type `(inc-pointer ,ptr ,offset)) Err bitreich.org 70 i- `(%mem-set ,(expand-to-foreign value parsed-type) Err bitreich.org 70 i- ,ptr ,ctype ,offset))) Err bitreich.org 70 i- form)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Dereferencing Foreign Arrays Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Maybe this should be named MEM-SVREF? [2007-02-28 LO] Err bitreich.org 70 i-(defun mem-aref (ptr type &optional (index 0)) Err bitreich.org 70 i- "Like MEM-REF except for accessing 1d arrays." Err bitreich.org 70 i- (mem-ref ptr type (* index (foreign-type-size type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-compiler-macro mem-aref (&whole form ptr type &optional (index 0)) Err bitreich.org 70 i- "Compiler macro to open-code MEM-AREF when TYPE (and eventually INDEX)." Err bitreich.org 70 i- (if (constantp type) Err bitreich.org 70 i- (if (constantp index) Err bitreich.org 70 i- `(mem-ref ,ptr ,type Err bitreich.org 70 i- ,(* (eval index) (foreign-type-size (eval type)))) Err bitreich.org 70 i- `(mem-ref ,ptr ,type (* ,index ,(foreign-type-size (eval type))))) Err bitreich.org 70 i- form)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-setf-expander mem-aref (ptr type &optional (index 0) &environment env) Err bitreich.org 70 i- "SETF expander for MEM-AREF." Err bitreich.org 70 i- (multiple-value-bind (dummies vals newval setter getter) Err bitreich.org 70 i- (get-setf-expansion ptr env) Err bitreich.org 70 i- (declare (ignore setter newval)) Err bitreich.org 70 i- ;; we avoid rebinding type and index, if possible (and if type is not Err bitreich.org 70 i- ;; constant, we don't bother about the index), so that the compiler macros Err bitreich.org 70 i- ;; on MEM-SET or %MEM-SET can work. Err bitreich.org 70 i- (with-unique-names (store type-tmp index-tmp) Err bitreich.org 70 i- (values Err bitreich.org 70 i- (append (unless (constantp type) Err bitreich.org 70 i- (list type-tmp)) Err bitreich.org 70 i- (unless (and (constantp type) (constantp index)) Err bitreich.org 70 i- (list index-tmp)) Err bitreich.org 70 i- dummies) Err bitreich.org 70 i- (append (unless (constantp type) Err bitreich.org 70 i- (list type)) Err bitreich.org 70 i- (unless (and (constantp type) (constantp index)) Err bitreich.org 70 i- (list index)) Err bitreich.org 70 i- vals) Err bitreich.org 70 i- (list store) Err bitreich.org 70 i- ;; Here we'll try to calculate the offset from the type and index, Err bitreich.org 70 i- ;; or if not possible at least get the type size early. Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- ,(if (constantp type) Err bitreich.org 70 i- (if (constantp index) Err bitreich.org 70 i- `(mem-set ,store ,getter ,type Err bitreich.org 70 i- ,(* (eval index) (foreign-type-size (eval type)))) Err bitreich.org 70 i- `(mem-set ,store ,getter ,type Err bitreich.org 70 i- (* ,index-tmp ,(foreign-type-size (eval type))))) Err bitreich.org 70 i- `(mem-set ,store ,getter ,type-tmp Err bitreich.org 70 i- (* ,index-tmp (foreign-type-size ,type-tmp)))) Err bitreich.org 70 i- ,store) Err bitreich.org 70 i- `(mem-aref ,getter Err bitreich.org 70 i- ,@(if (constantp type) Err bitreich.org 70 i- (list type) Err bitreich.org 70 i- (list type-tmp)) Err bitreich.org 70 i- ,@(if (and (constantp type) (constantp index)) Err bitreich.org 70 i- (list index) Err bitreich.org 70 i- (list index-tmp))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-into-foreign-memory Err bitreich.org 70 i- (value (type foreign-pointer-type) pointer) Err bitreich.org 70 i- (setf (mem-aref pointer :pointer) value)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-into-foreign-memory Err bitreich.org 70 i- (value (type foreign-built-in-type) pointer) Err bitreich.org 70 i- (setf (mem-aref pointer (unparse-type type)) value)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun mem-aptr (ptr type &optional (index 0)) Err bitreich.org 70 i- "The pointer to the element." Err bitreich.org 70 i- (inc-pointer ptr (* index (foreign-type-size type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-compiler-macro mem-aptr (&whole form ptr type &optional (index 0)) Err bitreich.org 70 i- "The pointer to the element." Err bitreich.org 70 i- (cond ((not (constantp type)) Err bitreich.org 70 i- form) Err bitreich.org 70 i- ((not (constantp index)) Err bitreich.org 70 i- `(inc-pointer ,ptr (* ,index ,(foreign-type-size (eval type))))) Err bitreich.org 70 i- ((zerop (eval index)) Err bitreich.org 70 i- ptr) Err bitreich.org 70 i- (t Err bitreich.org 70 i- `(inc-pointer ,ptr ,(* (eval index) Err bitreich.org 70 i- (foreign-type-size (eval type))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-foreign-type foreign-array-type () Err bitreich.org 70 i- ((dimensions :reader dimensions :initarg :dimensions) Err bitreich.org 70 i- (element-type :reader element-type :initarg :element-type)) Err bitreich.org 70 i- (:actual-type :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod aggregatep ((type foreign-array-type)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod print-object ((type foreign-array-type) stream) Err bitreich.org 70 i- "Print a FOREIGN-ARRAY-TYPE instance to STREAM unreadably." Err bitreich.org 70 i- (print-unreadable-object (type stream :type t :identity nil) Err bitreich.org 70 i- (format stream "~S ~S" (element-type type) (dimensions type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun array-element-size (array-type) Err bitreich.org 70 i- (foreign-type-size (element-type array-type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod foreign-type-size ((type foreign-array-type)) Err bitreich.org 70 i- (* (array-element-size type) (reduce #'* (dimensions type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod foreign-type-alignment ((type foreign-array-type)) Err bitreich.org 70 i- (foreign-type-alignment (element-type type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-parse-method :array (element-type &rest dimensions) Err bitreich.org 70 i- (assert (plusp (length dimensions))) Err bitreich.org 70 i- (make-instance 'foreign-array-type Err bitreich.org 70 i- :element-type element-type Err bitreich.org 70 i- :dimensions dimensions)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun indexes-to-row-major-index (dimensions &rest subscripts) Err bitreich.org 70 i- (apply #'+ (maplist (lambda (x y) Err bitreich.org 70 i- (* (car x) (apply #'* (cdr y)))) Err bitreich.org 70 i- subscripts Err bitreich.org 70 i- dimensions))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun row-major-index-to-indexes (index dimensions) Err bitreich.org 70 i- (loop with idx = index Err bitreich.org 70 i- with rank = (length dimensions) Err bitreich.org 70 i- with indexes = (make-list rank) Err bitreich.org 70 i- for dim-index from (- rank 1) downto 0 do Err bitreich.org 70 i- (setf (values idx (nth dim-index indexes)) Err bitreich.org 70 i- (floor idx (nth dim-index dimensions))) Err bitreich.org 70 i- finally (return indexes))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-alloc (type &key (initial-element nil initial-element-p) Err bitreich.org 70 i- (initial-contents nil initial-contents-p) Err bitreich.org 70 i- (count 1 count-p) null-terminated-p) Err bitreich.org 70 i- "Allocate enough memory to hold COUNT objects of type TYPE. If Err bitreich.org 70 i-INITIAL-ELEMENT is supplied, each element of the newly allocated Err bitreich.org 70 i-memory is initialized with its value. If INITIAL-CONTENTS is supplied, Err bitreich.org 70 i-each of its elements will be used to initialize the contents of the Err bitreich.org 70 i-newly allocated memory." Err bitreich.org 70 i- (let (contents-length) Err bitreich.org 70 i- ;; Some error checking, etc... Err bitreich.org 70 i- (when (and null-terminated-p Err bitreich.org 70 i- (not (eq (canonicalize-foreign-type type) :pointer))) Err bitreich.org 70 i- (error "Cannot use :NULL-TERMINATED-P with non-pointer types.")) Err bitreich.org 70 i- (when (and initial-element-p initial-contents-p) Err bitreich.org 70 i- (error "Cannot specify both :INITIAL-ELEMENT and :INITIAL-CONTENTS")) Err bitreich.org 70 i- (when initial-contents-p Err bitreich.org 70 i- (setq contents-length (length initial-contents)) Err bitreich.org 70 i- (if count-p Err bitreich.org 70 i- (assert (>= count contents-length)) Err bitreich.org 70 i- (setq count contents-length))) Err bitreich.org 70 i- ;; Everything looks good. Err bitreich.org 70 i- (let ((ptr (%foreign-alloc (* (foreign-type-size type) Err bitreich.org 70 i- (if null-terminated-p (1+ count) count))))) Err bitreich.org 70 i- (when initial-element-p Err bitreich.org 70 i- (dotimes (i count) Err bitreich.org 70 i- (setf (mem-aref ptr type i) initial-element))) Err bitreich.org 70 i- (when initial-contents-p Err bitreich.org 70 i- (dotimes (i contents-length) Err bitreich.org 70 i- (setf (mem-aref ptr type i) (elt initial-contents i)))) Err bitreich.org 70 i- (when null-terminated-p Err bitreich.org 70 i- (setf (mem-aref ptr :pointer count) (null-pointer))) Err bitreich.org 70 i- ptr))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Simple compiler macro that kicks in when TYPE is constant and only Err bitreich.org 70 i-;;; the COUNT argument is passed. (Note: hard-coding the type's size Err bitreich.org 70 i-;;; into the fasl will likely break CLISP fasl cross-platform Err bitreich.org 70 i-;;; compatibilty.) Err bitreich.org 70 i-(define-compiler-macro foreign-alloc (&whole form type &rest args Err bitreich.org 70 i- &key (count 1 count-p) &allow-other-keys) Err bitreich.org 70 i- (if (or (and count-p (<= (length args) 2)) (null args)) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((and (constantp type) (constantp count)) Err bitreich.org 70 i- `(%foreign-alloc ,(* (eval count) (foreign-type-size (eval type))))) Err bitreich.org 70 i- ((constantp type) Err bitreich.org 70 i- `(%foreign-alloc (* ,count ,(foreign-type-size (eval type))))) Err bitreich.org 70 i- (t form)) Err bitreich.org 70 i- form)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun lisp-array-to-foreign (array pointer array-type) Err bitreich.org 70 i- "Copy elements from a Lisp array to POINTER. ARRAY-TYPE must be a CFFI array Err bitreich.org 70 i-type." Err bitreich.org 70 i- (let* ((type (ensure-parsed-base-type array-type)) Err bitreich.org 70 i- (el-type (element-type type)) Err bitreich.org 70 i- (dimensions (dimensions type))) Err bitreich.org 70 i- (loop with foreign-type-size = (array-element-size type) Err bitreich.org 70 i- with size = (reduce #'* dimensions) Err bitreich.org 70 i- for i from 0 below size Err bitreich.org 70 i- for offset = (* i foreign-type-size) Err bitreich.org 70 i- for element = (apply #'aref array Err bitreich.org 70 i- (row-major-index-to-indexes i dimensions)) Err bitreich.org 70 i- do (setf (mem-ref pointer el-type offset) element)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-array-to-lisp (pointer array-type &rest make-array-args) Err bitreich.org 70 i- "Copy elements from pointer into a Lisp array. ARRAY-TYPE must be a CFFI array Err bitreich.org 70 i-type; the type of the resulting Lisp array can be defined in MAKE-ARRAY-ARGS Err bitreich.org 70 i-that are then passed to MAKE-ARRAY. If POINTER is a null pointer, returns NIL." Err bitreich.org 70 i- (unless (null-pointer-p pointer) Err bitreich.org 70 i- (let* ((type (ensure-parsed-base-type array-type)) Err bitreich.org 70 i- (el-type (element-type type)) Err bitreich.org 70 i- (dimensions (dimensions type)) Err bitreich.org 70 i- (array (apply #'make-array dimensions make-array-args))) Err bitreich.org 70 i- (loop with foreign-type-size = (array-element-size type) Err bitreich.org 70 i- with size = (reduce #'* dimensions) Err bitreich.org 70 i- for i from 0 below size Err bitreich.org 70 i- for offset = (* i foreign-type-size) Err bitreich.org 70 i- for element = (mem-ref pointer el-type offset) Err bitreich.org 70 i- do (setf (apply #'aref array Err bitreich.org 70 i- (row-major-index-to-indexes i dimensions)) Err bitreich.org 70 i- element)) Err bitreich.org 70 i- array))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-array-alloc (array array-type) Err bitreich.org 70 i- "Allocate a foreign array containing the elements of lisp array. Err bitreich.org 70 i-The foreign array must be freed with foreign-array-free." Err bitreich.org 70 i- (check-type array array) Err bitreich.org 70 i- (let* ((type (ensure-parsed-base-type array-type)) Err bitreich.org 70 i- (ptr (foreign-alloc (element-type type) Err bitreich.org 70 i- :count (reduce #'* (dimensions type))))) Err bitreich.org 70 i- (lisp-array-to-foreign array ptr array-type) Err bitreich.org 70 i- ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-array-free (ptr) Err bitreich.org 70 i- "Free a foreign array allocated by foreign-array-alloc." Err bitreich.org 70 i- (foreign-free ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-foreign-array ((var lisp-array array-type) &body body) Err bitreich.org 70 i- "Bind var to a foreign array containing lisp-array elements in body." Err bitreich.org 70 i- (with-unique-names (type) Err bitreich.org 70 i- `(let ((,type (ensure-parsed-base-type ,array-type))) Err bitreich.org 70 i- (with-foreign-pointer (,var (* (reduce #'* (dimensions ,type)) Err bitreich.org 70 i- (array-element-size ,type))) Err bitreich.org 70 i- (lisp-array-to-foreign ,lisp-array ,var ,array-type) Err bitreich.org 70 i- ,@body)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-aref (ptr array-type &rest indexes) Err bitreich.org 70 i- (let* ((type (ensure-parsed-base-type array-type)) Err bitreich.org 70 i- (offset (* (array-element-size type) Err bitreich.org 70 i- (apply #'indexes-to-row-major-index Err bitreich.org 70 i- (dimensions type) indexes)))) Err bitreich.org 70 i- (mem-ref ptr (element-type type) offset))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun (setf foreign-aref) (value ptr array-type &rest indexes) Err bitreich.org 70 i- (let* ((type (ensure-parsed-base-type array-type)) Err bitreich.org 70 i- (offset (* (array-element-size type) Err bitreich.org 70 i- (apply #'indexes-to-row-major-index Err bitreich.org 70 i- (dimensions type) indexes)))) Err bitreich.org 70 i- (setf (mem-ref ptr (element-type type) offset) value))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Automatic translations for the :ARRAY type. Notice that these Err bitreich.org 70 i-;;; translators will also invoke the appropriate translators for for Err bitreich.org 70 i-;;; each of the array's elements since that's the normal behaviour of Err bitreich.org 70 i-;;; the FOREIGN-ARRAY-* operators, but there's a FIXME: **it doesn't Err bitreich.org 70 i-;;; free them yet** Err bitreich.org 70 i- Err bitreich.org 70 i-;;; This used to be in a separate type but let's experiment with just Err bitreich.org 70 i-;;; one type for a while. [2008-12-30 LO] Err bitreich.org 70 i- Err bitreich.org 70 i-;;; FIXME: those ugly invocations of UNPARSE-TYPE suggest that these Err bitreich.org 70 i-;;; foreign array operators should take the type and dimention Err bitreich.org 70 i-;;; arguments "unboxed". [2008-12-31 LO] Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-to-foreign (array (type foreign-array-type)) Err bitreich.org 70 i- (foreign-array-alloc array (unparse-type type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-aggregate-to-foreign (ptr value (type foreign-array-type)) Err bitreich.org 70 i- (lisp-array-to-foreign value ptr (unparse-type type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-from-foreign (pointer (type foreign-array-type)) Err bitreich.org 70 i- (foreign-array-to-lisp pointer (unparse-type type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod free-translated-object (pointer (type foreign-array-type) param) Err bitreich.org 70 i- (declare (ignore param)) Err bitreich.org 70 i- (foreign-array-free pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Foreign Structures Err bitreich.org 70 i- Err bitreich.org 70 i-;;;## Foreign Structure Slots Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric foreign-struct-slot-pointer (ptr slot) Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "Get the address of SLOT relative to PTR.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric foreign-struct-slot-pointer-form (ptr slot) Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "Return a form to get the address of SLOT in PTR.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric foreign-struct-slot-value (ptr slot) Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "Return the value of SLOT in structure PTR.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric (setf foreign-struct-slot-value) (value ptr slot) Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "Set the value of a SLOT in structure PTR.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric foreign-struct-slot-value-form (ptr slot) Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "Return a form to get the value of SLOT in struct PTR.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric foreign-struct-slot-set-form (value ptr slot) Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "Return a form to set the value of SLOT in struct PTR.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass foreign-struct-slot () Err bitreich.org 70 i- ((name :initarg :name :reader slot-name) Err bitreich.org 70 i- (offset :initarg :offset :accessor slot-offset) Err bitreich.org 70 i- ;; FIXME: the type should probably be parsed? Err bitreich.org 70 i- (type :initarg :type :accessor slot-type)) Err bitreich.org 70 i- (:documentation "Base class for simple and aggregate slots.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod foreign-struct-slot-pointer (ptr (slot foreign-struct-slot)) Err bitreich.org 70 i- "Return the address of SLOT relative to PTR." Err bitreich.org 70 i- (inc-pointer ptr (slot-offset slot))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod foreign-struct-slot-pointer-form (ptr (slot foreign-struct-slot)) Err bitreich.org 70 i- "Return a form to get the address of SLOT relative to PTR." Err bitreich.org 70 i- (let ((offset (slot-offset slot))) Err bitreich.org 70 i- (if (zerop offset) Err bitreich.org 70 i- ptr Err bitreich.org 70 i- `(inc-pointer ,ptr ,offset)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-slot-names (type) Err bitreich.org 70 i- "Returns a list of TYPE's slot names in no particular order." Err bitreich.org 70 i- (loop for value being the hash-values Err bitreich.org 70 i- in (slots (ensure-parsed-base-type type)) Err bitreich.org 70 i- collect (slot-name value))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;### Simple Slots Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass simple-struct-slot (foreign-struct-slot) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Non-aggregate structure slots.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod foreign-struct-slot-value (ptr (slot simple-struct-slot)) Err bitreich.org 70 i- "Return the value of a simple SLOT from a struct at PTR." Err bitreich.org 70 i- (mem-ref ptr (slot-type slot) (slot-offset slot))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod foreign-struct-slot-value-form (ptr (slot simple-struct-slot)) Err bitreich.org 70 i- "Return a form to get the value of a slot from PTR." Err bitreich.org 70 i- `(mem-ref ,ptr ',(slot-type slot) ,(slot-offset slot))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod (setf foreign-struct-slot-value) (value ptr (slot simple-struct-slot)) Err bitreich.org 70 i- "Set the value of a simple SLOT to VALUE in PTR." Err bitreich.org 70 i- (setf (mem-ref ptr (slot-type slot) (slot-offset slot)) value)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod foreign-struct-slot-set-form (value ptr (slot simple-struct-slot)) Err bitreich.org 70 i- "Return a form to set the value of a simple structure slot." Err bitreich.org 70 i- `(setf (mem-ref ,ptr ',(slot-type slot) ,(slot-offset slot)) ,value)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;### Aggregate Slots Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass aggregate-struct-slot (foreign-struct-slot) Err bitreich.org 70 i- ((count :initarg :count :accessor slot-count)) Err bitreich.org 70 i- (:documentation "Aggregate structure slots.")) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Since MEM-REF returns a pointer for struct types we are able to Err bitreich.org 70 i-;;; chain together slot names when accessing slot values in nested Err bitreich.org 70 i-;;; structures. Err bitreich.org 70 i-(defmethod foreign-struct-slot-value (ptr (slot aggregate-struct-slot)) Err bitreich.org 70 i- "Return a pointer to SLOT relative to PTR." Err bitreich.org 70 i- (convert-from-foreign (inc-pointer ptr (slot-offset slot)) Err bitreich.org 70 i- (slot-type slot))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod foreign-struct-slot-value-form (ptr (slot aggregate-struct-slot)) Err bitreich.org 70 i- "Return a form to get the value of SLOT relative to PTR." Err bitreich.org 70 i- `(convert-from-foreign (inc-pointer ,ptr ,(slot-offset slot)) Err bitreich.org 70 i- ',(slot-type slot))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-aggregate-to-foreign (ptr value (type foreign-struct-type)) Err bitreich.org 70 i- ;;; FIXME: use the block memory interface instead. Err bitreich.org 70 i- (loop for i below (foreign-type-size type) Err bitreich.org 70 i- do (%mem-set (%mem-ref value :char i) ptr :char i))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod (setf foreign-struct-slot-value) Err bitreich.org 70 i- (value ptr (slot aggregate-struct-slot)) Err bitreich.org 70 i- "Set the value of an aggregate SLOT to VALUE in PTR." Err bitreich.org 70 i- (translate-aggregate-to-foreign (inc-pointer ptr (slot-offset slot)) Err bitreich.org 70 i- value Err bitreich.org 70 i- (parse-type (slot-type slot)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod foreign-struct-slot-set-form (value ptr (slot aggregate-struct-slot)) Err bitreich.org 70 i- "Return a form to get the value of an aggregate SLOT relative to PTR." Err bitreich.org 70 i- `(translate-aggregate-to-foreign (inc-pointer ,ptr ,(slot-offset slot)) Err bitreich.org 70 i- ,value Err bitreich.org 70 i- ,(parse-type (slot-type slot)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;## Defining Foreign Structures Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-struct-slot (name offset type count) Err bitreich.org 70 i- "Make the appropriate type of structure slot." Err bitreich.org 70 i- ;; If TYPE is an aggregate type or COUNT is >1, create an Err bitreich.org 70 i- ;; AGGREGATE-STRUCT-SLOT, otherwise a SIMPLE-STRUCT-SLOT. Err bitreich.org 70 i- (if (or (> count 1) (aggregatep (parse-type type))) Err bitreich.org 70 i- (make-instance 'aggregate-struct-slot :offset offset :type type Err bitreich.org 70 i- :name name :count count) Err bitreich.org 70 i- (make-instance 'simple-struct-slot :offset offset :type type Err bitreich.org 70 i- :name name))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun parse-deprecated-struct-type (name struct-or-union) Err bitreich.org 70 i- (check-type struct-or-union (member :struct :union)) Err bitreich.org 70 i- (let* ((struct-type-name `(,struct-or-union ,name)) Err bitreich.org 70 i- (struct-type (parse-type struct-type-name))) Err bitreich.org 70 i- (simple-style-warning Err bitreich.org 70 i- "bare references to struct types are deprecated. ~ Err bitreich.org 70 i- Please use ~S or ~S instead." Err bitreich.org 70 i- `(:pointer ,struct-type-name) struct-type-name) Err bitreich.org 70 i- (make-instance (class-of struct-type) Err bitreich.org 70 i- :alignment (alignment struct-type) Err bitreich.org 70 i- :size (size struct-type) Err bitreich.org 70 i- :slots (slots struct-type) Err bitreich.org 70 i- :name (name struct-type) Err bitreich.org 70 i- :bare t))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Regarding structure alignment, the following ABIs were checked: Err bitreich.org 70 i-;;; - System-V ABI: x86, x86-64, ppc, arm, mips and itanium. (more?) Err bitreich.org 70 i-;;; - Mac OS X ABI Function Call Guide: ppc32, ppc64 and x86. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Rules used here: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; 1. "An entire structure or union object is aligned on the same Err bitreich.org 70 i-;;; boundary as its most strictly aligned member." Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; 2. "Each member is assigned to the lowest available offset with Err bitreich.org 70 i-;;; the appropriate alignment. This may require internal Err bitreich.org 70 i-;;; padding, depending on the previous member." Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; 3. "A structure's size is increased, if necessary, to make it a Err bitreich.org 70 i-;;; multiple of the alignment. This may require tail padding, Err bitreich.org 70 i-;;; depending on the last member." Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Special cases from darwin/ppc32's ABI: Err bitreich.org 70 i-;;; http://developer.apple.com/documentation/DeveloperTools/Conceptual/LowLevelABI/index.html Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; 4. "The embedding alignment of the first element in a data Err bitreich.org 70 i-;;; structure is equal to the element's natural alignment." Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; 5. "For subsequent elements that have a natural alignment Err bitreich.org 70 i-;;; greater than 4 bytes, the embedding alignment is 4, unless Err bitreich.org 70 i-;;; the element is a vector." (note: this applies for Err bitreich.org 70 i-;;; structures too) Err bitreich.org 70 i- Err bitreich.org 70 i-;; FIXME: get a better name for this. --luis Err bitreich.org 70 i-(defun get-alignment (type alignment-type firstp) Err bitreich.org 70 i- "Return alignment for TYPE according to ALIGNMENT-TYPE." Err bitreich.org 70 i- (declare (ignorable firstp)) Err bitreich.org 70 i- (ecase alignment-type Err bitreich.org 70 i- (:normal #-(and darwin ppc) Err bitreich.org 70 i- (foreign-type-alignment type) Err bitreich.org 70 i- #+(and darwin ppc) Err bitreich.org 70 i- (if firstp Err bitreich.org 70 i- (foreign-type-alignment type) Err bitreich.org 70 i- (min 4 (foreign-type-alignment type)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun adjust-for-alignment (type offset alignment-type firstp) Err bitreich.org 70 i- "Return OFFSET aligned properly for TYPE according to ALIGNMENT-TYPE." Err bitreich.org 70 i- (let* ((align (get-alignment type alignment-type firstp)) Err bitreich.org 70 i- (rem (mod offset align))) Err bitreich.org 70 i- (if (zerop rem) Err bitreich.org 70 i- offset Err bitreich.org 70 i- (+ offset (- align rem))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-tentative-type-definition ((name value namespace) &body body) Err bitreich.org 70 i- (once-only (name namespace) Err bitreich.org 70 i- `(unwind-protect-case () Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (notice-foreign-type ,name ,value ,namespace) Err bitreich.org 70 i- ,@body) Err bitreich.org 70 i- (:abort (undefine-foreign-type ,name ,namespace))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun notice-foreign-struct-definition (name options slots) Err bitreich.org 70 i- "Parse and install a foreign structure definition." Err bitreich.org 70 i- (destructuring-bind (&key size (class 'foreign-struct-type)) Err bitreich.org 70 i- options Err bitreich.org 70 i- (let ((struct (make-instance class :name name)) Err bitreich.org 70 i- (current-offset 0) Err bitreich.org 70 i- (max-align 1) Err bitreich.org 70 i- (firstp t)) Err bitreich.org 70 i- (with-tentative-type-definition (name struct :struct) Err bitreich.org 70 i- ;; determine offsets Err bitreich.org 70 i- (dolist (slotdef slots) Err bitreich.org 70 i- (destructuring-bind (slotname type &key (count 1) offset) slotdef Err bitreich.org 70 i- (when (eq (canonicalize-foreign-type type) :void) Err bitreich.org 70 i- (simple-foreign-type-error type :struct Err bitreich.org 70 i- "In struct ~S: void type not allowed in field ~S" Err bitreich.org 70 i- name slotdef)) Err bitreich.org 70 i- (setq current-offset Err bitreich.org 70 i- (or offset Err bitreich.org 70 i- (adjust-for-alignment type current-offset :normal firstp))) Err bitreich.org 70 i- (let* ((slot (make-struct-slot slotname current-offset type count)) Err bitreich.org 70 i- (align (get-alignment (slot-type slot) :normal firstp))) Err bitreich.org 70 i- (setf (gethash slotname (slots struct)) slot) Err bitreich.org 70 i- (when (> align max-align) Err bitreich.org 70 i- (setq max-align align))) Err bitreich.org 70 i- (incf current-offset (* count (foreign-type-size type)))) Err bitreich.org 70 i- (setq firstp nil)) Err bitreich.org 70 i- ;; calculate padding and alignment Err bitreich.org 70 i- (setf (alignment struct) max-align) ; See point 1 above. Err bitreich.org 70 i- (let ((tail-padding (- max-align (rem current-offset max-align)))) Err bitreich.org 70 i- (unless (= tail-padding max-align) ; See point 3 above. Err bitreich.org 70 i- (incf current-offset tail-padding))) Err bitreich.org 70 i- (setf (size struct) (or size current-offset)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun generate-struct-accessors (name conc-name slot-names) Err bitreich.org 70 i- (loop with pointer-arg = (symbolicate '#:pointer-to- name) Err bitreich.org 70 i- for slot in slot-names Err bitreich.org 70 i- for accessor = (symbolicate conc-name slot) Err bitreich.org 70 i- collect `(defun ,accessor (,pointer-arg) Err bitreich.org 70 i- (foreign-slot-value ,pointer-arg '(:struct ,name) ',slot)) Err bitreich.org 70 i- collect `(defun (setf ,accessor) (value ,pointer-arg) Err bitreich.org 70 i- (foreign-slot-set value ,pointer-arg '(:struct ,name) ',slot)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-parse-method :struct (name) Err bitreich.org 70 i- (funcall (find-type-parser name :struct))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *defcstruct-hook* nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro defcstruct (name-and-options &body fields) Err bitreich.org 70 i- "Define the layout of a foreign structure." Err bitreich.org 70 i- (discard-docstring fields) Err bitreich.org 70 i- (destructuring-bind (name . options) Err bitreich.org 70 i- (ensure-list name-and-options) Err bitreich.org 70 i- (let ((conc-name (getf options :conc-name))) Err bitreich.org 70 i- (remf options :conc-name) Err bitreich.org 70 i- (unless (getf options :class) (setf (getf options :class) (symbolicate name '-tclass))) Err bitreich.org 70 i- `(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- ;; m-f-s-t could do with this with mop:ensure-class. Err bitreich.org 70 i- ,(when-let (class (getf options :class)) Err bitreich.org 70 i- `(defclass ,class (foreign-struct-type Err bitreich.org 70 i- translatable-foreign-type) Err bitreich.org 70 i- ())) Err bitreich.org 70 i- (notice-foreign-struct-definition ',name ',options ',fields) Err bitreich.org 70 i- ,@(when conc-name Err bitreich.org 70 i- (generate-struct-accessors name conc-name Err bitreich.org 70 i- (mapcar #'car fields))) Err bitreich.org 70 i- ,@(when *defcstruct-hook* Err bitreich.org 70 i- ;; If non-nil, *defcstruct-hook* should be a function Err bitreich.org 70 i- ;; of the arguments that returns NIL or a list of Err bitreich.org 70 i- ;; forms to include in the expansion. Err bitreich.org 70 i- (apply *defcstruct-hook* name-and-options fields)) Err bitreich.org 70 i- (define-parse-method ,name () Err bitreich.org 70 i- (parse-deprecated-struct-type ',name :struct)) Err bitreich.org 70 i- '(:struct ,name))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;## Accessing Foreign Structure Slots Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-slot-info (type slot-name) Err bitreich.org 70 i- "Return the slot info for SLOT-NAME or raise an error." Err bitreich.org 70 i- (let* ((struct (ensure-parsed-base-type type)) Err bitreich.org 70 i- (info (gethash slot-name (slots struct)))) Err bitreich.org 70 i- (unless info Err bitreich.org 70 i- (simple-foreign-type-error type :struct Err bitreich.org 70 i- "Undefined slot ~A in foreign type ~A." Err bitreich.org 70 i- slot-name type)) Err bitreich.org 70 i- info)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-slot-pointer (ptr type slot-name) Err bitreich.org 70 i- "Return the address of SLOT-NAME in the structure at PTR." Err bitreich.org 70 i- (foreign-struct-slot-pointer ptr (get-slot-info type slot-name))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-compiler-macro foreign-slot-pointer (&whole whole ptr type slot-name) Err bitreich.org 70 i- (if (and (constantp type) (constantp slot-name)) Err bitreich.org 70 i- (foreign-struct-slot-pointer-form Err bitreich.org 70 i- ptr (get-slot-info (eval type) (eval slot-name))) Err bitreich.org 70 i- whole)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-slot-type (type slot-name) Err bitreich.org 70 i- "Return the type of SLOT in a struct TYPE." Err bitreich.org 70 i- (slot-type (get-slot-info type slot-name))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-slot-offset (type slot-name) Err bitreich.org 70 i- "Return the offset of SLOT in a struct TYPE." Err bitreich.org 70 i- (slot-offset (get-slot-info type slot-name))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-slot-count (type slot-name) Err bitreich.org 70 i- "Return the number of items in SLOT in a struct TYPE." Err bitreich.org 70 i- (slot-count (get-slot-info type slot-name))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-slot-value (ptr type slot-name) Err bitreich.org 70 i- "Return the value of SLOT-NAME in the foreign structure at PTR." Err bitreich.org 70 i- (foreign-struct-slot-value ptr (get-slot-info type slot-name))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-compiler-macro foreign-slot-value (&whole form ptr type slot-name) Err bitreich.org 70 i- "Optimizer for FOREIGN-SLOT-VALUE when TYPE is constant." Err bitreich.org 70 i- (if (and (constantp type) (constantp slot-name)) Err bitreich.org 70 i- (foreign-struct-slot-value-form Err bitreich.org 70 i- ptr (get-slot-info (eval type) (eval slot-name))) Err bitreich.org 70 i- form)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-setf-expander foreign-slot-value (ptr type slot-name &environment env) Err bitreich.org 70 i- "SETF expander for FOREIGN-SLOT-VALUE." Err bitreich.org 70 i- (multiple-value-bind (dummies vals newval setter getter) Err bitreich.org 70 i- (get-setf-expansion ptr env) Err bitreich.org 70 i- (declare (ignore setter newval)) Err bitreich.org 70 i- (if (and (constantp type) (constantp slot-name)) Err bitreich.org 70 i- ;; if TYPE and SLOT-NAME are constant we avoid rebinding them Err bitreich.org 70 i- ;; so that the compiler macro on FOREIGN-SLOT-SET works. Err bitreich.org 70 i- (with-unique-names (store) Err bitreich.org 70 i- (values Err bitreich.org 70 i- dummies Err bitreich.org 70 i- vals Err bitreich.org 70 i- (list store) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (foreign-slot-set ,store ,getter ,type ,slot-name) Err bitreich.org 70 i- ,store) Err bitreich.org 70 i- `(foreign-slot-value ,getter ,type ,slot-name))) Err bitreich.org 70 i- ;; if not... Err bitreich.org 70 i- (with-unique-names (store slot-name-tmp type-tmp) Err bitreich.org 70 i- (values Err bitreich.org 70 i- (list* type-tmp slot-name-tmp dummies) Err bitreich.org 70 i- (list* type slot-name vals) Err bitreich.org 70 i- (list store) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (foreign-slot-set ,store ,getter ,type-tmp ,slot-name-tmp) Err bitreich.org 70 i- ,store) Err bitreich.org 70 i- `(foreign-slot-value ,getter ,type-tmp ,slot-name-tmp)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-slot-set (value ptr type slot-name) Err bitreich.org 70 i- "Set the value of SLOT-NAME in a foreign structure." Err bitreich.org 70 i- (setf (foreign-struct-slot-value ptr (get-slot-info type slot-name)) value)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-compiler-macro foreign-slot-set Err bitreich.org 70 i- (&whole form value ptr type slot-name) Err bitreich.org 70 i- "Optimizer when TYPE and SLOT-NAME are constant." Err bitreich.org 70 i- (if (and (constantp type) (constantp slot-name)) Err bitreich.org 70 i- (foreign-struct-slot-set-form Err bitreich.org 70 i- value ptr (get-slot-info (eval type) (eval slot-name))) Err bitreich.org 70 i- form)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-foreign-slots ((vars ptr type) &body body) Err bitreich.org 70 i- "Create local symbol macros for each var in VARS to reference Err bitreich.org 70 i-foreign slots in PTR of TYPE. Similar to WITH-SLOTS. Err bitreich.org 70 i-Each var can be of the form: slot-name - in which case slot-name will Err bitreich.org 70 i-be bound to the value of the slot or: (:pointer slot-name) - in which Err bitreich.org 70 i-case slot-name will be bound to the pointer to that slot." Err bitreich.org 70 i- (let ((ptr-var (gensym "PTR"))) Err bitreich.org 70 i- `(let ((,ptr-var ,ptr)) Err bitreich.org 70 i- (symbol-macrolet Err bitreich.org 70 i- ,(loop :for var :in vars Err bitreich.org 70 i- :collect Err bitreich.org 70 i- (if (listp var) Err bitreich.org 70 i- (if (eq (first var) :pointer) Err bitreich.org 70 i- `(,(second var) (foreign-slot-pointer Err bitreich.org 70 i- ,ptr-var ',type ',(second var))) Err bitreich.org 70 i- (error Err bitreich.org 70 i- "Malformed slot specification ~a; must be:`name' or `(:pointer name)'" Err bitreich.org 70 i- var)) Err bitreich.org 70 i- `(,var (foreign-slot-value ,ptr-var ',type ',var)))) Err bitreich.org 70 i- ,@body)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; We could add an option to define a struct instead of a class, in Err bitreich.org 70 i-;;; the unlikely event someone needs something like that. Err bitreich.org 70 i-(defmacro define-c-struct-wrapper (class-and-type supers &optional slots) Err bitreich.org 70 i- "Define a new class with CLOS slots matching those of a foreign Err bitreich.org 70 i-struct type. An INITIALIZE-INSTANCE method is defined which Err bitreich.org 70 i-takes a :POINTER initarg that is used to store the slots of a Err bitreich.org 70 i-foreign object. This pointer is only used for initialization and Err bitreich.org 70 i-it is not retained. Err bitreich.org 70 i- Err bitreich.org 70 i-CLASS-AND-TYPE is either a list of the form (class-name Err bitreich.org 70 i-struct-type) or a single symbol naming both. The class will Err bitreich.org 70 i-inherit SUPERS. If a list of SLOTS is specified, only those Err bitreich.org 70 i-slots will be defined and stored." Err bitreich.org 70 i- (destructuring-bind (class-name &optional (struct-type (list :struct class-name))) Err bitreich.org 70 i- (ensure-list class-and-type) Err bitreich.org 70 i- (let ((slots (or slots (foreign-slot-names struct-type)))) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (defclass ,class-name ,supers Err bitreich.org 70 i- ,(loop for slot in slots collect Err bitreich.org 70 i- `(,slot :reader ,(format-symbol t "~A-~A" class-name slot)))) Err bitreich.org 70 i- ;; This could be done in a parent class by using Err bitreich.org 70 i- ;; FOREIGN-SLOT-NAMES when instantiating but then the compiler Err bitreich.org 70 i- ;; macros wouldn't kick in. Err bitreich.org 70 i- (defmethod initialize-instance :after ((inst ,class-name) &key pointer) Err bitreich.org 70 i- (with-foreign-slots (,slots pointer ,struct-type) Err bitreich.org 70 i- ,@(loop for slot in slots collect Err bitreich.org 70 i- `(setf (slot-value inst ',slot) ,slot)))) Err bitreich.org 70 i- ',class-name)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Foreign Unions Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; A union is a subclass of FOREIGN-STRUCT-TYPE in which all slots Err bitreich.org 70 i-;;; have an offset of zero. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; See also the notes regarding ABI requirements in Err bitreich.org 70 i-;;; NOTICE-FOREIGN-STRUCT-DEFINITION Err bitreich.org 70 i-(defun notice-foreign-union-definition (name-and-options slots) Err bitreich.org 70 i- "Parse and install a foreign union definition." Err bitreich.org 70 i- (destructuring-bind (name &key size) Err bitreich.org 70 i- (ensure-list name-and-options) Err bitreich.org 70 i- (let ((union (make-instance 'foreign-union-type :name name)) Err bitreich.org 70 i- (max-size 0) Err bitreich.org 70 i- (max-align 0)) Err bitreich.org 70 i- (with-tentative-type-definition (name union :union) Err bitreich.org 70 i- (dolist (slotdef slots) Err bitreich.org 70 i- (destructuring-bind (slotname type &key (count 1)) slotdef Err bitreich.org 70 i- (when (eq (canonicalize-foreign-type type) :void) Err bitreich.org 70 i- (simple-foreign-type-error name :struct Err bitreich.org 70 i- "In union ~S: void type not allowed in field ~S" Err bitreich.org 70 i- name slotdef)) Err bitreich.org 70 i- (let* ((slot (make-struct-slot slotname 0 type count)) Err bitreich.org 70 i- (size (* count (foreign-type-size type))) Err bitreich.org 70 i- (align (foreign-type-alignment (slot-type slot)))) Err bitreich.org 70 i- (setf (gethash slotname (slots union)) slot) Err bitreich.org 70 i- (when (> size max-size) Err bitreich.org 70 i- (setf max-size size)) Err bitreich.org 70 i- (when (> align max-align) Err bitreich.org 70 i- (setf max-align align))))) Err bitreich.org 70 i- (setf (size union) (or size max-size)) Err bitreich.org 70 i- (setf (alignment union) max-align))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-parse-method :union (name) Err bitreich.org 70 i- (funcall (find-type-parser name :union))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro defcunion (name-and-options &body fields) Err bitreich.org 70 i- "Define the layout of a foreign union." Err bitreich.org 70 i- (discard-docstring fields) Err bitreich.org 70 i- (destructuring-bind (name &key size) Err bitreich.org 70 i- (ensure-list name-and-options) Err bitreich.org 70 i- (declare (ignore size)) Err bitreich.org 70 i- `(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (notice-foreign-union-definition ',name-and-options ',fields) Err bitreich.org 70 i- (define-parse-method ,name () Err bitreich.org 70 i- (parse-deprecated-struct-type ',name :union)) Err bitreich.org 70 i- '(:union ,name)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Operations on Types Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod foreign-type-alignment (type) Err bitreich.org 70 i- "Return the alignment in bytes of a foreign type." Err bitreich.org 70 i- (foreign-type-alignment (parse-type type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-foreign-object ((var type &optional (count 1)) &body body) Err bitreich.org 70 i- "Bind VAR to a pointer to COUNT objects of TYPE during BODY. Err bitreich.org 70 i-The buffer has dynamic extent and may be stack allocated." Err bitreich.org 70 i- `(with-foreign-pointer Err bitreich.org 70 i- (,var ,(if (constantp type) Err bitreich.org 70 i- ;; with-foreign-pointer may benefit from constant folding: Err bitreich.org 70 i- (if (constantp count) Err bitreich.org 70 i- (* (eval count) (foreign-type-size (eval type))) Err bitreich.org 70 i- `(* ,count ,(foreign-type-size (eval type)))) Err bitreich.org 70 i- `(* ,count (foreign-type-size ,type)))) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-foreign-objects (bindings &body body) Err bitreich.org 70 i- (if bindings Err bitreich.org 70 i- `(with-foreign-object ,(car bindings) Err bitreich.org 70 i- (with-foreign-objects ,(cdr bindings) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- `(progn ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;## Anonymous Type Translators Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; (:wrapper :to-c some-function :from-c another-function) Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; TODO: We will need to add a FREE function to this as well I think. Err bitreich.org 70 i-;;; --james Err bitreich.org 70 i- Err bitreich.org 70 i-(define-foreign-type foreign-type-wrapper () Err bitreich.org 70 i- ((to-c :initarg :to-c :reader wrapper-to-c) Err bitreich.org 70 i- (from-c :initarg :from-c :reader wrapper-from-c)) Err bitreich.org 70 i- (:documentation "Wrapper type.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-parse-method :wrapper (base-type &key to-c from-c) Err bitreich.org 70 i- (make-instance 'foreign-type-wrapper Err bitreich.org 70 i- :actual-type (parse-type base-type) Err bitreich.org 70 i- :to-c (or to-c 'identity) Err bitreich.org 70 i- :from-c (or from-c 'identity))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-to-foreign (value (type foreign-type-wrapper)) Err bitreich.org 70 i- (translate-to-foreign Err bitreich.org 70 i- (funcall (slot-value type 'to-c) value) (actual-type type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-from-foreign (value (type foreign-type-wrapper)) Err bitreich.org 70 i- (funcall (slot-value type 'from-c) Err bitreich.org 70 i- (translate-from-foreign value (actual-type type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Other types Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Boolean type. Maps to an :int by default. Only accepts integer types. Err bitreich.org 70 i-(define-foreign-type foreign-boolean-type () Err bitreich.org 70 i- ()) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-parse-method :boolean (&optional (base-type :int)) Err bitreich.org 70 i- (make-instance Err bitreich.org 70 i- 'foreign-boolean-type :actual-type Err bitreich.org 70 i- (ecase (canonicalize-foreign-type base-type) Err bitreich.org 70 i- ((:char :unsigned-char :int :unsigned-int :long :unsigned-long Err bitreich.org 70 i- #-cffi-sys::no-long-long :long-long Err bitreich.org 70 i- #-cffi-sys::no-long-long :unsigned-long-long) base-type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-to-foreign (value (type foreign-boolean-type)) Err bitreich.org 70 i- (if value 1 0)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-from-foreign (value (type foreign-boolean-type)) Err bitreich.org 70 i- (not (zerop value))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod expand-to-foreign (value (type foreign-boolean-type)) Err bitreich.org 70 i- "Optimization for the :boolean type." Err bitreich.org 70 i- (if (constantp value) Err bitreich.org 70 i- (if (eval value) 1 0) Err bitreich.org 70 i- `(if ,value 1 0))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod expand-from-foreign (value (type foreign-boolean-type)) Err bitreich.org 70 i- "Optimization for the :boolean type." Err bitreich.org 70 i- (if (constantp value) ; very unlikely, heh Err bitreich.org 70 i- (not (zerop (eval value))) Err bitreich.org 70 i- `(not (zerop ,value)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Boolean type that represents C99 _Bool Err bitreich.org 70 i-(defctype :bool (:boolean :char)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Typedefs for built-in types. Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype :uchar :unsigned-char) Err bitreich.org 70 i-(defctype :ushort :unsigned-short) Err bitreich.org 70 i-(defctype :uint :unsigned-int) Err bitreich.org 70 i-(defctype :ulong :unsigned-long) Err bitreich.org 70 i-(defctype :llong :long-long) Err bitreich.org 70 i-(defctype :ullong :unsigned-long-long) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; We try to define the :[u]int{8,16,32,64} types by looking at Err bitreich.org 70 i-;;; the sizes of the built-in integer types and defining typedefs. Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (macrolet Err bitreich.org 70 i- ((match-types (sized-types mtypes) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- ,@(loop for (type . size-or-type) in sized-types Err bitreich.org 70 i- for m = (car (member (if (keywordp size-or-type) Err bitreich.org 70 i- (foreign-type-size size-or-type) Err bitreich.org 70 i- size-or-type) Err bitreich.org 70 i- mtypes :key #'foreign-type-size)) Err bitreich.org 70 i- when m collect `(defctype ,type ,m))))) Err bitreich.org 70 i- ;; signed Err bitreich.org 70 i- (match-types ((:int8 . 1) (:int16 . 2) (:int32 . 4) (:int64 . 8) Err bitreich.org 70 i- (:intptr . :pointer)) Err bitreich.org 70 i- (:char :short :int :long :long-long)) Err bitreich.org 70 i- ;; unsigned Err bitreich.org 70 i- (match-types ((:uint8 . 1) (:uint16 . 2) (:uint32 . 4) (:uint64 . 8) Err bitreich.org 70 i- (:uintptr . :pointer)) Err bitreich.org 70 i- (:unsigned-char :unsigned-short :unsigned-int :unsigned-long Err bitreich.org 70 i- :unsigned-long-long)))) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/src/utils.lisp b/3rdparties/software/cffi_0.20.0/src/utils.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/src/utils.lisp.gph bitreich.org 70 i@@ -1,84 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; utils.lisp --- Various utilities. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2008, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro discard-docstring (body-var &optional force) Err bitreich.org 70 i- "Discards the first element of the list in body-var if it's a Err bitreich.org 70 i-string and the only element (or if FORCE is T)." Err bitreich.org 70 i- `(when (and (stringp (car ,body-var)) (or ,force (cdr ,body-var))) Err bitreich.org 70 i- (pop ,body-var))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun single-bit-p (integer) Err bitreich.org 70 i- "Answer whether INTEGER, which must be an integer, is a single Err bitreich.org 70 i-set twos-complement bit." Err bitreich.org 70 i- (if (<= integer 0) Err bitreich.org 70 i- nil ; infinite set bits for negatives Err bitreich.org 70 i- (loop until (logbitp 0 integer) Err bitreich.org 70 i- do (setf integer (ash integer -1)) Err bitreich.org 70 i- finally (return (zerop (ash integer -1)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; This function is here because it needs to be defined early. It's Err bitreich.org 70 i-;;; used by DEFINE-PARSE-METHOD and DEFCTYPE to warn users when Err bitreich.org 70 i-;;; they're defining types whose names belongs to the KEYWORD or CL Err bitreich.org 70 i-;;; packages. CFFI itself gets to use keywords without a warning. Err bitreich.org 70 i-(defun warn-if-kw-or-belongs-to-cl (name) Err bitreich.org 70 i- (let ((package (symbol-package name))) Err bitreich.org 70 i- (when (and (not (eq *package* (find-package '#:cffi))) Err bitreich.org 70 i- (member package '(#:common-lisp #:keyword) Err bitreich.org 70 i- :key #'find-package)) Err bitreich.org 70 i- (warn "Defining a foreign type named ~S. This symbol belongs to the ~A ~ Err bitreich.org 70 i- package and that may interfere with other code using CFFI." Err bitreich.org 70 i- name (package-name package))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition obsolete-argument-warning (style-warning) Err bitreich.org 70 i- ((old-arg :initarg :old-arg :reader old-arg) Err bitreich.org 70 i- (new-arg :initarg :new-arg :reader new-arg)) Err bitreich.org 70 i- (:report (lambda (c s) Err bitreich.org 70 i- (format s "Keyword ~S is obsolete, please use ~S" Err bitreich.org 70 i- (old-arg c) (new-arg c))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun warn-obsolete-argument (old-arg new-arg) Err bitreich.org 70 i- (warn 'obsolete-argument-warning Err bitreich.org 70 i- :old-arg old-arg :new-arg new-arg)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun split-if (test seq &optional (dir :before)) Err bitreich.org 70 i- (remove-if #'(lambda (x) (equal x (subseq seq 0 0))) Err bitreich.org 70 i- (loop for start fixnum = 0 Err bitreich.org 70 i- then (if (eq dir :before) Err bitreich.org 70 i- stop Err bitreich.org 70 i- (the fixnum (1+ (the fixnum stop)))) Err bitreich.org 70 i- while (< start (length seq)) Err bitreich.org 70 i- for stop = (position-if test seq Err bitreich.org 70 i- :start (if (eq dir :elide) Err bitreich.org 70 i- start Err bitreich.org 70 i- (the fixnum (1+ start)))) Err bitreich.org 70 i- collect (subseq seq start Err bitreich.org 70 i- (if (and stop (eq dir :after)) Err bitreich.org 70 i- (the fixnum (1+ (the fixnum stop))) Err bitreich.org 70 i- stop)) Err bitreich.org 70 i- while stop))) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/tests/GNUmakefile b/3rdparties/software/cffi_0.20.0/tests/GNUmakefile /scm/clic/file/3rdparties/software/cffi_0.20.0/tests/GNUmakefile.gph bitreich.org 70 i@@ -1,98 +0,0 @@ Err bitreich.org 70 i-# -*- Mode: Makefile; tab-width: 3; indent-tabs-mode: t -*- Err bitreich.org 70 i-# Err bitreich.org 70 i-# Makefile --- Make targets for various tasks. Err bitreich.org 70 i-# Err bitreich.org 70 i-# Copyright (C) 2005, James Bielman Err bitreich.org 70 i-# Err bitreich.org 70 i-# Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-# obtaining a copy of this software and associated documentation Err bitreich.org 70 i-# files (the "Software"), to deal in the Software without Err bitreich.org 70 i-# restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-# modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-# of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-# furnished to do so, subject to the following conditions: Err bitreich.org 70 i-# Err bitreich.org 70 i-# The above copyright notice and this permission notice shall be Err bitreich.org 70 i-# included in all copies or substantial portions of the Software. Err bitreich.org 70 i-# Err bitreich.org 70 i-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-# DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-# Err bitreich.org 70 i- Err bitreich.org 70 i-OSTYPE = $(shell uname) Err bitreich.org 70 i-ARCH = $(shell uname -m) Err bitreich.org 70 i- Err bitreich.org 70 i-CC := gcc Err bitreich.org 70 i-CFLAGS := -Wall -std=c99 -pedantic Err bitreich.org 70 i-SHLIB_CFLAGS := -shared Err bitreich.org 70 i-SHLIB_EXT := .so Err bitreich.org 70 i- Err bitreich.org 70 i-ifneq ($(if $(filter Linux %BSD,$(OSTYPE)),OK), OK) Err bitreich.org 70 i-ifeq ($(OSTYPE), Darwin) Err bitreich.org 70 i-SHLIB_CFLAGS := -dynamiclib Err bitreich.org 70 i-SHLIB_EXT := .dylib Err bitreich.org 70 i-ifeq ($(shell sysctl -n hw.optional.x86_64), 1) Err bitreich.org 70 i-ARCH := x86_64 Err bitreich.org 70 i-CFLAGS_64 := -m64 Err bitreich.org 70 i-endif Err bitreich.org 70 i-else Err bitreich.org 70 i-ifeq ($(OSTYPE), SunOS) Err bitreich.org 70 i-CFLAGS := -m64 -fPIC -c -Wall -std=c99 -pedantic Err bitreich.org 70 i-else Err bitreich.org 70 i-# Let's assume this is win32 Err bitreich.org 70 i-SHLIB_EXT := .dll Err bitreich.org 70 i-endif Err bitreich.org 70 i-endif Err bitreich.org 70 i-endif Err bitreich.org 70 i- Err bitreich.org 70 i-ifneq ($(ARCH), x86_64) Err bitreich.org 70 i-CFLAGS += -lm Err bitreich.org 70 i-endif Err bitreich.org 70 i- Err bitreich.org 70 i-ifeq ($(ARCH), x86_64) Err bitreich.org 70 i-CFLAGS_64 += -fPIC Err bitreich.org 70 i-endif Err bitreich.org 70 i- Err bitreich.org 70 i-# Are all G5s ppc970s? Err bitreich.org 70 i-ifeq ($(ARCH), ppc970) Err bitreich.org 70 i-CFLAGS_64 += -m64 Err bitreich.org 70 i-endif Err bitreich.org 70 i- Err bitreich.org 70 i-SHLIBS = libtest$(SHLIB_EXT) libtest2$(SHLIB_EXT) libfsbv$(SHLIB_EXT) Err bitreich.org 70 i- Err bitreich.org 70 i-ifeq ($(ARCH), x86_64) Err bitreich.org 70 i-SHLIBS += libtest32$(SHLIB_EXT) libtest2_32$(SHLIB_EXT) libfsbv_32$(SHLIB_EXT) Err bitreich.org 70 i-endif Err bitreich.org 70 i- Err bitreich.org 70 i-shlibs: $(SHLIBS) Err bitreich.org 70 i- Err bitreich.org 70 i-libtest$(SHLIB_EXT): libtest.c Err bitreich.org 70 i- $(CC) -o $@ $(SHLIB_CFLAGS) $(CFLAGS) $(CFLAGS_64) $< Err bitreich.org 70 i- Err bitreich.org 70 i-libtest2$(SHLIB_EXT): libtest2.c Err bitreich.org 70 i- $(CC) -o $@ $(SHLIB_CFLAGS) $(CFLAGS) $(CFLAGS_64) $< Err bitreich.org 70 i- Err bitreich.org 70 i-libfsbv$(SHLIB_EXT): libfsbv.c Err bitreich.org 70 i- $(CC) -o $@ $(SHLIB_CFLAGS) $(CFLAGS) $(CFLAGS_64) $< Err bitreich.org 70 i- Err bitreich.org 70 i-ifeq ($(ARCH), x86_64) Err bitreich.org 70 i-libtest32$(SHLIB_EXT): libtest.c Err bitreich.org 70 i- -$(CC) -m32 -o $@ $(SHLIB_CFLAGS) $(CFLAGS) $< Err bitreich.org 70 i- Err bitreich.org 70 i-libtest2_32$(SHLIB_EXT): libtest2.c Err bitreich.org 70 i- -$(CC) -m32 -o $@ $(SHLIB_CFLAGS) $(CFLAGS) $< Err bitreich.org 70 i- Err bitreich.org 70 i-libfsbv_32$(SHLIB_EXT): libfsbv.c Err bitreich.org 70 i- -$(CC) -m32 -o $@ $(SHLIB_CFLAGS) $(CFLAGS) $< Err bitreich.org 70 i-endif Err bitreich.org 70 i- Err bitreich.org 70 i-clean: Err bitreich.org 70 i- rm -f *.so *.dylib *.dll *.bundle Err bitreich.org 70 i- Err bitreich.org 70 i-# vim: ft=make ts=3 noet Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/tests/Makefile b/3rdparties/software/cffi_0.20.0/tests/Makefile /scm/clic/file/3rdparties/software/cffi_0.20.0/tests/Makefile.gph bitreich.org 70 i@@ -1,2 +0,0 @@ Err bitreich.org 70 i-shlibs clean: Err bitreich.org 70 i- gmake $@ Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/tests/arrays.lisp b/3rdparties/software/cffi_0.20.0/tests/arrays.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/tests/arrays.lisp.gph bitreich.org 70 i@@ -1,71 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; arrays.lisp --- Tests for foreign arrays. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Copyright (C) 2005-2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-;;;#Foreign Array Conversion Tests Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-tests) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest array.foreign-to-lisp.basic Err bitreich.org 70 i- (with-foreign-array (ptr #(1 2 3 4 5) '(:array :int32 5)) Err bitreich.org 70 i- (foreign-array-to-lisp ptr '(:array :int32 5))) Err bitreich.org 70 i- #(1 2 3 4 5)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest array.foreign-to-lisp.adjustable Err bitreich.org 70 i- (with-foreign-array (ptr #(1 2 3 4 5) '(:array :int32 5)) Err bitreich.org 70 i- (let ((array (foreign-array-to-lisp ptr '(:array :int32 5) Err bitreich.org 70 i- :adjustable t))) Err bitreich.org 70 i- (adjustable-array-p array))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest array.foreign-to-lisp.displaced Err bitreich.org 70 i- (let ((array (make-array 10 :initial-contents '(1 2 3 4 5 6 7 8 9 0)))) Err bitreich.org 70 i- (with-foreign-array (ptr #(10 20 30 40 50) '(:array :int32 5)) Err bitreich.org 70 i- (let ((displaced (foreign-array-to-lisp ptr '(:array :int32 5) Err bitreich.org 70 i- :displaced-to array Err bitreich.org 70 i- :displaced-index-offset 5))) Err bitreich.org 70 i- array))) Err bitreich.org 70 i- #(1 2 3 4 5 10 20 30 40 50)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Implementation detail: 15.1.2.2 of the CL standard states that the only Err bitreich.org 70 i-;;; truly portable array specializations are for bits (bit-vectors) and Err bitreich.org 70 i-;;; characters (strings). Since char-codes are implementation-dependent, it Err bitreich.org 70 i-;;; would be tricky to write a portable test for them without generating Err bitreich.org 70 i-;;; characters at runtime. So, for a truly portable test, we are only left with Err bitreich.org 70 i-;;; bits, which are luckily numeric, and equal to (UNSIGNED-BYTE 1). Err bitreich.org 70 i-;;; This is why the below test is so terribly wasteful, spending a whole byte Err bitreich.org 70 i-;;; for a single bit - CFFI has no capabilities for dealing with single bits, Err bitreich.org 70 i-;;; and this test is only meant to check correctness of the :ELEMENT-TYPE Err bitreich.org 70 i-;;; argument to MAKE-ARRAY. In actual use cases of specialized Err bitreich.org 70 i-;;; FOREIGN-ARRAY-TO-LISP, capable implementations will be able to make Err bitreich.org 70 i-;;; specialized arrays of types that are commonly optimized for and/or Err bitreich.org 70 i-;;; representable in hardware, such as (UNSIGNED-BYTE 8) on x86 architectures. Err bitreich.org 70 i-(deftest array.foreign-to-lisp.specialized Err bitreich.org 70 i- (with-foreign-array (ptr #(1 0 1 0 1 1 1 0) '(:array :int8 8)) Err bitreich.org 70 i- (foreign-array-to-lisp ptr '(:array :int8 8) :element-type 'bit)) Err bitreich.org 70 i- #*10101110) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/tests/bindings.lisp b/3rdparties/software/cffi_0.20.0/tests/bindings.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/tests/bindings.lisp.gph bitreich.org 70 i@@ -1,148 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; libtest.lisp --- Setup CFFI bindings for libtest. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-tests) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-foreign-library (libtest :type :test) Err bitreich.org 70 i- (:darwin (:or "libtest.dylib" "libtest32.dylib")) Err bitreich.org 70 i- (:unix (:or "libtest.so" "libtest32.so")) Err bitreich.org 70 i- (:windows "libtest.dll") Err bitreich.org 70 i- (t (:default "libtest"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-foreign-library (libtest2 :type :test) Err bitreich.org 70 i- (:darwin (:or "libtest2.dylib" "libtest2_32.dylib")) Err bitreich.org 70 i- (:unix (:or "libtest2.so" "libtest2_32.so")) Err bitreich.org 70 i- (t (:default "libtest2"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-foreign-library (libfsbv :type :test) Err bitreich.org 70 i- (:darwin (:or "libfsbv.dylib" "libfsbv32.dylib")) Err bitreich.org 70 i- (:unix (:or "libfsbv.so" "libfsbv_32.so")) Err bitreich.org 70 i- (:windows "libfsbv.dll") Err bitreich.org 70 i- (t (:default "libfsbv"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-foreign-library libc Err bitreich.org 70 i- (:windows "msvcrt.dll")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-foreign-library libm Err bitreich.org 70 i- #+(and lispworks darwin) ; not sure why the full path is necessary Err bitreich.org 70 i- (:darwin "/usr/lib/libm.dylib") Err bitreich.org 70 i- (t (:default "libm"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro deftest (name &rest body) Err bitreich.org 70 i- (destructuring-bind (name &key expected-to-fail) Err bitreich.org 70 i- (alexandria:ensure-list name) Err bitreich.org 70 i- (let ((result `(rt:deftest ,name ,@body))) Err bitreich.org 70 i- (when expected-to-fail Err bitreich.org 70 i- (setf result `(progn Err bitreich.org 70 i- (when ,expected-to-fail Err bitreich.org 70 i- (pushnew ',name rt::*expected-failures*)) Err bitreich.org 70 i- ,result))) Err bitreich.org 70 i- result))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun call-within-new-thread (fn &rest args) Err bitreich.org 70 i- (let (result Err bitreich.org 70 i- error Err bitreich.org 70 i- (cv (bordeaux-threads:make-condition-variable)) Err bitreich.org 70 i- (lock (bordeaux-threads:make-lock))) Err bitreich.org 70 i- (bordeaux-threads:with-lock-held (lock) Err bitreich.org 70 i- (bordeaux-threads:make-thread Err bitreich.org 70 i- (lambda () Err bitreich.org 70 i- (multiple-value-setq (result error) Err bitreich.org 70 i- (ignore-errors (apply fn args))) Err bitreich.org 70 i- (bordeaux-threads:with-lock-held (lock) Err bitreich.org 70 i- (bordeaux-threads:condition-notify cv)))) Err bitreich.org 70 i- (bordeaux-threads:condition-wait cv lock) Err bitreich.org 70 i- (values result error)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; As of OSX 10.6.6, loading CoreFoundation on something other than Err bitreich.org 70 i-;;; the initial thread results in a crash. Err bitreich.org 70 i-(deftest load-core-foundation Err bitreich.org 70 i- (progn Err bitreich.org 70 i- #+bordeaux-threads Err bitreich.org 70 i- (call-within-new-thread 'load-foreign-library Err bitreich.org 70 i- '(:framework "CoreFoundation")) Err bitreich.org 70 i- t) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Return the directory containing the source when compiling or Err bitreich.org 70 i-;;; loading this file. We don't use *LOAD-TRUENAME* because the fasl Err bitreich.org 70 i-;;; file may be in a different directory than the source with certain Err bitreich.org 70 i-;;; ASDF extensions loaded. Err bitreich.org 70 i-(defun load-directory () Err bitreich.org 70 i- (let ((here #.(or *compile-file-truename* *load-truename*))) Err bitreich.org 70 i- (make-pathname :name nil :type nil :version nil Err bitreich.org 70 i- :defaults here))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun load-test-libraries () Err bitreich.org 70 i- (let ((*foreign-library-directories* (list (load-directory)))) Err bitreich.org 70 i- (load-foreign-library 'libtest) Err bitreich.org 70 i- (load-foreign-library 'libtest2) Err bitreich.org 70 i- (load-foreign-library 'libfsbv) Err bitreich.org 70 i- (load-foreign-library 'libc) Err bitreich.org 70 i- #+(or abcl lispworks) (load-foreign-library 'libm))) Err bitreich.org 70 i- Err bitreich.org 70 i-#-(:and :ecl (:not :dffi)) Err bitreich.org 70 i-(load-test-libraries) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(:and :ecl (:not :dffi)) Err bitreich.org 70 i-(ffi:load-foreign-library Err bitreich.org 70 i- #.(make-pathname :name "libtest" :type "so" Err bitreich.org 70 i- :defaults (or *compile-file-truename* *load-truename*))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; check libtest version Err bitreich.org 70 i-(defparameter *required-dll-version* "20120107") Err bitreich.org 70 i- Err bitreich.org 70 i-(defcvar "dll_version" :string) Err bitreich.org 70 i- Err bitreich.org 70 i-(unless (string= *dll-version* *required-dll-version*) Err bitreich.org 70 i- (error "version check failed: expected ~s but libtest reports ~s" Err bitreich.org 70 i- *required-dll-version* Err bitreich.org 70 i- *dll-version*)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; The maximum and minimum values for single and double precision C Err bitreich.org 70 i-;;; floating point values, which may be quite different from the Err bitreich.org 70 i-;;; corresponding Lisp versions. Err bitreich.org 70 i-(defcvar "float_max" :float) Err bitreich.org 70 i-(defcvar "float_min" :float) Err bitreich.org 70 i-(defcvar "double_max" :double) Err bitreich.org 70 i-(defcvar "double_min" :double) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun run-cffi-tests (&key (compiled nil)) Err bitreich.org 70 i- (let ((regression-test::*compile-tests* compiled) Err bitreich.org 70 i- (*package* (find-package '#:cffi-tests))) Err bitreich.org 70 i- (format t "~&;;; running tests (~Acompiled)" (if compiled "" "un")) Err bitreich.org 70 i- (do-tests) Err bitreich.org 70 i- (set-difference (regression-test:pending-tests) Err bitreich.org 70 i- regression-test::*expected-failures*))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun run-all-cffi-tests () Err bitreich.org 70 i- (append (run-cffi-tests :compiled nil) Err bitreich.org 70 i- (run-cffi-tests :compiled t))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro expecting-error (&body body) Err bitreich.org 70 i- `(handler-case (progn ,@body :no-error) Err bitreich.org 70 i- (error () :error))) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/tests/callbacks.lisp b/3rdparties/software/cffi_0.20.0/tests/callbacks.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/tests/callbacks.lisp.gph bitreich.org 70 i@@ -1,526 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; callbacks.lisp --- Tests on callbacks. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-tests) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "expect_char_sum" :int (f :pointer)) Err bitreich.org 70 i-(defcfun "expect_unsigned_char_sum" :int (f :pointer)) Err bitreich.org 70 i-(defcfun "expect_short_sum" :int (f :pointer)) Err bitreich.org 70 i-(defcfun "expect_unsigned_short_sum" :int (f :pointer)) Err bitreich.org 70 i-(defcfun "expect_int_sum" :int (f :pointer)) Err bitreich.org 70 i-(defcfun "expect_unsigned_int_sum" :int (f :pointer)) Err bitreich.org 70 i-(defcfun "expect_long_sum" :int (f :pointer)) Err bitreich.org 70 i-(defcfun "expect_unsigned_long_sum" :int (f :pointer)) Err bitreich.org 70 i-(defcfun "expect_float_sum" :int (f :pointer)) Err bitreich.org 70 i-(defcfun "expect_double_sum" :int (f :pointer)) Err bitreich.org 70 i-(defcfun "expect_pointer_sum" :int (f :pointer)) Err bitreich.org 70 i-(defcfun "expect_strcat" :int (f :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-#-cffi-sys::no-long-long Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (defcfun "expect_long_long_sum" :int (f :pointer)) Err bitreich.org 70 i- (defcfun "expect_unsigned_long_long_sum" :int (f :pointer))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and scl long-float) Err bitreich.org 70 i-(defcfun "expect_long_double_sum" :int (f :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcallback sum-char :char ((a :char) (b :char)) Err bitreich.org 70 i- "Test if the named block is present and the docstring too." Err bitreich.org 70 i- ;(format t "~%}}} a: ~A, b: ~A {{{~%" a b) Err bitreich.org 70 i- (return-from sum-char (+ a b))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcallback sum-unsigned-char :unsigned-char Err bitreich.org 70 i- ((a :unsigned-char) (b :unsigned-char)) Err bitreich.org 70 i- ;(format t "~%}}} a: ~A, b: ~A {{{~%" a b) Err bitreich.org 70 i- (+ a b)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcallback sum-short :short ((a :short) (b :short)) Err bitreich.org 70 i- ;(format t "~%}}} a: ~A, b: ~A {{{~%" a b) Err bitreich.org 70 i- (+ a b)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcallback sum-unsigned-short :unsigned-short Err bitreich.org 70 i- ((a :unsigned-short) (b :unsigned-short)) Err bitreich.org 70 i- ;(format t "~%}}} a: ~A, b: ~A {{{~%" a b) Err bitreich.org 70 i- (+ a b)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcallback sum-int :int ((a :int) (b :int)) Err bitreich.org 70 i- (+ a b)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcallback sum-unsigned-int :unsigned-int Err bitreich.org 70 i- ((a :unsigned-int) (b :unsigned-int)) Err bitreich.org 70 i- (+ a b)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcallback sum-long :long ((a :long) (b :long)) Err bitreich.org 70 i- (+ a b)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcallback sum-unsigned-long :unsigned-long Err bitreich.org 70 i- ((a :unsigned-long) (b :unsigned-long)) Err bitreich.org 70 i- (+ a b)) Err bitreich.org 70 i- Err bitreich.org 70 i-#-cffi-sys::no-long-long Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (defcallback sum-long-long :long-long Err bitreich.org 70 i- ((a :long-long) (b :long-long)) Err bitreich.org 70 i- (+ a b)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defcallback sum-unsigned-long-long :unsigned-long-long Err bitreich.org 70 i- ((a :unsigned-long-long) (b :unsigned-long-long)) Err bitreich.org 70 i- (+ a b))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcallback sum-float :float ((a :float) (b :float)) Err bitreich.org 70 i- ;(format t "~%}}} a: ~A, b: ~A {{{~%" a b) Err bitreich.org 70 i- (+ a b)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcallback sum-double :double ((a :double) (b :double)) Err bitreich.org 70 i- ;(format t "~%}}} a: ~A, b: ~A {{{~%" a b) Err bitreich.org 70 i- (+ a b)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and scl long-float) Err bitreich.org 70 i-(defcallback sum-long-double :long-double ((a :long-double) (b :long-double)) Err bitreich.org 70 i- ;(format t "~%}}} a: ~A, b: ~A {{{~%" a b) Err bitreich.org 70 i- (+ a b)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcallback sum-pointer :pointer ((ptr :pointer) (offset :int)) Err bitreich.org 70 i- (inc-pointer ptr offset)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcallback lisp-strcat :string ((a :string) (b :string)) Err bitreich.org 70 i- (concatenate 'string a b)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest callbacks.char Err bitreich.org 70 i- (expect-char-sum (get-callback 'sum-char)) Err bitreich.org 70 i- 1) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest callbacks.unsigned-char Err bitreich.org 70 i- (expect-unsigned-char-sum (get-callback 'sum-unsigned-char)) Err bitreich.org 70 i- 1) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest callbacks.short Err bitreich.org 70 i- (expect-short-sum (callback sum-short)) Err bitreich.org 70 i- 1) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest callbacks.unsigned-short Err bitreich.org 70 i- (expect-unsigned-short-sum (callback sum-unsigned-short)) Err bitreich.org 70 i- 1) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest callbacks.int Err bitreich.org 70 i- (expect-int-sum (callback sum-int)) Err bitreich.org 70 i- 1) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest callbacks.unsigned-int Err bitreich.org 70 i- (expect-unsigned-int-sum (callback sum-unsigned-int)) Err bitreich.org 70 i- 1) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest callbacks.long Err bitreich.org 70 i- (expect-long-sum (callback sum-long)) Err bitreich.org 70 i- 1) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest callbacks.unsigned-long Err bitreich.org 70 i- (expect-unsigned-long-sum (callback sum-unsigned-long)) Err bitreich.org 70 i- 1) Err bitreich.org 70 i- Err bitreich.org 70 i-#-cffi-sys::no-long-long Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (deftest (callbacks.long-long :expected-to-fail (alexandria:featurep :openmcl)) Err bitreich.org 70 i- (expect-long-long-sum (callback sum-long-long)) Err bitreich.org 70 i- 1) Err bitreich.org 70 i- Err bitreich.org 70 i- (deftest callbacks.unsigned-long-long Err bitreich.org 70 i- (expect-unsigned-long-long-sum (callback sum-unsigned-long-long)) Err bitreich.org 70 i- 1)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest callbacks.float Err bitreich.org 70 i- (expect-float-sum (callback sum-float)) Err bitreich.org 70 i- 1) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest callbacks.double Err bitreich.org 70 i- (expect-double-sum (callback sum-double)) Err bitreich.org 70 i- 1) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and scl long-float) Err bitreich.org 70 i-(deftest callbacks.long-double Err bitreich.org 70 i- (expect-long-double-sum (callback sum-long-double)) Err bitreich.org 70 i- 1) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest callbacks.pointer Err bitreich.org 70 i- (expect-pointer-sum (callback sum-pointer)) Err bitreich.org 70 i- 1) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest callbacks.string Err bitreich.org 70 i- (expect-strcat (callback lisp-strcat)) Err bitreich.org 70 i- 1) Err bitreich.org 70 i- Err bitreich.org 70 i-#-cffi-sys::no-foreign-funcall Err bitreich.org 70 i-(defcallback return-a-string-not-nil :string () Err bitreich.org 70 i- "abc") Err bitreich.org 70 i- Err bitreich.org 70 i-#-cffi-sys::no-foreign-funcall Err bitreich.org 70 i-(deftest callbacks.string-not-docstring Err bitreich.org 70 i- (foreign-funcall-pointer (callback return-a-string-not-nil) () :string) Err bitreich.org 70 i- "abc") Err bitreich.org 70 i- Err bitreich.org 70 i-(defcallback check-for-nil :boolean ((pointer :pointer)) Err bitreich.org 70 i- (null pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-#-cffi-sys::no-foreign-funcall Err bitreich.org 70 i-(deftest callbacks.nil-for-null Err bitreich.org 70 i- (foreign-funcall-pointer (callback check-for-nil) nil Err bitreich.org 70 i- :pointer (null-pointer) :boolean) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; This one tests mem-aref too. Err bitreich.org 70 i-(defcfun "qsort" :void Err bitreich.org 70 i- (base :pointer) Err bitreich.org 70 i- (nmemb :int) Err bitreich.org 70 i- (size :int) Err bitreich.org 70 i- (fun-compar :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcallback < :int ((a :pointer) (b :pointer)) Err bitreich.org 70 i- (let ((x (mem-ref a :int)) Err bitreich.org 70 i- (y (mem-ref b :int))) Err bitreich.org 70 i- (cond ((> x y) 1) Err bitreich.org 70 i- ((< x y) -1) Err bitreich.org 70 i- (t 0)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest callbacks.qsort Err bitreich.org 70 i- (with-foreign-object (array :int 10) Err bitreich.org 70 i- ;; Initialize array. Err bitreich.org 70 i- (loop for i from 0 and n in '(7 2 10 4 3 5 1 6 9 8) Err bitreich.org 70 i- do (setf (mem-aref array :int i) n)) Err bitreich.org 70 i- ;; Sort it. Err bitreich.org 70 i- (qsort array 10 (foreign-type-size :int) (callback <)) Err bitreich.org 70 i- ;; Return it as a list. Err bitreich.org 70 i- (loop for i from 0 below 10 Err bitreich.org 70 i- collect (mem-aref array :int i))) Err bitreich.org 70 i- (1 2 3 4 5 6 7 8 9 10)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; void callback Err bitreich.org 70 i-(defparameter *int* -1) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "pass_int_ref" :void (f :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; CMUCL chokes on this one for some reason. Err bitreich.org 70 i-#-(and darwin cmucl) Err bitreich.org 70 i-(defcallback read-int-from-pointer :void ((a :pointer)) Err bitreich.org 70 i- (setq *int* (mem-ref a :int))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and darwin cmucl) Err bitreich.org 70 i-(pushnew 'callbacks.void rt::*expected-failures*) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest callbacks.void Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (pass-int-ref (callback read-int-from-pointer)) Err bitreich.org 70 i- *int*) Err bitreich.org 70 i- 1984) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; test funcalling of a callback and also declarations inside Err bitreich.org 70 i-;;; callbacks. Err bitreich.org 70 i- Err bitreich.org 70 i-#-cffi-sys::no-foreign-funcall Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (defcallback sum-2 :int ((a :int) (b :int) (c :int)) Err bitreich.org 70 i- (declare (ignore c)) Err bitreich.org 70 i- (+ a b)) Err bitreich.org 70 i- Err bitreich.org 70 i- (deftest callbacks.funcall.1 Err bitreich.org 70 i- (foreign-funcall-pointer (callback sum-2) () :int 2 :int 3 :int 1 :int) Err bitreich.org 70 i- 5) Err bitreich.org 70 i- Err bitreich.org 70 i- (defctype foo-float :float) Err bitreich.org 70 i- Err bitreich.org 70 i- (defcallback sum-2f foo-float Err bitreich.org 70 i- ((a foo-float) (b foo-float) (c foo-float) (d foo-float) (e foo-float)) Err bitreich.org 70 i- "This one ignores the middle 3 arguments." Err bitreich.org 70 i- (declare (ignore b c)) Err bitreich.org 70 i- (declare (ignore d)) Err bitreich.org 70 i- (+ a e)) Err bitreich.org 70 i- Err bitreich.org 70 i- (deftest callbacks.funcall.2 Err bitreich.org 70 i- (foreign-funcall-pointer (callback sum-2f) () foo-float 1.0 foo-float 2.0 Err bitreich.org 70 i- foo-float 3.0 foo-float 4.0 foo-float 5.0 Err bitreich.org 70 i- foo-float) Err bitreich.org 70 i- 6.0)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; (cb-test :no-long-long t) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "call_sum_127_no_ll" :long (cb :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; CMUCL and CCL choke on this one. Err bitreich.org 70 i-#-(or cmucl clozure Err bitreich.org 70 i- #.(cl:if (cl:>= cl:lambda-parameters-limit 127) '(:or) '(:and))) Err bitreich.org 70 i-(defcallback sum-127-no-ll :long Err bitreich.org 70 i- ((a1 :unsigned-long) (a2 :pointer) (a3 :long) (a4 :double) Err bitreich.org 70 i- (a5 :unsigned-long) (a6 :float) (a7 :float) (a8 :int) (a9 :unsigned-int) Err bitreich.org 70 i- (a10 :double) (a11 :double) (a12 :double) (a13 :pointer) Err bitreich.org 70 i- (a14 :unsigned-short) (a15 :unsigned-short) (a16 :pointer) (a17 :long) Err bitreich.org 70 i- (a18 :long) (a19 :int) (a20 :short) (a21 :unsigned-short) Err bitreich.org 70 i- (a22 :unsigned-short) (a23 :char) (a24 :long) (a25 :pointer) (a26 :pointer) Err bitreich.org 70 i- (a27 :char) (a28 :unsigned-char) (a29 :unsigned-long) (a30 :short) Err bitreich.org 70 i- (a31 :int) (a32 :int) (a33 :unsigned-char) (a34 :short) (a35 :long) Err bitreich.org 70 i- (a36 :long) (a37 :pointer) (a38 :unsigned-short) (a39 :char) (a40 :double) Err bitreich.org 70 i- (a41 :unsigned-short) (a42 :pointer) (a43 :short) (a44 :unsigned-long) Err bitreich.org 70 i- (a45 :unsigned-short) (a46 :float) (a47 :unsigned-char) (a48 :short) Err bitreich.org 70 i- (a49 :float) (a50 :short) (a51 :char) (a52 :unsigned-long) Err bitreich.org 70 i- (a53 :unsigned-long) (a54 :char) (a55 :float) (a56 :long) (a57 :pointer) Err bitreich.org 70 i- (a58 :short) (a59 :float) (a60 :unsigned-int) (a61 :float) Err bitreich.org 70 i- (a62 :unsigned-int) (a63 :double) (a64 :unsigned-int) (a65 :unsigned-char) Err bitreich.org 70 i- (a66 :int) (a67 :long) (a68 :char) (a69 :short) (a70 :double) (a71 :int) Err bitreich.org 70 i- (a72 :pointer) (a73 :char) (a74 :unsigned-short) (a75 :pointer) Err bitreich.org 70 i- (a76 :unsigned-short) (a77 :pointer) (a78 :unsigned-long) (a79 :double) Err bitreich.org 70 i- (a80 :pointer) (a81 :long) (a82 :float) (a83 :unsigned-short) Err bitreich.org 70 i- (a84 :unsigned-short) (a85 :pointer) (a86 :float) (a87 :int) Err bitreich.org 70 i- (a88 :unsigned-int) (a89 :double) (a90 :float) (a91 :long) (a92 :pointer) Err bitreich.org 70 i- (a93 :unsigned-short) (a94 :float) (a95 :unsigned-char) (a96 :unsigned-char) Err bitreich.org 70 i- (a97 :float) (a98 :unsigned-int) (a99 :float) (a100 :unsigned-short) Err bitreich.org 70 i- (a101 :double) (a102 :unsigned-short) (a103 :unsigned-long) Err bitreich.org 70 i- (a104 :unsigned-int) (a105 :unsigned-long) (a106 :pointer) Err bitreich.org 70 i- (a107 :unsigned-char) (a108 :char) (a109 :char) (a110 :unsigned-short) Err bitreich.org 70 i- (a111 :unsigned-long) (a112 :float) (a113 :short) (a114 :pointer) Err bitreich.org 70 i- (a115 :long) (a116 :unsigned-short) (a117 :short) (a118 :double) Err bitreich.org 70 i- (a119 :short) (a120 :int) (a121 :char) (a122 :unsigned-long) (a123 :long) Err bitreich.org 70 i- (a124 :int) (a125 :pointer) (a126 :double) (a127 :unsigned-char)) Err bitreich.org 70 i- (let ((args (list a1 (pointer-address a2) a3 (floor a4) a5 (floor a6) Err bitreich.org 70 i- (floor a7) a8 a9 (floor a10) (floor a11) (floor a12) Err bitreich.org 70 i- (pointer-address a13) a14 a15 (pointer-address a16) a17 a18 Err bitreich.org 70 i- a19 a20 a21 a22 a23 a24 (pointer-address a25) Err bitreich.org 70 i- (pointer-address a26) a27 a28 a29 a30 a31 a32 a33 a34 a35 Err bitreich.org 70 i- a36 (pointer-address a37) a38 a39 (floor a40) a41 Err bitreich.org 70 i- (pointer-address a42) a43 a44 a45 (floor a46) a47 a48 Err bitreich.org 70 i- (floor a49) a50 a51 a52 a53 a54 (floor a55) a56 Err bitreich.org 70 i- (pointer-address a57) a58 (floor a59) a60 (floor a61) a62 Err bitreich.org 70 i- (floor a63) a64 a65 a66 a67 a68 a69 (floor a70) a71 Err bitreich.org 70 i- (pointer-address a72) a73 a74 (pointer-address a75) a76 Err bitreich.org 70 i- (pointer-address a77) a78 (floor a79) (pointer-address a80) Err bitreich.org 70 i- a81 (floor a82) a83 a84 (pointer-address a85) (floor a86) Err bitreich.org 70 i- a87 a88 (floor a89) (floor a90) a91 (pointer-address a92) Err bitreich.org 70 i- a93 (floor a94) a95 a96 (floor a97) a98 (floor a99) a100 Err bitreich.org 70 i- (floor a101) a102 a103 a104 a105 (pointer-address a106) a107 Err bitreich.org 70 i- a108 a109 a110 a111 (floor a112) a113 (pointer-address a114) Err bitreich.org 70 i- a115 a116 a117 (floor a118) a119 a120 a121 a122 a123 a124 Err bitreich.org 70 i- (pointer-address a125) (floor a126) a127))) Err bitreich.org 70 i- #-(and) Err bitreich.org 70 i- (loop for i from 1 and arg in args do Err bitreich.org 70 i- (format t "a~A: ~A~%" i arg)) Err bitreich.org 70 i- (reduce #'+ args))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(or openmcl cmucl (and darwin (or allegro lispworks))) Err bitreich.org 70 i-(push 'callbacks.bff.1 regression-test::*expected-failures*) Err bitreich.org 70 i- Err bitreich.org 70 i-#+#.(cl:if (cl:>= cl:lambda-parameters-limit 127) '(:and) '(:or)) Err bitreich.org 70 i-(deftest callbacks.bff.1 Err bitreich.org 70 i- (call-sum-127-no-ll (callback sum-127-no-ll)) Err bitreich.org 70 i- 2008547941) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; (cb-test) Err bitreich.org 70 i- Err bitreich.org 70 i-#-(or cffi-sys::no-long-long Err bitreich.org 70 i- #.(cl:if (cl:>= cl:lambda-parameters-limit 127) '(or) '(and))) Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (defcfun "call_sum_127" :long-long (cb :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;;; CMUCL and CCL choke on this one. Err bitreich.org 70 i- #-(or cmucl clozure) Err bitreich.org 70 i- (defcallback sum-127 :long-long Err bitreich.org 70 i- ((a1 :short) (a2 :char) (a3 :pointer) (a4 :float) (a5 :long) (a6 :double) Err bitreich.org 70 i- (a7 :unsigned-long-long) (a8 :unsigned-short) (a9 :unsigned-char) Err bitreich.org 70 i- (a10 :char) (a11 :char) (a12 :unsigned-short) (a13 :unsigned-long-long) Err bitreich.org 70 i- (a14 :unsigned-short) (a15 :long-long) (a16 :unsigned-short) Err bitreich.org 70 i- (a17 :unsigned-long-long) (a18 :unsigned-char) (a19 :unsigned-char) Err bitreich.org 70 i- (a20 :unsigned-long-long) (a21 :long-long) (a22 :char) (a23 :float) Err bitreich.org 70 i- (a24 :unsigned-int) (a25 :float) (a26 :float) (a27 :unsigned-int) Err bitreich.org 70 i- (a28 :float) (a29 :char) (a30 :unsigned-char) (a31 :long) (a32 :long-long) Err bitreich.org 70 i- (a33 :unsigned-char) (a34 :double) (a35 :long) (a36 :double) Err bitreich.org 70 i- (a37 :unsigned-int) (a38 :unsigned-short) (a39 :long-long) Err bitreich.org 70 i- (a40 :unsigned-int) (a41 :int) (a42 :unsigned-long-long) (a43 :long) Err bitreich.org 70 i- (a44 :short) (a45 :unsigned-int) (a46 :unsigned-int) Err bitreich.org 70 i- (a47 :unsigned-long-long) (a48 :unsigned-int) (a49 :long) (a50 :pointer) Err bitreich.org 70 i- (a51 :unsigned-char) (a52 :char) (a53 :long-long) (a54 :unsigned-short) Err bitreich.org 70 i- (a55 :unsigned-int) (a56 :float) (a57 :unsigned-char) (a58 :unsigned-long) Err bitreich.org 70 i- (a59 :long-long) (a60 :float) (a61 :long) (a62 :float) (a63 :int) Err bitreich.org 70 i- (a64 :float) (a65 :unsigned-short) (a66 :unsigned-long-long) (a67 :short) Err bitreich.org 70 i- (a68 :unsigned-long) (a69 :long) (a70 :char) (a71 :unsigned-short) Err bitreich.org 70 i- (a72 :long-long) (a73 :short) (a74 :double) (a75 :pointer) Err bitreich.org 70 i- (a76 :unsigned-int) (a77 :char) (a78 :unsigned-int) (a79 :pointer) Err bitreich.org 70 i- (a80 :pointer) (a81 :unsigned-char) (a82 :pointer) (a83 :unsigned-short) Err bitreich.org 70 i- (a84 :unsigned-char) (a85 :long) (a86 :pointer) (a87 :char) (a88 :long) Err bitreich.org 70 i- (a89 :unsigned-short) (a90 :unsigned-char) (a91 :double) Err bitreich.org 70 i- (a92 :unsigned-long-long) (a93 :unsigned-short) (a94 :unsigned-short) Err bitreich.org 70 i- (a95 :unsigned-int) (a96 :long) (a97 :char) (a98 :long) (a99 :char) Err bitreich.org 70 i- (a100 :short) (a101 :unsigned-short) (a102 :unsigned-long) Err bitreich.org 70 i- (a103 :unsigned-long) (a104 :short) (a105 :long-long) (a106 :long-long) Err bitreich.org 70 i- (a107 :long-long) (a108 :double) (a109 :unsigned-short) Err bitreich.org 70 i- (a110 :unsigned-char) (a111 :short) (a112 :unsigned-char) (a113 :long) Err bitreich.org 70 i- (a114 :long-long) (a115 :unsigned-long-long) (a116 :unsigned-int) Err bitreich.org 70 i- (a117 :unsigned-long) (a118 :unsigned-char) (a119 :long-long) Err bitreich.org 70 i- (a120 :unsigned-char) (a121 :unsigned-long-long) (a122 :double) Err bitreich.org 70 i- (a123 :unsigned-char) (a124 :long-long) (a125 :unsigned-char) Err bitreich.org 70 i- (a126 :char) (a127 :long-long)) Err bitreich.org 70 i- (+ a1 a2 (pointer-address a3) (values (floor a4)) a5 (values (floor a6)) Err bitreich.org 70 i- a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20 a21 a22 Err bitreich.org 70 i- (values (floor a23)) a24 (values (floor a25)) (values (floor a26)) Err bitreich.org 70 i- a27 (values (floor a28)) a29 a30 a31 a32 a33 (values (floor a34)) Err bitreich.org 70 i- a35 (values (floor a36)) a37 a38 a39 a40 a41 a42 a43 a44 a45 a46 a47 Err bitreich.org 70 i- a48 a49 (pointer-address a50) a51 a52 a53 a54 a55 (values (floor a56)) Err bitreich.org 70 i- a57 a58 a59 (values (floor a60)) a61 (values (floor a62)) a63 Err bitreich.org 70 i- (values (floor a64)) a65 a66 a67 a68 a69 a70 a71 a72 a73 Err bitreich.org 70 i- (values (floor a74)) (pointer-address a75) a76 a77 a78 Err bitreich.org 70 i- (pointer-address a79) (pointer-address a80) a81 (pointer-address a82) Err bitreich.org 70 i- a83 a84 a85 (pointer-address a86) a87 a88 a89 a90 (values (floor a91)) Err bitreich.org 70 i- a92 a93 a94 a95 a96 a97 a98 a99 a100 a101 a102 a103 a104 a105 a106 a107 Err bitreich.org 70 i- (values (floor a108)) a109 a110 a111 a112 a113 a114 a115 a116 a117 a118 Err bitreich.org 70 i- a119 a120 a121 (values (floor a122)) a123 a124 a125 a126 a127)) Err bitreich.org 70 i- Err bitreich.org 70 i- #+(or openmcl cmucl) Err bitreich.org 70 i- (push 'callbacks.bff.2 rt::*expected-failures*) Err bitreich.org 70 i- Err bitreich.org 70 i- (deftest callbacks.bff.2 Err bitreich.org 70 i- (call-sum-127 (callback sum-127)) Err bitreich.org 70 i- 8166570665645582011)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; regression test: (callback non-existant-callback) should throw an error Err bitreich.org 70 i-(deftest callbacks.non-existant Err bitreich.org 70 i- (not (null (nth-value 1 (ignore-errors (callback doesnt-exist))))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Handling many arguments of type double. Many lisps (used to) fail Err bitreich.org 70 i-;;; this one on darwin/ppc. This test might be bogus due to floating Err bitreich.org 70 i-;;; point arithmetic rounding errors. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; CMUCL chokes on this one. Err bitreich.org 70 i-#-(and darwin cmucl) Err bitreich.org 70 i-(defcallback double26 :double Err bitreich.org 70 i- ((a1 :double) (a2 :double) (a3 :double) (a4 :double) (a5 :double) Err bitreich.org 70 i- (a6 :double) (a7 :double) (a8 :double) (a9 :double) (a10 :double) Err bitreich.org 70 i- (a11 :double) (a12 :double) (a13 :double) (a14 :double) (a15 :double) Err bitreich.org 70 i- (a16 :double) (a17 :double) (a18 :double) (a19 :double) (a20 :double) Err bitreich.org 70 i- (a21 :double) (a22 :double) (a23 :double) (a24 :double) (a25 :double) Err bitreich.org 70 i- (a26 :double)) Err bitreich.org 70 i- (let ((args (list a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 Err bitreich.org 70 i- a16 a17 a18 a19 a20 a21 a22 a23 a24 a25 a26))) Err bitreich.org 70 i- #-(and) Err bitreich.org 70 i- (loop for i from 1 and arg in args do Err bitreich.org 70 i- (format t "a~A: ~A~%" i arg)) Err bitreich.org 70 i- (reduce #'+ args))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "call_double26" :double (f :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and darwin (or allegro cmucl)) Err bitreich.org 70 i-(pushnew 'callbacks.double26 rt::*expected-failures*) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest callbacks.double26 Err bitreich.org 70 i- (call-double26 (callback double26)) Err bitreich.org 70 i- 81.64d0) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and darwin cmucl) Err bitreich.org 70 i-(pushnew 'callbacks.double26.funcall rt::*expected-failures*) Err bitreich.org 70 i- Err bitreich.org 70 i-#-cffi-sys::no-foreign-funcall Err bitreich.org 70 i-(deftest callbacks.double26.funcall Err bitreich.org 70 i- (foreign-funcall-pointer Err bitreich.org 70 i- (callback double26) () :double 3.14d0 :double 3.14d0 Err bitreich.org 70 i- :double 3.14d0 :double 3.14d0 :double 3.14d0 :double 3.14d0 Err bitreich.org 70 i- :double 3.14d0 :double 3.14d0 :double 3.14d0 :double 3.14d0 Err bitreich.org 70 i- :double 3.14d0 :double 3.14d0 :double 3.14d0 :double 3.14d0 Err bitreich.org 70 i- :double 3.14d0 :double 3.14d0 :double 3.14d0 :double 3.14d0 Err bitreich.org 70 i- :double 3.14d0 :double 3.14d0 :double 3.14d0 :double 3.14d0 Err bitreich.org 70 i- :double 3.14d0 :double 3.14d0 :double 3.14d0 :double 3.14d0 Err bitreich.org 70 i- :double) Err bitreich.org 70 i- 81.64d0) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Same as above, for floats. Err bitreich.org 70 i-#-(and darwin cmucl) Err bitreich.org 70 i-(defcallback float26 :float Err bitreich.org 70 i- ((a1 :float) (a2 :float) (a3 :float) (a4 :float) (a5 :float) Err bitreich.org 70 i- (a6 :float) (a7 :float) (a8 :float) (a9 :float) (a10 :float) Err bitreich.org 70 i- (a11 :float) (a12 :float) (a13 :float) (a14 :float) (a15 :float) Err bitreich.org 70 i- (a16 :float) (a17 :float) (a18 :float) (a19 :float) (a20 :float) Err bitreich.org 70 i- (a21 :float) (a22 :float) (a23 :float) (a24 :float) (a25 :float) Err bitreich.org 70 i- (a26 :float)) Err bitreich.org 70 i- (let ((args (list a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 Err bitreich.org 70 i- a16 a17 a18 a19 a20 a21 a22 a23 a24 a25 a26))) Err bitreich.org 70 i- #-(and) Err bitreich.org 70 i- (loop for i from 1 and arg in args do Err bitreich.org 70 i- (format t "a~A: ~A~%" i arg)) Err bitreich.org 70 i- (reduce #'+ args))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "call_float26" :float (f :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and darwin (or lispworks openmcl cmucl)) Err bitreich.org 70 i-(pushnew 'callbacks.float26 regression-test::*expected-failures*) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest callbacks.float26 Err bitreich.org 70 i- (call-float26 (callback float26)) Err bitreich.org 70 i- 130.0) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and darwin (or lispworks openmcl cmucl)) Err bitreich.org 70 i-(pushnew 'callbacks.float26.funcall regression-test::*expected-failures*) Err bitreich.org 70 i- Err bitreich.org 70 i-#-cffi-sys::no-foreign-funcall Err bitreich.org 70 i-(deftest callbacks.float26.funcall Err bitreich.org 70 i- (foreign-funcall-pointer Err bitreich.org 70 i- (callback float26) () :float 5.0 :float 5.0 Err bitreich.org 70 i- :float 5.0 :float 5.0 :float 5.0 :float 5.0 Err bitreich.org 70 i- :float 5.0 :float 5.0 :float 5.0 :float 5.0 Err bitreich.org 70 i- :float 5.0 :float 5.0 :float 5.0 :float 5.0 Err bitreich.org 70 i- :float 5.0 :float 5.0 :float 5.0 :float 5.0 Err bitreich.org 70 i- :float 5.0 :float 5.0 :float 5.0 :float 5.0 Err bitreich.org 70 i- :float 5.0 :float 5.0 :float 5.0 :float 5.0 Err bitreich.org 70 i- :float) Err bitreich.org 70 i- 130.0) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Defining a callback as a non-toplevel form. Not portable. Doesn't Err bitreich.org 70 i-;;; work for CMUCL or Allegro. Err bitreich.org 70 i-#-(and) Err bitreich.org 70 i-(let ((n 42)) Err bitreich.org 70 i- (defcallback non-toplevel-cb :int () Err bitreich.org 70 i- n)) Err bitreich.org 70 i- Err bitreich.org 70 i-#-(and) Err bitreich.org 70 i-(deftest callbacks.non-toplevel Err bitreich.org 70 i- (foreign-funcall (callback non-toplevel-cb) :int) Err bitreich.org 70 i- 42) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Stdcall Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and x86 (not cffi-sys::no-stdcall)) Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (defcallback (stdcall-cb :convention :stdcall) :int Err bitreich.org 70 i- ((a :int) (b :int) (c :int)) Err bitreich.org 70 i- (+ a b c)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defcfun "call_stdcall_fun" :int Err bitreich.org 70 i- (f :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i- (deftest callbacks.stdcall.1 Err bitreich.org 70 i- (call-stdcall-fun (callback stdcall-cb)) Err bitreich.org 70 i- 42)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; RT: many of the %DEFCALLBACK implementations wouldn't handle Err bitreich.org 70 i-;;; uninterned symbols. Err bitreich.org 70 i-(deftest callbacks.uninterned Err bitreich.org 70 i- (values (defcallback #1=#:foo :void ()) Err bitreich.org 70 i- (pointerp (callback #1#))) Err bitreich.org 70 i- #1# t) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/tests/compile.bat b/3rdparties/software/cffi_0.20.0/tests/compile.bat /scm/clic/file/3rdparties/software/cffi_0.20.0/tests/compile.bat.gph bitreich.org 70 i@@ -1,9 +0,0 @@ Err bitreich.org 70 i-rem Err bitreich.org 70 i-rem script for compiling the test lib with the free MSVC++ toolkit. Err bitreich.org 70 i-rem Err bitreich.org 70 i- Err bitreich.org 70 i-cl /LD /DWIN32=1 /Tc libtest.c Err bitreich.org 70 i-del libtest.obj libtest.exp Err bitreich.org 70 i- Err bitreich.org 70 i-cl /LD /DWIN32=1 /Tc libtest2.c Err bitreich.org 70 i-del libtest2.obj libtest2.exp Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/tests/defcfun.lisp b/3rdparties/software/cffi_0.20.0/tests/defcfun.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/tests/defcfun.lisp.gph bitreich.org 70 i@@ -1,536 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; defcfun.lisp --- Tests function definition and calling. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-tests) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.parse-name-and-options.1 Err bitreich.org 70 i- (multiple-value-bind (lisp-name foreign-name) Err bitreich.org 70 i- (let ((*package* (find-package '#:cffi-tests))) Err bitreich.org 70 i- (cffi::parse-name-and-options "foo_bar")) Err bitreich.org 70 i- (list lisp-name foreign-name)) Err bitreich.org 70 i- (foo-bar "foo_bar")) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.parse-name-and-options.2 Err bitreich.org 70 i- (multiple-value-bind (lisp-name foreign-name) Err bitreich.org 70 i- (let ((*package* (find-package '#:cffi-tests))) Err bitreich.org 70 i- (cffi::parse-name-and-options "foo_bar" t)) Err bitreich.org 70 i- (list lisp-name foreign-name)) Err bitreich.org 70 i- (*foo-bar* "foo_bar")) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.parse-name-and-options.3 Err bitreich.org 70 i- (multiple-value-bind (lisp-name foreign-name) Err bitreich.org 70 i- (cffi::parse-name-and-options 'foo-bar) Err bitreich.org 70 i- (list lisp-name foreign-name)) Err bitreich.org 70 i- (foo-bar "foo_bar")) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.parse-name-and-options.4 Err bitreich.org 70 i- (multiple-value-bind (lisp-name foreign-name) Err bitreich.org 70 i- (cffi::parse-name-and-options '*foo-bar* t) Err bitreich.org 70 i- (list lisp-name foreign-name)) Err bitreich.org 70 i- (*foo-bar* "foo_bar")) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.parse-name-and-options.5 Err bitreich.org 70 i- (multiple-value-bind (lisp-name foreign-name) Err bitreich.org 70 i- (cffi::parse-name-and-options '("foo_bar" foo-baz)) Err bitreich.org 70 i- (list lisp-name foreign-name)) Err bitreich.org 70 i- (foo-baz "foo_bar")) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.parse-name-and-options.6 Err bitreich.org 70 i- (multiple-value-bind (lisp-name foreign-name) Err bitreich.org 70 i- (cffi::parse-name-and-options '("foo_bar" *foo-baz*) t) Err bitreich.org 70 i- (list lisp-name foreign-name)) Err bitreich.org 70 i- (*foo-baz* "foo_bar")) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.parse-name-and-options.7 Err bitreich.org 70 i- (multiple-value-bind (lisp-name foreign-name) Err bitreich.org 70 i- (cffi::parse-name-and-options '(foo-baz "foo_bar")) Err bitreich.org 70 i- (list lisp-name foreign-name)) Err bitreich.org 70 i- (foo-baz "foo_bar")) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.parse-name-and-options.8 Err bitreich.org 70 i- (multiple-value-bind (lisp-name foreign-name) Err bitreich.org 70 i- (cffi::parse-name-and-options '(*foo-baz* "foo_bar") t) Err bitreich.org 70 i- (list lisp-name foreign-name)) Err bitreich.org 70 i- (*foo-baz* "foo_bar")) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Name translation Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest translate-underscore-separated-name.to-symbol Err bitreich.org 70 i- (let ((*package* (find-package '#:cffi-tests))) Err bitreich.org 70 i- (translate-underscore-separated-name "some_name_with_underscores")) Err bitreich.org 70 i- some-name-with-underscores) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest translate-underscore-separated-name.to-string Err bitreich.org 70 i- (translate-underscore-separated-name 'some-name-with-underscores) Err bitreich.org 70 i- "some_name_with_underscores") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest translate-camelcase-name.to-symbol Err bitreich.org 70 i- (let ((*package* (find-package '#:cffi-tests))) Err bitreich.org 70 i- (translate-camelcase-name "someXmlFunction")) Err bitreich.org 70 i- some-xml-function) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest translate-camelcase-name.to-string Err bitreich.org 70 i- (translate-camelcase-name 'some-xml-function) Err bitreich.org 70 i- "someXmlFunction") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest translate-camelcase-name.to-string-upper Err bitreich.org 70 i- (translate-camelcase-name 'some-xml-function :upper-initial-p t) Err bitreich.org 70 i- "SomeXmlFunction") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest translate-camelcase-name.to-symbol-special Err bitreich.org 70 i- (let ((*package* (find-package '#:cffi-tests))) Err bitreich.org 70 i- (translate-camelcase-name "someXMLFunction" :special-words '("XML"))) Err bitreich.org 70 i- some-xml-function) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest translate-camelcase-name.to-string-special Err bitreich.org 70 i- (translate-camelcase-name 'some-xml-function :special-words '("XML")) Err bitreich.org 70 i- "someXMLFunction") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest translate-name-from-foreign.function Err bitreich.org 70 i- (let ((*package* (find-package '#:cffi-tests))) Err bitreich.org 70 i- (translate-name-from-foreign "some_xml_name" *package*)) Err bitreich.org 70 i- some-xml-name) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest translate-name-from-foreign.var Err bitreich.org 70 i- (let ((*package* (find-package '#:cffi-tests))) Err bitreich.org 70 i- (translate-name-from-foreign "some_xml_name" *package* t)) Err bitreich.org 70 i- *some-xml-name*) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest translate-name-to-foreign.function Err bitreich.org 70 i- (translate-name-to-foreign 'some-xml-name *package*) Err bitreich.org 70 i- "some_xml_name") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest translate-name-to-foreign.var Err bitreich.org 70 i- (translate-name-to-foreign '*some-xml-name* *package* t) Err bitreich.org 70 i- "some_xml_name") Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Calling with built-in c types Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Tests calling standard C library functions both passing Err bitreich.org 70 i-;;; and returning each built-in type. (adapted from funcall.lisp) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "toupper" :char Err bitreich.org 70 i- "toupper docstring" Err bitreich.org 70 i- (char :char)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.char Err bitreich.org 70 i- (toupper (char-code #\a)) Err bitreich.org 70 i- #.(char-code #\A)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.docstring Err bitreich.org 70 i- (documentation 'toupper 'function) Err bitreich.org 70 i- "toupper docstring") Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun ("abs" c-abs) :int Err bitreich.org 70 i- (n :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.int Err bitreich.org 70 i- (c-abs -100) Err bitreich.org 70 i- 100) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "labs" :long Err bitreich.org 70 i- (n :long)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.long Err bitreich.org 70 i- (labs -131072) Err bitreich.org 70 i- 131072) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-#-cffi-features:no-long-long Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (defcfun "my_llabs" :long-long Err bitreich.org 70 i- (n :long-long)) Err bitreich.org 70 i- Err bitreich.org 70 i- (deftest defcfun.long-long Err bitreich.org 70 i- (my-llabs -9223372036854775807) Err bitreich.org 70 i- 9223372036854775807) Err bitreich.org 70 i- Err bitreich.org 70 i- (defcfun "ullong" :unsigned-long-long Err bitreich.org 70 i- (n :unsigned-long-long)) Err bitreich.org 70 i- Err bitreich.org 70 i- #+allegro ; lp#914500 Err bitreich.org 70 i- (pushnew 'defcfun.unsigned-long-long rt::*expected-failures*) Err bitreich.org 70 i- Err bitreich.org 70 i- (deftest defcfun.unsigned-long-long Err bitreich.org 70 i- (let ((ullong-max (1- (expt 2 (* 8 (foreign-type-size :unsigned-long-long)))))) Err bitreich.org 70 i- (eql ullong-max (ullong ullong-max))) Err bitreich.org 70 i- t)) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "my_sqrtf" :float Err bitreich.org 70 i- (n :float)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.float Err bitreich.org 70 i- (my-sqrtf 16.0) Err bitreich.org 70 i- 4.0) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun ("sqrt" c-sqrt) :double Err bitreich.org 70 i- (n :double)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.double Err bitreich.org 70 i- (c-sqrt 36.0d0) Err bitreich.org 70 i- 6.0d0) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and scl long-float) Err bitreich.org 70 i-(defcfun ("sqrtl" c-sqrtl) :long-double Err bitreich.org 70 i- (n :long-double)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and scl long-float) Err bitreich.org 70 i-(deftest defcfun.long-double Err bitreich.org 70 i- (c-sqrtl 36.0l0) Err bitreich.org 70 i- 6.0l0) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "strlen" :int Err bitreich.org 70 i- (n :string)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.string.1 Err bitreich.org 70 i- (strlen "Hello") Err bitreich.org 70 i- 5) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "strcpy" (:pointer :char) Err bitreich.org 70 i- (dest (:pointer :char)) Err bitreich.org 70 i- (src :string)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "strcat" (:pointer :char) Err bitreich.org 70 i- (dest (:pointer :char)) Err bitreich.org 70 i- (src :string)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.string.2 Err bitreich.org 70 i- (with-foreign-pointer-as-string (s 100) Err bitreich.org 70 i- (setf (mem-ref s :char) 0) Err bitreich.org 70 i- (strcpy s "Hello") Err bitreich.org 70 i- (strcat s ", world!")) Err bitreich.org 70 i- "Hello, world!") Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "strerror" :string Err bitreich.org 70 i- (n :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.string.3 Err bitreich.org 70 i- (typep (strerror 1) 'string) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Regression test. Allegro would warn on direct calls to Err bitreich.org 70 i-;;; functions with no arguments. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Also, let's check if void functions will return NIL. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Check if a docstring without arguments doesn't cause problems. Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "noargs" :int Err bitreich.org 70 i- "docstring") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.noargs Err bitreich.org 70 i- (noargs) Err bitreich.org 70 i- 42) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "noop" :void) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(or allegro openmcl ecl) (pushnew 'defcfun.noop rt::*expected-failures*) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.noop Err bitreich.org 70 i- (noop) Err bitreich.org 70 i- #|no values|#) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Calling varargs functions Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "sum_double_arbitrary" :double (n :int) &rest) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.varargs.nostdlib Err bitreich.org 70 i- (sum-double-arbitrary Err bitreich.org 70 i- 26 Err bitreich.org 70 i- :double 3.14d0 :double 3.14d0 :double 3.14d0 :double 3.14d0 Err bitreich.org 70 i- :double 3.14d0 :double 3.14d0 :double 3.14d0 :double 3.14d0 Err bitreich.org 70 i- :double 3.14d0 :double 3.14d0 :double 3.14d0 :double 3.14d0 Err bitreich.org 70 i- :double 3.14d0 :double 3.14d0 :double 3.14d0 :double 3.14d0 Err bitreich.org 70 i- :double 3.14d0 :double 3.14d0 :double 3.14d0 :double 3.14d0 Err bitreich.org 70 i- :double 3.14d0 :double 3.14d0 :double 3.14d0 :double 3.14d0 Err bitreich.org 70 i- :double 3.14d0 :double 3.14d0) Err bitreich.org 70 i- 81.64d0) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "sprintf" :int Err bitreich.org 70 i- "sprintf docstring" Err bitreich.org 70 i- (str (:pointer :char)) Err bitreich.org 70 i- (control :string) Err bitreich.org 70 i- &rest) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; CLISP and ABCL discard macro docstrings. Err bitreich.org 70 i-#+(or clisp abcl) Err bitreich.org 70 i-(pushnew 'defcfun.varargs.docstrings rt::*expected-failures*) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.varargs.docstrings Err bitreich.org 70 i- (documentation 'sprintf 'function) Err bitreich.org 70 i- "sprintf docstring") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.varargs.char Err bitreich.org 70 i- (with-foreign-pointer-as-string (s 100) Err bitreich.org 70 i- (sprintf s "%c" :char 65)) Err bitreich.org 70 i- "A") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.varargs.short Err bitreich.org 70 i- (with-foreign-pointer-as-string (s 100) Err bitreich.org 70 i- (sprintf s "%d" :short 42)) Err bitreich.org 70 i- "42") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.varargs.int Err bitreich.org 70 i- (with-foreign-pointer-as-string (s 100) Err bitreich.org 70 i- (sprintf s "%d" :int 1000)) Err bitreich.org 70 i- "1000") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.varargs.long Err bitreich.org 70 i- (with-foreign-pointer-as-string (s 100) Err bitreich.org 70 i- (sprintf s "%ld" :long 131072)) Err bitreich.org 70 i- "131072") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.varargs.float Err bitreich.org 70 i- (with-foreign-pointer-as-string (s 100) Err bitreich.org 70 i- (sprintf s "%.2f" :float (float pi))) Err bitreich.org 70 i- "3.14") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.varargs.double Err bitreich.org 70 i- (with-foreign-pointer-as-string (s 100) Err bitreich.org 70 i- (sprintf s "%.2f" :double (float pi 1.0d0))) Err bitreich.org 70 i- "3.14") Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and scl long-float) Err bitreich.org 70 i-(deftest defcfun.varargs.long-double Err bitreich.org 70 i- (with-foreign-pointer-as-string (s 100) Err bitreich.org 70 i- (setf (mem-ref s :char) 0) Err bitreich.org 70 i- (sprintf s "%.2Lf" :long-double pi)) Err bitreich.org 70 i- "3.14") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.varargs.string Err bitreich.org 70 i- (with-foreign-pointer-as-string (s 100) Err bitreich.org 70 i- (sprintf s "%s, %s!" :string "Hello" :string "world")) Err bitreich.org 70 i- "Hello, world!") Err bitreich.org 70 i- Err bitreich.org 70 i-;;; (let ((rettype (find-type :long)) Err bitreich.org 70 i-;;; (arg-types (n-random-types-no-ll 127))) Err bitreich.org 70 i-;;; (c-function rettype arg-types) Err bitreich.org 70 i-;;; (gen-function-test rettype arg-types)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and (not ecl) Err bitreich.org 70 i- #.(cl:if (cl:>= cl:lambda-parameters-limit 127) '(:and) '(:or))) Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (defcfun "sum_127_no_ll" :long Err bitreich.org 70 i- (a1 :long) (a2 :unsigned-long) (a3 :short) (a4 :unsigned-short) (a5 :float) Err bitreich.org 70 i- (a6 :double) (a7 :unsigned-long) (a8 :float) (a9 :unsigned-char) Err bitreich.org 70 i- (a10 :unsigned-short) (a11 :short) (a12 :unsigned-long) (a13 :double) Err bitreich.org 70 i- (a14 :long) (a15 :unsigned-int) (a16 :pointer) (a17 :unsigned-int) Err bitreich.org 70 i- (a18 :unsigned-short) (a19 :long) (a20 :float) (a21 :pointer) (a22 :float) Err bitreich.org 70 i- (a23 :int) (a24 :int) (a25 :unsigned-short) (a26 :long) (a27 :long) Err bitreich.org 70 i- (a28 :double) (a29 :unsigned-char) (a30 :unsigned-int) (a31 :unsigned-int) Err bitreich.org 70 i- (a32 :int) (a33 :unsigned-short) (a34 :unsigned-int) (a35 :pointer) Err bitreich.org 70 i- (a36 :double) (a37 :double) (a38 :long) (a39 :short) (a40 :unsigned-short) Err bitreich.org 70 i- (a41 :long) (a42 :char) (a43 :long) (a44 :unsigned-short) (a45 :pointer) Err bitreich.org 70 i- (a46 :int) (a47 :unsigned-int) (a48 :double) (a49 :unsigned-char) Err bitreich.org 70 i- (a50 :unsigned-char) (a51 :float) (a52 :int) (a53 :unsigned-short) Err bitreich.org 70 i- (a54 :double) (a55 :short) (a56 :unsigned-char) (a57 :unsigned-long) Err bitreich.org 70 i- (a58 :float) (a59 :float) (a60 :float) (a61 :pointer) (a62 :pointer) Err bitreich.org 70 i- (a63 :unsigned-int) (a64 :unsigned-long) (a65 :char) (a66 :short) Err bitreich.org 70 i- (a67 :unsigned-short) (a68 :unsigned-long) (a69 :pointer) (a70 :float) Err bitreich.org 70 i- (a71 :double) (a72 :long) (a73 :unsigned-long) (a74 :short) Err bitreich.org 70 i- (a75 :unsigned-int) (a76 :unsigned-short) (a77 :int) (a78 :unsigned-short) Err bitreich.org 70 i- (a79 :char) (a80 :double) (a81 :short) (a82 :unsigned-char) (a83 :float) Err bitreich.org 70 i- (a84 :char) (a85 :int) (a86 :double) (a87 :unsigned-char) (a88 :int) Err bitreich.org 70 i- (a89 :unsigned-long) (a90 :double) (a91 :short) (a92 :short) Err bitreich.org 70 i- (a93 :unsigned-int) (a94 :unsigned-char) (a95 :float) (a96 :long) Err bitreich.org 70 i- (a97 :float) (a98 :long) (a99 :long) (a100 :int) (a101 :int) Err bitreich.org 70 i- (a102 :unsigned-int) (a103 :char) (a104 :char) (a105 :unsigned-short) Err bitreich.org 70 i- (a106 :unsigned-int) (a107 :unsigned-short) (a108 :unsigned-short) Err bitreich.org 70 i- (a109 :int) (a110 :long) (a111 :char) (a112 :double) (a113 :unsigned-int) Err bitreich.org 70 i- (a114 :char) (a115 :short) (a116 :unsigned-long) (a117 :unsigned-int) Err bitreich.org 70 i- (a118 :short) (a119 :unsigned-char) (a120 :float) (a121 :pointer) Err bitreich.org 70 i- (a122 :double) (a123 :int) (a124 :long) (a125 :char) (a126 :unsigned-short) Err bitreich.org 70 i- (a127 :float)) Err bitreich.org 70 i- Err bitreich.org 70 i- (deftest defcfun.bff.1 Err bitreich.org 70 i- (sum-127-no-ll Err bitreich.org 70 i- 1442906394 520035521 -4715 50335 -13557.0 -30892.0d0 24061483 -23737.0 Err bitreich.org 70 i- 22 2348 4986 104895680 8073.0d0 -571698147 102484400 Err bitreich.org 70 i- (make-pointer 507907275) 12733353 7824 -1275845284 13602.0 Err bitreich.org 70 i- (make-pointer 286958390) -8042.0 -773681663 -1289932452 31199 -154985357 Err bitreich.org 70 i- -170994216 16845.0d0 177 218969221 2794350893 6068863 26327 127699339 Err bitreich.org 70 i- (make-pointer 184352771) 18512.0d0 -12345.0d0 -179853040 -19981 37268 Err bitreich.org 70 i- -792845398 116 -1084653028 50494 (make-pointer 2105239646) -1710519651 Err bitreich.org 70 i- 1557813312 2839.0d0 90 180 30580.0 -532698978 8623 9537.0d0 -10882 54 Err bitreich.org 70 i- 184357206 14929.0 -8190.0 -25615.0 (make-pointer 235310526) Err bitreich.org 70 i- (make-pointer 220476977) 7476055 1576685 -117 -11781 31479 23282640 Err bitreich.org 70 i- (make-pointer 8627281) -17834.0 10391.0d0 -1904504370 114393659 -17062 Err bitreich.org 70 i- 637873619 16078 -891210259 8107 0 760.0d0 -21268 104 14133.0 10 Err bitreich.org 70 i- 588598141 310.0d0 20 1351785456 16159552 -10121.0d0 -25866 24821 Err bitreich.org 70 i- 68232851 60 -24132.0 -1660411658 13387.0 -786516668 -499825680 Err bitreich.org 70 i- -1128144619 111849719 2746091587 -2 95 14488 326328135 64781 18204 Err bitreich.org 70 i- 150716680 -703859275 103 16809.0d0 852235610 -43 21088 242356110 Err bitreich.org 70 i- 324325428 -22380 23 24814.0 (make-pointer 40362014) -14322.0d0 Err bitreich.org 70 i- -1864262539 523684371 -21 49995 -29175.0) Err bitreich.org 70 i- 796447501)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; (let ((rettype (find-type :long-long)) Err bitreich.org 70 i-;;; (arg-types (n-random-types 127))) Err bitreich.org 70 i-;;; (c-function rettype arg-types) Err bitreich.org 70 i-;;; (gen-function-test rettype arg-types)) Err bitreich.org 70 i- Err bitreich.org 70 i-#-(or ecl cffi-sys::no-long-long Err bitreich.org 70 i- #.(cl:if (cl:>= cl:lambda-parameters-limit 127) '(:or) '(:and))) Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (defcfun "sum_127" :long-long Err bitreich.org 70 i- (a1 :pointer) (a2 :pointer) (a3 :float) (a4 :unsigned-long) (a5 :pointer) Err bitreich.org 70 i- (a6 :long-long) (a7 :double) (a8 :double) (a9 :unsigned-short) (a10 :int) Err bitreich.org 70 i- (a11 :long-long) (a12 :long) (a13 :short) (a14 :unsigned-int) (a15 :long) Err bitreich.org 70 i- (a16 :unsigned-char) (a17 :int) (a18 :double) (a19 :short) (a20 :short) Err bitreich.org 70 i- (a21 :long-long) (a22 :unsigned-int) (a23 :unsigned-short) (a24 :short) Err bitreich.org 70 i- (a25 :pointer) (a26 :short) (a27 :unsigned-short) (a28 :unsigned-short) Err bitreich.org 70 i- (a29 :int) (a30 :long-long) (a31 :pointer) (a32 :int) (a33 :unsigned-long) Err bitreich.org 70 i- (a34 :unsigned-long) (a35 :pointer) (a36 :unsigned-long-long) (a37 :float) Err bitreich.org 70 i- (a38 :int) (a39 :short) (a40 :pointer) (a41 :unsigned-long-long) Err bitreich.org 70 i- (a42 :long-long) (a43 :unsigned-long) (a44 :unsigned-long) Err bitreich.org 70 i- (a45 :unsigned-long-long) (a46 :unsigned-long) (a47 :char) (a48 :double) Err bitreich.org 70 i- (a49 :long) (a50 :unsigned-int) (a51 :int) (a52 :short) (a53 :pointer) Err bitreich.org 70 i- (a54 :long) (a55 :unsigned-long-long) (a56 :int) (a57 :unsigned-short) Err bitreich.org 70 i- (a58 :unsigned-long-long) (a59 :float) (a60 :pointer) (a61 :float) Err bitreich.org 70 i- (a62 :unsigned-short) (a63 :unsigned-long) (a64 :float) (a65 :unsigned-int) Err bitreich.org 70 i- (a66 :unsigned-long-long) (a67 :pointer) (a68 :double) Err bitreich.org 70 i- (a69 :unsigned-long-long) (a70 :double) (a71 :double) (a72 :long-long) Err bitreich.org 70 i- (a73 :pointer) (a74 :unsigned-short) (a75 :long) (a76 :pointer) (a77 :short) Err bitreich.org 70 i- (a78 :double) (a79 :long) (a80 :unsigned-char) (a81 :pointer) Err bitreich.org 70 i- (a82 :unsigned-char) (a83 :long) (a84 :double) (a85 :pointer) (a86 :int) Err bitreich.org 70 i- (a87 :double) (a88 :unsigned-char) (a89 :double) (a90 :short) (a91 :long) Err bitreich.org 70 i- (a92 :int) (a93 :long) (a94 :double) (a95 :unsigned-short) Err bitreich.org 70 i- (a96 :unsigned-int) (a97 :int) (a98 :char) (a99 :long-long) (a100 :double) Err bitreich.org 70 i- (a101 :float) (a102 :unsigned-long) (a103 :short) (a104 :pointer) Err bitreich.org 70 i- (a105 :float) (a106 :long-long) (a107 :int) (a108 :long-long) Err bitreich.org 70 i- (a109 :long-long) (a110 :double) (a111 :unsigned-long-long) (a112 :double) Err bitreich.org 70 i- (a113 :unsigned-long) (a114 :char) (a115 :char) (a116 :unsigned-long) Err bitreich.org 70 i- (a117 :short) (a118 :unsigned-char) (a119 :unsigned-char) (a120 :int) Err bitreich.org 70 i- (a121 :int) (a122 :float) (a123 :unsigned-char) (a124 :unsigned-char) Err bitreich.org 70 i- (a125 :double) (a126 :unsigned-long-long) (a127 :char)) Err bitreich.org 70 i- Err bitreich.org 70 i- #+(and sbcl x86) (push 'defcfun.bff.2 rtest::*expected-failures*) Err bitreich.org 70 i- Err bitreich.org 70 i- (deftest defcfun.bff.2 Err bitreich.org 70 i- (sum-127 Err bitreich.org 70 i- (make-pointer 2746181372) (make-pointer 177623060) -32334.0 3158055028 Err bitreich.org 70 i- (make-pointer 242315091) 4288001754991016425 -21047.0d0 287.0d0 18722 Err bitreich.org 70 i- 243379286 -8677366518541007140 581399424 -13872 4240394881 1353358999 Err bitreich.org 70 i- 226 969197676 -26207.0d0 6484 11150 1241680089902988480 106068320 61865 Err bitreich.org 70 i- 2253 (make-pointer 866809333) -31613 35616 11715 1393601698 Err bitreich.org 70 i- 8940888681199591845 (make-pointer 1524606024) 805638893 3315410736 Err bitreich.org 70 i- 3432596795 (make-pointer 1490355706) 696175657106383698 -25438.0 Err bitreich.org 70 i- 1294381547 26724 (make-pointer 3196569545) 2506913373410783697 Err bitreich.org 70 i- -4405955718732597856 4075932032 3224670123 2183829215657835866 Err bitreich.org 70 i- 1318320964 -22 -3786.0d0 -2017024146 1579225515 -626617701 -1456 Err bitreich.org 70 i- (make-pointer 3561444187) 395687791 1968033632506257320 -1847773261 Err bitreich.org 70 i- 48853 142937735275669133 -17974.0 (make-pointer 2791749948) -14140.0 Err bitreich.org 70 i- 2707 3691328585 3306.0 1132012981 303633191773289330 Err bitreich.org 70 i- (make-pointer 981183954) 9114.0d0 8664374572369470 -19013.0d0 Err bitreich.org 70 i- -10288.0d0 -3679345119891954339 (make-pointer 3538786709) 23761 Err bitreich.org 70 i- -154264605 (make-pointer 2694396308) 7023 997.0d0 1009561368 241 Err bitreich.org 70 i- (make-pointer 2612292671) 48 1431872408 -32675.0d0 Err bitreich.org 70 i- (make-pointer 1587599336) 958916472 -9857.0d0 111 -14370.0d0 -7308 Err bitreich.org 70 i- -967514912 488790941 2146978095 -24111.0d0 13711 86681861 717987770 Err bitreich.org 70 i- 111 1013402998690933877 17234.0d0 -8772.0 3959216275 -8711 Err bitreich.org 70 i- (make-pointer 3142780851) 9480.0 -3820453146461186120 1616574376 Err bitreich.org 70 i- -3336232268263990050 -1906114671562979758 -27925.0d0 9695970875869913114 Err bitreich.org 70 i- 27033.0d0 1096518219 -12 104 3392025403 -27911 60 89 509297051 Err bitreich.org 70 i- -533066551 29158.0 110 54 -9802.0d0 593950442165910888 -79) Err bitreich.org 70 i- 7758614658402721936)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; regression test: defining an undefined foreign function should only Err bitreich.org 70 i-;;; throw some sort of warning, not signal an error. Err bitreich.org 70 i- Err bitreich.org 70 i-#+(or cmucl (and sbcl (or (not linkage-table) win32))) Err bitreich.org 70 i-(pushnew 'defcfun.undefined rt::*expected-failures*) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.undefined Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (eval '(defcfun ("undefined_foreign_function" undefined-foreign-function) :void)) Err bitreich.org 70 i- (compile 'undefined-foreign-function) Err bitreich.org 70 i- t) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Test whether all doubles are passed correctly. On some platforms, eg. Err bitreich.org 70 i-;;; darwin/ppc, some are passed on registers others on the stack. Err bitreich.org 70 i-(defcfun "sum_double26" :double Err bitreich.org 70 i- (a1 :double) (a2 :double) (a3 :double) (a4 :double) (a5 :double) Err bitreich.org 70 i- (a6 :double) (a7 :double) (a8 :double) (a9 :double) (a10 :double) Err bitreich.org 70 i- (a11 :double) (a12 :double) (a13 :double) (a14 :double) (a15 :double) Err bitreich.org 70 i- (a16 :double) (a17 :double) (a18 :double) (a19 :double) (a20 :double) Err bitreich.org 70 i- (a21 :double) (a22 :double) (a23 :double) (a24 :double) (a25 :double) Err bitreich.org 70 i- (a26 :double)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.double26 Err bitreich.org 70 i- (sum-double26 3.14d0 3.14d0 3.14d0 3.14d0 3.14d0 3.14d0 3.14d0 Err bitreich.org 70 i- 3.14d0 3.14d0 3.14d0 3.14d0 3.14d0 3.14d0 3.14d0 Err bitreich.org 70 i- 3.14d0 3.14d0 3.14d0 3.14d0 3.14d0 3.14d0 3.14d0 Err bitreich.org 70 i- 3.14d0 3.14d0 3.14d0 3.14d0 3.14d0) Err bitreich.org 70 i- 81.64d0) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Same as above for floats. Err bitreich.org 70 i-(defcfun "sum_float26" :float Err bitreich.org 70 i- (a1 :float) (a2 :float) (a3 :float) (a4 :float) (a5 :float) Err bitreich.org 70 i- (a6 :float) (a7 :float) (a8 :float) (a9 :float) (a10 :float) Err bitreich.org 70 i- (a11 :float) (a12 :float) (a13 :float) (a14 :float) (a15 :float) Err bitreich.org 70 i- (a16 :float) (a17 :float) (a18 :float) (a19 :float) (a20 :float) Err bitreich.org 70 i- (a21 :float) (a22 :float) (a23 :float) (a24 :float) (a25 :float) Err bitreich.org 70 i- (a26 :float)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcfun.float26 Err bitreich.org 70 i- (sum-float26 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 Err bitreich.org 70 i- 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0) Err bitreich.org 70 i- 130.0) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Namespaces Err bitreich.org 70 i- Err bitreich.org 70 i-#-cffi-sys::flat-namespace Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (defcfun ("ns_function" ns-fun1 :library libtest) :boolean) Err bitreich.org 70 i- (defcfun ("ns_function" ns-fun2 :library libtest2) :boolean) Err bitreich.org 70 i- Err bitreich.org 70 i- (deftest defcfun.namespace.1 Err bitreich.org 70 i- (values (ns-fun1) (ns-fun2)) Err bitreich.org 70 i- t nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# stdcall Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and x86 windows (not cffi-sys::no-stdcall)) Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (defcfun ("stdcall_fun@12" stdcall-fun :convention :stdcall) :int Err bitreich.org 70 i- (a :int) Err bitreich.org 70 i- (b :int) Err bitreich.org 70 i- (c :int)) Err bitreich.org 70 i- Err bitreich.org 70 i- (deftest defcfun.stdcall.1 Err bitreich.org 70 i- (loop repeat 100 do (stdcall-fun 1 2 3) Err bitreich.org 70 i- finally (return (stdcall-fun 1 2 3))) Err bitreich.org 70 i- 6)) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/tests/enum.lisp b/3rdparties/software/cffi_0.20.0/tests/enum.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/tests/enum.lisp.gph bitreich.org 70 i@@ -1,231 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; enum.lisp --- Tests on C enums. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-tests) Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype numeros-base-type :int) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcenum (numeros numeros-base-type) Err bitreich.org 70 i- (:one 1) Err bitreich.org 70 i- :two Err bitreich.org 70 i- :three Err bitreich.org 70 i- :four Err bitreich.org 70 i- (:forty-one 41) Err bitreich.org 70 i- :forty-two) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "check_enums" :int Err bitreich.org 70 i- (%one numeros) Err bitreich.org 70 i- (%two numeros) Err bitreich.org 70 i- (%three numeros) Err bitreich.org 70 i- (%four numeros) Err bitreich.org 70 i- (%forty-one numeros) Err bitreich.org 70 i- (%forty-two numeros)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest enum.1 Err bitreich.org 70 i- (check-enums :one :two :three 4 :forty-one :forty-two) Err bitreich.org 70 i- 1) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcenum another-boolean :false :true) Err bitreich.org 70 i-(defcfun "return_enum" another-boolean (x :uint)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest enum.2 Err bitreich.org 70 i- (and (eq :false (return-enum 0)) Err bitreich.org 70 i- (eq :true (return-enum 1))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype yet-another-boolean another-boolean) Err bitreich.org 70 i-(defcfun ("return_enum" return-enum2) yet-another-boolean Err bitreich.org 70 i- (x yet-another-boolean)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest enum.3 Err bitreich.org 70 i- (and (eq :false (return-enum2 :false)) Err bitreich.org 70 i- (eq :true (return-enum2 :true))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype numeros-typedef numeros) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest enum.typedef.1 Err bitreich.org 70 i- (eq (foreign-enum-keyword 'numeros-typedef 1) Err bitreich.org 70 i- (foreign-enum-keyword 'numeros 1)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest enum.typedef.2 Err bitreich.org 70 i- (eql (foreign-enum-value 'numeros-typedef :four) Err bitreich.org 70 i- (foreign-enum-value 'numeros :four)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcenum enum-size.int Err bitreich.org 70 i- (:one 1) Err bitreich.org 70 i- (enum-size-int #.(1- (expt 2 (1- (* (foreign-type-size :unsigned-int) 8))))) Err bitreich.org 70 i- (enum-size-negative-int #.(- (1- (expt 2 (1- (* (foreign-type-size :unsigned-int) 8)))))) Err bitreich.org 70 i- (:two 2)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcenum enum-size.uint Err bitreich.org 70 i- (:one 1) Err bitreich.org 70 i- (enum-size-uint #.(1- (expt 2 (* (foreign-type-size :unsigned-int) 8)))) Err bitreich.org 70 i- (:two 2)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest enum.size Err bitreich.org 70 i- (mapcar (alexandria:compose 'cffi::unparse-type Err bitreich.org 70 i- 'cffi::actual-type Err bitreich.org 70 i- 'cffi::parse-type) Err bitreich.org 70 i- (list 'enum-size.int Err bitreich.org 70 i- 'enum-size.uint)) Err bitreich.org 70 i- ;; The C standard only has weak constraints on the size of integer types, so Err bitreich.org 70 i- ;; we cannot really test more than one type in a platform independent way due Err bitreich.org 70 i- ;; to the possible overlaps. Err bitreich.org 70 i- (:int Err bitreich.org 70 i- :unsigned-int)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest enum.size.members Err bitreich.org 70 i- (mapcar (alexandria:conjoin 'boundp 'constantp) Err bitreich.org 70 i- '(enum-size-int enum-size-negative-int enum-size-uint)) Err bitreich.org 70 i- (t t t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest enum.size.error-when-too-large Err bitreich.org 70 i- (expecting-error Err bitreich.org 70 i- (eval '(defcenum enum-size-too-large Err bitreich.org 70 i- (:too-long #.(expt 2 129))))) Err bitreich.org 70 i- :error) Err bitreich.org 70 i- Err bitreich.org 70 i-;; There are some projects that use non-integer base type. It's not in Err bitreich.org 70 i-;; adherence with the C standard, but we also don't lose much by Err bitreich.org 70 i-;; allowing it. Err bitreich.org 70 i-(defcenum (enum.double :double) Err bitreich.org 70 i- (:one 1) Err bitreich.org 70 i- (:two 2d0) Err bitreich.org 70 i- (:three 3.42) Err bitreich.org 70 i- :four) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest enum.double Err bitreich.org 70 i- (values-list Err bitreich.org 70 i- (mapcar (alexandria:curry 'foreign-enum-value 'enum.double) Err bitreich.org 70 i- '(:one :two :three :four))) Err bitreich.org 70 i- 1 Err bitreich.org 70 i- 2.0d0 Err bitreich.org 70 i- 3.42 Err bitreich.org 70 i- 4.42) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Bitfield tests Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Regression test: defbitfield was misbehaving when the first value Err bitreich.org 70 i-;;; was provided. Err bitreich.org 70 i-(deftest bitfield.1 Err bitreich.org 70 i- (eval '(defbitfield (bf1 :long) Err bitreich.org 70 i- (:foo 0))) Err bitreich.org 70 i- bf1) Err bitreich.org 70 i- Err bitreich.org 70 i-(defbitfield bf2 Err bitreich.org 70 i- one Err bitreich.org 70 i- two Err bitreich.org 70 i- four Err bitreich.org 70 i- eight Err bitreich.org 70 i- sixteen Err bitreich.org 70 i- (bf2.outlier 42) Err bitreich.org 70 i- thirty-two Err bitreich.org 70 i- sixty-four) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest bitfield.2 Err bitreich.org 70 i- (mapcar (lambda (symbol) Err bitreich.org 70 i- (foreign-bitfield-value 'bf2 (list symbol))) Err bitreich.org 70 i- '(one two four eight sixteen thirty-two sixty-four)) Err bitreich.org 70 i- (1 2 4 8 16 32 64)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest bitfield.2.outlier Err bitreich.org 70 i- (mapcar (lambda (symbol) Err bitreich.org 70 i- (foreign-bitfield-value 'bf2 (list symbol))) Err bitreich.org 70 i- '(one two four eight sixteen thirty-two sixty-four)) Err bitreich.org 70 i- (1 2 4 8 16 32 64)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defbitfield (bf3 :int) Err bitreich.org 70 i- (three 3) Err bitreich.org 70 i- one Err bitreich.org 70 i- (seven 7) Err bitreich.org 70 i- two Err bitreich.org 70 i- (eight 8) Err bitreich.org 70 i- sixteen) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Non-single-bit numbers must not influence the progression of Err bitreich.org 70 i-;;; implicit values. Single bits larger than any before *must* Err bitreich.org 70 i-;;; influence said progression. Err bitreich.org 70 i-(deftest bitfield.3 Err bitreich.org 70 i- (mapcar (lambda (symbol) Err bitreich.org 70 i- (foreign-bitfield-value 'bf3 (list symbol))) Err bitreich.org 70 i- '(one two sixteen)) Err bitreich.org 70 i- (1 2 16)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defbitfield bf4 Err bitreich.org 70 i- ;; zero will be a simple enum member because it's not a valid mask Err bitreich.org 70 i- (zero 0) Err bitreich.org 70 i- one Err bitreich.org 70 i- two Err bitreich.org 70 i- four Err bitreich.org 70 i- (three 3) Err bitreich.org 70 i- (sixteen 16)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Yet another edge case with the 0... Err bitreich.org 70 i-(deftest bitfield.4 Err bitreich.org 70 i- ;; These should macroexpand to the literals in Slime Err bitreich.org 70 i- ;; due to the compiler macros. Same below. Err bitreich.org 70 i- (values (foreign-bitfield-value 'bf4 ()) Err bitreich.org 70 i- (foreign-bitfield-value 'bf4 'one) Err bitreich.org 70 i- (foreign-bitfield-value 'bf4 '(one two)) Err bitreich.org 70 i- (foreign-bitfield-value 'bf4 '(three)) ; or should it signal an error? Err bitreich.org 70 i- (foreign-bitfield-value 'bf4 '(sixteen))) Err bitreich.org 70 i- 0 Err bitreich.org 70 i- 1 Err bitreich.org 70 i- 3 Err bitreich.org 70 i- 3 Err bitreich.org 70 i- 16) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest bitfield.4b Err bitreich.org 70 i- (values (foreign-bitfield-symbols 'bf4 0) Err bitreich.org 70 i- (foreign-bitfield-symbols 'bf4 1) Err bitreich.org 70 i- (foreign-bitfield-symbols 'bf4 3) Err bitreich.org 70 i- (foreign-bitfield-symbols 'bf4 8) Err bitreich.org 70 i- (foreign-bitfield-symbols 'bf4 16)) Err bitreich.org 70 i- nil Err bitreich.org 70 i- (one) Err bitreich.org 70 i- (one two) Err bitreich.org 70 i- nil Err bitreich.org 70 i- (sixteen)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest bitfield.translators Err bitreich.org 70 i- (with-foreign-object (bf 'bf4 2) Err bitreich.org 70 i- (setf (mem-aref bf 'bf4 0) 1) Err bitreich.org 70 i- (setf (mem-aref bf 'bf4 1) 3) Err bitreich.org 70 i- (values (mem-aref bf 'bf4 0) Err bitreich.org 70 i- (mem-aref bf 'bf4 1))) Err bitreich.org 70 i- (one) Err bitreich.org 70 i- (one two)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+nil Err bitreich.org 70 i-(deftest bitfield.base-type-error Err bitreich.org 70 i- (expecting-error Err bitreich.org 70 i- (eval '(defbitfield (bf1 :float) Err bitreich.org 70 i- (:foo 0)))) Err bitreich.org 70 i- :error) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/tests/foreign-globals.lisp b/3rdparties/software/cffi_0.20.0/tests/foreign-globals.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/tests/foreign-globals.lisp.gph bitreich.org 70 i@@ -1,309 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; foreign-globals.lisp --- Tests on foreign globals. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-tests) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcvar ("var_char" *char-var*) :char) Err bitreich.org 70 i-(defcvar "var_unsigned_char" :unsigned-char) Err bitreich.org 70 i-(defcvar "var_short" :short) Err bitreich.org 70 i-(defcvar "var_unsigned_short" :unsigned-short) Err bitreich.org 70 i-(defcvar "var_int" :int) Err bitreich.org 70 i-(defcvar "var_unsigned_int" :unsigned-int) Err bitreich.org 70 i-(defcvar "var_long" :long) Err bitreich.org 70 i-(defcvar "var_unsigned_long" :unsigned-long) Err bitreich.org 70 i-(defcvar "var_float" :float) Err bitreich.org 70 i-(defcvar "var_double" :double) Err bitreich.org 70 i-(defcvar "var_pointer" :pointer) Err bitreich.org 70 i-(defcvar "var_string" :string) Err bitreich.org 70 i-(defcvar "var_long_long" :long-long) Err bitreich.org 70 i-(defcvar "var_unsigned_long_long" :unsigned-long-long) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; The expected failures marked below result from this odd behaviour: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; (foreign-symbol-pointer "var_char") => NIL Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; (foreign-symbol-pointer "var_char" :library 'libtest) Err bitreich.org 70 i-;;; => # Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Why is this happening? --luis Err bitreich.org 70 i-#+lispworks Err bitreich.org 70 i-(mapc (lambda (x) (pushnew x rtest::*expected-failures*)) Err bitreich.org 70 i- '(foreign-globals.ref.char foreign-globals.get-var-pointer.1 Err bitreich.org 70 i- foreign-globals.get-var-pointer.2 foreign-globals.symbol-name Err bitreich.org 70 i- foreign-globals.read-only.1 )) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.ref.char Err bitreich.org 70 i- *char-var* Err bitreich.org 70 i- -127) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.ref.unsigned-char Err bitreich.org 70 i- *var-unsigned-char* Err bitreich.org 70 i- 255) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.ref.short Err bitreich.org 70 i- *var-short* Err bitreich.org 70 i- -32767) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.ref.unsigned-short Err bitreich.org 70 i- *var-unsigned-short* Err bitreich.org 70 i- 65535) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.ref.int Err bitreich.org 70 i- *var-int* Err bitreich.org 70 i- -32767) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.ref.unsigned-int Err bitreich.org 70 i- *var-unsigned-int* Err bitreich.org 70 i- 65535) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.ref.long Err bitreich.org 70 i- *var-long* Err bitreich.org 70 i- -2147483647) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.ref.unsigned-long Err bitreich.org 70 i- *var-unsigned-long* Err bitreich.org 70 i- 4294967295) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.ref.float Err bitreich.org 70 i- *var-float* Err bitreich.org 70 i- 42.0) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.ref.double Err bitreich.org 70 i- *var-double* Err bitreich.org 70 i- 42.0d0) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.ref.pointer Err bitreich.org 70 i- (null-pointer-p *var-pointer*) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.ref.string Err bitreich.org 70 i- *var-string* Err bitreich.org 70 i- "Hello, foreign world!") Err bitreich.org 70 i- Err bitreich.org 70 i-#+openmcl (push 'foreign-globals.set.long-long rt::*expected-failures*) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.ref.long-long Err bitreich.org 70 i- *var-long-long* Err bitreich.org 70 i- -9223372036854775807) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.ref.unsigned-long-long Err bitreich.org 70 i- *var-unsigned-long-long* Err bitreich.org 70 i- 18446744073709551615) Err bitreich.org 70 i- Err bitreich.org 70 i-;; The *.set.* tests restore the old values so that the *.ref.* Err bitreich.org 70 i-;; don't fail when re-run. Err bitreich.org 70 i-(defmacro with-old-value-restored ((place) &body body) Err bitreich.org 70 i- (let ((old (gensym))) Err bitreich.org 70 i- `(let ((,old ,place)) Err bitreich.org 70 i- (prog1 Err bitreich.org 70 i- (progn ,@body) Err bitreich.org 70 i- (setq ,place ,old))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.set.int Err bitreich.org 70 i- (with-old-value-restored (*var-int*) Err bitreich.org 70 i- (setq *var-int* 42) Err bitreich.org 70 i- *var-int*) Err bitreich.org 70 i- 42) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.set.string Err bitreich.org 70 i- (with-old-value-restored (*var-string*) Err bitreich.org 70 i- (setq *var-string* "Ehxosxangxo") Err bitreich.org 70 i- (prog1 Err bitreich.org 70 i- *var-string* Err bitreich.org 70 i- ;; free the string we just allocated Err bitreich.org 70 i- (foreign-free (mem-ref (get-var-pointer '*var-string*) :pointer)))) Err bitreich.org 70 i- "Ehxosxangxo") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.set.long-long Err bitreich.org 70 i- (with-old-value-restored (*var-long-long*) Err bitreich.org 70 i- (setq *var-long-long* -9223000000000005808) Err bitreich.org 70 i- *var-long-long*) Err bitreich.org 70 i- -9223000000000005808) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.get-var-pointer.1 Err bitreich.org 70 i- (pointerp (get-var-pointer '*char-var*)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.get-var-pointer.2 Err bitreich.org 70 i- (mem-ref (get-var-pointer '*char-var*) :char) Err bitreich.org 70 i- -127) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Symbol case. Err bitreich.org 70 i- Err bitreich.org 70 i-(defcvar "UPPERCASEINT1" :int) Err bitreich.org 70 i-(defcvar "UPPER_CASE_INT1" :int) Err bitreich.org 70 i-(defcvar "MiXeDCaSeInT1" :int) Err bitreich.org 70 i-(defcvar "MiXeD_CaSe_InT1" :int) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.ref.uppercaseint1 Err bitreich.org 70 i- *uppercaseint1* Err bitreich.org 70 i- 12345) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.ref.upper-case-int1 Err bitreich.org 70 i- *upper-case-int1* Err bitreich.org 70 i- 23456) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.ref.mixedcaseint1 Err bitreich.org 70 i- *mixedcaseint1* Err bitreich.org 70 i- 34567) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.ref.mixed-case-int1 Err bitreich.org 70 i- *mixed-case-int1* Err bitreich.org 70 i- 45678) Err bitreich.org 70 i- Err bitreich.org 70 i-(when (string= (symbol-name 'nil) "NIL") Err bitreich.org 70 i- (let ((*readtable* (copy-readtable))) Err bitreich.org 70 i- (setf (readtable-case *readtable*) :invert) Err bitreich.org 70 i- (eval (read-from-string "(defcvar \"UPPERCASEINT2\" :int)")) Err bitreich.org 70 i- (eval (read-from-string "(defcvar \"UPPER_CASE_INT2\" :int)")) Err bitreich.org 70 i- (eval (read-from-string "(defcvar \"MiXeDCaSeInT2\" :int)")) Err bitreich.org 70 i- (eval (read-from-string "(defcvar \"MiXeD_CaSe_InT2\" :int)")) Err bitreich.org 70 i- (setf (readtable-case *readtable*) :preserve) Err bitreich.org 70 i- (eval (read-from-string "(DEFCVAR \"UPPERCASEINT3\" :INT)")) Err bitreich.org 70 i- (eval (read-from-string "(DEFCVAR \"UPPER_CASE_INT3\" :INT)")) Err bitreich.org 70 i- (eval (read-from-string "(DEFCVAR \"MiXeDCaSeInT3\" :INT)")) Err bitreich.org 70 i- (eval (read-from-string "(DEFCVAR \"MiXeD_CaSe_InT3\" :INT)")))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; EVAL gets rid of SBCL's unreachable code warnings. Err bitreich.org 70 i-(when (string= (symbol-name (eval nil)) "nil") Err bitreich.org 70 i- (let ((*readtable* (copy-readtable))) Err bitreich.org 70 i- (setf (readtable-case *readtable*) :invert) Err bitreich.org 70 i- (eval (read-from-string "(DEFCVAR \"UPPERCASEINT2\" :INT)")) Err bitreich.org 70 i- (eval (read-from-string "(DEFCVAR \"UPPER_CASE_INT2\" :INT)")) Err bitreich.org 70 i- (eval (read-from-string "(DEFCVAR \"MiXeDCaSeInT2\" :INT)")) Err bitreich.org 70 i- (eval (read-from-string "(DEFCVAR \"MiXeD_CaSe_InT2\" :INT)")) Err bitreich.org 70 i- (setf (readtable-case *readtable*) :downcase) Err bitreich.org 70 i- (eval (read-from-string "(defcvar \"UPPERCASEINT3\" :int)")) Err bitreich.org 70 i- (eval (read-from-string "(defcvar \"UPPER_CASE_INT3\" :int)")) Err bitreich.org 70 i- (eval (read-from-string "(defcvar \"MiXeDCaSeInT3\" :int)")) Err bitreich.org 70 i- (eval (read-from-string "(defcvar \"MiXeD_CaSe_InT3\" :int)")))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.ref.uppercaseint2 Err bitreich.org 70 i- *uppercaseint2* Err bitreich.org 70 i- 12345) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.ref.upper-case-int2 Err bitreich.org 70 i- *upper-case-int2* Err bitreich.org 70 i- 23456) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.ref.mixedcaseint2 Err bitreich.org 70 i- *mixedcaseint2* Err bitreich.org 70 i- 34567) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.ref.mixed-case-int2 Err bitreich.org 70 i- *mixed-case-int2* Err bitreich.org 70 i- 45678) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.ref.uppercaseint3 Err bitreich.org 70 i- *uppercaseint3* Err bitreich.org 70 i- 12345) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.ref.upper-case-int3 Err bitreich.org 70 i- *upper-case-int3* Err bitreich.org 70 i- 23456) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.ref.mixedcaseint3 Err bitreich.org 70 i- *mixedcaseint3* Err bitreich.org 70 i- 34567) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.ref.mixed-case-int3 Err bitreich.org 70 i- *mixed-case-int3* Err bitreich.org 70 i- 45678) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; regression test: Err bitreich.org 70 i-;;; gracefully accept symbols in defcvar Err bitreich.org 70 i- Err bitreich.org 70 i-(defcvar *var-char* :char) Err bitreich.org 70 i-(defcvar var-char :char) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.symbol-name Err bitreich.org 70 i- (values *var-char* var-char) Err bitreich.org 70 i- -127 -127) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Namespace Err bitreich.org 70 i- Err bitreich.org 70 i-#-cffi-sys::flat-namespace Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (deftest foreign-globals.namespace.1 Err bitreich.org 70 i- (values Err bitreich.org 70 i- (mem-ref (foreign-symbol-pointer "var_char" :library 'libtest) :char) Err bitreich.org 70 i- (foreign-symbol-pointer "var_char" :library 'libtest2)) Err bitreich.org 70 i- -127 nil) Err bitreich.org 70 i- Err bitreich.org 70 i- (deftest foreign-globals.namespace.2 Err bitreich.org 70 i- (values Err bitreich.org 70 i- (mem-ref (foreign-symbol-pointer "ns_var" :library 'libtest) :boolean) Err bitreich.org 70 i- (mem-ref (foreign-symbol-pointer "ns_var" :library 'libtest2) :boolean)) Err bitreich.org 70 i- t nil) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; For its "default" module, Lispworks seems to cache lookups from Err bitreich.org 70 i- ;; the newest module tried. If a lookup happens to have failed Err bitreich.org 70 i- ;; subsequent lookups will fail even the symbol exists in other Err bitreich.org 70 i- ;; modules. So this test fails. Err bitreich.org 70 i- #+lispworks Err bitreich.org 70 i- (pushnew 'foreign-globals.namespace.3 regression-test::*expected-failures*) Err bitreich.org 70 i- Err bitreich.org 70 i- (deftest foreign-globals.namespace.3 Err bitreich.org 70 i- (values Err bitreich.org 70 i- (foreign-symbol-pointer "var_char" :library 'libtest2) Err bitreich.org 70 i- (mem-ref (foreign-symbol-pointer "var_char") :char)) Err bitreich.org 70 i- nil -127) Err bitreich.org 70 i- Err bitreich.org 70 i- (defcvar ("ns_var" *ns-var1* :library libtest) :boolean) Err bitreich.org 70 i- (defcvar ("ns_var" *ns-var2* :library libtest2) :boolean) Err bitreich.org 70 i- Err bitreich.org 70 i- (deftest foreign-globals.namespace.4 Err bitreich.org 70 i- (values *ns-var1* *ns-var2*) Err bitreich.org 70 i- t nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Read-only Err bitreich.org 70 i- Err bitreich.org 70 i-(defcvar ("var_char" *var-char-ro* :read-only t) :char Err bitreich.org 70 i- "docstring") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.read-only.1 Err bitreich.org 70 i- (values *var-char-ro* Err bitreich.org 70 i- (ignore-errors (setf *var-char-ro* 12))) Err bitreich.org 70 i- -127 nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest defcvar.docstring Err bitreich.org 70 i- (documentation '*var-char-ro* 'variable) Err bitreich.org 70 i- "docstring") Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Other tests Err bitreich.org 70 i- Err bitreich.org 70 i-;;; RT: FOREIGN-SYMBOL-POINTER shouldn't signal an error when passed Err bitreich.org 70 i-;;; an undefined variable. Err bitreich.org 70 i-(deftest foreign-globals.undefined.1 Err bitreich.org 70 i- (foreign-symbol-pointer "surely-undefined?") Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-globals.error.1 Err bitreich.org 70 i- (handler-case (foreign-symbol-pointer 'not-a-string) Err bitreich.org 70 i- (type-error () t)) Err bitreich.org 70 i- t) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/tests/fsbv.lisp b/3rdparties/software/cffi_0.20.0/tests/fsbv.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/tests/fsbv.lisp.gph bitreich.org 70 i@@ -1,199 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; fsbv.lisp --- Tests of foreign structure by value calls. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2011, Liam M. Healy Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-tests) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Requires struct.lisp Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "sumpair" :int Err bitreich.org 70 i- (p (:struct struct-pair))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "makepair" (:struct struct-pair) Err bitreich.org 70 i- (condition :bool)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "doublepair" (:struct struct-pair) Err bitreich.org 70 i- (p (:struct struct-pair))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "prodsumpair" :double Err bitreich.org 70 i- (p (:struct struct-pair+double))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "doublepairdouble" (:struct struct-pair+double) Err bitreich.org 70 i- (p (:struct struct-pair+double))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Call struct by value Err bitreich.org 70 i-(deftest fsbv.1 Err bitreich.org 70 i- (sumpair '(1 . 2)) Err bitreich.org 70 i- 3) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; See lp#1528719 Err bitreich.org 70 i-(deftest (fsbv.wfo :expected-to-fail t) Err bitreich.org 70 i- (with-foreign-object (arg '(:struct struct-pair)) Err bitreich.org 70 i- (convert-into-foreign-memory '(40 . 2) '(:struct struct-pair) arg) Err bitreich.org 70 i- (sumpair arg)) Err bitreich.org 70 i- 42) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Call and return struct by value Err bitreich.org 70 i-(deftest fsbv.2 Err bitreich.org 70 i- (doublepair '(1 . 2)) Err bitreich.org 70 i- (2 . 4)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; return struct by value Err bitreich.org 70 i-(deftest (fsbv.makepair.1 :expected-to-fail t) Err bitreich.org 70 i- (makepair nil) Err bitreich.org 70 i- (-127 . 43)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest (fsbv.makepair.2 :expected-to-fail t) Err bitreich.org 70 i- (makepair t) Err bitreich.org 70 i- (-127 . 42)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Call recursive structure by value Err bitreich.org 70 i-(deftest fsbv.3 Err bitreich.org 70 i- (prodsumpair '(pr (a 4 b 5) dbl 2.5d0)) Err bitreich.org 70 i- 22.5d0) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Call and return recursive structure by value Err bitreich.org 70 i-(deftest fsbv.4 Err bitreich.org 70 i- (let ((ans (doublepairdouble '(pr (a 4 b 5) dbl 2.5d0)))) Err bitreich.org 70 i- (values (getf (getf ans 'pr) 'a) Err bitreich.org 70 i- (getf (getf ans 'pr) 'b) Err bitreich.org 70 i- (getf ans 'dbl))) Err bitreich.org 70 i- 8 Err bitreich.org 70 i- 10 Err bitreich.org 70 i- 5.0d0) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct (struct-with-array :size 6) Err bitreich.org 70 i- (s1 (:array :char 6))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "zork" :void Err bitreich.org 70 i- (p (:struct struct-with-array))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Typedef fsbv test Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun ("sumpair" sumpair2) :int Err bitreich.org 70 i- (p struct-pair-typedef1)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest fsbv.5 Err bitreich.org 70 i- (sumpair2 '(1 . 2)) Err bitreich.org 70 i- 3) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "returnpairpointer" (:pointer (:struct struct-pair)) Err bitreich.org 70 i- (ignored (:struct struct-pair))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest fsbv.return-a-pointer Err bitreich.org 70 i- (let ((ptr (returnpairpointer '(1 . 2)))) Err bitreich.org 70 i- (+ (foreign-slot-value ptr '(:struct struct-pair) 'a) Err bitreich.org 70 i- (foreign-slot-value ptr '(:struct struct-pair) 'b))) Err bitreich.org 70 i- 42) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Test ulonglong on no-long-long implementations. Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "ullsum" :unsigned-long-long Err bitreich.org 70 i- (a :unsigned-long-long) (b :unsigned-long-long)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest fsbv.6 Err bitreich.org 70 i- (ullsum #x10DEADBEEF #x2300000000) Err bitreich.org 70 i- #x33DEADBEEF) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Combine structures by value with a string argument Err bitreich.org 70 i-(defcfun "stringlenpair" (:struct struct-pair) Err bitreich.org 70 i- (s :string) Err bitreich.org 70 i- (p (:struct struct-pair))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest fsbv.7 Err bitreich.org 70 i- (stringlenpair "abc" '(1 . 2)) Err bitreich.org 70 i- (3 . 6)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Combine structures by value with an enum argument Err bitreich.org 70 i-(defcfun "enumpair" (:int) Err bitreich.org 70 i- (e numeros) Err bitreich.org 70 i- (p (:struct struct-pair))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest fsbv.8 Err bitreich.org 70 i- (enumpair :two '(1 . 2)) Err bitreich.org 70 i- 5) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; returning struct with bitfield member (bug #1474631) Err bitreich.org 70 i-(defbitfield (struct-bitfield :unsigned-int) Err bitreich.org 70 i- (:a 1) Err bitreich.org 70 i- (:b 2)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct bitfield-struct Err bitreich.org 70 i- (b struct-bitfield)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "structbitfield" (:struct bitfield-struct) Err bitreich.org 70 i- (x :unsigned-int)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype struct-bitfield-typedef struct-bitfield) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct bitfield-struct.2 Err bitreich.org 70 i- (b struct-bitfield-typedef)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun ("structbitfield" structbitfield.2) (:struct bitfield-struct.2) Err bitreich.org 70 i- (x :unsigned-int)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; these would get stuck in an infinite loop previously Err bitreich.org 70 i-(deftest fsbv.struct-bitfield.0 Err bitreich.org 70 i- (structbitfield 0) Err bitreich.org 70 i- (b nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest fsbv.struct-bitfield.1 Err bitreich.org 70 i- (structbitfield 1) Err bitreich.org 70 i- (b (:a))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest fsbv.struct-bitfield.2 Err bitreich.org 70 i- (structbitfield 2) Err bitreich.org 70 i- (b (:b))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest fsbv.struct-bitfield.3 Err bitreich.org 70 i- (structbitfield.2 2) Err bitreich.org 70 i- (b (:b))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Test for a discrepancy between normal and fsbv return values Err bitreich.org 70 i-(cffi:define-foreign-type int-return-code (cffi::foreign-type-alias) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:default-initargs :actual-type (cffi::parse-type :int)) Err bitreich.org 70 i- (:simple-parser int-return-code)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod cffi:expand-from-foreign (value (type int-return-code)) Err bitreich.org 70 i- ;; NOTE: strictly speaking it should be Err bitreich.org 70 i- ;; (cffi:convert-from-foreign ,value :int), but it's irrelevant in this case Err bitreich.org 70 i- `(let ((return-code ,value)) Err bitreich.org 70 i- (check-type return-code integer) Err bitreich.org 70 i- return-code)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun (noargs-with-typedef "noargs") int-return-code) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest fsbv.noargs-with-typedef ; for reference, not an FSBV call Err bitreich.org 70 i- (noargs-with-typedef) Err bitreich.org 70 i- 42) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun (sumpair-with-typedef "sumpair") int-return-code Err bitreich.org 70 i- (p (:struct struct-pair))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest (fsbv.return-value-typedef) Err bitreich.org 70 i- (sumpair-with-typedef '(40 . 2)) Err bitreich.org 70 i- 42) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/tests/funcall.lisp b/3rdparties/software/cffi_0.20.0/tests/funcall.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/tests/funcall.lisp.gph bitreich.org 70 i@@ -1,245 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; funcall.lisp --- Tests function calling. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Copyright (C) 2005-2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-tests) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Calling with Built-In C Types Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Tests calling standard C library functions both passing and Err bitreich.org 70 i-;;; returning each built-in type. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Don't run these tests if the implementation does not support Err bitreich.org 70 i-;;; foreign-funcall. Err bitreich.org 70 i-#-cffi-sys::no-foreign-funcall Err bitreich.org 70 i-(progn Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest funcall.char Err bitreich.org 70 i- (foreign-funcall "toupper" :char (char-code #\a) :char) Err bitreich.org 70 i- #.(char-code #\A)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest funcall.int.1 Err bitreich.org 70 i- (foreign-funcall "abs" :int -100 :int) Err bitreich.org 70 i- 100) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun funcall-abs (n) Err bitreich.org 70 i- (foreign-funcall "abs" :int n :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; regression test: lispworks's %foreign-funcall based on creating Err bitreich.org 70 i-;;; and caching foreign-funcallables at macro-expansion time. Err bitreich.org 70 i-(deftest funcall.int.2 Err bitreich.org 70 i- (funcall-abs -42) Err bitreich.org 70 i- 42) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest funcall.long Err bitreich.org 70 i- (foreign-funcall "labs" :long -131072 :long) Err bitreich.org 70 i- 131072) Err bitreich.org 70 i- Err bitreich.org 70 i-#-cffi-sys::no-long-long Err bitreich.org 70 i-(deftest funcall.long-long Err bitreich.org 70 i- (foreign-funcall "my_llabs" :long-long -9223372036854775807 :long-long) Err bitreich.org 70 i- 9223372036854775807) Err bitreich.org 70 i- Err bitreich.org 70 i-#-cffi-sys::no-long-long Err bitreich.org 70 i-(deftest funcall.unsigned-long-long Err bitreich.org 70 i- (let ((ullong-max (1- (expt 2 (* 8 (foreign-type-size :unsigned-long-long)))))) Err bitreich.org 70 i- (eql ullong-max Err bitreich.org 70 i- (foreign-funcall "ullong" :unsigned-long-long ullong-max Err bitreich.org 70 i- :unsigned-long-long))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest funcall.float Err bitreich.org 70 i- (foreign-funcall "my_sqrtf" :float 16.0 :float) Err bitreich.org 70 i- 4.0) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest funcall.double Err bitreich.org 70 i- (foreign-funcall "sqrt" :double 36.0d0 :double) Err bitreich.org 70 i- 6.0d0) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and scl long-float) Err bitreich.org 70 i-(deftest funcall.long-double Err bitreich.org 70 i- (foreign-funcall "sqrtl" :long-double 36.0l0 :long-double) Err bitreich.org 70 i- 6.0l0) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest funcall.string.1 Err bitreich.org 70 i- (foreign-funcall "strlen" :string "Hello" :int) Err bitreich.org 70 i- 5) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest funcall.string.2 Err bitreich.org 70 i- (with-foreign-pointer-as-string (s 100) Err bitreich.org 70 i- (setf (mem-ref s :char) 0) Err bitreich.org 70 i- (foreign-funcall "strcpy" :pointer s :string "Hello" :pointer) Err bitreich.org 70 i- (foreign-funcall "strcat" :pointer s :string ", world!" :pointer)) Err bitreich.org 70 i- "Hello, world!") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest funcall.string.3 Err bitreich.org 70 i- (with-foreign-pointer (ptr 100) Err bitreich.org 70 i- (lisp-string-to-foreign "Hello, " ptr 8) Err bitreich.org 70 i- (foreign-funcall "strcat" :pointer ptr :string "world!" :string)) Err bitreich.org 70 i- "Hello, world!") Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Calling Varargs Functions Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest funcall.varargs.nostdlib Err bitreich.org 70 i- (foreign-funcall-varargs Err bitreich.org 70 i- "sum_double_arbitrary" (:int 26) Err bitreich.org 70 i- :double 3.14d0 :double 3.14d0 :double 3.14d0 :double 3.14d0 Err bitreich.org 70 i- :double 3.14d0 :double 3.14d0 :double 3.14d0 :double 3.14d0 Err bitreich.org 70 i- :double 3.14d0 :double 3.14d0 :double 3.14d0 :double 3.14d0 Err bitreich.org 70 i- :double 3.14d0 :double 3.14d0 :double 3.14d0 :double 3.14d0 Err bitreich.org 70 i- :double 3.14d0 :double 3.14d0 :double 3.14d0 :double 3.14d0 Err bitreich.org 70 i- :double 3.14d0 :double 3.14d0 :double 3.14d0 :double 3.14d0 Err bitreich.org 70 i- :double 3.14d0 :double 3.14d0 Err bitreich.org 70 i- :double) Err bitreich.org 70 i- 81.64d0) Err bitreich.org 70 i- Err bitreich.org 70 i-;; The CHAR argument must be passed as :INT because chars are promoted Err bitreich.org 70 i-;; to ints when passed as variable arguments. Err bitreich.org 70 i-(deftest funcall.varargs.char Err bitreich.org 70 i- (with-foreign-pointer-as-string (s 100) Err bitreich.org 70 i- (setf (mem-ref s :char) 0) Err bitreich.org 70 i- (foreign-funcall-varargs Err bitreich.org 70 i- "sprintf" (:pointer s :string "%c") :int 65 :int)) Err bitreich.org 70 i- "A") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest funcall.varargs.int Err bitreich.org 70 i- (with-foreign-pointer-as-string (s 100) Err bitreich.org 70 i- (setf (mem-ref s :char) 0) Err bitreich.org 70 i- (foreign-funcall-varargs Err bitreich.org 70 i- "sprintf" (:pointer s :string "%d") :int 1000 :int)) Err bitreich.org 70 i- "1000") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest funcall.varargs.long Err bitreich.org 70 i- (with-foreign-pointer-as-string (s 100) Err bitreich.org 70 i- (setf (mem-ref s :char) 0) Err bitreich.org 70 i- (foreign-funcall-varargs Err bitreich.org 70 i- "sprintf" (:pointer s :string "%ld") Err bitreich.org 70 i- :long 131072 :int)) Err bitreich.org 70 i- "131072") Err bitreich.org 70 i- Err bitreich.org 70 i-;;; There is no FUNCALL.VARARGS.FLOAT as floats are promoted to double Err bitreich.org 70 i-;;; when passed as variable arguments. Currently this fails in SBCL Err bitreich.org 70 i-;;; and CMU CL on Darwin/ppc. Err bitreich.org 70 i-(deftest funcall.varargs.double Err bitreich.org 70 i- (with-foreign-pointer-as-string (s 100) Err bitreich.org 70 i- (setf (mem-ref s :char) 0) Err bitreich.org 70 i- (foreign-funcall-varargs Err bitreich.org 70 i- "sprintf" (:pointer s :string "%.2f") :double (coerce pi 'double-float) :int)) Err bitreich.org 70 i- "3.14") Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and scl long-float) Err bitreich.org 70 i-(deftest funcall.varargs.long-double Err bitreich.org 70 i- (with-foreign-pointer-as-string (s 100) Err bitreich.org 70 i- (setf (mem-ref s :char) 0) Err bitreich.org 70 i- (foreign-funcall-varargs Err bitreich.org 70 i- "sprintf" :pointer s :string "%.2Lf" :long-double pi :int)) Err bitreich.org 70 i- "3.14") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest funcall.varargs.string Err bitreich.org 70 i- (with-foreign-pointer-as-string (s 100) Err bitreich.org 70 i- (setf (mem-ref s :char) 0) Err bitreich.org 70 i- (foreign-funcall-varargs Err bitreich.org 70 i- "sprintf" (:pointer s :string "%s, %s!") :string "Hello" :string "world" :int)) Err bitreich.org 70 i- "Hello, world!") Err bitreich.org 70 i- Err bitreich.org 70 i-;;; See DEFCFUN.DOUBLE26. Err bitreich.org 70 i-(deftest funcall.double26 Err bitreich.org 70 i- (foreign-funcall "sum_double26" Err bitreich.org 70 i- :double 3.14d0 :double 3.14d0 :double 3.14d0 Err bitreich.org 70 i- :double 3.14d0 :double 3.14d0 :double 3.14d0 Err bitreich.org 70 i- :double 3.14d0 :double 3.14d0 :double 3.14d0 Err bitreich.org 70 i- :double 3.14d0 :double 3.14d0 :double 3.14d0 Err bitreich.org 70 i- :double 3.14d0 :double 3.14d0 :double 3.14d0 Err bitreich.org 70 i- :double 3.14d0 :double 3.14d0 :double 3.14d0 Err bitreich.org 70 i- :double 3.14d0 :double 3.14d0 :double 3.14d0 Err bitreich.org 70 i- :double 3.14d0 :double 3.14d0 :double 3.14d0 Err bitreich.org 70 i- :double 3.14d0 :double 3.14d0 :double) Err bitreich.org 70 i- 81.64d0) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; See DEFCFUN.FLOAT26. Err bitreich.org 70 i-(deftest funcall.float26 Err bitreich.org 70 i- (foreign-funcall "sum_float26" Err bitreich.org 70 i- :float 5.0 :float 5.0 :float 5.0 :float 5.0 :float 5.0 Err bitreich.org 70 i- :float 5.0 :float 5.0 :float 5.0 :float 5.0 :float 5.0 Err bitreich.org 70 i- :float 5.0 :float 5.0 :float 5.0 :float 5.0 :float 5.0 Err bitreich.org 70 i- :float 5.0 :float 5.0 :float 5.0 :float 5.0 :float 5.0 Err bitreich.org 70 i- :float 5.0 :float 5.0 :float 5.0 :float 5.0 :float 5.0 Err bitreich.org 70 i- :float 5.0 :float) Err bitreich.org 70 i- 130.0) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Funcalling a pointer. Err bitreich.org 70 i-(deftest funcall.f-s-p.1 Err bitreich.org 70 i- (foreign-funcall-pointer (foreign-symbol-pointer "abs") nil :int -42 :int) Err bitreich.org 70 i- 42) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Namespaces Err bitreich.org 70 i- Err bitreich.org 70 i-#-cffi-sys::flat-namespace Err bitreich.org 70 i-(deftest funcall.namespace.1 Err bitreich.org 70 i- (values (foreign-funcall ("ns_function" :library libtest) :boolean) Err bitreich.org 70 i- (foreign-funcall ("ns_function" :library libtest2) :boolean)) Err bitreich.org 70 i- t nil) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# stdcall Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and x86 windows (not cffi-sys::no-stdcall)) Err bitreich.org 70 i-(deftest funcall.stdcall.1 Err bitreich.org 70 i- (flet ((fun () Err bitreich.org 70 i- (foreign-funcall ("stdcall_fun@12" :convention :stdcall) Err bitreich.org 70 i- :int 1 :int 2 :int 3 :int))) Err bitreich.org 70 i- (loop repeat 100 do (fun) Err bitreich.org 70 i- finally (return (fun)))) Err bitreich.org 70 i- 6) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; RT: NIL arguments are skipped Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *nil-skipped*) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-foreign-type check-nil-skip-type () Err bitreich.org 70 i- () Err bitreich.org 70 i- (:actual-type :pointer) Err bitreich.org 70 i- (:simple-parser check-nil-skip-type)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod expand-to-foreign (val (type check-nil-skip-type)) Err bitreich.org 70 i- (declare (ignore val)) Err bitreich.org 70 i- (setf *nil-skipped* nil) Err bitreich.org 70 i- (null-pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest funcall.nil-skip Err bitreich.org 70 i- (let ((*nil-skipped* t)) Err bitreich.org 70 i- (compile nil '(lambda () Err bitreich.org 70 i- (foreign-funcall "abs" check-nil-skip-type nil))) Err bitreich.org 70 i- *nil-skipped*) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; RT: CLISP returns NIL instead of a null-pointer Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest funcall.pointer-not-nil Err bitreich.org 70 i- (not (null (foreign-funcall "strchr" :string "" :int 1 :pointer))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-) ;; #-cffi-sys::no-foreign-funcall Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/tests/grovel.lisp b/3rdparties/software/cffi_0.20.0/tests/grovel.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/tests/grovel.lisp.gph bitreich.org 70 i@@ -1,96 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; grovel.lisp --- CFFI-Grovel tests. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2014, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-tests) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest %invoke Err bitreich.org 70 i- (cffi-grovel::invoke "echo" "test") Err bitreich.org 70 i- nil nil 0) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun grovel-forms (forms &key (quiet t)) Err bitreich.org 70 i- (uiop:with-temporary-file (:stream grovel-stream :pathname grovel-file) Err bitreich.org 70 i- (with-standard-io-syntax Err bitreich.org 70 i- (with-open-stream (*standard-output* grovel-stream) Err bitreich.org 70 i- (let ((*package* (find-package :keyword))) Err bitreich.org 70 i- (mapc #'write forms)))) Err bitreich.org 70 i- (let ((lisp-file (let ((*debug-io* (if quiet (make-broadcast-stream) *debug-io*))) Err bitreich.org 70 i- (cffi-grovel:process-grovel-file grovel-file)))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (load lisp-file) Err bitreich.org 70 i- (uiop:delete-file-if-exists lisp-file))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun bug-1395242-helper (enum-type base-type constant-name) Err bitreich.org 70 i- (check-type enum-type (member constantenum cenum)) Err bitreich.org 70 i- (check-type base-type string) Err bitreich.org 70 i- (check-type constant-name string) Err bitreich.org 70 i- (let ((enum-name (intern (symbol-name (gensym)))) Err bitreich.org 70 i- (base-type-name (intern (symbol-name (gensym))))) Err bitreich.org 70 i- (grovel-forms `((ctype ,base-type-name ,base-type) Err bitreich.org 70 i- (,enum-type (,enum-name :base-type ,base-type-name) Err bitreich.org 70 i- ((:value ,constant-name))))) Err bitreich.org 70 i- (cffi:foreign-enum-value enum-name :value))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest bug-1395242 Err bitreich.org 70 i- (labels Err bitreich.org 70 i- ((process-expression (expression) Err bitreich.org 70 i- (loop for enum-type in '(constantenum cenum) Err bitreich.org 70 i- always (destructuring-bind (base-type &rest evaluations) expression Err bitreich.org 70 i- (loop for (name expected-value) in evaluations Err bitreich.org 70 i- for actual-value = (bug-1395242-helper enum-type base-type name) Err bitreich.org 70 i- always (or (= expected-value actual-value) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (format *error-output* Err bitreich.org 70 i- "Test failed for case: ~A, ~A, ~A (expected ~A, actual ~A)~%" Err bitreich.org 70 i- enum-type base-type name expected-value actual-value) Err bitreich.org 70 i- nil))))))) Err bitreich.org 70 i- (every #'process-expression Err bitreich.org 70 i- '(("uint8_t" ("UINT8_MAX" 255) ("INT8_MAX" 127) ("INT8_MIN" 128)) Err bitreich.org 70 i- ("int8_t" ("INT8_MIN" -128) ("INT8_MAX" 127) ("UINT8_MAX" -1)) Err bitreich.org 70 i- ("uint16_t" ("UINT16_MAX" 65535) ("INT8_MIN" 65408)) Err bitreich.org 70 i- ("int16_t" ("INT16_MIN" -32768) ("INT16_MAX" 32767) ("UINT16_MAX" -1)) Err bitreich.org 70 i- ("uint32_t" ("UINT32_MAX" 4294967295) ("INT8_MIN" 4294967168)) Err bitreich.org 70 i- ("int32_t" ("INT32_MIN" -2147483648) ("INT32_MAX" 2147483647))))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *grovelled-features*) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest grovel-feature Err bitreich.org 70 i- (let ((*grovelled-features* nil)) Err bitreich.org 70 i- (grovel-forms `((in-package :cffi-tests) Err bitreich.org 70 i- (include "limits.h") Err bitreich.org 70 i- (feature grovel-test-feature "CHAR_BIT") Err bitreich.org 70 i- (feature :char-bit "CHAR_BIT" Err bitreich.org 70 i- :feature-list *grovelled-features*) Err bitreich.org 70 i- (feature :inexistent-grovel-feature Err bitreich.org 70 i- "INEXISTENT_CFFI_GROVEL_FEATURE" Err bitreich.org 70 i- :feature-list *grovelled-features*))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (values (and (member 'grovel-test-feature *features*) t) Err bitreich.org 70 i- (and (member :char-bit *grovelled-features*) t) Err bitreich.org 70 i- (member :inexistent-grovel-feature *grovelled-features*)) Err bitreich.org 70 i- (alexandria:removef *features* 'grovel-test-feature))) Err bitreich.org 70 i- t t nil) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/tests/libfsbv.c b/3rdparties/software/cffi_0.20.0/tests/libfsbv.c /scm/clic/file/3rdparties/software/cffi_0.20.0/tests/libfsbv.c.gph bitreich.org 70 i@@ -1,179 +0,0 @@ Err bitreich.org 70 i-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil -*- Err bitreich.org 70 i- * Err bitreich.org 70 i- * libfsbv.c --- auxiliary C lib for testing foreign structure by value calls Err bitreich.org 70 i- * Err bitreich.org 70 i- * Copyright (C) 2011, 2015 Liam M. Healy Err bitreich.org 70 i- * Err bitreich.org 70 i- * Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i- * obtaining a copy of this software and associated documentation Err bitreich.org 70 i- * files (the "Software"), to deal in the Software without Err bitreich.org 70 i- * restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i- * modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i- * of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i- * furnished to do so, subject to the following conditions: Err bitreich.org 70 i- * Err bitreich.org 70 i- * The above copyright notice and this permission notice shall be Err bitreich.org 70 i- * included in all copies or substantial portions of the Software. Err bitreich.org 70 i- * Err bitreich.org 70 i- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i- * DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- */ Err bitreich.org 70 i- Err bitreich.org 70 i-#ifdef WIN32 Err bitreich.org 70 i-#define DLLEXPORT __declspec(dllexport) Err bitreich.org 70 i-#else Err bitreich.org 70 i-#define DLLEXPORT Err bitreich.org 70 i-#endif Err bitreich.org 70 i- Err bitreich.org 70 i-#include Err bitreich.org 70 i-#include Err bitreich.org 70 i-#include Err bitreich.org 70 i-#include Err bitreich.org 70 i-#include Err bitreich.org 70 i-#include Err bitreich.org 70 i-#include Err bitreich.org 70 i- Err bitreich.org 70 i-/* MSVC doesn't have stdint.h and uses a different syntax for stdcall */ Err bitreich.org 70 i-#ifndef _MSC_VER Err bitreich.org 70 i-#include Err bitreich.org 70 i-#endif Err bitreich.org 70 i- Err bitreich.org 70 i-#ifdef WIN32 Err bitreich.org 70 i-#ifdef _MSC_VER Err bitreich.org 70 i-#define STDCALL __stdcall Err bitreich.org 70 i-#else Err bitreich.org 70 i-#define STDCALL __attribute__((stdcall)) Err bitreich.org 70 i-#endif Err bitreich.org 70 i-#else Err bitreich.org 70 i-#define STDCALL Err bitreich.org 70 i-#endif Err bitreich.org 70 i- Err bitreich.org 70 i-struct struct_pair { Err bitreich.org 70 i- int a; Err bitreich.org 70 i- int b; Err bitreich.org 70 i-}; Err bitreich.org 70 i- Err bitreich.org 70 i-struct struct_pair_double { Err bitreich.org 70 i- struct struct_pair pr; Err bitreich.org 70 i- double dbl; Err bitreich.org 70 i-}; Err bitreich.org 70 i- Err bitreich.org 70 i-typedef enum { Err bitreich.org 70 i- ONE = 1, Err bitreich.org 70 i- TWO, Err bitreich.org 70 i- THREE, Err bitreich.org 70 i- FOUR, Err bitreich.org 70 i- FORTY_ONE = 41, Err bitreich.org 70 i- FORTY_TWO Err bitreich.org 70 i-} numeros; Err bitreich.org 70 i- Err bitreich.org 70 i-int sumpair (struct struct_pair sp); Err bitreich.org 70 i-int enumpair (numeros mynum, struct struct_pair sp); Err bitreich.org 70 i-struct struct_pair doublepair (struct struct_pair dp); Err bitreich.org 70 i-double prodsumpair (struct struct_pair_double spd); Err bitreich.org 70 i-struct struct_pair_double doublepairdouble (struct struct_pair_double pd); Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-int sumpair (struct struct_pair sp) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return sp.a + sp.b; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-int enumpair (numeros mynum, struct struct_pair sp) Err bitreich.org 70 i-{ Err bitreich.org 70 i- if ( mynum == ONE ) Err bitreich.org 70 i- { Err bitreich.org 70 i- return sp.a + sp.b; Err bitreich.org 70 i- } Err bitreich.org 70 i- else if ( mynum == TWO ) Err bitreich.org 70 i- { Err bitreich.org 70 i- return sp.a + 2*sp.b; Err bitreich.org 70 i- } Err bitreich.org 70 i- else if ( mynum == THREE ) Err bitreich.org 70 i- { Err bitreich.org 70 i- return 2*sp.a + sp.b; Err bitreich.org 70 i- } Err bitreich.org 70 i- else if ( mynum == FOUR ) Err bitreich.org 70 i- { Err bitreich.org 70 i- return 2*sp.a + 2*sp.b; Err bitreich.org 70 i- } Err bitreich.org 70 i- else Err bitreich.org 70 i- { Err bitreich.org 70 i- return 41*sp.a + 42*sp.b; Err bitreich.org 70 i- } Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-struct struct_pair makepair (bool cond) Err bitreich.org 70 i-{ Err bitreich.org 70 i- struct struct_pair ret; Err bitreich.org 70 i- ret.a = -127; Err bitreich.org 70 i- ret.b = cond ? 42 : 43; Err bitreich.org 70 i- return ret; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-const struct struct_pair static_pair = { 40, 2}; Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-struct struct_pair * returnpairpointer (struct struct_pair ignored) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return &static_pair; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-struct struct_pair doublepair (struct struct_pair dp) Err bitreich.org 70 i-{ Err bitreich.org 70 i- struct struct_pair ret; Err bitreich.org 70 i- ret.a = 2*dp.a; Err bitreich.org 70 i- ret.b = 2*dp.b; Err bitreich.org 70 i- return ret; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-double prodsumpair (struct struct_pair_double pd) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return pd.dbl * sumpair(pd.pr); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-struct struct_pair_double doublepairdouble (struct struct_pair_double pd) Err bitreich.org 70 i-{ Err bitreich.org 70 i- struct struct_pair_double ret; Err bitreich.org 70 i- ret.pr = doublepair(pd.pr); Err bitreich.org 70 i- ret.dbl = 2*pd.dbl; Err bitreich.org 70 i- return ret; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-unsigned long long ullsum (unsigned long long a, unsigned long long b) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return a + b; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-struct struct_pair stringlenpair (char *string, struct struct_pair dp) Err bitreich.org 70 i-{ Err bitreich.org 70 i- struct struct_pair ret; Err bitreich.org 70 i- int len = strlen(string); Err bitreich.org 70 i- ret.a = len*dp.a; Err bitreich.org 70 i- ret.b = len*dp.b; Err bitreich.org 70 i- return ret; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-struct bitfield_struct { Err bitreich.org 70 i- unsigned int b; Err bitreich.org 70 i-}; Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-struct bitfield_struct structbitfield (unsigned int x) { Err bitreich.org 70 i- struct bitfield_struct ret; Err bitreich.org 70 i- ret.b = x; Err bitreich.org 70 i- return ret; Err bitreich.org 70 i-} Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/tests/libtest.c b/3rdparties/software/cffi_0.20.0/tests/libtest.c /scm/clic/file/3rdparties/software/cffi_0.20.0/tests/libtest.c.gph bitreich.org 70 i@@ -1,985 +0,0 @@ Err bitreich.org 70 i-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil -*- Err bitreich.org 70 i- * Err bitreich.org 70 i- * libtest.c --- auxiliary C lib for testing purposes Err bitreich.org 70 i- * Err bitreich.org 70 i- * Copyright (C) 2005-2007, Luis Oliveira Err bitreich.org 70 i- * Err bitreich.org 70 i- * Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i- * obtaining a copy of this software and associated documentation Err bitreich.org 70 i- * files (the "Software"), to deal in the Software without Err bitreich.org 70 i- * restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i- * modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i- * of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i- * furnished to do so, subject to the following conditions: Err bitreich.org 70 i- * Err bitreich.org 70 i- * The above copyright notice and this permission notice shall be Err bitreich.org 70 i- * included in all copies or substantial portions of the Software. Err bitreich.org 70 i- * Err bitreich.org 70 i- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i- * DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- */ Err bitreich.org 70 i- Err bitreich.org 70 i-#ifdef WIN32 Err bitreich.org 70 i-#define DLLEXPORT __declspec(dllexport) Err bitreich.org 70 i-#else Err bitreich.org 70 i-#define DLLEXPORT Err bitreich.org 70 i-#endif Err bitreich.org 70 i- Err bitreich.org 70 i-#include Err bitreich.org 70 i-#include Err bitreich.org 70 i-#include Err bitreich.org 70 i-#include Err bitreich.org 70 i-#include Err bitreich.org 70 i-#include Err bitreich.org 70 i-#include Err bitreich.org 70 i-#include Err bitreich.org 70 i- Err bitreich.org 70 i-/* MSVC doesn't have stdint.h and uses a different syntax for stdcall */ Err bitreich.org 70 i-#ifndef _MSC_VER Err bitreich.org 70 i-#include Err bitreich.org 70 i-#endif Err bitreich.org 70 i- Err bitreich.org 70 i-#ifdef WIN32 Err bitreich.org 70 i-#ifdef _MSC_VER Err bitreich.org 70 i-#define STDCALL __stdcall Err bitreich.org 70 i-#else Err bitreich.org 70 i-#define STDCALL __attribute__((stdcall)) Err bitreich.org 70 i-#endif Err bitreich.org 70 i-#else Err bitreich.org 70 i-#define STDCALL Err bitreich.org 70 i-#endif Err bitreich.org 70 i- Err bitreich.org 70 i-/* Err bitreich.org 70 i- * Some functions that aren't available on WIN32 Err bitreich.org 70 i- */ Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-float my_sqrtf(float n) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return (float) sqrt((double) n); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-char *my_strdup(const char *str) Err bitreich.org 70 i-{ Err bitreich.org 70 i- char *p = malloc(strlen(str) + 1); Err bitreich.org 70 i- strcpy(p, str); Err bitreich.org 70 i- return p; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-void my_strfree(char *str) Err bitreich.org 70 i-{ Err bitreich.org 70 i- free(str); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-long long my_llabs(long long n) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return n < 0 ? -n : n; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-unsigned long long ullong(unsigned long long n) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return n == ULLONG_MAX ? n : 42; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-/* Err bitreich.org 70 i- * Foreign Globals Err bitreich.org 70 i- * Err bitreich.org 70 i- * (var_int is used in MISC-TYPES.EXPAND.3 as well) Err bitreich.org 70 i- */ Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT char * dll_version = "20120107"; Err bitreich.org 70 i- Err bitreich.org 70 i-/* TODO: look into signed char vs. unsigned char issue */ Err bitreich.org 70 i-DLLEXPORT char var_char = -127; Err bitreich.org 70 i-DLLEXPORT unsigned char var_unsigned_char = 255; Err bitreich.org 70 i-DLLEXPORT short var_short = -32767; Err bitreich.org 70 i-DLLEXPORT unsigned short var_unsigned_short = 65535; Err bitreich.org 70 i-DLLEXPORT int var_int = -32767; Err bitreich.org 70 i-DLLEXPORT unsigned int var_unsigned_int = 65535; Err bitreich.org 70 i-DLLEXPORT long var_long = -2147483647L; Err bitreich.org 70 i-DLLEXPORT unsigned long var_unsigned_long = 4294967295UL; Err bitreich.org 70 i-DLLEXPORT float var_float = 42.0f; Err bitreich.org 70 i-DLLEXPORT double var_double = 42.0; Err bitreich.org 70 i-DLLEXPORT void * var_pointer = NULL; Err bitreich.org 70 i-DLLEXPORT char * var_string = "Hello, foreign world!"; Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT long long var_long_long = -9223372036854775807LL; Err bitreich.org 70 i-DLLEXPORT unsigned long long var_unsigned_long_long = 18446744073709551615ULL; Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT float float_max = FLT_MAX; Err bitreich.org 70 i-DLLEXPORT float float_min = FLT_MIN; Err bitreich.org 70 i-DLLEXPORT double double_max = DBL_MAX; Err bitreich.org 70 i-DLLEXPORT double double_min = DBL_MIN; Err bitreich.org 70 i- Err bitreich.org 70 i-/* Err bitreich.org 70 i- * Callbacks Err bitreich.org 70 i- */ Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-int expect_char_sum(char (*f)(char, char)) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return f('a', 3) == 'd'; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-int expect_unsigned_char_sum(unsigned char (*f)(unsigned char, unsigned char)) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return f(UCHAR_MAX-1, 1) == UCHAR_MAX; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-int expect_short_sum(short (*f)(short a, short b)) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return f(SHRT_MIN+1, -1) == SHRT_MIN; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-int expect_unsigned_short_sum(unsigned short (*f)(unsigned short, Err bitreich.org 70 i- unsigned short)) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return f(USHRT_MAX-1, 1) == USHRT_MAX; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-/* used in MISC-TYPES.EXPAND.4 as well */ Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-int expect_int_sum(int (*f)(int, int)) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return f(INT_MIN+1, -1) == INT_MIN; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-int expect_unsigned_int_sum(unsigned int (*f)(unsigned int, unsigned int)) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return f(UINT_MAX-1, 1) == UINT_MAX; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-int expect_long_sum(long (*f)(long, long)) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return f(LONG_MIN+1, -1) == LONG_MIN; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-int expect_unsigned_long_sum(unsigned long (*f)(unsigned long, unsigned long)) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return f(ULONG_MAX-1, 1) == ULONG_MAX; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-int expect_long_long_sum(long long (*f)(long long, long long)) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return f(LLONG_MIN+1, -1) == LLONG_MIN; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-int expect_unsigned_long_long_sum (unsigned long long Err bitreich.org 70 i- (*f)(unsigned long long, unsigned long long)) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return f(ULLONG_MAX-1, 1) == ULLONG_MAX; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-int expect_float_sum(float (*f)(float, float)) Err bitreich.org 70 i-{ Err bitreich.org 70 i- /*printf("\n>>> FLOAT: %f <<<\n", f(20.0f, 22.0f));*/ Err bitreich.org 70 i- return f(20.0f, 22.0f) == 42.0f; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-int expect_double_sum(double (*f)(double, double)) Err bitreich.org 70 i-{ Err bitreich.org 70 i- /*printf("\n>>> DOUBLE: %f<<<\n", f(-20.0, -22.0));*/ Err bitreich.org 70 i- return f(-20.0, -22.0) == -42.0; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-int expect_long_double_sum(long double (*f)(long double, long double)) Err bitreich.org 70 i-{ Err bitreich.org 70 i- /*printf("\n>>> DOUBLE: %f<<<\n", f(-20.0, -22.0));*/ Err bitreich.org 70 i- return f(-20.0, -22.0) == -42.0; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-int expect_pointer_sum(void* (*f)(void*, int)) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return f(NULL, 0xDEAD) == (void *) 0xDEAD; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-int expect_strcat(char* (*f)(char*, char*)) Err bitreich.org 70 i-{ Err bitreich.org 70 i- char *ret = f("Hello, ", "C world!"); Err bitreich.org 70 i- int res = strcmp(ret, "Hello, C world!") == 0; Err bitreich.org 70 i- /* commented out as a quick fix on platforms that don't Err bitreich.org 70 i- foreign allocate in C malloc space. */ Err bitreich.org 70 i- /*free(ret);*/ /* is this allowed? */ Err bitreich.org 70 i- return res; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-void pass_int_ref(void (*f)(int*)) Err bitreich.org 70 i-{ Err bitreich.org 70 i- int x = 1984; Err bitreich.org 70 i- f(&x); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-/* Err bitreich.org 70 i- * Enums Err bitreich.org 70 i- */ Err bitreich.org 70 i- Err bitreich.org 70 i-typedef enum { Err bitreich.org 70 i- ONE = 1, Err bitreich.org 70 i- TWO, Err bitreich.org 70 i- THREE, Err bitreich.org 70 i- FOUR, Err bitreich.org 70 i- FORTY_ONE = 41, Err bitreich.org 70 i- FORTY_TWO Err bitreich.org 70 i-} numeros; Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-int check_enums(numeros one, numeros two, numeros three, numeros four, Err bitreich.org 70 i- numeros forty_one, numeros forty_two) Err bitreich.org 70 i-{ Err bitreich.org 70 i- if (one == ONE && two == TWO && three == THREE && four == FOUR && Err bitreich.org 70 i- forty_one == FORTY_ONE && forty_two == FORTY_TWO) Err bitreich.org 70 i- return 1; Err bitreich.org 70 i- Err bitreich.org 70 i- return 0; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-typedef enum { FALSE, TRUE } another_boolean; Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-another_boolean return_enum(int x) Err bitreich.org 70 i-{ Err bitreich.org 70 i- if (x == 0) Err bitreich.org 70 i- return FALSE; Err bitreich.org 70 i- else Err bitreich.org 70 i- return TRUE; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-/* Err bitreich.org 70 i- * Booleans Err bitreich.org 70 i- */ Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-int equalequal(int a, unsigned int b) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return ((unsigned int) a) == b; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-char bool_and(unsigned char a, char b) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return a && b; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-unsigned long bool_xor(long a, unsigned long b) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return (a && !b) || (!a && b); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-unsigned sizeof_bool(void) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return (unsigned) sizeof(_Bool); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-unsigned bool_to_unsigned(_Bool b) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return (unsigned) b; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-_Bool unsigned_to_bool(unsigned u) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return (_Bool) u; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-/* Err bitreich.org 70 i- * Test struct alignment issues. These comments assume the x86 gABI. Err bitreich.org 70 i- * Hopefully these tests will spot alignment issues in others archs Err bitreich.org 70 i- * too. Err bitreich.org 70 i- */ Err bitreich.org 70 i- Err bitreich.org 70 i-/* Err bitreich.org 70 i- * STRUCT.ALIGNMENT.1 Err bitreich.org 70 i- */ Err bitreich.org 70 i- Err bitreich.org 70 i-struct s_ch { Err bitreich.org 70 i- char a_char; Err bitreich.org 70 i-}; Err bitreich.org 70 i- Err bitreich.org 70 i-/* This struct's size should be 2 bytes */ Err bitreich.org 70 i-struct s_s_ch { Err bitreich.org 70 i- char another_char; Err bitreich.org 70 i- struct s_ch a_s_ch; Err bitreich.org 70 i-}; Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-struct s_s_ch the_s_s_ch = { 2, { 1 } }; Err bitreich.org 70 i- Err bitreich.org 70 i-/* Err bitreich.org 70 i- * STRUCT.ALIGNMENT.2 Err bitreich.org 70 i- */ Err bitreich.org 70 i- Err bitreich.org 70 i-/* This one should be alignment should be the same as short's alignment. */ Err bitreich.org 70 i-struct s_short { Err bitreich.org 70 i- char a_char; Err bitreich.org 70 i- char another_char; Err bitreich.org 70 i- short a_short; Err bitreich.org 70 i-}; Err bitreich.org 70 i- Err bitreich.org 70 i-struct s_s_short { Err bitreich.org 70 i- char yet_another_char; Err bitreich.org 70 i- struct s_short a_s_short; /* so this should be 2-byte aligned */ Err bitreich.org 70 i-}; /* size: 6 bytes */ Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-struct s_s_short the_s_s_short = { 4, { 1, 2, 3 } }; Err bitreich.org 70 i- Err bitreich.org 70 i-/* Err bitreich.org 70 i- * STRUCT.ALIGNMENT.3 Err bitreich.org 70 i- */ Err bitreich.org 70 i- Err bitreich.org 70 i-/* This test will, among other things, check for the existence tail padding. */ Err bitreich.org 70 i- Err bitreich.org 70 i-struct s_double { Err bitreich.org 70 i- char a_char; /* 1 byte */ Err bitreich.org 70 i- /* padding: 3 bytes */ Err bitreich.org 70 i- double a_double; /* 8 bytes */ Err bitreich.org 70 i- char another_char; /* 1 byte */ Err bitreich.org 70 i- /* padding: 3 bytes */ Err bitreich.org 70 i-}; /* total size: 16 bytes */ Err bitreich.org 70 i- Err bitreich.org 70 i-struct s_s_double { Err bitreich.org 70 i- char yet_another_char; /* 1 byte */ Err bitreich.org 70 i- /* 3 bytes padding */ Err bitreich.org 70 i- struct s_double a_s_double; /* 16 bytes */ Err bitreich.org 70 i- short a_short; /* 2 byte */ Err bitreich.org 70 i- /* 2 bytes padding */ Err bitreich.org 70 i-}; /* total size: 24 bytes */ Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-struct s_s_double the_s_s_double = { 4, { 1, 2.0, 3 }, 5 }; Err bitreich.org 70 i- Err bitreich.org 70 i-/* Err bitreich.org 70 i- * STRUCT.ALIGNMENT.4 Err bitreich.org 70 i- */ Err bitreich.org 70 i-struct s_s_s_double { Err bitreich.org 70 i- short another_short; /* 2 bytes */ Err bitreich.org 70 i- /* 2 bytes padding */ Err bitreich.org 70 i- struct s_s_double a_s_s_double; /* 24 bytes */ Err bitreich.org 70 i- char last_char; /* 1 byte */ Err bitreich.org 70 i- /* 3 bytes padding */ Err bitreich.org 70 i-}; /* total size: 32 */ Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-struct s_s_s_double the_s_s_s_double = { 6, { 4, { 1, 2.0, 3 }, 5 }, 7 }; Err bitreich.org 70 i- Err bitreich.org 70 i-/* Err bitreich.org 70 i- * STRUCT.ALIGNMENT.5 Err bitreich.org 70 i- */ Err bitreich.org 70 i- Err bitreich.org 70 i-/* MacOSX ABI says: "The embedding alignment of the first element in a data Err bitreich.org 70 i- structure is equal to the element's natural alignment." and "For subsequent Err bitreich.org 70 i- elements that have a natural alignment greater than 4 bytes, the embedding Err bitreich.org 70 i- alignment is 4, unless the element is a vector." */ Err bitreich.org 70 i- Err bitreich.org 70 i-/* note: these rules will apply to the structure itself. So, unless it is Err bitreich.org 70 i- the first element of another structure, its alignment will be 4. */ Err bitreich.org 70 i- Err bitreich.org 70 i-/* the following offsets and sizes are specific to darwin/ppc32 */ Err bitreich.org 70 i- Err bitreich.org 70 i-struct s_double2 { Err bitreich.org 70 i- double a_double; /* 8 bytes (alignment 8) */ Err bitreich.org 70 i- short a_short; /* 2 bytes */ Err bitreich.org 70 i- /* 6 bytes padding */ Err bitreich.org 70 i-}; /* total size: 16 */ Err bitreich.org 70 i- Err bitreich.org 70 i-struct s_s_double2 { Err bitreich.org 70 i- char a_char; /* 1 byte */ Err bitreich.org 70 i- /* 3 bytes padding */ Err bitreich.org 70 i- struct s_double2 a_s_double2; /* 16 bytes, alignment 4 */ Err bitreich.org 70 i- short another_short; /* 2 bytes */ Err bitreich.org 70 i- /* 2 bytes padding */ Err bitreich.org 70 i-}; /* total size: 24 bytes */ Err bitreich.org 70 i- /* alignment: 4 */ Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-struct s_s_double2 the_s_s_double2 = { 3, { 1.0, 2 }, 4 }; Err bitreich.org 70 i- Err bitreich.org 70 i-/* Err bitreich.org 70 i- * STRUCT.ALIGNMENT.6 Err bitreich.org 70 i- */ Err bitreich.org 70 i- Err bitreich.org 70 i-/* Same as STRUCT.ALIGNMENT.5 but with long long. */ Err bitreich.org 70 i- Err bitreich.org 70 i-struct s_long_long { Err bitreich.org 70 i- long long a_long_long; /* 8 bytes (alignment 8) */ Err bitreich.org 70 i- short a_short; /* 2 bytes */ Err bitreich.org 70 i- /* 6 bytes padding */ Err bitreich.org 70 i-}; /* total size: 16 */ Err bitreich.org 70 i- Err bitreich.org 70 i-struct s_s_long_long { Err bitreich.org 70 i- char a_char; /* 1 byte */ Err bitreich.org 70 i- /* 3 bytes padding */ Err bitreich.org 70 i- struct s_long_long a_s_long_long; /* 16 bytes, alignment 4 */ Err bitreich.org 70 i- short a_short; /* 2 bytes */ Err bitreich.org 70 i- /* 2 bytes padding */ Err bitreich.org 70 i-}; /* total size: 24 bytes */ Err bitreich.org 70 i- /* alignment: 4 */ Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-struct s_s_long_long the_s_s_long_long = { 3, { 1, 2 }, 4 }; Err bitreich.org 70 i- Err bitreich.org 70 i-/* Err bitreich.org 70 i- * STRUCT.ALIGNMENT.7 Err bitreich.org 70 i- */ Err bitreich.org 70 i- Err bitreich.org 70 i-/* Another test for Darwin's PPC32 ABI. */ Err bitreich.org 70 i- Err bitreich.org 70 i-struct s_s_double3 { Err bitreich.org 70 i- struct s_double2 a_s_double2; /* 16 bytes, alignment 8*/ Err bitreich.org 70 i- short another_short; /* 2 bytes */ Err bitreich.org 70 i- /* 6 bytes padding */ Err bitreich.org 70 i-}; /* total size: 24 */ Err bitreich.org 70 i- Err bitreich.org 70 i-struct s_s_s_double3 { Err bitreich.org 70 i- struct s_s_double3 a_s_s_double3; /* 24 bytes */ Err bitreich.org 70 i- char a_char; /* 1 byte */ Err bitreich.org 70 i- /* 7 bytes padding */ Err bitreich.org 70 i-}; /* total size: 32 */ Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-struct s_s_s_double3 the_s_s_s_double3 = { { { 1.0, 2 }, 3 }, 4 }; Err bitreich.org 70 i- Err bitreich.org 70 i-/* Err bitreich.org 70 i- * STRUCT.ALIGNMENT.8 Err bitreich.org 70 i- */ Err bitreich.org 70 i- Err bitreich.org 70 i-/* Same as STRUCT.ALIGNMENT.[56] but with unsigned long long. */ Err bitreich.org 70 i- Err bitreich.org 70 i-struct s_unsigned_long_long { Err bitreich.org 70 i- unsigned long long an_unsigned_long_long; /* 8 bytes (alignment 8) */ Err bitreich.org 70 i- short a_short; /* 2 bytes */ Err bitreich.org 70 i- /* 6 bytes padding */ Err bitreich.org 70 i-}; /* total size: 16 */ Err bitreich.org 70 i- Err bitreich.org 70 i-struct s_s_unsigned_long_long { Err bitreich.org 70 i- char a_char; /* 1 byte */ Err bitreich.org 70 i- /* 3 bytes padding */ Err bitreich.org 70 i- struct s_unsigned_long_long a_s_unsigned_long_long; /* 16 bytes, align 4 */ Err bitreich.org 70 i- short a_short; /* 2 bytes */ Err bitreich.org 70 i- /* 2 bytes padding */ Err bitreich.org 70 i-}; /* total size: 24 bytes */ Err bitreich.org 70 i- /* alignment: 4 */ Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-struct s_s_unsigned_long_long the_s_s_unsigned_long_long = { 3, { 1, 2 }, 4 }; Err bitreich.org 70 i- Err bitreich.org 70 i-/* STRUCT.ALIGNMENT.x */ Err bitreich.org 70 i- Err bitreich.org 70 i-/* commented this test out because this is not standard C Err bitreich.org 70 i- and MSVC++ (or some versions of it at least) won't compile it. */ Err bitreich.org 70 i- Err bitreich.org 70 i-/* Err bitreich.org 70 i-struct empty_struct {}; Err bitreich.org 70 i- Err bitreich.org 70 i-struct with_empty_struct { Err bitreich.org 70 i- struct empty_struct foo; Err bitreich.org 70 i- int an_int; Err bitreich.org 70 i-}; Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-struct with_empty_struct the_with_empty_struct = { {}, 42 }; Err bitreich.org 70 i-*/ Err bitreich.org 70 i- Err bitreich.org 70 i-/* Err bitreich.org 70 i- * STRUCT-VALUES.* Err bitreich.org 70 i- */ Err bitreich.org 70 i- Err bitreich.org 70 i-struct pair { int a, b; }; Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-int pair_sum(struct pair p) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return p.a + p.b; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-int pair_pointer_sum(struct pair *p) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return p->a + p->b; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-struct pair make_pair(int a, int b) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return (struct pair) { a, b }; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-struct pair *alloc_pair(int a, int b) Err bitreich.org 70 i-{ Err bitreich.org 70 i- struct pair *p = malloc(sizeof(struct pair)); Err bitreich.org 70 i- p->a = a; Err bitreich.org 70 i- p->b = b; Err bitreich.org 70 i- return p; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-struct pair_plus_one { Err bitreich.org 70 i- struct pair p; Err bitreich.org 70 i- int c; Err bitreich.org 70 i-}; Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-int pair_plus_one_sum(struct pair_plus_one p) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return p.p.a + p.p.b + p.c; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-int pair_plus_one_pointer_sum(struct pair_plus_one *p) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return p->p.a + p->p.b + p->c; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-struct pair_plus_one make_pair_plus_one(int a, int b, int c) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return (struct pair_plus_one) { { a, b }, c }; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-struct pair_plus_one *alloc_pair_plus_one(int a, int b, int c) Err bitreich.org 70 i-{ Err bitreich.org 70 i- struct pair_plus_one *p = malloc(sizeof(struct pair_plus_one)); Err bitreich.org 70 i- p->p.a = a; Err bitreich.org 70 i- p->p.b = b; Err bitreich.org 70 i- p->c = c; Err bitreich.org 70 i- return p; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-/* Err bitreich.org 70 i- * DEFCFUN.NOARGS and DEFCFUN.NOOP Err bitreich.org 70 i- */ Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-int noargs() Err bitreich.org 70 i-{ Err bitreich.org 70 i- return 42; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-void noop() Err bitreich.org 70 i-{ Err bitreich.org 70 i- return; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-/* Err bitreich.org 70 i- * DEFCFUN.BFF.1 Err bitreich.org 70 i- * Err bitreich.org 70 i- * (let ((rettype (find-type :long)) Err bitreich.org 70 i- * (arg-types (n-random-types-no-ll 127))) Err bitreich.org 70 i- * (c-function rettype arg-types) Err bitreich.org 70 i- * (gen-function-test rettype arg-types)) Err bitreich.org 70 i- */ Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT long sum_127_no_ll Err bitreich.org 70 i- (long a1, unsigned long a2, short a3, unsigned short a4, float a5, Err bitreich.org 70 i- double a6, unsigned long a7, float a8, unsigned char a9, unsigned Err bitreich.org 70 i- short a10, short a11, unsigned long a12, double a13, long a14, Err bitreich.org 70 i- unsigned int a15, void* a16, unsigned int a17, unsigned short a18, Err bitreich.org 70 i- long a19, float a20, void* a21, float a22, int a23, int a24, unsigned Err bitreich.org 70 i- short a25, long a26, long a27, double a28, unsigned char a29, unsigned Err bitreich.org 70 i- int a30, unsigned int a31, int a32, unsigned short a33, unsigned int Err bitreich.org 70 i- a34, void* a35, double a36, double a37, long a38, short a39, unsigned Err bitreich.org 70 i- short a40, long a41, char a42, long a43, unsigned short a44, void* Err bitreich.org 70 i- a45, int a46, unsigned int a47, double a48, unsigned char a49, Err bitreich.org 70 i- unsigned char a50, float a51, int a52, unsigned short a53, double a54, Err bitreich.org 70 i- short a55, unsigned char a56, unsigned long a57, float a58, float a59, Err bitreich.org 70 i- float a60, void* a61, void* a62, unsigned int a63, unsigned long a64, Err bitreich.org 70 i- char a65, short a66, unsigned short a67, unsigned long a68, void* a69, Err bitreich.org 70 i- float a70, double a71, long a72, unsigned long a73, short a74, Err bitreich.org 70 i- unsigned int a75, unsigned short a76, int a77, unsigned short a78, Err bitreich.org 70 i- char a79, double a80, short a81, unsigned char a82, float a83, char Err bitreich.org 70 i- a84, int a85, double a86, unsigned char a87, int a88, unsigned long Err bitreich.org 70 i- a89, double a90, short a91, short a92, unsigned int a93, unsigned char Err bitreich.org 70 i- a94, float a95, long a96, float a97, long a98, long a99, int a100, int Err bitreich.org 70 i- a101, unsigned int a102, char a103, char a104, unsigned short a105, Err bitreich.org 70 i- unsigned int a106, unsigned short a107, unsigned short a108, int a109, Err bitreich.org 70 i- long a110, char a111, double a112, unsigned int a113, char a114, short Err bitreich.org 70 i- a115, unsigned long a116, unsigned int a117, short a118, unsigned char Err bitreich.org 70 i- a119, float a120, void* a121, double a122, int a123, long a124, char Err bitreich.org 70 i- a125, unsigned short a126, float a127) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return (long) a1 + a2 + a3 + a4 + ((long) a5) + ((long) a6) + a7 + Err bitreich.org 70 i- ((long) a8) + a9 + a10 + a11 + a12 + ((long) a13) + a14 + a15 + Err bitreich.org 70 i- ((intptr_t) a16) + a17 + a18 + a19 + ((long) a20) + Err bitreich.org 70 i- ((intptr_t) a21) + ((long) a22) + a23 + a24 + a25 + a26 + a27 + Err bitreich.org 70 i- ((long) a28) + a29 + a30 + a31 + a32 + a33 + a34 + ((intptr_t) a35) + Err bitreich.org 70 i- ((long) a36) + ((long) a37) + a38 + a39 + a40 + a41 + a42 + a43 + a44 + Err bitreich.org 70 i- ((intptr_t) a45) + a46 + a47 + ((long) a48) + a49 + a50 + Err bitreich.org 70 i- ((long) a51) + a52 + a53 + ((long) a54) + a55 + a56 + a57 + ((long) a58) + Err bitreich.org 70 i- ((long) a59) + ((long) a60) + ((intptr_t) a61) + Err bitreich.org 70 i- ((intptr_t) a62) + a63 + a64 + a65 + a66 + a67 + a68 + Err bitreich.org 70 i- ((intptr_t) a69) + ((long) a70) + ((long) a71) + a72 + a73 + a74 + Err bitreich.org 70 i- a75 + a76 + a77 + a78 + a79 + ((long) a80) + a81 + a82 + ((long) a83) + Err bitreich.org 70 i- a84 + a85 + ((long) a86) + a87 + a88 + a89 + ((long) a90) + a91 + a92 + Err bitreich.org 70 i- a93 + a94 + ((long) a95) + a96 + ((long) a97) + a98 + a99 + a100 + a101 + Err bitreich.org 70 i- a102 + a103 + a104 + a105 + a106 + a107 + a108 + a109 + a110 + a111 + Err bitreich.org 70 i- ((long) a112) + a113 + a114 + a115 + a116 + a117 + a118 + a119 + Err bitreich.org 70 i- ((long) a120) + ((intptr_t) a121) + ((long) a122) + a123 + a124 + Err bitreich.org 70 i- a125 + a126 + ((long) a127); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-/* Err bitreich.org 70 i- * DEFCFUN.BFF.2 Err bitreich.org 70 i- * Err bitreich.org 70 i- * (let ((rettype (find-type :long-long)) Err bitreich.org 70 i- * (arg-types (n-random-types 127))) Err bitreich.org 70 i- * (c-function rettype arg-types) Err bitreich.org 70 i- * (gen-function-test rettype arg-types)) Err bitreich.org 70 i- */ Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT long long sum_127 Err bitreich.org 70 i- (void* a1, void* a2, float a3, unsigned long a4, void* a5, long long Err bitreich.org 70 i- a6, double a7, double a8, unsigned short a9, int a10, long long a11, Err bitreich.org 70 i- long a12, short a13, unsigned int a14, long a15, unsigned char a16, Err bitreich.org 70 i- int a17, double a18, short a19, short a20, long long a21, unsigned Err bitreich.org 70 i- int a22, unsigned short a23, short a24, void* a25, short a26, Err bitreich.org 70 i- unsigned short a27, unsigned short a28, int a29, long long a30, Err bitreich.org 70 i- void* a31, int a32, unsigned long a33, unsigned long a34, void* a35, Err bitreich.org 70 i- unsigned long long a36, float a37, int a38, short a39, void* a40, Err bitreich.org 70 i- unsigned long long a41, long long a42, unsigned long a43, unsigned Err bitreich.org 70 i- long a44, unsigned long long a45, unsigned long a46, char a47, Err bitreich.org 70 i- double a48, long a49, unsigned int a50, int a51, short a52, void* Err bitreich.org 70 i- a53, long a54, unsigned long long a55, int a56, unsigned short a57, Err bitreich.org 70 i- unsigned long long a58, float a59, void* a60, float a61, unsigned Err bitreich.org 70 i- short a62, unsigned long a63, float a64, unsigned int a65, unsigned Err bitreich.org 70 i- long long a66, void* a67, double a68, unsigned long long a69, double Err bitreich.org 70 i- a70, double a71, long long a72, void* a73, unsigned short a74, long Err bitreich.org 70 i- a75, void* a76, short a77, double a78, long a79, unsigned char a80, Err bitreich.org 70 i- void* a81, unsigned char a82, long a83, double a84, void* a85, int Err bitreich.org 70 i- a86, double a87, unsigned char a88, double a89, short a90, long a91, Err bitreich.org 70 i- int a92, long a93, double a94, unsigned short a95, unsigned int a96, Err bitreich.org 70 i- int a97, char a98, long long a99, double a100, float a101, unsigned Err bitreich.org 70 i- long a102, short a103, void* a104, float a105, long long a106, int Err bitreich.org 70 i- a107, long long a108, long long a109, double a110, unsigned long Err bitreich.org 70 i- long a111, double a112, unsigned long a113, char a114, char a115, Err bitreich.org 70 i- unsigned long a116, short a117, unsigned char a118, unsigned char Err bitreich.org 70 i- a119, int a120, int a121, float a122, unsigned char a123, unsigned Err bitreich.org 70 i- char a124, double a125, unsigned long long a126, char a127) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return (long long) ((intptr_t) a1) + ((intptr_t) a2) + ((long) a3) + Err bitreich.org 70 i- a4 + ((intptr_t) a5) + a6 + ((long) a7) + ((long) a8) + a9 + a10 + Err bitreich.org 70 i- a11 + a12 + a13 + a14 + a15 + a16 + a17 + ((long) a18) + a19 + a20 + Err bitreich.org 70 i- a21 + a22 + a23 + a24 + ((intptr_t) a25) + a26 + a27 + a28 + a29 + Err bitreich.org 70 i- a30 + ((intptr_t) a31) + a32 + a33 + a34 + ((intptr_t) a35) + Err bitreich.org 70 i- a36 + ((long) a37) + a38 + a39 + ((intptr_t) a40) + a41 + a42 + a43 + Err bitreich.org 70 i- a44 + a45 + a46 + a47 + ((long) a48) + a49 + a50 + a51 + a52 + Err bitreich.org 70 i- ((intptr_t) a53) + a54 + a55 + a56 + a57 + a58 + ((long) a59) + Err bitreich.org 70 i- ((intptr_t) a60) + ((long) a61) + a62 + a63 + ((long) a64) + a65 + a66 Err bitreich.org 70 i- + ((intptr_t) a67) + ((long) a68) + a69 + ((long) a70) + ((long) a71) + Err bitreich.org 70 i- a72 + ((intptr_t) a73) + a74 + a75 + ((intptr_t) a76) + a77 + Err bitreich.org 70 i- ((long) a78) + a79 + a80 + ((intptr_t) a81) + a82 + a83 + ((long) a84) Err bitreich.org 70 i- + ((intptr_t) a85) + a86 + ((long) a87) + a88 + ((long) a89) + a90 + Err bitreich.org 70 i- a91 + a92 + a93 + ((long) a94) + a95 + a96 + a97 + a98 + a99 + Err bitreich.org 70 i- ((long) a100) + ((long) a101) + a102 + a103 + ((intptr_t) a104) + Err bitreich.org 70 i- ((long) a105) + a106 + a107 + a108 + a109 + ((long) a110) + a111 + Err bitreich.org 70 i- ((long) a112) + a113 + a114 + a115 + a116 + a117 + a118 + a119 + a120 + Err bitreich.org 70 i- a121 + ((long) a122) + a123 + a124 + ((long) a125) + a126 + a127; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-/* Err bitreich.org 70 i- * CALLBACKS.BFF.1 (cb-test :no-long-long t) Err bitreich.org 70 i- */ Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT long call_sum_127_no_ll Err bitreich.org 70 i- (long (*func) Err bitreich.org 70 i- (unsigned long, void*, long, double, unsigned long, float, float, Err bitreich.org 70 i- int, unsigned int, double, double, double, void*, unsigned short, Err bitreich.org 70 i- unsigned short, void*, long, long, int, short, unsigned short, Err bitreich.org 70 i- unsigned short, char, long, void*, void*, char, unsigned char, Err bitreich.org 70 i- unsigned long, short, int, int, unsigned char, short, long, long, Err bitreich.org 70 i- void*, unsigned short, char, double, unsigned short, void*, short, Err bitreich.org 70 i- unsigned long, unsigned short, float, unsigned char, short, float, Err bitreich.org 70 i- short, char, unsigned long, unsigned long, char, float, long, void*, Err bitreich.org 70 i- short, float, unsigned int, float, unsigned int, double, unsigned int, Err bitreich.org 70 i- unsigned char, int, long, char, short, double, int, void*, char, Err bitreich.org 70 i- unsigned short, void*, unsigned short, void*, unsigned long, double, Err bitreich.org 70 i- void*, long, float, unsigned short, unsigned short, void*, float, int, Err bitreich.org 70 i- unsigned int, double, float, long, void*, unsigned short, float, Err bitreich.org 70 i- unsigned char, unsigned char, float, unsigned int, float, unsigned Err bitreich.org 70 i- short, double, unsigned short, unsigned long, unsigned int, unsigned Err bitreich.org 70 i- long, void*, unsigned char, char, char, unsigned short, unsigned long, Err bitreich.org 70 i- float, short, void*, long, unsigned short, short, double, short, int, Err bitreich.org 70 i- char, unsigned long, long, int, void*, double, unsigned char)) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return Err bitreich.org 70 i- func(948223085, (void *) 803308438, -465723152, 20385, Err bitreich.org 70 i- 219679466, -10035, 13915, -1193455756, 1265303699, 27935, -18478, Err bitreich.org 70 i- -10508, (void *) 215389089, 55561, 55472, (void *) 146070433, Err bitreich.org 70 i- -1040819989, -17851453, -1622662247, -19473, 20837, 30216, 79, Err bitreich.org 70 i- 986800400, (void *) 390281604, (void *) 1178532858, 19, 117, Err bitreich.org 70 i- 78337699, -5718, -991300738, 872160910, 184, 926, -1487245383, Err bitreich.org 70 i- 1633973783, (void *) 33738609, 53985, -116, 31645, 27196, (void *) Err bitreich.org 70 i- 145569903, -6960, 17252220, 47404, -10491, 88, -30438, -21212, Err bitreich.org 70 i- -1982, -16, 1175270, 7949380, -121, 8559, -432968526, (void *) Err bitreich.org 70 i- 293455312, 11894, -8394, 142421516, -25758, 3422998, 4004, Err bitreich.org 70 i- 15758212, 198, -1071899743, -1284904617, -11, -17219, -30039, Err bitreich.org 70 i- 311589092, (void *) 541468577, 123, 63517, (void *) 1252504506, Err bitreich.org 70 i- 39368, (void *) 10057868, 134781408, -7143, (void *) 72825877, Err bitreich.org 70 i- -1190798667, -30862, 63757, 14965, (void *) 802391252, 22008, Err bitreich.org 70 i- -517289619, 806091099, 1125, 451, -498145176, (void *) 55960931, Err bitreich.org 70 i- 15379, 4629, 184, 254, 22532, 465856451, -1669, 49416, -16546, Err bitreich.org 70 i- 2983, 4337541, 65292495, 39253529, (void *) 669025, 211, 85, -19, Err bitreich.org 70 i- 24298, 65358, 16776, -29957, (void *) 124311, -163231228, 2610, Err bitreich.org 70 i- -7806, 26434, -21913, -753615541, 120, 358697932, -1198889034, Err bitreich.org 70 i- -2131350926, (void *) 3749492036, -13413, 17); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-/* Err bitreich.org 70 i- * CALLBACKS.BFF.2 (cb-test) Err bitreich.org 70 i- */ Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT long long call_sum_127 Err bitreich.org 70 i- (long long (*func) Err bitreich.org 70 i- (short, char, void*, float, long, double, unsigned long long, Err bitreich.org 70 i- unsigned short, unsigned char, char, char, unsigned short, unsigned Err bitreich.org 70 i- long long, unsigned short, long long, unsigned short, unsigned long Err bitreich.org 70 i- long, unsigned char, unsigned char, unsigned long long, long long, Err bitreich.org 70 i- char, float, unsigned int, float, float, unsigned int, float, char, Err bitreich.org 70 i- unsigned char, long, long long, unsigned char, double, long, Err bitreich.org 70 i- double, unsigned int, unsigned short, long long, unsigned int, int, Err bitreich.org 70 i- unsigned long long, long, short, unsigned int, unsigned int, Err bitreich.org 70 i- unsigned long long, unsigned int, long, void*, unsigned char, char, Err bitreich.org 70 i- long long, unsigned short, unsigned int, float, unsigned char, Err bitreich.org 70 i- unsigned long, long long, float, long, float, int, float, unsigned Err bitreich.org 70 i- short, unsigned long long, short, unsigned long, long, char, Err bitreich.org 70 i- unsigned short, long long, short, double, void*, unsigned int, Err bitreich.org 70 i- char, unsigned int, void*, void*, unsigned char, void*, unsigned Err bitreich.org 70 i- short, unsigned char, long, void*, char, long, unsigned short, Err bitreich.org 70 i- unsigned char, double, unsigned long long, unsigned short, unsigned Err bitreich.org 70 i- short, unsigned int, long, char, long, char, short, unsigned short, Err bitreich.org 70 i- unsigned long, unsigned long, short, long long, long long, long Err bitreich.org 70 i- long, double, unsigned short, unsigned char, short, unsigned char, Err bitreich.org 70 i- long, long long, unsigned long long, unsigned int, unsigned long, Err bitreich.org 70 i- unsigned char, long long, unsigned char, unsigned long long, Err bitreich.org 70 i- double, unsigned char, long long, unsigned char, char, long long)) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return Err bitreich.org 70 i- func(-8573, 14, (void *) 832601021, -32334, -1532040888, Err bitreich.org 70 i- -18478, 2793023182591311826, 2740, 230, 103, 97, 13121, Err bitreich.org 70 i- 5112369026351511084, 7763, -8134147951003417418, 34348, Err bitreich.org 70 i- 5776613699556468853, 19, 122, 1431603726926527625, Err bitreich.org 70 i- 439503521880490337, -112, -21557, 1578969190, -22008, -4953, Err bitreich.org 70 i- 2127745975, -7262, -6, 180, 226352974, -3928775366167459219, 134, Err bitreich.org 70 i- -17730, -1175042526, 23868, 3494181009, 57364, Err bitreich.org 70 i- 3134876875147518682, 104531655, -1286882727, 803577887579693487, Err bitreich.org 70 i- 1349268803, 24912, 3313099419, 3907347884, 1738833249233805034, Err bitreich.org 70 i- 2794230885, 1008818752, (void *) 1820044575, 189, 61, Err bitreich.org 70 i- -931654560961745071, 57531, 3096859985, 10405, 220, 3631311224, Err bitreich.org 70 i- -8531370353478907668, 31258, 678896693, -32150, -1869057813, Err bitreich.org 70 i- -19877, 62841, 4161660185772906873, -23869, 4016251006, 610353435, Err bitreich.org 70 i- 105, 47315, -1051054492535331660, 6846, -15163, (void *) Err bitreich.org 70 i- 736672359, 2123928476, -122, 3859258652, (void *) 3923394833, Err bitreich.org 70 i- (void *) 1265031970, 161, (void *) 1993867800, 55056, 122, Err bitreich.org 70 i- 1562112760, (void *) 866615125, -79, -1261399547, 31737, 254, Err bitreich.org 70 i- -31279, 5462649659172897980, 5202, 7644, 174224940, -337854382, Err bitreich.org 70 i- -45, -583502442, -37, -13266, 24520, 2198606699, 2890453969, Err bitreich.org 70 i- -8282, -2295716637858246075, -1905178488651598878, Err bitreich.org 70 i- -6384652209316714643, 14841, 35443, 132, 15524, 187, 2138878229, Err bitreich.org 70 i- -5153032566879951000, 9056545530140684207, 4124632010, 276167701, Err bitreich.org 70 i- 56, -2307310370663738730, 66, 9113015627153789746, -9618, 167, Err bitreich.org 70 i- 755753399701306200, 119, -28, -990561962725435433); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-/* Err bitreich.org 70 i- * CALLBACKS.DOUBLE26 Err bitreich.org 70 i- */ Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT double call_double26 Err bitreich.org 70 i- (double (*f)(double, double, double, double, double, double, double, double, Err bitreich.org 70 i- double, double, double, double, double, double, double, double, Err bitreich.org 70 i- double, double, double, double, double, double, double, double, Err bitreich.org 70 i- double, double)) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return f(3.14, 3.14, 3.14, 3.14, 3.14, 3.14, 3.14, 3.14, 3.14, 3.14, 3.14, Err bitreich.org 70 i- 3.14, 3.14, 3.14, 3.14, 3.14, 3.14, 3.14, 3.14, 3.14, 3.14, 3.14, Err bitreich.org 70 i- 3.14, 3.14, 3.14, 3.14); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-/* Err bitreich.org 70 i- * DEFCFUN.DOUBLE26 and FUNCALL.DOUBLE26 Err bitreich.org 70 i- */ Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-double sum_double26(double a1, double a2, double a3, double a4, double a5, Err bitreich.org 70 i- double a6, double a7, double a8, double a9, double a10, Err bitreich.org 70 i- double a11, double a12, double a13, double a14, double a15, Err bitreich.org 70 i- double a16, double a17, double a18, double a19, double a20, Err bitreich.org 70 i- double a21, double a22, double a23, double a24, double a25, Err bitreich.org 70 i- double a26) Err bitreich.org 70 i-{ Err bitreich.org 70 i- return a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + a11 + a12 + a13 + Err bitreich.org 70 i- a14 + a15 + a16 + a17 + a18 + a19 + a20 + a21 + a22 + a23 + a24 + a25 + Err bitreich.org 70 i- a26; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-/* Err bitreich.org 70 i- * DEFCFUN.VARARGS.NOSTDLIB and FUNCALL.VARARGS.NOSTDLIB Err bitreich.org 70 i- */ Err bitreich.org 70 i-DLLEXPORT Err bitreich.org 70 i-double sum_double_arbitrary(int n, ...) Err bitreich.org 70 i-{ Err bitreich.org 70 i- va_list ap; Err bitreich.org 70 i- double sum = 0; Err bitreich.org 70 i- va_start(ap, n); Err bitreich.org 70 i- for(int j=0; j Err bitreich.org 70 i- * Err bitreich.org 70 i- * Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i- * obtaining a copy of this software and associated documentation Err bitreich.org 70 i- * files (the "Software"), to deal in the Software without Err bitreich.org 70 i- * restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i- * modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i- * of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i- * furnished to do so, subject to the following conditions: Err bitreich.org 70 i- * Err bitreich.org 70 i- * The above copyright notice and this permission notice shall be Err bitreich.org 70 i- * included in all copies or substantial portions of the Software. Err bitreich.org 70 i- * Err bitreich.org 70 i- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i- * DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- */ Err bitreich.org 70 i- Err bitreich.org 70 i-#ifdef WIN32 Err bitreich.org 70 i-#define DLLEXPORT __declspec(dllexport) Err bitreich.org 70 i-#else Err bitreich.org 70 i-#define DLLEXPORT Err bitreich.org 70 i-#endif Err bitreich.org 70 i- Err bitreich.org 70 i-/* Err bitreich.org 70 i- * [DEFCFUN|FOREIGN].NAMESPACE.1 Err bitreich.org 70 i- */ Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT int ns_function() Err bitreich.org 70 i-{ Err bitreich.org 70 i- return 0; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-/* Err bitreich.org 70 i- * FOREIGN-GLOBALS.NAMESPACE.* Err bitreich.org 70 i- */ Err bitreich.org 70 i- Err bitreich.org 70 i-DLLEXPORT int ns_var = 0; Err bitreich.org 70 i- Err bitreich.org 70 i-/* vim: ts=4 et Err bitreich.org 70 i-*/ Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/tests/memory.lisp b/3rdparties/software/cffi_0.20.0/tests/memory.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/tests/memory.lisp.gph bitreich.org 70 i@@ -1,657 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; memory.lisp --- Tests for memory referencing. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-tests) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.char Err bitreich.org 70 i- (with-foreign-object (p :char) Err bitreich.org 70 i- (setf (mem-ref p :char) -127) Err bitreich.org 70 i- (mem-ref p :char)) Err bitreich.org 70 i- -127) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.unsigned-char Err bitreich.org 70 i- (with-foreign-object (p :unsigned-char) Err bitreich.org 70 i- (setf (mem-ref p :unsigned-char) 255) Err bitreich.org 70 i- (mem-ref p :unsigned-char)) Err bitreich.org 70 i- 255) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.short Err bitreich.org 70 i- (with-foreign-object (p :short) Err bitreich.org 70 i- (setf (mem-ref p :short) -32767) Err bitreich.org 70 i- (mem-ref p :short)) Err bitreich.org 70 i- -32767) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.unsigned-short Err bitreich.org 70 i- (with-foreign-object (p :unsigned-short) Err bitreich.org 70 i- (setf (mem-ref p :unsigned-short) 65535) Err bitreich.org 70 i- (mem-ref p :unsigned-short)) Err bitreich.org 70 i- 65535) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.int Err bitreich.org 70 i- (with-foreign-object (p :int) Err bitreich.org 70 i- (setf (mem-ref p :int) -131072) Err bitreich.org 70 i- (mem-ref p :int)) Err bitreich.org 70 i- -131072) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.unsigned-int Err bitreich.org 70 i- (with-foreign-object (p :unsigned-int) Err bitreich.org 70 i- (setf (mem-ref p :unsigned-int) 262144) Err bitreich.org 70 i- (mem-ref p :unsigned-int)) Err bitreich.org 70 i- 262144) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.long Err bitreich.org 70 i- (with-foreign-object (p :long) Err bitreich.org 70 i- (setf (mem-ref p :long) -536870911) Err bitreich.org 70 i- (mem-ref p :long)) Err bitreich.org 70 i- -536870911) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.unsigned-long Err bitreich.org 70 i- (with-foreign-object (p :unsigned-long) Err bitreich.org 70 i- (setf (mem-ref p :unsigned-long) 536870912) Err bitreich.org 70 i- (mem-ref p :unsigned-long)) Err bitreich.org 70 i- 536870912) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and darwin openmcl) Err bitreich.org 70 i-(pushnew 'deref.long-long rt::*expected-failures*) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.long-long Err bitreich.org 70 i- (with-foreign-object (p :long-long) Err bitreich.org 70 i- (setf (mem-ref p :long-long) -9223372036854775807) Err bitreich.org 70 i- (mem-ref p :long-long)) Err bitreich.org 70 i- -9223372036854775807) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.unsigned-long-long Err bitreich.org 70 i- (with-foreign-object (p :unsigned-long-long) Err bitreich.org 70 i- (setf (mem-ref p :unsigned-long-long) 18446744073709551615) Err bitreich.org 70 i- (mem-ref p :unsigned-long-long)) Err bitreich.org 70 i- 18446744073709551615) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.float.1 Err bitreich.org 70 i- (with-foreign-object (p :float) Err bitreich.org 70 i- (setf (mem-ref p :float) 0.0) Err bitreich.org 70 i- (mem-ref p :float)) Err bitreich.org 70 i- 0.0) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.float.2 Err bitreich.org 70 i- (with-foreign-object (p :float) Err bitreich.org 70 i- (setf (mem-ref p :float) *float-max*) Err bitreich.org 70 i- (mem-ref p :float)) Err bitreich.org 70 i- #.*float-max*) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.float.3 Err bitreich.org 70 i- (with-foreign-object (p :float) Err bitreich.org 70 i- (setf (mem-ref p :float) *float-min*) Err bitreich.org 70 i- (mem-ref p :float)) Err bitreich.org 70 i- #.*float-min*) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.double.1 Err bitreich.org 70 i- (with-foreign-object (p :double) Err bitreich.org 70 i- (setf (mem-ref p :double) 0.0d0) Err bitreich.org 70 i- (mem-ref p :double)) Err bitreich.org 70 i- 0.0d0) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.double.2 Err bitreich.org 70 i- (with-foreign-object (p :double) Err bitreich.org 70 i- (setf (mem-ref p :double) *double-max*) Err bitreich.org 70 i- (mem-ref p :double)) Err bitreich.org 70 i- #.*double-max*) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.double.3 Err bitreich.org 70 i- (with-foreign-object (p :double) Err bitreich.org 70 i- (setf (mem-ref p :double) *double-min*) Err bitreich.org 70 i- (mem-ref p :double)) Err bitreich.org 70 i- #.*double-min*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; TODO: use something like *DOUBLE-MIN/MAX* above once we actually Err bitreich.org 70 i-;;; have an available lisp that supports long double. Err bitreich.org 70 i-;#-cffi-sys::no-long-float Err bitreich.org 70 i-#+(and scl long-double) Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (deftest deref.long-double.1 Err bitreich.org 70 i- (with-foreign-object (p :long-double) Err bitreich.org 70 i- (setf (mem-ref p :long-double) 0.0l0) Err bitreich.org 70 i- (mem-ref p :long-double)) Err bitreich.org 70 i- 0.0l0) Err bitreich.org 70 i- Err bitreich.org 70 i- (deftest deref.long-double.2 Err bitreich.org 70 i- (with-foreign-object (p :long-double) Err bitreich.org 70 i- (setf (mem-ref p :long-double) most-positive-long-float) Err bitreich.org 70 i- (mem-ref p :long-double)) Err bitreich.org 70 i- #.most-positive-long-float) Err bitreich.org 70 i- Err bitreich.org 70 i- (deftest deref.long-double.3 Err bitreich.org 70 i- (with-foreign-object (p :long-double) Err bitreich.org 70 i- (setf (mem-ref p :long-double) least-positive-long-float) Err bitreich.org 70 i- (mem-ref p :long-double)) Err bitreich.org 70 i- #.least-positive-long-float)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; make sure the lisp doesn't convert NULL to NIL Err bitreich.org 70 i-(deftest deref.pointer.null Err bitreich.org 70 i- (with-foreign-object (p :pointer) Err bitreich.org 70 i- (setf (mem-ref p :pointer) (null-pointer)) Err bitreich.org 70 i- (null-pointer-p (mem-ref p :pointer))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; regression test. lisp-string-to-foreign should handle empty strings Err bitreich.org 70 i-(deftest lisp-string-to-foreign.empty Err bitreich.org 70 i- (with-foreign-pointer (str 2) Err bitreich.org 70 i- (setf (mem-ref str :unsigned-char) 42) Err bitreich.org 70 i- (lisp-string-to-foreign "" str 1) Err bitreich.org 70 i- (mem-ref str :unsigned-char)) Err bitreich.org 70 i- 0) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; regression test. with-foreign-pointer shouldn't evaluate Err bitreich.org 70 i-;;; the size argument twice. Err bitreich.org 70 i-(deftest with-foreign-pointer.evalx2 Err bitreich.org 70 i- (let ((count 0)) Err bitreich.org 70 i- (with-foreign-pointer (x (incf count) size-var) Err bitreich.org 70 i- (values count size-var))) Err bitreich.org 70 i- 1 1) Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +two+ 2) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; regression test. cffi-allegro's with-foreign-pointer wasn't Err bitreich.org 70 i-;;; handling constants properly. Err bitreich.org 70 i-(deftest with-foreign-pointer.constant-size Err bitreich.org 70 i- (with-foreign-pointer (p +two+ size) Err bitreich.org 70 i- size) Err bitreich.org 70 i- 2) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest mem-ref.left-to-right Err bitreich.org 70 i- (let ((i 0)) Err bitreich.org 70 i- (with-foreign-object (p :char 3) Err bitreich.org 70 i- (setf (mem-ref p :char 0) 66 (mem-ref p :char 1) 92) Err bitreich.org 70 i- (setf (mem-ref p :char (incf i)) (incf i)) Err bitreich.org 70 i- (values (mem-ref p :char 0) (mem-ref p :char 1) i))) Err bitreich.org 70 i- 66 2 2) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; This needs to be in a real function for at least Allegro CL or the Err bitreich.org 70 i-;;; compiler macro on %MEM-REF is not expanded and the test doesn't Err bitreich.org 70 i-;;; actually test anything! Err bitreich.org 70 i-(defun %mem-ref-left-to-right () Err bitreich.org 70 i- (let ((result nil)) Err bitreich.org 70 i- (with-foreign-object (p :char) Err bitreich.org 70 i- (%mem-set 42 p :char) Err bitreich.org 70 i- (%mem-ref (progn (push 1 result) p) :char (progn (push 2 result) 0)) Err bitreich.org 70 i- (nreverse result)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Test left-to-right evaluation of the arguments to %MEM-REF when Err bitreich.org 70 i-;;; optimized by the compiler macro. Err bitreich.org 70 i-(deftest %mem-ref.left-to-right Err bitreich.org 70 i- (%mem-ref-left-to-right) Err bitreich.org 70 i- (1 2)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; This needs to be in a top-level function for at least Allegro CL Err bitreich.org 70 i-;;; or the compiler macro on %MEM-SET is not expanded and the test Err bitreich.org 70 i-;;; doesn't actually test anything! Err bitreich.org 70 i-(defun %mem-set-left-to-right () Err bitreich.org 70 i- (let ((result nil)) Err bitreich.org 70 i- (with-foreign-object (p :char) Err bitreich.org 70 i- (%mem-set (progn (push 1 result) 0) Err bitreich.org 70 i- (progn (push 2 result) p) Err bitreich.org 70 i- :char Err bitreich.org 70 i- (progn (push 3 result) 0)) Err bitreich.org 70 i- (nreverse result)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Test left-to-right evaluation of the arguments to %MEM-SET when Err bitreich.org 70 i-;;; optimized by the compiler macro. Err bitreich.org 70 i-(deftest %mem-set.left-to-right Err bitreich.org 70 i- (%mem-set-left-to-right) Err bitreich.org 70 i- (1 2 3)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; regression test. mem-aref's setf expansion evaluated its type argument twice. Err bitreich.org 70 i-(deftest mem-aref.eval-type-x2 Err bitreich.org 70 i- (let ((count 0)) Err bitreich.org 70 i- (with-foreign-pointer (p 1) Err bitreich.org 70 i- (setf (mem-aref p (progn (incf count) :char) 0) 127)) Err bitreich.org 70 i- count) Err bitreich.org 70 i- 1) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest mem-aref.left-to-right Err bitreich.org 70 i- (let ((count -1)) Err bitreich.org 70 i- (with-foreign-pointer (p 2) Err bitreich.org 70 i- (values Err bitreich.org 70 i- (setf (mem-aref p (progn (incf count) :char) (incf count)) (incf count)) Err bitreich.org 70 i- (setq count -1) Err bitreich.org 70 i- (mem-aref (progn (incf count) p) :char (incf count)) Err bitreich.org 70 i- count))) Err bitreich.org 70 i- 2 -1 2 1) Err bitreich.org 70 i- Err bitreich.org 70 i-;; regression tests. nested mem-ref's and mem-aref's had bogus getters Err bitreich.org 70 i-(deftest mem-ref.nested Err bitreich.org 70 i- (with-foreign-object (p :pointer) Err bitreich.org 70 i- (with-foreign-object (i :int) Err bitreich.org 70 i- (setf (mem-ref p :pointer) i) Err bitreich.org 70 i- (setf (mem-ref i :int) 42) Err bitreich.org 70 i- (setf (mem-ref (mem-ref p :pointer) :int) 1984) Err bitreich.org 70 i- (mem-ref i :int))) Err bitreich.org 70 i- 1984) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest mem-aref.nested Err bitreich.org 70 i- (with-foreign-object (p :pointer) Err bitreich.org 70 i- (with-foreign-object (i :int 2) Err bitreich.org 70 i- (setf (mem-aref p :pointer 0) i) Err bitreich.org 70 i- (setf (mem-aref i :int 1) 42) Err bitreich.org 70 i- (setf (mem-aref (mem-ref p :pointer 0) :int 1) 1984) Err bitreich.org 70 i- (mem-aref i :int 1))) Err bitreich.org 70 i- 1984) Err bitreich.org 70 i- Err bitreich.org 70 i-(cffi:defcstruct mem-aref.bare-struct Err bitreich.org 70 i- (a :uint8)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; regression test: although mem-aref was dealing with bare struct Err bitreich.org 70 i-;;; types as though they were pointers, it wasn't calculating the Err bitreich.org 70 i-;;; proper offsets. The offsets for bare structs types should be Err bitreich.org 70 i-;;; calculated as aggregate types. Err bitreich.org 70 i-(deftest mem-aref.bare-struct Err bitreich.org 70 i- (with-foreign-object (a 'mem-aref.bare-struct 2) Err bitreich.org 70 i- (eql (- (pointer-address (cffi:mem-aref a 'mem-aref.bare-struct 1)) Err bitreich.org 70 i- (pointer-address (cffi:mem-aref a 'mem-aref.bare-struct 0))) Err bitreich.org 70 i- (foreign-type-size '(:struct mem-aref.bare-struct)))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; regression tests. dereferencing an aggregate type. dereferencing a Err bitreich.org 70 i-;;; struct should return a pointer to the struct itself, not return the Err bitreich.org 70 i-;;; first 4 bytes (or whatever the size of :pointer is) as a pointer. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; This important for accessing an array of structs, which is Err bitreich.org 70 i-;;; what the deref.array-of-aggregates test does. Err bitreich.org 70 i-(defcstruct some-struct (x :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.aggregate Err bitreich.org 70 i- (with-foreign-object (s 'some-struct) Err bitreich.org 70 i- (pointer-eq s (mem-ref s 'some-struct))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.array-of-aggregates Err bitreich.org 70 i- (with-foreign-object (arr 'some-struct 3) Err bitreich.org 70 i- (loop for i below 3 Err bitreich.org 70 i- do (setf (foreign-slot-value (mem-aref arr 'some-struct i) Err bitreich.org 70 i- 'some-struct 'x) Err bitreich.org 70 i- 112)) Err bitreich.org 70 i- (loop for i below 3 Err bitreich.org 70 i- collect (foreign-slot-value (mem-aref arr 'some-struct i) Err bitreich.org 70 i- 'some-struct 'x))) Err bitreich.org 70 i- (112 112 112)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; pointer operations Err bitreich.org 70 i-(deftest pointer.1 Err bitreich.org 70 i- (pointer-address (make-pointer 42)) Err bitreich.org 70 i- 42) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; I suppose this test is not very good. --luis Err bitreich.org 70 i-(deftest pointer.2 Err bitreich.org 70 i- (pointer-address (null-pointer)) Err bitreich.org 70 i- 0) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest pointer.null Err bitreich.org 70 i- (nth-value 0 (ignore-errors (null-pointer-p nil))) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-pointer-type.nil Err bitreich.org 70 i- (typep nil 'foreign-pointer) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Ensure that a pointer to the highest possible address can be Err bitreich.org 70 i-;;; created using MAKE-POINTER. Regression test for CLISP/X86-64. Err bitreich.org 70 i-(deftest make-pointer.high Err bitreich.org 70 i- (let* ((pointer-length (foreign-type-size :pointer)) Err bitreich.org 70 i- (high-address (1- (expt 2 (* pointer-length 8)))) Err bitreich.org 70 i- (pointer (make-pointer high-address))) Err bitreich.org 70 i- (- high-address (pointer-address pointer))) Err bitreich.org 70 i- 0) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Ensure that incrementing a pointer by zero bytes returns an Err bitreich.org 70 i-;;; equivalent pointer. Err bitreich.org 70 i-(deftest inc-pointer.zero Err bitreich.org 70 i- (with-foreign-object (x :int) Err bitreich.org 70 i- (pointer-eq x (inc-pointer x 0))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Test the INITIAL-ELEMENT keyword argument to FOREIGN-ALLOC. Err bitreich.org 70 i-(deftest foreign-alloc.1 Err bitreich.org 70 i- (let ((ptr (foreign-alloc :int :initial-element 42))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (mem-ref ptr :int) Err bitreich.org 70 i- (foreign-free ptr))) Err bitreich.org 70 i- 42) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Test the INITIAL-ELEMENT and COUNT arguments to FOREIGN-ALLOC. Err bitreich.org 70 i-(deftest foreign-alloc.2 Err bitreich.org 70 i- (let ((ptr (foreign-alloc :int :count 4 :initial-element 100))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (loop for i from 0 below 4 Err bitreich.org 70 i- collect (mem-aref ptr :int i)) Err bitreich.org 70 i- (foreign-free ptr))) Err bitreich.org 70 i- (100 100 100 100)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Test the INITIAL-CONTENTS and COUNT arguments to FOREIGN-ALLOC, Err bitreich.org 70 i-;;; passing a list of initial values. Err bitreich.org 70 i-(deftest foreign-alloc.3 Err bitreich.org 70 i- (let ((ptr (foreign-alloc :int :count 4 :initial-contents '(4 3 2 1)))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (loop for i from 0 below 4 Err bitreich.org 70 i- collect (mem-aref ptr :int i)) Err bitreich.org 70 i- (foreign-free ptr))) Err bitreich.org 70 i- (4 3 2 1)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Test INITIAL-CONTENTS and COUNT with FOREIGN-ALLOC passing a Err bitreich.org 70 i-;;; vector of initial values. Err bitreich.org 70 i-(deftest foreign-alloc.4 Err bitreich.org 70 i- (let ((ptr (foreign-alloc :int :count 4 :initial-contents #(10 20 30 40)))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (loop for i from 0 below 4 Err bitreich.org 70 i- collect (mem-aref ptr :int i)) Err bitreich.org 70 i- (foreign-free ptr))) Err bitreich.org 70 i- (10 20 30 40)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Ensure calling FOREIGN-ALLOC with both INITIAL-ELEMENT and Err bitreich.org 70 i-;;; INITIAL-CONTENTS signals an error. Err bitreich.org 70 i-(deftest foreign-alloc.5 Err bitreich.org 70 i- (values Err bitreich.org 70 i- (ignore-errors Err bitreich.org 70 i- (let ((ptr (foreign-alloc :int :initial-element 1 Err bitreich.org 70 i- :initial-contents '(1)))) Err bitreich.org 70 i- (foreign-free ptr)) Err bitreich.org 70 i- t)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Regression test: FOREIGN-ALLOC shouldn't actually perform translation Err bitreich.org 70 i-;;; on initial-element/initial-contents since MEM-AREF will do that already. Err bitreich.org 70 i-(define-foreign-type not-an-int () Err bitreich.org 70 i- () Err bitreich.org 70 i- (:actual-type :int) Err bitreich.org 70 i- (:simple-parser not-an-int)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-to-foreign (value (type not-an-int)) Err bitreich.org 70 i- (assert (not (integerp value))) Err bitreich.org 70 i- 0) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-alloc.6 Err bitreich.org 70 i- (let ((ptr (foreign-alloc 'not-an-int :initial-element 'foooo))) Err bitreich.org 70 i- (foreign-free ptr) Err bitreich.org 70 i- t) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Ensure calling FOREIGN-ALLOC with NULL-TERMINATED-P and a non-pointer Err bitreich.org 70 i-;;; type signals an error. Err bitreich.org 70 i-(deftest foreign-alloc.7 Err bitreich.org 70 i- (values Err bitreich.org 70 i- (ignore-errors Err bitreich.org 70 i- (let ((ptr (foreign-alloc :int :null-terminated-p t))) Err bitreich.org 70 i- (foreign-free ptr)) Err bitreich.org 70 i- t)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; The opposite of the above test. Err bitreich.org 70 i-(defctype pointer-alias :pointer) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-alloc.8 Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (foreign-free (foreign-alloc 'pointer-alias :count 0 :null-terminated-p t)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Ensure calling FOREIGN-ALLOC with NULL-TERMINATED-P actually places Err bitreich.org 70 i-;;; a null pointer at the end. Not a very reliable test apparently. Err bitreich.org 70 i-(deftest foreign-alloc.9 Err bitreich.org 70 i- (let ((ptr (foreign-alloc :pointer :count 0 :null-terminated-p t))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (null-pointer-p (mem-ref ptr :pointer)) Err bitreich.org 70 i- (foreign-free ptr))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; RT: FOREIGN-ALLOC with :COUNT 0 on CLISP signalled an error. Err bitreich.org 70 i-(deftest foreign-alloc.10 Err bitreich.org 70 i- (null (foreign-free (foreign-alloc :char :count 0))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Tests for mem-ref with a non-constant type. This is a way to test Err bitreich.org 70 i-;;; the functional interface (without compiler macros). Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.nonconst.char Err bitreich.org 70 i- (let ((type :char)) Err bitreich.org 70 i- (with-foreign-object (p type) Err bitreich.org 70 i- (setf (mem-ref p type) -127) Err bitreich.org 70 i- (mem-ref p type))) Err bitreich.org 70 i- -127) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.nonconst.unsigned-char Err bitreich.org 70 i- (let ((type :unsigned-char)) Err bitreich.org 70 i- (with-foreign-object (p type) Err bitreich.org 70 i- (setf (mem-ref p type) 255) Err bitreich.org 70 i- (mem-ref p type))) Err bitreich.org 70 i- 255) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.nonconst.short Err bitreich.org 70 i- (let ((type :short)) Err bitreich.org 70 i- (with-foreign-object (p type) Err bitreich.org 70 i- (setf (mem-ref p type) -32767) Err bitreich.org 70 i- (mem-ref p type))) Err bitreich.org 70 i- -32767) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.nonconst.unsigned-short Err bitreich.org 70 i- (let ((type :unsigned-short)) Err bitreich.org 70 i- (with-foreign-object (p type) Err bitreich.org 70 i- (setf (mem-ref p type) 65535) Err bitreich.org 70 i- (mem-ref p type))) Err bitreich.org 70 i- 65535) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.nonconst.int Err bitreich.org 70 i- (let ((type :int)) Err bitreich.org 70 i- (with-foreign-object (p type) Err bitreich.org 70 i- (setf (mem-ref p type) -131072) Err bitreich.org 70 i- (mem-ref p type))) Err bitreich.org 70 i- -131072) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.nonconst.unsigned-int Err bitreich.org 70 i- (let ((type :unsigned-int)) Err bitreich.org 70 i- (with-foreign-object (p type) Err bitreich.org 70 i- (setf (mem-ref p type) 262144) Err bitreich.org 70 i- (mem-ref p type))) Err bitreich.org 70 i- 262144) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.nonconst.long Err bitreich.org 70 i- (let ((type :long)) Err bitreich.org 70 i- (with-foreign-object (p type) Err bitreich.org 70 i- (setf (mem-ref p type) -536870911) Err bitreich.org 70 i- (mem-ref p type))) Err bitreich.org 70 i- -536870911) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.nonconst.unsigned-long Err bitreich.org 70 i- (let ((type :unsigned-long)) Err bitreich.org 70 i- (with-foreign-object (p type) Err bitreich.org 70 i- (setf (mem-ref p type) 536870912) Err bitreich.org 70 i- (mem-ref p type))) Err bitreich.org 70 i- 536870912) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and darwin openmcl) Err bitreich.org 70 i-(pushnew 'deref.nonconst.long-long rt::*expected-failures*) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.nonconst.long-long Err bitreich.org 70 i- (let ((type :long-long)) Err bitreich.org 70 i- (with-foreign-object (p type) Err bitreich.org 70 i- (setf (mem-ref p type) -9223372036854775807) Err bitreich.org 70 i- (mem-ref p type))) Err bitreich.org 70 i- -9223372036854775807) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.nonconst.unsigned-long-long Err bitreich.org 70 i- (let ((type :unsigned-long-long)) Err bitreich.org 70 i- (with-foreign-object (p type) Err bitreich.org 70 i- (setf (mem-ref p type) 18446744073709551615) Err bitreich.org 70 i- (mem-ref p type))) Err bitreich.org 70 i- 18446744073709551615) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.nonconst.float.1 Err bitreich.org 70 i- (let ((type :float)) Err bitreich.org 70 i- (with-foreign-object (p type) Err bitreich.org 70 i- (setf (mem-ref p type) 0.0) Err bitreich.org 70 i- (mem-ref p type))) Err bitreich.org 70 i- 0.0) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.nonconst.float.2 Err bitreich.org 70 i- (let ((type :float)) Err bitreich.org 70 i- (with-foreign-object (p type) Err bitreich.org 70 i- (setf (mem-ref p type) *float-max*) Err bitreich.org 70 i- (mem-ref p type))) Err bitreich.org 70 i- #.*float-max*) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.nonconst.float.3 Err bitreich.org 70 i- (let ((type :float)) Err bitreich.org 70 i- (with-foreign-object (p type) Err bitreich.org 70 i- (setf (mem-ref p type) *float-min*) Err bitreich.org 70 i- (mem-ref p type))) Err bitreich.org 70 i- #.*float-min*) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.nonconst.double.1 Err bitreich.org 70 i- (let ((type :double)) Err bitreich.org 70 i- (with-foreign-object (p type) Err bitreich.org 70 i- (setf (mem-ref p type) 0.0d0) Err bitreich.org 70 i- (mem-ref p type))) Err bitreich.org 70 i- 0.0d0) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.nonconst.double.2 Err bitreich.org 70 i- (let ((type :double)) Err bitreich.org 70 i- (with-foreign-object (p type) Err bitreich.org 70 i- (setf (mem-ref p type) *double-max*) Err bitreich.org 70 i- (mem-ref p type))) Err bitreich.org 70 i- #.*double-max*) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest deref.nonconst.double.3 Err bitreich.org 70 i- (let ((type :double)) Err bitreich.org 70 i- (with-foreign-object (p type) Err bitreich.org 70 i- (setf (mem-ref p type) *double-min*) Err bitreich.org 70 i- (mem-ref p type))) Err bitreich.org 70 i- #.*double-min*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; regression tests: lispworks's %mem-ref and %mem-set compiler Err bitreich.org 70 i-;;; macros were misbehaving. Err bitreich.org 70 i- Err bitreich.org 70 i-(defun mem-ref-rt-1 () Err bitreich.org 70 i- (with-foreign-object (a :int 2) Err bitreich.org 70 i- (setf (mem-aref a :int 0) 123 Err bitreich.org 70 i- (mem-aref a :int 1) 456) Err bitreich.org 70 i- (values (mem-aref a :int 0) (mem-aref a :int 1)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest mem-ref.rt.1 Err bitreich.org 70 i- (mem-ref-rt-1) Err bitreich.org 70 i- 123 456) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun mem-ref-rt-2 () Err bitreich.org 70 i- (with-foreign-object (a :double 2) Err bitreich.org 70 i- (setf (mem-aref a :double 0) 123.0d0 Err bitreich.org 70 i- (mem-aref a :double 1) 456.0d0) Err bitreich.org 70 i- (values (mem-aref a :double 0) (mem-aref a :double 1)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest mem-ref.rt.2 Err bitreich.org 70 i- (mem-ref-rt-2) Err bitreich.org 70 i- 123.0d0 456.0d0) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest incf-pointer.1 Err bitreich.org 70 i- (let ((ptr (null-pointer))) Err bitreich.org 70 i- (incf-pointer ptr) Err bitreich.org 70 i- (pointer-address ptr)) Err bitreich.org 70 i- 1) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest incf-pointer.2 Err bitreich.org 70 i- (let ((ptr (null-pointer))) Err bitreich.org 70 i- (incf-pointer ptr 42) Err bitreich.org 70 i- (pointer-address ptr)) Err bitreich.org 70 i- 42) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest pointerp.1 Err bitreich.org 70 i- (values Err bitreich.org 70 i- (pointerp (null-pointer)) Err bitreich.org 70 i- (null-pointer-p (null-pointer)) Err bitreich.org 70 i- (typep (null-pointer) 'foreign-pointer)) Err bitreich.org 70 i- t t t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest pointerp.2 Err bitreich.org 70 i- (let ((p (make-pointer #xFEFF))) Err bitreich.org 70 i- (values Err bitreich.org 70 i- (pointerp p) Err bitreich.org 70 i- (typep p 'foreign-pointer))) Err bitreich.org 70 i- t t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest pointerp.3 Err bitreich.org 70 i- (pointerp 'not-a-pointer) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest pointerp.4 Err bitreich.org 70 i- (pointerp 42) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest pointerp.5 Err bitreich.org 70 i- (pointerp 0) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest pointerp.6 Err bitreich.org 70 i- (pointerp nil) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest mem-ref.setf.1 Err bitreich.org 70 i- (with-foreign-object (p :char) Err bitreich.org 70 i- (setf (mem-ref p :char) 42)) Err bitreich.org 70 i- 42) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-foreign-type int+1 () Err bitreich.org 70 i- () Err bitreich.org 70 i- (:actual-type :int) Err bitreich.org 70 i- (:simple-parser int+1)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-to-foreign (value (type int+1)) Err bitreich.org 70 i- (1+ value)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-from-foreign (value (type int+1)) Err bitreich.org 70 i- (1+ value)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest mem-ref.setf.2 Err bitreich.org 70 i- (with-foreign-object (p 'int+1) Err bitreich.org 70 i- (values (setf (mem-ref p 'int+1) 42) Err bitreich.org 70 i- (mem-ref p 'int+1))) Err bitreich.org 70 i- 42 ; should this be 43? Err bitreich.org 70 i- 44) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest pointer-eq.non-pointers.1 Err bitreich.org 70 i- (expecting-error (pointer-eq 1 2)) Err bitreich.org 70 i- :error) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest pointer-eq.non-pointers.2 Err bitreich.org 70 i- (expecting-error (pointer-eq 'a 'b)) Err bitreich.org 70 i- :error) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest null-pointer-p.non-pointer.1 Err bitreich.org 70 i- (expecting-error (null-pointer-p 'not-a-pointer)) Err bitreich.org 70 i- :error) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest null-pointer-p.non-pointer.2 Err bitreich.org 70 i- (expecting-error (null-pointer-p 0)) Err bitreich.org 70 i- :error) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest null-pointer-p.non-pointer.3 Err bitreich.org 70 i- (expecting-error (null-pointer-p nil)) Err bitreich.org 70 i- :error) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/tests/misc-types.lisp b/3rdparties/software/cffi_0.20.0/tests/misc-types.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/tests/misc-types.lisp.gph bitreich.org 70 i@@ -1,296 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; misc-types.lisp --- Various tests on the type system. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-tests) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun ("my_strdup" strdup) :string+ptr (str :string)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun ("my_strfree" strfree) :void (str :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest misc-types.string+ptr Err bitreich.org 70 i- (destructuring-bind (string pointer) Err bitreich.org 70 i- (strdup "foo") Err bitreich.org 70 i- (strfree pointer) Err bitreich.org 70 i- string) Err bitreich.org 70 i- "foo") Err bitreich.org 70 i- Err bitreich.org 70 i-#-(and) Err bitreich.org 70 i-(deftest misc-types.string+ptr.ub8 Err bitreich.org 70 i- (destructuring-bind (string pointer) Err bitreich.org 70 i- (strdup (make-array 3 :element-type '(unsigned-byte 8) Err bitreich.org 70 i- :initial-contents (map 'list #'char-code "foo"))) Err bitreich.org 70 i- (strfree pointer) Err bitreich.org 70 i- string) Err bitreich.org 70 i- "foo") Err bitreich.org 70 i- Err bitreich.org 70 i-#-(and) Err bitreich.org 70 i-(deftest misc-types.string.ub8.1 Err bitreich.org 70 i- (let ((array (make-array 7 :element-type '(unsigned-byte 8) Err bitreich.org 70 i- :initial-contents '(84 117 114 97 110 103 97)))) Err bitreich.org 70 i- (with-foreign-string (foreign-string array) Err bitreich.org 70 i- (foreign-string-to-lisp foreign-string))) Err bitreich.org 70 i- "Turanga") Err bitreich.org 70 i- Err bitreich.org 70 i-#-(and) Err bitreich.org 70 i-(deftest misc-types.string.ub8.2 Err bitreich.org 70 i- (let ((str (foreign-string-alloc Err bitreich.org 70 i- (make-array 7 :element-type '(unsigned-byte 8) Err bitreich.org 70 i- :initial-contents '(84 117 114 97 110 103 97))))) Err bitreich.org 70 i- (prog1 (foreign-string-to-lisp str) Err bitreich.org 70 i- (foreign-string-free str))) Err bitreich.org 70 i- "Turanga") Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "equalequal" :boolean Err bitreich.org 70 i- (a (:boolean :int)) Err bitreich.org 70 i- (b (:boolean :unsigned-int))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "bool_and" (:boolean :char) Err bitreich.org 70 i- (a (:boolean :unsigned-char)) Err bitreich.org 70 i- (b (:boolean :char))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "bool_xor" (:boolean :unsigned-long) Err bitreich.org 70 i- (a (:boolean :long)) Err bitreich.org 70 i- (b (:boolean :unsigned-long))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest misc-types.boolean.1 Err bitreich.org 70 i- (list (equalequal nil nil) Err bitreich.org 70 i- (equalequal t t) Err bitreich.org 70 i- (equalequal t 23) Err bitreich.org 70 i- (bool-and 'a 'b) Err bitreich.org 70 i- (bool-and "foo" nil) Err bitreich.org 70 i- (bool-xor t nil) Err bitreich.org 70 i- (bool-xor nil nil)) Err bitreich.org 70 i- (t t t t nil t nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "sizeof_bool" :unsigned-int) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest misc-types.sizeof.bool Err bitreich.org 70 i- (eql (sizeof-bool) (foreign-type-size :bool)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "bool_to_unsigned" :unsigned-int Err bitreich.org 70 i- (b :bool)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "unsigned_to_bool" :bool Err bitreich.org 70 i- (u :unsigned-int)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest misc-types.bool.convert-to-foreign.mem Err bitreich.org 70 i- (loop for v in '(nil t) Err bitreich.org 70 i- collect Err bitreich.org 70 i- (with-foreign-object (b :bool) Err bitreich.org 70 i- (setf (mem-ref b :bool) v) Err bitreich.org 70 i- (mem-ref b #.(cffi::canonicalize-foreign-type :bool)))) Err bitreich.org 70 i- (0 1)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest misc-types.bool.convert-to-foreign.call Err bitreich.org 70 i- (mapcar #'bool-to-unsigned '(nil t)) Err bitreich.org 70 i- (0 1)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest misc-types.bool.convert-from-foreign.mem Err bitreich.org 70 i- (loop for v in '(0 1 42) Err bitreich.org 70 i- collect Err bitreich.org 70 i- (with-foreign-object (b :bool) Err bitreich.org 70 i- (setf (mem-ref b #.(cffi::canonicalize-foreign-type :bool)) v) Err bitreich.org 70 i- (mem-ref b :bool))) Err bitreich.org 70 i- (nil t t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest misc-types.bool.convert-from-foreign.call Err bitreich.org 70 i- (mapcar #'unsigned-to-bool '(0 1 42)) Err bitreich.org 70 i- (nil t t)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Regression test: boolean type only worked with canonicalized Err bitreich.org 70 i-;;; built-in integer types. Should work for any type that canonicalizes Err bitreich.org 70 i-;;; to a built-in integer type. Err bitreich.org 70 i-(defctype int-for-bool :int) Err bitreich.org 70 i-(defcfun ("equalequal" equalequal2) :boolean Err bitreich.org 70 i- (a (:boolean int-for-bool)) Err bitreich.org 70 i- (b (:boolean :uint))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest misc-types.boolean.2 Err bitreich.org 70 i- (equalequal2 nil t) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype my-string :string+ptr) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun funkify (str) Err bitreich.org 70 i- (concatenate 'string "MORE " (string-upcase str))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun 3rd-person (value) Err bitreich.org 70 i- (list (concatenate 'string "Strdup says: " (first value)) Err bitreich.org 70 i- (second value))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; (defctype funky-string Err bitreich.org 70 i-;; (:wrapper my-string Err bitreich.org 70 i-;; :to-c #'funkify Err bitreich.org 70 i-;; :from-c (lambda (value) Err bitreich.org 70 i-;; (list Err bitreich.org 70 i-;; (concatenate 'string "Strdup says: " Err bitreich.org 70 i-;; (first value)) Err bitreich.org 70 i-;; (second value)))) Err bitreich.org 70 i-;; "A useful type.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype funky-string (:wrapper my-string :to-c funkify :from-c 3rd-person)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun ("my_strdup" funky-strdup) funky-string Err bitreich.org 70 i- (str funky-string)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest misc-types.wrapper Err bitreich.org 70 i- (destructuring-bind (string ptr) Err bitreich.org 70 i- (funky-strdup "code") Err bitreich.org 70 i- (strfree ptr) Err bitreich.org 70 i- string) Err bitreich.org 70 i- "Strdup says: MORE CODE") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest misc-types.sized-ints Err bitreich.org 70 i- (mapcar #'foreign-type-size Err bitreich.org 70 i- '(:int8 :uint8 :int16 :uint16 :int32 :uint32 :int64 :uint64)) Err bitreich.org 70 i- (1 1 2 2 4 4 8 8)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-foreign-type error-error () Err bitreich.org 70 i- () Err bitreich.org 70 i- (:actual-type :int) Err bitreich.org 70 i- (:simple-parser error-error)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-to-foreign (value (type error-error)) Err bitreich.org 70 i- (declare (ignore value)) Err bitreich.org 70 i- (error "translate-to-foreign invoked.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-from-foreign (value (type error-error)) Err bitreich.org 70 i- (declare (ignore value)) Err bitreich.org 70 i- (error "translate-from-foreign invoked.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:load-toplevel :compile-toplevel :execute) Err bitreich.org 70 i- (defmethod expand-to-foreign (value (type error-error)) Err bitreich.org 70 i- value) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod expand-from-foreign (value (type error-error)) Err bitreich.org 70 i- value)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun ("abs" expand-abs) error-error Err bitreich.org 70 i- (n error-error)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcvar ("var_int" *expand-var-int*) error-error) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun ("expect_int_sum" expand-expect-int-sum) :boolean Err bitreich.org 70 i- (cb :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcallback expand-int-sum error-error ((x error-error) (y error-error)) Err bitreich.org 70 i- (+ x y)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Ensure that macroexpansion-time translators are called where this Err bitreich.org 70 i-;;; is guaranteed (defcfun, defcvar, foreign-funcall and defcallback) Err bitreich.org 70 i-(deftest misc-types.expand.1 Err bitreich.org 70 i- (expand-abs -1) Err bitreich.org 70 i- 1) Err bitreich.org 70 i- Err bitreich.org 70 i-#-cffi-sys::no-foreign-funcall Err bitreich.org 70 i-(deftest misc-types.expand.2 Err bitreich.org 70 i- (foreign-funcall "abs" error-error -1 error-error) Err bitreich.org 70 i- 1) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest misc-types.expand.3 Err bitreich.org 70 i- (let ((old (mem-ref (get-var-pointer '*expand-var-int*) :int))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (setf *expand-var-int* 42) Err bitreich.org 70 i- *expand-var-int*) Err bitreich.org 70 i- (setf (mem-ref (get-var-pointer '*expand-var-int*) :int) old))) Err bitreich.org 70 i- 42) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest misc-types.expand.4 Err bitreich.org 70 i- (expand-expect-int-sum (callback expand-int-sum)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-foreign-type translate-tracker () Err bitreich.org 70 i- () Err bitreich.org 70 i- (:actual-type :int) Err bitreich.org 70 i- (:simple-parser translate-tracker)) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (special .fto-called.)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod free-translated-object (value (type translate-tracker) param) Err bitreich.org 70 i- (declare (ignore value param)) Err bitreich.org 70 i- (setf .fto-called. t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-foreign-type expand-tracker () Err bitreich.org 70 i- () Err bitreich.org 70 i- (:actual-type :int) Err bitreich.org 70 i- (:simple-parser expand-tracker)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod free-translated-object (value (type expand-tracker) param) Err bitreich.org 70 i- (declare (ignore value param)) Err bitreich.org 70 i- (setf .fto-called. t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (defmethod expand-to-foreign (value (type expand-tracker)) Err bitreich.org 70 i- (declare (ignore value)) Err bitreich.org 70 i- (call-next-method))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun ("abs" ttracker-abs) :int Err bitreich.org 70 i- (n translate-tracker)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun ("abs" etracker-abs) :int Err bitreich.org 70 i- (n expand-tracker)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; free-translated-object must be called when there is no etf Err bitreich.org 70 i-(deftest misc-types.expand.5 Err bitreich.org 70 i- (let ((.fto-called. nil)) Err bitreich.org 70 i- (ttracker-abs -1) Err bitreich.org 70 i- .fto-called.) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-;; free-translated-object must be called when there is an etf, but Err bitreich.org 70 i-;; they answer *runtime-translator-form* Err bitreich.org 70 i-(deftest misc-types.expand.6 Err bitreich.org 70 i- (let ((.fto-called. nil)) Err bitreich.org 70 i- (etracker-abs -1) Err bitreich.org 70 i- .fto-called.) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-foreign-type misc-type.expand.7 () Err bitreich.org 70 i- () Err bitreich.org 70 i- (:actual-type :int) Err bitreich.org 70 i- (:simple-parser misc-type.expand.7)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-to-foreign (value (type misc-type.expand.7)) Err bitreich.org 70 i- (values value 'second-value)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Auxiliary function to test CONVERT-TO-FOREIGN's compiler macro. Err bitreich.org 70 i-(defun misc-type.expand.7-aux () Err bitreich.org 70 i- (convert-to-foreign "foo" 'misc-type.expand.7)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Checking that expand-to-foreign doesn't ignore the second value of Err bitreich.org 70 i-;; translate-to-foreign. Err bitreich.org 70 i-(deftest misc-type.expand.7 Err bitreich.org 70 i- (misc-type.expand.7-aux) Err bitreich.org 70 i- "foo" second-value) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Like MISC-TYPE.EXPAND.7 but doesn't depend on compiler macros Err bitreich.org 70 i-;; kicking in. Err bitreich.org 70 i-(deftest misc-type.expand.8 Err bitreich.org 70 i- (eval (expand-to-foreign "foo" (cffi::parse-type 'misc-type.expand.7))) Err bitreich.org 70 i- "foo" second-value) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/tests/misc.lisp b/3rdparties/software/cffi_0.20.0/tests/misc.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/tests/misc.lisp.gph bitreich.org 70 i@@ -1,132 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; misc.lisp --- Miscellaneous tests. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2006, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-tests) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# foreign-symbol-pointer tests Err bitreich.org 70 i- Err bitreich.org 70 i-;;; This might be useful for some libraries that compare function Err bitreich.org 70 i-;;; pointers. http://thread.gmane.org/gmane.lisp.cffi.devel/694 Err bitreich.org 70 i-(defcfun "compare_against_abs" :boolean (p :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-symbol-pointer.1 Err bitreich.org 70 i- (compare-against-abs (foreign-symbol-pointer "abs")) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "compare_against_xpto_fun" :boolean (p :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest foreign-symbol-pointer.2 Err bitreich.org 70 i- (compare-against-xpto-fun (foreign-symbol-pointer "xpto_fun")) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Library tests Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Need to figure out a way to test this. CLISP, for instance, will Err bitreich.org 70 i-;;; automatically reopen the foreign-library when we call a foreign Err bitreich.org 70 i-;;; function so we can't test CLOSE-FOREIGN-LIBRARY this way. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; IIRC, GCC has some extensions to have code run when a library is Err bitreich.org 70 i-;;; loaded and stuff like that. That could work. Err bitreich.org 70 i- Err bitreich.org 70 i-#|| Err bitreich.org 70 i-#-(and ecl (not dffi)) Err bitreich.org 70 i-(deftest library.close.2 Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (close-foreign-library 'libtest) Err bitreich.org 70 i- (ignore-errors (my-sqrtf 16.0))) Err bitreich.org 70 i- (load-test-libraries)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-#-(or (and ecl (not dffi)) Err bitreich.org 70 i- cffi-sys::flat-namespace Err bitreich.org 70 i- cffi-sys::no-foreign-funcall) Err bitreich.org 70 i-(deftest library.close.2 Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (values Err bitreich.org 70 i- (foreign-funcall ("ns_function" :library libtest) :boolean) Err bitreich.org 70 i- (close-foreign-library 'libtest) Err bitreich.org 70 i- (foreign-funcall "ns_function" :boolean) Err bitreich.org 70 i- (close-foreign-library 'libtest2) Err bitreich.org 70 i- (close-foreign-library 'libtest2) Err bitreich.org 70 i- (ignore-errors (foreign-funcall "ns_function" :boolean))) Err bitreich.org 70 i- (load-test-libraries)) Err bitreich.org 70 i- t t nil t nil nil) Err bitreich.org 70 i-||# Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest library.error.1 Err bitreich.org 70 i- (handler-case (load-foreign-library "libdoesnotexistimsure") Err bitreich.org 70 i- (load-foreign-library-error () 'error)) Err bitreich.org 70 i- error) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-foreign-library pseudo-library Err bitreich.org 70 i- (t pseudo-library-spec)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; RT: T clause was being handled as :T by FEATUREP. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; We might want to export (and clean up) the API used in this test Err bitreich.org 70 i-;;; when the need arises. Err bitreich.org 70 i-(deftest library.t-clause Err bitreich.org 70 i- (eq (cffi::foreign-library-spec Err bitreich.org 70 i- (cffi::get-foreign-library 'pseudo-library)) Err bitreich.org 70 i- 'pseudo-library-spec) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-foreign-library library-with-pathname Err bitreich.org 70 i- (t #p"libdoesnotexistimsure")) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; RT: we were mishandling pathnames within libraries. (lp#1720626) Err bitreich.org 70 i-(deftest library.error.2 Err bitreich.org 70 i- (handler-case (load-foreign-library 'library-with-pathname) Err bitreich.org 70 i- (load-foreign-library-error () 'error)) Err bitreich.org 70 i- error) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest library.error.3 Err bitreich.org 70 i- (handler-case (load-foreign-library #p"libdoesnotexistimsure") Err bitreich.org 70 i- (load-foreign-library-error () 'error)) Err bitreich.org 70 i- error) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Shareable Byte Vector Tests Err bitreich.org 70 i- Err bitreich.org 70 i-#+ecl Err bitreich.org 70 i-(mapc (lambda (x) (pushnew x rt::*expected-failures*)) Err bitreich.org 70 i- '(shareable-vector.1 shareable-vector.2)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest shareable-vector.1 Err bitreich.org 70 i- (let ((vector (cffi-sys::make-shareable-byte-vector 5))) Err bitreich.org 70 i- (cffi::with-pointer-to-vector-data (pointer vector) Err bitreich.org 70 i- (strcpy pointer "xpto")) Err bitreich.org 70 i- vector) Err bitreich.org 70 i- #(120 112 116 111 0)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest shareable-vector.2 Err bitreich.org 70 i- (block nil Err bitreich.org 70 i- (let ((vector (cffi-sys::make-shareable-byte-vector 5))) Err bitreich.org 70 i- (cffi::with-pointer-to-vector-data (pointer vector) Err bitreich.org 70 i- (strcpy pointer "xpto") Err bitreich.org 70 i- (return vector)))) Err bitreich.org 70 i- #(120 112 116 111 0)) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/tests/package.lisp b/3rdparties/software/cffi_0.20.0/tests/package.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/tests/package.lisp.gph bitreich.org 70 i@@ -1,33 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; package.lisp --- CFFI-TESTS package definition. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cl-user) Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:cffi-tests Err bitreich.org 70 i- (:use #:cl #:cffi #:cffi-sys #:regression-test) Err bitreich.org 70 i- (:export #:do-tests #:run-cffi-tests #:run-all-cffi-tests) Err bitreich.org 70 i- (:shadow #:deftest)) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/tests/random-tester.lisp b/3rdparties/software/cffi_0.20.0/tests/random-tester.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/tests/random-tester.lisp.gph bitreich.org 70 i@@ -1,246 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; random-tester.lisp --- Random test generator. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2006, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-;;; This code was used to generate the C and Lisp source code for Err bitreich.org 70 i-;;; the CALLBACKS.BFF.[12] and DEFCFUN.BFF.[12] tests. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The original idea was to test all combinations of argument types Err bitreich.org 70 i-;;; but obviously as soon as you do the maths that it's not quite Err bitreich.org 70 i-;;; feasable for more that 4 or 5 arguments. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; TODO: actually run random tests, ie compile/load/run the tests Err bitreich.org 70 i-;;; this code can generate. Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:cffi-random-tester Err bitreich.org 70 i- (:use #:cl #:cffi #:alexandria #:regression-test)) Err bitreich.org 70 i-(in-package #:cffi-random-tester) Err bitreich.org 70 i- Err bitreich.org 70 i-(defstruct (c-type (:conc-name type-)) Err bitreich.org 70 i- keyword Err bitreich.org 70 i- name Err bitreich.org 70 i- abbrev Err bitreich.org 70 i- min Err bitreich.org 70 i- max) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter +types+ Err bitreich.org 70 i- (mapcar (lambda (type) Err bitreich.org 70 i- (let ((keyword (first type)) Err bitreich.org 70 i- (name (second type))) Err bitreich.org 70 i- (multiple-value-bind (min max) Err bitreich.org 70 i- ;; assume we can represent an integer in the range Err bitreich.org 70 i- ;; [-2^16 2^16-1] in a float/double without causing Err bitreich.org 70 i- ;; rounding errors (probably a lame assumption) Err bitreich.org 70 i- (let ((type-size (if (or (eq keyword :float) Err bitreich.org 70 i- (eq keyword :double)) Err bitreich.org 70 i- 16 Err bitreich.org 70 i- (* 8 (foreign-type-size keyword))))) Err bitreich.org 70 i- (if (or (eql (char name 0) #\u) (eq keyword :pointer)) Err bitreich.org 70 i- (values 0 (1- (expt 2 type-size))) Err bitreich.org 70 i- (values (- (expt 2 (1- type-size))) Err bitreich.org 70 i- (1- (expt 2 (1- type-size)))))) Err bitreich.org 70 i- (make-c-type :keyword keyword :name name :abbrev (third type) Err bitreich.org 70 i- :min min :max max)))) Err bitreich.org 70 i- '((:char "char" "c") Err bitreich.org 70 i- (:unsigned-char "unsigned char" "uc") Err bitreich.org 70 i- (:short "short" "s") Err bitreich.org 70 i- (:unsigned-short "unsigned short" "us") Err bitreich.org 70 i- (:int "int" "i") Err bitreich.org 70 i- (:unsigned-int "unsigned int" "ui") Err bitreich.org 70 i- (:long "long" "l") Err bitreich.org 70 i- (:unsigned-long "unsigned long" "ul") Err bitreich.org 70 i- (:float "float" "f") Err bitreich.org 70 i- (:double "double" "d") Err bitreich.org 70 i- (:pointer "void*" "p") Err bitreich.org 70 i- (:long-long "long long" "ll") Err bitreich.org 70 i- (:unsigned-long-long "unsigned long long" "ull")))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun find-type (keyword) Err bitreich.org 70 i- (find keyword +types+ :key #'type-keyword)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun n-random-types (n) Err bitreich.org 70 i- (loop repeat n collect (nth (random (length +types+)) +types+))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; same as above, without the long long types Err bitreich.org 70 i-(defun n-random-types-no-ll (n) Err bitreich.org 70 i- (loop repeat n collect (nth (random (- (length +types+) 2)) +types+))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun random-range (x y) Err bitreich.org 70 i- (+ x (random (+ (- y x) 2)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun random-sum (rettype arg-types) Err bitreich.org 70 i- "Returns a list of integers that fit in the respective types in the Err bitreich.org 70 i-ARG-TYPES list and whose sum fits in RETTYPE." Err bitreich.org 70 i- (loop with sum = 0 Err bitreich.org 70 i- for type in arg-types Err bitreich.org 70 i- for x = (random-range (max (- (type-min rettype) sum) (type-min type)) Err bitreich.org 70 i- (min (- (type-max rettype) sum) (type-max type))) Err bitreich.org 70 i- do (incf sum x) Err bitreich.org 70 i- collect x)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun combinations (n items) Err bitreich.org 70 i- (let ((combs '())) Err bitreich.org 70 i- (labels ((rec (n accum) Err bitreich.org 70 i- (if (= n 0) Err bitreich.org 70 i- (push accum combs) Err bitreich.org 70 i- (loop for item in items Err bitreich.org 70 i- do (rec (1- n) (cons item accum)))))) Err bitreich.org 70 i- (rec n '()) Err bitreich.org 70 i- combs))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun function-name (rettype arg-types) Err bitreich.org 70 i- (format nil "sum_~A_~{_~A~}" Err bitreich.org 70 i- (type-abbrev rettype) Err bitreich.org 70 i- (mapcar #'type-abbrev arg-types))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun c-function (rettype arg-types) Err bitreich.org 70 i- (let ((args (loop for type in arg-types and i from 1 Err bitreich.org 70 i- collect (list (type-name type) (format nil "a~A" i))))) Err bitreich.org 70 i- (format t "DLLEXPORT ~A ~A(~{~{~A ~A~}~^, ~})~%~ Err bitreich.org 70 i- { return ~A(~A) ~{~A~^ + ~}~A; }" Err bitreich.org 70 i- (type-name rettype) (function-name rettype arg-types) args Err bitreich.org 70 i- (if (eq (type-keyword rettype) :pointer) Err bitreich.org 70 i- "(void *)((unsigned int)(" Err bitreich.org 70 i- "") Err bitreich.org 70 i- (type-name rettype) Err bitreich.org 70 i- (loop for arg-pair in args collect Err bitreich.org 70 i- (format nil "~A~A~A" Err bitreich.org 70 i- (cond ((string= (first arg-pair) "void*") Err bitreich.org 70 i- "(unsigned int) ") Err bitreich.org 70 i- ((or (string= (first arg-pair) "double") Err bitreich.org 70 i- (string= (first arg-pair) "float")) Err bitreich.org 70 i- "((int) ") Err bitreich.org 70 i- (t "")) Err bitreich.org 70 i- (second arg-pair) Err bitreich.org 70 i- (if (member (first arg-pair) Err bitreich.org 70 i- '("void*" "double" "float") Err bitreich.org 70 i- :test #'string=) Err bitreich.org 70 i- ")" Err bitreich.org 70 i- ""))) Err bitreich.org 70 i- (if (eq (type-keyword rettype) :pointer) "))" "")))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun c-callback (rettype arg-types args) Err bitreich.org 70 i- (format t "DLLEXPORT ~A call_~A(~A (*func)(~{~A~^, ~}~^))~%~ Err bitreich.org 70 i- { return func(~{~A~^, ~}); }" Err bitreich.org 70 i- (type-name rettype) (function-name rettype arg-types) Err bitreich.org 70 i- (type-name rettype) (mapcar #'type-name arg-types) Err bitreich.org 70 i- (loop for type in arg-types and value in args collect Err bitreich.org 70 i- (format nil "~A~A" Err bitreich.org 70 i- (if (eq (type-keyword type) :pointer) Err bitreich.org 70 i- "(void *) " Err bitreich.org 70 i- "") Err bitreich.org 70 i- value)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; (output-c-code #p"generated.c" 3 5) Err bitreich.org 70 i-(defun output-c-code (file min max) Err bitreich.org 70 i- (with-open-file (stream file :direction :output :if-exists :error) Err bitreich.org 70 i- (let ((*standard-output* stream)) Err bitreich.org 70 i- (format t "/* automatically generated functions and callbacks */~%~%") Err bitreich.org 70 i- (loop for n from min upto max do Err bitreich.org 70 i- (format t "/* ~A args */" (1- n)) Err bitreich.org 70 i- (loop for comb in (combinations n +types+) do Err bitreich.org 70 i- (terpri) (c-function (car comb) (cdr comb)) Err bitreich.org 70 i- (terpri) (c-callback (car comb) (cdr comb))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-conversion (type form) Err bitreich.org 70 i- (case type Err bitreich.org 70 i- (:double `(float ,form 1.0d0)) Err bitreich.org 70 i- (:float `(float ,form)) Err bitreich.org 70 i- (:pointer `(make-pointer ,form)) Err bitreich.org 70 i- (t form))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun integer-conversion (type form) Err bitreich.org 70 i- (case type Err bitreich.org 70 i- ((:double :float) `(values (floor ,form))) Err bitreich.org 70 i- (:pointer `(pointer-address ,form)) Err bitreich.org 70 i- (t form))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun gen-arg-values (rettype arg-types) Err bitreich.org 70 i- (let ((numbers (random-sum rettype arg-types))) Err bitreich.org 70 i- (values Err bitreich.org 70 i- (reduce #'+ numbers) Err bitreich.org 70 i- (loop for type in arg-types and n in numbers Err bitreich.org 70 i- collect (case (type-keyword type) Err bitreich.org 70 i- (:double (float n 1.0d0)) Err bitreich.org 70 i- (:float (float n)) Err bitreich.org 70 i- (:pointer `(make-pointer ,n)) Err bitreich.org 70 i- (t n)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun gen-function-test (rettype arg-types) Err bitreich.org 70 i- (let* ((fun-name (function-name rettype arg-types)) Err bitreich.org 70 i- (fun-sym (cffi::lisp-function-name fun-name))) Err bitreich.org 70 i- (multiple-value-bind (sum value-forms) Err bitreich.org 70 i- (gen-arg-values rettype arg-types) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (defcfun (,fun-name ,fun-sym) ,(type-keyword rettype) Err bitreich.org 70 i- ,@(loop for type in arg-types and i from 1 collect Err bitreich.org 70 i- (list (symbolicate '#:a (format nil "~A" i)) Err bitreich.org 70 i- (type-keyword type)))) Err bitreich.org 70 i- (deftest ,(symbolicate '#:defcfun. fun-sym) Err bitreich.org 70 i- ,(integer-conversion (type-keyword rettype) Err bitreich.org 70 i- `(,fun-sym ,@value-forms)) Err bitreich.org 70 i- ,sum))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun gen-callback-test (rettype arg-types sum) Err bitreich.org 70 i- (let* ((fname (function-name rettype arg-types)) Err bitreich.org 70 i- (cb-sym (cffi::lisp-function-name fname)) Err bitreich.org 70 i- (fun-name (concatenate 'string "call_" fname)) Err bitreich.org 70 i- (fun-sym (cffi::lisp-function-name fun-name)) Err bitreich.org 70 i- (arg-names (loop for i from 1 upto (length arg-types) collect Err bitreich.org 70 i- (symbolicate '#:a (format nil "~A" i))))) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (defcfun (,fun-name ,fun-sym) ,(type-keyword rettype) (cb :pointer)) Err bitreich.org 70 i- (defcallback ,cb-sym ,(type-keyword rettype) Err bitreich.org 70 i- ,(loop for type in arg-types and name in arg-names Err bitreich.org 70 i- collect (list name (type-keyword type))) Err bitreich.org 70 i- ,(integer-conversion Err bitreich.org 70 i- (type-keyword rettype) Err bitreich.org 70 i- `(+ ,@(mapcar (lambda (tp n) Err bitreich.org 70 i- (integer-conversion (type-keyword tp) n)) Err bitreich.org 70 i- arg-types arg-names)))) Err bitreich.org 70 i- (deftest ,(symbolicate '#:callbacks. cb-sym) Err bitreich.org 70 i- ,(integer-conversion (type-keyword rettype) Err bitreich.org 70 i- `(,fun-sym (callback ,cb-sym))) Err bitreich.org 70 i- ,sum)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun cb-test (&key no-long-long) Err bitreich.org 70 i- (let* ((rettype (find-type (if no-long-long :long :long-long))) Err bitreich.org 70 i- (arg-types (if no-long-long Err bitreich.org 70 i- (n-random-types-no-ll 127) Err bitreich.org 70 i- (n-random-types 127))) Err bitreich.org 70 i- (args (random-sum rettype arg-types)) Err bitreich.org 70 i- (sum (reduce #'+ args))) Err bitreich.org 70 i- (c-callback rettype arg-types args) Err bitreich.org 70 i- (gen-callback-test rettype arg-types sum))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; (defmacro define-function-and-callback-tests (min max) Err bitreich.org 70 i-;; `(progn Err bitreich.org 70 i-;; ,@(loop for n from min upto max appending Err bitreich.org 70 i-;; (loop for comb in (combinations n +types+) Err bitreich.org 70 i-;; collect (gen-function-test (car comb) (cdr comb)) Err bitreich.org 70 i-;; collect (gen-callback-test (car comb) (cdr comb)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; (define-function-and-callback-tests 3 5) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/tests/run-tests.lisp b/3rdparties/software/cffi_0.20.0/tests/run-tests.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/tests/run-tests.lisp.gph bitreich.org 70 i@@ -1,44 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; run-tests.lisp --- Simple script to run the unit tests. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cl-user) Err bitreich.org 70 i- Err bitreich.org 70 i-(setf *load-verbose* nil *compile-verbose* nil *compile-print* nil) Err bitreich.org 70 i-#+cmucl (setf ext:*gc-verbose* nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(require "asdf") Err bitreich.org 70 i- Err bitreich.org 70 i-(format t "~&;;; -------- Running tests in ~A --------~%" Err bitreich.org 70 i- (uiop:implementation-identifier)) Err bitreich.org 70 i- Err bitreich.org 70 i-(asdf:load-system "cffi-tests" :verbose nil) Err bitreich.org 70 i-(asdf:test-system "cffi-tests") Err bitreich.org 70 i- Err bitreich.org 70 i-(terpri) Err bitreich.org 70 i-(force-output) Err bitreich.org 70 i- Err bitreich.org 70 i-(uiop:quit) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/tests/strings.lisp b/3rdparties/software/cffi_0.20.0/tests/strings.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/tests/strings.lisp.gph bitreich.org 70 i@@ -1,150 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; strings.lisp --- Tests for foreign string conversion. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005, James Bielman Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-tests) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Foreign String Conversion Tests Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; With the implementation of encoding support, there are a lot of Err bitreich.org 70 i-;;; things that can go wrong with foreign string conversions. This is Err bitreich.org 70 i-;;; a start at defining tests for strings and encoding conversion, but Err bitreich.org 70 i-;;; there needs to be a lot more. Err bitreich.org 70 i- Err bitreich.org 70 i-(babel:enable-sharp-backslash-syntax) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; *ASCII-TEST-STRING* contains the characters in the ASCII character Err bitreich.org 70 i-;;; set that we will convert to a foreign string and check against Err bitreich.org 70 i-;;; *ASCII-TEST-BYTES*. We don't bother with control characters. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; FIXME: It would probably be good to move these tables into files Err bitreich.org 70 i-;;; in "tests/", especially if we ever want to get fancier and have Err bitreich.org 70 i-;;; tests for more encodings. Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (defparameter *ascii-test-string* Err bitreich.org 70 i- (concatenate 'string " !\"#$%&'()*+,-./0123456789:;" Err bitreich.org 70 i- "<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]" Err bitreich.org 70 i- "^_`abcdefghijklmnopqrstuvwxyz{|}~"))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; *ASCII-TEST-BYTES* contains the expected ASCII encoded values Err bitreich.org 70 i-;;; for each character in *ASCII-TEST-STRING*. Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (defparameter *ascii-test-bytes* Err bitreich.org 70 i- (let ((vector (make-array 95 :element-type '(unsigned-byte 8)))) Err bitreich.org 70 i- (loop for i from 0 Err bitreich.org 70 i- for code from 32 below 127 Err bitreich.org 70 i- do (setf (aref vector i) code) Err bitreich.org 70 i- finally (return vector))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Test basic consistency converting a string to and from Lisp using Err bitreich.org 70 i-;;; the default encoding. Err bitreich.org 70 i-(deftest string.conversion.basic Err bitreich.org 70 i- (with-foreign-string (s *ascii-test-string*) Err bitreich.org 70 i- (foreign-string-to-lisp s)) Err bitreich.org 70 i- #.*ascii-test-string* 95) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest string.conversion.basic.2 Err bitreich.org 70 i- (with-foreign-string ((ptr size) "123" :null-terminated-p nil) Err bitreich.org 70 i- (values (foreign-string-to-lisp ptr :count 3) size)) Err bitreich.org 70 i- "123" 3) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Ensure that conversion of *ASCII-TEST-STRING* to a foreign buffer Err bitreich.org 70 i-;;; and back preserves ASCII encoding. Err bitreich.org 70 i-(deftest string.encoding.ascii Err bitreich.org 70 i- (with-foreign-string (s *ascii-test-string* :encoding :ascii) Err bitreich.org 70 i- (let ((vector (make-array 95 :element-type '(unsigned-byte 8)))) Err bitreich.org 70 i- (loop for i from 0 below (length vector) Err bitreich.org 70 i- do (setf (aref vector i) (mem-ref s :unsigned-char i))) Err bitreich.org 70 i- vector)) Err bitreich.org 70 i- #.*ascii-test-bytes*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; FIXME: bogus test. We need support for BOM or UTF-16{BE,LE}. Err bitreich.org 70 i-(pushnew 'string.encoding.utf-16.basic rtest::*expected-failures*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Test UTF-16 conversion of a string back and forth. Tests proper Err bitreich.org 70 i-;;; null terminator handling for wide character strings and ensures no Err bitreich.org 70 i-;;; byte order marks are added. (Why no BOM? --luis) Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; FIXME: an identical test using :UTF-16 wouldn't work because on Err bitreich.org 70 i-;;; little-endian architectures, :UTF-16 defaults to little-endian Err bitreich.org 70 i-;;; when writing and big-endian on reading because the BOM is Err bitreich.org 70 i-;;; suppressed. Err bitreich.org 70 i-#-babel::8-bit-chars Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (deftest string.encoding.utf-16le.basic Err bitreich.org 70 i- (with-foreign-string (s *ascii-test-string* :encoding :utf-16le) Err bitreich.org 70 i- (foreign-string-to-lisp s :encoding :utf-16le)) Err bitreich.org 70 i- #.*ascii-test-string* 190) Err bitreich.org 70 i- Err bitreich.org 70 i- (deftest string.encoding.utf-16be.basic Err bitreich.org 70 i- (with-foreign-string (s *ascii-test-string* :encoding :utf-16be) Err bitreich.org 70 i- (foreign-string-to-lisp s :encoding :utf-16be)) Err bitreich.org 70 i- #.*ascii-test-string* 190)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Ensure that writing a long string into a short buffer does not Err bitreich.org 70 i-;;; attempt to write beyond the edge of the buffer, and that the Err bitreich.org 70 i-;;; resulting string is still null terminated. Err bitreich.org 70 i-(deftest string.short-write.1 Err bitreich.org 70 i- (with-foreign-pointer (buf 6) Err bitreich.org 70 i- (setf (mem-ref buf :unsigned-char 5) 70) Err bitreich.org 70 i- (lisp-string-to-foreign "ABCDE" buf 5 :encoding :ascii) Err bitreich.org 70 i- (values (mem-ref buf :unsigned-char 4) Err bitreich.org 70 i- (mem-ref buf :unsigned-char 5))) Err bitreich.org 70 i- 0 70) Err bitreich.org 70 i- Err bitreich.org 70 i-#-babel::8-bit-chars Err bitreich.org 70 i-(deftest string.encoding.utf-8.basic Err bitreich.org 70 i- (with-foreign-pointer (buf 7 size) Err bitreich.org 70 i- (let ((string (concatenate 'babel:unicode-string Err bitreich.org 70 i- '(#\u03bb #\u00e3 #\u03bb)))) Err bitreich.org 70 i- (lisp-string-to-foreign string buf size :encoding :utf-8) Err bitreich.org 70 i- (loop for i from 0 below size Err bitreich.org 70 i- collect (mem-ref buf :unsigned-char i)))) Err bitreich.org 70 i- (206 187 195 163 206 187 0)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *basic-latin-alphabet* "abcdefghijklmnopqrstuvwxyz") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest string.encodings.all.basic Err bitreich.org 70 i- (let (failed) Err bitreich.org 70 i- ;;; FIXME: UTF-{32,16} and friends fail due to lack of BOM. See Err bitreich.org 70 i- ;;; STRING.ENCODING.UTF-16.BASIC for more details. Err bitreich.org 70 i- (dolist (encoding (remove-if (lambda (x) Err bitreich.org 70 i- (member x '(:utf-32 :utf-16 :ucs-2))) Err bitreich.org 70 i- (babel:list-character-encodings))) Err bitreich.org 70 i- ;; (format t "Testing ~S~%" encoding) Err bitreich.org 70 i- (with-foreign-string (ptr *basic-latin-alphabet* :encoding encoding) Err bitreich.org 70 i- (let ((string (foreign-string-to-lisp ptr :encoding encoding))) Err bitreich.org 70 i- ;; (format t " got ~S~%" string) Err bitreich.org 70 i- (unless (string= *basic-latin-alphabet* string) Err bitreich.org 70 i- (push encoding failed))))) Err bitreich.org 70 i- failed) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; rt: make sure *default-foreign-enconding* binds to a keyword Err bitreich.org 70 i-(deftest string.encodings.default Err bitreich.org 70 i- (keywordp *default-foreign-encoding*) Err bitreich.org 70 i- t) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/tests/struct.lisp b/3rdparties/software/cffi_0.20.0/tests/struct.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/tests/struct.lisp.gph bitreich.org 70 i@@ -1,705 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; struct.lisp --- Foreign structure type tests. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Copyright (C) 2005-2011, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-tests) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct timeval Err bitreich.org 70 i- (tv-secs :long) Err bitreich.org 70 i- (tv-usecs :long)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *timeval-size* (* 2 (max (foreign-type-size :long) Err bitreich.org 70 i- (foreign-type-alignment :long)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Basic Structure Tests Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest struct.1 Err bitreich.org 70 i- (- (foreign-type-size 'timeval) *timeval-size*) Err bitreich.org 70 i- 0) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest struct.2 Err bitreich.org 70 i- (with-foreign-object (tv 'timeval) Err bitreich.org 70 i- (setf (foreign-slot-value tv 'timeval 'tv-secs) 0) Err bitreich.org 70 i- (setf (foreign-slot-value tv 'timeval 'tv-usecs) 1) Err bitreich.org 70 i- (values (foreign-slot-value tv 'timeval 'tv-secs) Err bitreich.org 70 i- (foreign-slot-value tv 'timeval 'tv-usecs))) Err bitreich.org 70 i- 0 1) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest struct.3 Err bitreich.org 70 i- (with-foreign-object (tv 'timeval) Err bitreich.org 70 i- (with-foreign-slots ((tv-secs tv-usecs) tv timeval) Err bitreich.org 70 i- (setf tv-secs 100 tv-usecs 200) Err bitreich.org 70 i- (values tv-secs tv-usecs))) Err bitreich.org 70 i- 100 200) Err bitreich.org 70 i- Err bitreich.org 70 i-;; regression test: accessing a struct through a typedef Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype xpto (:struct timeval)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest struct.4 Err bitreich.org 70 i- (with-foreign-object (tv 'xpto) Err bitreich.org 70 i- (setf (foreign-slot-value tv 'xpto 'tv-usecs) 1) Err bitreich.org 70 i- (values (foreign-slot-value tv 'xpto 'tv-usecs) Err bitreich.org 70 i- (foreign-slot-value tv 'timeval 'tv-usecs))) Err bitreich.org 70 i- 1 1) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest struct.names Err bitreich.org 70 i- (sort (foreign-slot-names 'xpto) #'< Err bitreich.org 70 i- :key (lambda (x) (foreign-slot-offset 'xpto x))) Err bitreich.org 70 i- (tv-secs tv-usecs)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; regression test: compiler macro not quoting the type in the Err bitreich.org 70 i-;; resulting mem-ref form. The compiler macro on foreign-slot-value Err bitreich.org 70 i-;; is not guaranteed to be expanded though. Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype my-int :int) Err bitreich.org 70 i-(defcstruct s5 (a my-int)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest struct.5 Err bitreich.org 70 i- (with-foreign-object (s 's5) Err bitreich.org 70 i- (setf (foreign-slot-value s 's5 'a) 42) Err bitreich.org 70 i- (foreign-slot-value s 's5 'a)) Err bitreich.org 70 i- 42) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Structs with type translators Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct struct-string Err bitreich.org 70 i- (s :string)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest struct.string.1 Err bitreich.org 70 i- (with-foreign-object (ptr 'struct-string) Err bitreich.org 70 i- (with-foreign-slots ((s) ptr struct-string) Err bitreich.org 70 i- (setf s "So long and thanks for all the fish!") Err bitreich.org 70 i- s)) Err bitreich.org 70 i- "So long and thanks for all the fish!") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest struct.string.2 Err bitreich.org 70 i- (with-foreign-object (ptr 'struct-string) Err bitreich.org 70 i- (setf (foreign-slot-value ptr 'struct-string 's) "Cha") Err bitreich.org 70 i- (foreign-slot-value ptr 'struct-string 's)) Err bitreich.org 70 i- "Cha") Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Structure Alignment Tests Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; See libtest.c and types.lisp for some comments about alignments. Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct s-ch Err bitreich.org 70 i- (a-char :char)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype s-ch (:struct s-ch)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct s-s-ch Err bitreich.org 70 i- (another-char :char) Err bitreich.org 70 i- (a-s-ch s-ch)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype s-s-ch (:struct s-s-ch)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcvar "the_s_s_ch" s-s-ch) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest struct.alignment.1 Err bitreich.org 70 i- (list 'a-char (foreign-slot-value Err bitreich.org 70 i- (foreign-slot-pointer *the-s-s-ch* 's-s-ch 'a-s-ch) Err bitreich.org 70 i- 's-ch 'a-char) Err bitreich.org 70 i- 'another-char (foreign-slot-value *the-s-s-ch* 's-s-ch 'another-char)) Err bitreich.org 70 i- (a-char 1 another-char 2)) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct s-short Err bitreich.org 70 i- (a-char :char) Err bitreich.org 70 i- (another-char :char) Err bitreich.org 70 i- (a-short :short)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype s-short (:struct s-short)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct s-s-short Err bitreich.org 70 i- (yet-another-char :char) Err bitreich.org 70 i- (a-s-short s-short)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype s-s-short (:struct s-s-short)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcvar "the_s_s_short" s-s-short) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest struct.alignment.2 Err bitreich.org 70 i- (with-foreign-slots ((yet-another-char a-s-short) *the-s-s-short* s-s-short) Err bitreich.org 70 i- (with-foreign-slots ((a-char another-char a-short) a-s-short s-short) Err bitreich.org 70 i- (list 'a-char a-char Err bitreich.org 70 i- 'another-char another-char Err bitreich.org 70 i- 'a-short a-short Err bitreich.org 70 i- 'yet-another-char yet-another-char))) Err bitreich.org 70 i- (a-char 1 another-char 2 a-short 3 yet-another-char 4)) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct s-double Err bitreich.org 70 i- (a-char :char) Err bitreich.org 70 i- (a-double :double) Err bitreich.org 70 i- (another-char :char)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype s-double (:struct s-double)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct s-s-double Err bitreich.org 70 i- (yet-another-char :char) Err bitreich.org 70 i- (a-s-double s-double) Err bitreich.org 70 i- (a-short :short)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype s-s-double (:struct s-s-double)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcvar "the_s_s_double" s-s-double) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest struct.alignment.3 Err bitreich.org 70 i- (with-foreign-slots Err bitreich.org 70 i- ((yet-another-char a-s-double a-short) *the-s-s-double* s-s-double) Err bitreich.org 70 i- (with-foreign-slots ((a-char a-double another-char) a-s-double s-double) Err bitreich.org 70 i- (list 'a-char a-char Err bitreich.org 70 i- 'a-double a-double Err bitreich.org 70 i- 'another-char another-char Err bitreich.org 70 i- 'yet-another-char yet-another-char Err bitreich.org 70 i- 'a-short a-short))) Err bitreich.org 70 i- (a-char 1 a-double 2.0d0 another-char 3 yet-another-char 4 a-short 5)) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct s-s-s-double Err bitreich.org 70 i- (another-short :short) Err bitreich.org 70 i- (a-s-s-double s-s-double) Err bitreich.org 70 i- (last-char :char)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype s-s-s-double (:struct s-s-s-double)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcvar "the_s_s_s_double" s-s-s-double) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest struct.alignment.4 Err bitreich.org 70 i- (with-foreign-slots Err bitreich.org 70 i- ((another-short a-s-s-double last-char) *the-s-s-s-double* s-s-s-double) Err bitreich.org 70 i- (with-foreign-slots Err bitreich.org 70 i- ((yet-another-char a-s-double a-short) a-s-s-double s-s-double) Err bitreich.org 70 i- (with-foreign-slots ((a-char a-double another-char) a-s-double s-double) Err bitreich.org 70 i- (list 'a-char a-char Err bitreich.org 70 i- 'a-double a-double Err bitreich.org 70 i- 'another-char another-char Err bitreich.org 70 i- 'yet-another-char yet-another-char Err bitreich.org 70 i- 'a-short a-short Err bitreich.org 70 i- 'another-short another-short Err bitreich.org 70 i- 'last-char last-char)))) Err bitreich.org 70 i- (a-char 1 a-double 2.0d0 another-char 3 yet-another-char 4 a-short 5 Err bitreich.org 70 i- another-short 6 last-char 7)) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct s-double2 Err bitreich.org 70 i- (a-double :double) Err bitreich.org 70 i- (a-short :short)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype s-double2 (:struct s-double2)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct s-s-double2 Err bitreich.org 70 i- (a-char :char) Err bitreich.org 70 i- (a-s-double2 s-double2) Err bitreich.org 70 i- (another-short :short)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype s-s-double2 (:struct s-s-double2)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcvar "the_s_s_double2" s-s-double2) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest struct.alignment.5 Err bitreich.org 70 i- (with-foreign-slots Err bitreich.org 70 i- ((a-char a-s-double2 another-short) *the-s-s-double2* s-s-double2) Err bitreich.org 70 i- (with-foreign-slots ((a-double a-short) a-s-double2 s-double2) Err bitreich.org 70 i- (list 'a-double a-double Err bitreich.org 70 i- 'a-short a-short Err bitreich.org 70 i- 'a-char a-char Err bitreich.org 70 i- 'another-short another-short))) Err bitreich.org 70 i- (a-double 1.0d0 a-short 2 a-char 3 another-short 4)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct s-long-long Err bitreich.org 70 i- (a-long-long :long-long) Err bitreich.org 70 i- (a-short :short)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype s-long-long (:struct s-long-long)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct s-s-long-long Err bitreich.org 70 i- (a-char :char) Err bitreich.org 70 i- (a-s-long-long s-long-long) Err bitreich.org 70 i- (another-short :short)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype s-s-long-long (:struct s-s-long-long)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcvar "the_s_s_long_long" s-s-long-long) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest struct.alignment.6 Err bitreich.org 70 i- (with-foreign-slots Err bitreich.org 70 i- ((a-char a-s-long-long another-short) *the-s-s-long-long* s-s-long-long) Err bitreich.org 70 i- (with-foreign-slots ((a-long-long a-short) a-s-long-long s-long-long) Err bitreich.org 70 i- (list 'a-long-long a-long-long Err bitreich.org 70 i- 'a-short a-short Err bitreich.org 70 i- 'a-char a-char Err bitreich.org 70 i- 'another-short another-short))) Err bitreich.org 70 i- (a-long-long 1 a-short 2 a-char 3 another-short 4)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct s-s-double3 Err bitreich.org 70 i- (a-s-double2 s-double2) Err bitreich.org 70 i- (another-short :short)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype s-s-double3 (:struct s-s-double3)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct s-s-s-double3 Err bitreich.org 70 i- (a-s-s-double3 s-s-double3) Err bitreich.org 70 i- (a-char :char)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype s-s-s-double3 (:struct s-s-s-double3)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcvar "the_s_s_s_double3" s-s-s-double3) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest struct.alignment.7 Err bitreich.org 70 i- (with-foreign-slots ((a-s-s-double3 a-char) *the-s-s-s-double3* s-s-s-double3) Err bitreich.org 70 i- (with-foreign-slots ((a-s-double2 another-short) a-s-s-double3 s-s-double3) Err bitreich.org 70 i- (with-foreign-slots ((a-double a-short) a-s-double2 s-double2) Err bitreich.org 70 i- (list 'a-double a-double Err bitreich.org 70 i- 'a-short a-short Err bitreich.org 70 i- 'another-short another-short Err bitreich.org 70 i- 'a-char a-char)))) Err bitreich.org 70 i- (a-double 1.0d0 a-short 2 another-short 3 a-char 4)) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct empty-struct) Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype empty-struct (:struct empty-struct)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct with-empty-struct Err bitreich.org 70 i- (foo empty-struct) Err bitreich.org 70 i- (an-int :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; commented out this test because an empty struct is not valid/standard C Err bitreich.org 70 i-;; left the struct declarations anyway because they should be handled Err bitreich.org 70 i-;; gracefuly anyway. Err bitreich.org 70 i- Err bitreich.org 70 i-; (defcvar "the_with_empty_struct" with-empty-struct) Err bitreich.org 70 i-; Err bitreich.org 70 i-; (deftest struct.alignment.5 Err bitreich.org 70 i-; (with-foreign-slots ((foo an-int) *the-with-empty-struct* with-empty-struct) Err bitreich.org 70 i-; an-int) Err bitreich.org 70 i-; 42) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;; regression test, setf-ing nested foreign-slot-value forms Err bitreich.org 70 i-;; the setf expander used to return a bogus getter Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct s1 Err bitreich.org 70 i- (an-int :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype s1 (:struct s1)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct s2 Err bitreich.org 70 i- (an-s1 s1)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype s2 (:struct s2)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest struct.nested-setf Err bitreich.org 70 i- (with-foreign-object (an-s2 's2) Err bitreich.org 70 i- (setf (foreign-slot-value (foreign-slot-value an-s2 's2 'an-s1) Err bitreich.org 70 i- 's1 'an-int) Err bitreich.org 70 i- 1984) Err bitreich.org 70 i- (foreign-slot-value (foreign-slot-value an-s2 's2 'an-s1) Err bitreich.org 70 i- 's1 'an-int)) Err bitreich.org 70 i- 1984) Err bitreich.org 70 i- Err bitreich.org 70 i-;; regression test, some Lisps were returning 4 instead of 8 for Err bitreich.org 70 i-;; (foreign-type-alignment :unsigned-long-long) on darwin/ppc32 Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct s-unsigned-long-long Err bitreich.org 70 i- (an-unsigned-long-long :unsigned-long-long) Err bitreich.org 70 i- (a-short :short)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype s-unsigned-long-long (:struct s-unsigned-long-long)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct s-s-unsigned-long-long Err bitreich.org 70 i- (a-char :char) Err bitreich.org 70 i- (a-s-unsigned-long-long s-unsigned-long-long) Err bitreich.org 70 i- (another-short :short)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype s-s-unsigned-long-long (:struct s-s-unsigned-long-long)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcvar "the_s_s_unsigned_long_long" s-s-unsigned-long-long) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest struct.alignment.8 Err bitreich.org 70 i- (with-foreign-slots Err bitreich.org 70 i- ((a-char a-s-unsigned-long-long another-short) Err bitreich.org 70 i- *the-s-s-unsigned-long-long* s-s-unsigned-long-long) Err bitreich.org 70 i- (with-foreign-slots ((an-unsigned-long-long a-short) Err bitreich.org 70 i- a-s-unsigned-long-long s-unsigned-long-long) Err bitreich.org 70 i- (list 'an-unsigned-long-long an-unsigned-long-long Err bitreich.org 70 i- 'a-short a-short Err bitreich.org 70 i- 'a-char a-char Err bitreich.org 70 i- 'another-short another-short))) Err bitreich.org 70 i- (an-unsigned-long-long 1 a-short 2 a-char 3 another-short 4)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# C Struct Wrappers Err bitreich.org 70 i- Err bitreich.org 70 i-(define-c-struct-wrapper timeval ()) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-c-struct-wrapper (timeval2 (:struct timeval)) () Err bitreich.org 70 i- (tv-secs)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-example-timeval (var &body body) Err bitreich.org 70 i- `(with-foreign-object (,var 'timeval) Err bitreich.org 70 i- (with-foreign-slots ((tv-secs tv-usecs) ,var timeval) Err bitreich.org 70 i- (setf tv-secs 42 tv-usecs 1984) Err bitreich.org 70 i- ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest struct-wrapper.1 Err bitreich.org 70 i- (with-example-timeval ptr Err bitreich.org 70 i- (let ((obj (make-instance 'timeval :pointer ptr))) Err bitreich.org 70 i- (values (timeval-tv-secs obj) Err bitreich.org 70 i- (timeval-tv-usecs obj)))) Err bitreich.org 70 i- 42 1984) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest struct-wrapper.2 Err bitreich.org 70 i- (with-example-timeval ptr Err bitreich.org 70 i- (let ((obj (make-instance 'timeval2 :pointer ptr))) Err bitreich.org 70 i- (timeval2-tv-secs obj))) Err bitreich.org 70 i- 42) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;# Structures as Values Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct (struct-pair :class pair) Err bitreich.org 70 i- (a :int) Err bitreich.org 70 i- (b :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype struct-pair-typedef1 (:struct struct-pair)) Err bitreich.org 70 i-(defctype struct-pair-typedef2 (:pointer (:struct struct-pair))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest struct.unparse.1 Err bitreich.org 70 i- (mapcar (alexandria:compose #'cffi::unparse-type #'cffi::parse-type) Err bitreich.org 70 i- '(struct-pair Err bitreich.org 70 i- (:struct struct-pair) Err bitreich.org 70 i- struct-pair-typedef1 Err bitreich.org 70 i- struct-pair-typedef2)) Err bitreich.org 70 i- (struct-pair Err bitreich.org 70 i- (:struct struct-pair) Err bitreich.org 70 i- struct-pair-typedef1 Err bitreich.org 70 i- struct-pair-typedef2)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest struct.canonicalize.1 Err bitreich.org 70 i- (mapcar #'cffi::canonicalize-foreign-type Err bitreich.org 70 i- '(struct-pair Err bitreich.org 70 i- (:struct struct-pair) Err bitreich.org 70 i- struct-pair-typedef1 Err bitreich.org 70 i- struct-pair-typedef2)) Err bitreich.org 70 i- (:pointer Err bitreich.org 70 i- (:struct struct-pair) Err bitreich.org 70 i- (:struct struct-pair) Err bitreich.org 70 i- :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest struct.canonicalize.2 Err bitreich.org 70 i- (mapcar #'cffi::canonicalize-foreign-type Err bitreich.org 70 i- '(struct-pair Err bitreich.org 70 i- (:struct struct-pair) Err bitreich.org 70 i- struct-pair-typedef1 Err bitreich.org 70 i- struct-pair-typedef2)) Err bitreich.org 70 i- (:pointer Err bitreich.org 70 i- (:struct struct-pair) Err bitreich.org 70 i- (:struct struct-pair) Err bitreich.org 70 i- :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-from-foreign (pointer (type pair)) Err bitreich.org 70 i- (with-foreign-slots ((a b) pointer (:struct struct-pair)) Err bitreich.org 70 i- (cons a b))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-into-foreign-memory (object (type pair) pointer) Err bitreich.org 70 i- (with-foreign-slots ((a b) pointer (:struct struct-pair)) Err bitreich.org 70 i- (setf a (car object) Err bitreich.org 70 i- b (cdr object)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-to-foreign (object (type pair)) Err bitreich.org 70 i- (let ((p (foreign-alloc '(:struct struct-pair)))) Err bitreich.org 70 i- (translate-into-foreign-memory object type p) Err bitreich.org 70 i- (values p t))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod free-translated-object (pointer (type pair) freep) Err bitreich.org 70 i- (when freep Err bitreich.org 70 i- (foreign-free pointer))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest struct-values.translation.1 Err bitreich.org 70 i- (multiple-value-bind (p freep) Err bitreich.org 70 i- (convert-to-foreign '(1 . 2) 'struct-pair) Err bitreich.org 70 i- (assert freep) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (convert-from-foreign p 'struct-pair) Err bitreich.org 70 i- (free-converted-object p 'struct-pair freep))) Err bitreich.org 70 i- (1 . 2)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "pair_pointer_sum" :int Err bitreich.org 70 i- (p (:pointer (:struct struct-pair)))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+#:pointer-translation-not-yet-implemented Err bitreich.org 70 i-(deftest struct-values.translation.2 Err bitreich.org 70 i- (pair-pointer-sum '(1 . 2)) Err bitreich.org 70 i- 3) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; should the return type be something along the lines of Err bitreich.org 70 i-;;; (:pointer (:struct pair) :free t)? Err bitreich.org 70 i-;;; LMH: error on ":free t" option? Err bitreich.org 70 i-(defcfun "alloc_pair" (:pointer (:struct struct-pair)) Err bitreich.org 70 i- (a :int) Err bitreich.org 70 i- (b :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; bogus: doesn't free() pointer. Err bitreich.org 70 i-#+#:pointer-translation-not-yet-implemented Err bitreich.org 70 i-(deftest struct-values.translation.3 Err bitreich.org 70 i- (alloc-pair 1 2) Err bitreich.org 70 i- (1 . 2)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest struct-values.translation.mem-ref.1 Err bitreich.org 70 i- (with-foreign-object (p '(:struct struct-pair)) Err bitreich.org 70 i- (setf (mem-ref p '(:struct struct-pair)) '(1 . 2)) Err bitreich.org 70 i- (with-foreign-slots ((a b) p (:struct struct-pair)) Err bitreich.org 70 i- (values (mem-ref p '(:struct struct-pair)) Err bitreich.org 70 i- a Err bitreich.org 70 i- b))) Err bitreich.org 70 i- (1 . 2) Err bitreich.org 70 i- 1 Err bitreich.org 70 i- 2) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest struct-values.translation.mem-aref.1 Err bitreich.org 70 i- (with-foreign-object (p '(:struct struct-pair) 2) Err bitreich.org 70 i- (setf (mem-aref p '(:struct struct-pair) 0) '(1 . 2) Err bitreich.org 70 i- (mem-aref p '(:struct struct-pair) 1) '(3 . 4)) Err bitreich.org 70 i- (values (mem-aref p '(:struct struct-pair) 0) Err bitreich.org 70 i- (mem-aref p '(:struct struct-pair) 1))) Err bitreich.org 70 i- (1 . 2) Err bitreich.org 70 i- (3 . 4)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct (struct-pair-default-translate :class pair-default) Err bitreich.org 70 i- (a :int) Err bitreich.org 70 i- (b :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest struct-values-default.translation.mem-ref.1 Err bitreich.org 70 i- (with-foreign-object (p '(:struct struct-pair-default-translate)) Err bitreich.org 70 i- (setf (mem-ref p '(:struct struct-pair-default-translate)) '(a 1 b 2)) Err bitreich.org 70 i- (with-foreign-slots ((a b) p (:struct struct-pair-default-translate)) Err bitreich.org 70 i- (let ((plist (mem-ref p '(:struct struct-pair-default-translate)))) Err bitreich.org 70 i- (values (getf plist 'a) Err bitreich.org 70 i- (getf plist 'b) Err bitreich.org 70 i- a Err bitreich.org 70 i- b)))) Err bitreich.org 70 i- 1 Err bitreich.org 70 i- 2 Err bitreich.org 70 i- 1 Err bitreich.org 70 i- 2) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct (struct-pair+double :class pair+double) Err bitreich.org 70 i- (pr (:struct struct-pair-default-translate)) Err bitreich.org 70 i- (dbl :double)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest struct-values-default.translation.mem-ref.2 Err bitreich.org 70 i- (with-foreign-object (p '(:struct struct-pair+double)) Err bitreich.org 70 i- (setf (mem-ref p '(:struct struct-pair+double)) '(pr (a 4 b 5) dbl 2.5d0)) Err bitreich.org 70 i- (with-foreign-slots ((pr dbl) p (:struct struct-pair+double)) Err bitreich.org 70 i- (let ((plist (mem-ref p '(:struct struct-pair+double)))) Err bitreich.org 70 i- (values (getf (getf plist 'pr) 'a) Err bitreich.org 70 i- (getf (getf plist 'pr) 'b) Err bitreich.org 70 i- (getf plist 'dbl))))) Err bitreich.org 70 i- 4 Err bitreich.org 70 i- 5 Err bitreich.org 70 i- 2.5d0) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct (struct-pair+1 :class pair+1) Err bitreich.org 70 i- (p (:pointer (:struct struct-pair))) Err bitreich.org 70 i- (c :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype struct-pair+1 (:struct struct-pair+1)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-from-foreign (pointer (type pair+1)) Err bitreich.org 70 i- (with-foreign-slots ((p c) pointer struct-pair+1) Err bitreich.org 70 i- (cons p c))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-into-foreign-memory (object (type pair+1) pointer) Err bitreich.org 70 i- (with-foreign-slots ((c) pointer struct-pair+1) Err bitreich.org 70 i- (convert-into-foreign-memory (car object) Err bitreich.org 70 i- 'struct-pair Err bitreich.org 70 i- (foreign-slot-pointer pointer Err bitreich.org 70 i- 'struct-pair+1 Err bitreich.org 70 i- 'p)) Err bitreich.org 70 i- (setf c (cdr object)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod translate-to-foreign (object (type pair+1)) Err bitreich.org 70 i- (let ((p (foreign-alloc 'struct-pair+1))) Err bitreich.org 70 i- (translate-into-foreign-memory object type p) Err bitreich.org 70 i- (values p t))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod free-translated-object (pointer (type pair+1) freep) Err bitreich.org 70 i- (when freep Err bitreich.org 70 i- (foreign-free pointer))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+#:pointer-translation-not-yet-implemented Err bitreich.org 70 i-(deftest struct-values.translation.ppo.1 Err bitreich.org 70 i- (multiple-value-bind (p freep) Err bitreich.org 70 i- (convert-to-foreign '((1 . 2) . 3) 'struct-pair+1) Err bitreich.org 70 i- (assert freep) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (convert-from-foreign p 'struct-pair+1) Err bitreich.org 70 i- (free-converted-object p 'struct-pair+1 freep))) Err bitreich.org 70 i- ((1 . 2) . 3)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+#:unimplemented Err bitreich.org 70 i-(defcfun "pair_plus_one_sum" :int Err bitreich.org 70 i- (p (:struct pair+1))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "pair_plus_one_pointer_sum" :int Err bitreich.org 70 i- (p (:pointer (:struct struct-pair+1)))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+#:pointer-translation-not-yet-implemented Err bitreich.org 70 i-(deftest struct-values.translation.ppo.2 Err bitreich.org 70 i- (pair-plus-one-pointer-sum '((1 . 2) . 3)) Err bitreich.org 70 i- 6) Err bitreich.org 70 i- Err bitreich.org 70 i-#+#:unimplemented Err bitreich.org 70 i-(defcfun "make_pair_plus_one" (:struct pair+1) Err bitreich.org 70 i- (a :int) Err bitreich.org 70 i- (b :int) Err bitreich.org 70 i- (c :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun "alloc_pair_plus_one" struct-pair+1 Err bitreich.org 70 i- (a :int) Err bitreich.org 70 i- (b :int) Err bitreich.org 70 i- (c :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; bogus: doesn't free() pointer. Err bitreich.org 70 i-#+#:pointer-translation-not-yet-implemented Err bitreich.org 70 i-(deftest struct-values.translation.ppo.3 Err bitreich.org 70 i- (alloc-pair-plus-one 1 2 3) Err bitreich.org 70 i- ((1 . 2) . 3)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+#:unimplemented Err bitreich.org 70 i-(defcfun "pair_sum" :int Err bitreich.org 70 i- (p (:struct pair))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+#:unimplemented Err bitreich.org 70 i-(defcfun "make_pair" (:struct pair) Err bitreich.org 70 i- (a :int) Err bitreich.org 70 i- (b :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-#|| ; TODO: load cffi-libffi for these tests to work. Err bitreich.org 70 i-(deftest struct-values.fn.1 Err bitreich.org 70 i- (with-foreign-object (p '(:struct pair)) Err bitreich.org 70 i- (with-foreign-slots ((a b) p (:struct pair)) Err bitreich.org 70 i- (setf a -1 b 2) Err bitreich.org 70 i- (pair-sum p))) Err bitreich.org 70 i- 1) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest struct-values.fn.2 Err bitreich.org 70 i- (pair-sum '(3 . 5)) Err bitreich.org 70 i- 8) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest struct-values.fn.3 Err bitreich.org 70 i- (with-foreign-object (p '(:struct pair)) Err bitreich.org 70 i- (make-pair 7 11 :result-pointer p) Err bitreich.org 70 i- (with-foreign-slots ((a b) p (:struct pair)) Err bitreich.org 70 i- (cons a b))) Err bitreich.org 70 i- (7 . 11)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest struct-values.fn.4 Err bitreich.org 70 i- (make-pair 13 17) Err bitreich.org 70 i- (13 . 17)) Err bitreich.org 70 i-||# Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct single-byte-struct Err bitreich.org 70 i- (a :uint8)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest bare-struct-types.1 Err bitreich.org 70 i- (eql (foreign-type-size 'single-byte-struct) Err bitreich.org 70 i- (foreign-type-size '(:struct single-byte-struct))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype single-byte-struct-alias (:struct single-byte-struct)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest bare-struct-types.2 Err bitreich.org 70 i- (eql (foreign-type-size 'single-byte-struct-alias) Err bitreich.org 70 i- (foreign-type-size '(:struct single-byte-struct))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Old-style access to inner structure fields. Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct inner-struct (x :int)) Err bitreich.org 70 i-(defcstruct old-style-outer (inner inner-struct)) Err bitreich.org 70 i-(defcstruct new-style-outer (inner (:struct inner-struct))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest old-style-struct-access Err bitreich.org 70 i- (with-foreign-object (s '(:struct old-style-outer)) Err bitreich.org 70 i- (let ((inner-ptr (foreign-slot-pointer s 'old-style-outer 'inner))) Err bitreich.org 70 i- (setf (foreign-slot-value inner-ptr 'inner-struct 'x) 42)) Err bitreich.org 70 i- (assert (pointerp (foreign-slot-value s 'old-style-outer 'inner))) Err bitreich.org 70 i- (foreign-slot-value (foreign-slot-value s 'old-style-outer 'inner) Err bitreich.org 70 i- 'inner-struct 'x)) Err bitreich.org 70 i- 42) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest new-style-struct-access Err bitreich.org 70 i- (with-foreign-object (s '(:struct new-style-outer)) Err bitreich.org 70 i- (let ((inner-ptr (foreign-slot-pointer s 'new-style-outer 'inner))) Err bitreich.org 70 i- (setf (foreign-slot-value inner-ptr 'inner-struct 'x) 42)) Err bitreich.org 70 i- (foreign-slot-value s 'new-style-outer 'inner)) Err bitreich.org 70 i- (x 42)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; regression test: setting the value of aggregate slots. Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct aggregate-struct Err bitreich.org 70 i- (x :int) Err bitreich.org 70 i- (pair (:struct struct-pair)) Err bitreich.org 70 i- (y :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest set-aggregate-struct-slot Err bitreich.org 70 i- (with-foreign-objects ((pair-struct '(:struct struct-pair)) Err bitreich.org 70 i- (aggregate-struct '(:struct aggregate-struct))) Err bitreich.org 70 i- (with-foreign-slots ((a b) pair-struct (:struct struct-pair)) Err bitreich.org 70 i- (setf a 1 b 2) Err bitreich.org 70 i- (with-foreign-slots ((x pair y) aggregate-struct (:struct aggregate-struct)) Err bitreich.org 70 i- (setf x 42 y 42) Err bitreich.org 70 i- (setf pair pair-struct) Err bitreich.org 70 i- (values x pair y)))) Err bitreich.org 70 i- 42 Err bitreich.org 70 i- (1 . 2) Err bitreich.org 70 i- 42) Err bitreich.org 70 i- Err bitreich.org 70 i-;; TODO this needs to go through compile-file to exhibit the error Err bitreich.org 70 i-;; ("don't know how to dump #"), but Err bitreich.org 70 i-;; there's no support for that, so let's leave it at toplevel here. Err bitreich.org 70 i-(defcstruct (aggregate-struct.acc :conc-name acc-) Err bitreich.org 70 i- (x :int) Err bitreich.org 70 i- (pair (:struct struct-pair)) Err bitreich.org 70 i- (y :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest set-aggregate-struct-slot.acc Err bitreich.org 70 i- (with-foreign-objects ((pair-struct '(:struct struct-pair)) Err bitreich.org 70 i- (aggregate-struct '(:struct aggregate-struct))) Err bitreich.org 70 i- (with-foreign-slots ((a b) pair-struct (:struct struct-pair)) Err bitreich.org 70 i- (setf a 1 b 2) Err bitreich.org 70 i- (setf (acc-x aggregate-struct) 42) Err bitreich.org 70 i- (setf (acc-y aggregate-struct) 42) Err bitreich.org 70 i- (setf (acc-pair aggregate-struct) pair-struct) Err bitreich.org 70 i- (values (acc-x aggregate-struct) Err bitreich.org 70 i- (acc-pair aggregate-struct) Err bitreich.org 70 i- (acc-y aggregate-struct)))) Err bitreich.org 70 i- 42 Err bitreich.org 70 i- (1 . 2) Err bitreich.org 70 i- 42) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/tests/test-asdf.lisp b/3rdparties/software/cffi_0.20.0/tests/test-asdf.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/tests/test-asdf.lisp.gph bitreich.org 70 i@@ -1,42 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; asdf.lisp --- CFFI-Grovel asdf support tests. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2015, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-tests) Err bitreich.org 70 i- Err bitreich.org 70 i-#.(when (cffi-toolchain::static-ops-enabled-p) Err bitreich.org 70 i- '(deftest test-static-program Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (asdf:operate :static-program-op :cffi-tests/example) Err bitreich.org 70 i- (let ((program (asdf:output-file :static-program-op :cffi-tests/example))) Err bitreich.org 70 i- (uiop:run-program `(,(native-namestring program) "1" "2 3") :output :lines))) Err bitreich.org 70 i- ("Arguments: 1 \"2 3\"" "hello, world!") nil 0)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest test-asdf-load Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (asdf:load-system :cffi-tests/example) Err bitreich.org 70 i- (uiop:symbol-call :cffi-example :check-groveller)) Err bitreich.org 70 i- nil) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/tests/test-static-link.sh b/3rdparties/software/cffi_0.20.0/tests/test-static-link.sh /scm/clic/file/3rdparties/software/cffi_0.20.0/tests/test-static-link.sh.gph bitreich.org 70 i@@ -1,9 +0,0 @@ Err bitreich.org 70 i-#!/bin/sh -eux Err bitreich.org 70 i- Err bitreich.org 70 i-for l in sbcl ; do # mkcl ecl clisp sbcl Err bitreich.org 70 i- EX="$(cl-launch -l $l -sp cffi-toolchain -ip "(output-file :static-program-op :cffi-tests/example)")" Err bitreich.org 70 i- rm -f $EX ; : Err bitreich.org 70 i- cl-launch -l $l -sp cffi-toolchain -i "(operate :static-program-op :cffi-tests/example)" Err bitreich.org 70 i- [ -f $EX ] Err bitreich.org 70 i- [ "$($EX)" = "hello, world!" ] Err bitreich.org 70 i-done Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/tests/union.lisp b/3rdparties/software/cffi_0.20.0/tests/union.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/tests/union.lisp.gph bitreich.org 70 i@@ -1,52 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; union.lisp --- Tests on C unions. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-tests) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcunion uint32-bytes Err bitreich.org 70 i- (int-value :unsigned-int) Err bitreich.org 70 i- (bytes :unsigned-char :count 4)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype uint32-bytes (:union uint32-bytes)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun int-to-bytes (n) Err bitreich.org 70 i- "Convert N to a list of bytes using a union." Err bitreich.org 70 i- (with-foreign-object (obj 'uint32-bytes) Err bitreich.org 70 i- (setf (foreign-slot-value obj 'uint32-bytes 'int-value) n) Err bitreich.org 70 i- (loop for i from 0 below 4 Err bitreich.org 70 i- collect (mem-aref Err bitreich.org 70 i- (foreign-slot-value obj 'uint32-bytes 'bytes) Err bitreich.org 70 i- :unsigned-char i)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest union.1 Err bitreich.org 70 i- (let ((bytes (int-to-bytes #x12345678))) Err bitreich.org 70 i- (cond ((equal bytes '(#x12 #x34 #x56 #x78)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- ((equal bytes '(#x78 #x56 #x34 #x12)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- (t bytes))) Err bitreich.org 70 i- t) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/toolchain/bundle.lisp b/3rdparties/software/cffi_0.20.0/toolchain/bundle.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/toolchain/bundle.lisp.gph bitreich.org 70 i@@ -1,565 +0,0 @@ Err bitreich.org 70 i-;;;; ------------------------------------------------------------------------- Err bitreich.org 70 i-;;;; ASDF-Bundle Err bitreich.org 70 i- Err bitreich.org 70 i-(uiop/package:define-package :asdf/bundle Err bitreich.org 70 i- (:recycle :asdf/bundle :asdf) Err bitreich.org 70 i- (:use :uiop/common-lisp :uiop :asdf/upgrade Err bitreich.org 70 i- :asdf/component :asdf/system :asdf/find-system :asdf/find-component :asdf/operation Err bitreich.org 70 i- :asdf/action :asdf/lisp-action :asdf/plan :asdf/operate :asdf/defsystem) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- #:bundle-op #:bundle-type #:program-system Err bitreich.org 70 i- #:bundle-system #:bundle-pathname-type #:direct-dependency-files Err bitreich.org 70 i- #:monolithic-op #:monolithic-bundle-op #:operation-monolithic-p Err bitreich.org 70 i- #:basic-compile-bundle-op #:prepare-bundle-op Err bitreich.org 70 i- #:compile-bundle-op #:load-bundle-op #:monolithic-compile-bundle-op #:monolithic-load-bundle-op Err bitreich.org 70 i- #:lib-op #:monolithic-lib-op Err bitreich.org 70 i- #:dll-op #:monolithic-dll-op Err bitreich.org 70 i- #:deliver-asd-op #:monolithic-deliver-asd-op Err bitreich.org 70 i- #:program-op #:image-op #:compiled-file #:precompiled-system #:prebuilt-system Err bitreich.org 70 i- #:user-system-p #:user-system #:trivial-system-p Err bitreich.org 70 i- #:prologue-code #:epilogue-code #:static-library)) Err bitreich.org 70 i-(in-package :asdf/bundle) Err bitreich.org 70 i- Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defclass bundle-op (basic-compile-op) Err bitreich.org 70 i- ;; NB: use of instance-allocated slots for operations is DEPRECATED Err bitreich.org 70 i- ;; and only supported in a temporary fashion for backward compatibility. Err bitreich.org 70 i- ;; Supported replacement: Define slots on program-system instead. Err bitreich.org 70 i- ((bundle-type :initform :no-output-file :reader bundle-type :allocation :class)) Err bitreich.org 70 i- (:documentation "base class for operations that bundle outputs from multiple components")) Err bitreich.org 70 i- Err bitreich.org 70 i- (defclass monolithic-op (operation) () Err bitreich.org 70 i- (:documentation "A MONOLITHIC operation operates on a system *and all of its Err bitreich.org 70 i-dependencies*. So, for example, a monolithic concatenate operation will Err bitreich.org 70 i-concatenate together a system's components and all of its dependencies, but a Err bitreich.org 70 i-simple concatenate operation will concatenate only the components of the system Err bitreich.org 70 i-itself.")) Err bitreich.org 70 i- Err bitreich.org 70 i- (defclass monolithic-bundle-op (bundle-op monolithic-op) Err bitreich.org 70 i- ;; Old style way of specifying prologue and epilogue on ECL: in the monolithic operation. Err bitreich.org 70 i- ;; DEPRECATED. Supported replacement: Define slots on program-system instead. Err bitreich.org 70 i- ((prologue-code :initform nil :accessor prologue-code) Err bitreich.org 70 i- (epilogue-code :initform nil :accessor epilogue-code)) Err bitreich.org 70 i- (:documentation "operations that are both monolithic-op and bundle-op")) Err bitreich.org 70 i- Err bitreich.org 70 i- (defclass program-system (system) Err bitreich.org 70 i- ;; New style (ASDF3.1) way of specifying prologue and epilogue on ECL: in the system Err bitreich.org 70 i- ((prologue-code :initform nil :initarg :prologue-code :reader prologue-code) Err bitreich.org 70 i- (epilogue-code :initform nil :initarg :epilogue-code :reader epilogue-code) Err bitreich.org 70 i- (no-uiop :initform nil :initarg :no-uiop :reader no-uiop) Err bitreich.org 70 i- (prefix-lisp-object-files :initarg :prefix-lisp-object-files Err bitreich.org 70 i- :initform nil :accessor prefix-lisp-object-files) Err bitreich.org 70 i- (postfix-lisp-object-files :initarg :postfix-lisp-object-files Err bitreich.org 70 i- :initform nil :accessor postfix-lisp-object-files) Err bitreich.org 70 i- (extra-object-files :initarg :extra-object-files Err bitreich.org 70 i- :initform nil :accessor extra-object-files) Err bitreich.org 70 i- (extra-build-args :initarg :extra-build-args Err bitreich.org 70 i- :initform nil :accessor extra-build-args))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod prologue-code ((x system)) nil) Err bitreich.org 70 i- (defmethod epilogue-code ((x system)) nil) Err bitreich.org 70 i- (defmethod no-uiop ((x system)) nil) Err bitreich.org 70 i- (defmethod prefix-lisp-object-files ((x system)) nil) Err bitreich.org 70 i- (defmethod postfix-lisp-object-files ((x system)) nil) Err bitreich.org 70 i- (defmethod extra-object-files ((x system)) nil) Err bitreich.org 70 i- (defmethod extra-build-args ((x system)) nil) Err bitreich.org 70 i- Err bitreich.org 70 i- (defclass link-op (bundle-op) () Err bitreich.org 70 i- (:documentation "Abstract operation for linking files together")) Err bitreich.org 70 i- Err bitreich.org 70 i- (defclass gather-operation (bundle-op) Err bitreich.org 70 i- ((gather-operation :initform nil :allocation :class :reader gather-operation) Err bitreich.org 70 i- (gather-type :initform :no-output-file :allocation :class :reader gather-type)) Err bitreich.org 70 i- (:documentation "Abstract operation for gathering many input files from a system")) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun operation-monolithic-p (op) Err bitreich.org 70 i- (typep op 'monolithic-op)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Dependencies of a gather-op are the actions of the dependent operation Err bitreich.org 70 i- ;; for all the (sorted) required components for loading the system. Err bitreich.org 70 i- ;; Monolithic operations typically use lib-op as the dependent operation, Err bitreich.org 70 i- ;; and all system-level dependencies as required components. Err bitreich.org 70 i- ;; Non-monolithic operations typically use compile-op as the dependent operation, Err bitreich.org 70 i- ;; and all transitive sub-components as required components (excluding other systems). Err bitreich.org 70 i- (defmethod component-depends-on ((o gather-operation) (s system)) Err bitreich.org 70 i- (let* ((mono (operation-monolithic-p o)) Err bitreich.org 70 i- (go (make-operation (or (gather-operation o) 'compile-op))) Err bitreich.org 70 i- (bundle-p (typep go 'bundle-op)) Err bitreich.org 70 i- ;; In a non-mono operation, don't recurse to other systems. Err bitreich.org 70 i- ;; In a mono operation gathering bundles, don't recurse inside systems. Err bitreich.org 70 i- (component-type (if mono (if bundle-p 'system t) '(not system))) Err bitreich.org 70 i- ;; In the end, only keep system bundles or non-system bundles, depending. Err bitreich.org 70 i- (keep-component (if bundle-p 'system '(not system))) Err bitreich.org 70 i- (deps Err bitreich.org 70 i- ;; Required-components only looks at the dependencies of an action, excluding the action Err bitreich.org 70 i- ;; itself, so it may be safely used by an action recursing on its dependencies (which Err bitreich.org 70 i- ;; may or may not be an overdesigned API, since in practice we never use it that way). Err bitreich.org 70 i- ;; Therefore, if we use :goal-operation 'load-op :keep-operation 'load-op, which looks Err bitreich.org 70 i- ;; cleaner, we will miss the load-op on the requested system itself, which doesn't Err bitreich.org 70 i- ;; matter for a regular system, but matters, a lot, for a package-inferred-system. Err bitreich.org 70 i- ;; Using load-op as the goal operation and basic-compile-op as the keep-operation works Err bitreich.org 70 i- ;; for our needs of gathering all the files we want to include in a bundle. Err bitreich.org 70 i- ;; Note that we use basic-compile-op rather than compile-op so it will still work on Err bitreich.org 70 i- ;; systems when *load-system-operation* is load-bundle-op. Err bitreich.org 70 i- (required-components Err bitreich.org 70 i- s :other-systems mono :component-type component-type :keep-component keep-component Err bitreich.org 70 i- :goal-operation 'load-op :keep-operation 'basic-compile-op))) Err bitreich.org 70 i- `((,go ,@deps) ,@(call-next-method)))) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Create a single fasl for the entire library Err bitreich.org 70 i- (defclass basic-compile-bundle-op (bundle-op) Err bitreich.org 70 i- ((gather-type :initform #-(or clasp ecl mkcl) :fasl #+(or clasp ecl mkcl) :object Err bitreich.org 70 i- :allocation :class) Err bitreich.org 70 i- (bundle-type :initform :fasl :allocation :class)) Err bitreich.org 70 i- (:documentation "Base class for compiling into a bundle")) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Analog to prepare-op, for load-bundle-op and compile-bundle-op Err bitreich.org 70 i- (defclass prepare-bundle-op (sideway-operation) Err bitreich.org 70 i- ((sideway-operation Err bitreich.org 70 i- :initform #+(or clasp ecl mkcl) 'load-bundle-op #-(or clasp ecl mkcl) 'load-op Err bitreich.org 70 i- :allocation :class)) Err bitreich.org 70 i- (:documentation "Operation class for loading the bundles of a system's dependencies")) Err bitreich.org 70 i- Err bitreich.org 70 i- (defclass lib-op (link-op gather-operation non-propagating-operation) Err bitreich.org 70 i- ((gather-type :initform :object :allocation :class) Err bitreich.org 70 i- (bundle-type :initform :lib :allocation :class)) Err bitreich.org 70 i- (:documentation "Compile the system and produce a linkable static library (.a/.lib) Err bitreich.org 70 i-for all the linkable object files associated with the system. Compare with DLL-OP. Err bitreich.org 70 i- Err bitreich.org 70 i-On most implementations, these object files only include extensions to the runtime Err bitreich.org 70 i-written in C or another language with a compiler producing linkable object files. Err bitreich.org 70 i-On CLASP, ECL, MKCL, these object files _also_ include the contents of Lisp files Err bitreich.org 70 i-themselves. In any case, this operation will produce what you need to further build Err bitreich.org 70 i-a static runtime for your system, or a dynamic library to load in an existing runtime.")) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; What works: on ECL, CLASP(?), MKCL, we link the many .o files from the system into the .so; Err bitreich.org 70 i- ;; on other implementations, we combine (usually concatenate) the .fasl files into one. Err bitreich.org 70 i- (defclass compile-bundle-op (basic-compile-bundle-op selfward-operation gather-operation Err bitreich.org 70 i- #+(or clasp ecl mkcl) link-op) Err bitreich.org 70 i- ((selfward-operation :initform '(prepare-bundle-op) :allocation :class)) Err bitreich.org 70 i- (:documentation "This operator is an alternative to COMPILE-OP. Build a system Err bitreich.org 70 i-and all of its dependencies, but build only a single (\"monolithic\") FASL, instead Err bitreich.org 70 i-of one per source file, which may be more resource efficient. That monolithic Err bitreich.org 70 i-FASL should be loaded with LOAD-BUNDLE-OP, rather than LOAD-OP.")) Err bitreich.org 70 i- Err bitreich.org 70 i- (defclass load-bundle-op (basic-load-op selfward-operation) Err bitreich.org 70 i- ((selfward-operation :initform '(prepare-bundle-op compile-bundle-op) :allocation :class)) Err bitreich.org 70 i- (:documentation "This operator is an alternative to LOAD-OP. Build a system Err bitreich.org 70 i-and all of its dependencies, using COMPILE-BUNDLE-OP. The difference with Err bitreich.org 70 i-respect to LOAD-OP is that it builds only a single FASL, which may be Err bitreich.org 70 i-faster and more resource efficient.")) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; NB: since the monolithic-op's can't be sideway-operation's, Err bitreich.org 70 i- ;; if we wanted lib-op, dll-op, deliver-asd-op to be sideway-operation's, Err bitreich.org 70 i- ;; we'd have to have the monolithic-op not inherit from the main op, Err bitreich.org 70 i- ;; but instead inherit from a basic-FOO-op as with basic-compile-bundle-op above. Err bitreich.org 70 i- Err bitreich.org 70 i- (defclass dll-op (link-op gather-operation non-propagating-operation) Err bitreich.org 70 i- ((gather-type :initform :object :allocation :class) Err bitreich.org 70 i- (bundle-type :initform :dll :allocation :class)) Err bitreich.org 70 i- (:documentation "Compile the system and produce a dynamic loadable library (.so/.dll) Err bitreich.org 70 i-for all the linkable object files associated with the system. Compare with LIB-OP.")) Err bitreich.org 70 i- Err bitreich.org 70 i- (defclass deliver-asd-op (basic-compile-op selfward-operation) Err bitreich.org 70 i- ((selfward-operation Err bitreich.org 70 i- ;; TODO: implement link-op on all implementations, and make that Err bitreich.org 70 i- ;; '(compile-bundle-op lib-op #-(or clasp ecl mkcl) dll-op) Err bitreich.org 70 i- :initform '(compile-bundle-op #+(or clasp ecl mkcl) lib-op) Err bitreich.org 70 i- :allocation :class)) Err bitreich.org 70 i- (:documentation "produce an asd file for delivering the system as a single fasl")) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- (defclass monolithic-deliver-asd-op (deliver-asd-op monolithic-bundle-op) Err bitreich.org 70 i- ((selfward-operation Err bitreich.org 70 i- ;; TODO: implement link-op on all implementations, and make that Err bitreich.org 70 i- ;; '(monolithic-compile-bundle-op monolithic-lib-op #-(or clasp ecl mkcl) monolithic-dll-op) Err bitreich.org 70 i- :initform '(monolithic-compile-bundle-op #+(or clasp ecl mkcl) monolithic-lib-op) Err bitreich.org 70 i- :allocation :class)) Err bitreich.org 70 i- (:documentation "produce fasl and asd files for combined system and dependencies.")) Err bitreich.org 70 i- Err bitreich.org 70 i- (defclass monolithic-compile-bundle-op Err bitreich.org 70 i- (basic-compile-bundle-op monolithic-bundle-op Err bitreich.org 70 i- #+(or clasp ecl mkcl) link-op gather-operation non-propagating-operation) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Create a single fasl for the system and its dependencies.")) Err bitreich.org 70 i- Err bitreich.org 70 i- (defclass monolithic-load-bundle-op (load-bundle-op monolithic-bundle-op) Err bitreich.org 70 i- ((selfward-operation :initform 'monolithic-compile-bundle-op :allocation :class)) Err bitreich.org 70 i- (:documentation "Load a single fasl for the system and its dependencies.")) Err bitreich.org 70 i- Err bitreich.org 70 i- (defclass monolithic-lib-op (lib-op monolithic-bundle-op non-propagating-operation) Err bitreich.org 70 i- ((gather-type :initform :object :allocation :class)) Err bitreich.org 70 i- (:documentation "Compile the system and produce a linkable static library (.a/.lib) Err bitreich.org 70 i-for all the linkable object files associated with the system or its dependencies. See LIB-OP.")) Err bitreich.org 70 i- Err bitreich.org 70 i- (defclass monolithic-dll-op (dll-op monolithic-bundle-op non-propagating-operation) Err bitreich.org 70 i- ((gather-type :initform :object :allocation :class)) Err bitreich.org 70 i- (:documentation "Compile the system and produce a dynamic loadable library (.so/.dll) Err bitreich.org 70 i-for all the linkable object files associated with the system or its dependencies. See LIB-OP")) Err bitreich.org 70 i- Err bitreich.org 70 i- (defclass image-op (monolithic-bundle-op selfward-operation Err bitreich.org 70 i- #+(or clasp ecl mkcl) link-op #+(or clasp ecl mkcl) gather-operation) Err bitreich.org 70 i- ((bundle-type :initform :image :allocation :class) Err bitreich.org 70 i- (gather-operation :initform 'lib-op :allocation :class) Err bitreich.org 70 i- #+(or clasp ecl mkcl) (gather-type :initform :static-library :allocation :class) Err bitreich.org 70 i- (selfward-operation :initform '(#-(or clasp ecl mkcl) load-op) :allocation :class)) Err bitreich.org 70 i- (:documentation "create an image file from the system and its dependencies")) Err bitreich.org 70 i- Err bitreich.org 70 i- (defclass program-op (image-op) Err bitreich.org 70 i- ((bundle-type :initform :program :allocation :class)) Err bitreich.org 70 i- (:documentation "create an executable file from the system and its dependencies")) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; From the ASDF-internal bundle-type identifier, get a filesystem-usable pathname type. Err bitreich.org 70 i- (defun bundle-pathname-type (bundle-type) Err bitreich.org 70 i- (etypecase bundle-type Err bitreich.org 70 i- ((or null string) ;; pass through nil or string literal Err bitreich.org 70 i- bundle-type) Err bitreich.org 70 i- ((eql :no-output-file) ;; marker for a bundle-type that has NO output file Err bitreich.org 70 i- (error "No output file, therefore no pathname type")) Err bitreich.org 70 i- ((eql :fasl) ;; the type of a fasl Err bitreich.org 70 i- #-(or clasp ecl mkcl) (compile-file-type) ; on image-based platforms, used as input and output Err bitreich.org 70 i- #+(or clasp ecl mkcl) "fasb") ; on C-linking platforms, only used as output for system bundles Err bitreich.org 70 i- ((member :image) Err bitreich.org 70 i- #+allegro "dxl" Err bitreich.org 70 i- #+(and clisp os-windows) "exe" Err bitreich.org 70 i- #-(or allegro (and clisp os-windows)) "image") Err bitreich.org 70 i- ;; NB: on CLASP and ECL these implementations, we better agree with Err bitreich.org 70 i- ;; (compile-file-type :type bundle-type)) Err bitreich.org 70 i- ((eql :object) ;; the type of a linkable object file Err bitreich.org 70 i- (os-cond ((os-unix-p) "o") Err bitreich.org 70 i- ((os-windows-p) (if (featurep '(:or :mingw32 :mingw64)) "o" "obj")))) Err bitreich.org 70 i- ((member :lib :static-library) ;; the type of a linkable library Err bitreich.org 70 i- (os-cond ((os-unix-p) "a") Err bitreich.org 70 i- ((os-windows-p) (if (featurep '(:or :mingw32 :mingw64)) "a" "lib")))) Err bitreich.org 70 i- ((member :dll :shared-library) ;; the type of a shared library Err bitreich.org 70 i- (os-cond ((os-macosx-p) "dylib") ((os-unix-p) "so") ((os-windows-p) "dll"))) Err bitreich.org 70 i- ((eql :program) ;; the type of an executable program Err bitreich.org 70 i- (os-cond ((os-unix-p) nil) ((os-windows-p) "exe"))))) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Compute the output-files for a given bundle action Err bitreich.org 70 i- (defun bundle-output-files (o c) Err bitreich.org 70 i- (let ((bundle-type (bundle-type o))) Err bitreich.org 70 i- (unless (or (eq bundle-type :no-output-file) ;; NIL already means something regarding type. Err bitreich.org 70 i- (and (null (input-files o c)) (not (member bundle-type '(:image :program))))) Err bitreich.org 70 i- (let ((name (or (component-build-pathname c) Err bitreich.org 70 i- (let ((suffix Err bitreich.org 70 i- (unless (typep o 'program-op) Err bitreich.org 70 i- ;; "." is no good separator for Logical Pathnames, so we use "--" Err bitreich.org 70 i- (if (operation-monolithic-p o) Err bitreich.org 70 i- "--all-systems" Err bitreich.org 70 i- ;; These use a different type .fasb or .a instead of .fasl Err bitreich.org 70 i- #-(or clasp ecl mkcl) "--system")))) Err bitreich.org 70 i- (format nil "~A~@[~A~]" (component-name c) suffix)))) Err bitreich.org 70 i- (type (bundle-pathname-type bundle-type))) Err bitreich.org 70 i- (values (list (subpathname (component-pathname c) name :type type)) Err bitreich.org 70 i- (eq (class-of o) (coerce-class (component-build-operation c) Err bitreich.org 70 i- :package :asdf/interface Err bitreich.org 70 i- :super 'operation Err bitreich.org 70 i- :error nil))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod output-files ((o bundle-op) (c system)) Err bitreich.org 70 i- (bundle-output-files o c)) Err bitreich.org 70 i- Err bitreich.org 70 i- #-(or clasp ecl mkcl) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (defmethod perform ((o image-op) (c system)) Err bitreich.org 70 i- (dump-image (output-file o c) :executable (typep o 'program-op))) Err bitreich.org 70 i- (defmethod perform :before ((o program-op) (c system)) Err bitreich.org 70 i- (setf *image-entry-point* (ensure-function (component-entry-point c))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defclass compiled-file (file-component) Err bitreich.org 70 i- ((type :initform #-(or clasp ecl mkcl) (compile-file-type) #+(or clasp ecl mkcl) "fasb")) Err bitreich.org 70 i- (:documentation "Class for a file that is already compiled, Err bitreich.org 70 i-e.g. as part of the implementation, of an outer build system that calls into ASDF, Err bitreich.org 70 i-or of opaque libraries shipped along the source code.")) Err bitreich.org 70 i- Err bitreich.org 70 i- (defclass precompiled-system (system) Err bitreich.org 70 i- ((build-pathname :initarg :fasl)) Err bitreich.org 70 i- (:documentation "Class For a system that is delivered as a precompiled fasl")) Err bitreich.org 70 i- Err bitreich.org 70 i- (defclass prebuilt-system (system) Err bitreich.org 70 i- ((build-pathname :initarg :static-library :initarg :lib Err bitreich.org 70 i- :accessor prebuilt-system-static-library)) Err bitreich.org 70 i- (:documentation "Class for a system delivered with a linkable static library (.a/.lib)"))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; BUNDLE-OP Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; This operation takes all components from one or more systems and Err bitreich.org 70 i-;;; creates a single output file, which may be Err bitreich.org 70 i-;;; a FASL, a statically linked library, a shared library, etc. Err bitreich.org 70 i-;;; The different targets are defined by specialization. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-(when-upgrading (:version "3.2.0") Err bitreich.org 70 i- ;; Cancel any previously defined method Err bitreich.org 70 i- (defmethod initialize-instance :after ((instance bundle-op) &rest initargs &key &allow-other-keys) Err bitreich.org 70 i- (declare (ignore initargs)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defgeneric trivial-system-p (component)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun user-system-p (s) Err bitreich.org 70 i- (and (typep s 'system) Err bitreich.org 70 i- (not (builtin-system-p s)) Err bitreich.org 70 i- (not (trivial-system-p s))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (#-lispworks :compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (deftype user-system () '(and system (satisfies user-system-p)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; First we handle monolithic bundles. Err bitreich.org 70 i-;;; These are standalone systems which contain everything, Err bitreich.org 70 i-;;; including other ASDF systems required by the current one. Err bitreich.org 70 i-;;; A PROGRAM is always monolithic. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; MONOLITHIC SHARED LIBRARIES, PROGRAMS, FASL Err bitreich.org 70 i-;;; Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun direct-dependency-files (o c &key (test 'identity) (key 'output-files) &allow-other-keys) Err bitreich.org 70 i- ;; This function selects output files from direct dependencies; Err bitreich.org 70 i- ;; your component-depends-on method must gather the correct dependencies in the correct order. Err bitreich.org 70 i- (while-collecting (collect) Err bitreich.org 70 i- (map-direct-dependencies Err bitreich.org 70 i- t o c #'(lambda (sub-o sub-c) Err bitreich.org 70 i- (loop :for f :in (funcall key sub-o sub-c) Err bitreich.org 70 i- :when (funcall test f) :do (collect f)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun pathname-type-equal-function (type) Err bitreich.org 70 i- #'(lambda (p) (equalp (pathname-type p) type))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod input-files ((o gather-operation) (c system)) Err bitreich.org 70 i- (unless (eq (bundle-type o) :no-output-file) Err bitreich.org 70 i- (direct-dependency-files Err bitreich.org 70 i- o c :key 'output-files Err bitreich.org 70 i- :test (pathname-type-equal-function (bundle-pathname-type (gather-type o)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Find the operation that produces a given bundle-type Err bitreich.org 70 i- (defun select-bundle-operation (type &optional monolithic) Err bitreich.org 70 i- (ecase type Err bitreich.org 70 i- ((:dll :shared-library) Err bitreich.org 70 i- (if monolithic 'monolithic-dll-op 'dll-op)) Err bitreich.org 70 i- ((:lib :static-library) Err bitreich.org 70 i- (if monolithic 'monolithic-lib-op 'lib-op)) Err bitreich.org 70 i- ((:fasl) Err bitreich.org 70 i- (if monolithic 'monolithic-compile-bundle-op 'compile-bundle-op)) Err bitreich.org 70 i- ((:image) Err bitreich.org 70 i- 'image-op) Err bitreich.org 70 i- ((:program) Err bitreich.org 70 i- 'program-op)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; LOAD-BUNDLE-OP Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; This is like ASDF's LOAD-OP, but using bundle fasl files. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defmethod component-depends-on ((o load-bundle-op) (c system)) Err bitreich.org 70 i- `((,o ,@(component-sideway-dependencies c)) Err bitreich.org 70 i- (,(if (user-system-p c) 'compile-bundle-op 'load-op) ,c) Err bitreich.org 70 i- ,@(call-next-method))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod input-files ((o load-bundle-op) (c system)) Err bitreich.org 70 i- (when (user-system-p c) Err bitreich.org 70 i- (output-files (find-operation o 'compile-bundle-op) c))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod perform ((o load-bundle-op) (c system)) Err bitreich.org 70 i- (when (input-files o c) Err bitreich.org 70 i- (perform-lisp-load-fasl o c))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod mark-operation-done :after ((o load-bundle-op) (c system)) Err bitreich.org 70 i- (mark-operation-done (find-operation o 'load-op) c))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; PRECOMPILED FILES Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; This component can be used to distribute ASDF systems in precompiled form. Err bitreich.org 70 i-;;; Only useful when the dependencies have also been precompiled. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defmethod trivial-system-p ((s system)) Err bitreich.org 70 i- (every #'(lambda (c) (typep c 'compiled-file)) (component-children s))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod input-files ((o operation) (c compiled-file)) Err bitreich.org 70 i- (list (component-pathname c))) Err bitreich.org 70 i- (defmethod perform ((o load-op) (c compiled-file)) Err bitreich.org 70 i- (perform-lisp-load-fasl o c)) Err bitreich.org 70 i- (defmethod perform ((o load-source-op) (c compiled-file)) Err bitreich.org 70 i- (perform (find-operation o 'load-op) c)) Err bitreich.org 70 i- (defmethod perform ((o operation) (c compiled-file)) Err bitreich.org 70 i- nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Pre-built systems Err bitreich.org 70 i-;;; Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defmethod trivial-system-p ((s prebuilt-system)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod perform ((o link-op) (c prebuilt-system)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod perform ((o basic-compile-bundle-op) (c prebuilt-system)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod perform ((o lib-op) (c prebuilt-system)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod perform ((o dll-op) (c prebuilt-system)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod component-depends-on ((o gather-operation) (c prebuilt-system)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod output-files ((o lib-op) (c prebuilt-system)) Err bitreich.org 70 i- (values (list (prebuilt-system-static-library c)) t))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; PREBUILT SYSTEM CREATOR Err bitreich.org 70 i-;;; Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defmethod output-files ((o deliver-asd-op) (s system)) Err bitreich.org 70 i- (list (make-pathname :name (component-name s) :type "asd" Err bitreich.org 70 i- :defaults (component-pathname s)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod perform ((o deliver-asd-op) (s system)) Err bitreich.org 70 i- (let* ((inputs (input-files o s)) Err bitreich.org 70 i- (fasl (first inputs)) Err bitreich.org 70 i- (library (second inputs)) Err bitreich.org 70 i- (asd (first (output-files o s))) Err bitreich.org 70 i- (name (if (and fasl asd) (pathname-name asd) (return-from perform))) Err bitreich.org 70 i- (version (component-version s)) Err bitreich.org 70 i- (dependencies Err bitreich.org 70 i- (if (operation-monolithic-p o) Err bitreich.org 70 i- ;; We want only dependencies, and we use basic-load-op rather than load-op so that Err bitreich.org 70 i- ;; this will keep working on systems when *load-system-operation* is load-bundle-op Err bitreich.org 70 i- (remove-if-not 'builtin-system-p Err bitreich.org 70 i- (required-components s :component-type 'system Err bitreich.org 70 i- :keep-operation 'basic-load-op)) Err bitreich.org 70 i- (while-collecting (x) ;; resolve the sideway-dependencies of s Err bitreich.org 70 i- (map-direct-dependencies Err bitreich.org 70 i- t 'load-op s Err bitreich.org 70 i- #'(lambda (o c) Err bitreich.org 70 i- (when (and (typep o 'load-op) (typep c 'system)) Err bitreich.org 70 i- (x c))))))) Err bitreich.org 70 i- (depends-on (mapcar 'coerce-name dependencies))) Err bitreich.org 70 i- (when (pathname-equal asd (system-source-file s)) Err bitreich.org 70 i- (cerror "overwrite the asd file" Err bitreich.org 70 i- "~/asdf-action:format-action/ is going to overwrite the system definition file ~S ~ Err bitreich.org 70 i-which is probably not what you want; you probably need to tweak your output translations." Err bitreich.org 70 i- (cons o s) asd)) Err bitreich.org 70 i- (with-open-file (s asd :direction :output :if-exists :supersede Err bitreich.org 70 i- :if-does-not-exist :create) Err bitreich.org 70 i- (format s ";;; Prebuilt~:[~; monolithic~] ASDF definition for system ~A~%" Err bitreich.org 70 i- (operation-monolithic-p o) name) Err bitreich.org 70 i- (format s ";;; Built for ~A ~A on a ~A/~A ~A~%" Err bitreich.org 70 i- (lisp-implementation-type) Err bitreich.org 70 i- (lisp-implementation-version) Err bitreich.org 70 i- (software-type) Err bitreich.org 70 i- (machine-type) Err bitreich.org 70 i- (software-version)) Err bitreich.org 70 i- (let ((*package* (find-package :asdf-user))) Err bitreich.org 70 i- (pprint `(defsystem ,name Err bitreich.org 70 i- :class prebuilt-system Err bitreich.org 70 i- :version ,version Err bitreich.org 70 i- :depends-on ,depends-on Err bitreich.org 70 i- :components ((:compiled-file ,(pathname-name fasl))) Err bitreich.org 70 i- ,@(when library `(:lib ,(file-namestring library)))) Err bitreich.org 70 i- s) Err bitreich.org 70 i- (terpri s))))) Err bitreich.org 70 i- Err bitreich.org 70 i- #-(or clasp ecl mkcl) Err bitreich.org 70 i- (defmethod perform ((o basic-compile-bundle-op) (c system)) Err bitreich.org 70 i- (let* ((input-files (input-files o c)) Err bitreich.org 70 i- (fasl-files (remove (compile-file-type) input-files :key #'pathname-type :test-not #'equalp)) Err bitreich.org 70 i- (non-fasl-files (remove (compile-file-type) input-files :key #'pathname-type :test #'equalp)) Err bitreich.org 70 i- (output-files (output-files o c)) Err bitreich.org 70 i- (output-file (first output-files))) Err bitreich.org 70 i- (assert (eq (not input-files) (not output-files))) Err bitreich.org 70 i- (when input-files Err bitreich.org 70 i- (when non-fasl-files Err bitreich.org 70 i- (error "On ~A, asdf/bundle can only bundle FASL files, but these were also produced: ~S" Err bitreich.org 70 i- (implementation-type) non-fasl-files)) Err bitreich.org 70 i- (when (or (prologue-code c) (epilogue-code c)) Err bitreich.org 70 i- (error "prologue-code and epilogue-code are not supported on ~A" Err bitreich.org 70 i- (implementation-type))) Err bitreich.org 70 i- (with-staging-pathname (output-file) Err bitreich.org 70 i- (combine-fasls fasl-files output-file))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod input-files ((o load-op) (s precompiled-system)) Err bitreich.org 70 i- (bundle-output-files (find-operation o 'compile-bundle-op) s)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod perform ((o load-op) (s precompiled-system)) Err bitreich.org 70 i- (perform-lisp-load-fasl o s)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod component-depends-on ((o load-bundle-op) (s precompiled-system)) Err bitreich.org 70 i- #+xcl (declare (ignorable o)) Err bitreich.org 70 i- `((load-op ,s) ,@(call-next-method)))) Err bitreich.org 70 i- Err bitreich.org 70 i-#| ;; Example use: Err bitreich.org 70 i-(asdf:defsystem :precompiled-asdf-utils :class asdf::precompiled-system :fasl (asdf:apply-output-translations (asdf:system-relative-pathname :asdf-utils "asdf-utils.system.fasl"))) Err bitreich.org 70 i-(asdf:load-system :precompiled-asdf-utils) Err bitreich.org 70 i-|# Err bitreich.org 70 i- Err bitreich.org 70 i-#+(or clasp ecl mkcl) Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- Err bitreich.org 70 i- #+ecl ;; doesn't work on clasp or mkcl (yet?). Err bitreich.org 70 i- (unless (use-ecl-byte-compiler-p) Err bitreich.org 70 i- (setf *load-system-operation* 'load-bundle-op)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun system-module-pathname (module) Err bitreich.org 70 i- (let ((name (coerce-name module))) Err bitreich.org 70 i- (some Err bitreich.org 70 i- 'file-exists-p Err bitreich.org 70 i- (list Err bitreich.org 70 i- #+clasp (compile-file-pathname (make-pathname :name name :defaults "sys:") :output-type :object) Err bitreich.org 70 i- #+ecl (compile-file-pathname (make-pathname :name name :defaults "sys:") :type :lib) Err bitreich.org 70 i- #+ecl (compile-file-pathname (make-pathname :name name :defaults "sys:") :type :object) Err bitreich.org 70 i- #+mkcl (make-pathname :name name :type (bundle-pathname-type :lib) :defaults #p"sys:") Err bitreich.org 70 i- #+mkcl (make-pathname :name name :type (bundle-pathname-type :lib) :defaults #p"sys:contrib;"))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun make-prebuilt-system (name &optional (pathname (system-module-pathname name))) Err bitreich.org 70 i- "Creates a prebuilt-system if PATHNAME isn't NIL." Err bitreich.org 70 i- (when pathname Err bitreich.org 70 i- (make-instance 'prebuilt-system Err bitreich.org 70 i- :name (coerce-name name) Err bitreich.org 70 i- :static-library (resolve-symlinks* pathname)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod component-depends-on :around ((o image-op) (c system)) Err bitreich.org 70 i- (destructuring-bind ((lib-op . deps)) (call-next-method) Err bitreich.org 70 i- (labels ((has-it-p (x) (find x deps :test 'equal :key 'coerce-name)) Err bitreich.org 70 i- (ensure-linkable-system (x) Err bitreich.org 70 i- (unless (has-it-p x) Err bitreich.org 70 i- (or (if-let (s (find-system x)) Err bitreich.org 70 i- (and (system-source-directory x) Err bitreich.org 70 i- (list s))) Err bitreich.org 70 i- (if-let (p (system-module-pathname x)) Err bitreich.org 70 i- (list (make-prebuilt-system x p))))))) Err bitreich.org 70 i- `((,lib-op Err bitreich.org 70 i- ,@(unless (no-uiop c) Err bitreich.org 70 i- (append (ensure-linkable-system "cmp") Err bitreich.org 70 i- (or (ensure-linkable-system "uiop") Err bitreich.org 70 i- (ensure-linkable-system "asdf")))) Err bitreich.org 70 i- ,@deps))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod perform ((o link-op) (c system)) Err bitreich.org 70 i- (let* ((object-files (input-files o c)) Err bitreich.org 70 i- (output (output-files o c)) Err bitreich.org 70 i- (bundle (first output)) Err bitreich.org 70 i- (programp (typep o 'program-op)) Err bitreich.org 70 i- (kind (bundle-type o))) Err bitreich.org 70 i- (when output Err bitreich.org 70 i- (apply 'create-image Err bitreich.org 70 i- bundle (append Err bitreich.org 70 i- (when programp (prefix-lisp-object-files c)) Err bitreich.org 70 i- object-files Err bitreich.org 70 i- (when programp (postfix-lisp-object-files c))) Err bitreich.org 70 i- :kind kind Err bitreich.org 70 i- :prologue-code (when programp (prologue-code c)) Err bitreich.org 70 i- :epilogue-code (when programp (epilogue-code c)) Err bitreich.org 70 i- :build-args (when programp (extra-build-args c)) Err bitreich.org 70 i- :extra-object-files (when programp (extra-object-files c)) Err bitreich.org 70 i- :no-uiop (no-uiop c) Err bitreich.org 70 i- (when programp `(:entry-point ,(component-entry-point c)))))))) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/toolchain/c-toolchain.lisp b/3rdparties/software/cffi_0.20.0/toolchain/c-toolchain.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/toolchain/c-toolchain.lisp.gph bitreich.org 70 i@@ -1,392 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; c-toolchain.lisp --- Generic support compiling and linking C code. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, Dan Knap Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, Emily Backes Err bitreich.org 70 i-;;; Copyright (C) 2007, Stelian Ionescu Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-toolchain) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Utils Err bitreich.org 70 i- Err bitreich.org 70 i-(defun parse-command-flags (flags) Err bitreich.org 70 i- (let ((separators '(#\Space #\Tab #\Newline #\Return))) Err bitreich.org 70 i- (remove-if 'emptyp (split-string flags :separator separators)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun parse-command-flags-list (strings) Err bitreich.org 70 i- (loop for flags in strings append (parse-command-flags flags))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun program-argument (x) Err bitreich.org 70 i- (etypecase x Err bitreich.org 70 i- (string x) Err bitreich.org 70 i- (pathname (native-namestring x)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun invoke (command &rest args) Err bitreich.org 70 i- (when (pathnamep command) Err bitreich.org 70 i- (setf command (native-namestring command)) Err bitreich.org 70 i- #+os-unix Err bitreich.org 70 i- (unless (absolute-pathname-p command) Err bitreich.org 70 i- (setf command (strcat "./" command)))) Err bitreich.org 70 i- (let ((cmd (cons command (mapcar 'program-argument args)))) Err bitreich.org 70 i- (safe-format! *debug-io* "; ~A~%" (escape-command cmd)) Err bitreich.org 70 i- (run-program cmd :output :interactive :error-output :interactive))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; C support Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *cc* nil "C compiler") Err bitreich.org 70 i-(defparameter *cc-flags* nil "flags for the C compiler") Err bitreich.org 70 i-(defparameter *ld* nil "object linker") ;; NB: can actually be the same as *cc* Err bitreich.org 70 i-(defparameter *ld-exe-flags* nil "flags for linking executables via *ld*") Err bitreich.org 70 i-(defparameter *ld-dll-flags* nil "flags for linking shared library via *ld*") Err bitreich.org 70 i-(defparameter *linkkit-start* nil "flags for the implementation linkkit, start") Err bitreich.org 70 i-(defparameter *linkkit-end* nil "flags for the implementation linkkit, end") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun link-all-library (lib) Err bitreich.org 70 i- ;; Flags to provide to cc to link a whole library into an executable Err bitreich.org 70 i- (when lib Err bitreich.org 70 i- (if (featurep :darwin) ;; actually, LLVM ld vs GNU ld Err bitreich.org 70 i- `("-Wl,-force_load" ,lib) Err bitreich.org 70 i- `("-Wl,--whole-archive" ,lib "-Wl,--no-whole-archive")))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun normalize-flags (directory flags) Err bitreich.org 70 i- (loop for val in (parse-command-flags flags) collect Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((find (first-char val) "-+/") val) Err bitreich.org 70 i- ((probe-file* (subpathname directory val))) Err bitreich.org 70 i- (t val)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun implementation-file (file &optional type) Err bitreich.org 70 i- (subpathname (lisp-implementation-directory) file Err bitreich.org 70 i- :type (bundle-pathname-type type))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; TODO: on CCL, extract data from Err bitreich.org 70 i-;; (pathname (strcat "ccl:lisp-kernel/" (ccl::kernel-build-directory) "/Makefile")) ? Err bitreich.org 70 i- Err bitreich.org 70 i-#+clisp Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (defparameter *clisp-toolchain-parameters* Err bitreich.org 70 i- '(("CC" *cc*) Err bitreich.org 70 i- ("CFLAGS" *cc-flags* t) Err bitreich.org 70 i- ("CLFLAGS" *cc-exe-flags* t) Err bitreich.org 70 i- ("LIBS" *linkkit-start* t) Err bitreich.org 70 i- ("X_LIBS" *linkkit-end* t))) Err bitreich.org 70 i- (defun clisp-toolchain-parameters (&optional linkset) Err bitreich.org 70 i- (nest Err bitreich.org 70 i- (let* ((linkset (ensure-pathname Err bitreich.org 70 i- (or linkset "base") Err bitreich.org 70 i- :defaults (lisp-implementation-directory) Err bitreich.org 70 i- :ensure-absolute t Err bitreich.org 70 i- :ensure-directory t Err bitreich.org 70 i- :want-existing t)) Err bitreich.org 70 i- (makevars (subpathname linkset "makevars")))) Err bitreich.org 70 i- (with-input-file (params makevars :if-does-not-exist nil)) Err bitreich.org 70 i- (when params) Err bitreich.org 70 i- (loop for l = (read-line params nil nil) while l Err bitreich.org 70 i- finally (appendf *linkkit-start* (normalize-flags linkset "modules.o")) do) Err bitreich.org 70 i- (if-let (p (position #\= l))) Err bitreich.org 70 i- (let ((var (subseq l 0 p)) Err bitreich.org 70 i- ;; strip the start and end quote characters Err bitreich.org 70 i- (val (subseq l (+ p 2) (- (length l) 1))))) Err bitreich.org 70 i- (if-let (param (cdr (assoc var *clisp-toolchain-parameters* :test 'equal)))) Err bitreich.org 70 i- (destructuring-bind (sym &optional normalizep) param Err bitreich.org 70 i- (setf (symbol-value sym) Err bitreich.org 70 i- (if normalizep (normalize-flags linkset val) val)))) Err bitreich.org 70 i- (setf *ld* *cc* Err bitreich.org 70 i- *ld-exe-flags* `(,@*cc-flags* #-darwin "-Wl,--export-dynamic") Err bitreich.org 70 i- *ld-dll-flags* (list* #+darwin "-dynamiclib" ;; -bundle ? Err bitreich.org 70 i- #-darwin "-shared" Err bitreich.org 70 i- *cc-flags*)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; TODO: for CMUCL, see whatever uses its linker.sh, Err bitreich.org 70 i-;; and teach it to accept additional objects / libraries Err bitreich.org 70 i-;; as it links a runtime plus a core into an executable Err bitreich.org 70 i- Err bitreich.org 70 i-#+ecl Err bitreich.org 70 i-(defun ecl-toolchain-parameters () Err bitreich.org 70 i- (setf *cc* c:*cc* Err bitreich.org 70 i- *cc-flags* `(,@(parse-command-flags c::*cc-flags*) Err bitreich.org 70 i- ,@(parse-command-flags c:*user-cc-flags*)) Err bitreich.org 70 i- ;; For the below, we just use c::build-FOO Err bitreich.org 70 i- *ld* *cc* Err bitreich.org 70 i- *ld-exe-flags* *cc-flags* Err bitreich.org 70 i- *ld-dll-flags* *cc-flags* Err bitreich.org 70 i- *linkkit-start* nil Err bitreich.org 70 i- *linkkit-end* nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+mkcl Err bitreich.org 70 i-(defun mkcl-toolchain-parameters () Err bitreich.org 70 i- (setf *cc* compiler::*cc* Err bitreich.org 70 i- *cc-flags* (parse-command-flags compiler::*cc-flags*) Err bitreich.org 70 i- ;; For the below, we just use compiler::build-FOO Err bitreich.org 70 i- *ld* *cc* Err bitreich.org 70 i- *ld-exe-flags* *cc-flags* Err bitreich.org 70 i- *ld-dll-flags* *cc-flags* Err bitreich.org 70 i- *linkkit-start* nil Err bitreich.org 70 i- *linkkit-end* nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+sbcl Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (defparameter *sbcl-toolchain-parameters* Err bitreich.org 70 i- '(("CC" *cc*) Err bitreich.org 70 i- ("CFLAGS" *cc-flags* t) Err bitreich.org 70 i- ("LINKFLAGS" *ld-exe-flags* t) Err bitreich.org 70 i- ("USE_LIBSBCL" *linkkit-start* t) Err bitreich.org 70 i- ("LIBS" *linkkit-end* t))) Err bitreich.org 70 i- (defun sbcl-toolchain-parameters () Err bitreich.org 70 i- (nest Err bitreich.org 70 i- (let* ((sbcl-home (lisp-implementation-directory)) Err bitreich.org 70 i- (sbcl.mk (subpathname sbcl-home "sbcl.mk")))) Err bitreich.org 70 i- (with-input-file (params sbcl.mk :if-does-not-exist nil)) Err bitreich.org 70 i- (when params) Err bitreich.org 70 i- (loop for l = (read-line params nil nil) while l Err bitreich.org 70 i- finally (appendf *linkkit-end* '("-lm")) do) Err bitreich.org 70 i- (if-let (p (position #\= l))) Err bitreich.org 70 i- (let ((var (subseq l 0 p)) Err bitreich.org 70 i- (val (subseq l (1+ p))))) Err bitreich.org 70 i- (if-let (param (cdr (assoc var *sbcl-toolchain-parameters* :test 'equal)))) Err bitreich.org 70 i- (destructuring-bind (sym &optional normalizep) param Err bitreich.org 70 i- (setf (symbol-value sym) Err bitreich.org 70 i- (if normalizep (normalize-flags sbcl-home val) val)))) Err bitreich.org 70 i- (unless (featurep :sb-linkable-runtime) Err bitreich.org 70 i- (setf *linkkit-start* nil *linkkit-end* nil)) Err bitreich.org 70 i- (setf *ld* *cc* ;; ! Err bitreich.org 70 i- *ld-dll-flags* (list* #+darwin "-dynamiclib" #-darwin "-shared" Err bitreich.org 70 i- *cc-flags*)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Taken from sb-grovel Err bitreich.org 70 i-(defun split-cflags (string) Err bitreich.org 70 i- (remove-if (lambda (flag) Err bitreich.org 70 i- (zerop (length flag))) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- for start = 0 then (if end (1+ end) nil) Err bitreich.org 70 i- for end = (and start (position #\Space string :start start)) Err bitreich.org 70 i- while start Err bitreich.org 70 i- collect (subseq string start end)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun default-toolchain-parameters () Err bitreich.org 70 i- ;; The values below are legacy guesses from previous versions of CFFI. Err bitreich.org 70 i- ;; It would be nice to clean them up, remove unneeded guesses, Err bitreich.org 70 i- ;; annotate every guess with some comment explaining the context. Err bitreich.org 70 i- ;; TODO: have proper implementation-provided linkkit parameters Err bitreich.org 70 i- ;; for all implementations as above, and delete the below altogether. Err bitreich.org 70 i- (let ((arch-flags Err bitreich.org 70 i- ;; Former *cpu-word-size-flags* Err bitreich.org 70 i- #+arm '("-marm") Err bitreich.org 70 i- #+arm64 '() Err bitreich.org 70 i- #-(or arm arm64) Err bitreich.org 70 i- (ecase (cffi:foreign-type-size :pointer) Err bitreich.org 70 i- (4 '("-m32")) Err bitreich.org 70 i- (8 '("-m64"))))) Err bitreich.org 70 i- (setf *cc* Err bitreich.org 70 i- (or (getenvp "CC") Err bitreich.org 70 i- #+(or cygwin (not windows)) "cc" Err bitreich.org 70 i- "gcc") Err bitreich.org 70 i- *cc-flags* Err bitreich.org 70 i- (append Err bitreich.org 70 i- arch-flags Err bitreich.org 70 i- ;; For MacPorts Err bitreich.org 70 i- #+darwin (list "-I" "/opt/local/include/") Err bitreich.org 70 i- ;; ECL internal flags Err bitreich.org 70 i- #+ecl (parse-command-flags c::*cc-flags*) Err bitreich.org 70 i- ;; FreeBSD non-base header files Err bitreich.org 70 i- #+freebsd (list "-I" "/usr/local/include/") Err bitreich.org 70 i- (split-cflags (getenv "CFLAGS"))) Err bitreich.org 70 i- *ld* *cc* Err bitreich.org 70 i- *ld-exe-flags* `(,@arch-flags #-darwin "-Wl,--export-dynamic") Err bitreich.org 70 i- *ld-dll-flags* (list* #+darwin "-dynamiclib" ;; -bundle ? Err bitreich.org 70 i- #-darwin "-shared" Err bitreich.org 70 i- *cc-flags*) Err bitreich.org 70 i- *linkkit-start* nil Err bitreich.org 70 i- *linkkit-end* nil))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ensure-toolchain-parameters () Err bitreich.org 70 i- #+clisp (unless *cc* (clisp-toolchain-parameters)) Err bitreich.org 70 i- #+ecl (unless *cc* (ecl-toolchain-parameters)) Err bitreich.org 70 i- #+mkcl (unless *cc* (mkcl-toolchain-parameters)) Err bitreich.org 70 i- #+sbcl (unless *cc* (sbcl-toolchain-parameters)) Err bitreich.org 70 i- (unless *cc* (default-toolchain-parameters))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Actually initialize toolchain parameters Err bitreich.org 70 i-(ignore-errors (ensure-toolchain-parameters)) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defun call-with-temporary-output (output-file fun) Err bitreich.org 70 i- (let ((output-file (ensure-pathname output-file :want-file t :ensure-absolute t :truenamize t))) Err bitreich.org 70 i- (with-temporary-file Err bitreich.org 70 i- (:pathname tmp :direction :output Err bitreich.org 70 i- :prefix (strcat (native-namestring (pathname-directory-pathname output-file)) Err bitreich.org 70 i- (pathname-name output-file) "-tmp") Err bitreich.org 70 i- :suffix "" Err bitreich.org 70 i- :type (pathname-type output-file)) Err bitreich.org 70 i- (funcall fun tmp) Err bitreich.org 70 i- (rename-file-overwriting-target tmp output-file)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-temporary-output ((output-file-var &optional (output-file-val output-file-var)) Err bitreich.org 70 i- &body body) Err bitreich.org 70 i- "Create an output file atomically, by executing the BODY while OUTPUT-FILE-VAR Err bitreich.org 70 i-is bound to a temporary file name, then atomically renaming that temporary file to OUTPUT-FILE-VAL." Err bitreich.org 70 i- `(call-with-temporary-output ,output-file-val (lambda (,output-file-var) ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun invoke-builder (builder output-file &rest args) Err bitreich.org 70 i- "Invoke the C Compiler with given OUTPUT-FILE and arguments ARGS" Err bitreich.org 70 i- (with-temporary-output (output-file) Err bitreich.org 70 i- (apply 'invoke `(,@builder ,output-file ,@args)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun cc-compile (output-file inputs) Err bitreich.org 70 i- (apply 'invoke-builder (list *cc* "-o") output-file Err bitreich.org 70 i- "-c" (append *cc-flags* #-windows '("-fPIC") inputs))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun link-executable (output-file inputs) Err bitreich.org 70 i- (apply 'invoke-builder (list *ld* "-o") output-file Err bitreich.org 70 i- (append *ld-exe-flags* inputs))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun link-lisp-executable (output-file inputs) Err bitreich.org 70 i- #+ecl Err bitreich.org 70 i- (let ((c::*ld-flags* Err bitreich.org 70 i- (format nil "-Wl,--export-dynamic ~@[ ~A~]" Err bitreich.org 70 i- c::*ld-flags*))) Err bitreich.org 70 i- (c::build-program output-file :lisp-files inputs)) Err bitreich.org 70 i- #+mkcl (compiler::build-program Err bitreich.org 70 i- output-file :lisp-object-files (mapcar 'program-argument inputs) Err bitreich.org 70 i- :on-missing-lisp-object-initializer nil) Err bitreich.org 70 i- #+(and sbcl (not sb-linkable-runtime)) (error "Your SBCL doesn't support :SB-LINKABLE-RUNTIME") Err bitreich.org 70 i- #-(or ecl mkcl) Err bitreich.org 70 i- (link-executable output-file `(,@*linkkit-start* ,@inputs ,@*linkkit-end*))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun link-static-library (output-file inputs) Err bitreich.org 70 i- #+ecl (c::build-static-library output-file :lisp-files inputs) Err bitreich.org 70 i- #+mkcl (compiler::build-static-library Err bitreich.org 70 i- output-file :lisp-object-files (mapcar 'program-argument inputs) Err bitreich.org 70 i- :on-missing-lisp-object-initializer nil) Err bitreich.org 70 i- #-(or ecl mkcl) Err bitreich.org 70 i- (with-temporary-output (output-file) Err bitreich.org 70 i- (delete-file-if-exists output-file) Err bitreich.org 70 i- #+(or bsd linux windows) Err bitreich.org 70 i- (apply 'invoke Err bitreich.org 70 i- `(;; TODO: make it portable to BSD. Err bitreich.org 70 i- ;; ar D is also on FreeBSD, but not on OpenBSD or Darwin, dunno about NetBSD; Err bitreich.org 70 i- ;; ar T seems to only be on Linux (means something different on Darwin). Sigh. Err bitreich.org 70 i- ;; A MRI script might be more portable... not, only supported by GNU binutils. Err bitreich.org 70 i- ;; I couldn't get libtool to work, and it's not ubiquitous anyway. Err bitreich.org 70 i- ;; ,@`("libtool" "--mode=link" ,*cc* ,@*cc-flags* "-static" "-o" ,output-file) Err bitreich.org 70 i- ;; "Solution": never link .a's into further .a's, only link .o's into .a's, Err bitreich.org 70 i- ;; which implied changes that are now the case in ASDF 3.2.0. Err bitreich.org 70 i- #+bsd ,@`("ar" "rcs" ,output-file) ;; NB: includes darwin Err bitreich.org 70 i- #+linux ,@`("ar" "rcsDT" ,output-file) Err bitreich.org 70 i- #+windows ,@`("lib" "-nologo" ,(strcat "-out:" (native-namestring output-file))) Err bitreich.org 70 i- ,@inputs)) Err bitreich.org 70 i- #-(or bsd linux windows) Err bitreich.org 70 i- (error "Not implemented on your system"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun link-shared-library (output-file inputs) Err bitreich.org 70 i- ;; remove the library so we won't possibly be overwriting Err bitreich.org 70 i- ;; the code of any existing process Err bitreich.org 70 i- (delete-file-if-exists output-file) Err bitreich.org 70 i- #+ecl (c::build-shared-library output-file :lisp-files inputs) Err bitreich.org 70 i- #+mkcl (compiler::build-shared-library Err bitreich.org 70 i- output-file :lisp-object-files (mapcar 'program-argument inputs) Err bitreich.org 70 i- :on-missing-lisp-object-initializer nil) Err bitreich.org 70 i- #-(or ecl mkcl) Err bitreich.org 70 i- ;; Don't use a temporary file, because linking is sensitive to the output file name :-/ (or put it in a temporary directory?) Err bitreich.org 70 i- (apply 'invoke *ld* "-o" output-file Err bitreich.org 70 i- (append *ld-dll-flags* inputs))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Computing file names Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-c-file-name (output-defaults &optional suffix) Err bitreich.org 70 i- (make-pathname :type "c" Err bitreich.org 70 i- :name (strcat (pathname-name output-defaults) suffix) Err bitreich.org 70 i- :defaults output-defaults)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-o-file-name (output-defaults &optional suffix) Err bitreich.org 70 i- (make-pathname :type (bundle-pathname-type :object) Err bitreich.org 70 i- :name (format nil "~A~@[~A~]" (pathname-name output-defaults) suffix) Err bitreich.org 70 i- :defaults output-defaults)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-so-file-name (defaults) Err bitreich.org 70 i- (make-pathname :type (bundle-pathname-type :shared-library) Err bitreich.org 70 i- :defaults defaults)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-exe-file-name (defaults) Err bitreich.org 70 i- (make-pathname :type (bundle-pathname-type :program) Err bitreich.org 70 i- :defaults defaults)) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Implement link-op on image-based platforms. Err bitreich.org 70 i-#-(or clasp ecl mkcl) Err bitreich.org 70 i-(defmethod perform ((o link-op) (c system)) Err bitreich.org 70 i- (let* ((inputs (input-files o c)) Err bitreich.org 70 i- (output (first (output-files o c))) Err bitreich.org 70 i- (kind (bundle-type o))) Err bitreich.org 70 i- (when output ;; some operations skip any output when there is no input Err bitreich.org 70 i- (ecase kind Err bitreich.org 70 i- (:program (link-executable output inputs)) Err bitreich.org 70 i- ((:lib :static-library) (link-static-library output inputs)) Err bitreich.org 70 i- ((:dll :shared-library) (link-shared-library output inputs)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass c-file (source-file) Err bitreich.org 70 i- ((cflags :initarg :cflags :initform :default) Err bitreich.org 70 i- (type :initform "c"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod output-files ((o compile-op) (c c-file)) Err bitreich.org 70 i- (let* ((i (first (input-files o c))) Err bitreich.org 70 i- (base (format nil "~(~{~a~^__~}~)" Err bitreich.org 70 i- (mapcar (lambda (x) (substitute-if #\_ (complement #'alphanumericp) x)) Err bitreich.org 70 i- (component-find-path c)))) Err bitreich.org 70 i- (path (make-pathname :defaults i :name base))) Err bitreich.org 70 i- (list (make-o-file-name path) Err bitreich.org 70 i- (make-so-file-name path)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod perform ((o compile-op) (c c-file)) Err bitreich.org 70 i- (let ((i (first (input-files o c)))) Err bitreich.org 70 i- (destructuring-bind (.o .so) (output-files o c) Err bitreich.org 70 i- (cc-compile .o (list i)) Err bitreich.org 70 i- (link-shared-library .so (list .o))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod perform ((o load-op) (c c-file)) Err bitreich.org 70 i- (let ((o (second (input-files o c)))) Err bitreich.org 70 i- (cffi:load-foreign-library (file-namestring o) :search-path (list (pathname-directory-pathname o))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(setf (find-class 'asdf::c-file) (find-class 'c-file)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass o-file (source-file) Err bitreich.org 70 i- ((cflags :initarg :cflags :initform :default) Err bitreich.org 70 i- (type :initform (bundle-pathname-type :object))) Err bitreich.org 70 i- (:documentation "class for pre-compile object components")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod output-files ((op compile-op) (c o-file)) Err bitreich.org 70 i- (let* ((o (first (input-files op c))) Err bitreich.org 70 i- (so (apply-output-translations (make-so-file-name o)))) Err bitreich.org 70 i- (values (list o so) t))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod perform ((o load-op) (c o-file)) Err bitreich.org 70 i- (let ((so (second (input-files o c)))) Err bitreich.org 70 i- (cffi:load-foreign-library (file-namestring so) :search-path (list (pathname-directory-pathname so))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(setf (find-class 'asdf::o-file) (find-class 'o-file)) Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/toolchain/package.lisp b/3rdparties/software/cffi_0.20.0/toolchain/package.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/toolchain/package.lisp.gph bitreich.org 70 i@@ -1,46 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; package.lisp --- Toolchain DEFPACKAGE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(uiop:define-package #:cffi-toolchain Err bitreich.org 70 i- (:mix #:asdf #:uiop #:common-lisp) Err bitreich.org 70 i- (:import-from #:asdf/bundle Err bitreich.org 70 i- #:link-op #:bundle-pathname-type #:bundle-type Err bitreich.org 70 i- #:gather-operation #:gather-type) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- ;; Variables Err bitreich.org 70 i- #:*cc* #:*cc-flags* Err bitreich.org 70 i- #:*ld* #:*ld-exe-flags* #:*ld-dll-flags* Err bitreich.org 70 i- #:*linkkit-start* #:*linkkit-end* Err bitreich.org 70 i- ;; Functions from c-toolchain Err bitreich.org 70 i- #:make-c-file-name #:make-o-file-name Err bitreich.org 70 i- #:make-so-file-name #:make-exe-file-name Err bitreich.org 70 i- #:parse-command-flags #:parse-command-flags-list Err bitreich.org 70 i- #:invoke #:invoke-build #:cc-compile Err bitreich.org 70 i- #:link-static-library #:link-shared-library Err bitreich.org 70 i- #:link-executable #:link-lisp-executable Err bitreich.org 70 i- ;; ASDF classes Err bitreich.org 70 i- #:c-file #:o-file Err bitreich.org 70 i- #:static-runtime-op #:static-image-op #:static-program-op Err bitreich.org 70 i- )) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/toolchain/static-link.lisp b/3rdparties/software/cffi_0.20.0/toolchain/static-link.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/toolchain/static-link.lisp.gph bitreich.org 70 i@@ -1,95 +0,0 @@ Err bitreich.org 70 i-;; FIXME: arrange packages so that this can be moved in ASDF some time later? Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-toolchain) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun static-ops-enabled-p () Err bitreich.org 70 i- (ensure-toolchain-parameters) Err bitreich.org 70 i- (and (or *linkkit-start* *linkkit-end*) t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass static-runtime-op (monolithic-bundle-op link-op selfward-operation) () Err bitreich.org 70 i- (:documentation "Create a Lisp runtime linkable library for the system and its dependencies.")) Err bitreich.org 70 i-(defmethod bundle-type ((o static-runtime-op)) :program) Err bitreich.org 70 i-(defmethod selfward-operation ((o static-runtime-op)) 'monolithic-lib-op) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod output-files ((o static-runtime-op) (s system)) Err bitreich.org 70 i- #-(or ecl mkcl) Err bitreich.org 70 i- (list (subpathname (component-pathname s) Err bitreich.org 70 i- (strcat (coerce-name s) "-runtime") Err bitreich.org 70 i- :type (bundle-pathname-type :program)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod perform ((o static-runtime-op) (s system)) Err bitreich.org 70 i- (link-lisp-executable Err bitreich.org 70 i- (output-file o s) Err bitreich.org 70 i- (link-all-library (first (input-files o s))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass static-image-op (image-op) () Err bitreich.org 70 i- (:documentation "Create a statically linked standalone image for the system.")) Err bitreich.org 70 i-#-(or ecl mkcl) (defmethod selfward-operation ((o static-image-op)) '(load-op static-runtime-op)) Err bitreich.org 70 i-#+(or ecl mkcl) (defmethod gather-operation ((o static-image-op)) 'compile-op) Err bitreich.org 70 i-#+(or ecl mkcl) (defmethod gather-operation ((o static-image-op)) :object) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass static-program-op (program-op static-image-op) () Err bitreich.org 70 i- (:documentation "Create a statically linked standalone executable for the system.")) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Problem? Its output may conflict with the program-op output :-/ Err bitreich.org 70 i- Err bitreich.org 70 i-#-(or ecl mkcl) Err bitreich.org 70 i-(defmethod perform ((o static-image-op) (s system)) Err bitreich.org 70 i- #-(or clisp sbcl) (error "Not implemented yet") Err bitreich.org 70 i- #+(or clisp sbcl) Err bitreich.org 70 i- (let* ((name (coerce-name s)) Err bitreich.org 70 i- (runtime (output-file 'static-runtime-op s)) Err bitreich.org 70 i- (image Err bitreich.org 70 i- #+clisp (implementation-file "base/lispinit.mem") Err bitreich.org 70 i- #+sbcl (subpathname (lisp-implementation-directory) "sbcl.core")) Err bitreich.org 70 i- (output (output-file o s)) Err bitreich.org 70 i- (child-op (if (typep o 'program-op) 'program-op 'image-op))) Err bitreich.org 70 i- (with-temporary-output (tmp output) Err bitreich.org 70 i- (apply 'invoke runtime Err bitreich.org 70 i- #+clisp "-M" #+sbcl "--core" image Err bitreich.org 70 i- `(#+clisp ,@'("--silent" "-ansi" "-norc" "-x") Err bitreich.org 70 i- #+sbcl ,@'("--noinform" "--non-interactive" "--no-sysinit" "--no-userinit" "--eval") Err bitreich.org 70 i- ,(with-safe-io-syntax (:package :asdf) Err bitreich.org 70 i- (let ((*print-pretty* nil) Err bitreich.org 70 i- (*print-case* :downcase)) Err bitreich.org 70 i- (format Err bitreich.org 70 i- ;; This clever staging allows to put things in a single form, Err bitreich.org 70 i- ;; as required for CLISP not to print output for the first form, Err bitreich.org 70 i- ;; yet allow subsequent forms to rely on packages defined by former forms. Err bitreich.org 70 i- nil "'(~@{#.~S~^ ~})" Err bitreich.org 70 i- '(require "asdf") Err bitreich.org 70 i- '(in-package :asdf) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (setf asdf:*central-registry* ',asdf:*central-registry*) Err bitreich.org 70 i- (initialize-source-registry ',asdf::*source-registry-parameter*) Err bitreich.org 70 i- (initialize-output-translations ',asdf::*output-translations-parameter*) Err bitreich.org 70 i- (upgrade-asdf) Err bitreich.org 70 i- ,@(if-let (ql-home Err bitreich.org 70 i- (symbol-value (find-symbol* '*quicklisp-home* 'ql-setup nil))) Err bitreich.org 70 i- `((load ,(subpathname ql-home "setup.lisp")))) Err bitreich.org 70 i- (load-system "cffi-grovel") Err bitreich.org 70 i- ;; We force the (final step of the) operation to take place Err bitreich.org 70 i- (defmethod operation-done-p Err bitreich.org 70 i- ((operation ,child-op) (system (eql (find-system ,name)))) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- ;; Some implementations (notably SBCL) die as part of dumping an image, Err bitreich.org 70 i- ;; so redirect output-files to desired destination, for this processs might Err bitreich.org 70 i- ;; never otherwise get a chance to move the file to destination. Err bitreich.org 70 i- (defmethod output-files Err bitreich.org 70 i- ((operation ,child-op) (system (eql (find-system ,name)))) Err bitreich.org 70 i- (values (list ,tmp) t)) Err bitreich.org 70 i- (operate ',child-op ,name) Err bitreich.org 70 i- (quit)))))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(or ecl mkcl) Err bitreich.org 70 i-(defmethod perform ((o static-image-op) (s system)) Err bitreich.org 70 i- (let (#+ecl Err bitreich.org 70 i- (c::*ld-flags* Err bitreich.org 70 i- (format nil "-Wl,--export-dynamic ~@[ ~A~]" Err bitreich.org 70 i- c::*ld-flags*))) Err bitreich.org 70 i- (call-next-method))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Allow for :static-FOO-op in ASDF definitions. Err bitreich.org 70 i-(setf (find-class 'asdf::static-runtime-op) (find-class 'static-runtime-op) Err bitreich.org 70 i- (find-class 'asdf::static-image-op) (find-class 'static-image-op) Err bitreich.org 70 i- (find-class 'asdf::static-program-op) (find-class 'static-program-op)) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/uffi-compat/uffi-compat.lisp b/3rdparties/software/cffi_0.20.0/uffi-compat/uffi-compat.lisp /scm/clic/file/3rdparties/software/cffi_0.20.0/uffi-compat/uffi-compat.lisp.gph bitreich.org 70 i@@ -1,664 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; uffi-compat.lisp --- UFFI compatibility layer for CFFI. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005-2006, James Bielman Err bitreich.org 70 i-;;; Copyright (C) 2005-2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Code borrowed from UFFI is Copyright (c) Kevin M. Rosenberg. Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:cffi-uffi-compat Err bitreich.org 70 i- (:nicknames #:uffi) ;; is this a good idea? Err bitreich.org 70 i- (:use #:cl) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- Err bitreich.org 70 i- ;; immediate types Err bitreich.org 70 i- #:def-constant Err bitreich.org 70 i- #:def-foreign-type Err bitreich.org 70 i- #:def-type Err bitreich.org 70 i- #:null-char-p Err bitreich.org 70 i- Err bitreich.org 70 i- ;; aggregate types Err bitreich.org 70 i- #:def-enum Err bitreich.org 70 i- #:def-struct Err bitreich.org 70 i- #:get-slot-value Err bitreich.org 70 i- #:get-slot-pointer Err bitreich.org 70 i- #:def-array-pointer Err bitreich.org 70 i- #:deref-array Err bitreich.org 70 i- #:def-union Err bitreich.org 70 i- Err bitreich.org 70 i- ;; objects Err bitreich.org 70 i- #:allocate-foreign-object Err bitreich.org 70 i- #:free-foreign-object Err bitreich.org 70 i- #:with-foreign-object Err bitreich.org 70 i- #:with-foreign-objects Err bitreich.org 70 i- #:size-of-foreign-type Err bitreich.org 70 i- #:pointer-address Err bitreich.org 70 i- #:deref-pointer Err bitreich.org 70 i- #:ensure-char-character Err bitreich.org 70 i- #:ensure-char-integer Err bitreich.org 70 i- #:ensure-char-storable Err bitreich.org 70 i- #:null-pointer-p Err bitreich.org 70 i- #:make-null-pointer Err bitreich.org 70 i- #:make-pointer Err bitreich.org 70 i- #:+null-cstring-pointer+ Err bitreich.org 70 i- #:char-array-to-pointer Err bitreich.org 70 i- #:with-cast-pointer Err bitreich.org 70 i- #:def-foreign-var Err bitreich.org 70 i- #:convert-from-foreign-usb8 Err bitreich.org 70 i- #:def-pointer-var Err bitreich.org 70 i- Err bitreich.org 70 i- ;; string functions Err bitreich.org 70 i- #:convert-from-cstring Err bitreich.org 70 i- #:convert-to-cstring Err bitreich.org 70 i- #:free-cstring Err bitreich.org 70 i- #:with-cstring Err bitreich.org 70 i- #:with-cstrings Err bitreich.org 70 i- #:convert-from-foreign-string Err bitreich.org 70 i- #:convert-to-foreign-string Err bitreich.org 70 i- #:allocate-foreign-string Err bitreich.org 70 i- #:with-foreign-string Err bitreich.org 70 i- #:with-foreign-strings Err bitreich.org 70 i- #:foreign-string-length ; not implemented Err bitreich.org 70 i- #:string-to-octets Err bitreich.org 70 i- #:octets-to-string Err bitreich.org 70 i- #:foreign-encoded-octet-count Err bitreich.org 70 i- Err bitreich.org 70 i- ;; function call Err bitreich.org 70 i- #:def-function Err bitreich.org 70 i- Err bitreich.org 70 i- ;; libraries Err bitreich.org 70 i- #:find-foreign-library Err bitreich.org 70 i- #:load-foreign-library Err bitreich.org 70 i- #:default-foreign-library-type Err bitreich.org 70 i- #:foreign-library-types Err bitreich.org 70 i- Err bitreich.org 70 i- ;; os Err bitreich.org 70 i- #:getenv Err bitreich.org 70 i- #:run-shell-command Err bitreich.org 70 i- )) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:cffi-uffi-compat) Err bitreich.org 70 i- Err bitreich.org 70 i-#+clisp Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (when (equal (machine-type) "POWER MACINTOSH") Err bitreich.org 70 i- (pushnew :ppc *features*))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun convert-uffi-type (uffi-type) Err bitreich.org 70 i- "Convert a UFFI primitive type to a CFFI type." Err bitreich.org 70 i- ;; Many CFFI types are the same as UFFI. This list handles the Err bitreich.org 70 i- ;; exceptions only. Err bitreich.org 70 i- (case uffi-type Err bitreich.org 70 i- (:cstring :pointer) Err bitreich.org 70 i- (:pointer-void :pointer) Err bitreich.org 70 i- (:pointer-self :pointer) Err bitreich.org 70 i- ;; Although UFFI's documentation claims dereferencing :CHAR and Err bitreich.org 70 i- ;; :UNSIGNED-CHAR returns characters, it actually returns Err bitreich.org 70 i- ;; integers. Err bitreich.org 70 i- (:char :char) Err bitreich.org 70 i- (:unsigned-char :unsigned-char) Err bitreich.org 70 i- (:byte :char) Err bitreich.org 70 i- (:unsigned-byte :unsigned-char) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (if (listp uffi-type) Err bitreich.org 70 i- (case (car uffi-type) Err bitreich.org 70 i- ;; this is imho gross but it is what uffi does Err bitreich.org 70 i- (quote (convert-uffi-type (second uffi-type))) Err bitreich.org 70 i- (* :pointer) Err bitreich.org 70 i- (:array `(uffi-array ,(convert-uffi-type (second uffi-type)) Err bitreich.org 70 i- ,(third uffi-type))) Err bitreich.org 70 i- (:union (second uffi-type)) Err bitreich.org 70 i- (:struct (convert-uffi-type (second uffi-type))) Err bitreich.org 70 i- (:struct-pointer :pointer)) Err bitreich.org 70 i- uffi-type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(cffi:define-foreign-type uffi-array-type () Err bitreich.org 70 i- ;; ELEMENT-TYPE should be /unparsed/, suitable for passing to mem-aref. Err bitreich.org 70 i- ((element-type :initform (error "An element-type is required.") Err bitreich.org 70 i- :accessor element-type :initarg :element-type) Err bitreich.org 70 i- (nelems :initform (error "nelems is required.") Err bitreich.org 70 i- :accessor nelems :initarg :nelems)) Err bitreich.org 70 i- (:actual-type :pointer) Err bitreich.org 70 i- (:documentation "UFFI's :array type.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(cffi:define-parse-method uffi-array (element-type count) Err bitreich.org 70 i- (make-instance 'uffi-array-type :element-type element-type Err bitreich.org 70 i- :nelems (or count 1))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod cffi:foreign-type-size ((type uffi-array-type)) Err bitreich.org 70 i- (* (cffi:foreign-type-size (element-type type)) (nelems type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod cffi::aggregatep ((type uffi-array-type)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-;; UFFI's :(unsigned-)char Err bitreich.org 70 i-#+#:ignore Err bitreich.org 70 i-(cffi:define-foreign-type uffi-char () Err bitreich.org 70 i- ()) Err bitreich.org 70 i- Err bitreich.org 70 i-#+#:ignore Err bitreich.org 70 i-(cffi:define-parse-method uffi-char (base-type) Err bitreich.org 70 i- (make-instance 'uffi-char :actual-type base-type)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+#:ignore Err bitreich.org 70 i-(defmethod cffi:translate-to-foreign ((value character) (type uffi-char)) Err bitreich.org 70 i- (char-code value)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+#:ignore Err bitreich.org 70 i-(defmethod cffi:translate-from-foreign (obj (type uffi-char)) Err bitreich.org 70 i- (code-char obj)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro def-type (name type) Err bitreich.org 70 i- "Define a Common Lisp type NAME for UFFI type TYPE." Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- `(deftype ,name () t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro def-foreign-type (name type) Err bitreich.org 70 i- "Define a new foreign type." Err bitreich.org 70 i- `(cffi:defctype ,name ,(convert-uffi-type type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro def-constant (name value &key export) Err bitreich.org 70 i- "Define a constant and conditionally export it." Err bitreich.org 70 i- `(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (defconstant ,name ,value) Err bitreich.org 70 i- ,@(when export `((export ',name))) Err bitreich.org 70 i- ',name)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro null-char-p (val) Err bitreich.org 70 i- "Return true if character is null." Err bitreich.org 70 i- `(zerop (char-code ,val))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro def-enum (enum-name args &key (separator-string "#")) Err bitreich.org 70 i- "Creates a constants for a C type enum list, symbols are Err bitreich.org 70 i-created in the created in the current package. The symbol is the Err bitreich.org 70 i-concatenation of the enum-name name, separator-string, and Err bitreich.org 70 i-field-name" Err bitreich.org 70 i- (let ((counter 0) Err bitreich.org 70 i- (cmds nil) Err bitreich.org 70 i- (constants nil)) Err bitreich.org 70 i- (declare (fixnum counter)) Err bitreich.org 70 i- (dolist (arg args) Err bitreich.org 70 i- (let ((name (if (listp arg) (car arg) arg)) Err bitreich.org 70 i- (value (if (listp arg) Err bitreich.org 70 i- (prog1 Err bitreich.org 70 i- (setq counter (cadr arg)) Err bitreich.org 70 i- (incf counter)) Err bitreich.org 70 i- (prog1 Err bitreich.org 70 i- counter Err bitreich.org 70 i- (incf counter))))) Err bitreich.org 70 i- (setq name (intern (concatenate 'string Err bitreich.org 70 i- (symbol-name enum-name) Err bitreich.org 70 i- separator-string Err bitreich.org 70 i- (symbol-name name)))) Err bitreich.org 70 i- (push `(def-constant ,name ,value) constants))) Err bitreich.org 70 i- (setf cmds (append '(progn) `((cffi:defctype ,enum-name :int)) Err bitreich.org 70 i- (nreverse constants))) Err bitreich.org 70 i- cmds)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro def-struct (name &body fields) Err bitreich.org 70 i- "Define a C structure." Err bitreich.org 70 i- `(cffi:defcstruct ,name Err bitreich.org 70 i- ,@(loop for (name uffi-type) in fields Err bitreich.org 70 i- for cffi-type = (convert-uffi-type uffi-type) Err bitreich.org 70 i- collect (list name cffi-type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; TODO: figure out why the compiler macro is kicking in before Err bitreich.org 70 i-;; the setf expander. Err bitreich.org 70 i-(defun %foreign-slot-value (obj type field) Err bitreich.org 70 i- (cffi:foreign-slot-value obj `(:struct ,type) field)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun (setf %foreign-slot-value) (value obj type field) Err bitreich.org 70 i- (setf (cffi:foreign-slot-value obj `(:struct ,type) field) value)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro get-slot-value (obj type field) Err bitreich.org 70 i- "Access a slot value from a structure." Err bitreich.org 70 i- `(%foreign-slot-value ,obj ,type ,field)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; UFFI uses a different function when accessing a slot whose Err bitreich.org 70 i-;; type is a pointer. We don't need that in CFFI so we use Err bitreich.org 70 i-;; foreign-slot-value too. Err bitreich.org 70 i-(defmacro get-slot-pointer (obj type field) Err bitreich.org 70 i- "Access a pointer slot value from a structure." Err bitreich.org 70 i- `(cffi:foreign-slot-value ,obj ,type ,field)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro def-array-pointer (name type) Err bitreich.org 70 i- "Define a foreign array type." Err bitreich.org 70 i- `(cffi:defctype ,name (uffi-array ,(convert-uffi-type type) 1))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro deref-array (array type position) Err bitreich.org 70 i- "Dereference an array." Err bitreich.org 70 i- `(cffi:mem-aref ,array Err bitreich.org 70 i- ,(if (constantp type) Err bitreich.org 70 i- `',(element-type (cffi::parse-type Err bitreich.org 70 i- (convert-uffi-type (eval type)))) Err bitreich.org 70 i- `(element-type (cffi::parse-type Err bitreich.org 70 i- (convert-uffi-type ,type)))) Err bitreich.org 70 i- ,position)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; UFFI's documentation on DEF-UNION is a bit scarce, I'm not sure Err bitreich.org 70 i-;; if DEFCUNION and DEF-UNION are strictly compatible. Err bitreich.org 70 i-(defmacro def-union (name &body fields) Err bitreich.org 70 i- "Define a foreign union type." Err bitreich.org 70 i- `(cffi:defcunion ,name Err bitreich.org 70 i- ,@(loop for (name uffi-type) in fields Err bitreich.org 70 i- for cffi-type = (convert-uffi-type uffi-type) Err bitreich.org 70 i- collect (list name cffi-type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro allocate-foreign-object (type &optional (size 1)) Err bitreich.org 70 i- "Allocate one or more instance of a foreign type." Err bitreich.org 70 i- `(cffi:foreign-alloc ,(if (constantp type) Err bitreich.org 70 i- `',(convert-uffi-type (eval type)) Err bitreich.org 70 i- `(convert-uffi-type ,type)) Err bitreich.org 70 i- :count ,size)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro free-foreign-object (ptr) Err bitreich.org 70 i- "Free a foreign object allocated by ALLOCATE-FOREIGN-OBJECT." Err bitreich.org 70 i- `(cffi:foreign-free ,ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-foreign-object ((var type) &body body) Err bitreich.org 70 i- "Wrap the allocation of a foreign object around BODY." Err bitreich.org 70 i- `(cffi:with-foreign-object (,var (convert-uffi-type ,type)) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Taken from UFFI's src/objects.lisp Err bitreich.org 70 i-(defmacro with-foreign-objects (bindings &rest body) Err bitreich.org 70 i- (if bindings Err bitreich.org 70 i- `(with-foreign-object ,(car bindings) Err bitreich.org 70 i- (with-foreign-objects ,(cdr bindings) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- `(progn ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro size-of-foreign-type (type) Err bitreich.org 70 i- "Return the size in bytes of a foreign type." Err bitreich.org 70 i- `(cffi:foreign-type-size (convert-uffi-type ,type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro pointer-address (ptr) Err bitreich.org 70 i- "Return the address of a pointer." Err bitreich.org 70 i- `(cffi:pointer-address ,ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro deref-pointer (ptr type) Err bitreich.org 70 i- "Dereference a pointer." Err bitreich.org 70 i- `(cffi:mem-ref ,ptr (convert-uffi-type ,type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defsetf deref-pointer (ptr type) (value) Err bitreich.org 70 i- `(setf (cffi:mem-ref ,ptr (convert-uffi-type ,type)) ,value)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro ensure-char-character (obj &environment env) Err bitreich.org 70 i- "Convert OBJ to a character if it is an integer." Err bitreich.org 70 i- (if (constantp obj env) Err bitreich.org 70 i- (if (characterp obj) obj (code-char obj)) Err bitreich.org 70 i- (let ((obj-var (gensym))) Err bitreich.org 70 i- `(let ((,obj-var ,obj)) Err bitreich.org 70 i- (if (characterp ,obj-var) Err bitreich.org 70 i- ,obj-var Err bitreich.org 70 i- (code-char ,obj-var)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro ensure-char-integer (obj &environment env) Err bitreich.org 70 i- "Convert OBJ to an integer if it is a character." Err bitreich.org 70 i- (if (constantp obj env) Err bitreich.org 70 i- (let ((the-obj (eval obj))) Err bitreich.org 70 i- (if (characterp the-obj) (char-code the-obj) the-obj)) Err bitreich.org 70 i- (let ((obj-var (gensym))) Err bitreich.org 70 i- `(let ((,obj-var ,obj)) Err bitreich.org 70 i- (if (characterp ,obj-var) Err bitreich.org 70 i- (char-code ,obj-var) Err bitreich.org 70 i- ,obj-var))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro ensure-char-storable (obj) Err bitreich.org 70 i- "Ensure OBJ is storable as a character." Err bitreich.org 70 i- `(ensure-char-integer ,obj)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro make-null-pointer (type) Err bitreich.org 70 i- "Create a NULL pointer." Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- `(cffi:null-pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro make-pointer (address type) Err bitreich.org 70 i- "Create a pointer to ADDRESS." Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- `(cffi:make-pointer ,address)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro null-pointer-p (ptr) Err bitreich.org 70 i- "Return true if PTR is a null pointer." Err bitreich.org 70 i- `(cffi:null-pointer-p ,ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter +null-cstring-pointer+ (cffi:null-pointer) Err bitreich.org 70 i- "A constant NULL string pointer.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro char-array-to-pointer (obj) Err bitreich.org 70 i- obj) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-cast-pointer ((var ptr type) &body body) Err bitreich.org 70 i- "Cast a pointer, does nothing in CFFI." Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- `(let ((,var ,ptr)) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro def-foreign-var (name type module) Err bitreich.org 70 i- "Define a symbol macro to access a foreign variable." Err bitreich.org 70 i- (declare (ignore module)) Err bitreich.org 70 i- (flet ((lisp-name (name) Err bitreich.org 70 i- (intern (cffi-sys:canonicalize-symbol-name-case Err bitreich.org 70 i- (substitute #\- #\_ name))))) Err bitreich.org 70 i- `(cffi:defcvar ,(if (listp name) Err bitreich.org 70 i- name Err bitreich.org 70 i- (list name (lisp-name name))) Err bitreich.org 70 i- ,(convert-uffi-type type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro def-pointer-var (name value &optional doc) Err bitreich.org 70 i- #-openmcl `(defvar ,name ,value ,@(if doc (list doc))) Err bitreich.org 70 i- #+openmcl `(ccl::defloadvar ,name ,value ,doc)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro convert-from-cstring (s) Err bitreich.org 70 i- "Convert a cstring to a Lisp string." Err bitreich.org 70 i- (let ((ret (gensym))) Err bitreich.org 70 i- `(let ((,ret (cffi:foreign-string-to-lisp ,s))) Err bitreich.org 70 i- (if (equal ,ret "") Err bitreich.org 70 i- nil Err bitreich.org 70 i- ,ret)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro convert-to-cstring (obj) Err bitreich.org 70 i- "Convert a Lisp string to a cstring." Err bitreich.org 70 i- (let ((str (gensym))) Err bitreich.org 70 i- `(let ((,str ,obj)) Err bitreich.org 70 i- (if (null ,str) Err bitreich.org 70 i- (cffi:null-pointer) Err bitreich.org 70 i- (cffi:foreign-string-alloc ,str))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro free-cstring (ptr) Err bitreich.org 70 i- "Free a cstring." Err bitreich.org 70 i- `(cffi:foreign-string-free ,ptr)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-cstring ((foreign-string lisp-string) &body body) Err bitreich.org 70 i- "Binds a newly creating string." Err bitreich.org 70 i- (let ((str (gensym)) (body-proc (gensym))) Err bitreich.org 70 i- `(flet ((,body-proc (,foreign-string) ,@body)) Err bitreich.org 70 i- (let ((,str ,lisp-string)) Err bitreich.org 70 i- (if (null ,str) Err bitreich.org 70 i- (,body-proc (cffi:null-pointer)) Err bitreich.org 70 i- (cffi:with-foreign-string (,foreign-string ,str) Err bitreich.org 70 i- (,body-proc ,foreign-string))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Taken from UFFI's src/strings.lisp Err bitreich.org 70 i-(defmacro with-cstrings (bindings &rest body) Err bitreich.org 70 i- (if bindings Err bitreich.org 70 i- `(with-cstring ,(car bindings) Err bitreich.org 70 i- (with-cstrings ,(cdr bindings) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- `(progn ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro def-function (name args &key module (returning :void)) Err bitreich.org 70 i- "Define a foreign function." Err bitreich.org 70 i- (declare (ignore module)) Err bitreich.org 70 i- `(cffi:defcfun ,name ,(convert-uffi-type returning) Err bitreich.org 70 i- ,@(loop for (name type) in args Err bitreich.org 70 i- collect `(,name ,(convert-uffi-type type))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Taken from UFFI's src/libraries.lisp Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *loaded-libraries* nil Err bitreich.org 70 i- "List of foreign libraries loaded. Used to prevent reloading a library") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun default-foreign-library-type () Err bitreich.org 70 i- "Returns string naming default library type for platform" Err bitreich.org 70 i- #+(or win32 cygwin mswindows) "dll" Err bitreich.org 70 i- #+(or macos macosx darwin ccl-5.0) "dylib" Err bitreich.org 70 i- #-(or win32 cygwin mswindows macos macosx darwin ccl-5.0) "so") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-library-types () Err bitreich.org 70 i- "Returns list of string naming possible library types for platform, Err bitreich.org 70 i-sorted by preference" Err bitreich.org 70 i- #+(or win32 cygwin mswindows) '("dll" "lib" "so") Err bitreich.org 70 i- #+(or macos macosx darwin ccl-5.0) '("dylib" "bundle") Err bitreich.org 70 i- #-(or win32 cygwin mswindows macos macosx darwin ccl-5.0) '("so" "a" "o")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun find-foreign-library (names directories &key types drive-letters) Err bitreich.org 70 i- "Looks for a foreign library. directories can be a single Err bitreich.org 70 i-string or a list of strings of candidate directories. Use default Err bitreich.org 70 i-library type if type is not specified." Err bitreich.org 70 i- (unless types Err bitreich.org 70 i- (setq types (foreign-library-types))) Err bitreich.org 70 i- (unless (listp types) Err bitreich.org 70 i- (setq types (list types))) Err bitreich.org 70 i- (unless (listp names) Err bitreich.org 70 i- (setq names (list names))) Err bitreich.org 70 i- (unless (listp directories) Err bitreich.org 70 i- (setq directories (list directories))) Err bitreich.org 70 i- #+(or win32 mswindows) Err bitreich.org 70 i- (unless (listp drive-letters) Err bitreich.org 70 i- (setq drive-letters (list drive-letters))) Err bitreich.org 70 i- #-(or win32 mswindows) Err bitreich.org 70 i- (setq drive-letters '(nil)) Err bitreich.org 70 i- (dolist (drive-letter drive-letters) Err bitreich.org 70 i- (dolist (name names) Err bitreich.org 70 i- (dolist (dir directories) Err bitreich.org 70 i- (dolist (type types) Err bitreich.org 70 i- (let ((path (make-pathname Err bitreich.org 70 i- #+lispworks :host Err bitreich.org 70 i- #+lispworks (when drive-letter drive-letter) Err bitreich.org 70 i- #-lispworks :device Err bitreich.org 70 i- #-lispworks (when drive-letter drive-letter) Err bitreich.org 70 i- :name name Err bitreich.org 70 i- :type type Err bitreich.org 70 i- :directory Err bitreich.org 70 i- (etypecase dir Err bitreich.org 70 i- (pathname Err bitreich.org 70 i- (pathname-directory dir)) Err bitreich.org 70 i- (list Err bitreich.org 70 i- dir) Err bitreich.org 70 i- (string Err bitreich.org 70 i- (pathname-directory Err bitreich.org 70 i- (parse-namestring dir))))))) Err bitreich.org 70 i- (when (probe-file path) Err bitreich.org 70 i- (return-from find-foreign-library path))))))) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun convert-supporting-libraries-to-string (libs) Err bitreich.org 70 i- (let (lib-load-list) Err bitreich.org 70 i- (dolist (lib libs) Err bitreich.org 70 i- (push (format nil "-l~A" lib) lib-load-list)) Err bitreich.org 70 i- (nreverse lib-load-list))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun load-foreign-library (filename &key module supporting-libraries Err bitreich.org 70 i- force-load) Err bitreich.org 70 i- #+(or allegro mcl sbcl clisp) (declare (ignore module supporting-libraries)) Err bitreich.org 70 i- #+(or cmucl scl sbcl) (declare (ignore module)) Err bitreich.org 70 i- Err bitreich.org 70 i- (when (and filename (or (null (pathname-directory filename)) Err bitreich.org 70 i- (probe-file filename))) Err bitreich.org 70 i- (if (pathnamep filename) ;; ensure filename is a string to check if Err bitreich.org 70 i- (setq filename (namestring filename))) ; already loaded Err bitreich.org 70 i- Err bitreich.org 70 i- (if (and (not force-load) Err bitreich.org 70 i- (find filename *loaded-libraries* :test #'string-equal)) Err bitreich.org 70 i- t ;; return T, but don't reload library Err bitreich.org 70 i- (progn Err bitreich.org 70 i- ;; FIXME: Hmm, what are these two for? Err bitreich.org 70 i- #+cmucl Err bitreich.org 70 i- (let ((type (pathname-type (parse-namestring filename)))) Err bitreich.org 70 i- (if (string-equal type "so") Err bitreich.org 70 i- (sys::load-object-file filename) Err bitreich.org 70 i- (alien:load-foreign filename Err bitreich.org 70 i- :libraries Err bitreich.org 70 i- (convert-supporting-libraries-to-string Err bitreich.org 70 i- supporting-libraries)))) Err bitreich.org 70 i- #+scl Err bitreich.org 70 i- (let ((type (pathname-type (parse-namestring filename)))) Err bitreich.org 70 i- (if (string-equal type "so") Err bitreich.org 70 i- (sys::load-dynamic-object filename) Err bitreich.org 70 i- (alien:load-foreign filename Err bitreich.org 70 i- :libraries Err bitreich.org 70 i- (convert-supporting-libraries-to-string Err bitreich.org 70 i- supporting-libraries)))) Err bitreich.org 70 i- Err bitreich.org 70 i- #-(or cmucl scl) Err bitreich.org 70 i- (cffi:load-foreign-library filename) Err bitreich.org 70 i- (push filename *loaded-libraries*) Err bitreich.org 70 i- t)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Taken from UFFI's src/os.lisp Err bitreich.org 70 i-(defun getenv (var) Err bitreich.org 70 i- "Return the value of the environment variable." Err bitreich.org 70 i- #+allegro (sys::getenv (string var)) Err bitreich.org 70 i- #+clisp (sys::getenv (string var)) Err bitreich.org 70 i- #+(or cmucl scl) (cdr (assoc (string var) ext:*environment-list* :test #'equalp Err bitreich.org 70 i- :key #'string)) Err bitreich.org 70 i- #+(or ecl gcl) (si:getenv (string var)) Err bitreich.org 70 i- #+lispworks (lw:environment-variable (string var)) Err bitreich.org 70 i- #+lucid (lcl:environment-variable (string var)) Err bitreich.org 70 i- #+(or mcl ccl) (ccl::getenv var) Err bitreich.org 70 i- #+sbcl (sb-ext:posix-getenv var) Err bitreich.org 70 i- #-(or allegro clisp cmucl ecl scl gcl lispworks lucid mcl ccl sbcl) Err bitreich.org 70 i- (error 'not-implemented :proc (list 'getenv var))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Taken from UFFI's src/os.lisp Err bitreich.org 70 i-;; modified from function ASDF -- Copyright Dan Barlow and Contributors Err bitreich.org 70 i-(defun run-shell-command (control-string &rest args) Err bitreich.org 70 i- "Interpolate ARGS into CONTROL-STRING as if by FORMAT, and Err bitreich.org 70 i-synchronously execute the result using a Bourne-compatible shell, with Err bitreich.org 70 i-output to *trace-output*. Returns the shell's exit code." Err bitreich.org 70 i- (let ((command (apply #'format nil control-string args)) Err bitreich.org 70 i- (output *trace-output*)) Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- (sb-impl::process-exit-code Err bitreich.org 70 i- (sb-ext:run-program Err bitreich.org 70 i- "/bin/sh" Err bitreich.org 70 i- (list "-c" command) Err bitreich.org 70 i- :input nil :output output)) Err bitreich.org 70 i- Err bitreich.org 70 i- #+(or cmucl scl) Err bitreich.org 70 i- (ext:process-exit-code Err bitreich.org 70 i- (ext:run-program Err bitreich.org 70 i- "/bin/sh" Err bitreich.org 70 i- (list "-c" command) Err bitreich.org 70 i- :input nil :output output)) Err bitreich.org 70 i- Err bitreich.org 70 i- #+allegro Err bitreich.org 70 i- (excl:run-shell-command command :input nil :output output) Err bitreich.org 70 i- Err bitreich.org 70 i- #+lispworks Err bitreich.org 70 i- (system:call-system-showing-output Err bitreich.org 70 i- command Err bitreich.org 70 i- :shell-type "/bin/sh" Err bitreich.org 70 i- :output-stream output) Err bitreich.org 70 i- Err bitreich.org 70 i- #+clisp ;XXX not exactly *trace-output*, I know Err bitreich.org 70 i- (ext:run-shell-command command :output :terminal :wait t) Err bitreich.org 70 i- Err bitreich.org 70 i- #+openmcl Err bitreich.org 70 i- (nth-value 1 Err bitreich.org 70 i- (ccl:external-process-status Err bitreich.org 70 i- (ccl:run-program "/bin/sh" (list "-c" command) Err bitreich.org 70 i- :input nil :output output Err bitreich.org 70 i- :wait t))) Err bitreich.org 70 i- Err bitreich.org 70 i- #+ecl Err bitreich.org 70 i- (nth-value 1 Err bitreich.org 70 i- (ext:run-program Err bitreich.org 70 i- "/bin/sh" (list "-c" command) Err bitreich.org 70 i- :input nil :output output :error nil :wait t)) Err bitreich.org 70 i- Err bitreich.org 70 i- #-(or openmcl ecl clisp lispworks allegro scl cmucl sbcl) Err bitreich.org 70 i- (error "RUN-SHELL-PROGRAM not implemented for this Lisp") Err bitreich.org 70 i- )) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Some undocumented UFFI operators... Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro convert-from-foreign-string Err bitreich.org 70 i- (obj &key length (locale :default) Err bitreich.org 70 i- (encoding 'cffi:*default-foreign-encoding*) Err bitreich.org 70 i- (null-terminated-p t)) Err bitreich.org 70 i- ;; in effect, (eq NULL-TERMINATED-P (null LENGTH)). Hopefully, Err bitreich.org 70 i- ;; that's compatible with the intended semantics, which are Err bitreich.org 70 i- ;; undocumented. If that's not the case, we can implement Err bitreich.org 70 i- ;; NULL-TERMINATED-P in CFFI:FOREIGN-STRING-TO-LISP. Err bitreich.org 70 i- (declare (ignore locale null-terminated-p)) Err bitreich.org 70 i- (let ((ret (gensym))) Err bitreich.org 70 i- `(let ((,ret (cffi:foreign-string-to-lisp ,obj Err bitreich.org 70 i- :count ,length Err bitreich.org 70 i- :encoding ,encoding))) Err bitreich.org 70 i- (if (equal ,ret "") Err bitreich.org 70 i- nil Err bitreich.org 70 i- ,ret)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; What's the difference between this and convert-to-cstring? Err bitreich.org 70 i-(defmacro convert-to-foreign-string Err bitreich.org 70 i- (obj &optional (encoding 'cffi:*default-foreign-encoding*)) Err bitreich.org 70 i- (let ((str (gensym))) Err bitreich.org 70 i- `(let ((,str ,obj)) Err bitreich.org 70 i- (if (null ,str) Err bitreich.org 70 i- (cffi:null-pointer) Err bitreich.org 70 i- (cffi:foreign-string-alloc ,str :encoding ,encoding))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro allocate-foreign-string (size &key unsigned) Err bitreich.org 70 i- (declare (ignore unsigned)) Err bitreich.org 70 i- `(cffi:foreign-alloc :char :count ,size)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Ditto. Err bitreich.org 70 i-(defmacro with-foreign-string ((foreign-string lisp-string) &body body) Err bitreich.org 70 i- (let ((str (gensym))) Err bitreich.org 70 i- `(let ((,str ,lisp-string)) Err bitreich.org 70 i- (if (null ,str) Err bitreich.org 70 i- (let ((,foreign-string (cffi:null-pointer))) Err bitreich.org 70 i- ,@body) Err bitreich.org 70 i- (cffi:with-foreign-string (,foreign-string ,str) Err bitreich.org 70 i- ,@body))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-foreign-strings (bindings &body body) Err bitreich.org 70 i- `(with-foreign-string ,(car bindings) Err bitreich.org 70 i- ,@(if (cdr bindings) Err bitreich.org 70 i- `((with-foreign-strings ,(cdr bindings) ,@body)) Err bitreich.org 70 i- body))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; This function returns a form? Where is this used in user-code? Err bitreich.org 70 i-(defun foreign-string-length (foreign-string) Err bitreich.org 70 i- (declare (ignore foreign-string)) Err bitreich.org 70 i- (error "FOREIGN-STRING-LENGTH not implemented.")) Err bitreich.org 70 i- Err bitreich.org 70 i-;; This should be optimized. Err bitreich.org 70 i-(defun convert-from-foreign-usb8 (s len) Err bitreich.org 70 i- (let ((a (make-array len :element-type '(unsigned-byte 8)))) Err bitreich.org 70 i- (dotimes (i len a) Err bitreich.org 70 i- (setf (aref a i) (cffi:mem-ref s :unsigned-char i))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; String Encodings Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro string-to-octets (str &key encoding null-terminate) Err bitreich.org 70 i- `(babel:concatenate-strings-to-octets Err bitreich.org 70 i- (or ,encoding cffi:*default-foreign-encoding*) Err bitreich.org 70 i- ,str Err bitreich.org 70 i- (if ,null-terminate Err bitreich.org 70 i- #.(string #\Nul) Err bitreich.org 70 i- ""))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro octets-to-string (octets &key encoding) Err bitreich.org 70 i- `(babel:octets-to-string ,octets Err bitreich.org 70 i- :encoding (or ,encoding Err bitreich.org 70 i- cffi:*default-foreign-encoding*))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun foreign-encoded-octet-count (str &key encoding) Err bitreich.org 70 i- (babel:string-size-in-octets str Err bitreich.org 70 i- :encoding (or encoding Err bitreich.org 70 i- cffi:*default-foreign-encoding*))) Err bitreich.org 70 1diff --git a/3rdparties/software/cffi_0.20.0/uffi-compat/uffi.asd b/3rdparties/software/cffi_0.20.0/uffi-compat/uffi.asd /scm/clic/file/3rdparties/software/cffi_0.20.0/uffi-compat/uffi.asd.gph bitreich.org 70 i@@ -1,3 +0,0 @@ Err bitreich.org 70 i-;;;; uffi.asd -*- Mode: Lisp -*- Err bitreich.org 70 i- Err bitreich.org 70 i-(defsystem uffi :depends-on (cffi-uffi-compat)) Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/.gitignore b/3rdparties/software/cl+ssl-20190202-git/.gitignore /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/.gitignore.gph bitreich.org 70 i@@ -1,3 +0,0 @@ Err bitreich.org 70 i-*~ Err bitreich.org 70 i-\#* Err bitreich.org 70 i-.#* Err bitreich.org 70 i-\ No newline at end of file Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/.travis.yml b/3rdparties/software/cl+ssl-20190202-git/.travis.yml /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/.travis.yml.gph bitreich.org 70 i@@ -1,50 +0,0 @@ Err bitreich.org 70 i-language: common-lisp Err bitreich.org 70 i-sudo: false # lets try new infrastructure Err bitreich.org 70 i- Err bitreich.org 70 i-env: Err bitreich.org 70 i- global: Err bitreich.org 70 i- - PATH=~/.roswell/bin:$PATH Err bitreich.org 70 i- - ROSWELL_BRANCH=release Err bitreich.org 70 i- - ROSWELL_INSTALL_DIR=$HOME/.roswell Err bitreich.org 70 i- - COVERAGE_EXCLUDE=test Err bitreich.org 70 i- matrix: Err bitreich.org 70 i- - LISP=sbcl-bin COVERALLS=true Err bitreich.org 70 i- - LISP=ccl-bin Err bitreich.org 70 i-# CLISP is disabled because it can't load bordeaux-treads which require ASDF >= 3.1 Err bitreich.org 70 i-# Example log: https://travis-ci.org/cl-plus-ssl/cl-plus-ssl/jobs/181539210 Err bitreich.org 70 i-# (As a workaround we could try to download ASDF 3 ourselves) Err bitreich.org 70 i-# - LISP=clisp Err bitreich.org 70 i- - LISP=ecl Err bitreich.org 70 i- - LISP=abcl Err bitreich.org 70 i-# CMUCL fails to load libssl on TravisCI, despite OpenSSL 1.0.1f is installed, Err bitreich.org 70 i-# example log: https://travis-ci.org/cl-plus-ssl/cl-plus-ssl/jobs/479189027 Err bitreich.org 70 i-# - LISP=cmu-bin Err bitreich.org 70 i-# Allegro is also failing to load libssl Err bitreich.org 70 i-# https://travis-ci.org/cl-plus-ssl/cl-plus-ssl/jobs/479194225 Err bitreich.org 70 i-# - LISP=allegro Err bitreich.org 70 i- Err bitreich.org 70 i-install: Err bitreich.org 70 i- - curl -L https://raw.githubusercontent.com/snmsts/roswell/$ROSWELL_BRANCH/scripts/install-for-ci.sh | sh Err bitreich.org 70 i- Err bitreich.org 70 i-# cache: Err bitreich.org 70 i-# directories: Err bitreich.org 70 i-# - $HOME/.roswell Err bitreich.org 70 i-# - $HOME/.config/common-lisp Err bitreich.org 70 i- Err bitreich.org 70 i-script: Err bitreich.org 70 i- - "ros -e '(progn Err bitreich.org 70 i- (format t \"(lisp-implementation-type): ~A~%\" (lisp-implementation-type)) Err bitreich.org 70 i- (format t \"(lisp-implementation-version): ~A~%\" (lisp-implementation-version)) Err bitreich.org 70 i- (format t \"*features*: ~A~%\" *features*) Err bitreich.org 70 i- (format t \"(asdf:asdf-version): ~A~%\" (asdf:asdf-version)))' Err bitreich.org 70 i- -e '(ql:quickload :cl+ssl.test)' Err bitreich.org 70 i- -e '(let ((results Err bitreich.org 70 i- #+ sbcl Err bitreich.org 70 i- (coveralls:with-coveralls (:exclude \"test\") Err bitreich.org 70 i- (5am:run :cl+ssl)) Err bitreich.org 70 i- #- sbcl Err bitreich.org 70 i- (5am:run :cl+ssl) Err bitreich.org 70 i- )) Err bitreich.org 70 i- (5am:explain! results) Err bitreich.org 70 i- (unless (5am:results-status results) Err bitreich.org 70 i- (uiop:quit 1)))'" Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/LICENSE b/3rdparties/software/cl+ssl-20190202-git/LICENSE /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/LICENSE.gph bitreich.org 70 i@@ -1,31 +0,0 @@ Err bitreich.org 70 i-Copyright (C) 2001, 2003 Eric Marsden Err bitreich.org 70 i-Copyright (C) ???? Jochen Schmidt Err bitreich.org 70 i-Copyright (C) 2005 David Lichteblau Err bitreich.org 70 i-Copyright (C) 2007 Pixel // pinterface Err bitreich.org 70 i- Err bitreich.org 70 i-* License first changed by Eric Marsden, Jochen Schmidt, and David Lichteblau Err bitreich.org 70 i- from plain LGPL to Lisp-LGPL in December 2005. Err bitreich.org 70 i- Err bitreich.org 70 i-* License then changed by Eric Marsden, Jochen Schmidt, and David Lichteblau Err bitreich.org 70 i- from Lisp-LGPL to MIT-style in January 2007. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i- obtaining a copy of this software and associated documentation files Err bitreich.org 70 i- (the "Software"), to deal in the Software without restriction, Err bitreich.org 70 i- including without limitation the rights to use, copy, modify, merge, Err bitreich.org 70 i- publish, distribute, sublicense, and/or sell copies of the Software, Err bitreich.org 70 i- and to permit persons to whom the Software is furnished to do so, Err bitreich.org 70 i- subject to the following conditions: Err bitreich.org 70 i- Err bitreich.org 70 i- The above copyright notice and this permission notice shall be Err bitreich.org 70 i- included in all copies or substantial portions of the Software. Err bitreich.org 70 i- Err bitreich.org 70 i- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS Err bitreich.org 70 i- BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN Err bitreich.org 70 i- ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN Err bitreich.org 70 i- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE Err bitreich.org 70 i- SOFTWARE. Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/Makefile b/3rdparties/software/cl+ssl-20190202-git/Makefile /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/Makefile.gph bitreich.org 70 i@@ -1,3 +0,0 @@ Err bitreich.org 70 i-.PHONY: clean Err bitreich.org 70 i-clean: Err bitreich.org 70 i- rm -f *.fasl *.x86f *.fas *.ufsl *.lib *.pfsl Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/README.md b/3rdparties/software/cl+ssl-20190202-git/README.md /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/README.md.gph bitreich.org 70 i@@ -1,4 +0,0 @@ Err bitreich.org 70 i-[![Build Status](https://travis-ci.org/cl-plus-ssl/cl-plus-ssl.svg?branch=master)](https://travis-ci.org/cl-plus-ssl/cl-plus-ssl) Err bitreich.org 70 i- Err bitreich.org 70 i-Homepage: http://common-lisp.net/project/cl-plus-ssl/ Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/build.xcvb b/3rdparties/software/cl+ssl-20190202-git/build.xcvb /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/build.xcvb.gph bitreich.org 70 i@@ -1,26 +0,0 @@ Err bitreich.org 70 i-;;; -*- mode: lisp -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2001, 2003 Eric Marsden Err bitreich.org 70 i-;;; Copyright (C) 2005 David Lichteblau Err bitreich.org 70 i-;;; Copyright (C) 2007 Pixel // pinterface Err bitreich.org 70 i-;;; "the conditions and ENSURE-SSL-FUNCALL are by Jochen Schmidt." Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; See LICENSE for details. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-#+xcvb Err bitreich.org 70 i-(module Err bitreich.org 70 i- (:fullname "cl+ssl" Err bitreich.org 70 i- :depends-on ("src/package" Err bitreich.org 70 i- "src/reload" Err bitreich.org 70 i- "src/conditions" Err bitreich.org 70 i- "src/ffi" Err bitreich.org 70 i- "src/ffi-buffer-all" Err bitreich.org 70 i- (:cond ((:featurep :clisp) "src/ffi-buffer-clisp") Err bitreich.org 70 i- ((:featurep (:not :clisp)) "src/ffi-buffer")) Err bitreich.org 70 i- "src/streams" Err bitreich.org 70 i- "src/bio" Err bitreich.org 70 i- "src/random" Err bitreich.org 70 i- "src/context") Err bitreich.org 70 i- :build-depends-on ("flexi-streams" "trivial-gray-streams" "cffi") Err bitreich.org 70 i- :supersedes-asdf ("cl+ssl"))) Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/cl+ssl.asd b/3rdparties/software/cl+ssl-20190202-git/cl+ssl.asd /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/cl+ssl.asd.gph bitreich.org 70 i@@ -1,48 +0,0 @@ Err bitreich.org 70 i-;;; -*- mode: lisp -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2001, 2003 Eric Marsden Err bitreich.org 70 i-;;; Copyright (C) 2005 David Lichteblau Err bitreich.org 70 i-;;; Copyright (C) 2007 Pixel // pinterface Err bitreich.org 70 i-;;; "the conditions and ENSURE-SSL-FUNCALL are by Jochen Schmidt." Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; See LICENSE for details. Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage :cl+ssl-system Err bitreich.org 70 i- (:use :cl :asdf)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl+ssl-system) Err bitreich.org 70 i- Err bitreich.org 70 i-(defsystem :cl+ssl Err bitreich.org 70 i- :description "Common Lisp interface to OpenSSL." Err bitreich.org 70 i- :license "MIT" Err bitreich.org 70 i- :author "Eric Marsden, Jochen Schmidt, David Lichteblau" Err bitreich.org 70 i- :depends-on (:cffi :trivial-gray-streams :flexi-streams #+sbcl :sb-posix Err bitreich.org 70 i- :bordeaux-threads :trivial-garbage :uiop Err bitreich.org 70 i- :alexandria :trivial-features) Err bitreich.org 70 i- :serial t Err bitreich.org 70 i- :components ((:module "src" Err bitreich.org 70 i- :serial t Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:file "package") Err bitreich.org 70 i- (:file "reload") Err bitreich.org 70 i- (:file "conditions") Err bitreich.org 70 i- (:file "ffi") Err bitreich.org 70 i- (:file "x509") Err bitreich.org 70 i- (:file "ffi-buffer-all") Err bitreich.org 70 i- #-clisp (:file "ffi-buffer") Err bitreich.org 70 i- #+clisp (:file "ffi-buffer-clisp") Err bitreich.org 70 i- (:file "streams") Err bitreich.org 70 i- (:file "bio") Err bitreich.org 70 i- (:file "random") Err bitreich.org 70 i- (:file "context") Err bitreich.org 70 i- (:file "verify-hostname"))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defsystem :openssl-1.1.0 Err bitreich.org 70 i- :description "FFI bindings to API introduced in OpenSSL 1.1.0" Err bitreich.org 70 i- :license "MIT" Err bitreich.org 70 i- :author "Anton Vodonosov" Err bitreich.org 70 i- :depends-on (:cffi) Err bitreich.org 70 i- :serial t Err bitreich.org 70 i- :components ((:module "src" Err bitreich.org 70 i- :serial t Err bitreich.org 70 i- :components ((:file "ffi-1.1.0"))))) Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/cl+ssl.test.asd b/3rdparties/software/cl+ssl-20190202-git/cl+ssl.test.asd /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/cl+ssl.test.asd.gph bitreich.org 70 i@@ -1,31 +0,0 @@ Err bitreich.org 70 i-;;; -*- mode: lisp -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2015 Ilya Khaprov Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; See LICENSE for details. Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage :cl+ssl.test-system Err bitreich.org 70 i- (:use :cl :asdf)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl+ssl.test-system) Err bitreich.org 70 i- Err bitreich.org 70 i-(asdf:defsystem :cl+ssl.test Err bitreich.org 70 i- :version "0.1" Err bitreich.org 70 i- :description "CL+SSL test suite" Err bitreich.org 70 i- :maintainer "Ilya Khaprov " Err bitreich.org 70 i- :author "Ilya Khaprov " Err bitreich.org 70 i- :licence "MIT" Err bitreich.org 70 i- :depends-on (:fiveam Err bitreich.org 70 i- (:feature (:or :sbcl :ccl) :cl-coveralls) Err bitreich.org 70 i- :cl+ssl Err bitreich.org 70 i- :openssl-1.1.0 ;; for now the dependency is only included to test how the system is loaded Err bitreich.org 70 i- :usocket) Err bitreich.org 70 i- :serial t Err bitreich.org 70 i- :components ((:module "test" Err bitreich.org 70 i- :serial t Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:file "package") Err bitreich.org 70 i- (:file "dummy") Err bitreich.org 70 i- (:file "sni") Err bitreich.org 70 i- (:file "verify-hostname") Err bitreich.org 70 i- (:file "badssl-com"))))) Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/example.lisp b/3rdparties/software/cl+ssl-20190202-git/example.lisp /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/example.lisp.gph bitreich.org 70 i@@ -1,110 +0,0 @@ Err bitreich.org 70 i-;;; Copyright (C) 2001, 2003 Eric Marsden Err bitreich.org 70 i-;;; Copyright (C) 2005 David Lichteblau Err bitreich.org 70 i-;;; "the conditions and ENSURE-SSL-FUNCALL are by Jochen Schmidt." Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; See LICENSE for details. Err bitreich.org 70 i- Err bitreich.org 70 i-#| Err bitreich.org 70 i-(load "example.lisp") Err bitreich.org 70 i-(ssl-test::test-https-client "www.google.com") Err bitreich.org 70 i-(ssl-test::test-https-server) Err bitreich.org 70 i-|# Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage :ssl-test Err bitreich.org 70 i- (:use :cl)) Err bitreich.org 70 i-(in-package :ssl-test) Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (asdf:operate 'asdf:load-op :trivial-sockets)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun read-line-crlf (stream &optional eof-error-p) Err bitreich.org 70 i- (let ((s (make-string-output-stream))) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- for empty = t then nil Err bitreich.org 70 i- for c = (read-char stream eof-error-p nil) Err bitreich.org 70 i- while (and c (not (eql c #\return))) Err bitreich.org 70 i- do Err bitreich.org 70 i- (unless (eql c #\newline) Err bitreich.org 70 i- (write-char c s)) Err bitreich.org 70 i- finally Err bitreich.org 70 i- (return Err bitreich.org 70 i- (if empty nil (get-output-stream-string s)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun test-nntps-client (&optional (host "snews.gmane.org") (port 563)) Err bitreich.org 70 i- (let* ((fd (trivial-sockets:open-stream host port Err bitreich.org 70 i- :element-type '(unsigned-byte 8))) Err bitreich.org 70 i- (nntps (cl+ssl:make-ssl-client-stream fd :external-format '(:iso-8859-1 :eol-style :lf)))) Err bitreich.org 70 i- (format t "NNTPS> ~A~%" (read-line-crlf nntps)) Err bitreich.org 70 i- (write-line "HELP" nntps) Err bitreich.org 70 i- (force-output nntps) Err bitreich.org 70 i- (loop :for line = (read-line-crlf nntps nil) Err bitreich.org 70 i- :until (string-equal "." line) Err bitreich.org 70 i- :do (format t "NNTPS> ~A~%" line)))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;; open an HTTPS connection to a secure web server and make a Err bitreich.org 70 i-;; HEAD request Err bitreich.org 70 i-(defun test-https-client (host &optional (port 443)) Err bitreich.org 70 i- (let* ((deadline (+ (get-internal-real-time) Err bitreich.org 70 i- (* 3 internal-time-units-per-second))) Err bitreich.org 70 i- (socket (ccl:make-socket :address-family :internet Err bitreich.org 70 i- :connect :active Err bitreich.org 70 i- :type :stream Err bitreich.org 70 i- :remote-host host Err bitreich.org 70 i- :remote-port port Err bitreich.org 70 i-;; :local-host (resolve-hostname local-host) Err bitreich.org 70 i-;; :local-port local-port Err bitreich.org 70 i- :deadline deadline)) Err bitreich.org 70 i- (https Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (cl+ssl:make-ssl-client-stream Err bitreich.org 70 i- socket Err bitreich.org 70 i- :unwrap-stream-p t Err bitreich.org 70 i- :external-format '(:iso-8859-1 :eol-style :lf))))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (format https "GET / HTTP/1.0~%Host: ~a~%~%" host) Err bitreich.org 70 i- (force-output https) Err bitreich.org 70 i- (loop :for line = (read-line-crlf https nil) Err bitreich.org 70 i- :while line :do Err bitreich.org 70 i- (format t "HTTPS> ~a~%" line))) Err bitreich.org 70 i- (close https)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; start a simple HTTPS server. See the mod_ssl documentation at Err bitreich.org 70 i-;; for information on generating the Err bitreich.org 70 i-;; server certificate and key Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; You can stress-test the server with Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; siege -c 10 -u https://host:8080/foobar Err bitreich.org 70 i-;; Err bitreich.org 70 i-(defun test-https-server Err bitreich.org 70 i- (&key (port 8080) Err bitreich.org 70 i- (cert "/home/david/newcert.pem") Err bitreich.org 70 i- (key "/home/david/newkey.pem")) Err bitreich.org 70 i- (format t "~&SSL server listening on port ~d~%" port) Err bitreich.org 70 i- (trivial-sockets:with-server (server (:port port)) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- (let* ((socket (trivial-sockets:accept-connection Err bitreich.org 70 i- server Err bitreich.org 70 i- :element-type '(unsigned-byte 8))) Err bitreich.org 70 i- (client (cl+ssl:make-ssl-server-stream Err bitreich.org 70 i- socket Err bitreich.org 70 i- :external-format '(:iso-8859-1 :eol-style :lf) Err bitreich.org 70 i- :certificate cert Err bitreich.org 70 i- :key key))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (loop :for line = (read-line-crlf client nil) Err bitreich.org 70 i- :while (> (length line) 1) :do Err bitreich.org 70 i- (format t "HTTPS> ~a~%" line)) Err bitreich.org 70 i- (format client "HTTP/1.0 200 OK~%") Err bitreich.org 70 i- (format client "Server: SSL-CMUCL/1.1~%") Err bitreich.org 70 i- (format client "Content-Type: text/plain~%") Err bitreich.org 70 i- (terpri client) Err bitreich.org 70 i- (format client "G'day at ~A!~%" Err bitreich.org 70 i- (multiple-value-list (get-decoded-time))) Err bitreich.org 70 i- (format client "CL+SSL running in ~A ~A~%" Err bitreich.org 70 i- (lisp-implementation-type) Err bitreich.org 70 i- (lisp-implementation-version))) Err bitreich.org 70 i- (close client)))))) Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/index.css b/3rdparties/software/cl+ssl-20190202-git/index.css /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/index.css.gph bitreich.org 70 i@@ -1,72 +0,0 @@ Err bitreich.org 70 i-div.sidebar { Err bitreich.org 70 i- float: right; Err bitreich.org 70 i- background-color: #eeeeee; Err bitreich.org 70 i- border: 2pt solid black; Err bitreich.org 70 i- margin: 0em 2pt 1em 2em; Err bitreich.org 70 i- min-width: 15%; Err bitreich.org 70 i- padding: 0pt 5pt 5pt 5pt; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-div.sidebar ul { Err bitreich.org 70 i- padding: 0pt 0pt 0pt 1em; Err bitreich.org 70 i- margin: 0 0 1em; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-body { Err bitreich.org 70 i- color: #000000; Err bitreich.org 70 i- background-color: #ffffff; Err bitreich.org 70 i- margin-right: 0pt; Err bitreich.org 70 i- margin-bottom: 10%; Err bitreich.org 70 i- padding-left: 30px; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-h1,h2 { Err bitreich.org 70 i- margin-left: -30px; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-h3 { Err bitreich.org 70 i- margin-top: 2em; Err bitreich.org 70 i- margin-left: -20px; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-th { Err bitreich.org 70 i- background-color: darkred; Err bitreich.org 70 i- color: white; Err bitreich.org 70 i- text-align: left; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-pre { Err bitreich.org 70 i- background-color: #eeeeee; Err bitreich.org 70 i- border: solid 1px #d0d0d0; Err bitreich.org 70 i- padding: 1em; Err bitreich.org 70 i- margin-right: 10%; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.def { Err bitreich.org 70 i- background-color: #eeeeee; Err bitreich.org 70 i- width: 90%; Err bitreich.org 70 i- font-weight: bold; Err bitreich.org 70 i- border: solid 1px #d0d0d0; Err bitreich.org 70 i- padding: 3px; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.nomargin { Err bitreich.org 70 i- margin-bottom: 0; Err bitreich.org 70 i- margin-top: 0; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.working { Err bitreich.org 70 i- background-color: #60c060; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.broken { Err bitreich.org 70 i- background-color: #ff6060; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.incomplete { Err bitreich.org 70 i- background-color: #ffff60; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.unknown { Err bitreich.org 70 i- background-color: #cccccc; Err bitreich.org 70 i-} Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/index.html b/3rdparties/software/cl+ssl-20190202-git/index.html /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/index.html.gph bitreich.org 70 i@@ -1,464 +0,0 @@ Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- CL+SSL Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-

CL+SSL

Err bitreich.org 70 i- Err bitreich.org 70 i-

Err bitreich.org 70 i- A Common Lisp interface to OpenSSL. Err bitreich.org 70 i-

Err bitreich.org 70 i- Err bitreich.org 70 i-

About

Err bitreich.org 70 i- Err bitreich.org 70 i-

Err bitreich.org 70 i- This library is a fork Err bitreich.org 70 i- of SSL-CMUCL. The Err bitreich.org 70 i- original SSL-CMUCL source code was written by Eric Marsden and Err bitreich.org 70 i- includes contributions by Jochen Schmidt. Development into CL+SSL Err bitreich.org 70 i- was done by David Lichteblau. License: MIT-style. Err bitreich.org 70 i-

Err bitreich.org 70 i- Err bitreich.org 70 i-

Err bitreich.org 70 i- Distinguishing features: CL+SSL is portable code based on CFFI and Err bitreich.org 70 i- gray streams. It defines its own libssl BIO method, so that SSL Err bitreich.org 70 i- I/O can be written over portable Lisp streams instead of bypassing Err bitreich.org 70 i- the streams and sending data over Unix file descriptors directly. Err bitreich.org 70 i- (But the traditional approach is still used if possible.) Err bitreich.org 70 i-

Err bitreich.org 70 i- Err bitreich.org 70 i-

Download

Err bitreich.org 70 i-

Err bitreich.org 70 i- The library is available via Quicklisp. Err bitreich.org 70 i-

Err bitreich.org 70 i- Err bitreich.org 70 i-

Err bitreich.org 70 i- The Git repository: https://github.com/cl-plus-ssl/cl-plus-ssl. Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i- Send bug reports to cl-plus-ssl-devel@common-lisp.net Err bitreich.org 70 i- (list Err bitreich.org 70 i- information). Err bitreich.org 70 i-

Err bitreich.org 70 i- Err bitreich.org 70 i-

Err bitreich.org 70 i- Note that you need the libssl-dev package on Debian to Err bitreich.org 70 i- load this package without manual configuration. Err bitreich.org 70 i-

Err bitreich.org 70 i- Err bitreich.org 70 i-

Err bitreich.org 70 i- OpenSSL binaries for Windows may be found at Err bitreich.org 70 i- http://www.slproweb.com/products/Win32OpenSSL.html Err bitreich.org 70 i- (slproweb.com is a 3rd party; if you have questions about the OpenSSL installer they provide, Err bitreich.org 70 i- please ask in the mailing list specified on the linked page). Err bitreich.org 70 i-

Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-

API

Err bitreich.org 70 i-

Err bitreich.org 70 i-

Function CL+SSL:ENSURE-INITIALIZED (&key (method 'ssl-v23-method) (rand-seed nil))
Err bitreich.org 70 i- In most cases you do not need to call this function, because it is called Err bitreich.org 70 i- automatically. The only reason to call it explicitly is to supply the rand-seed parameter. Err bitreich.org 70 i- In this case do it before calling any other functions. Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i- Keyword arguments: Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i- method. Just leave its default value. Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i- rand-seed is an octet sequence to initialize OpenSSL random number generator. Err bitreich.org 70 i- On many platforms, including Linux and Windows, it may be leaved NIL (default), Err bitreich.org 70 i- because OpenSSL initializes the random number generator from OS specific service. But for Err bitreich.org 70 i- example on Solaris it may be necessary to supply this value. The minimum length required Err bitreich.org 70 i- by OpenSSL is 128 bits. See here Err bitreich.org 70 i- http://www.openssl.org/support/faq.html#USER1 for the details. Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i- Hint: do not use Common Lisp RANDOM function to generate the rand-seed, because the function Err bitreich.org 70 i- usually returns predictable values. Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i-

Function CL+SSL:MAKE-CONTEXT (&key (method (ssl-v23-method))	Err	bitreich.org	70
i-                                                                               (disabled-protocols)	Err	bitreich.org	70
i-                                                                               (options (list +SSL-OP-ALL+))	Err	bitreich.org	70
i-                                                                               (session-cache-mode +ssl-sess-cache-server+)	Err	bitreich.org	70
i-                                                                               (verify-location :default)	Err	bitreich.org	70
i-                                                                               (verify-depth 100)	Err	bitreich.org	70
i-                                                                               (verify-mode +ssl-verify-peer+)	Err	bitreich.org	70
i-                                                                               (verify-callback nil verify-callback-supplied-p)	Err	bitreich.org	70
i-                                                                               (cipher-list +default-cipher-list+)	Err	bitreich.org	70
i-                                                                               (pem-password-callback 'pem-password-callback))
Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i- Creates a new SSL_CTX using SSL_CTX_new Err bitreich.org 70 i- and initializes it according to the specified parameters. Err bitreich.org 70 i- After you're done using the context, don't forget to free it using ssl-ctx-free. Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i- Exceptions: Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i- ssl-error-initialize. When underlying SSL_CTX_new fails. Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i- Keyword arguments: Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i- method. Specifies which supported SSL/TLS to use. Defaults to ssl-v23-method Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i- disabled-protocols. List of +SSL-OP-NO-* constants. Denotes disabled SSL/TLS versions. Err bitreich.org 70 i- When method not specified defaults to (list +SSL-OP-NO-SSLv2+ +SSL-OP-NO-SSLv3+) Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i- options. SSL context options list. Defaults to (list +SSL-OP-ALL+) Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i- session-cache-mode. Enable/Disable session caching. Defaults to +SSL-SESS-CACHE-SERVER+ Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i- verify-location. Location(s) to load CA from. Err bitreich.org 70 i- Possible values Err bitreich.org 70 i-
Err bitreich.org 70 i-

    Err bitreich.org 70 i-
  • :default OpenSSL default directory and file will be loaded
  • Err bitreich.org 70 i-
  • :default-file OpenSSL default file will be loaded
  • Err bitreich.org 70 i-
  • :default-dir OpenSSL default directory will be loaded
  • Err bitreich.org 70 i-
  • STRING Directory or file path to be loaded
  • Err bitreich.org 70 i-
  • PATHNAME Directory or file path to be loaded
  • Err bitreich.org 70 i-
  • (LIST (or STRING PATHNAME)) List of directories or files to be loaded
  • Err bitreich.org 70 i-
Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i- verify-depth. Sets the maximum depth for the certificate chain verification that shall be allowed for context. Err bitreich.org 70 i- Defaults to 100. Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i- verify-mode. Sets the verification flags for context to be mode. Available flags Err bitreich.org 70 i-

    Err bitreich.org 70 i-
  • +SSL-VERIFY-NONE+
  • Err bitreich.org 70 i-
  • +SSL-VERIFY-PEER+
  • Err bitreich.org 70 i-
  • +SSL-VERIFY-FAIL-IF-NO-PEER-CERT+
  • Err bitreich.org 70 i-
  • +SSL-VERIFY-CLIENT-ONCE+
  • Err bitreich.org 70 i-
Err bitreich.org 70 i- Defaults to +VERIFY-PEER+ Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i- verify-callback. The verify-callback is used to control the behaviour when the +SSL-VERIFY-PEER+ flag is set. Err bitreich.org 70 i-
Err bitreich.org 70 i- Please note: this must be CFFI callback i.e. defined as (defcallback :int ((ok :int) (ctx :pointer)) .. ). Err bitreich.org 70 i-
Err bitreich.org 70 i- Defaults to verify-peer-callback which converts chain errors to ssl-error-verify. Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i- cipher-list. Sets the list of available ciphers for context. Err bitreich.org 70 i- Possible values described here. Err bitreich.org 70 i-
Err bitreich.org 70 i- Default is expected to change overtime to provide highest security level. Do not rely on its exact value. Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i- pem-password-callback. Sets the default password callback called when loading/storing a PEM certificate with encryption. Err bitreich.org 70 i-
Err bitreich.org 70 i- Please note: this must be CFFI callback i.e. defined as (cffi:defcallback :int Err bitreich.org 70 i- ((buf :pointer) (size :int) (rwflag :int) (unused :pointer)) .. ). Err bitreich.org 70 i-
Err bitreich.org 70 i- Defaults to pem-password-callback which simply uses password provided by with-pem-password. Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i-

Function CL+SSL:SSL-CTX-FREE (context)
Err bitreich.org 70 i- Plain FFI binding for SSL_CTX_free. Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i-

Macro CL+SSL:WITH-GLOBAL-CONTEXT ((context &key :auto-free-p) &body body)
Err bitreich.org 70 i- Executes body with *ssl-global-context* bound to context. Err bitreich.org 70 i-
Err bitreich.org 70 i- If auto-free-p is true the context is freed using ssl-ctx-free before exit. Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i-

Function CL+SSL:MAKE-SSL-CLIENT-STREAM (fd-or-stream &key external-format certificate key password close-callback (unwrap-stream-p t) hostname)

Err bitreich.org 70 i- Function CL+SSL:MAKE-SSL-SERVER-STREAM (fd-or-stream &key external-format certificate key password close-callback (unwrap-stream-p t))
Err bitreich.org 70 i- Return an SSL stream for the client (server) Err bitreich.org 70 i- socket fd-or-stream. All reads and writes to this Err bitreich.org 70 i- stream will be pushed through the OpenSSL library. Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i- Keyword arguments: Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i- If fd-or-stream is a lisp stream, the SSL stream will Err bitreich.org 70 i- close it automatically. File descriptors are not closed Err bitreich.org 70 i- automatically. However, if close-callback is non-nil, it Err bitreich.org 70 i- will be called with zero arguments when the SSL stream is closed. Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i- If unwrap-stream-p is true (the default), a stream for a Err bitreich.org 70 i- file descriptor will be replaced by that file descriptor Err bitreich.org 70 i- automatically. This is similar to passing the result Err bitreich.org 70 i- of stream-fd as an argument, except that a deadline Err bitreich.org 70 i- associated with the stream object will be taken into account, and Err bitreich.org 70 i- that the stream will be closed automatically. As with file Err bitreich.org 70 i- descriptor arguments, no I/O will actually be done on the stream Err bitreich.org 70 i- object. Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i- certificate is the path to a file containing the PEM-encoded Err bitreich.org 70 i- certificate. Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i- key is the path to the PEM-encoded key, which may be associated Err bitreich.org 70 i- with the passphrase password. Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i- If external-format is nil (the default), a plain Err bitreich.org 70 i- (unsigned-byte 8) SSL stream is returned. With a Err bitreich.org 70 i- non-null external-format, a flexi-stream capable of Err bitreich.org 70 i- character I/O will be returned instead, with the specified value Err bitreich.org 70 i- as its initial external format. Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i- verify can be specified either as NIL if no check should be performed, Err bitreich.org 70 i- :optional to verify the server's certificate if it presented one or Err bitreich.org 70 i- :required to verify the server's certificate Err bitreich.org 70 i- and fail if an invalid or no certificate was presented. Err bitreich.org 70 i- Defaults to *make-ssl-client-stream-verify-default* Err bitreich.org 70 i- which is initialized to :required Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i- hostname if specified, will be sent by client during TLS negotiation, Err bitreich.org 70 i- according to the Server Name Indication (SNI) extension to the TLS. Err bitreich.org 70 i- When server handles several domain names, this extension enables the server Err bitreich.org 70 i- to choose certificate for right domain. Also the hostname> is used for Err bitreich.org 70 i- hostname verification if verification is enabled by verify. Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i-

Variable *make-ssl-client-stream-verify-default* :required
Err bitreich.org 70 i- Helps to mitigate the change in default behaviour of Err bitreich.org 70 i- make-ssl-client-stream - previously it worked as if :verify nil Err bitreich.org 70 i- but then :verify :required became the default on non-Windows platforms. Err bitreich.org 70 i- Change this variable if you want the previous behaviour. Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i-

Function CL+SSL:USE-CERTIFICATE-CHAIN-FILE (certificate-chain-file)
Err bitreich.org 70 i- Loads a PEM encoded certificate chain file certificate-chain-file Err bitreich.org 70 i- and adds the chain to global context. The certificates must be sorted Err bitreich.org 70 i- starting with the subject's certificate (actual client or server certificate), Err bitreich.org 70 i- followed by intermediate CA certificates if applicable, and ending at Err bitreich.org 70 i- the highest level (root) CA. Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i- Note: the RELOAD function clears the global Err bitreich.org 70 i- context and in particular the loaded certificate chain. Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i-

Function CL+SSL:RELOAD ()
Err bitreich.org 70 i- Reload libssl. Call this function after restarting a Lisp Err bitreich.org 70 i- core with CL+SSL dumped into it on Lisp implementations that do Err bitreich.org 70 i- not reload shared libraries automatically. Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i- Allows user to load libssl (and libeay32 on Windows) himself Err bitreich.org 70 i- thus choosing the foreigh library(-ies) path and version to load. Err bitreich.org 70 i- Err bitreich.org 70 i-

If specified, neither loading of the cl+ssl ASDF system Err bitreich.org 70 i- nor (cl+ssl:reload) try to load the foreign libraries, Err bitreich.org 70 i- assuming user has loaded them already.

Err bitreich.org 70 i- Err bitreich.org 70 i-
	Err	bitreich.org	70
i-        (cffi:load-foreign-library "libssl.so.1.0.0")	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        (let ((*features* (cons :cl+ssl-foreign-libs-already-loaded	Err	bitreich.org	70
i-                                *features*)))	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-          (ql:quickload :a-system-which-depends-on-cl+ssl)	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-          ;; or just load cl+ssl	Err	bitreich.org	70
i-          (ql:quickload :cl+ssl))	Err	bitreich.org	70
i-      
Err bitreich.org 70 i- Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i-

Function CL+SSL:STREAM-FD (stream)
Err bitreich.org 70 i- Return stream's file descriptor as an integer, if known. Err bitreich.org 70 i- Otherwise return stream itself. The result of this Err bitreich.org 70 i- function can be passed to make-ssl-client-stream Err bitreich.org 70 i- and make-ssl-server-stream. Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i-

Function CL+SSL:RANDOM-BYTES (count)
Err bitreich.org 70 i- Generates count cryptographically strong pseudo-random bytes. Returns Err bitreich.org 70 i- the bytes as a simple-array with element-type '(unsigned-byte 8). Err bitreich.org 70 i- Signals an error in case of problems, for example when the OpenSSL Err bitreich.org 70 i- random number generator has not been seeded with enough randomness to ensure Err bitreich.org 70 i- an unpredictable byte sequence. Err bitreich.org 70 i-

Err bitreich.org 70 i- Err bitreich.org 70 i-

Portability

Err bitreich.org 70 i-

Err bitreich.org 70 i- CL+SSL requires CFFI with callback support. Err bitreich.org 70 i-

Err bitreich.org 70 i-

Err bitreich.org 70 i- CL Test Grid results: https://common-lisp.net/project/cl-test-grid/library/cl+ssl.html Err bitreich.org 70 i-

Err bitreich.org 70 i-

TODO

Err bitreich.org 70 i-
    Err bitreich.org 70 i-
  • session caching
  • Err bitreich.org 70 i-
  • The FFI code for all platforms except clisp needs to be Err bitreich.org 70 i- rewritten. (update 2017-07-05: does it? why?)
  • Err bitreich.org 70 i-
Err bitreich.org 70 i-

News

Err bitreich.org 70 i-

Err bitreich.org 70 i- 2017-07-03 Err bitreich.org 70 i-

Err bitreich.org 70 i-
    Err bitreich.org 70 i-
  • Err bitreich.org 70 i- Hostname verification added, thanks to Ilya Khaprov. Err bitreich.org 70 i- Default mode for make-ssl-client-stream is to verify the connection. Err bitreich.org 70 i- New keywrd argument verify is added to make-ssl-client-stream with the same possible values as Drakma uses for http request verification. Err bitreich.org 70 i-
  • Err bitreich.org 70 i-
Err bitreich.org 70 i-

Err bitreich.org 70 i- 201?-??-?? Err bitreich.org 70 i-

Err bitreich.org 70 i-
    Err bitreich.org 70 i-
  • Err bitreich.org 70 i- See commits. Err bitreich.org 70 i-
  • Err bitreich.org 70 i-
Err bitreich.org 70 i-

Err bitreich.org 70 i- 2011-05-22 Err bitreich.org 70 i-

Err bitreich.org 70 i-
    Err bitreich.org 70 i-
  • Err bitreich.org 70 i- Added new public function RANDOM-BYTES. Err bitreich.org 70 i-
  • Err bitreich.org 70 i-
Err bitreich.org 70 i-

Err bitreich.org 70 i- 2011-05-22 Err bitreich.org 70 i-

Err bitreich.org 70 i-
    Err bitreich.org 70 i-
  • Err bitreich.org 70 i- The source code repository is moved to Git. Err bitreich.org 70 i-
  • Err bitreich.org 70 i-
Err bitreich.org 70 i-

Err bitreich.org 70 i- 2011-03-25 Err bitreich.org 70 i-

Err bitreich.org 70 i-
    Err bitreich.org 70 i-
  • Err bitreich.org 70 i- OpenSSL libraries names for OpenBSD, thanks to Thomas de Grivel. Err bitreich.org 70 i-
  • Err bitreich.org 70 i-
Err bitreich.org 70 i-

Err bitreich.org 70 i- 2010-05-26 Err bitreich.org 70 i-

Err bitreich.org 70 i-
    Err bitreich.org 70 i-
  • Err bitreich.org 70 i- Fixed two bugs in LISTEN, thanks to Ron Garret. Err bitreich.org 70 i-
  • Err bitreich.org 70 i-
Err bitreich.org 70 i-

Err bitreich.org 70 i- 2009-09-17 Err bitreich.org 70 i-

Err bitreich.org 70 i-
    Err bitreich.org 70 i-
  • Err bitreich.org 70 i- libssl loading on FreeBSD 7.2 fixed, thanks to Stian Sletner. Err bitreich.org 70 i-
  • Err bitreich.org 70 i-
Err bitreich.org 70 i-

Err bitreich.org 70 i- 2008-xx-yy Err bitreich.org 70 i-

Err bitreich.org 70 i-
    Err bitreich.org 70 i-
  • Err bitreich.org 70 i- Support for I/O deadlines (Clozure CL and SBCL). Err bitreich.org 70 i-
  • Err bitreich.org 70 i-
  • Err bitreich.org 70 i- Support for encrypted keys, thanks to Vsevolod Dyomkin. Err bitreich.org 70 i-
  • Err bitreich.org 70 i-
  • Err bitreich.org 70 i- Chained certificates support, thanks to Juhani Rnkimies. Err bitreich.org 70 i-
  • Err bitreich.org 70 i-
  • Err bitreich.org 70 i- More secure initialization of OpenSSL random number generator. Err bitreich.org 70 i-
  • Err bitreich.org 70 i-
  • Err bitreich.org 70 i- Minor CLISP-specific fixes. Err bitreich.org 70 i-
  • Err bitreich.org 70 i-
Err bitreich.org 70 i-

Err bitreich.org 70 i- 2007-xx-yy Err bitreich.org 70 i-

Err bitreich.org 70 i-
    Err bitreich.org 70 i-
  • Err bitreich.org 70 i- Fixed windows support, thanks to Matthew Kennedy and Anton Vodonosov. Err bitreich.org 70 i-
  • Err bitreich.org 70 i-
Err bitreich.org 70 i-

Err bitreich.org 70 i- 2007-07-07 Err bitreich.org 70 i-

Err bitreich.org 70 i-
    Err bitreich.org 70 i-
  • Err bitreich.org 70 i- Improved CLISP support, thanks Err bitreich.org 70 i- to Pixel Err bitreich.org 70 i- // pinterface, as well as client certificate support. Err bitreich.org 70 i-
  • Err bitreich.org 70 i-
  • Err bitreich.org 70 i- Re-introduced support for direct access to file descriptors as Err bitreich.org 70 i- an optimization. New function stream-fd. New keyword Err bitreich.org 70 i- argument close-callback. Err bitreich.org 70 i-
  • Err bitreich.org 70 i-
Err bitreich.org 70 i-

Err bitreich.org 70 i- 2007-01-16: CL+SSL is now available under an MIT-style license. Err bitreich.org 70 i-

Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/src/bio.lisp b/3rdparties/software/cl+ssl-20190202-git/src/bio.lisp /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/src/bio.lisp.gph bitreich.org 70 i@@ -1,140 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: LISP; Syntax: COMMON-LISP; indent-tabs-mode: nil; coding: utf-8; show-trailing-whitespace: t -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2005 David Lichteblau Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; See LICENSE for details. Err bitreich.org 70 i- Err bitreich.org 70 i-#+xcvb (module (:depends-on ("package"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package cl+ssl) Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +bio-type-socket+ (logior 5 #x0400 #x0100)) Err bitreich.org 70 i-(defconstant +BIO_FLAGS_READ+ 1) Err bitreich.org 70 i-(defconstant +BIO_FLAGS_WRITE+ 2) Err bitreich.org 70 i-(defconstant +BIO_FLAGS_SHOULD_RETRY+ 8) Err bitreich.org 70 i-(defconstant +BIO_CTRL_FLUSH+ 11) Err bitreich.org 70 i- Err bitreich.org 70 i-(cffi:defcstruct bio-method Err bitreich.org 70 i- (type :int) Err bitreich.org 70 i- (name :pointer) Err bitreich.org 70 i- (bwrite :pointer) Err bitreich.org 70 i- (bread :pointer) Err bitreich.org 70 i- (bputs :pointer) Err bitreich.org 70 i- (bgets :pointer) Err bitreich.org 70 i- (ctrl :pointer) Err bitreich.org 70 i- (create :pointer) Err bitreich.org 70 i- (destroy :pointer) Err bitreich.org 70 i- (callback-ctrl :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(cffi:defcstruct bio Err bitreich.org 70 i- (method :pointer) Err bitreich.org 70 i- (callback :pointer) Err bitreich.org 70 i- (cb-arg :pointer) Err bitreich.org 70 i- (init :int) Err bitreich.org 70 i- (shutdown :int) Err bitreich.org 70 i- (flags :int) Err bitreich.org 70 i- (retry-reason :int) Err bitreich.org 70 i- (num :int) Err bitreich.org 70 i- (ptr :pointer) Err bitreich.org 70 i- (next-bio :pointer) Err bitreich.org 70 i- (prev-bio :pointer) Err bitreich.org 70 i- (references :int) Err bitreich.org 70 i- (num-read :unsigned-long) Err bitreich.org 70 i- (num-write :unsigned-long) Err bitreich.org 70 i- (crypto-ex-data-stack :pointer) Err bitreich.org 70 i- (crypto-ex-data-dummy :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-bio-lisp-method () Err bitreich.org 70 i- (let ((m (cffi:foreign-alloc '(:struct bio-method)))) Err bitreich.org 70 i- (setf (cffi:foreign-slot-value m '(:struct bio-method) 'type) Err bitreich.org 70 i- ;; fixme: this is wrong, but presumably still better than some Err bitreich.org 70 i- ;; random value here. Err bitreich.org 70 i- +bio-type-socket+) Err bitreich.org 70 i- (macrolet ((slot (name) Err bitreich.org 70 i- `(cffi:foreign-slot-value m '(:struct bio-method) ,name))) Err bitreich.org 70 i- (setf (slot 'name) (cffi:foreign-string-alloc "lisp")) Err bitreich.org 70 i- (setf (slot 'bwrite) (cffi:callback lisp-write)) Err bitreich.org 70 i- (setf (slot 'bread) (cffi:callback lisp-read)) Err bitreich.org 70 i- (setf (slot 'bputs) (cffi:callback lisp-puts)) Err bitreich.org 70 i- (setf (slot 'bgets) (cffi:null-pointer)) Err bitreich.org 70 i- (setf (slot 'ctrl) (cffi:callback lisp-ctrl)) Err bitreich.org 70 i- (setf (slot 'create) (cffi:callback lisp-create)) Err bitreich.org 70 i- (setf (slot 'destroy) (cffi:callback lisp-destroy)) Err bitreich.org 70 i- (setf (slot 'callback-ctrl) (cffi:null-pointer))) Err bitreich.org 70 i- m)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun bio-new-lisp () Err bitreich.org 70 i- (bio-new *bio-lisp-method*)) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; "cargo cult" Err bitreich.org 70 i- Err bitreich.org 70 i-(cffi:defcallback lisp-write :int ((bio :pointer) (buf :pointer) (n :int)) Err bitreich.org 70 i- bio Err bitreich.org 70 i- (dotimes (i n) Err bitreich.org 70 i- (write-byte (cffi:mem-ref buf :unsigned-char i) *socket*)) Err bitreich.org 70 i- (finish-output *socket*) Err bitreich.org 70 i- n) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun clear-retry-flags (bio) Err bitreich.org 70 i- (setf (cffi:foreign-slot-value bio '(:struct bio) 'flags) Err bitreich.org 70 i- (logandc2 (cffi:foreign-slot-value bio '(:struct bio) 'flags) Err bitreich.org 70 i- (logior +BIO_FLAGS_READ+ Err bitreich.org 70 i- +BIO_FLAGS_WRITE+ Err bitreich.org 70 i- +BIO_FLAGS_SHOULD_RETRY+)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun set-retry-read (bio) Err bitreich.org 70 i- (setf (cffi:foreign-slot-value bio '(:struct bio) 'flags) Err bitreich.org 70 i- (logior (cffi:foreign-slot-value bio '(:struct bio) 'flags) Err bitreich.org 70 i- +BIO_FLAGS_READ+ Err bitreich.org 70 i- +BIO_FLAGS_SHOULD_RETRY+))) Err bitreich.org 70 i- Err bitreich.org 70 i-(cffi:defcallback lisp-read :int ((bio :pointer) (buf :pointer) (n :int)) Err bitreich.org 70 i- bio buf n Err bitreich.org 70 i- (let ((i 0)) Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (unless (or (cffi:null-pointer-p buf) (null n)) Err bitreich.org 70 i- (clear-retry-flags bio) Err bitreich.org 70 i- (when (or *blockp* (listen *socket*)) Err bitreich.org 70 i- (setf (cffi:mem-ref buf :unsigned-char i) (read-byte *socket*)) Err bitreich.org 70 i- (incf i)) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- while (and (< i n) Err bitreich.org 70 i- (or (null *partial-read-p*) (listen *socket*))) Err bitreich.org 70 i- do Err bitreich.org 70 i- (setf (cffi:mem-ref buf :unsigned-char i) (read-byte *socket*)) Err bitreich.org 70 i- (incf i)) Err bitreich.org 70 i- #+(or) Err bitreich.org 70 i- (when (zerop i) (set-retry-read bio))) Err bitreich.org 70 i- (end-of-file ())) Err bitreich.org 70 i- i)) Err bitreich.org 70 i- Err bitreich.org 70 i-(cffi:defcallback lisp-puts :int ((bio :pointer) (buf :string)) Err bitreich.org 70 i- bio buf Err bitreich.org 70 i- (error "lisp-puts not implemented")) Err bitreich.org 70 i- Err bitreich.org 70 i-(cffi:defcallback lisp-ctrl :int Err bitreich.org 70 i- ((bio :pointer) (cmd :int) (larg :long) (parg :pointer)) Err bitreich.org 70 i- bio larg parg Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((eql cmd +BIO_CTRL_FLUSH+) 1) Err bitreich.org 70 i- (t Err bitreich.org 70 i- ;; (warn "lisp-ctrl(~A,~A,~A)" cmd larg parg) Err bitreich.org 70 i- 0))) Err bitreich.org 70 i- Err bitreich.org 70 i-(cffi:defcallback lisp-create :int ((bio :pointer)) Err bitreich.org 70 i- (setf (cffi:foreign-slot-value bio '(:struct bio) 'init) 1) Err bitreich.org 70 i- (setf (cffi:foreign-slot-value bio '(:struct bio) 'num) 0) Err bitreich.org 70 i- (setf (cffi:foreign-slot-value bio '(:struct bio) 'ptr) (cffi:null-pointer)) Err bitreich.org 70 i- (setf (cffi:foreign-slot-value bio '(:struct bio) 'flags) 0) Err bitreich.org 70 i- 1) Err bitreich.org 70 i- Err bitreich.org 70 i-(cffi:defcallback lisp-destroy :int ((bio :pointer)) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((cffi:null-pointer-p bio) 0) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (setf (cffi:foreign-slot-value bio '(:struct bio) 'init) 0) Err bitreich.org 70 i- (setf (cffi:foreign-slot-value bio '(:struct bio) 'flags) 0) Err bitreich.org 70 i- 1))) Err bitreich.org 70 i- Err bitreich.org 70 i-(setf *bio-lisp-method* nil) ;force reinit if anything changed here Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/src/conditions.lisp b/3rdparties/software/cl+ssl-20190202-git/src/conditions.lisp /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/src/conditions.lisp.gph bitreich.org 70 i@@ -1,321 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: LISP; Syntax: COMMON-LISP; indent-tabs-mode: nil; coding: utf-8; show-trailing-whitespace: t -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2001, 2003 Eric Marsden Err bitreich.org 70 i-;;; Copyright (C) 2005 David Lichteblau Err bitreich.org 70 i-;;; "the conditions and ENSURE-SSL-FUNCALL are by Jochen Schmidt." Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; See LICENSE for details. Err bitreich.org 70 i- Err bitreich.org 70 i-#+xcvb (module (:depends-on ("package"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl+ssl) Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (defconstant +ssl-error-none+ 0) Err bitreich.org 70 i- (defconstant +ssl-error-ssl+ 1) Err bitreich.org 70 i- (defconstant +ssl-error-want-read+ 2) Err bitreich.org 70 i- (defconstant +ssl-error-want-write+ 3) Err bitreich.org 70 i- (defconstant +ssl-error-want-x509-lookup+ 4) Err bitreich.org 70 i- (defconstant +ssl-error-syscall+ 5) Err bitreich.org 70 i- (defconstant +ssl-error-zero-return+ 6) Err bitreich.org 70 i- (defconstant +ssl-error-want-connect+ 7)) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Condition hierarchy Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(defun read-ssl-error-queue () Err bitreich.org 70 i- (loop Err bitreich.org 70 i- :for error-code = (err-get-error) Err bitreich.org 70 i- :until (zerop error-code) Err bitreich.org 70 i- :collect error-code)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun format-ssl-error-queue (stream-designator queue-designator) Err bitreich.org 70 i- "STREAM-DESIGNATOR is the same as CL:FORMAT accepts: T, NIL, or a stream. Err bitreich.org 70 i-QUEUE-DESIGNATOR is either a list of error codes (as returned Err bitreich.org 70 i-by READ-SSL-ERROR-QUEUE) or an SSL-ERROR condition." Err bitreich.org 70 i- (flet ((body (stream) Err bitreich.org 70 i- (let ((queue (etypecase queue-designator Err bitreich.org 70 i- (ssl-error (ssl-error-queue queue-designator)) Err bitreich.org 70 i- (list queue-designator)))) Err bitreich.org 70 i- (format stream "SSL error queue") Err bitreich.org 70 i- (if queue Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (format stream ":~%") Err bitreich.org 70 i- (loop Err bitreich.org 70 i- :for error-code :in queue Err bitreich.org 70 i- :do (format stream "~a~%" (err-error-string error-code (cffi:null-pointer))))) Err bitreich.org 70 i- (format stream " is empty."))))) Err bitreich.org 70 i- (case stream-designator Err bitreich.org 70 i- ((t) (body *standard-output*)) Err bitreich.org 70 i- ((nil) (let ((s (make-string-output-stream :element-type 'character))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (body s) Err bitreich.org 70 i- (close s)) Err bitreich.org 70 i- (get-output-stream-string s))) Err bitreich.org 70 i- (otherwise (body stream-designator))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition cl+ssl-error (error) Err bitreich.org 70 i- ()) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition ssl-error (cl+ssl-error) Err bitreich.org 70 i- ( Err bitreich.org 70 i- ;; Stores list of error codes Err bitreich.org 70 i- ;; (as returned by the READ-SSL-ERROR-QUEUE function) Err bitreich.org 70 i- (queue :initform nil :initarg :queue :reader ssl-error-queue))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition ssl-error/handle (ssl-error) Err bitreich.org 70 i- ((ret :initarg :ret Err bitreich.org 70 i- :reader ssl-error-ret) Err bitreich.org 70 i- (handle :initarg :handle Err bitreich.org 70 i- :reader ssl-error-handle)) Err bitreich.org 70 i- (:report (lambda (condition stream) Err bitreich.org 70 i- (format stream "Unspecified error ~A on handle ~A~%" Err bitreich.org 70 i- (ssl-error-ret condition) Err bitreich.org 70 i- (ssl-error-handle condition)) Err bitreich.org 70 i- (format-ssl-error-queue stream condition)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition ssl-error-initialize (ssl-error) Err bitreich.org 70 i- ((reason :initarg :reason Err bitreich.org 70 i- :reader ssl-error-reason)) Err bitreich.org 70 i- (:report (lambda (condition stream) Err bitreich.org 70 i- (format stream "SSL initialization error: ~A~%" Err bitreich.org 70 i- (ssl-error-reason condition)) Err bitreich.org 70 i- (format-ssl-error-queue stream condition)))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition ssl-error-want-something (ssl-error/handle) Err bitreich.org 70 i- ()) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;SSL_ERROR_NONE Err bitreich.org 70 i-(define-condition ssl-error-none (ssl-error/handle) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "The TLS/SSL I/O operation completed. This result code is returned if and Err bitreich.org 70 i- only if ret > 0.") Err bitreich.org 70 i- (:report (lambda (condition stream) Err bitreich.org 70 i- (format stream "The TLS/SSL operation on handle ~A completed (return code: ~A).~%" Err bitreich.org 70 i- (ssl-error-handle condition) Err bitreich.org 70 i- (ssl-error-ret condition)) Err bitreich.org 70 i- (format-ssl-error-queue stream condition)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; SSL_ERROR_ZERO_RETURN Err bitreich.org 70 i-(define-condition ssl-error-zero-return (ssl-error/handle) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "The TLS/SSL connection has been closed. If the protocol version is SSL 3.0 Err bitreich.org 70 i- or TLS 1.0, this result code is returned only if a closure alert has Err bitreich.org 70 i- occurred in the protocol, i.e. if the connection has been closed cleanly. Err bitreich.org 70 i- Note that in this case SSL_ERROR_ZERO_RETURN Err bitreich.org 70 i- does not necessarily indicate that the underlying transport has been Err bitreich.org 70 i- closed.") Err bitreich.org 70 i- (:report (lambda (condition stream) Err bitreich.org 70 i- (format stream "The TLS/SSL connection on handle ~A has been closed (return code: ~A).~%" Err bitreich.org 70 i- (ssl-error-handle condition) Err bitreich.org 70 i- (ssl-error-ret condition)) Err bitreich.org 70 i- (format-ssl-error-queue stream condition)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; SSL_ERROR_WANT_READ Err bitreich.org 70 i-(define-condition ssl-error-want-read (ssl-error-want-something) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "The operation did not complete; the same TLS/SSL I/O function should be Err bitreich.org 70 i- called again later. If, by then, the underlying BIO has data available for Err bitreich.org 70 i- reading (if the result code is SSL_ERROR_WANT_READ) or allows writing data Err bitreich.org 70 i- (SSL_ERROR_WANT_WRITE), then some TLS/SSL protocol progress will take place, Err bitreich.org 70 i- i.e. at least part of an TLS/SSL record will be read or written. Note that Err bitreich.org 70 i- the retry may again lead to a SSL_ERROR_WANT_READ or SSL_ERROR_WANT_WRITE Err bitreich.org 70 i- condition. There is no fixed upper limit for the number of iterations that Err bitreich.org 70 i- may be necessary until progress becomes visible at application protocol Err bitreich.org 70 i- level.") Err bitreich.org 70 i- (:report (lambda (condition stream) Err bitreich.org 70 i- (format stream "The TLS/SSL operation on handle ~A did not complete: It wants a READ (return code: ~A).~%" Err bitreich.org 70 i- (ssl-error-handle condition) Err bitreich.org 70 i- (ssl-error-ret condition)) Err bitreich.org 70 i- (format-ssl-error-queue stream condition)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; SSL_ERROR_WANT_WRITE Err bitreich.org 70 i-(define-condition ssl-error-want-write (ssl-error-want-something) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "The operation did not complete; the same TLS/SSL I/O function should be Err bitreich.org 70 i- called again later. If, by then, the underlying BIO has data available for Err bitreich.org 70 i- reading (if the result code is SSL_ERROR_WANT_READ) or allows writing data Err bitreich.org 70 i- (SSL_ERROR_WANT_WRITE), then some TLS/SSL protocol progress will take place, Err bitreich.org 70 i- i.e. at least part of an TLS/SSL record will be read or written. Note that Err bitreich.org 70 i- the retry may again lead to a SSL_ERROR_WANT_READ or SSL_ERROR_WANT_WRITE Err bitreich.org 70 i- condition. There is no fixed upper limit for the number of iterations that Err bitreich.org 70 i- may be necessary until progress becomes visible at application protocol Err bitreich.org 70 i- level.") Err bitreich.org 70 i- (:report (lambda (condition stream) Err bitreich.org 70 i- (format stream "The TLS/SSL operation on handle ~A did not complete: It wants a WRITE (return code: ~A).~%" Err bitreich.org 70 i- (ssl-error-handle condition) Err bitreich.org 70 i- (ssl-error-ret condition)) Err bitreich.org 70 i- (format-ssl-error-queue stream condition)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; SSL_ERROR_WANT_CONNECT Err bitreich.org 70 i-(define-condition ssl-error-want-connect (ssl-error-want-something) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "The operation did not complete; the same TLS/SSL I/O function should be Err bitreich.org 70 i- called again later. The underlying BIO was not connected yet to the peer Err bitreich.org 70 i- and the call would block in connect()/accept(). The SSL Err bitreich.org 70 i- function should be called again when the connection is established. These Err bitreich.org 70 i- messages can only appear with a BIO_s_connect() or Err bitreich.org 70 i- BIO_s_accept() BIO, respectively. In order to find out, when Err bitreich.org 70 i- the connection has been successfully established, on many platforms Err bitreich.org 70 i- select() or poll() for writing on the socket file Err bitreich.org 70 i- descriptor can be used.") Err bitreich.org 70 i- (:report (lambda (condition stream) Err bitreich.org 70 i- (format stream "The TLS/SSL operation on handle ~A did not complete: It wants a connect first (return code: ~A).~%" Err bitreich.org 70 i- (ssl-error-handle condition) Err bitreich.org 70 i- (ssl-error-ret condition)) Err bitreich.org 70 i- (format-ssl-error-queue stream condition)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; SSL_ERROR_WANT_X509_LOOKUP Err bitreich.org 70 i-(define-condition ssl-error-want-x509-lookup (ssl-error-want-something) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "The operation did not complete because an application callback set by Err bitreich.org 70 i- SSL_CTX_set_client_cert_cb() has asked to be called again. The Err bitreich.org 70 i- TLS/SSL I/O function should be called again later. Details depend on the Err bitreich.org 70 i- application.") Err bitreich.org 70 i- (:report (lambda (condition stream) Err bitreich.org 70 i- (format stream "The TLS/SSL operation on handle ~A did not complete: An application callback wants to be called again (return code: ~A).~%" Err bitreich.org 70 i- (ssl-error-handle condition) Err bitreich.org 70 i- (ssl-error-ret condition)) Err bitreich.org 70 i- (format-ssl-error-queue stream condition)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; SSL_ERROR_SYSCALL Err bitreich.org 70 i-(define-condition ssl-error-syscall (ssl-error/handle) Err bitreich.org 70 i- ((syscall :initarg :syscall)) Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "Some I/O error occurred. The OpenSSL error queue may contain more Err bitreich.org 70 i- information on the error. If the error queue is empty (i.e. ERR_get_error() returns 0), Err bitreich.org 70 i- ret can be used to find out more about the error: If ret == 0, an EOF was observed that Err bitreich.org 70 i- violates the protocol. If ret == -1, the underlying BIO reported an I/O error (for socket Err bitreich.org 70 i- I/O on Unix systems, consult errno for details).") Err bitreich.org 70 i- (:report (lambda (condition stream) Err bitreich.org 70 i- (if (zerop (length (ssl-error-queue condition))) Err bitreich.org 70 i- (case (ssl-error-ret condition) Err bitreich.org 70 i- (0 (format stream "An I/O error occurred: An unexpected EOF was observed on handle ~A (return code: ~A).~%" Err bitreich.org 70 i- (ssl-error-handle condition) Err bitreich.org 70 i- (ssl-error-ret condition))) Err bitreich.org 70 i- (-1 (format stream "An I/O error occurred in the underlying BIO (return code: ~A).~%" Err bitreich.org 70 i- (ssl-error-ret condition))) Err bitreich.org 70 i- (otherwise (format stream "An I/O error occurred: undocumented reason (return code: ~A).~%" Err bitreich.org 70 i- (ssl-error-ret condition)))) Err bitreich.org 70 i- (format stream "An UNKNOWN I/O error occurred in the underlying BIO (return code: ~A).~%" Err bitreich.org 70 i- (ssl-error-ret condition))) Err bitreich.org 70 i- (format-ssl-error-queue stream condition)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; SSL_ERROR_SSL Err bitreich.org 70 i-(define-condition ssl-error-ssl (ssl-error/handle) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "A failure in the SSL library occurred, usually a protocol error. The Err bitreich.org 70 i- OpenSSL error queue contains more information on the error.") Err bitreich.org 70 i- (:report (lambda (condition stream) Err bitreich.org 70 i- (format stream Err bitreich.org 70 i- "A failure in the SSL library occurred on handle ~A (return code: ~A).~%" Err bitreich.org 70 i- (ssl-error-handle condition) Err bitreich.org 70 i- (ssl-error-ret condition)) Err bitreich.org 70 i- (format-ssl-error-queue stream condition)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ssl-signal-error (handle syscall error-code original-error) Err bitreich.org 70 i- (let ((queue (read-ssl-error-queue))) Err bitreich.org 70 i- (if (and (eql error-code #.+ssl-error-syscall+) Err bitreich.org 70 i- (not (zerop original-error))) Err bitreich.org 70 i- (error 'ssl-error-syscall Err bitreich.org 70 i- :handle handle Err bitreich.org 70 i- :ret error-code Err bitreich.org 70 i- :queue queue Err bitreich.org 70 i- :syscall syscall) Err bitreich.org 70 i- (error (case error-code Err bitreich.org 70 i- (#.+ssl-error-none+ 'ssl-error-none) Err bitreich.org 70 i- (#.+ssl-error-ssl+ 'ssl-error-ssl) Err bitreich.org 70 i- (#.+ssl-error-want-read+ 'ssl-error-want-read) Err bitreich.org 70 i- (#.+ssl-error-want-write+ 'ssl-error-want-write) Err bitreich.org 70 i- (#.+ssl-error-want-x509-lookup+ 'ssl-error-want-x509-lookup) Err bitreich.org 70 i- (#.+ssl-error-zero-return+ 'ssl-error-zero-return) Err bitreich.org 70 i- (#.+ssl-error-want-connect+ 'ssl-error-want-connect) Err bitreich.org 70 i- (#.+ssl-error-syscall+ 'ssl-error-zero-return) ; this is intentional here. we got an EOF from the syscall (ret is 0) Err bitreich.org 70 i- (t 'ssl-error/handle)) Err bitreich.org 70 i- :handle handle Err bitreich.org 70 i- :ret error-code Err bitreich.org 70 i- :queue queue)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *ssl-verify-error-alist* Err bitreich.org 70 i- '((0 :X509_V_OK) Err bitreich.org 70 i- (2 :X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT) Err bitreich.org 70 i- (3 :X509_V_ERR_UNABLE_TO_GET_CRL) Err bitreich.org 70 i- (4 :X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE) Err bitreich.org 70 i- (5 :X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE) Err bitreich.org 70 i- (6 :X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY) Err bitreich.org 70 i- (7 :X509_V_ERR_CERT_SIGNATURE_FAILURE) Err bitreich.org 70 i- (8 :X509_V_ERR_CRL_SIGNATURE_FAILURE) Err bitreich.org 70 i- (9 :X509_V_ERR_CERT_NOT_YET_VALID) Err bitreich.org 70 i- (10 :X509_V_ERR_CERT_HAS_EXPIRED) Err bitreich.org 70 i- (11 :X509_V_ERR_CRL_NOT_YET_VALID) Err bitreich.org 70 i- (12 :X509_V_ERR_CRL_HAS_EXPIRED) Err bitreich.org 70 i- (13 :X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD) Err bitreich.org 70 i- (14 :X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD) Err bitreich.org 70 i- (15 :X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD) Err bitreich.org 70 i- (16 :X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD) Err bitreich.org 70 i- (17 :X509_V_ERR_OUT_OF_MEM) Err bitreich.org 70 i- (18 :X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT) Err bitreich.org 70 i- (19 :X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN) Err bitreich.org 70 i- (20 :X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY) Err bitreich.org 70 i- (21 :X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE) Err bitreich.org 70 i- (22 :X509_V_ERR_CERT_CHAIN_TOO_LONG) Err bitreich.org 70 i- (23 :X509_V_ERR_CERT_REVOKED) Err bitreich.org 70 i- (24 :X509_V_ERR_INVALID_CA) Err bitreich.org 70 i- (25 :X509_V_ERR_PATH_LENGTH_EXCEEDED) Err bitreich.org 70 i- (26 :X509_V_ERR_INVALID_PURPOSE) Err bitreich.org 70 i- (27 :X509_V_ERR_CERT_UNTRUSTED) Err bitreich.org 70 i- (28 :X509_V_ERR_CERT_REJECTED) Err bitreich.org 70 i- (29 :X509_V_ERR_SUBJECT_ISSUER_MISMATCH) Err bitreich.org 70 i- (30 :X509_V_ERR_AKID_SKID_MISMATCH) Err bitreich.org 70 i- (31 :X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH) Err bitreich.org 70 i- (32 :X509_V_ERR_KEYUSAGE_NO_CERTSIGN) Err bitreich.org 70 i- (50 :X509_V_ERR_APPLICATION_VERIFICATION))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ssl-verify-error-keyword (code) Err bitreich.org 70 i- (cadr (assoc code *ssl-verify-error-alist*))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ssl-verify-error-code (keyword) Err bitreich.org 70 i- (caar (member keyword *ssl-verify-error-alist* :key #'cadr))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition ssl-error-verify (ssl-error) Err bitreich.org 70 i- ((stream :initarg :stream Err bitreich.org 70 i- :reader ssl-error-stream Err bitreich.org 70 i- :documentation "The SSL stream whose peer certificate didn't verify.") Err bitreich.org 70 i- (error-code :initarg :error-code Err bitreich.org 70 i- :reader ssl-error-code Err bitreich.org 70 i- :documentation "The peer certificate verification error code.")) Err bitreich.org 70 i- (:report (lambda (condition stream) Err bitreich.org 70 i- (let ((code (ssl-error-code condition))) Err bitreich.org 70 i- (format stream "SSL verify error: ~d~@[ ~a~]" Err bitreich.org 70 i- code (ssl-verify-error-keyword code))))) Err bitreich.org 70 i- (:documentation "This condition is signalled on SSL connection when a peer certificate doesn't verify.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition ssl-error-call (cl+ssl::ssl-error) Err bitreich.org 70 i- ((message :initarg :message)) Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "A failure in the SSL library occurred..") Err bitreich.org 70 i- (:report (lambda (condition stream) Err bitreich.org 70 i- (format stream "A failure in OpenSSL library occurred~@[: ~A~].~%" (slot-value condition 'message)) (cl+ssl::format-ssl-error-queue stream (cl+ssl::ssl-error-queue condition))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition asn1-error (cl+ssl-error) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Asn1 syntax error")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition invalid-asn1-string (cl+ssl-error) Err bitreich.org 70 i- ((type :initarg :type :initform nil)) Err bitreich.org 70 i- (:documentation "ASN.1 string parsing/validation error") Err bitreich.org 70 i- (:report (lambda (condition stream) Err bitreich.org 70 i- (format stream "ASN.1 syntax error: invalid asn1 string (expected type ~a)" (slot-value condition 'type))))) ;; TODO: when moved to grovel use enum symbol here Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition server-certificate-missing (cl+ssl-error simple-error) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "SSL server didn't present a certificate")) Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/src/context.lisp b/3rdparties/software/cl+ssl-20190202-git/src/context.lisp /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/src/context.lisp.gph bitreich.org 70 i@@ -1,127 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: LISP; Syntax: COMMON-LISP; indent-tabs-mode: nil; coding: utf-8; show-trailing-whitespace: t -*- Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl+ssl) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition verify-location-not-found-error (ssl-error) Err bitreich.org 70 i- ((location :initarg :location)) Err bitreich.org 70 i- (:documentation "Unable to find verify locations") Err bitreich.org 70 i- (:report (lambda (condition stream) Err bitreich.org 70 i- (format stream "Unable to find verify location. Path: ~A" (slot-value condition 'location))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun validate-verify-location (location) Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((uiop:file-exists-p location) Err bitreich.org 70 i- (values location t)) Err bitreich.org 70 i- ((uiop:directory-exists-p location) Err bitreich.org 70 i- (values location nil)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (error 'verify-location-not-found-error :location location))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun add-verify-locations (ctx locations) Err bitreich.org 70 i- (dolist (location locations) Err bitreich.org 70 i- (multiple-value-bind (location isfile) Err bitreich.org 70 i- (validate-verify-location location) Err bitreich.org 70 i- (cffi:with-foreign-strings ((location-ptr location)) Err bitreich.org 70 i- (unless (= 1 (cl+ssl::ssl-ctx-load-verify-locations Err bitreich.org 70 i- ctx Err bitreich.org 70 i- (if isfile location-ptr (cffi:null-pointer)) Err bitreich.org 70 i- (if isfile (cffi:null-pointer) location-ptr))) Err bitreich.org 70 i- (error 'ssl-error :queue (read-ssl-error-queue) :message (format nil "Unable to load verify location ~A" location))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ssl-ctx-set-verify-location (ctx location) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((eq :default location) Err bitreich.org 70 i- (unless (= 1 (ssl-ctx-set-default-verify-paths ctx)) Err bitreich.org 70 i- (error 'ssl-error-call :queue (read-ssl-error-queue) :message (format nil "Unable to load default verify paths")))) Err bitreich.org 70 i- ;; TODO: design how to load ffi-1.1.0.lisp when and only when corresponding OpenSSL version is available Err bitreich.org 70 i- ;; ((eq :default-file location) Err bitreich.org 70 i- ;; (unless (= 1 (openssl-1.1.0:ssl-ctx-set-default-verify-file ctx)) Err bitreich.org 70 i- ;; (error 'ssl-error-call :queue (read-ssl-error-queue) :message (format nil "Unable to load default verify file")))) Err bitreich.org 70 i- ;; ((eq :default-dir location) Err bitreich.org 70 i- ;; (unless (= 1 (openssl-1.1.0:ssl-ctx-set-default-verify-dir ctx)) Err bitreich.org 70 i- ;; (error 'ssl-error-call :queue (read-ssl-error-queue) :message (format nil "Unable to load default verify dir")))) Err bitreich.org 70 i- ((stringp location) Err bitreich.org 70 i- (add-verify-locations ctx (list location))) Err bitreich.org 70 i- ((pathnamep location) Err bitreich.org 70 i- (add-verify-locations ctx (list location))) Err bitreich.org 70 i- ((and location (listp location)) Err bitreich.org 70 i- (add-verify-locations ctx location)) Err bitreich.org 70 i- ;; silently allow NIL as location Err bitreich.org 70 i- (location Err bitreich.org 70 i- (error "Invalid location ~a" location)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(alexandria:define-constant +default-cipher-list+ Err bitreich.org 70 i- (format nil Err bitreich.org 70 i- "ECDHE-RSA-AES256-GCM-SHA384:~ Err bitreich.org 70 i- ECDHE-RSA-AES256-SHA384:~ Err bitreich.org 70 i- ECDHE-RSA-AES256-SHA:~ Err bitreich.org 70 i- ECDHE-RSA-AES128-GCM-SHA256:~ Err bitreich.org 70 i- ECDHE-RSA-AES128-SHA256:~ Err bitreich.org 70 i- ECDHE-RSA-AES128-SHA:~ Err bitreich.org 70 i- ECDHE-RSA-RC4-SHA:~ Err bitreich.org 70 i- DHE-RSA-AES256-GCM-SHA384:~ Err bitreich.org 70 i- DHE-RSA-AES256-SHA256:~ Err bitreich.org 70 i- DHE-RSA-AES256-SHA:~ Err bitreich.org 70 i- DHE-RSA-AES128-GCM-SHA256:~ Err bitreich.org 70 i- DHE-RSA-AES128-SHA256:~ Err bitreich.org 70 i- DHE-RSA-AES128-SHA:~ Err bitreich.org 70 i- AES256-GCM-SHA384:~ Err bitreich.org 70 i- AES256-SHA256:~ Err bitreich.org 70 i- AES256-SHA:~ Err bitreich.org 70 i- AES128-GCM-SHA256:~ Err bitreich.org 70 i- AES128-SHA256:~ Err bitreich.org 70 i- AES128-SHA") :test 'equal) Err bitreich.org 70 i- Err bitreich.org 70 i-(cffi:defcallback verify-peer-callback :int ((ok :int) (ctx :pointer)) Err bitreich.org 70 i- (let ((error-code (x509-store-ctx-get-error ctx))) Err bitreich.org 70 i- (unless (= error-code 0) Err bitreich.org 70 i- (error 'ssl-error-verify :error-code error-code)) Err bitreich.org 70 i- ok)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-context (&key (method nil method-supplied-p) Err bitreich.org 70 i- (disabled-protocols) Err bitreich.org 70 i- (options (list +SSL-OP-ALL+)) Err bitreich.org 70 i- (session-cache-mode +ssl-sess-cache-server+) Err bitreich.org 70 i- (verify-location :default) Err bitreich.org 70 i- (verify-depth 100) Err bitreich.org 70 i- (verify-mode +ssl-verify-peer+) Err bitreich.org 70 i- (verify-callback nil verify-callback-supplied-p) Err bitreich.org 70 i- (cipher-list +default-cipher-list+) Err bitreich.org 70 i- (pem-password-callback 'pem-password-callback)) Err bitreich.org 70 i- (ensure-initialized) Err bitreich.org 70 i- (let ((ctx (ssl-ctx-new (if method-supplied-p Err bitreich.org 70 i- method Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (unless disabled-protocols Err bitreich.org 70 i- (setf disabled-protocols Err bitreich.org 70 i- (list +SSL-OP-NO-SSLv2+ +SSL-OP-NO-SSLv3+))) Err bitreich.org 70 i- (ssl-v23-method)))))) Err bitreich.org 70 i- (when (cffi:null-pointer-p ctx) Err bitreich.org 70 i- (error 'ssl-error-initialize :reason "Can't create new SSL CTX" :queue (read-ssl-error-queue))) Err bitreich.org 70 i- (handler-bind ((error (lambda (_) Err bitreich.org 70 i- (declare (ignore _)) Err bitreich.org 70 i- (ssl-ctx-free ctx)))) Err bitreich.org 70 i- (ssl-ctx-set-options ctx (apply #'logior (append disabled-protocols options))) Err bitreich.org 70 i- (ssl-ctx-set-session-cache-mode ctx session-cache-mode) Err bitreich.org 70 i- (ssl-ctx-set-verify-location ctx verify-location) Err bitreich.org 70 i- (ssl-ctx-set-verify-depth ctx verify-depth) Err bitreich.org 70 i- (ssl-ctx-set-verify ctx verify-mode (if verify-callback Err bitreich.org 70 i- (cffi:get-callback verify-callback) Err bitreich.org 70 i- (if verify-callback-supplied-p Err bitreich.org 70 i- (cffi:null-pointer) Err bitreich.org 70 i- (if (= verify-mode +ssl-verify-peer+) Err bitreich.org 70 i- (cffi:callback verify-peer-callback) Err bitreich.org 70 i- (cffi:null-pointer))))) Err bitreich.org 70 i- (ssl-ctx-set-cipher-list ctx cipher-list) Err bitreich.org 70 i- (ssl-ctx-set-default-passwd-cb ctx (cffi:get-callback pem-password-callback)) Err bitreich.org 70 i- ctx))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun call-with-global-context (context auto-free-p body-fn) Err bitreich.org 70 i- (let* ((*ssl-global-context* context)) Err bitreich.org 70 i- (unwind-protect (funcall body-fn) Err bitreich.org 70 i- (when auto-free-p Err bitreich.org 70 i- (ssl-ctx-free context))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-global-context ((context &key auto-free-p) &body body) Err bitreich.org 70 i- `(call-with-global-context ,context ,auto-free-p (lambda () ,@body))) Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/src/ffi-1.1.0.lisp b/3rdparties/software/cl+ssl-20190202-git/src/ffi-1.1.0.lisp /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/src/ffi-1.1.0.lisp.gph bitreich.org 70 i@@ -1,22 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: LISP; Syntax: COMMON-LISP; indent-tabs-mode: nil; coding: utf-8; show-trailing-whitespace: t -*- Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage :openssl-1.1.0 Err bitreich.org 70 i- (:nicknames :ossl-1.1.0 :ossl110) Err bitreich.org 70 i- (:use :common-lisp) Err bitreich.org 70 i- (:export #:ssl-ctx-set-default-verify-dir Err bitreich.org 70 i- #:ssl-ctx-set-default-verify-file)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :openssl-1.1.0) Err bitreich.org 70 i- Err bitreich.org 70 i-;; TODO: factor out define-ssl-function into a common dependency from ffi.lisp Err bitreich.org 70 i-;; and use it here. Or just move these functions to ffi.lisp if enough time passes Err bitreich.org 70 i-;; and OpenSSL 1.1 or later is available universally. Err bitreich.org 70 i- Err bitreich.org 70 i-(cffi:defcfun ("SSL_CTX_set_default_verify_dir" ssl-ctx-set-default-verify-dir) Err bitreich.org 70 i- :int Err bitreich.org 70 i- (ctx :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(cffi:defcfun ("SSL_CTX_set_default_verify_file" ssl-ctx-set-default-verify-file) Err bitreich.org 70 i- :int Err bitreich.org 70 i- (ctx :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/src/ffi-buffer-all.lisp b/3rdparties/software/cl+ssl-20190202-git/src/ffi-buffer-all.lisp /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/src/ffi-buffer-all.lisp.gph bitreich.org 70 i@@ -1,16 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: LISP; Syntax: COMMON-LISP; indent-tabs-mode: nil; coding: utf-8; show-trailing-whitespace: t -*- Err bitreich.org 70 i- Err bitreich.org 70 i-#+xcvb (module (:depends-on ("package"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl+ssl) Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +initial-buffer-size+ 2048) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim Err bitreich.org 70 i- (inline Err bitreich.org 70 i- make-buffer Err bitreich.org 70 i- buffer-length Err bitreich.org 70 i- buffer-elt Err bitreich.org 70 i- set-buffer-elt Err bitreich.org 70 i- s/b-replace Err bitreich.org 70 i- b/s-replace)) Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/src/ffi-buffer-clisp.lisp b/3rdparties/software/cl+ssl-20190202-git/src/ffi-buffer-clisp.lisp /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/src/ffi-buffer-clisp.lisp.gph bitreich.org 70 i@@ -1,53 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: LISP; Syntax: COMMON-LISP; indent-tabs-mode: nil; coding: utf-8; show-trailing-whitespace: t -*- Err bitreich.org 70 i- Err bitreich.org 70 i-#+xcvb (module (:depends-on ("package" "reload" "conditions" "ffi" "ffi-buffer-all"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl+ssl) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-buffer (size) Err bitreich.org 70 i- (cffi-sys:%foreign-alloc size)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun buffer-length (buf) Err bitreich.org 70 i- (declare (ignore buf)) Err bitreich.org 70 i- +initial-buffer-size+) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun buffer-elt (buf index) Err bitreich.org 70 i- (ffi:memory-as buf 'ffi:uint8 index)) Err bitreich.org 70 i-(defun set-buffer-elt (buf index val) Err bitreich.org 70 i- (setf (ffi:memory-as buf 'ffi:uint8 index) val)) Err bitreich.org 70 i-(defsetf buffer-elt set-buffer-elt) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim Err bitreich.org 70 i- (inline calc-buf-end)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; to calculate non NIL value of the buffer end index Err bitreich.org 70 i-(defun calc-buf-end (buf-start seq seq-start seq-end) Err bitreich.org 70 i- (+ buf-start Err bitreich.org 70 i- (- (or seq-end (length seq)) Err bitreich.org 70 i- seq-start))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun s/b-replace (seq buf &key (start1 0) end1 (start2 0) end2) Err bitreich.org 70 i- (when (null end2) Err bitreich.org 70 i- (setf end2 (calc-buf-end start2 seq start1 end1))) Err bitreich.org 70 i- (replace Err bitreich.org 70 i- seq Err bitreich.org 70 i- (ffi:memory-as buf (ffi:parse-c-type `(ffi:c-array ffi:uint8 ,(- end2 start2))) start2) Err bitreich.org 70 i- :start1 start1 Err bitreich.org 70 i- :end1 end1)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun as-vector (seq) Err bitreich.org 70 i- (if (typep seq 'vector) Err bitreich.org 70 i- seq Err bitreich.org 70 i- (make-array (length seq) :initial-contents seq :element-type '(unsigned-byte 8)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun b/s-replace (buf seq &key (start1 0) end1 (start2 0) end2) Err bitreich.org 70 i- (when (null end1) Err bitreich.org 70 i- (setf end1 (calc-buf-end start1 seq start2 end2))) Err bitreich.org 70 i- (setf Err bitreich.org 70 i- (ffi:memory-as buf (ffi:parse-c-type `(ffi:c-array ffi:uint8 ,(- end1 start1))) start1) Err bitreich.org 70 i- (as-vector (subseq seq start2 end2))) Err bitreich.org 70 i- seq) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-pointer-to-vector-data ((ptr buf) &body body) Err bitreich.org 70 i- `(let ((,ptr ,buf)) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/src/ffi-buffer.lisp b/3rdparties/software/cl+ssl-20190202-git/src/ffi-buffer.lisp /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/src/ffi-buffer.lisp.gph bitreich.org 70 i@@ -1,26 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: LISP; Syntax: COMMON-LISP; indent-tabs-mode: nil; coding: utf-8; show-trailing-whitespace: t -*- Err bitreich.org 70 i- Err bitreich.org 70 i-#+xcvb (module (:depends-on ("package"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl+ssl) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-buffer (size) Err bitreich.org 70 i- (cffi-sys::make-shareable-byte-vector size)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun buffer-length (buf) Err bitreich.org 70 i- (length buf)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun buffer-elt (buf index) Err bitreich.org 70 i- (elt buf index)) Err bitreich.org 70 i-(defun set-buffer-elt (buf index val) Err bitreich.org 70 i- (setf (elt buf index) val)) Err bitreich.org 70 i-(defsetf buffer-elt set-buffer-elt) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun s/b-replace (seq buf &key (start1 0) end1 (start2 0) end2) Err bitreich.org 70 i- (replace seq buf :start1 start1 :end1 end1 :start2 start2 :end2 end2)) Err bitreich.org 70 i-(defun b/s-replace (buf seq &key (start1 0) end1 (start2 0) end2) Err bitreich.org 70 i- (replace buf seq :start1 start1 :end1 end1 :start2 start2 :end2 end2)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-pointer-to-vector-data ((ptr buf) &body body) Err bitreich.org 70 i- `(cffi-sys::with-pointer-to-vector-data (,ptr ,buf) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/src/ffi.lisp b/3rdparties/software/cl+ssl-20190202-git/src/ffi.lisp /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/src/ffi.lisp.gph bitreich.org 70 i@@ -1,825 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: LISP; Syntax: COMMON-LISP; indent-tabs-mode: nil; coding: utf-8; show-trailing-whitespace: t -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2001, 2003 Eric Marsden Err bitreich.org 70 i-;;; Copyright (C) 2005 David Lichteblau Err bitreich.org 70 i-;;; "the conditions and ENSURE-SSL-FUNCALL are by Jochen Schmidt." Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; See LICENSE for details. Err bitreich.org 70 i- Err bitreich.org 70 i-#+xcvb (module (:depends-on ("package" "conditions"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:compile-toplevel) Err bitreich.org 70 i- (declaim Err bitreich.org 70 i- (optimize (speed 3) (space 1) (safety 1) (debug 0) (compilation-speed 0)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl+ssl) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Code for checking that we got the correct foreign symbols right. Err bitreich.org 70 i-;;; Implemented only for LispWorks for now. Err bitreich.org 70 i-(defvar *cl+ssl-ssl-foreign-function-names* nil) Err bitreich.org 70 i-(defvar *cl+ssl-crypto-foreign-function-names* nil) Err bitreich.org 70 i-#+lispworks Err bitreich.org 70 i-(defun check-cl+ssl-symbols () Err bitreich.org 70 i- (dolist (ssl-symbol *cl+ssl-ssl-foreign-function-names*) Err bitreich.org 70 i- (when (fli:null-pointer-p (fli:make-pointer :symbol-name ssl-symbol :module 'libssl :errorp nil)) Err bitreich.org 70 i- (format *error-output* "Symbol ~s undefined~%" ssl-symbol))) Err bitreich.org 70 i- (dolist (crypto-symbol *cl+ssl-crypto-foreign-function-names*) Err bitreich.org 70 i- (when (fli:null-pointer-p (fli:make-pointer :symbol-name crypto-symbol :module 'libcrypto :errorp nil)) Err bitreich.org 70 i- (format *error-output* "Symbol ~s undefined~%" crypto-symbol)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro define-ssl-function (name-and-options &body body) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (pushnew ,(car name-and-options) *cl+ssl-ssl-foreign-function-names* :test 'equal) ; debugging Err bitreich.org 70 i- (cffi:defcfun ,(append name-and-options '(:library libssl)) ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro define-crypto-function (name-and-options &body body) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (pushnew ,(car name-and-options) *cl+ssl-crypto-foreign-function-names* :test 'equal) ; debugging Err bitreich.org 70 i- (cffi:defcfun ,(append name-and-options #+(and lispworks darwin) '(:library libcrypto)) ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Global state Err bitreich.org 70 i-;;; Err bitreich.org 70 i-(defvar *ssl-global-context* nil) Err bitreich.org 70 i-(defvar *ssl-global-method* nil) Err bitreich.org 70 i-(defvar *bio-lisp-method* nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *blockp* t) Err bitreich.org 70 i-(defparameter *partial-read-p* nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ssl-initialized-p () Err bitreich.org 70 i- (and *ssl-global-context* *ssl-global-method*)) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Constants Err bitreich.org 70 i-;;; Err bitreich.org 70 i-(defconstant +ssl-filetype-pem+ 1) Err bitreich.org 70 i-(defconstant +ssl-filetype-asn1+ 2) Err bitreich.org 70 i-(defconstant +ssl-filetype-default+ 3) Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +SSL-CTRL-OPTIONS+ 32) Err bitreich.org 70 i-(defconstant +SSL_CTRL_SET_SESS_CACHE_MODE+ 44) Err bitreich.org 70 i-(defconstant +SSL_CTRL_MODE+ 33) Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER+ 2) Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +RSA_F4+ #x10001) Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +SSL-SESS-CACHE-OFF+ #x0000 Err bitreich.org 70 i- "No session caching for client or server takes place.") Err bitreich.org 70 i-(defconstant +SSL-SESS-CACHE-CLIENT+ #x0001 Err bitreich.org 70 i- "Client sessions are added to the session cache. Err bitreich.org 70 i-As there is no reliable way for the OpenSSL library to know whether a session should be reused Err bitreich.org 70 i-or which session to choose (due to the abstract BIO layer the SSL engine does not have details Err bitreich.org 70 i-about the connection), the application must select the session to be reused by using the Err bitreich.org 70 i-SSL-SET-SESSION function. This option is not activated by default.") Err bitreich.org 70 i-(defconstant +SSL-SESS-CACHE-SERVER+ #x0002 Err bitreich.org 70 i- "Server sessions are added to the session cache. Err bitreich.org 70 i-When a client proposes a session to be reused, the server looks for the corresponding session Err bitreich.org 70 i-in (first) the internal session cache (unless +SSL-SESS-CACHE-NO-INTERNAL-LOOKUP+ is set), then Err bitreich.org 70 i-(second) in the external cache if available. If the session is found, the server will try to Err bitreich.org 70 i-reuse the session. This is the default.") Err bitreich.org 70 i-(defconstant +SSL-SESS-CACHE-BOTH+ (logior +SSL-SESS-CACHE-CLIENT+ +SSL-SESS-CACHE-SERVER+) Err bitreich.org 70 i- "Enable both +SSL-SESS-CACHE-CLIENT+ and +SSL-SESS-CACHE-SERVER+ at the same time.") Err bitreich.org 70 i-(defconstant +SSL-SESS-CACHE-NO-AUTO-CLEAR+ #x0080 Err bitreich.org 70 i- "Normally the session cache is checked for expired sessions every 255 connections using the Err bitreich.org 70 i-SSL-CTX-FLUSH-SESSIONS function. Since this may lead to a delay which cannot be controlled, Err bitreich.org 70 i-the automatic flushing may be disabled and SSL-CTX-FLUSH-SESSIONS can be called explicitly Err bitreich.org 70 i-by the application.") Err bitreich.org 70 i-(defconstant +SSL-SESS-CACHE-NO-INTERNAL-LOOKUP+ #x0100 Err bitreich.org 70 i- "By setting this flag, session-resume operations in an SSL/TLS server will not automatically Err bitreich.org 70 i-look up sessions in the internal cache, even if sessions are automatically stored there. Err bitreich.org 70 i-If external session caching callbacks are in use, this flag guarantees that all lookups are Err bitreich.org 70 i-directed to the external cache. As automatic lookup only applies for SSL/TLS servers, the flag Err bitreich.org 70 i-has no effect on clients.") Err bitreich.org 70 i-(defconstant +SSL-SESS-CACHE-NO-INTERNAL-STORE+ #x0200 Err bitreich.org 70 i- "Depending on the presence of +SSL-SESS-CACHE-CLIENT+ and/or +SSL-SESS-CACHE-SERVER+, sessions Err bitreich.org 70 i-negotiated in an SSL/TLS handshake may be cached for possible reuse. Normally a new session is Err bitreich.org 70 i-added to the internal cache as well as any external session caching (callback) that is configured Err bitreich.org 70 i-for the SSL-CTX. This flag will prevent sessions being stored in the internal cache (though the Err bitreich.org 70 i-application can add them manually using SSL-CTX-ADD-SESSION). Note: in any SSL/TLS servers where Err bitreich.org 70 i-external caching is configured, any successful session lookups in the external cache (ie. for Err bitreich.org 70 i-session-resume requests) would normally be copied into the local cache before processing continues Err bitreich.org 70 i-- this flag prevents these additions to the internal cache as well.") Err bitreich.org 70 i-(defconstant +SSL-SESS-CACHE-NO-INTERNAL+ (logior +SSL-SESS-CACHE-NO-INTERNAL-LOOKUP+ +SSL-SESS-CACHE-NO-INTERNAL-STORE+) Err bitreich.org 70 i- "Enable both +SSL-SESS-CACHE-NO-INTERNAL-LOOKUP+ and +SSL-SESS-CACHE-NO-INTERNAL-STORE+ at the same time.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +SSL-VERIFY-NONE+ #x00) Err bitreich.org 70 i-(defconstant +SSL-VERIFY-PEER+ #x01) Err bitreich.org 70 i-(defconstant +SSL-VERIFY-FAIL-IF-NO-PEER-CERT+ #x02) Err bitreich.org 70 i-(defconstant +SSL-VERIFY-CLIENT-ONCE+ #x04) Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +SSL-OP-ALL+ #x80000BFF) Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +SSL-OP-NO-SSLv2+ #x01000000) Err bitreich.org 70 i-(defconstant +SSL-OP-NO-SSLv3+ #x02000000) Err bitreich.org 70 i-(defconstant +SSL-OP-NO-TLSv1+ #x04000000) Err bitreich.org 70 i-(defconstant +SSL-OP-NO-TLSv1-2+ #x08000000) Err bitreich.org 70 i-(defconstant +SSL-OP-NO-TLSv1-1+ #x10000000) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *tmp-rsa-key-512* nil) Err bitreich.org 70 i-(defvar *tmp-rsa-key-1024* nil) Err bitreich.org 70 i-(defvar *tmp-rsa-key-2048* nil) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Misc Err bitreich.org 70 i-;;; Err bitreich.org 70 i-(defmacro while (cond &body body) Err bitreich.org 70 i- `(do () ((not ,cond)) ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Function definitions Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(cffi:defcfun (#-windows "close" #+windows "closesocket" close-socket) Err bitreich.org 70 i- :int Err bitreich.org 70 i- (socket :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline ssl-write ssl-read ssl-connect ssl-accept)) Err bitreich.org 70 i- Err bitreich.org 70 i-(cffi:defctype ssl-method :pointer) Err bitreich.org 70 i-(cffi:defctype ssl-ctx :pointer) Err bitreich.org 70 i-(cffi:defctype ssl-pointer :pointer) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-ssl-function ("SSL_get_version" ssl-get-version) Err bitreich.org 70 i- :string Err bitreich.org 70 i- (ssl ssl-pointer)) Err bitreich.org 70 i-(define-ssl-function ("SSL_load_error_strings" ssl-load-error-strings) Err bitreich.org 70 i- :void) Err bitreich.org 70 i-(define-ssl-function ("SSL_library_init" ssl-library-init) Err bitreich.org 70 i- :int) Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; We don't refer SSLv2_client_method as the default Err bitreich.org 70 i-;; builds of OpenSSL do not have it, due to insecurity Err bitreich.org 70 i-;; of the SSL v2 protocol (see https://www.openssl.org/docs/ssl/SSL_CTX_new.html Err bitreich.org 70 i-;; and https://github.com/cl-plus-ssl/cl-plus-ssl/issues/6) Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; (define-ssl-function ("SSLv2_client_method" ssl-v2-client-method) Err bitreich.org 70 i-;; ssl-method) Err bitreich.org 70 i-(define-ssl-function ("SSLv23_client_method" ssl-v23-client-method) Err bitreich.org 70 i- ssl-method) Err bitreich.org 70 i-(define-ssl-function ("SSLv23_server_method" ssl-v23-server-method) Err bitreich.org 70 i- ssl-method) Err bitreich.org 70 i-(define-ssl-function ("SSLv23_method" ssl-v23-method) Err bitreich.org 70 i- ssl-method) Err bitreich.org 70 i-(define-ssl-function ("SSLv3_client_method" ssl-v3-client-method) Err bitreich.org 70 i- ssl-method) Err bitreich.org 70 i-(define-ssl-function ("SSLv3_server_method" ssl-v3-server-method) Err bitreich.org 70 i- ssl-method) Err bitreich.org 70 i-(define-ssl-function ("SSLv3_method" ssl-v3-method) Err bitreich.org 70 i- ssl-method) Err bitreich.org 70 i-(define-ssl-function ("TLSv1_client_method" ssl-TLSv1-client-method) Err bitreich.org 70 i- ssl-method) Err bitreich.org 70 i-(define-ssl-function ("TLSv1_server_method" ssl-TLSv1-server-method) Err bitreich.org 70 i- ssl-method) Err bitreich.org 70 i-(define-ssl-function ("TLSv1_method" ssl-TLSv1-method) Err bitreich.org 70 i- ssl-method) Err bitreich.org 70 i-(define-ssl-function ("TLSv1_1_client_method" ssl-TLSv1-1-client-method) Err bitreich.org 70 i- ssl-method) Err bitreich.org 70 i-(define-ssl-function ("TLSv1_1_server_method" ssl-TLSv1-1-server-method) Err bitreich.org 70 i- ssl-method) Err bitreich.org 70 i-(define-ssl-function ("TLSv1_1_method" ssl-TLSv1-1-method) Err bitreich.org 70 i- ssl-method) Err bitreich.org 70 i-(define-ssl-function ("TLSv1_2_client_method" ssl-TLSv1-2-client-method) Err bitreich.org 70 i- ssl-method) Err bitreich.org 70 i-(define-ssl-function ("TLSv1_2_server_method" ssl-TLSv1-2-server-method) Err bitreich.org 70 i- ssl-method) Err bitreich.org 70 i-(define-ssl-function ("TLSv1_2_method" ssl-TLSv1-2-method) Err bitreich.org 70 i- ssl-method) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-ssl-function ("SSL_CTX_new" ssl-ctx-new) Err bitreich.org 70 i- ssl-ctx Err bitreich.org 70 i- (method ssl-method)) Err bitreich.org 70 i-(define-ssl-function ("SSL_new" ssl-new) Err bitreich.org 70 i- ssl-pointer Err bitreich.org 70 i- (ctx ssl-ctx)) Err bitreich.org 70 i-(define-ssl-function ("SSL_get_fd" ssl-get-fd) Err bitreich.org 70 i- :int Err bitreich.org 70 i- (ssl ssl-pointer)) Err bitreich.org 70 i-(define-ssl-function ("SSL_set_fd" ssl-set-fd) Err bitreich.org 70 i- :int Err bitreich.org 70 i- (ssl ssl-pointer) Err bitreich.org 70 i- (fd :int)) Err bitreich.org 70 i-(define-ssl-function ("SSL_set_bio" ssl-set-bio) Err bitreich.org 70 i- :void Err bitreich.org 70 i- (ssl ssl-pointer) Err bitreich.org 70 i- (rbio :pointer) Err bitreich.org 70 i- (wbio :pointer)) Err bitreich.org 70 i-(define-ssl-function ("SSL_get_error" ssl-get-error) Err bitreich.org 70 i- :int Err bitreich.org 70 i- (ssl ssl-pointer) Err bitreich.org 70 i- (ret :int)) Err bitreich.org 70 i-(define-ssl-function ("SSL_set_connect_state" ssl-set-connect-state) Err bitreich.org 70 i- :void Err bitreich.org 70 i- (ssl ssl-pointer)) Err bitreich.org 70 i-(define-ssl-function ("SSL_set_accept_state" ssl-set-accept-state) Err bitreich.org 70 i- :void Err bitreich.org 70 i- (ssl ssl-pointer)) Err bitreich.org 70 i-(define-ssl-function ("SSL_connect" ssl-connect) Err bitreich.org 70 i- :int Err bitreich.org 70 i- (ssl ssl-pointer)) Err bitreich.org 70 i-(define-ssl-function ("SSL_accept" ssl-accept) Err bitreich.org 70 i- :int Err bitreich.org 70 i- (ssl ssl-pointer)) Err bitreich.org 70 i-(define-ssl-function ("SSL_write" ssl-write) Err bitreich.org 70 i- :int Err bitreich.org 70 i- (ssl ssl-pointer) Err bitreich.org 70 i- (buf :pointer) Err bitreich.org 70 i- (num :int)) Err bitreich.org 70 i-(define-ssl-function ("SSL_read" ssl-read) Err bitreich.org 70 i- :int Err bitreich.org 70 i- (ssl ssl-pointer) Err bitreich.org 70 i- (buf :pointer) Err bitreich.org 70 i- (num :int)) Err bitreich.org 70 i-(define-ssl-function ("SSL_shutdown" ssl-shutdown) Err bitreich.org 70 i- :void Err bitreich.org 70 i- (ssl ssl-pointer)) Err bitreich.org 70 i-(define-ssl-function ("SSL_free" ssl-free) Err bitreich.org 70 i- :void Err bitreich.org 70 i- (ssl ssl-pointer)) Err bitreich.org 70 i-(define-ssl-function ("SSL_CTX_free" ssl-ctx-free) Err bitreich.org 70 i- :void Err bitreich.org 70 i- (ctx ssl-ctx)) Err bitreich.org 70 i-(define-crypto-function ("BIO_ctrl" bio-set-fd) Err bitreich.org 70 i- :long Err bitreich.org 70 i- (bio :pointer) Err bitreich.org 70 i- (cmd :int) Err bitreich.org 70 i- (larg :long) Err bitreich.org 70 i- (parg :pointer)) Err bitreich.org 70 i-(define-crypto-function ("BIO_new_socket" bio-new-socket) Err bitreich.org 70 i- :pointer Err bitreich.org 70 i- (fd :int) Err bitreich.org 70 i- (close-flag :int)) Err bitreich.org 70 i-(define-crypto-function ("BIO_new" bio-new) Err bitreich.org 70 i- :pointer Err bitreich.org 70 i- (method :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-crypto-function ("ERR_get_error" err-get-error) Err bitreich.org 70 i- :unsigned-long) Err bitreich.org 70 i-(define-crypto-function ("ERR_error_string" err-error-string) Err bitreich.org 70 i- :string Err bitreich.org 70 i- (e :unsigned-long) Err bitreich.org 70 i- (buf :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-ssl-function ("SSL_set_cipher_list" ssl-set-cipher-list) Err bitreich.org 70 i- :int Err bitreich.org 70 i- (ssl ssl-pointer) Err bitreich.org 70 i- (str :string)) Err bitreich.org 70 i-(define-ssl-function ("SSL_use_RSAPrivateKey_file" ssl-use-rsa-privatekey-file) Err bitreich.org 70 i- :int Err bitreich.org 70 i- (ssl ssl-pointer) Err bitreich.org 70 i- (str :string) Err bitreich.org 70 i- ;; either +ssl-filetype-pem+ or +ssl-filetype-asn1+ Err bitreich.org 70 i- (type :int)) Err bitreich.org 70 i-(define-ssl-function Err bitreich.org 70 i- ("SSL_CTX_use_RSAPrivateKey_file" ssl-ctx-use-rsa-privatekey-file) Err bitreich.org 70 i- :int Err bitreich.org 70 i- (ctx ssl-ctx) Err bitreich.org 70 i- (type :int)) Err bitreich.org 70 i-(define-ssl-function ("SSL_use_certificate_file" ssl-use-certificate-file) Err bitreich.org 70 i- :int Err bitreich.org 70 i- (ssl ssl-pointer) Err bitreich.org 70 i- (str :string) Err bitreich.org 70 i- (type :int)) Err bitreich.org 70 i-#+new-openssl Err bitreich.org 70 i-(define-ssl-function ("SSL_CTX_set_options" ssl-ctx-set-options) Err bitreich.org 70 i- :long Err bitreich.org 70 i- (ctx :pointer) Err bitreich.org 70 i- (options :long)) Err bitreich.org 70 i-#-new-openssl Err bitreich.org 70 i-(defun ssl-ctx-set-options (ctx options) Err bitreich.org 70 i- (ssl-ctx-ctrl ctx +SSL-CTRL-OPTIONS+ options (cffi:null-pointer))) Err bitreich.org 70 i-(define-ssl-function ("SSL_CTX_set_cipher_list" ssl-ctx-set-cipher-list%) Err bitreich.org 70 i- :int Err bitreich.org 70 i- (ctx :pointer) Err bitreich.org 70 i- (ciphers :pointer)) Err bitreich.org 70 i-(defun ssl-ctx-set-cipher-list (ctx ciphers) Err bitreich.org 70 i- (cffi:with-foreign-string (ciphers* ciphers) Err bitreich.org 70 i- (when (= 0 (ssl-ctx-set-cipher-list% ctx ciphers*)) Err bitreich.org 70 i- (error 'ssl-error-initialize :reason "Can't set SSL cipher list" :queue (read-ssl-error-queue))))) Err bitreich.org 70 i-(define-ssl-function ("SSL_CTX_use_certificate_chain_file" ssl-ctx-use-certificate-chain-file) Err bitreich.org 70 i- :int Err bitreich.org 70 i- (ctx ssl-ctx) Err bitreich.org 70 i- (str :string)) Err bitreich.org 70 i-(define-ssl-function ("SSL_CTX_load_verify_locations" ssl-ctx-load-verify-locations) Err bitreich.org 70 i- :int Err bitreich.org 70 i- (ctx ssl-ctx) Err bitreich.org 70 i- (CAfile :string) Err bitreich.org 70 i- (CApath :string)) Err bitreich.org 70 i-(define-ssl-function ("SSL_CTX_set_client_CA_list" ssl-ctx-set-client-ca-list) Err bitreich.org 70 i- :void Err bitreich.org 70 i- (ctx ssl-ctx) Err bitreich.org 70 i- (list ssl-pointer)) Err bitreich.org 70 i-(define-ssl-function ("SSL_load_client_CA_file" ssl-load-client-ca-file) Err bitreich.org 70 i- ssl-pointer Err bitreich.org 70 i- (file :string)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-ssl-function ("SSL_CTX_ctrl" ssl-ctx-ctrl) Err bitreich.org 70 i- :long Err bitreich.org 70 i- (ctx ssl-ctx) Err bitreich.org 70 i- (cmd :int) Err bitreich.org 70 i- ;; Despite declared as long in the original OpenSSL headers, Err bitreich.org 70 i- ;; passing to larg for example 2181041151 which is the result of Err bitreich.org 70 i- ;; (logior cl+ssl::+SSL-OP-ALL+ Err bitreich.org 70 i- ;; cl+ssl::+SSL-OP-NO-SSLv2+ Err bitreich.org 70 i- ;; cl+ssl::+SSL-OP-NO-SSLv3+) Err bitreich.org 70 i- ;; causes CFFI on 32 bit platforms to signal an error Err bitreich.org 70 i- ;; "The value 2181041151 is not of the expected type (SIGNED-BYTE 32)" Err bitreich.org 70 i- ;; The problem is that 2181041151 requires 32 bits by itself and Err bitreich.org 70 i- ;; there is no place left for the sign bit. Err bitreich.org 70 i- ;; In C the compiler silently coerces unsigned to signed, Err bitreich.org 70 i- ;; but CFFI raises this error. Err bitreich.org 70 i- ;; Therefore we use :UNSIGNED-LONG for LARG. Err bitreich.org 70 i- (larg :unsigned-long) Err bitreich.org 70 i- (parg :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-ssl-function ("SSL_ctrl" ssl-ctrl) Err bitreich.org 70 i- :long Err bitreich.org 70 i- (ssl :pointer) Err bitreich.org 70 i- (cmd :int) Err bitreich.org 70 i- (larg :long) Err bitreich.org 70 i- (parg :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-ssl-function ("SSL_CTX_set_default_passwd_cb" ssl-ctx-set-default-passwd-cb) Err bitreich.org 70 i- :void Err bitreich.org 70 i- (ctx ssl-ctx) Err bitreich.org 70 i- (pem_passwd_cb :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-crypto-function ("CRYPTO_num_locks" crypto-num-locks) :int) Err bitreich.org 70 i-(define-crypto-function ("CRYPTO_set_locking_callback" crypto-set-locking-callback) Err bitreich.org 70 i- :void Err bitreich.org 70 i- (fun :pointer)) Err bitreich.org 70 i-(define-crypto-function ("CRYPTO_set_id_callback" crypto-set-id-callback) Err bitreich.org 70 i- :void Err bitreich.org 70 i- (fun :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-crypto-function ("RAND_seed" rand-seed) Err bitreich.org 70 i- :void Err bitreich.org 70 i- (buf :pointer) Err bitreich.org 70 i- (num :int)) Err bitreich.org 70 i-(define-crypto-function ("RAND_bytes" rand-bytes) Err bitreich.org 70 i- :int Err bitreich.org 70 i- (buf :pointer) Err bitreich.org 70 i- (num :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-ssl-function ("SSL_CTX_set_verify_depth" ssl-ctx-set-verify-depth) Err bitreich.org 70 i- :void Err bitreich.org 70 i- (ctx :pointer) Err bitreich.org 70 i- (depth :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-ssl-function ("SSL_CTX_set_verify" ssl-ctx-set-verify) Err bitreich.org 70 i- :void Err bitreich.org 70 i- (ctx :pointer) Err bitreich.org 70 i- (mode :int) Err bitreich.org 70 i- (verify-callback :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-ssl-function ("SSL_get_verify_result" ssl-get-verify-result) Err bitreich.org 70 i- :long Err bitreich.org 70 i- (ssl ssl-pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-ssl-function ("SSL_get_peer_certificate" ssl-get-peer-certificate) Err bitreich.org 70 i- :pointer Err bitreich.org 70 i- (ssl ssl-pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; X509 & ASN1 Err bitreich.org 70 i-(define-crypto-function ("X509_free" x509-free) Err bitreich.org 70 i- :void Err bitreich.org 70 i- (x509 :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-crypto-function ("X509_NAME_oneline" x509-name-oneline) Err bitreich.org 70 i- :pointer Err bitreich.org 70 i- (x509-name :pointer) Err bitreich.org 70 i- (buf :pointer) Err bitreich.org 70 i- (size :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-crypto-function ("X509_NAME_get_index_by_NID" x509-name-get-index-by-nid) Err bitreich.org 70 i- :int Err bitreich.org 70 i- (name :pointer) Err bitreich.org 70 i- (nid :int) Err bitreich.org 70 i- (lastpos :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-crypto-function ("X509_NAME_get_entry" x509-name-get-entry) Err bitreich.org 70 i- :pointer Err bitreich.org 70 i- (name :pointer) Err bitreich.org 70 i- (log :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-crypto-function ("X509_NAME_ENTRY_get_data" x509-name-entry-get-data) Err bitreich.org 70 i- :pointer Err bitreich.org 70 i- (name-entry :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-crypto-function ("X509_get_issuer_name" x509-get-issuer-name) Err bitreich.org 70 i- :pointer ; *X509_NAME Err bitreich.org 70 i- (x509 :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-crypto-function ("X509_get_subject_name" x509-get-subject-name) Err bitreich.org 70 i- :pointer ; *X509_NAME Err bitreich.org 70 i- (x509 :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-crypto-function ("X509_get_ext_d2i" x509-get-ext-d2i) Err bitreich.org 70 i- :pointer Err bitreich.org 70 i- (cert :pointer) Err bitreich.org 70 i- (nid :int) Err bitreich.org 70 i- (crit :pointer) Err bitreich.org 70 i- (idx :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-crypto-function ("X509_STORE_CTX_get_error" x509-store-ctx-get-error) Err bitreich.org 70 i- :int Err bitreich.org 70 i- (ctx :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-crypto-function ("d2i_X509" d2i-x509) Err bitreich.org 70 i- :pointer Err bitreich.org 70 i- (*px :pointer) Err bitreich.org 70 i- (in :pointer) Err bitreich.org 70 i- (len :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; GENERAL-NAME types Err bitreich.org 70 i-(defconstant +GEN-OTHERNAME+ 0) Err bitreich.org 70 i-(defconstant +GEN-EMAIL+ 1) Err bitreich.org 70 i-(defconstant +GEN-DNS+ 2) Err bitreich.org 70 i-(defconstant +GEN-X400+ 3) Err bitreich.org 70 i-(defconstant +GEN-DIRNAME+ 4) Err bitreich.org 70 i-(defconstant +GEN-EDIPARTY+ 5) Err bitreich.org 70 i-(defconstant +GEN-URI+ 6) Err bitreich.org 70 i-(defconstant +GEN-IPADD+ 7) Err bitreich.org 70 i-(defconstant +GEN-RID+ 8) Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +V-ASN1-OCTET-STRING+ 4) Err bitreich.org 70 i-(defconstant +V-ASN1-UTF8STRING+ 12) Err bitreich.org 70 i-(defconstant +V-ASN1-PRINTABLESTRING+ 19) Err bitreich.org 70 i-(defconstant +V-ASN1-TELETEXSTRING+ 20) Err bitreich.org 70 i-(defconstant +V-ASN1-IASTRING+ 22) Err bitreich.org 70 i-(defconstant +V-ASN1-UNIVERSALSTRING+ 28) Err bitreich.org 70 i-(defconstant +V-ASN1-BMPSTRING+ 30) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +NID-subject-alt-name+ 85) Err bitreich.org 70 i-(defconstant +NID-commonName+ 13) Err bitreich.org 70 i- Err bitreich.org 70 i-(cffi:defcstruct general-name Err bitreich.org 70 i- (type :int) Err bitreich.org 70 i- (data :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-crypto-function ("sk_value" sk-value) Err bitreich.org 70 i- :pointer Err bitreich.org 70 i- (stack :pointer) Err bitreich.org 70 i- (index :int)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-crypto-function ("sk_num" sk-num) Err bitreich.org 70 i- :int Err bitreich.org 70 i- (stack :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (ftype (function (cffi:foreign-pointer fixnum) cffi:foreign-pointer) sk-general-name-value)) Err bitreich.org 70 i-(defun sk-general-name-value (names index) Err bitreich.org 70 i- (sk-value names index)) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (ftype (function (cffi:foreign-pointer) fixnum) sk-general-name-num)) Err bitreich.org 70 i-(defun sk-general-name-num (names) Err bitreich.org 70 i- (sk-num names)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-crypto-function ("GENERAL_NAMES_free" general-names-free) Err bitreich.org 70 i- :void Err bitreich.org 70 i- (general-names :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-crypto-function ("ASN1_STRING_data" asn1-string-data) Err bitreich.org 70 i- :pointer Err bitreich.org 70 i- (asn1-string :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-crypto-function ("ASN1_STRING_length" asn1-string-length) Err bitreich.org 70 i- :int Err bitreich.org 70 i- (asn1-string :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-crypto-function ("ASN1_STRING_type" asn1-string-type) Err bitreich.org 70 i- :int Err bitreich.org 70 i- (asn1-string :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(cffi:defcstruct asn1_string_st Err bitreich.org 70 i- (length :int) Err bitreich.org 70 i- (type :int) Err bitreich.org 70 i- (data :pointer) Err bitreich.org 70 i- (flags :long)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; X509 & ASN1 - end Err bitreich.org 70 i- Err bitreich.org 70 i-(define-ssl-function ("SSL_CTX_set_default_verify_paths" ssl-ctx-set-default-verify-paths) Err bitreich.org 70 i- :int Err bitreich.org 70 i- (ctx :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-crypto-function ("RSA_generate_key" rsa-generate-key) Err bitreich.org 70 i- :pointer Err bitreich.org 70 i- (num :int) Err bitreich.org 70 i- (e :unsigned-long) Err bitreich.org 70 i- (callback :pointer) Err bitreich.org 70 i- (opt :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-crypto-function ("RSA_free" rsa-free) Err bitreich.org 70 i- :void Err bitreich.org 70 i- (rsa :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-ssl-function ("SSL_CTX_set_tmp_rsa_callback" ssl-ctx-set-tmp-rsa-callback) Err bitreich.org 70 i- :pointer Err bitreich.org 70 i- (ctx :pointer) Err bitreich.org 70 i- (callback :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(cffi:defcallback tmp-rsa-callback :pointer ((ssl :pointer) (export-p :int) (key-length :int)) Err bitreich.org 70 i- (declare (ignore ssl export-p)) Err bitreich.org 70 i- (flet ((rsa-key (length) Err bitreich.org 70 i- (rsa-generate-key length Err bitreich.org 70 i- +RSA_F4+ Err bitreich.org 70 i- (cffi:null-pointer) Err bitreich.org 70 i- (cffi:null-pointer)))) Err bitreich.org 70 i- (cond ((= key-length 512) Err bitreich.org 70 i- (unless *tmp-rsa-key-512* Err bitreich.org 70 i- (setf *tmp-rsa-key-512* (rsa-key key-length))) Err bitreich.org 70 i- *tmp-rsa-key-512*) Err bitreich.org 70 i- ((= key-length 1024) Err bitreich.org 70 i- (unless *tmp-rsa-key-1024* Err bitreich.org 70 i- (setf *tmp-rsa-key-1024* (rsa-key key-length))) Err bitreich.org 70 i- *tmp-rsa-key-1024*) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (unless *tmp-rsa-key-2048* Err bitreich.org 70 i- (setf *tmp-rsa-key-2048* (rsa-key key-length))) Err bitreich.org 70 i- *tmp-rsa-key-2048*)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Funcall wrapper Err bitreich.org 70 i-;;; Err bitreich.org 70 i-(defvar *socket*) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline ensure-ssl-funcall)) Err bitreich.org 70 i-(defun ensure-ssl-funcall (stream handle func &rest args) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- (let ((nbytes Err bitreich.org 70 i- (let ((*socket* (ssl-stream-socket stream))) ;for Lisp-BIO callbacks Err bitreich.org 70 i- (apply func args)))) Err bitreich.org 70 i- (when (plusp nbytes) Err bitreich.org 70 i- (return nbytes)) Err bitreich.org 70 i- (let ((error (ssl-get-error handle nbytes))) Err bitreich.org 70 i- (case error Err bitreich.org 70 i- (#.+ssl-error-want-read+ Err bitreich.org 70 i- (input-wait stream Err bitreich.org 70 i- (ssl-get-fd handle) Err bitreich.org 70 i- (ssl-stream-deadline stream))) Err bitreich.org 70 i- (#.+ssl-error-want-write+ Err bitreich.org 70 i- (output-wait stream Err bitreich.org 70 i- (ssl-get-fd handle) Err bitreich.org 70 i- (ssl-stream-deadline stream))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (ssl-signal-error handle func error nbytes))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (inline nonblocking-ssl-funcall)) Err bitreich.org 70 i-(defun nonblocking-ssl-funcall (stream handle func &rest args) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- (let ((nbytes Err bitreich.org 70 i- (let ((*socket* (ssl-stream-socket stream))) ;for Lisp-BIO callbacks Err bitreich.org 70 i- (apply func args)))) Err bitreich.org 70 i- (when (plusp nbytes) Err bitreich.org 70 i- (return nbytes)) Err bitreich.org 70 i- (let ((error (ssl-get-error handle nbytes))) Err bitreich.org 70 i- (case error Err bitreich.org 70 i- ((#.+ssl-error-want-read+ #.+ssl-error-want-write+) Err bitreich.org 70 i- (return nbytes)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (ssl-signal-error handle func error nbytes))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Waiting for output to be possible Err bitreich.org 70 i- Err bitreich.org 70 i-#+clozure-common-lisp Err bitreich.org 70 i-(defun milliseconds-until-deadline (deadline stream) Err bitreich.org 70 i- (let* ((now (get-internal-real-time))) Err bitreich.org 70 i- (if (> now deadline) Err bitreich.org 70 i- (error 'ccl::communication-deadline-expired :stream stream) Err bitreich.org 70 i- (values Err bitreich.org 70 i- (round (- deadline now) (/ internal-time-units-per-second 1000)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+clozure-common-lisp Err bitreich.org 70 i-(defun output-wait (stream fd deadline) Err bitreich.org 70 i- (unless deadline Err bitreich.org 70 i- (setf deadline (stream-deadline (ssl-stream-socket stream)))) Err bitreich.org 70 i- (let* ((timeout Err bitreich.org 70 i- (if deadline Err bitreich.org 70 i- (milliseconds-until-deadline deadline stream) Err bitreich.org 70 i- nil))) Err bitreich.org 70 i- (multiple-value-bind (win timedout error) Err bitreich.org 70 i- (ccl::process-output-wait fd timeout) Err bitreich.org 70 i- (unless win Err bitreich.org 70 i- (if timedout Err bitreich.org 70 i- (error 'ccl::communication-deadline-expired :stream stream) Err bitreich.org 70 i- (ccl::stream-io-error stream (- error) "write")))))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+sbcl Err bitreich.org 70 i-(defun output-wait (stream fd deadline) Err bitreich.org 70 i- (declare (ignore stream)) Err bitreich.org 70 i- (let ((timeout Err bitreich.org 70 i- ;; *deadline* is handled by wait-until-fd-usable automatically, Err bitreich.org 70 i- ;; but we need to turn a user-specified deadline into a timeout Err bitreich.org 70 i- (when deadline Err bitreich.org 70 i- (/ (- deadline (get-internal-real-time)) Err bitreich.org 70 i- internal-time-units-per-second)))) Err bitreich.org 70 i- (sb-sys:wait-until-fd-usable fd :output timeout))) Err bitreich.org 70 i- Err bitreich.org 70 i-#-(or clozure-common-lisp sbcl) Err bitreich.org 70 i-(defun output-wait (stream fd deadline) Err bitreich.org 70 i- (declare (ignore stream fd deadline)) Err bitreich.org 70 i- ;; This situation means that the lisp set our fd to non-blocking mode, Err bitreich.org 70 i- ;; and streams.lisp didn't know how to undo that. Err bitreich.org 70 i- (warn "non-blocking stream encountered unexpectedly")) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Waiting for input to be possible Err bitreich.org 70 i- Err bitreich.org 70 i-#+clozure-common-lisp Err bitreich.org 70 i-(defun input-wait (stream fd deadline) Err bitreich.org 70 i- (unless deadline Err bitreich.org 70 i- (setf deadline (stream-deadline (ssl-stream-socket stream)))) Err bitreich.org 70 i- (let* ((timeout Err bitreich.org 70 i- (if deadline Err bitreich.org 70 i- (milliseconds-until-deadline deadline stream) Err bitreich.org 70 i- nil))) Err bitreich.org 70 i- (multiple-value-bind (win timedout error) Err bitreich.org 70 i- (ccl::process-input-wait fd timeout) Err bitreich.org 70 i- (unless win Err bitreich.org 70 i- (if timedout Err bitreich.org 70 i- (error 'ccl::communication-deadline-expired :stream stream) Err bitreich.org 70 i- (ccl::stream-io-error stream (- error) "read")))))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+sbcl Err bitreich.org 70 i-(defun input-wait (stream fd deadline) Err bitreich.org 70 i- (declare (ignore stream)) Err bitreich.org 70 i- (let ((timeout Err bitreich.org 70 i- ;; *deadline* is handled by wait-until-fd-usable automatically, Err bitreich.org 70 i- ;; but we need to turn a user-specified deadline into a timeout Err bitreich.org 70 i- (when deadline Err bitreich.org 70 i- (/ (- deadline (get-internal-real-time)) Err bitreich.org 70 i- internal-time-units-per-second)))) Err bitreich.org 70 i- (sb-sys:wait-until-fd-usable fd :input timeout))) Err bitreich.org 70 i- Err bitreich.org 70 i-#-(or clozure-common-lisp sbcl) Err bitreich.org 70 i-(defun input-wait (stream fd deadline) Err bitreich.org 70 i- (declare (ignore stream fd deadline)) Err bitreich.org 70 i- ;; This situation means that the lisp set our fd to non-blocking mode, Err bitreich.org 70 i- ;; and streams.lisp didn't know how to undo that. Err bitreich.org 70 i- (warn "non-blocking stream encountered unexpectedly")) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Encrypted PEM files support Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-;; based on http://www.openssl.org/docs/ssl/SSL_CTX_set_default_passwd_cb.html Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *pem-password* "" Err bitreich.org 70 i- "The callback registered with SSL_CTX_set_default_passwd_cb Err bitreich.org 70 i-will use this value.") Err bitreich.org 70 i- Err bitreich.org 70 i-;; The callback itself Err bitreich.org 70 i-(cffi:defcallback pem-password-callback :int Err bitreich.org 70 i- ((buf :pointer) (size :int) (rwflag :int) (unused :pointer)) Err bitreich.org 70 i- (declare (ignore rwflag unused)) Err bitreich.org 70 i- (let* ((password-str (coerce *pem-password* 'base-string)) Err bitreich.org 70 i- (tmp (cffi:foreign-string-alloc password-str))) Err bitreich.org 70 i- (cffi:foreign-funcall "strncpy" Err bitreich.org 70 i- :pointer buf Err bitreich.org 70 i- :pointer tmp Err bitreich.org 70 i- :int size) Err bitreich.org 70 i- (cffi:foreign-string-free tmp) Err bitreich.org 70 i- (setf (cffi:mem-ref buf :char (1- size)) 0) Err bitreich.org 70 i- (cffi:foreign-funcall "strlen" :pointer buf :int))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; The macro to be used by other code to provide password Err bitreich.org 70 i-;; when loading PEM file. Err bitreich.org 70 i-(defmacro with-pem-password ((password) &body body) Err bitreich.org 70 i- `(let ((*pem-password* (or ,password ""))) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Initialization Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(defun init-prng (seed-byte-sequence) Err bitreich.org 70 i- (let* ((length (length seed-byte-sequence)) Err bitreich.org 70 i- (buf (cffi-sys::make-shareable-byte-vector length))) Err bitreich.org 70 i- (dotimes (i length) Err bitreich.org 70 i- (setf (elt buf i) (elt seed-byte-sequence i))) Err bitreich.org 70 i- (cffi-sys::with-pointer-to-vector-data (ptr buf) Err bitreich.org 70 i- (rand-seed ptr length)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ssl-ctx-set-session-cache-mode (ctx mode) Err bitreich.org 70 i- (ssl-ctx-ctrl ctx +SSL_CTRL_SET_SESS_CACHE_MODE+ mode (cffi:null-pointer))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun SSL-set-tlsext-host-name (ctx hostname) Err bitreich.org 70 i- (ssl-ctrl ctx 55 #|SSL_CTRL_SET_TLSEXT_HOSTNAME|# 0 #|TLSEXT_NAMETYPE_host_name|# hostname)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *locks*) Err bitreich.org 70 i-(defconstant +CRYPTO-LOCK+ 1) Err bitreich.org 70 i-(defconstant +CRYPTO-UNLOCK+ 2) Err bitreich.org 70 i-(defconstant +CRYPTO-READ+ 4) Err bitreich.org 70 i-(defconstant +CRYPTO-WRITE+ 8) Err bitreich.org 70 i- Err bitreich.org 70 i-;; zzz as of early 2011, bxthreads is totally broken on SBCL wrt. explicit Err bitreich.org 70 i-;; locking of recursive locks. with-recursive-lock works, but acquire/release Err bitreich.org 70 i-;; don't. Hence we use non-recursize locks here (but can use a recursive Err bitreich.org 70 i-;; lock for the global lock). Err bitreich.org 70 i- Err bitreich.org 70 i-(cffi:defcallback locking-callback :void Err bitreich.org 70 i- ((mode :int) Err bitreich.org 70 i- (n :int) Err bitreich.org 70 i- (file :pointer) ;; could be (file :string), but we don't use FILE, so avoid the conversion Err bitreich.org 70 i- (line :int)) Err bitreich.org 70 i- (declare (ignore file line)) Err bitreich.org 70 i- ;; (assert (logtest mode (logior +CRYPTO-READ+ +CRYPTO-WRITE+))) Err bitreich.org 70 i- (let ((lock (elt *locks* n))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((logtest mode +CRYPTO-LOCK+) Err bitreich.org 70 i- (bt:acquire-lock lock)) Err bitreich.org 70 i- ((logtest mode +CRYPTO-UNLOCK+) Err bitreich.org 70 i- (bt:release-lock lock)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (error "fell through"))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *threads* (trivial-garbage:make-weak-hash-table :weakness :key)) Err bitreich.org 70 i-(defvar *thread-counter* 0) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *global-lock* Err bitreich.org 70 i- (bordeaux-threads:make-recursive-lock "SSL initialization")) Err bitreich.org 70 i- Err bitreich.org 70 i-;; zzz BUG: On a 32-bit system and under non-trivial load, this counter Err bitreich.org 70 i-;; is likely to wrap in less than a year. Err bitreich.org 70 i-(cffi:defcallback threadid-callback :unsigned-long () Err bitreich.org 70 i- (bordeaux-threads:with-recursive-lock-held (*global-lock*) Err bitreich.org 70 i- (let ((self (bt:current-thread))) Err bitreich.org 70 i- (or (gethash self *threads*) Err bitreich.org 70 i- (setf (gethash self *threads*) Err bitreich.org 70 i- (incf *thread-counter*)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *ssl-check-verify-p* :unspecified Err bitreich.org 70 i- "DEPRECATED. Err bitreich.org 70 i-Use the (MAKE-SSL-CLIENT-STREAM .. :VERIFY ?) to enable/disable verification. Err bitreich.org 70 i-MAKE-CONTEXT also allows to enab/disable verification.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun initialize (&key (method 'ssl-v23-method) rand-seed) Err bitreich.org 70 i- (setf *locks* (loop Err bitreich.org 70 i- repeat (crypto-num-locks) Err bitreich.org 70 i- collect (bt:make-lock))) Err bitreich.org 70 i- (crypto-set-locking-callback (cffi:callback locking-callback)) Err bitreich.org 70 i- (crypto-set-id-callback (cffi:callback threadid-callback)) Err bitreich.org 70 i- (setf *bio-lisp-method* (make-bio-lisp-method)) Err bitreich.org 70 i- (ssl-load-error-strings) Err bitreich.org 70 i- (ssl-library-init) Err bitreich.org 70 i- (when rand-seed Err bitreich.org 70 i- (init-prng rand-seed)) Err bitreich.org 70 i- (setf *ssl-check-verify-p* :unspecified) Err bitreich.org 70 i- (setf *ssl-global-method* (funcall method)) Err bitreich.org 70 i- (setf *ssl-global-context* (ssl-ctx-new *ssl-global-method*)) Err bitreich.org 70 i- (unless (eql 1 (ssl-ctx-set-default-verify-paths *ssl-global-context*)) Err bitreich.org 70 i- (error "ssl-ctx-set-default-verify-paths failed.")) Err bitreich.org 70 i- (ssl-ctx-set-session-cache-mode *ssl-global-context* 3) Err bitreich.org 70 i- (ssl-ctx-set-default-passwd-cb *ssl-global-context* Err bitreich.org 70 i- (cffi:callback pem-password-callback)) Err bitreich.org 70 i- (ssl-ctx-set-tmp-rsa-callback *ssl-global-context* Err bitreich.org 70 i- (cffi:callback tmp-rsa-callback))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ensure-initialized (&key (method 'ssl-v23-method) (rand-seed nil)) Err bitreich.org 70 i- "In most cases you do *not* need to call this function, because it Err bitreich.org 70 i-is called automatically by all other functions. The only reason to Err bitreich.org 70 i-call it explicitly is to supply the RAND-SEED parameter. In this case Err bitreich.org 70 i-do it before calling any other functions. Err bitreich.org 70 i- Err bitreich.org 70 i-Just leave the default value for the METHOD parameter. Err bitreich.org 70 i- Err bitreich.org 70 i-RAND-SEED is an octet sequence to initialize OpenSSL random number generator. Err bitreich.org 70 i-On many platforms, including Linux and Windows, it may be leaved NIL (default), Err bitreich.org 70 i-because OpenSSL initializes the random number generator from OS specific service. Err bitreich.org 70 i-But for example on Solaris it may be necessary to supply this value. Err bitreich.org 70 i-The minimum length required by OpenSSL is 128 bits. Err bitreich.org 70 i-See ttp://www.openssl.org/support/faq.html#USER1 for details. Err bitreich.org 70 i- Err bitreich.org 70 i-Hint: do not use Common Lisp RANDOM function to generate the RAND-SEED, Err bitreich.org 70 i-because the function usually returns predictable values." Err bitreich.org 70 i- #+lispworks Err bitreich.org 70 i- (check-cl+ssl-symbols) Err bitreich.org 70 i- (bordeaux-threads:with-recursive-lock-held (*global-lock*) Err bitreich.org 70 i- (unless (ssl-initialized-p) Err bitreich.org 70 i- (initialize :method method :rand-seed rand-seed)) Err bitreich.org 70 i- (unless *bio-lisp-method* Err bitreich.org 70 i- (setf *bio-lisp-method* (make-bio-lisp-method))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun use-certificate-chain-file (certificate-chain-file) Err bitreich.org 70 i- "Loads a PEM encoded certificate chain file CERTIFICATE-CHAIN-FILE Err bitreich.org 70 i-and adds the chain to global context. The certificates must be sorted Err bitreich.org 70 i-starting with the subject's certificate (actual client or server certificate), Err bitreich.org 70 i-followed by intermediate CA certificates if applicable, and ending at Err bitreich.org 70 i-the highest level (root) CA. Note: the RELOAD function clears the global Err bitreich.org 70 i-context and in particular the loaded certificate chain." Err bitreich.org 70 i- (ensure-initialized) Err bitreich.org 70 i- (ssl-ctx-use-certificate-chain-file *ssl-global-context* certificate-chain-file)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun reload () Err bitreich.org 70 i- (if *ssl-global-context* Err bitreich.org 70 i- (ssl-ctx-free *ssl-global-context*)) Err bitreich.org 70 i- (unless (member :cl+ssl-foreign-libs-already-loaded Err bitreich.org 70 i- *features*) Err bitreich.org 70 i- (cffi:use-foreign-library libcrypto) Err bitreich.org 70 i- (cffi:load-foreign-library 'libssl) Err bitreich.org 70 i- (cffi:load-foreign-library 'libeay32)) Err bitreich.org 70 i- (setf *ssl-global-context* nil) Err bitreich.org 70 i- (setf *ssl-global-method* nil) Err bitreich.org 70 i- (setf *tmp-rsa-key-512* nil) Err bitreich.org 70 i- (setf *tmp-rsa-key-1024* nil)) Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/src/package.lisp b/3rdparties/software/cl+ssl-20190202-git/src/package.lisp /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/src/package.lisp.gph bitreich.org 70 i@@ -1,66 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: LISP; Syntax: COMMON-LISP; indent-tabs-mode: nil; coding: utf-8; show-trailing-whitespace: t -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2001, 2003 Eric Marsden Err bitreich.org 70 i-;;; Copyright (C) 2005 David Lichteblau Err bitreich.org 70 i-;;; "the conditions and ENSURE-SSL-FUNCALL are by Jochen Schmidt." Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; See LICENSE for details. Err bitreich.org 70 i- Err bitreich.org 70 i-#+xcvb (module (:depends-on ((:when (:featurep :sbcl) (:require :sb-posix))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl-user) Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage :cl+ssl Err bitreich.org 70 i- (:use :common-lisp :trivial-gray-streams) Err bitreich.org 70 i- (:export #:*default-cipher-list* Err bitreich.org 70 i- #:ensure-initialized Err bitreich.org 70 i- #:reload Err bitreich.org 70 i- #:stream-fd Err bitreich.org 70 i- #:make-ssl-client-stream Err bitreich.org 70 i- #:*make-ssl-client-stream-verify-default* Err bitreich.org 70 i- #:make-ssl-server-stream Err bitreich.org 70 i- #:use-certificate-chain-file Err bitreich.org 70 i- #:random-bytes Err bitreich.org 70 i- ;; DEPRECATED. Err bitreich.org 70 i- ;; Use the (MAKE-SSL-CLIENT-STREAM .. :VERIFY ?) to enable/disable verification. Err bitreich.org 70 i- ;; MAKE-CONTEXT also allows to enab/disable verification. Err bitreich.org 70 i- #:ssl-check-verify-p Err bitreich.org 70 i- #:ssl-load-global-verify-locations Err bitreich.org 70 i- #:ssl-set-global-default-verify-paths Err bitreich.org 70 i- #:ssl-error-verify Err bitreich.org 70 i- #:ssl-error-stream Err bitreich.org 70 i- #:ssl-error-code Err bitreich.org 70 i- #:ssl-error-initialize Err bitreich.org 70 i- #:ssl-ctx-free Err bitreich.org 70 i- Err bitreich.org 70 i- #:with-pem-password Err bitreich.org 70 i- Err bitreich.org 70 i- #:+ssl-verify-none+ Err bitreich.org 70 i- #:+ssl-verify-peer+ Err bitreich.org 70 i- #:+ssl-verify-fail-if-no-peer-cert+ Err bitreich.org 70 i- #:+ssl-verify-client-once+ Err bitreich.org 70 i- Err bitreich.org 70 i- #:+ssl-op-no-sslv2+ Err bitreich.org 70 i- #:+ssl-op-no-sslv3+ Err bitreich.org 70 i- #:+ssl-op-no-tlsv1+ Err bitreich.org 70 i- #:+ssl-op-no-tlsv1-1+ Err bitreich.org 70 i- #:+ssl-op-no-tlsv1-2+ Err bitreich.org 70 i- Err bitreich.org 70 i- #:+ssl-sess-cache-off+ Err bitreich.org 70 i- #:+ssl-sess-cache-client+ Err bitreich.org 70 i- #:+ssl-sess-cache-server+ Err bitreich.org 70 i- #:+ssl-sess-cache-both+ Err bitreich.org 70 i- #:+ssl-sess-cache-no-auto-clear+ Err bitreich.org 70 i- #:+ssl-sess-cache-no-internal-lookup+ Err bitreich.org 70 i- #:+ssl-sess-cache-no-internal-store+ Err bitreich.org 70 i- #:+ssl-sess-cache-no-internal+ Err bitreich.org 70 i- Err bitreich.org 70 i- #:make-context Err bitreich.org 70 i- #:with-global-context Err bitreich.org 70 i- Err bitreich.org 70 i- ;; x509 stuff Err bitreich.org 70 i- #:decode-certificate-from-file Err bitreich.org 70 i- #:decode-certificate Err bitreich.org 70 i- Err bitreich.org 70 i- ;; hostname-verification Err bitreich.org 70 i- #:verify-hostname)) Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/src/random.lisp b/3rdparties/software/cl+ssl-20190202-git/src/random.lisp /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/src/random.lisp.gph bitreich.org 70 i@@ -1,33 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: LISP; Syntax: COMMON-LISP; indent-tabs-mode: nil; coding: utf-8; show-trailing-whitespace: t -*- Err bitreich.org 70 i- Err bitreich.org 70 i-#+xcvb Err bitreich.org 70 i-(module Err bitreich.org 70 i- (:depends-on ("package" "conditions" "ffi" Err bitreich.org 70 i- (:cond ((:featurep :clisp) "ffi-buffer-clisp") Err bitreich.org 70 i- (t "ffi-buffer")) Err bitreich.org 70 i- "ffi-buffer-all"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl+ssl) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun random-bytes (count) Err bitreich.org 70 i- "Generates COUNT cryptographically strong pseudo-random bytes. Returns Err bitreich.org 70 i-the bytes as a SIMPLE-ARRAY with ELEMENT-TYPE '(UNSIGNED-BYTE 8). Signals Err bitreich.org 70 i-an ERROR in case of problems, for example when the OpenSSL random number Err bitreich.org 70 i-generator has not been seeded with enough randomness to ensure an Err bitreich.org 70 i-unpredictable byte sequence." Err bitreich.org 70 i- (let* ((result (make-array count :element-type '(unsigned-byte 8))) Err bitreich.org 70 i- (buf (make-buffer count)) Err bitreich.org 70 i- (ret (with-pointer-to-vector-data (ptr buf) Err bitreich.org 70 i- (rand-bytes ptr count)))) Err bitreich.org 70 i- (when (/= 1 ret) Err bitreich.org 70 i- (error "RANDOM-BYTES failed: error reported by the OpenSSL RAND_bytes function. ~A." Err bitreich.org 70 i- (format-ssl-error-queue nil (read-ssl-error-queue)))) Err bitreich.org 70 i- (s/b-replace result buf))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; TODO: Should we define random-specific constants and condition classes for Err bitreich.org 70 i-;; RAND_F_RAND_GET_RAND_METHOD, RAND_F_SSLEAY_RAND_BYTES, RAND_R_PRNG_NOT_SEEDED Err bitreich.org 70 i-;; (defined in the rand.h file of the OpenSSl sources)? Err bitreich.org 70 i-;; Where to place these constants/condtitions, here or in the conditions.lisp? Err bitreich.org 70 i-;; On the other hand, those constants are just numbers defined for C, Err bitreich.org 70 i-;; for now we jsut report human readable strings, without possibility Err bitreich.org 70 i-;; to distinguish these error causes programmatically. Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/src/reload.lisp b/3rdparties/software/cl+ssl-20190202-git/src/reload.lisp /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/src/reload.lisp.gph bitreich.org 70 i@@ -1,77 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: LISP; Syntax: COMMON-LISP; indent-tabs-mode: nil; coding: utf-8; show-trailing-whitespace: t -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2001, 2003 Eric Marsden Err bitreich.org 70 i-;;; Copyright (C) 2005 David Lichteblau Err bitreich.org 70 i-;;; "the conditions and ENSURE-SSL-FUNCALL are by Jochen Schmidt." Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; See LICENSE for details. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; We do this in an extra file so that it happens Err bitreich.org 70 i-;;; - after the asd file has been loaded, so that users can Err bitreich.org 70 i-;;; customize *libssl-pathname* between loading the asd and LOAD-OPing Err bitreich.org 70 i-;;; the actual sources Err bitreich.org 70 i-;;; - before ssl.lisp is loaded, which needs the library at compilation Err bitreich.org 70 i-;;; time on some implemenations Err bitreich.org 70 i-;;; - but not every time ffi.lisp is re-loaded as would happen if we Err bitreich.org 70 i-;;; put this directly into ffi.lisp Err bitreich.org 70 i- Err bitreich.org 70 i-#+xcvb (module (:depends-on ("package"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl+ssl) Err bitreich.org 70 i- Err bitreich.org 70 i-(cffi:define-foreign-library libcrypto Err bitreich.org 70 i- (:openbsd "libcrypto.so") Err bitreich.org 70 i- (:darwin (:or "/opt/local/lib/libcrypto.dylib" ;; MacPorts Err bitreich.org 70 i- "/sw/lib/libcrypto.dylib" ;; Fink Err bitreich.org 70 i- "/usr/local/opt/openssl/lib/libcrypto.dylib" ;; Homebrew Err bitreich.org 70 i- "/usr/local/lib/libcrypto.dylib" ;; personalized install Err bitreich.org 70 i- "libcrypto.dylib" ;; default system libcrypto, which may have insufficient crypto Err bitreich.org 70 i- "/usr/lib/libcrypto.dylib"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(cffi:define-foreign-library libssl Err bitreich.org 70 i- (:windows (:or "libssl32.dll" "ssleay32.dll")) Err bitreich.org 70 i- ;; The default OS-X libssl seems have had insufficient crypto algos Err bitreich.org 70 i- ;; (missing TLSv1_[1,2]_XXX methods, Err bitreich.org 70 i- ;; see https://github.com/cl-plus-ssl/cl-plus-ssl/issues/56) Err bitreich.org 70 i- ;; so first try to load possible custom installations of libssl Err bitreich.org 70 i- (:darwin (:or "/opt/local/lib/libssl.dylib" ;; MacPorts Err bitreich.org 70 i- "/sw/lib/libssl.dylib" ;; Fink Err bitreich.org 70 i- "/usr/local/opt/openssl/lib/libssl.dylib" ;; Homebrew Err bitreich.org 70 i- "/usr/local/lib/libssl.dylib" ;; personalized install Err bitreich.org 70 i- "libssl.dylib" ;; default system libssl, which may have insufficient crypto Err bitreich.org 70 i- "/usr/lib/libssl.dylib")) Err bitreich.org 70 i- (:solaris (:or "/lib/64/libssl.so" Err bitreich.org 70 i- "libssl.so.0.9.8" "libssl.so" "libssl.so.4")) Err bitreich.org 70 i- ;; Unlike some other systems, OpenBSD linker, Err bitreich.org 70 i- ;; when passed library name without versions at the end, Err bitreich.org 70 i- ;; will locate the library with highest macro.minor version, Err bitreich.org 70 i- ;; so we can just use just "libssl.so". Err bitreich.org 70 i- ;; More info at https://github.com/cl-plus-ssl/cl-plus-ssl/pull/2. Err bitreich.org 70 i- (:openbsd "libssl.so") Err bitreich.org 70 i- ((and :unix (not :cygwin)) (:or "libssl.so.1.0.2m" Err bitreich.org 70 i- "libssl.so.1.0.2k" Err bitreich.org 70 i- "libssl.so.1.0.2" Err bitreich.org 70 i- "libssl.so.1.0.1l" Err bitreich.org 70 i- "libssl.so.1.0.1j" Err bitreich.org 70 i- "libssl.so.1.0.1f" Err bitreich.org 70 i- "libssl.so.1.0.1e" Err bitreich.org 70 i- "libssl.so.1.0.1" Err bitreich.org 70 i- "libssl.so.1.0.0q" Err bitreich.org 70 i- "libssl.so.1.0.0" Err bitreich.org 70 i- "libssl.so.0.9.8ze" Err bitreich.org 70 i- "libssl.so.0.9.8" Err bitreich.org 70 i- "libssl.so.10" Err bitreich.org 70 i- "libssl.so.4" Err bitreich.org 70 i- "libssl.so")) Err bitreich.org 70 i- (:cygwin "cygssl-1.0.0.dll") Err bitreich.org 70 i- (t (:default "libssl3"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(cffi:define-foreign-library libeay32 Err bitreich.org 70 i- (:windows "libeay32.dll")) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(unless (member :cl+ssl-foreign-libs-already-loaded Err bitreich.org 70 i- *features*) Err bitreich.org 70 i- (cffi:use-foreign-library libcrypto) Err bitreich.org 70 i- (cffi:use-foreign-library libssl) Err bitreich.org 70 i- (cffi:use-foreign-library libeay32)) Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/src/streams.lisp b/3rdparties/software/cl+ssl-20190202-git/src/streams.lisp /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/src/streams.lisp.gph bitreich.org 70 i@@ -1,480 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: LISP; Syntax: COMMON-LISP; indent-tabs-mode: nil; coding: utf-8; show-trailing-whitespace: t -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2001, 2003 Eric Marsden Err bitreich.org 70 i-;;; Copyright (C) 2005 David Lichteblau Err bitreich.org 70 i-;;; Copyright (C) 2007 Pixel // pinterface Err bitreich.org 70 i-;;; "the conditions and ENSURE-SSL-FUNCALL are by Jochen Schmidt." Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; See LICENSE for details. Err bitreich.org 70 i- Err bitreich.org 70 i-#+xcvb Err bitreich.org 70 i-(module Err bitreich.org 70 i- (:depends-on ("package" "conditions" "ffi" Err bitreich.org 70 i- (:cond ((:featurep :clisp) "ffi-buffer-clisp") Err bitreich.org 70 i- (t "ffi-buffer")) Err bitreich.org 70 i- "ffi-buffer-all"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:compile-toplevel) Err bitreich.org 70 i- (declaim Err bitreich.org 70 i- (optimize (speed 3) (space 1) (safety 1) (debug 0) (compilation-speed 0)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl+ssl) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Default Cipher List Err bitreich.org 70 i-(defvar *default-cipher-list* "ALL") Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass ssl-stream Err bitreich.org 70 i- (trivial-gray-stream-mixin Err bitreich.org 70 i- fundamental-binary-input-stream Err bitreich.org 70 i- fundamental-binary-output-stream) Err bitreich.org 70 i- ((ssl-stream-socket Err bitreich.org 70 i- :initarg :socket Err bitreich.org 70 i- :accessor ssl-stream-socket) Err bitreich.org 70 i- (close-callback Err bitreich.org 70 i- :initarg :close-callback Err bitreich.org 70 i- :accessor ssl-close-callback) Err bitreich.org 70 i- (handle Err bitreich.org 70 i- :initform nil Err bitreich.org 70 i- :accessor ssl-stream-handle) Err bitreich.org 70 i- (deadline Err bitreich.org 70 i- :initform nil Err bitreich.org 70 i- :initarg :deadline Err bitreich.org 70 i- :accessor ssl-stream-deadline) Err bitreich.org 70 i- (output-buffer Err bitreich.org 70 i- :initform (make-buffer +initial-buffer-size+) Err bitreich.org 70 i- :accessor ssl-stream-output-buffer) Err bitreich.org 70 i- (output-pointer Err bitreich.org 70 i- :initform 0 Err bitreich.org 70 i- :accessor ssl-stream-output-pointer) Err bitreich.org 70 i- (input-buffer Err bitreich.org 70 i- :initform (make-buffer +initial-buffer-size+) Err bitreich.org 70 i- :accessor ssl-stream-input-buffer) Err bitreich.org 70 i- (peeked-byte Err bitreich.org 70 i- :initform nil Err bitreich.org 70 i- :accessor ssl-stream-peeked-byte))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod print-object ((object ssl-stream) stream) Err bitreich.org 70 i- (print-unreadable-object (object stream :type t) Err bitreich.org 70 i- (format stream "for ~A" (ssl-stream-socket object)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass ssl-server-stream (ssl-stream) Err bitreich.org 70 i- ((certificate Err bitreich.org 70 i- :initarg :certificate Err bitreich.org 70 i- :accessor ssl-stream-certificate) Err bitreich.org 70 i- (key Err bitreich.org 70 i- :initarg :key Err bitreich.org 70 i- :accessor ssl-stream-key))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-element-type ((stream ssl-stream)) Err bitreich.org 70 i- '(unsigned-byte 8)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod close ((stream ssl-stream) &key abort) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((ssl-stream-handle stream) Err bitreich.org 70 i- (unless abort Err bitreich.org 70 i- (force-output stream)) Err bitreich.org 70 i- (ssl-free (ssl-stream-handle stream)) Err bitreich.org 70 i- (setf (ssl-stream-handle stream) nil) Err bitreich.org 70 i- (when (streamp (ssl-stream-socket stream)) Err bitreich.org 70 i- (close (ssl-stream-socket stream))) Err bitreich.org 70 i- (when (ssl-close-callback stream) Err bitreich.org 70 i- (funcall (ssl-close-callback stream))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- (t Err bitreich.org 70 i- nil))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod open-stream-p ((stream ssl-stream)) Err bitreich.org 70 i- (and (ssl-stream-handle stream) t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-listen ((stream ssl-stream)) Err bitreich.org 70 i- (or (ssl-stream-peeked-byte stream) Err bitreich.org 70 i- (setf (ssl-stream-peeked-byte stream) Err bitreich.org 70 i- (let* ((buf (ssl-stream-input-buffer stream)) Err bitreich.org 70 i- (handle (ssl-stream-handle stream)) Err bitreich.org 70 i- (*blockp* nil) ;; for the Lisp-BIO Err bitreich.org 70 i- (n (with-pointer-to-vector-data (ptr buf) Err bitreich.org 70 i- (nonblocking-ssl-funcall Err bitreich.org 70 i- stream handle #'ssl-read handle ptr 1)))) Err bitreich.org 70 i- (and (> n 0) (buffer-elt buf 0)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-read-byte ((stream ssl-stream)) Err bitreich.org 70 i- (or (prog1 Err bitreich.org 70 i- (ssl-stream-peeked-byte stream) Err bitreich.org 70 i- (setf (ssl-stream-peeked-byte stream) nil)) Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (let ((buf (ssl-stream-input-buffer stream)) Err bitreich.org 70 i- (handle (ssl-stream-handle stream))) Err bitreich.org 70 i- (with-pointer-to-vector-data (ptr buf) Err bitreich.org 70 i- (ensure-ssl-funcall Err bitreich.org 70 i- stream handle #'ssl-read handle ptr 1)) Err bitreich.org 70 i- (buffer-elt buf 0)) Err bitreich.org 70 i- (ssl-error-zero-return () ;SSL_read returns 0 on end-of-file Err bitreich.org 70 i- :eof)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-read-sequence ((stream ssl-stream) seq start end &key) Err bitreich.org 70 i- (when (and (< start end) (ssl-stream-peeked-byte stream)) Err bitreich.org 70 i- (setf (elt seq start) (ssl-stream-peeked-byte stream)) Err bitreich.org 70 i- (setf (ssl-stream-peeked-byte stream) nil) Err bitreich.org 70 i- (incf start)) Err bitreich.org 70 i- (let ((buf (ssl-stream-input-buffer stream)) Err bitreich.org 70 i- (handle (ssl-stream-handle stream))) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- for length = (min (- end start) (buffer-length buf)) Err bitreich.org 70 i- while (plusp length) Err bitreich.org 70 i- do Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (let ((read-bytes Err bitreich.org 70 i- (with-pointer-to-vector-data (ptr buf) Err bitreich.org 70 i- (ensure-ssl-funcall Err bitreich.org 70 i- stream handle #'ssl-read handle ptr length)))) Err bitreich.org 70 i- (s/b-replace seq buf :start1 start :end1 (+ start read-bytes)) Err bitreich.org 70 i- (incf start read-bytes)) Err bitreich.org 70 i- (ssl-error-zero-return () ;SSL_read returns 0 on end-of-file Err bitreich.org 70 i- (return)))) Err bitreich.org 70 i- ;; fixme: kein out-of-file wenn (zerop start)? Err bitreich.org 70 i- start)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-write-byte ((stream ssl-stream) b) Err bitreich.org 70 i- (let ((buf (ssl-stream-output-buffer stream))) Err bitreich.org 70 i- (when (eql (buffer-length buf) (ssl-stream-output-pointer stream)) Err bitreich.org 70 i- (force-output stream)) Err bitreich.org 70 i- (setf (buffer-elt buf (ssl-stream-output-pointer stream)) b) Err bitreich.org 70 i- (incf (ssl-stream-output-pointer stream))) Err bitreich.org 70 i- b) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-write-sequence ((stream ssl-stream) seq start end &key) Err bitreich.org 70 i- (let ((buf (ssl-stream-output-buffer stream))) Err bitreich.org 70 i- (when (> (+ (- end start) (ssl-stream-output-pointer stream)) (buffer-length buf)) Err bitreich.org 70 i- ;; not enough space left? flush buffer. Err bitreich.org 70 i- (force-output stream) Err bitreich.org 70 i- ;; still doesn't fit? Err bitreich.org 70 i- (while (> (- end start) (buffer-length buf)) Err bitreich.org 70 i- (b/s-replace buf seq :start2 start) Err bitreich.org 70 i- (incf start (buffer-length buf)) Err bitreich.org 70 i- (setf (ssl-stream-output-pointer stream) (buffer-length buf)) Err bitreich.org 70 i- (force-output stream))) Err bitreich.org 70 i- (b/s-replace buf seq Err bitreich.org 70 i- :start1 (ssl-stream-output-pointer stream) Err bitreich.org 70 i- :start2 start Err bitreich.org 70 i- :end2 end) Err bitreich.org 70 i- (incf (ssl-stream-output-pointer stream) (- end start))) Err bitreich.org 70 i- seq) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-finish-output ((stream ssl-stream)) Err bitreich.org 70 i- (stream-force-output stream)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-force-output ((stream ssl-stream)) Err bitreich.org 70 i- (let ((buf (ssl-stream-output-buffer stream)) Err bitreich.org 70 i- (fill-ptr (ssl-stream-output-pointer stream)) Err bitreich.org 70 i- (handle (ssl-stream-handle stream))) Err bitreich.org 70 i- (when (plusp fill-ptr) Err bitreich.org 70 i- (unless handle Err bitreich.org 70 i- (error "output operation on closed SSL stream")) Err bitreich.org 70 i- (with-pointer-to-vector-data (ptr buf) Err bitreich.org 70 i- (ensure-ssl-funcall stream handle #'ssl-write handle ptr fill-ptr)) Err bitreich.org 70 i- (setf (ssl-stream-output-pointer stream) 0)))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and clozure-common-lisp (not windows)) Err bitreich.org 70 i-(defun install-nonblock-flag (fd) Err bitreich.org 70 i- (ccl::fd-set-flags fd (logior (ccl::fd-get-flags fd) Err bitreich.org 70 i- #.(read-from-string "#$O_NONBLOCK")))) Err bitreich.org 70 i- ;; read-from-string is necessary because Err bitreich.org 70 i- ;; CLISP and perhaps other Lisps are confused Err bitreich.org 70 i- ;; by #$, signaling"undefined dispatch character $", Err bitreich.org 70 i- ;; even though the defun in conditionalized by Err bitreich.org 70 i- ;; #+clozure-common-lisp Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and sbcl (not win32)) Err bitreich.org 70 i-(defun install-nonblock-flag (fd) Err bitreich.org 70 i- (sb-posix:fcntl fd Err bitreich.org 70 i- sb-posix::f-setfl Err bitreich.org 70 i- (logior (sb-posix:fcntl fd sb-posix::f-getfl) Err bitreich.org 70 i- sb-posix::o-nonblock))) Err bitreich.org 70 i- Err bitreich.org 70 i-#-(or (and clozure-common-lisp (not windows)) sbcl) Err bitreich.org 70 i-(defun install-nonblock-flag (fd) Err bitreich.org 70 i- (declare (ignore fd))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and sbcl win32) Err bitreich.org 70 i-(defun install-nonblock-flag (fd) Err bitreich.org 70 i- (when (boundp 'sockint::fionbio) Err bitreich.org 70 i- (sockint::ioctl fd sockint::fionbio 1))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; interface functions Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(defun install-handle-and-bio (stream handle socket unwrap-stream-p) Err bitreich.org 70 i- (setf (ssl-stream-handle stream) handle) Err bitreich.org 70 i- (when unwrap-stream-p Err bitreich.org 70 i- (let ((fd (stream-fd socket))) Err bitreich.org 70 i- (when fd Err bitreich.org 70 i- (setf socket fd)))) Err bitreich.org 70 i- (etypecase socket Err bitreich.org 70 i- (integer Err bitreich.org 70 i- (install-nonblock-flag socket) Err bitreich.org 70 i- (ssl-set-fd handle socket)) Err bitreich.org 70 i- (stream Err bitreich.org 70 i- (ssl-set-bio handle (bio-new-lisp) (bio-new-lisp)))) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; The below call setting +SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER+ mode Err bitreich.org 70 i- ;; existed since commit 5bd5225. Err bitreich.org 70 i- ;; It is implemented wrong - ssl-ctx-ctrl expects Err bitreich.org 70 i- ;; a context as the first parameter, not handle. Err bitreich.org 70 i- ;; It was lucky to not crush on Linux and Windows, Err bitreich.org 70 i- ;; untill crash was detedcted on OpenBSD + LibreSSL. Err bitreich.org 70 i- ;; See https://github.com/cl-plus-ssl/cl-plus-ssl/pull/42. Err bitreich.org 70 i- ;; We keep this code commented but not removed because Err bitreich.org 70 i- ;; we don't know what David Lichteblau meant when Err bitreich.org 70 i- ;; added this - maybe he has some idea? Err bitreich.org 70 i- ;; (Although modifying global context is a bad Err bitreich.org 70 i- ;; thing to do for install-handle-and-bio function, Err bitreich.org 70 i- ;; also we don't see a need for movable buffer - Err bitreich.org 70 i- ;; we don't repeat calls to ssl functions with Err bitreich.org 70 i- ;; moved buffer). Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; (ssl-ctx-ctrl handle Err bitreich.org 70 i- ;; +SSL_CTRL_MODE+ Err bitreich.org 70 i- ;; +SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER+ Err bitreich.org 70 i- ;; (cffi:null-pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i- socket) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun install-key-and-cert (handle key certificate) Err bitreich.org 70 i- (when key Err bitreich.org 70 i- (unless (eql 1 (ssl-use-rsa-privatekey-file handle Err bitreich.org 70 i- key Err bitreich.org 70 i- +ssl-filetype-pem+)) Err bitreich.org 70 i- (error 'ssl-error-initialize :reason (format nil "Can't load RSA private key file ~A" key)))) Err bitreich.org 70 i- (when certificate Err bitreich.org 70 i- (unless (eql 1 (ssl-use-certificate-file handle Err bitreich.org 70 i- certificate Err bitreich.org 70 i- +ssl-filetype-pem+)) Err bitreich.org 70 i- (error 'ssl-error-initialize Err bitreich.org 70 i- :reason (format nil "Can't load certificate ~A" certificate))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun x509-certificate-names (x509-certificate) Err bitreich.org 70 i- (unless (cffi:null-pointer-p x509-certificate) Err bitreich.org 70 i- (cffi:with-foreign-pointer (buf 1024) Err bitreich.org 70 i- (let ((issuer-name (x509-get-issuer-name x509-certificate)) Err bitreich.org 70 i- (subject-name (x509-get-subject-name x509-certificate))) Err bitreich.org 70 i- (values Err bitreich.org 70 i- (unless (cffi:null-pointer-p issuer-name) Err bitreich.org 70 i- (x509-name-oneline issuer-name buf 1024) Err bitreich.org 70 i- (cffi:foreign-string-to-lisp buf)) Err bitreich.org 70 i- (unless (cffi:null-pointer-p subject-name) Err bitreich.org 70 i- (x509-name-oneline subject-name buf 1024) Err bitreich.org 70 i- (cffi:foreign-string-to-lisp buf))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod ssl-stream-handle ((stream flexi-streams:flexi-stream)) Err bitreich.org 70 i- (ssl-stream-handle (flexi-streams:flexi-stream-stream stream))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ssl-stream-x509-certificate (ssl-stream) Err bitreich.org 70 i- (ssl-get-peer-certificate (ssl-stream-handle ssl-stream))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ssl-load-global-verify-locations (&rest pathnames) Err bitreich.org 70 i- "PATHNAMES is a list of pathnames to PEM files containing server and CA certificates. Err bitreich.org 70 i-Install these certificates to use for verifying on all SSL connections. Err bitreich.org 70 i-After RELOAD, you need to call this again." Err bitreich.org 70 i- (ensure-initialized) Err bitreich.org 70 i- (dolist (path pathnames) Err bitreich.org 70 i- (let ((namestring (namestring (truename path)))) Err bitreich.org 70 i- (cffi:with-foreign-strings ((cafile namestring)) Err bitreich.org 70 i- (unless (eql 1 (ssl-ctx-load-verify-locations Err bitreich.org 70 i- *ssl-global-context* Err bitreich.org 70 i- cafile Err bitreich.org 70 i- (cffi:null-pointer))) Err bitreich.org 70 i- (error "ssl-ctx-load-verify-locations failed.")))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ssl-set-global-default-verify-paths () Err bitreich.org 70 i- "Load the system default verification certificates. Err bitreich.org 70 i-After RELOAD, you need to call this again." Err bitreich.org 70 i- (ensure-initialized) Err bitreich.org 70 i- (unless (eql 1 (ssl-ctx-set-default-verify-paths *ssl-global-context*)) Err bitreich.org 70 i- (error "ssl-ctx-set-default-verify-paths failed."))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ssl-check-verify-p () Err bitreich.org 70 i- "DEPRECATED. Use the (MAKE-SSL-CLIENT-STREAM .. :VERIFY ?) to enable/disable verification. Err bitreich.org 70 i-MAKE-CONTEXT also allows to enab/disable verification. Err bitreich.org 70 i- Err bitreich.org 70 i-Return true if SSL connections will error if the certificate doesn't verify." Err bitreich.org 70 i- (and *ssl-check-verify-p* (not (eq *ssl-check-verify-p* :unspecified)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun (setf ssl-check-verify-p) (check-verify-p) Err bitreich.org 70 i- "DEPRECATED. Use the (MAKE-SSL-CLIENT-STREAM .. :VERIFY ?) to enable/disable verification. Err bitreich.org 70 i-MAKE-CONTEXT also allows to enab/disable verification. Err bitreich.org 70 i- Err bitreich.org 70 i-If CHECK-VERIFY-P is true, signal connection errors if the server certificate doesn't verify." Err bitreich.org 70 i- (setf *ssl-check-verify-p* (not (null check-verify-p)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ssl-verify-init (&key Err bitreich.org 70 i- (verify-depth nil) Err bitreich.org 70 i- (verify-locations nil)) Err bitreich.org 70 i-"DEPRECATED. Err bitreich.org 70 i-Use the (MAKE-SSL-CLIENT-STREAM .. :VERIFY ?) to enable/disable verification. Err bitreich.org 70 i-Use (MAKE-CONTEXT ... :VERIFY-LOCATION ? :VERIFY-DEPTH ?) to control the verification depth and locations. Err bitreich.org 70 i-MAKE-CONTEXT also allows to enab/disable verification." Err bitreich.org 70 i- (check-type verify-depth (or null integer)) Err bitreich.org 70 i- (ensure-initialized) Err bitreich.org 70 i- (when verify-depth Err bitreich.org 70 i- (ssl-ctx-set-verify-depth *ssl-global-context* verify-depth)) Err bitreich.org 70 i- (when verify-locations Err bitreich.org 70 i- (apply #'ssl-load-global-verify-locations verify-locations) Err bitreich.org 70 i- ;; This makes (setf (ssl-check-verify) nil) persistent Err bitreich.org 70 i- (unless (null *ssl-check-verify-p*) Err bitreich.org 70 i- (setf (ssl-check-verify-p) t)) Err bitreich.org 70 i- t)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun maybe-verify-client-stream (ssl-stream verify-mode hostname) Err bitreich.org 70 i- ;; VERIFY-MODE is one of NIL, :OPTIONAL, :REQUIRED Err bitreich.org 70 i- ;; HOSTNAME is either NIL or a string. Err bitreich.org 70 i- (when verify-mode Err bitreich.org 70 i- (let* ((handle (ssl-stream-handle ssl-stream)) Err bitreich.org 70 i- (srv-cert (ssl-get-peer-certificate handle))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (when (and (eq :required verify-mode) Err bitreich.org 70 i- (cffi:null-pointer-p srv-cert)) Err bitreich.org 70 i- (error 'server-certificate-missing Err bitreich.org 70 i- :format-control "The server didn't present a certificate.")) Err bitreich.org 70 i- (let ((err (ssl-get-verify-result handle))) Err bitreich.org 70 i- (unless (eql err 0) Err bitreich.org 70 i- (error 'ssl-error-verify :stream ssl-stream :error-code err))) Err bitreich.org 70 i- (when (and hostname Err bitreich.org 70 i- (not (cffi:null-pointer-p srv-cert)) Err bitreich.org 70 i- ;; Beware of the unusual protocol of verify-hostname: Err bitreich.org 70 i- ;; it returns the verification result as true / false, Err bitreich.org 70 i- ;; but also signals error for many verification failures. Err bitreich.org 70 i- ;; TODO: refactor verify-hostname to simplify this protocol. Err bitreich.org 70 i- (not (verify-hostname srv-cert hostname))) Err bitreich.org 70 i- (error 'ssl-unable-to-match-host-name :hostname hostname)))) Err bitreich.org 70 i- (unless (cffi:null-pointer-p srv-cert) Err bitreich.org 70 i- (x509-free srv-cert))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun handle-external-format (stream ef) Err bitreich.org 70 i- (if ef Err bitreich.org 70 i- (flexi-streams:make-flexi-stream stream :external-format ef) Err bitreich.org 70 i- stream)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-new-ssl ((var) &body body) Err bitreich.org 70 i- (alexandria:with-gensyms (ssl) Err bitreich.org 70 i- `(let* ((,ssl (ssl-new *ssl-global-context*)) Err bitreich.org 70 i- (,var ,ssl)) Err bitreich.org 70 i- (when (cffi:null-pointer-p ,ssl) Err bitreich.org 70 i- (error 'ssl-error-call :message "Unable to create SSL structure" :queue (read-ssl-error-queue))) Err bitreich.org 70 i- (handler-bind ((error (lambda (_) Err bitreich.org 70 i- (declare (ignore _)) Err bitreich.org 70 i- (ssl-free ,ssl)))) Err bitreich.org 70 i- ,@body)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *make-ssl-client-stream-verify-default* Err bitreich.org 70 i- (if (member :windows *features*) ; by trivial-features Err bitreich.org 70 i- ;; On Windows we can't yet initizlise context with Err bitreich.org 70 i- ;; trusted certifying authorities from system configuration. Err bitreich.org 70 i- ;; ssl-ctx-set-default-verify-paths only helps Err bitreich.org 70 i- ;; on Unix-like platforms. Err bitreich.org 70 i- ;; See https://github.com/cl-plus-ssl/cl-plus-ssl/issues/54. Err bitreich.org 70 i- nil Err bitreich.org 70 i- :required) Err bitreich.org 70 i- "Helps to mitigate the change in default behaviour of Err bitreich.org 70 i-MAKE-SSL-CLIENT-STREAM - previously it worked as if :VERIFY NIL Err bitreich.org 70 i-but then :VERIFY :REQUIRED became the default on non-Windows platforms. Err bitreich.org 70 i-Change this variable if you want the previous behaviour.") Err bitreich.org 70 i- Err bitreich.org 70 i-;; fixme: free the context when errors happen in this function Err bitreich.org 70 i-(defun make-ssl-client-stream Err bitreich.org 70 i- (socket &key certificate key password (method 'ssl-v23-method) external-format Err bitreich.org 70 i- close-callback (unwrap-stream-p t) Err bitreich.org 70 i- (cipher-list *default-cipher-list*) Err bitreich.org 70 i- (verify (if (ssl-check-verify-p) Err bitreich.org 70 i- :optional Err bitreich.org 70 i- *make-ssl-client-stream-verify-default*)) Err bitreich.org 70 i- hostname) Err bitreich.org 70 i- "Returns an SSL stream for the client socket descriptor SOCKET. Err bitreich.org 70 i-CERTIFICATE is the path to a file containing the PEM-encoded certificate for Err bitreich.org 70 i- your client. KEY is the path to the PEM-encoded key for the client, which Err bitreich.org 70 i-may be associated with the passphrase PASSWORD. Err bitreich.org 70 i- Err bitreich.org 70 i-VERIFY can be specified either as NIL if no check should be performed, Err bitreich.org 70 i-:OPTIONAL to verify the server's certificate if it presented one or Err bitreich.org 70 i-:REQUIRED to verify the server's certificate and fail if an invalid Err bitreich.org 70 i-or no certificate was presented. Err bitreich.org 70 i- Err bitreich.org 70 i-HOSTNAME if specified, will be sent by client during TLS negotiation, Err bitreich.org 70 i-according to the Server Name Indication (SNI) extension to the TLS. Err bitreich.org 70 i-When server handles several domain names, this extension enables the server Err bitreich.org 70 i-to choose certificate for right domain. Also the HOSTNAME is used for Err bitreich.org 70 i-hostname verification if verification is enabled by VERIFY." Err bitreich.org 70 i- (ensure-initialized :method method) Err bitreich.org 70 i- (let ((stream (make-instance 'ssl-stream Err bitreich.org 70 i- :socket socket Err bitreich.org 70 i- :close-callback close-callback))) Err bitreich.org 70 i- (with-new-ssl (handle) Err bitreich.org 70 i- (if hostname Err bitreich.org 70 i- (cffi:with-foreign-string (chostname hostname) Err bitreich.org 70 i- (ssl-set-tlsext-host-name handle chostname))) Err bitreich.org 70 i- (setf socket (install-handle-and-bio stream handle socket unwrap-stream-p)) Err bitreich.org 70 i- (ssl-set-connect-state handle) Err bitreich.org 70 i- (when (zerop (ssl-set-cipher-list handle cipher-list)) Err bitreich.org 70 i- (error 'ssl-error-initialize :reason "Can't set SSL cipher list")) Err bitreich.org 70 i- (with-pem-password (password) Err bitreich.org 70 i- (install-key-and-cert handle key certificate)) Err bitreich.org 70 i- (ensure-ssl-funcall stream handle #'ssl-connect handle) Err bitreich.org 70 i- (maybe-verify-client-stream stream verify hostname) Err bitreich.org 70 i- (handle-external-format stream external-format)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; fixme: free the context when errors happen in this function Err bitreich.org 70 i-(defun make-ssl-server-stream Err bitreich.org 70 i- (socket &key certificate key password (method 'ssl-v23-method) external-format Err bitreich.org 70 i- close-callback (unwrap-stream-p t) Err bitreich.org 70 i- (cipher-list *default-cipher-list*)) Err bitreich.org 70 i- "Returns an SSL stream for the server socket descriptor SOCKET. Err bitreich.org 70 i-CERTIFICATE is the path to a file containing the PEM-encoded certificate for Err bitreich.org 70 i- your server. KEY is the path to the PEM-encoded key for the server, which Err bitreich.org 70 i-may be associated with the passphrase PASSWORD." Err bitreich.org 70 i- (ensure-initialized :method method) Err bitreich.org 70 i- (let ((stream (make-instance 'ssl-server-stream Err bitreich.org 70 i- :socket socket Err bitreich.org 70 i- :close-callback close-callback Err bitreich.org 70 i- :certificate certificate Err bitreich.org 70 i- :key key))) Err bitreich.org 70 i- (with-new-ssl (handle) Err bitreich.org 70 i- (setf socket (install-handle-and-bio stream handle socket unwrap-stream-p)) Err bitreich.org 70 i- (ssl-set-accept-state handle) Err bitreich.org 70 i- (when (zerop (ssl-set-cipher-list handle cipher-list)) Err bitreich.org 70 i- (error 'ssl-error-initialize :reason "Can't set SSL cipher list")) Err bitreich.org 70 i- (with-pem-password (password) Err bitreich.org 70 i- (install-key-and-cert handle key certificate)) Err bitreich.org 70 i- (ensure-ssl-funcall stream handle #'ssl-accept handle) Err bitreich.org 70 i- (handle-external-format stream external-format)))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+openmcl Err bitreich.org 70 i-(defmethod stream-deadline ((stream ccl::basic-stream)) Err bitreich.org 70 i- (ccl::ioblock-deadline (ccl::stream-ioblock stream t))) Err bitreich.org 70 i-#+openmcl Err bitreich.org 70 i-(defmethod stream-deadline ((stream t)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric stream-fd (stream)) Err bitreich.org 70 i-(defmethod stream-fd (stream) stream) Err bitreich.org 70 i- Err bitreich.org 70 i-#+sbcl Err bitreich.org 70 i-(defmethod stream-fd ((stream sb-sys:fd-stream)) Err bitreich.org 70 i- (sb-sys:fd-stream-fd stream)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+cmu Err bitreich.org 70 i-(defmethod stream-fd ((stream system:fd-stream)) Err bitreich.org 70 i- (system:fd-stream-fd stream)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+openmcl Err bitreich.org 70 i-(defmethod stream-fd ((stream ccl::basic-stream)) Err bitreich.org 70 i- (ccl::ioblock-device (ccl::stream-ioblock stream t))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+clisp Err bitreich.org 70 i-(defmethod stream-fd ((stream stream)) Err bitreich.org 70 i- ;; sockets appear to be direct instances of STREAM Err bitreich.org 70 i- (ext:stream-handles stream)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+ecl Err bitreich.org 70 i-(defmethod stream-fd ((stream two-way-stream)) Err bitreich.org 70 i- (si:file-stream-fd (two-way-stream-input-stream stream))) Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/src/verify-hostname.lisp b/3rdparties/software/cl+ssl-20190202-git/src/verify-hostname.lisp /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/src/verify-hostname.lisp.gph bitreich.org 70 i@@ -1,109 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: LISP; Syntax: COMMON-LISP; indent-tabs-mode: nil; coding: utf-8; show-trailing-whitespace: t -*- Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl+ssl) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition hostname-verification-error (error) Err bitreich.org 70 i- ()) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition unable-to-match-altnames (hostname-verification-error) Err bitreich.org 70 i- ()) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition unable-to-decode-common-name (hostname-verification-error) Err bitreich.org 70 i- ()) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition unable-to-match-common-name (hostname-verification-error) Err bitreich.org 70 i- ()) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun case-insensitive-match (name hostname) Err bitreich.org 70 i- (string-equal name hostname)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun remove-trailing-dot (string) Err bitreich.org 70 i- (string-right-trim '(#\.) string)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun check-wildcard-in-leftmost-label (identifier wildcard-pos) Err bitreich.org 70 i- (alexandria:when-let ((dot-pos (position #\. identifier))) Err bitreich.org 70 i- (> dot-pos wildcard-pos))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun check-single-wildcard (identifier wildcard-pos) Err bitreich.org 70 i- (not (find #\* identifier :start (1+ wildcard-pos)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun check-two-labels-after-wildcard (after-wildcard) Err bitreich.org 70 i- ;;at least two dots(in fact labels since we remove trailing dot first) after wildcard Err bitreich.org 70 i- (alexandria:when-let ((first-dot-aw-pos (position #\. after-wildcard))) Err bitreich.org 70 i- (and (find #\. after-wildcard :start (1+ first-dot-aw-pos)) Err bitreich.org 70 i- first-dot-aw-pos))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun validate-and-parse-wildcard-identifier (identifier hostname) Err bitreich.org 70 i- (alexandria:when-let ((wildcard-pos (position #\* identifier))) Err bitreich.org 70 i- (when (and (>= (length hostname) (length identifier)) ;; wildcard should constiute at least one character Err bitreich.org 70 i- (check-wildcard-in-leftmost-label identifier wildcard-pos) Err bitreich.org 70 i- (check-single-wildcard identifier wildcard-pos)) Err bitreich.org 70 i- (let ((after-wildcard (subseq identifier (1+ wildcard-pos))) Err bitreich.org 70 i- (before-wildcard (subseq identifier 0 wildcard-pos))) Err bitreich.org 70 i- (alexandria:when-let ((first-dot-aw-pos (check-two-labels-after-wildcard after-wildcard))) Err bitreich.org 70 i- (if (and (= 0 (length before-wildcard)) ;; nothing before wildcard Err bitreich.org 70 i- (= wildcard-pos first-dot-aw-pos)) ;; i.e. dot follows * Err bitreich.org 70 i- (values t before-wildcard after-wildcard t) Err bitreich.org 70 i- (values t before-wildcard after-wildcard nil))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun wildcard-not-in-a-label (before-wildcard after-wildcard) Err bitreich.org 70 i- (let ((after-w-dot-pos (position #\. after-wildcard))) Err bitreich.org 70 i- (and Err bitreich.org 70 i- (not (search "xn--" before-wildcard)) Err bitreich.org 70 i- (not (search "xn--" (subseq after-wildcard 0 after-w-dot-pos)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun try-match-wildcard (before-wildcard after-wildcard single-char-wildcard pattern) Err bitreich.org 70 i- ;; Compare AfterW part with end of pattern with length (length AfterW) Err bitreich.org 70 i- ;; was Wildcard the only character in left-most label in identifier Err bitreich.org 70 i- ;; doesn't matter since parts after Wildcard should match unconditionally. Err bitreich.org 70 i- ;; However if Wildcard was the only character in left-most label we can't match this *.example.com and bar.foo.example.com Err bitreich.org 70 i- ;; if i'm correct if it wasn't the only character Err bitreich.org 70 i- ;; we can match like this: *o.example.com = bar.foo.example.com Err bitreich.org 70 i- ;; but this is prohibited anyway thanks to check-vildcard-in-leftmost-label Err bitreich.org 70 i- (if single-char-wildcard Err bitreich.org 70 i- (let ((pattern-except-left-most-label Err bitreich.org 70 i- (alexandria:if-let ((first-hostname-dot-post (position #\. pattern))) Err bitreich.org 70 i- (subseq pattern first-hostname-dot-post) Err bitreich.org 70 i- pattern))) Err bitreich.org 70 i- (case-insensitive-match after-wildcard pattern-except-left-most-label)) Err bitreich.org 70 i- (when (wildcard-not-in-a-label before-wildcard after-wildcard) Err bitreich.org 70 i- ;; baz*.example.net and *baz.example.net and b*z.example.net would Err bitreich.org 70 i- ;; be taken to match baz1.example.net and foobaz.example.net and Err bitreich.org 70 i- ;; buzz.example.net, respectively Err bitreich.org 70 i- (and Err bitreich.org 70 i- (case-insensitive-match before-wildcard (subseq pattern 0 (length before-wildcard))) Err bitreich.org 70 i- (case-insensitive-match after-wildcard (subseq pattern Err bitreich.org 70 i- (- (length pattern) Err bitreich.org 70 i- (length after-wildcard)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun maybe-try-match-wildcard (name hostname) Err bitreich.org 70 i- (multiple-value-bind (valid before-wildcard after-wildcard single-char-wildcard) Err bitreich.org 70 i- (validate-and-parse-wildcard-identifier name hostname) Err bitreich.org 70 i- (when valid Err bitreich.org 70 i- (try-match-wildcard before-wildcard after-wildcard single-char-wildcard hostname)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun try-match-hostname (name hostname) Err bitreich.org 70 i- (let ((name (remove-trailing-dot name)) Err bitreich.org 70 i- (hostname (remove-trailing-dot hostname))) Err bitreich.org 70 i- (or (case-insensitive-match name hostname) Err bitreich.org 70 i- (maybe-try-match-wildcard name hostname)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun try-match-hostnames (names hostname) Err bitreich.org 70 i- (loop for name in names Err bitreich.org 70 i- when (try-match-hostname name hostname) do Err bitreich.org 70 i- (return t))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun maybe-check-subject-cn (dns-names cert hostname) Err bitreich.org 70 i- (when dns-names Err bitreich.org 70 i- (error 'unable-to-match-altnames)) Err bitreich.org 70 i- ;; TODO: we are matching only first CN Err bitreich.org 70 i- (alexandria:if-let ((cn (first (certificate-subject-common-names cert)))) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (or (try-match-hostname cn hostname) Err bitreich.org 70 i- (error 'unable-to-match-common-name))) Err bitreich.org 70 i- (error 'unable-to-decode-common-name))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun verify-hostname (cert hostname) Err bitreich.org 70 i- (let* ((dns-names (certificate-dns-alt-names cert))) Err bitreich.org 70 i- (or (try-match-hostnames dns-names hostname) Err bitreich.org 70 i- (maybe-check-subject-cn dns-names cert hostname)))) Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/src/x509.lisp b/3rdparties/software/cl+ssl-20190202-git/src/x509.lisp /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/src/x509.lisp.gph bitreich.org 70 i@@ -1,224 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: LISP; Syntax: COMMON-LISP; indent-tabs-mode: nil; coding: utf-8; show-trailing-whitespace: t -*- Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl+ssl) Err bitreich.org 70 i- Err bitreich.org 70 i-#| Err bitreich.org 70 i-ASN1 string validation references: Err bitreich.org 70 i- - https://github.com/digitalbazaar/forge/blob/909e312878838f46ba6d70e90264650b05eb8bde/js/asn1.js Err bitreich.org 70 i- - http://www.obj-sys.com/asn1tutorial/node128.html Err bitreich.org 70 i- - https://github.com/deadtrickster/ssl_verify_hostname.erl/blob/master/src/ssl_verify_hostname.erl Err bitreich.org 70 i- - https://golang.org/src/encoding/asn1/asn1.go?m=text Err bitreich.org 70 i-|# Err bitreich.org 70 i-(defgeneric decode-asn1-string (asn1-string type)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun copy-bytes-to-lisp-vector (src-ptr vector count) Err bitreich.org 70 i- (declare (type (simple-array (unsigned-byte 8)) vector) Err bitreich.org 70 i- (type fixnum count) Err bitreich.org 70 i- (optimize (safety 0) (debug 0) (speed 3))) Err bitreich.org 70 i- (dotimes (i count vector) Err bitreich.org 70 i- (setf (aref vector i) (cffi:mem-aref src-ptr :unsigned-char i)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun asn1-string-bytes-vector (asn1-string) Err bitreich.org 70 i- (let* ((data (asn1-string-data asn1-string)) Err bitreich.org 70 i- (length (asn1-string-length asn1-string)) Err bitreich.org 70 i- (vector (cffi:make-shareable-byte-vector length))) Err bitreich.org 70 i- (copy-bytes-to-lisp-vector data vector length) Err bitreich.org 70 i- vector)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun asn1-iastring-char-p (byte) Err bitreich.org 70 i- (declare (type (unsigned-byte 8) byte) Err bitreich.org 70 i- (optimize (speed 3) Err bitreich.org 70 i- (debug 0) Err bitreich.org 70 i- (safety 0))) Err bitreich.org 70 i- (< byte #x80)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun asn1-iastring-p (bytes) Err bitreich.org 70 i- (declare (type (simple-array (unsigned-byte 8)) bytes) Err bitreich.org 70 i- (optimize (speed 3) Err bitreich.org 70 i- (debug 0) Err bitreich.org 70 i- (safety 0))) Err bitreich.org 70 i- (every #'asn1-iastring-char-p bytes)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod decode-asn1-string (asn1-string (type (eql +v-asn1-iastring+))) Err bitreich.org 70 i- (let ((bytes (asn1-string-bytes-vector asn1-string))) Err bitreich.org 70 i- (if (asn1-iastring-p bytes) Err bitreich.org 70 i- (flex:octets-to-string bytes :external-format :ascii) Err bitreich.org 70 i- (error 'invalid-asn1-string :type '+v-asn1-iastring+)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun asn1-printable-char-p (byte) Err bitreich.org 70 i- (declare (type (unsigned-byte 8) byte) Err bitreich.org 70 i- (optimize (speed 3) Err bitreich.org 70 i- (debug 0) Err bitreich.org 70 i- (safety 0))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ;; a-z Err bitreich.org 70 i- ((and (>= byte #.(char-code #\a)) Err bitreich.org 70 i- (<= byte #.(char-code #\z))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- ;; '-/ Err bitreich.org 70 i- ((and (>= byte #.(char-code #\')) Err bitreich.org 70 i- (<= byte #.(char-code #\/))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- ;; 0-9 Err bitreich.org 70 i- ((and (>= byte #.(char-code #\0)) Err bitreich.org 70 i- (<= byte #.(char-code #\9))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- ;; A-Z Err bitreich.org 70 i- ((and (>= byte #.(char-code #\A)) Err bitreich.org 70 i- (<= byte #.(char-code #\Z))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- ;; other Err bitreich.org 70 i- ((= byte #.(char-code #\ )) t) Err bitreich.org 70 i- ((= byte #.(char-code #\:)) t) Err bitreich.org 70 i- ((= byte #.(char-code #\=)) t) Err bitreich.org 70 i- ((= byte #.(char-code #\?)) t))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun asn1-printable-string-p (bytes) Err bitreich.org 70 i- (declare (type (simple-array (unsigned-byte 8)) bytes) Err bitreich.org 70 i- (optimize (speed 3) Err bitreich.org 70 i- (debug 0) Err bitreich.org 70 i- (safety 0))) Err bitreich.org 70 i- (every #'asn1-printable-char-p bytes)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod decode-asn1-string (asn1-string (type (eql +v-asn1-printablestring+))) Err bitreich.org 70 i- (let* ((bytes (asn1-string-bytes-vector asn1-string))) Err bitreich.org 70 i- (if (asn1-printable-string-p bytes) Err bitreich.org 70 i- (flex:octets-to-string bytes :external-format :ascii) Err bitreich.org 70 i- (error 'invalid-asn1-string :type '+v-asn1-printablestring+)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod decode-asn1-string (asn1-string (type (eql +v-asn1-utf8string+))) Err bitreich.org 70 i- (let* ((data (asn1-string-data asn1-string)) Err bitreich.org 70 i- (length (asn1-string-length asn1-string))) Err bitreich.org 70 i- (cffi:foreign-string-to-lisp data :count length :encoding :utf-8))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod decode-asn1-string (asn1-string (type (eql +v-asn1-universalstring+))) Err bitreich.org 70 i- (if (= 0 (mod (asn1-string-length asn1-string) 4)) Err bitreich.org 70 i- ;; cffi sometimes fails here on sbcl? idk why (maybe threading?) Err bitreich.org 70 i- ;; fail: Illegal :UTF-32 character starting at position 48... Err bitreich.org 70 i- ;; when (length bytes) is 48... Err bitreich.org 70 i- ;; so I'm passing :count explicitly Err bitreich.org 70 i- (or (ignore-errors (cffi:foreign-string-to-lisp (asn1-string-data asn1-string) :count (asn1-string-length asn1-string) :encoding :utf-32)) Err bitreich.org 70 i- (error 'invalid-asn1-string :type '+v-asn1-universalstring+)) Err bitreich.org 70 i- (error 'invalid-asn1-string :type '+v-asn1-universalstring+))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun asn1-teletex-char-p (byte) Err bitreich.org 70 i- (declare (type (unsigned-byte 8) byte) Err bitreich.org 70 i- (optimize (speed 3) Err bitreich.org 70 i- (debug 0) Err bitreich.org 70 i- (safety 0))) Err bitreich.org 70 i- (and (>= byte #x20) Err bitreich.org 70 i- (< byte #x80))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun asn1-teletex-string-p (bytes) Err bitreich.org 70 i- (declare (type (simple-array (unsigned-byte 8)) bytes) Err bitreich.org 70 i- (optimize (speed 3) Err bitreich.org 70 i- (debug 0) Err bitreich.org 70 i- (safety 0))) Err bitreich.org 70 i- (every #'asn1-teletex-char-p bytes)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod decode-asn1-string (asn1-string (type (eql +v-asn1-teletexstring+))) Err bitreich.org 70 i- (let ((bytes (asn1-string-bytes-vector asn1-string))) Err bitreich.org 70 i- (if (asn1-teletex-string-p bytes) Err bitreich.org 70 i- (flex:octets-to-string bytes :external-format :ascii) Err bitreich.org 70 i- (error 'invalid-asn1-string :type '+v-asn1-teletexstring+)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod decode-asn1-string (asn1-string (type (eql +v-asn1-bmpstring+))) Err bitreich.org 70 i- (if (= 0 (mod (asn1-string-length asn1-string) 2)) Err bitreich.org 70 i- (or (ignore-errors (cffi:foreign-string-to-lisp (asn1-string-data asn1-string) :count (asn1-string-length asn1-string) :encoding :utf-16/be)) Err bitreich.org 70 i- (error 'invalid-asn1-string :type '+v-asn1-bmpstring+)) Err bitreich.org 70 i- (error 'invalid-asn1-string :type '+v-asn1-bmpstring+))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; TODO: respect asn1-string type Err bitreich.org 70 i-(defun try-get-asn1-string-data (asn1-string allowed-types) Err bitreich.org 70 i- (let ((type (asn1-string-type asn1-string))) Err bitreich.org 70 i- (assert (member (asn1-string-type asn1-string) allowed-types) nil "Invalid asn1 string type") Err bitreich.org 70 i- (decode-asn1-string asn1-string type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun slurp-stream (stream) Err bitreich.org 70 i- (let ((seq (make-array (file-length stream) :element-type '(unsigned-byte 8)))) Err bitreich.org 70 i- (read-sequence seq stream) Err bitreich.org 70 i- seq)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod decode-certificate ((format (eql :der)) bytes) Err bitreich.org 70 i- (cffi:with-pointer-to-vector-data (buf* bytes) Err bitreich.org 70 i- (cffi:with-foreign-object (buf** :pointer) Err bitreich.org 70 i- (setf (cffi:mem-ref buf** :pointer) buf*) Err bitreich.org 70 i- (let ((cert (d2i-x509 (cffi:null-pointer) buf** (length bytes)))) Err bitreich.org 70 i- (when (cffi:null-pointer-p cert) Err bitreich.org 70 i- (error 'ssl-error-call :message "d2i-X509 failed" :queue (read-ssl-error-queue))) Err bitreich.org 70 i- cert)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun cert-format-from-path (path) Err bitreich.org 70 i- ;; or match "pem" type too and raise unknown format error? Err bitreich.org 70 i- (if (equal "der" (pathname-type path)) Err bitreich.org 70 i- :der Err bitreich.org 70 i- :pem)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun decode-certificate-from-file (path &key format) Err bitreich.org 70 i- (let ((bytes (with-open-file (stream path :element-type '(unsigned-byte 8)) Err bitreich.org 70 i- (slurp-stream stream))) Err bitreich.org 70 i- (format (or format (cert-format-from-path path)))) Err bitreich.org 70 i- (decode-certificate format bytes))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun certificate-alt-names (cert) Err bitreich.org 70 i- #| Err bitreich.org 70 i- * The return value is the decoded extension or NULL on Err bitreich.org 70 i- * error. The actual error can have several different causes, Err bitreich.org 70 i- * the value of *crit reflects the cause: Err bitreich.org 70 i- * >= 0, extension found but not decoded (reflects critical value). Err bitreich.org 70 i- * -1 extension not found. Err bitreich.org 70 i- * -2 extension occurs more than once. Err bitreich.org 70 i- |# Err bitreich.org 70 i- (cffi:with-foreign-object (crit* :int) Err bitreich.org 70 i- (let ((result (x509-get-ext-d2i cert +NID-subject-alt-name+ crit* (cffi:null-pointer)))) Err bitreich.org 70 i- (if (cffi:null-pointer-p result) Err bitreich.org 70 i- (let ((crit (cffi:mem-ref crit* :int))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((>= crit 0) Err bitreich.org 70 i- (error "X509_get_ext_d2i: subject-alt-name extension decoding error")) Err bitreich.org 70 i- ((= crit -1) ;; extension not found, return NULL Err bitreich.org 70 i- result) Err bitreich.org 70 i- ((= crit -2) Err bitreich.org 70 i- (error "X509_get_ext_d2i: subject-alt-name extension occurs more than once")))) Err bitreich.org 70 i- result)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun certificate-dns-alt-names (cert) Err bitreich.org 70 i- (let ((altnames (certificate-alt-names cert))) Err bitreich.org 70 i- (unless (cffi:null-pointer-p altnames) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (flet ((alt-name-to-string (alt-name) Err bitreich.org 70 i- (cffi:with-foreign-slots ((type data) alt-name (:struct general-name)) Err bitreich.org 70 i- (when (= type +GEN-DNS+) Err bitreich.org 70 i- (alexandria:if-let ((string (try-get-asn1-string-data data '(#.+v-asn1-iastring+)))) Err bitreich.org 70 i- string Err bitreich.org 70 i- (error "Malformed certificate: possibly NULL in dns-alt-name")))))) Err bitreich.org 70 i- (let ((altnames-count (sk-general-name-num altnames))) Err bitreich.org 70 i- (loop for i from 0 below altnames-count Err bitreich.org 70 i- as alt-name = (sk-general-name-value altnames i) Err bitreich.org 70 i- collect (alt-name-to-string alt-name)))) Err bitreich.org 70 i- (general-names-free altnames))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun certificate-subject-common-names (cert) Err bitreich.org 70 i- (let ((i -1) Err bitreich.org 70 i- (subject-name (x509-get-subject-name cert))) Err bitreich.org 70 i- (when (cffi:null-pointer-p subject-name) Err bitreich.org 70 i- (error "X509_get_subject_name returned NULL")) Err bitreich.org 70 i- (flet ((extract-cn () Err bitreich.org 70 i- (setf i (x509-name-get-index-by-nid subject-name +NID-commonName+ i)) Err bitreich.org 70 i- (when (>= i 0) Err bitreich.org 70 i- (let* ((entry (x509-name-get-entry subject-name i))) Err bitreich.org 70 i- (when (cffi:null-pointer-p entry) Err bitreich.org 70 i- (error "X509_NAME_get_entry returned NULL")) Err bitreich.org 70 i- (let ((entry-data (x509-name-entry-get-data entry))) Err bitreich.org 70 i- (when (cffi:null-pointer-p entry-data) Err bitreich.org 70 i- (error "X509_NAME_ENTRY_get_data returned NULL")) Err bitreich.org 70 i- (try-get-asn1-string-data entry-data '(#.+v-asn1-utf8string+ Err bitreich.org 70 i- #.+v-asn1-bmpstring+ Err bitreich.org 70 i- #.+v-asn1-printablestring+ Err bitreich.org 70 i- #.+v-asn1-universalstring+ Err bitreich.org 70 i- #.+v-asn1-teletexstring+))))))) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- as cn = (extract-cn) Err bitreich.org 70 i- if cn collect cn Err bitreich.org 70 i- if (not cn) do Err bitreich.org 70 i- (loop-finish))))) Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/ssl-verify-test.lisp b/3rdparties/software/cl+ssl-20190202-git/ssl-verify-test.lisp /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/ssl-verify-test.lisp.gph bitreich.org 70 i@@ -1,166 +0,0 @@ Err bitreich.org 70 i-;;; Copyright (C) 2011 David Lichteblau Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; See LICENSE for details. Err bitreich.org 70 i- Err bitreich.org 70 i-#+xcvb (module (:depends-on ("package"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl+ssl) Err bitreich.org 70 i- Err bitreich.org 70 i-;; from cl+ssl/example.lisp Err bitreich.org 70 i-(defun read-line-crlf-2 (stream &optional eof-error-p) Err bitreich.org 70 i- (let ((s (make-string-output-stream))) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- for empty = t then nil Err bitreich.org 70 i- for c = (read-char stream eof-error-p nil) Err bitreich.org 70 i- while (and c (not (eql c #\return))) Err bitreich.org 70 i- do Err bitreich.org 70 i- (unless (eql c #\newline) Err bitreich.org 70 i- (write-char c s)) Err bitreich.org 70 i- finally Err bitreich.org 70 i- (return Err bitreich.org 70 i- (if empty nil (get-output-stream-string s)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun write-ssl-certificate-names (ssl-stream &optional (output-stream t)) Err bitreich.org 70 i- (let* ((ssl (ssl-stream-handle ssl-stream)) Err bitreich.org 70 i- (cert (ssl-get-peer-certificate ssl))) Err bitreich.org 70 i- (unless (cffi:null-pointer-p cert) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (multiple-value-bind (issuer subject) Err bitreich.org 70 i- (x509-certificate-names cert) Err bitreich.org 70 i- (format output-stream Err bitreich.org 70 i- " issuer: ~a~% subject: ~a~%" issuer subject)) Err bitreich.org 70 i- (x509-free cert))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; from cl+ssl/example.lisp Err bitreich.org 70 i-(defun test-https-client-2 (host &key (port 443) show-text-p) Err bitreich.org 70 i- (let* ((deadline (+ (get-internal-real-time) Err bitreich.org 70 i- (* 3 internal-time-units-per-second))) Err bitreich.org 70 i- (socket (ccl:make-socket :address-family :internet Err bitreich.org 70 i- :connect :active Err bitreich.org 70 i- :type :stream Err bitreich.org 70 i- :remote-host host Err bitreich.org 70 i- :remote-port port Err bitreich.org 70 i-;; :local-host (resolve-hostname local-host) Err bitreich.org 70 i-;; :local-port local-port Err bitreich.org 70 i- :deadline deadline)) Err bitreich.org 70 i- https) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (handler-bind Err bitreich.org 70 i- ((ssl-error-verify Err bitreich.org 70 i- (lambda (c) Err bitreich.org 70 i- (write-ssl-certificate-names (ssl-error-stream c))))) Err bitreich.org 70 i- (setf https Err bitreich.org 70 i- (cl+ssl:make-ssl-client-stream Err bitreich.org 70 i- socket Err bitreich.org 70 i- :unwrap-stream-p t Err bitreich.org 70 i- :external-format '(:iso-8859-1 :eol-style :lf))) Err bitreich.org 70 i- (write-ssl-certificate-names https) Err bitreich.org 70 i- (format https "GET / HTTP/1.0~%Host: ~a~%~%" host) Err bitreich.org 70 i- (force-output https) Err bitreich.org 70 i- (loop :for line = (read-line-crlf-2 https nil) Err bitreich.org 70 i- for cnt from 0 Err bitreich.org 70 i- :while line :do Err bitreich.org 70 i- (when show-text-p Err bitreich.org 70 i- (format t "HTTPS> ~a~%" line)) Err bitreich.org 70 i- finally (return cnt))) Err bitreich.org 70 i- (if https Err bitreich.org 70 i- (close https) Err bitreich.org 70 i- (close socket))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *rayservers-ca-certificate-pem-file* Err bitreich.org 70 i- "rayservers-ca-certificate.pem") Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *rayservers-ca-certificate-path* Err bitreich.org 70 i- (merge-pathnames *rayservers-ca-certificate-pem-file* Err bitreich.org 70 i- (asdf:system-source-directory :cl+ssl))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *rayservers-ca-certificate-pem* Err bitreich.org 70 i- "-----BEGIN CERTIFICATE----- Err bitreich.org 70 i-MIIElTCCA32gAwIBAgIJALoXNnj+yvJCMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYD Err bitreich.org 70 i-VQQGEwJQQTELMAkGA1UECBMCTkExFDASBgNVBAcTC1BhbmFtYSBDaXR5MRgwFgYD Err bitreich.org 70 i-VQQKEw9SYXlzZXJ2ZXJzIEdtYkgxGjAYBgNVBAMTEWNhLnJheXNlcnZlcnMuY29t Err bitreich.org 70 i-MSUwIwYJKoZIhvcNAQkBFhZzdXBwb3J0QHJheXNlcnZlcnMuY29tMB4XDTA5MTAx Err bitreich.org 70 i-OTE3MzgyMFoXDTE5MTAxNzE3MzgyMFowgY0xCzAJBgNVBAYTAlBBMQswCQYDVQQI Err bitreich.org 70 i-EwJOQTEUMBIGA1UEBxMLUGFuYW1hIENpdHkxGDAWBgNVBAoTD1JheXNlcnZlcnMg Err bitreich.org 70 i-R21iSDEaMBgGA1UEAxMRY2EucmF5c2VydmVycy5jb20xJTAjBgkqhkiG9w0BCQEW Err bitreich.org 70 i-FnN1cHBvcnRAcmF5c2VydmVycy5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw Err bitreich.org 70 i-ggEKAoIBAQC9rNsCCM+TNp6xDk2yxhXQOStmPTd0txFyduNAj02/nLZV4eq0ZS5n Err bitreich.org 70 i-xXBE6l3MYIMBMV3BgKiy7LsdiRJeZ5HdsV/HRZzXCQI+k4acBjlRC1ZdWMNsIR+H Err bitreich.org 70 i-QUVx2y0wgp+QpcMrgBQZdPI7PobnXCZ6+Fmc50kM7xbIsoWZUzQDpRtUymgOhnnT Err bitreich.org 70 i-4TSb1/XufFHHhDMReRA7s3Co911hzcnZJqL9gFWULlB/RI2ZeVbkp0K4lUXyMZ/R Err bitreich.org 70 i-fnOtCdAA+TkQcpzoyBETV9p5MO8KBOPBskvyGYqVcIZNuxwfC2uoKx0s5b6eMRKR Err bitreich.org 70 i-54B4mB/hIi7i0uGjzuAZdt5iDXQHYaM3AgMBAAGjgfUwgfIwHQYDVR0OBBYEFOyu Err bitreich.org 70 i-Fp80LSc1gwnq5rghs/P8bMgrMIHCBgNVHSMEgbowgbeAFOyuFp80LSc1gwnq5rgh Err bitreich.org 70 i-s/P8bMgroYGTpIGQMIGNMQswCQYDVQQGEwJQQTELMAkGA1UECBMCTkExFDASBgNV Err bitreich.org 70 i-BAcTC1BhbmFtYSBDaXR5MRgwFgYDVQQKEw9SYXlzZXJ2ZXJzIEdtYkgxGjAYBgNV Err bitreich.org 70 i-BAMTEWNhLnJheXNlcnZlcnMuY29tMSUwIwYJKoZIhvcNAQkBFhZzdXBwb3J0QHJh Err bitreich.org 70 i-eXNlcnZlcnMuY29tggkAuhc2eP7K8kIwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0B Err bitreich.org 70 i-AQUFAAOCAQEAqScS+A2Hajjb+jTKQ19LVPzTpRYo1Jz0SPtzGO91n0efYeRJD5hV Err bitreich.org 70 i-tU+57zGSlUDszARvB+sxzLdJTItK+wEpDM8pLtwUT/VPrRKOoOUBkKBshcTD4HmI Err bitreich.org 70 i-k8uJlNed0QQLP41hFjr+mYd7WM+N5LtFMQAUBMUN6dzEqQIx69EnIoVp0KB8kDwW Err bitreich.org 70 i-/QK5ogKY0g8DmRTFiV036bHQH93kLzyV6FNAldO8vBDqcTeru/uU2Kcn6a8YOfO1 Err bitreich.org 70 i-T6MVYory7prWbBaGPKsGw0VgrV9OGbxhbw9EOEYSOgdejvbi9VhgMvEpDYFN7Hnq Err bitreich.org 70 i-0wiHJq5jKECf3bwRe9uVzVMrIeCap/r2uA== Err bitreich.org 70 i------END CERTIFICATE-----") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun write-rayservers-certificate-pem () Err bitreich.org 70 i- (with-open-file (s *rayservers-ca-certificate-path* Err bitreich.org 70 i- :direction :output Err bitreich.org 70 i- :if-exists :supersede Err bitreich.org 70 i- :if-does-not-exist :create) Err bitreich.org 70 i- (write-string *rayservers-ca-certificate-pem* s) Err bitreich.org 70 i- *rayservers-ca-certificate-path*)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun install-rayservers-ca-certificate () Err bitreich.org 70 i- (let ((path (write-rayservers-certificate-pem))) Err bitreich.org 70 i- (ssl-load-global-verify-locations path))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun test-loom-client (&optional show-text-p) Err bitreich.org 70 i- (test-https-client-2 "secure.loom.cc" :show-text-p show-text-p)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun test-yahoo-client (&optional show-text-p) Err bitreich.org 70 i- (test-https-client-2 "yahoo.com" :show-text-p show-text-p)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro expecting-no-errors (&body body) Err bitreich.org 70 i- `(handler-case Err bitreich.org 70 i- (progn ,@body) Err bitreich.org 70 i- (error (c) Err bitreich.org 70 i- (error "Got an unexpected error: ~a" c)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro expecting-error ((type) &body body) Err bitreich.org 70 i- `(let ((got-error-p nil)) Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (progn ,@body) Err bitreich.org 70 i- (error (c) Err bitreich.org 70 i- (unless (typep c ',type) Err bitreich.org 70 i- (error "Got an unexpected error type: ~a" c)) Err bitreich.org 70 i- (setf got-error-p t))) Err bitreich.org 70 i- (unless got-error-p Err bitreich.org 70 i- (error "Did not get expected error.")))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun test-verify (&optional quietly) Err bitreich.org 70 i- (let ((*standard-output* Err bitreich.org 70 i- ;; test-https-client-2 prints the certificate names Err bitreich.org 70 i- (if quietly (make-broadcast-stream) *standard-output*))) Err bitreich.org 70 i- (expecting-no-errors Err bitreich.org 70 i- (reload) Err bitreich.org 70 i- (test-loom-client) Err bitreich.org 70 i- (test-yahoo-client) Err bitreich.org 70 i- (setf (ssl-check-verify-p) t)) Err bitreich.org 70 i- ;; The Mac appears to have no way to get rid of the default CA certificates Err bitreich.org 70 i- ;; #+darwin-host is only true in Clozure Common Lisp running on a Mac, Err bitreich.org 70 i- ;; So this test will fail in SBCL on a Mac Err bitreich.org 70 i- #-darwin-host Err bitreich.org 70 i- (expecting-error (ssl-error-verify) Err bitreich.org 70 i- (test-yahoo-client)) Err bitreich.org 70 i- #+darwin-host Err bitreich.org 70 i- (expecting-no-errors Err bitreich.org 70 i- (test-yahoo-client)) Err bitreich.org 70 i- (expecting-error (ssl-error-verify) Err bitreich.org 70 i- (test-loom-client)) Err bitreich.org 70 i- (expecting-no-errors Err bitreich.org 70 i- (install-rayservers-ca-certificate) Err bitreich.org 70 i- (test-loom-client)) Err bitreich.org 70 i- (expecting-no-errors Err bitreich.org 70 i- (ssl-set-global-default-verify-paths) Err bitreich.org 70 i- (test-yahoo-client)))) Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/test.lisp b/3rdparties/software/cl+ssl-20190202-git/test.lisp /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/test.lisp.gph bitreich.org 70 i@@ -1,409 +0,0 @@ Err bitreich.org 70 i-;;; Copyright (C) 2008 David Lichteblau Err bitreich.org 70 i-;;; See LICENSE for details. Err bitreich.org 70 i- Err bitreich.org 70 i-#| Err bitreich.org 70 i-(load "test.lisp") Err bitreich.org 70 i-|# Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage :ssl-test Err bitreich.org 70 i- (:use :cl)) Err bitreich.org 70 i-(in-package :ssl-test) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *port* 8080) Err bitreich.org 70 i-(defvar *cert* "/home/david/newcert.pem") Err bitreich.org 70 i-(defvar *key* "/home/david/newkey.pem") Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (asdf:operate 'asdf:load-op :trivial-sockets) Err bitreich.org 70 i- (asdf:operate 'asdf:load-op :bordeaux-threads)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *tests* '()) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *sockets* '()) Err bitreich.org 70 i-(defvar *sockets-lock* (bordeaux-threads:make-lock)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun record-socket (socket) Err bitreich.org 70 i- (unless (integerp socket) Err bitreich.org 70 i- (bordeaux-threads:with-lock-held (*sockets-lock*) Err bitreich.org 70 i- (push socket *sockets*))) Err bitreich.org 70 i- socket) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun close-socket (socket &key abort) Err bitreich.org 70 i- (if (streamp socket) Err bitreich.org 70 i- (close socket :abort abort) Err bitreich.org 70 i- (trivial-sockets:close-server socket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun check-sockets () Err bitreich.org 70 i- (let ((failures nil)) Err bitreich.org 70 i- (bordeaux-threads:with-lock-held (*sockets-lock*) Err bitreich.org 70 i- (dolist (socket *sockets*) Err bitreich.org 70 i- (when (close-socket socket :abort t) Err bitreich.org 70 i- (push socket failures))) Err bitreich.org 70 i- (setf *sockets* nil)) Err bitreich.org 70 i- #-sbcl ;fixme Err bitreich.org 70 i- (when failures Err bitreich.org 70 i- (error "failed to close sockets properly:~{ ~A~%~}" failures)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro deftest (name &body body) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (defun ,name () Err bitreich.org 70 i- (format t "~%----- ~A ----------------------------~%" ',name) Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (progn Err bitreich.org 70 i- ,@body Err bitreich.org 70 i- (check-sockets) Err bitreich.org 70 i- (format t "===== [OK] ~A ====================~%" ',name) Err bitreich.org 70 i- t) Err bitreich.org 70 i- (error (c) Err bitreich.org 70 i- (when (typep c 'trivial-sockets:socket-error) Err bitreich.org 70 i- (setf c (trivial-sockets:socket-nested-error c))) Err bitreich.org 70 i- (format t "~%===== [FAIL] ~A: ~A~%" ',name c) Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (check-sockets) Err bitreich.org 70 i- (error (c) Err bitreich.org 70 i- (format t "muffling follow-up error ~A~%" c))) Err bitreich.org 70 i- nil))) Err bitreich.org 70 i- (push ',name *tests*))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun run-all-tests () Err bitreich.org 70 i- (unless (probe-file *cert*) (error "~A not found" *cert*)) Err bitreich.org 70 i- (unless (probe-file *key*) (error "~A not found" *key*)) Err bitreich.org 70 i- (let ((n 0) Err bitreich.org 70 i- (nok 0)) Err bitreich.org 70 i- (dolist (test (reverse *tests*)) Err bitreich.org 70 i- (when (funcall test) Err bitreich.org 70 i- (incf nok)) Err bitreich.org 70 i- (incf n)) Err bitreich.org 70 i- (format t "~&passed ~D/~D tests~%" nok n))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition quit (condition) Err bitreich.org 70 i- ()) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *please-quit* t) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-test-thread (name init main &rest args) Err bitreich.org 70 i- "Start a thread named NAME, wait until it has funcalled INIT with ARGS Err bitreich.org 70 i- as arguments, then continue while the thread concurrently funcalls MAIN Err bitreich.org 70 i- with INIT's return values as arguments." Err bitreich.org 70 i- (let ((cv (bordeaux-threads:make-condition-variable)) Err bitreich.org 70 i- (lock (bordeaux-threads:make-lock name)) Err bitreich.org 70 i- ;; redirect io manually, because swan's global redirection isn't as Err bitreich.org 70 i- ;; global as one might hope Err bitreich.org 70 i- (out *terminal-io*) Err bitreich.org 70 i- (init-ok nil)) Err bitreich.org 70 i- (bordeaux-threads:with-lock-held (lock) Err bitreich.org 70 i- (setf *please-quit* nil) Err bitreich.org 70 i- (prog1 Err bitreich.org 70 i- (bordeaux-threads:make-thread Err bitreich.org 70 i- (lambda () Err bitreich.org 70 i- (flet ((notify () Err bitreich.org 70 i- (bordeaux-threads:with-lock-held (lock) Err bitreich.org 70 i- (bordeaux-threads:condition-notify cv)))) Err bitreich.org 70 i- (let ((*terminal-io* out) Err bitreich.org 70 i- (*standard-output* out) Err bitreich.org 70 i- (*trace-output* out) Err bitreich.org 70 i- (*error-output* out)) Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (let ((values (multiple-value-list (apply init args)))) Err bitreich.org 70 i- (setf init-ok t) Err bitreich.org 70 i- (notify) Err bitreich.org 70 i- (apply main values)) Err bitreich.org 70 i- (quit () Err bitreich.org 70 i- (notify) Err bitreich.org 70 i- t) Err bitreich.org 70 i- (error (c) Err bitreich.org 70 i- (when (typep c 'trivial-sockets:socket-error) Err bitreich.org 70 i- (setf c (trivial-sockets:socket-nested-error c))) Err bitreich.org 70 i- (format t "aborting test thread ~A: ~A" name c) Err bitreich.org 70 i- (notify) Err bitreich.org 70 i- nil))))) Err bitreich.org 70 i- :name name) Err bitreich.org 70 i- (bordeaux-threads:condition-wait cv lock) Err bitreich.org 70 i- (unless init-ok Err bitreich.org 70 i- (error "failed to start background thread")))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-thread ((name init main &rest args) &body body) Err bitreich.org 70 i- `(invoke-with-thread (lambda () ,@body) Err bitreich.org 70 i- ,name Err bitreich.org 70 i- ,init Err bitreich.org 70 i- ,main Err bitreich.org 70 i- ,@args)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun invoke-with-thread (body name init main &rest args) Err bitreich.org 70 i- (let ((thread (apply #'make-test-thread name init main args))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (funcall body) Err bitreich.org 70 i- (setf *please-quit* t) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- for delay = 0.0001 then (* delay 2) Err bitreich.org 70 i- while (and (< delay 0.5) (bordeaux-threads:thread-alive-p thread)) Err bitreich.org 70 i- do Err bitreich.org 70 i- (sleep delay)) Err bitreich.org 70 i- (when (bordeaux-threads:thread-alive-p thread) Err bitreich.org 70 i- (format t "~&thread doesn't want to quit, killing it~%") Err bitreich.org 70 i- (force-output) Err bitreich.org 70 i- (bordeaux-threads:interrupt-thread thread (lambda () (error 'quit))) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- for delay = 0.0001 then (* delay 2) Err bitreich.org 70 i- while (bordeaux-threads:thread-alive-p thread) Err bitreich.org 70 i- do Err bitreich.org 70 i- (sleep delay)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun init-server (&key (unwrap-stream-p t)) Err bitreich.org 70 i- (format t "~&SSL server listening on port ~d~%" *port*) Err bitreich.org 70 i- (values (record-socket (trivial-sockets:open-server :port *port*)) Err bitreich.org 70 i- unwrap-stream-p)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun test-server (listening-socket unwrap-stream-p) Err bitreich.org 70 i- (format t "~&SSL server accepting...~%") Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (let* ((socket (record-socket Err bitreich.org 70 i- (trivial-sockets:accept-connection Err bitreich.org 70 i- listening-socket Err bitreich.org 70 i- :element-type '(unsigned-byte 8)))) Err bitreich.org 70 i- (callback nil)) Err bitreich.org 70 i- (when (eq unwrap-stream-p :caller) Err bitreich.org 70 i- (setf callback (let ((s socket)) (lambda () (close-socket s)))) Err bitreich.org 70 i- (setf socket (cl+ssl:stream-fd socket)) Err bitreich.org 70 i- (setf unwrap-stream-p nil)) Err bitreich.org 70 i- (let ((client (record-socket Err bitreich.org 70 i- (cl+ssl:make-ssl-server-stream Err bitreich.org 70 i- socket Err bitreich.org 70 i- :unwrap-stream-p unwrap-stream-p Err bitreich.org 70 i- :close-callback callback Err bitreich.org 70 i- :external-format :iso-8859-1 Err bitreich.org 70 i- :certificate *cert* Err bitreich.org 70 i- :key *key*)))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (loop Err bitreich.org 70 i- for line = (prog2 Err bitreich.org 70 i- (when *please-quit* (return)) Err bitreich.org 70 i- (read-line client nil) Err bitreich.org 70 i- (when *please-quit* (return))) Err bitreich.org 70 i- while line Err bitreich.org 70 i- do Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((equal line "freeze") Err bitreich.org 70 i- (format t "~&Freezing on client request~%") Err bitreich.org 70 i- (loop Err bitreich.org 70 i- (sleep 1) Err bitreich.org 70 i- (when *please-quit* (return)))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (format t "~&Responding to query ~A...~%" line) Err bitreich.org 70 i- (format client "(echo ~A)~%" line) Err bitreich.org 70 i- (force-output client)))) Err bitreich.org 70 i- (close-socket client)))) Err bitreich.org 70 i- (close-socket listening-socket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun init-client (&key (unwrap-stream-p t)) Err bitreich.org 70 i- (let ((socket (record-socket Err bitreich.org 70 i- (trivial-sockets:open-stream Err bitreich.org 70 i- "127.0.0.1" Err bitreich.org 70 i- *port* Err bitreich.org 70 i- :element-type '(unsigned-byte 8)))) Err bitreich.org 70 i- (callback nil)) Err bitreich.org 70 i- (when (eq unwrap-stream-p :caller) Err bitreich.org 70 i- (setf callback (let ((s socket)) (lambda () (close-socket s)))) Err bitreich.org 70 i- (setf socket (cl+ssl:stream-fd socket)) Err bitreich.org 70 i- (setf unwrap-stream-p nil)) Err bitreich.org 70 i- (cl+ssl:make-ssl-client-stream Err bitreich.org 70 i- socket Err bitreich.org 70 i- :unwrap-stream-p unwrap-stream-p Err bitreich.org 70 i- :close-callback callback Err bitreich.org 70 i- :external-format :iso-8859-1))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; CCL requires specifying the Err bitreich.org 70 i-;; deadline at the socket cration ( Err bitreich.org 70 i-;; in constrast to SBCL which has Err bitreich.org 70 i-;; the WITH-TIMEOUT macro). Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; Therefore a separate INIT-CLIENT Err bitreich.org 70 i-;; function is needed for CCL when Err bitreich.org 70 i-;; we need read/write deadlines on Err bitreich.org 70 i-;; the SSL client stream. Err bitreich.org 70 i-#+clozure-common-lisp Err bitreich.org 70 i-(defun ccl-init-client-with-deadline (&key (unwrap-stream-p t) Err bitreich.org 70 i- seconds) Err bitreich.org 70 i- (let* ((deadline Err bitreich.org 70 i- (+ (get-internal-real-time) Err bitreich.org 70 i- (* seconds internal-time-units-per-second))) Err bitreich.org 70 i- (low Err bitreich.org 70 i- (record-socket Err bitreich.org 70 i- (ccl:make-socket Err bitreich.org 70 i- :address-family :internet Err bitreich.org 70 i- :connect :active Err bitreich.org 70 i- :type :stream Err bitreich.org 70 i- :remote-host "127.0.0.1" Err bitreich.org 70 i- :remote-port *port* Err bitreich.org 70 i- :deadline deadline)))) Err bitreich.org 70 i- (cl+ssl:make-ssl-client-stream Err bitreich.org 70 i- low Err bitreich.org 70 i- :unwrap-stream-p unwrap-stream-p Err bitreich.org 70 i- :external-format :iso-8859-1))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Simple echo-server test. Write a line and check that the result Err bitreich.org 70 i-;;; watches, three times in a row. Err bitreich.org 70 i-(deftest echo Err bitreich.org 70 i- (with-thread ("simple server" #'init-server #'test-server) Err bitreich.org 70 i- (with-open-stream (socket (init-client)) Err bitreich.org 70 i- (write-line "test" socket) Err bitreich.org 70 i- (force-output socket) Err bitreich.org 70 i- (assert (equal (read-line socket) "(echo test)")) Err bitreich.org 70 i- (write-line "test2" socket) Err bitreich.org 70 i- (force-output socket) Err bitreich.org 70 i- (assert (equal (read-line socket) "(echo test2)")) Err bitreich.org 70 i- (write-line "test3" socket) Err bitreich.org 70 i- (force-output socket) Err bitreich.org 70 i- (assert (equal (read-line socket) "(echo test3)"))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Run tests with different BIO setup strategies: Err bitreich.org 70 i-;;; - :UNWRAP-STREAMS T Err bitreich.org 70 i-;;; In this case, CL+SSL will convert the socket to a file descriptor. Err bitreich.org 70 i-;;; - :UNWRAP-STREAMS :CLIENT Err bitreich.org 70 i-;;; Convert the socket to a file descriptor manually, and give that Err bitreich.org 70 i-;;; to CL+SSL. Err bitreich.org 70 i-;;; - :UNWRAP-STREAMS NIL Err bitreich.org 70 i-;;; Let CL+SSL write to the stream directly, using the Lisp BIO. Err bitreich.org 70 i-(macrolet ((deftests (name (var &rest values) &body body) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- ,@(loop Err bitreich.org 70 i- for value in values Err bitreich.org 70 i- collect Err bitreich.org 70 i- `(deftest ,(intern (format nil "~A-~A" name value)) Err bitreich.org 70 i- (let ((,var ',value)) Err bitreich.org 70 i- ,@body)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (deftests unwrap-strategy (usp nil t :caller) Err bitreich.org 70 i- (with-thread ("echo server for strategy test" Err bitreich.org 70 i- (lambda () (init-server :unwrap-stream-p usp)) Err bitreich.org 70 i- #'test-server) Err bitreich.org 70 i- (with-open-stream (socket (init-client :unwrap-stream-p usp)) Err bitreich.org 70 i- (write-line "test" socket) Err bitreich.org 70 i- (force-output socket) Err bitreich.org 70 i- (assert (equal (read-line socket) "(echo test)"))))) Err bitreich.org 70 i- Err bitreich.org 70 i- #+clozure-common-lisp Err bitreich.org 70 i- (deftests read-deadline (usp nil t :caller) Err bitreich.org 70 i- (with-thread ("echo server for deadline test" Err bitreich.org 70 i- (lambda () (init-server :unwrap-stream-p usp)) Err bitreich.org 70 i- #'test-server) Err bitreich.org 70 i- (with-open-stream Err bitreich.org 70 i- (socket Err bitreich.org 70 i- (ccl-init-client-with-deadline Err bitreich.org 70 i- :unwrap-stream-p usp Err bitreich.org 70 i- :seconds 3)) Err bitreich.org 70 i- (write-line "test" socket) Err bitreich.org 70 i- (force-output socket) Err bitreich.org 70 i- (assert (equal (read-line socket) "(echo test)")) Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (read-char socket) Err bitreich.org 70 i- (error "unexpected data")) Err bitreich.org 70 i- (ccl::communication-deadline-expired ()))))) Err bitreich.org 70 i- Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- (deftests read-deadline (usp nil t :caller) Err bitreich.org 70 i- (with-thread ("echo server for deadline test" Err bitreich.org 70 i- (lambda () (init-server :unwrap-stream-p usp)) Err bitreich.org 70 i- #'test-server) Err bitreich.org 70 i- (sb-sys:with-deadline (:seconds 3) Err bitreich.org 70 i- (with-open-stream (socket (init-client :unwrap-stream-p usp)) Err bitreich.org 70 i- (write-line "test" socket) Err bitreich.org 70 i- (force-output socket) Err bitreich.org 70 i- (assert (equal (read-line socket) "(echo test)")) Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (read-char socket) Err bitreich.org 70 i- (error "unexpected data")) Err bitreich.org 70 i- (sb-sys:deadline-timeout ())))))) Err bitreich.org 70 i- Err bitreich.org 70 i- #+clozure-common-lisp Err bitreich.org 70 i- (deftests write-deadline (usp nil t) Err bitreich.org 70 i- (with-thread ("echo server for deadline test" Err bitreich.org 70 i- (lambda () (init-server :unwrap-stream-p usp)) Err bitreich.org 70 i- #'test-server) Err bitreich.org 70 i- (with-open-stream Err bitreich.org 70 i- (socket Err bitreich.org 70 i- (ccl-init-client-with-deadline Err bitreich.org 70 i- :unwrap-stream-p usp Err bitreich.org 70 i- :seconds 3)) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (write-line "test" socket) Err bitreich.org 70 i- (force-output socket) Err bitreich.org 70 i- (assert (equal (read-line socket) "(echo test)")) Err bitreich.org 70 i- (write-line "freeze" socket) Err bitreich.org 70 i- (force-output socket) Err bitreich.org 70 i- (let ((n 0)) Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (loop Err bitreich.org 70 i- (write-line "deadbeef" socket) Err bitreich.org 70 i- (incf n)) Err bitreich.org 70 i- (ccl::communication-deadline-expired ())) Err bitreich.org 70 i- ;; should have written a couple of lines before the deadline: Err bitreich.org 70 i- (assert (> n 100)))) Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (close-socket socket :abort t) Err bitreich.org 70 i- (ccl::communication-deadline-expired ())))))) Err bitreich.org 70 i- Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- (deftests write-deadline (usp nil t) Err bitreich.org 70 i- (with-thread ("echo server for deadline test" Err bitreich.org 70 i- (lambda () (init-server :unwrap-stream-p usp)) Err bitreich.org 70 i- #'test-server) Err bitreich.org 70 i- (with-open-stream (socket (init-client :unwrap-stream-p usp)) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (sb-sys:with-deadline (:seconds 3) Err bitreich.org 70 i- (write-line "test" socket) Err bitreich.org 70 i- (force-output socket) Err bitreich.org 70 i- (assert (equal (read-line socket) "(echo test)")) Err bitreich.org 70 i- (write-line "freeze" socket) Err bitreich.org 70 i- (force-output socket) Err bitreich.org 70 i- (let ((n 0)) Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (loop Err bitreich.org 70 i- (write-line "deadbeef" socket) Err bitreich.org 70 i- (incf n)) Err bitreich.org 70 i- (sb-sys:deadline-timeout ())) Err bitreich.org 70 i- ;; should have written a couple of lines before the deadline: Err bitreich.org 70 i- (assert (> n 100)))) Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (close-socket socket :abort t) Err bitreich.org 70 i- (sb-sys:deadline-timeout ())))))) Err bitreich.org 70 i- Err bitreich.org 70 i- #+clozure-common-lisp Err bitreich.org 70 i- (deftests read-char-no-hang/test (usp nil t :caller) Err bitreich.org 70 i- (with-thread ("echo server for read-char-no-hang test" Err bitreich.org 70 i- (lambda () (init-server :unwrap-stream-p usp)) Err bitreich.org 70 i- #'test-server) Err bitreich.org 70 i- (with-open-stream Err bitreich.org 70 i- (socket (ccl-init-client-with-deadline Err bitreich.org 70 i- :unwrap-stream-p usp Err bitreich.org 70 i- :seconds 3)) Err bitreich.org 70 i- (write-line "test" socket) Err bitreich.org 70 i- (force-output socket) Err bitreich.org 70 i- (assert (equal (read-line socket) "(echo test)")) Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (when (read-char-no-hang socket) Err bitreich.org 70 i- (error "unexpected data")) Err bitreich.org 70 i- (ccl::communication-deadline-expired () Err bitreich.org 70 i- (error "read-char-no-hang hangs")))))) Err bitreich.org 70 i- Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- (deftests read-char-no-hang/test (usp nil t :caller) Err bitreich.org 70 i- (with-thread ("echo server for read-char-no-hang test" Err bitreich.org 70 i- (lambda () (init-server :unwrap-stream-p usp)) Err bitreich.org 70 i- #'test-server) Err bitreich.org 70 i- (sb-sys:with-deadline (:seconds 3) Err bitreich.org 70 i- (with-open-stream (socket (init-client :unwrap-stream-p usp)) Err bitreich.org 70 i- (write-line "test" socket) Err bitreich.org 70 i- (force-output socket) Err bitreich.org 70 i- (assert (equal (read-line socket) "(echo test)")) Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (when (read-char-no-hang socket) Err bitreich.org 70 i- (error "unexpected data")) Err bitreich.org 70 i- (sb-sys:deadline-timeout () Err bitreich.org 70 i- (error "read-char-no-hang hangs")))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(or) Err bitreich.org 70 i-(run-all-tests) Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/test/badssl-com.lisp b/3rdparties/software/cl+ssl-20190202-git/test/badssl-com.lisp /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/test/badssl-com.lisp.gph bitreich.org 70 i@@ -1,46 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: LISP; Syntax: COMMON-LISP; indent-tabs-mode: nil; coding: utf-8; show-trailing-whitespace: t -*- Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl+ssl.test) Err bitreich.org 70 i- Err bitreich.org 70 i-(def-suite :cl+ssl.badssl-com :in :cl+ssl Err bitreich.org 70 i- :description "Tests using badssl.com") Err bitreich.org 70 i- Err bitreich.org 70 i-(in-suite :cl+ssl.badssl-com) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defun test-connect (host &key (verify :required)) Err bitreich.org 70 i- (usocket:with-client-socket (socket stream host 443 Err bitreich.org 70 i- :element-type '(unsigned-byte 8)) Err bitreich.org 70 i- (cl+ssl:make-ssl-client-stream stream Err bitreich.org 70 i- :hostname host Err bitreich.org 70 i- :verify verify))) Err bitreich.org 70 i- Err bitreich.org 70 i-(test wrong.host Err bitreich.org 70 i- (signals error Err bitreich.org 70 i- (test-connect "wrong.host.badssl.com")) Err bitreich.org 70 i- (signals error Err bitreich.org 70 i- (test-connect "wrong.host.badssl.com" :verify :optional)) Err bitreich.org 70 i- (finishes Err bitreich.org 70 i- (test-connect "wrong.host.badssl.com" :verify nil))) Err bitreich.org 70 i- Err bitreich.org 70 i-(test expired Err bitreich.org 70 i- (signals error Err bitreich.org 70 i- (test-connect "expired.badssl.com")) Err bitreich.org 70 i- (signals error Err bitreich.org 70 i- (test-connect "expired.badssl.com" :verify :optional)) Err bitreich.org 70 i- (finishes Err bitreich.org 70 i- (test-connect "expired.badssl.com" :verify nil))) Err bitreich.org 70 i- Err bitreich.org 70 i-(test self-signed Err bitreich.org 70 i- (signals error Err bitreich.org 70 i- (test-connect "self-signed.badssl.com"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(test untrusted-root Err bitreich.org 70 i- (signals error Err bitreich.org 70 i- (test-connect "untrusted-root.badssl.com"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(test null Err bitreich.org 70 i- (signals error Err bitreich.org 70 i- (test-connect "null.badssl.com")) Err bitreich.org 70 i- (finishes Err bitreich.org 70 i- (test-connect "null.badssl.com" :verify :optional))) Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/test/certs/google.der b/3rdparties/software/cl+ssl-20190202-git/test/certs/google.der /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/test/certs/google.der.gph bitreich.org 70 iBinary files differ. Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/test/certs/google_bmp.der b/3rdparties/software/cl+ssl-20190202-git/test/certs/google_bmp.der /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/test/certs/google_bmp.der.gph bitreich.org 70 iBinary files differ. Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/test/certs/google_nodns.der b/3rdparties/software/cl+ssl-20190202-git/test/certs/google_nodns.der /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/test/certs/google_nodns.der.gph bitreich.org 70 iBinary files differ. Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/test/certs/google_printable!.der b/3rdparties/software/cl+ssl-20190202-git/test/certs/google_printable!.der /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/test/certs/google_printable!.der.gph bitreich.org 70 iBinary files differ. Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/test/certs/google_printable.der b/3rdparties/software/cl+ssl-20190202-git/test/certs/google_printable.der /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/test/certs/google_printable.der.gph bitreich.org 70 iBinary files differ. Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/test/certs/google_teletex.der b/3rdparties/software/cl+ssl-20190202-git/test/certs/google_teletex.der /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/test/certs/google_teletex.der.gph bitreich.org 70 iBinary files differ. Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/test/certs/google_universal.der b/3rdparties/software/cl+ssl-20190202-git/test/certs/google_universal.der /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/test/certs/google_universal.der.gph bitreich.org 70 iBinary files differ. Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/test/certs/google_wildcard.der b/3rdparties/software/cl+ssl-20190202-git/test/certs/google_wildcard.der /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/test/certs/google_wildcard.der.gph bitreich.org 70 iBinary files differ. Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/test/dummy.lisp b/3rdparties/software/cl+ssl-20190202-git/test/dummy.lisp /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/test/dummy.lisp.gph bitreich.org 70 i@@ -1,11 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: LISP; Syntax: COMMON-LISP; indent-tabs-mode: nil; coding: utf-8; show-trailing-whitespace: t -*- Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl+ssl.test) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-suite :cl+ssl) Err bitreich.org 70 i- Err bitreich.org 70 i-(test (sanity-check.1 :compile-at :definition-time) Err bitreich.org 70 i- (is-true t "SANITY CHECK: T isn't T")) Err bitreich.org 70 i- Err bitreich.org 70 i-(test (sanity-check.2 :compile-at :definition-time) Err bitreich.org 70 i- (is-false nil "SANITY CHECK: NIL isn't NIL")) Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/test/package.lisp b/3rdparties/software/cl+ssl-20190202-git/test/package.lisp /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/test/package.lisp.gph bitreich.org 70 i@@ -1,12 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: LISP; Syntax: COMMON-LISP; indent-tabs-mode: nil; coding: utf-8; show-trailing-whitespace: t -*- Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl-user) Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage :cl+ssl.test Err bitreich.org 70 i- (:use :cl Err bitreich.org 70 i- :5am)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl+ssl.test) Err bitreich.org 70 i- Err bitreich.org 70 i-(def-suite :cl+ssl Err bitreich.org 70 i- :description "Main test suite for CL+SSL") Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/test/run-on-many-lisps-and-openssls/openssl-releases/build-all.sh b/3rdparties/software/cl+ssl-20190202-git/test/run-on-many-lisps-and-openssls/openssl-releases/build-all.sh /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/test/run-on-many-lisps-and-openssls/openssl-releases/build-all.sh.gph bitreich.org 70 i@@ -1,18 +0,0 @@ Err bitreich.org 70 i-#!/bin/bash Err bitreich.org 70 i- Err bitreich.org 70 i-curdir="`dirname $0`" Err bitreich.org 70 i-mkdir "${curdir}/bin" Err bitreich.org 70 i-cd bin Err bitreich.org 70 i-bindirabs=`pwd -P` # absolute path to bindir Err bitreich.org 70 i-cd .. Err bitreich.org 70 i- Err bitreich.org 70 i-for srcdir in openssl-0.9.8zh openssl-1.0.0s openssl-1.0.2q openssl-1.1.0j openssl-1.1.1a Err bitreich.org 70 i-do Err bitreich.org 70 i- cd $srcdir Err bitreich.org 70 i- make clean Err bitreich.org 70 i- ./config shared --prefix="${bindirabs}/${srcdir}" --openssldir="${bindirabs}/${srcdir}" Err bitreich.org 70 i- make && make install Err bitreich.org 70 i- cd .. Err bitreich.org 70 i-done Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/test/run-on-many-lisps-and-openssls/openssl-releases/fetch-all.sh b/3rdparties/software/cl+ssl-20190202-git/test/run-on-many-lisps-and-openssls/openssl-releases/fetch-all.sh /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/test/run-on-many-lisps-and-openssls/openssl-releases/fetch-all.sh.gph bitreich.org 70 i@@ -1,13 +0,0 @@ Err bitreich.org 70 i-#!/bin/sh Err bitreich.org 70 i-cd "`dirname $0`" Err bitreich.org 70 i- Err bitreich.org 70 i-wget https://www.openssl.org/source/openssl-1.0.2q.tar.gz Err bitreich.org 70 i-tar -xzf openssl-1.0.2q.tar.gz Err bitreich.org 70 i-wget https://www.openssl.org/source/openssl-1.1.0j.tar.gz Err bitreich.org 70 i-tar -xzf openssl-1.1.0j.tar.gz Err bitreich.org 70 i-wget https://www.openssl.org/source/openssl-1.1.1a.tar.gz Err bitreich.org 70 i-tar -xzf openssl-1.1.1a.tar.gz Err bitreich.org 70 i-wget https://www.openssl.org/source/old/1.0.0/openssl-1.0.0s.tar.gz Err bitreich.org 70 i-tar -xzf openssl-1.0.0s.tar.gz Err bitreich.org 70 i-wget https://www.openssl.org/source/old/0.9.x/openssl-0.9.8zh.tar.gz Err bitreich.org 70 i-tar -xzf openssl-0.9.8zh.tar.gz Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/test/run-on-many-lisps-and-openssls/run-home.lisp b/3rdparties/software/cl+ssl-20190202-git/test/run-on-many-lisps-and-openssls/run-home.lisp /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/test/run-on-many-lisps-and-openssls/run-home.lisp.gph bitreich.org 70 i@@ -1,44 +0,0 @@ Err bitreich.org 70 i-(defparameter *this-dir* Err bitreich.org 70 i- (if *load-truename* Err bitreich.org 70 i- (make-pathname :name nil :type nil :defaults *load-truename*) Err bitreich.org 70 i- ;; for slime: Err bitreich.org 70 i- #P"/home/anton/prj/cl+ssl/cl-plus-ssl/test/run-on-many-lisps-and-openssls/")) Err bitreich.org 70 i- Err bitreich.org 70 i-(load (merge-pathnames "run-on-many-lisps-and-openssls.lisp" *this-dir*)) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *abcl-1.3.1* (make-instance 'lisp-exe:abcl Err bitreich.org 70 i- :java-exe-path "java" Err bitreich.org 70 i- :abcl-jar-path "/home/anton/unpacked/abcl-bin-1.3.1/abcl.jar")) Err bitreich.org 70 i-(defparameter *ccl-1.11-x86-64* (make-instance 'lisp-exe:ccl Err bitreich.org 70 i- :exe-path "/home/anton/unpacked/ccl-1.11/lx86cl64")) Err bitreich.org 70 i-(defparameter *sbcl-1.4.13* (make-instance 'lisp-exe:sbcl Err bitreich.org 70 i- :exe-path "/home/anton/unpacked/sbcl-1.4.13-x86-64-linux/run-sbcl.sh")) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;; (run-on-many-lisps-and-openssls:clean-fasls (merge-pathnames "workdir/" *this-dir*)) Err bitreich.org 70 i- Err bitreich.org 70 i-(let ((*print-pretty* t)) Err bitreich.org 70 i- (format t "~S~%" Err bitreich.org 70 i- (time Err bitreich.org 70 i- (run-on-many-lisps-and-openssls:run Err bitreich.org 70 i- :test-run-description '(:lib-world "quicklisp 2019-01-07 + cl+ssl.head" Err bitreich.org 70 i- :contact-email "avodonosov@yandex.ru") Err bitreich.org 70 i- :test-run-dir (merge-pathnames "workdir/" *this-dir*) Err bitreich.org 70 i- :quicklisp-dir (merge-pathnames "quicklisp/" (user-homedir-pathname)) Err bitreich.org 70 i- ;; :cl+ssl-location (uiop:pathname-parent-directory-pathname Err bitreich.org 70 i- ;; (uiop:pathname-parent-directory-pathname *this-dir*)) Err bitreich.org 70 i- :cl+ssl-location nil ;; to use the cl+ssl version from quicklisp Err bitreich.org 70 i- :lisps (list *ccl-1.11-x86-64* Err bitreich.org 70 i- *sbcl-1.4.13* Err bitreich.org 70 i- *abcl-1.3.1* Err bitreich.org 70 i- ) Err bitreich.org 70 i- :openssl-releases '("openssl-0.9.8zh" Err bitreich.org 70 i- ; "openssl-1.0.0s" Err bitreich.org 70 i- ; "openssl-1.0.2q" Err bitreich.org 70 i- ; "openssl-1.1.0j" Err bitreich.org 70 i- ; "openssl-1.1.1a" Err bitreich.org 70 i- ) Err bitreich.org 70 i- :openssl-releases-dir (merge-pathnames "openssl-releases/bin/" Err bitreich.org 70 i- *this-dir*))))) Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/test/run-on-many-lisps-and-openssls/run-home.sh b/3rdparties/software/cl+ssl-20190202-git/test/run-on-many-lisps-and-openssls/run-home.sh /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/test/run-on-many-lisps-and-openssls/run-home.sh.gph bitreich.org 70 i@@ -1,3 +0,0 @@ Err bitreich.org 70 i-#!/bin/sh Err bitreich.org 70 i-cd "`dirname $0`" Err bitreich.org 70 i-~/unpacked/ccl-1.11/lx86cl64 --heap-reserve 200M --load run-home.lisp --eval "(quit)" Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/test/run-on-many-lisps-and-openssls/run-on-many-lisps-and-openssls.lisp b/3rdparties/software/cl+ssl-20190202-git/test/run-on-many-lisps-and-openssls/run-on-many-lisps-and-openssls.lisp /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/test/run-on-many-lisps-and-openssls/run-on-many-lisps-and-openssls.lisp.gph bitreich.org 70 i@@ -1,89 +0,0 @@ Err bitreich.org 70 i-(ql:quickload :test-grid-agent) Err bitreich.org 70 i-(ql:quickload :test-grid-utils) Err bitreich.org 70 i-(ql:quickload :cl-fad) Err bitreich.org 70 i-(ql:quickload :alexandria) Err bitreich.org 70 i-(ql:quickload :log4cl) Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:run-on-many-lisps-and-openssls Err bitreich.org 70 i- (:use :common-lisp) Err bitreich.org 70 i- (:export #:run Err bitreich.org 70 i- #:clean-fasls)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :run-on-many-lisps-and-openssls) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun fasl-root (test-run-dir) Err bitreich.org 70 i- (merge-pathnames "fasl/" test-run-dir)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun sanitize-as-path (str) Err bitreich.org 70 i- ;; Substitute dots by hypens if our main process is CCL, it Err bitreich.org 70 i- ;; prepends the > symbol before dots; Err bitreich.org 70 i- ;; for example: 1.1.0.36.mswinmt.1201-284e340 => 1>.1>.0>.36>.mswinmt.1201-284e340 Err bitreich.org 70 i- ;; When we pass such a pathname to other lisps, they can't handle it. Err bitreich.org 70 i- (substitute #\- #\. str)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun log-name (lisp openssl-release) Err bitreich.org 70 i- (sanitize-as-path Err bitreich.org 70 i- (string-downcase (concatenate 'string Err bitreich.org 70 i- (tg-agent::implementation-identifier lisp) Err bitreich.org 70 i- "-" Err bitreich.org 70 i- openssl-release)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun fasl-dir (test-run-dir lisp) Err bitreich.org 70 i- (merge-pathnames Err bitreich.org 70 i- (format nil Err bitreich.org 70 i- "~(~A~)/" Err bitreich.org 70 i- (sanitize-as-path (tg-agent::implementation-identifier lisp))) Err bitreich.org 70 i- (fasl-root test-run-dir))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun so-path (openssl-releases-dir openssl-release so-name) Err bitreich.org 70 i- (merge-pathnames (format nil "~A/lib/~A" openssl-release so-name) Err bitreich.org 70 i- openssl-releases-dir)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun run (&key test-run-description Err bitreich.org 70 i- test-run-dir Err bitreich.org 70 i- quicklisp-dir Err bitreich.org 70 i- lisps Err bitreich.org 70 i- openssl-releases Err bitreich.org 70 i- openssl-releases-dir Err bitreich.org 70 i- cl+ssl-location) Err bitreich.org 70 i- ;; (unless cl+ssl-location Err bitreich.org 70 i- ;; (error "cl+ssl-location parameter is not specified and *load-truename* was not available at the load time.")) Err bitreich.org 70 i- Err bitreich.org 70 i- (ensure-directories-exist test-run-dir) Err bitreich.org 70 i- Err bitreich.org 70 i- (let ((lisp-exe:*temp-dir* test-run-dir)) Err bitreich.org 70 i- (flet ((run-lib-test (lisp openssl-release) Err bitreich.org 70 i- (tg-agent::proc-run-libtest Err bitreich.org 70 i- lisp Err bitreich.org 70 i- :cl+ssl Err bitreich.org 70 i- (cons :lisp (cons (tg-agent::implementation-identifier lisp) Err bitreich.org 70 i- test-run-description)) Err bitreich.org 70 i- (merge-pathnames (log-name lisp openssl-release) test-run-dir) Err bitreich.org 70 i- quicklisp-dir Err bitreich.org 70 i- (fasl-dir test-run-dir lisp) Err bitreich.org 70 i- :eval-before-test `(progn Err bitreich.org 70 i- (set (read-from-string "asdf:*central-registry*") Err bitreich.org 70 i- (cons ,cl+ssl-location Err bitreich.org 70 i- (symbol-value (read-from-string "asdf:*central-registry*")))) Err bitreich.org 70 i- ,(when cl+ssl-location Err bitreich.org 70 i- `(cl-user::fncall "add-asdf-output-translation" Err bitreich.org 70 i- ,cl+ssl-location Err bitreich.org 70 i- ,(merge-pathnames "cl+ssl/" (fasl-dir test-run-dir lisp)))) Err bitreich.org 70 i- (cl-user::fncall "ql:quickload" :cffi) Err bitreich.org 70 i- (cl-user::fncall "cffi:load-foreign-library" Err bitreich.org 70 i- ,(so-path openssl-releases-dir openssl-release "libcrypto.so")) Err bitreich.org 70 i- (cl-user::fncall "cffi:load-foreign-library" Err bitreich.org 70 i- ,(so-path openssl-releases-dir openssl-release "libssl.so")) Err bitreich.org 70 i- (pushnew :cl+ssl-foreign-libs-already-loaded *features*))))) Err bitreich.org 70 i- (tg-utils::write-to-file Err bitreich.org 70 i- (alexandria:map-product (lambda (lisp openssl-release) Err bitreich.org 70 i- (list (tg-agent::implementation-identifier lisp) Err bitreich.org 70 i- openssl-release Err bitreich.org 70 i- (getf (run-lib-test lisp openssl-release) Err bitreich.org 70 i- :status))) Err bitreich.org 70 i- lisps Err bitreich.org 70 i- openssl-releases) Err bitreich.org 70 i- (merge-pathnames "resutls.lisp" test-run-dir))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun clean-fasls (test-run-dir) Err bitreich.org 70 i- (cl-fad:delete-directory-and-files (fasl-root test-run-dir))) Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/test/run-on-many-lisps-and-openssls/run-on-server.lisp b/3rdparties/software/cl+ssl-20190202-git/test/run-on-many-lisps-and-openssls/run-on-server.lisp /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/test/run-on-many-lisps-and-openssls/run-on-server.lisp.gph bitreich.org 70 i@@ -1,100 +0,0 @@ Err bitreich.org 70 i-(defparameter *this-dir* Err bitreich.org 70 i- (if *load-truename* Err bitreich.org 70 i- (make-pathname :name nil :type nil :defaults *load-truename*) Err bitreich.org 70 i- ;; for slime: Err bitreich.org 70 i- #P"/home/testgrid/cl+ssl/cl-plus-ssl/test/run-on-many-lisps-and-openssls/")) Err bitreich.org 70 i- Err bitreich.org 70 i-(pushnew "/home/testgrid/cl-test-grid/" asdf:*central-registry* :test #'equal) Err bitreich.org 70 i- Err bitreich.org 70 i-(load (merge-pathnames "run-on-many-lisps-and-openssls.lisp" *this-dir*)) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *abcl-1.5.0* Err bitreich.org 70 i- (make-instance 'lisp-exe:abcl Err bitreich.org 70 i- :java-exe-path "java" Err bitreich.org 70 i- :abcl-jar-path "/home/testgrid/lisps/abcl-bin-1.5.0/abcl.jar")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *acl-10.0* Err bitreich.org 70 i- (make-instance 'lisp-exe:acl Err bitreich.org 70 i- :exe-path "/home/testgrid/lisps/acl100/alisp")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *acl-10.0m* Err bitreich.org 70 i- (make-instance 'lisp-exe:acl Err bitreich.org 70 i- :exe-path "/home/testgrid/lisps/acl100/mlisp")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *acl-10.0-smp* Err bitreich.org 70 i- (make-instance 'lisp-exe:acl Err bitreich.org 70 i- :exe-path "/home/testgrid/lisps/acl100-smp/alisp")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *acl-10.0m-smp* Err bitreich.org 70 i- (make-instance 'lisp-exe:acl Err bitreich.org 70 i- :exe-path "/home/testgrid/lisps/acl100-smp/mlisp")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *ccl-1.11.5* Err bitreich.org 70 i- (make-instance 'lisp-exe:ccl Err bitreich.org 70 i- :exe-path "/home/testgrid/lisps/ccl-1.11.5/lx86cl")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *sbcl-1.3.21* Err bitreich.org 70 i- (make-instance 'lisp-exe:sbcl Err bitreich.org 70 i- :exe-path "/home/testgrid/lisps/sbcl-bin-1.3.21/run.sh")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *cmucl-2016-12* Err bitreich.org 70 i- (make-instance 'lisp-exe:cmucl Err bitreich.org 70 i- :exe-path "/home/testgrid/lisps/cmucl-2016-12/bin/lisp")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *cmucl-2016-12* Err bitreich.org 70 i- (make-instance 'lisp-exe:cmucl Err bitreich.org 70 i- :exe-path "/home/testgrid/lisps/cmucl-2016-12/bin/lisp")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *cmucl-21d* Err bitreich.org 70 i- (make-instance 'lisp-exe:cmucl Err bitreich.org 70 i- :exe-path "/home/testgrid/lisps/cmucl-21d/bin/lisp")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *ecl-16.1.2-bytecode* Err bitreich.org 70 i- (make-instance 'lisp-exe:ecl Err bitreich.org 70 i- :exe-path "/home/testgrid/lisps/ecl-bin-16.1.2/bin/ecl" Err bitreich.org 70 i- :compiler :bytecode)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *ecl-16.1.2-lisp-to-c* Err bitreich.org 70 i- (make-instance 'lisp-exe:ecl Err bitreich.org 70 i- :exe-path "/home/testgrid/lisps/ecl-bin-16.1.2/bin/ecl" Err bitreich.org 70 i- :compiler :lisp-to-c)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *clisp* Err bitreich.org 70 i- (make-instance 'lisp-exe:clisp :exe-path "/usr/bin/clisp")) Err bitreich.org 70 i- Err bitreich.org 70 i-(run-on-many-lisps-and-openssls:clean-fasls (merge-pathnames "workdir/" *this-dir*)) Err bitreich.org 70 i- Err bitreich.org 70 i-(let ((*print-pretty* t)) Err bitreich.org 70 i- (format t "~%~S~%" Err bitreich.org 70 i- (time Err bitreich.org 70 i- (run-on-many-lisps-and-openssls:run Err bitreich.org 70 i- :test-run-description '(:lib-world "quicklisp 2019-01-07 + cl+ssl.head" Err bitreich.org 70 i- :contact-email "avodonosov@yandex.ru") Err bitreich.org 70 i- :test-run-dir (merge-pathnames "workdir/" *this-dir*) Err bitreich.org 70 i- :quicklisp-dir (merge-pathnames "quicklisp/" (user-homedir-pathname)) Err bitreich.org 70 i- ;; if we want the cl+ssl from the parent folder Err bitreich.org 70 i- :cl+ssl-location (uiop:pathname-parent-directory-pathname Err bitreich.org 70 i- (uiop:pathname-parent-directory-pathname *this-dir*)) Err bitreich.org 70 i- ;; if we want the cl+ssl version from quicklisp Err bitreich.org 70 i- ;:cl+ssl-location nil Err bitreich.org 70 i- Err bitreich.org 70 i- :lisps (list *sbcl-1.3.21* Err bitreich.org 70 i- *ccl-1.11.5* Err bitreich.org 70 i- *abcl-1.5.0* Err bitreich.org 70 i- *acl-10.0* *acl-10.0m* *acl-10.0-smp* *acl-10.0m-smp* Err bitreich.org 70 i- *clisp* Err bitreich.org 70 i- *ecl-16.1.2-bytecode* Err bitreich.org 70 i- *ecl-16.1.2-lisp-to-c* Err bitreich.org 70 i- *cmucl-21d* Err bitreich.org 70 i- ) Err bitreich.org 70 i- Err bitreich.org 70 i- :openssl-releases '("openssl-0.9.8zh" Err bitreich.org 70 i- "openssl-1.0.0s" Err bitreich.org 70 i- "openssl-1.0.2q" Err bitreich.org 70 i- "openssl-1.1.0j" Err bitreich.org 70 i- "openssl-1.1.1a" Err bitreich.org 70 i- ) Err bitreich.org 70 i- :openssl-releases-dir (merge-pathnames "openssl-releases/bin/" Err bitreich.org 70 i- *this-dir*))))) Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/test/run-on-many-lisps-and-openssls/run-on-server.sh b/3rdparties/software/cl+ssl-20190202-git/test/run-on-many-lisps-and-openssls/run-on-server.sh /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/test/run-on-many-lisps-and-openssls/run-on-server.sh.gph bitreich.org 70 i@@ -1,3 +0,0 @@ Err bitreich.org 70 i-#!/bin/sh Err bitreich.org 70 i-cd "`dirname $0`" Err bitreich.org 70 i-~/lisps/ccl-1.11/lx86cl --heap-reserve 200M --load run-on-server.lisp --eval "(quit)" Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/test/sni.lisp b/3rdparties/software/cl+ssl-20190202-git/test/sni.lisp /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/test/sni.lisp.gph bitreich.org 70 i@@ -1,42 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: LISP; Syntax: COMMON-LISP; indent-tabs-mode: nil; coding: utf-8; show-trailing-whitespace: t -*- Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl+ssl.test) Err bitreich.org 70 i- Err bitreich.org 70 i-(def-suite :cl+ssl.sni :in :cl+ssl Err bitreich.org 70 i- :description "Server Name Indications tests") Err bitreich.org 70 i- Err bitreich.org 70 i-(in-suite :cl+ssl.sni) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-request-to-sni-test-server (sni-enabled) Err bitreich.org 70 i- (usocket:with-client-socket (socket stream "sni.velox.ch" 443 Err bitreich.org 70 i- :element-type '(unsigned-byte 8)) Err bitreich.org 70 i- (let* ((ssl-stream (cl+ssl:make-ssl-client-stream stream Err bitreich.org 70 i- :hostname (if sni-enabled "sni.velox.ch"))) Err bitreich.org 70 i- (char-stream (flexi-streams:make-flexi-stream ssl-stream Err bitreich.org 70 i- :external-format '(:utf-8 :eol-style :crlf))) Err bitreich.org 70 i- (reply-buf (make-string 1000))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (format char-stream "GET / HTTP/1.1~%") Err bitreich.org 70 i- (format char-stream "Host: sni.velox.ch~%~%") Err bitreich.org 70 i- (finish-output char-stream) Err bitreich.org 70 i- (read-sequence reply-buf char-stream) Err bitreich.org 70 i- reply-buf) Err bitreich.org 70 i- (close ssl-stream))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun sni-test-request-succeeded-p (response) Err bitreich.org 70 i- (search "Great!" response)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun sni-test-request-failed-p (response) Err bitreich.org 70 i- (search "Unfortunately" response)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Disable the SNI tests because sni.velox.ch was shut down and we Err bitreich.org 70 i-;; haven't found a replacement. Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; (test (sni.disabled :compile-at :definition-time) Err bitreich.org 70 i-;; (is-true (sni-test-request-failed-p (make-request-to-sni-test-server nil)) Err bitreich.org 70 i-;; "Request to SNI test server should've failed because SNI was disabled")) Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; (test (sni.enabled :compile-at :definition-time) Err bitreich.org 70 i-;; (is-true (sni-test-request-succeeded-p (make-request-to-sni-test-server t)) Err bitreich.org 70 i-;; "Request to SNI test server should've succeseeded because SNI was enabled")) Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/test/verify-hostname.lisp b/3rdparties/software/cl+ssl-20190202-git/test/verify-hostname.lisp /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/test/verify-hostname.lisp.gph bitreich.org 70 i@@ -1,89 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: LISP; Syntax: COMMON-LISP; indent-tabs-mode: nil; coding: utf-8; show-trailing-whitespace: t -*- Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl+ssl.test) Err bitreich.org 70 i- Err bitreich.org 70 i-(def-suite :cl+ssl.verify-hostname :in :cl+ssl Err bitreich.org 70 i- :description "Hostname verification tests") Err bitreich.org 70 i- Err bitreich.org 70 i-(in-suite :cl+ssl.verify-hostname) Err bitreich.org 70 i- Err bitreich.org 70 i-(test veriy-hostname-success Err bitreich.org 70 i- ;; presented identifier, reference identifier, validation and parsing result Err bitreich.org 70 i- (let ((tests '(("www.example.com" "WWW.eXamPle.CoM" (nil)) ;; case insensitive match Err bitreich.org 70 i- ("www.example.com." "www.example.com" (nil)) ;; ignore trailing dots (prevenet *.com. matches) Err bitreich.org 70 i- ("www.example.com" "www.example.com." (nil)) Err bitreich.org 70 i- ("*.example.com" "www.example.com" (t "" ".example.com" t)) Err bitreich.org 70 i- ("b*z.example.com" "buzz.example.com" (t "b" "z.example.com" nil)) Err bitreich.org 70 i- ("*baz.example.com" "foobaz.example.com" (t "" "baz.example.com" nil)) Err bitreich.org 70 i- ("baz*.example.com" "baz1.example.com" (t "baz" ".example.com" nil))))) Err bitreich.org 70 i- (loop for (i r v) in tests do Err bitreich.org 70 i- (is (equalp (multiple-value-list (cl+ssl::validate-and-parse-wildcard-identifier i r)) v)) Err bitreich.org 70 i- (is (cl+ssl::try-match-hostname i r))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(test verify-hostname-fail Err bitreich.org 70 i- (let ((tests '(("*.com" "eXamPle.CoM") Err bitreich.org 70 i- (".com." "example.com.") Err bitreich.org 70 i- ("*.www.example.com" "www.example.com.") Err bitreich.org 70 i- ("foo.*.example.com" "foo.bar.example.com.") Err bitreich.org 70 i- ("xn--*.example.com" "xn-foobar.example.com") Err bitreich.org 70 i- ("*fooxn--bar.example.com" "bazfooxn--bar.example.com") Err bitreich.org 70 i- ("*.akamaized.net" "tv.eurosport.com") Err bitreich.org 70 i- ("a*c.example.com" "abcd.example.com") Err bitreich.org 70 i- ("*baz.example.com" "foobuzz.example.com")))) Err bitreich.org 70 i- (loop for (i r) in tests do Err bitreich.org 70 i- (is-false (cl+ssl::try-match-hostname i r))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun full-cert-path (name) Err bitreich.org 70 i- (merge-pathnames (concatenate 'string Err bitreich.org 70 i- "test/certs/" Err bitreich.org 70 i- name) Err bitreich.org 70 i- (asdf:component-pathname (asdf:find-system :cl+ssl.test)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun load-cert(name) Err bitreich.org 70 i- (let ((full-path (full-cert-path name))) Err bitreich.org 70 i- (unless (probe-file full-path) Err bitreich.org 70 i- (error "Unable to find certificate ~a~%Full path: ~a" name full-path)) Err bitreich.org 70 i- (cl+ssl:decode-certificate-from-file full-path))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-cert ((name var) &body body) Err bitreich.org 70 i- `(let* ((,var (load-cert ,name))) Err bitreich.org 70 i- (when (cffi:null-pointer-p ,var) Err bitreich.org 70 i- (error "Unable to load certificate: ~a" ,name)) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn ,@body) Err bitreich.org 70 i- (cl+ssl::x509-free ,var)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(test verify-google-cert Err bitreich.org 70 i- (with-cert ("google.der" cert) Err bitreich.org 70 i- (is-true (cl+ssl:verify-hostname cert Err bitreich.org 70 i- "qwe.fr.doubleclick.net")))) Err bitreich.org 70 i- Err bitreich.org 70 i-(test verify-google-cert-dns-wildcard Err bitreich.org 70 i- (with-cert ("google_wildcard.der" cert) Err bitreich.org 70 i- (is-true (cl+ssl:verify-hostname cert Err bitreich.org 70 i- "www.google.co.uk")))) Err bitreich.org 70 i- Err bitreich.org 70 i-(test verify-google-cert-without-dns Err bitreich.org 70 i- (with-cert ("google_nodns.der" cert) Err bitreich.org 70 i- (is-true (cl+ssl:verify-hostname cert Err bitreich.org 70 i- "www.google.co.uk")))) Err bitreich.org 70 i- Err bitreich.org 70 i-(test verify-google-cert-printable-string Err bitreich.org 70 i- (with-cert ("google_printable.der" cert) Err bitreich.org 70 i- (is-true (cl+ssl:verify-hostname cert Err bitreich.org 70 i- "www.google.co.uk")))) Err bitreich.org 70 i- Err bitreich.org 70 i-(test verify-google-cert-teletex-string Err bitreich.org 70 i- (with-cert ("google_teletex.der" cert) Err bitreich.org 70 i- (is-true (cl+ssl:verify-hostname cert Err bitreich.org 70 i- "www.google.co.uk")))) Err bitreich.org 70 i- Err bitreich.org 70 i-(test verify-google-cert-bmp-string Err bitreich.org 70 i- (with-cert ("google_bmp.der" cert) Err bitreich.org 70 i- (is-true (cl+ssl:verify-hostname cert Err bitreich.org 70 i- "google.co.uk")))) Err bitreich.org 70 i- Err bitreich.org 70 i-(test verify-google-cert-universal-string Err bitreich.org 70 i- (with-cert ("google_universal.der" cert) Err bitreich.org 70 i- (is-true (cl+ssl:verify-hostname cert Err bitreich.org 70 i- "google.co.uk")))) Err bitreich.org 70 1diff --git a/3rdparties/software/cl+ssl-20190202-git/todo.txt b/3rdparties/software/cl+ssl-20190202-git/todo.txt /scm/clic/file/3rdparties/software/cl+ssl-20190202-git/todo.txt.gph bitreich.org 70 i@@ -1,31 +0,0 @@ Err bitreich.org 70 i-- Fix the CCL crash. Err bitreich.org 70 i-- Separate project page and a Git repo for trivial-gray-streams. Err bitreich.org 70 i-- Remove the ENSURE-INITIALIZED function from the public API. Err bitreich.org 70 i- It was only intoroduced to provide users access to the RAND-SEEND Err bitreich.org 70 i- which we decided to pass as a parameter to the ENSURE-INITIALIZED. Err bitreich.org 70 i- We did this because solaris users complained, as Solaris doesn't Err bitreich.org 70 i- have /dev/random, /dev/urnandom files which OpenSSL uses to initialize Err bitreich.org 70 i- it's random number generator. But now we know that on Solaris people can Err bitreich.org 70 i- use EGD: The Entropy Gathering Daemon: http://egd.sourceforge.net/, Err bitreich.org 70 i- and OpenSSL uses it if it's running on a systems without /dev/random. Err bitreich.org 70 i- Therefore we should get rid of the ENSURE-INITIALIZED and just Err bitreich.org 70 i- put an excerpt from the OpenSSL docs about what software should Err bitreich.org 70 i- be installed on the systems without /dev/random. Err bitreich.org 70 i-- The stream-fd function is confusing when it's called with ssl-stream as Err bitreich.org 70 i- a parameter; a developer might think this function allows to retrieve a Err bitreich.org 70 i- socket file descriptor from an ssl-strem, but this function is implemented Err bitreich.org 70 i- only for "native" socket streams provided by the Lisp implementation. Err bitreich.org 70 i- Makes sense to implement it for ssl-stream too. Err bitreich.org 70 i-- The ssl-error-syscall condition uses (err-get-error) in it's :report Err bitreich.org 70 i- function. This is not correct; (err-get-error) should be queried Err bitreich.org 70 i- when the error occurs. The result might be stored in a slot of Err bitreich.org 70 i- the ssl-error-syscall and printed by the :report function. Err bitreich.org 70 i-- Fix LispBIO. Err bitreich.org 70 i-- Extract the low-level SSL code into a separate library that supports Err bitreich.org 70 i- both OpenSSL and GnuTLS (maybe into two thin FFI libraries). Err bitreich.org 70 i-- Implement SSL in IOLib adding an API system that only defines stubs that Err bitreich.org 70 i- signal an error, and adding implementation systems using the before Err bitreich.org 70 i- mentioned thin FFI wrapper libraries. IOLib doesn't support windows, Err bitreich.org 70 i- therefore with this plan we will either need to drop Windows support Err bitreich.org 70 i- (at tleast for the IOLib based asynch subset of features), or Err bitreich.org 70 i- implement Windows support in IOLib. Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/CHANGELOG b/3rdparties/software/flexi-streams-20190107-git/CHANGELOG /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/CHANGELOG.gph bitreich.org 70 i@@ -1,297 +0,0 @@ Err bitreich.org 70 i-Version 1.0.18 Err bitreich.org 70 i-2018-12-12 Err bitreich.org 70 i-peek-byte for in-memory streams (Christopher Eames) Err bitreich.org 70 i- Err bitreich.org 70 i-Version 1.0.17 Err bitreich.org 70 i-2018-06-05 Err bitreich.org 70 i-Fixes to octets-to-string. Err bitreich.org 70 i- Err bitreich.org 70 i-Version 1.0.16 Err bitreich.org 70 i-2016-12-19 Err bitreich.org 70 i-Remove (safety 0). (Stas Boukarev) Err bitreich.org 70 i-Don't assume simple vectors in output-stream-sequence-length. (Stas Boukarev) Err bitreich.org 70 i-Produce an error when loaded on implementations without unicode. (Stas Boukarev) Err bitreich.org 70 i- Err bitreich.org 70 i-Version 1.0.15 Err bitreich.org 70 i-2015-07-01 Err bitreich.org 70 i-Support strings as external-format name specifiers (LispAlien) Err bitreich.org 70 i- Err bitreich.org 70 i-Version 1.0.14 Err bitreich.org 70 i-2014-11-28 Err bitreich.org 70 i-update support information (Hans Huebner) Err bitreich.org 70 i- Err bitreich.org 70 i-Version 1.0.13 Err bitreich.org 70 i-2014-05-18 Err bitreich.org 70 i-fix version number (Hans Huebner) Err bitreich.org 70 i- Err bitreich.org 70 i-Version 1.0.12 Err bitreich.org 70 i-2013-12-30 Err bitreich.org 70 i-Update :description Err bitreich.org 70 i- Err bitreich.org 70 i-Version 1.0.11 Err bitreich.org 70 i-2013-12-30 Err bitreich.org 70 i-Don't reset column to NIL on internal write operations (Anton Vodonosov) Err bitreich.org 70 i- Err bitreich.org 70 i-Version 1.0.10 Err bitreich.org 70 i-2013-12-09 Err bitreich.org 70 i-Fix file-position errors (markv) Err bitreich.org 70 i- Err bitreich.org 70 i-Version 1.0.9 Err bitreich.org 70 i-2013-11-21 Err bitreich.org 70 i-Dummy release without any functional changes Err bitreich.org 70 i- Err bitreich.org 70 i-Version 1.0.8 Err bitreich.org 70 i-Make write-sequence call transform-octet (Jason Miller) Err bitreich.org 70 i-Fix for CMUCL (Raymond Toy, Xu Jingtao) Err bitreich.org 70 i- Err bitreich.org 70 i-Version 1.0.7 Err bitreich.org 70 i-2008-08-26 Err bitreich.org 70 i-Don't read a second time if the first READ-SEQUENCE already reached EOF (Drakma bug report by Stas Boukarev) Err bitreich.org 70 i- Err bitreich.org 70 i-Version 1.0.6 Err bitreich.org 70 i-2008-08-25 Err bitreich.org 70 i-Don't use a reserve if we can't rewind the stream (Drakma bug report by Stas Boukarev) Err bitreich.org 70 i- Err bitreich.org 70 i-Version 1.0.5 Err bitreich.org 70 i-2008-08-01 Err bitreich.org 70 i-Export RUN-ALL-TESTS instead of RUN-TESTS (caught by Nick Allen) Err bitreich.org 70 i- Err bitreich.org 70 i-Version 1.0.4 Err bitreich.org 70 i-2008-07-25 Err bitreich.org 70 i-Cosmetic surgery on test suite Err bitreich.org 70 i- Err bitreich.org 70 i-Version 1.0.3 Err bitreich.org 70 i-2008-05-30 Err bitreich.org 70 i-Better checks for invalid UTF-8 data Err bitreich.org 70 i-New restart ACCEPT-OVERLONG-SEQUENCE Err bitreich.org 70 i-More tests Err bitreich.org 70 i-Unused variable in CHECK-END Err bitreich.org 70 i- Err bitreich.org 70 i-Version 1.0.2 Err bitreich.org 70 i-2008-05-26 Err bitreich.org 70 i-Removed unnecessary test Err bitreich.org 70 i- Err bitreich.org 70 i-Version 1.0.1 Err bitreich.org 70 i-2008-05-26 Err bitreich.org 70 i-Removed two faulty declarations Err bitreich.org 70 i- Err bitreich.org 70 i-Version 1.0.0 Err bitreich.org 70 i-2008-05-26 Err bitreich.org 70 i-More redesign for the sake of performance Err bitreich.org 70 i-More checks for invalid data Err bitreich.org 70 i-More tests Err bitreich.org 70 i-Exported functions for length computation Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.15.3 Err bitreich.org 70 i-2008-05-23 Err bitreich.org 70 i-Avoid CHANGE-CLASS on LispWorks if possible Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.15.2 Err bitreich.org 70 i-2008-05-22 Err bitreich.org 70 i-Remove debugging remnants (d'ooh!) Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.15.1 Err bitreich.org 70 i-2008-05-21 Err bitreich.org 70 i-Direct access to underlying stream in case of binary sequence operations Err bitreich.org 70 i-More tests Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.15.0 Err bitreich.org 70 i-2008-05-21 Err bitreich.org 70 i-Complete redesign, various additions, bugfixes, performance improvements (with the help of Hans Hbner) Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.14.0 Err bitreich.org 70 i-2007-12-30 Err bitreich.org 70 i-Some fixes for LispWorks (when the underlying stream is a character stream) Err bitreich.org 70 i-Optimized methods for UNREAD-CHAR% in case of 8-bit encodings Err bitreich.org 70 i-More tests Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.13.1 Err bitreich.org 70 i-2007-10-11 Err bitreich.org 70 i-Small fix for AllegroCL's "modern" mode Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.13.0 Err bitreich.org 70 i-2007-09-13 Err bitreich.org 70 i-Better optimizations for STREAM-WRITE-SEQUENCE (thanks to Anton Vodonosov) Err bitreich.org 70 i-Bugfix for STREAM-WRITE-BYTE Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.12.0 Err bitreich.org 70 i-2007-09-07 Err bitreich.org 70 i-Added "bound" for flexi input streams Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.11.2 Err bitreich.org 70 i-2007-04-06 Err bitreich.org 70 i-Fixed bug in STREAM-WRITE-STRING implementation (reported by quasi) Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.11.1 Err bitreich.org 70 i-2007-03-22 Err bitreich.org 70 i-More ugliness for a bit of output performance in special cases Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.11.0 Err bitreich.org 70 i-2007-03-09 Err bitreich.org 70 i-Re-factoring of how encoding errors are handled (patch by Anton Vodonosov) Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.10.3 Err bitreich.org 70 i-2007-02-19 Err bitreich.org 70 i-Fixed bug in UTF-16 output (patch by Stelian Ionescu) Err bitreich.org 70 i-Fixed *SUBSTITUTION-CHAR* example in docs Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.10.2 Err bitreich.org 70 i-2007-01-12 Err bitreich.org 70 i-Another fix - sigh... Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.10.1 Err bitreich.org 70 i-2007-01-11 Err bitreich.org 70 i-Fixed the last change (thanks to Red Daly) Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.10.0 Err bitreich.org 70 i-2007-01-10 Err bitreich.org 70 i-Added transformers to in-memory streams (thanks to Chris Dean) Err bitreich.org 70 i-Documentation fixes Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.9.1 Err bitreich.org 70 i-2006-12-27 Err bitreich.org 70 i-More performance improvements (thanks to Robert J. Macomber for SBCL hints) Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.9.0 Err bitreich.org 70 i-2006-12-27 Err bitreich.org 70 i-Complete re-factoring to improve performance and reduce consing (at least for LispWorks) Err bitreich.org 70 i-Added some tests Err bitreich.org 70 i-Added *PROVIDE-USE-VALUE-RESTART* Err bitreich.org 70 i-Added FLEXI-STREAM-POSITION-SPEC-ERROR condition Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.8.0 Err bitreich.org 70 i-2006-11-14 Err bitreich.org 70 i-Added USE-VALUE restart for STREAM-READ-CHAR (thanks to Anton Vodonosov) Err bitreich.org 70 i-Added *SUBSTITUTION-CHAR* Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.7.2 Err bitreich.org 70 i-2006-11-06 Err bitreich.org 70 i-Removed unnecessary CHECK-EOF-NO-HANG also for in-memory streams (see 0.5.8) Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.7.1 Err bitreich.org 70 i-2006-10-31 Err bitreich.org 70 i-Argh, missed the most important part... Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.7.0 Err bitreich.org 70 i-2006-10-31 Err bitreich.org 70 i-Added KOI8-R (thanks to Igor Plekhov) Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.6.6 Err bitreich.org 70 i-2006-10-06 Err bitreich.org 70 i-Made sure not to apply Gray stream generic function to underlying stream Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.6.5 Err bitreich.org 70 i-2006-10-06 Err bitreich.org 70 i-Optimized STREAM-WRITE-SEQUENCE and STREAM-READ-SEQUENCE for arrays of octets Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.6.4 Err bitreich.org 70 i-2006-10-05 Err bitreich.org 70 i-Made READ-BYTE/WRITE-BYTE the default behaviour, i.e. we only use the sequence functions for LW if necessary Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.6.3 Err bitreich.org 70 i-2006-10-02 Err bitreich.org 70 i-Fixed problems with CMUCL Gray streams implementation (reported by Ivan Toshkov) Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.6.2 Err bitreich.org 70 i-2006-09-23 Err bitreich.org 70 i-Added method for MAKE-LOAD-FORM which is needed for OpenMCL (reported by Robert Synnott, see Drakma mailing list) Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.6.1 Err bitreich.org 70 i-2006-09-15 Err bitreich.org 70 i-Switched FILE-POSITION implementation to TRIVIAL-GRAY-STREAMS (thanks to David Lichteblau) Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.6.0 Err bitreich.org 70 i-2006-09-13 Err bitreich.org 70 i-Implemented file positions for LispWorks Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.5.10 Err bitreich.org 70 i-2006-09-04 Err bitreich.org 70 i-Flexi streams can have binary element types now Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.5.9 Err bitreich.org 70 i-2006-09-01 Err bitreich.org 70 i-Added string functions Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.5.8 Err bitreich.org 70 i-2006-09-01 Err bitreich.org 70 i-CHECK-EOF-NO-HANG is not necessary Err bitreich.org 70 i-Updated LW links in documentation Err bitreich.org 70 i-Changed package handling in system definition (thanks to Christophe Rhodes) Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.5.7 Err bitreich.org 70 i-2006-06-29 Err bitreich.org 70 i-Removed incompatibility with AllegroCL, see mailing list archive for details Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.5.6 Err bitreich.org 70 i-2006-06-13 Err bitreich.org 70 i-Fixed Emacs mode lines (reported by Robert Goldman) Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.5.5 Err bitreich.org 70 i-2006-05-24 Err bitreich.org 70 i-Some small fixes for LW Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.5.4 Err bitreich.org 70 i-2006-05-18 Err bitreich.org 70 i-Workaround for CMUCL (thanks to Satyaki Das) Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.5.3 Err bitreich.org 70 i-2006-03-06 Err bitreich.org 70 i-Fixed more typos in stream.lisp Err bitreich.org 70 i-Added missing exports in packages.lisp Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.5.2 Err bitreich.org 70 i-2006-01-26 Err bitreich.org 70 i-Fixed typos in stream.lisp (thanks to James Bielman) Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.5.1 Err bitreich.org 70 i-2005-12-14 Err bitreich.org 70 i-Some bugfixes in output.lisp (thanks to Jan Idzikowski) Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.5.0 Err bitreich.org 70 i-2005-12-11 Err bitreich.org 70 i-Added in-memory streams Err bitreich.org 70 i-Exported types Err bitreich.org 70 i-Added specific conditions Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.4.1 Err bitreich.org 70 i-2005-12-05 Err bitreich.org 70 i-Updated docs Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.4.0 Err bitreich.org 70 i-2005-12-05 Err bitreich.org 70 i-Added US-ASCII encoding Err bitreich.org 70 i-Added *USE-REPLACEMENT-CHAR* Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.3.0 Err bitreich.org 70 i-2005-11-26 Err bitreich.org 70 i-Added UNREAD-BYTE and PEEK-BYTE Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.2.4 Err bitreich.org 70 i-2005-11-26 Err bitreich.org 70 i-WIN32:CODE-PAGE only for LispWorks Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.2.3 Err bitreich.org 70 i-2005-11-26 Err bitreich.org 70 i-Added STREAM-TERPRI to appease AllegroCL Err bitreich.org 70 i-Fixed typo in docs Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.2.2 Err bitreich.org 70 i-2005-11-26 Err bitreich.org 70 i-Patch to make class precendence list work in AllegroCL (David Lichteblau) Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.2.1 Err bitreich.org 70 i-2005-11-25 Err bitreich.org 70 i-Adapted to new TRIVIAL-GRAY-STREAMS API (David Lichteblau) Err bitreich.org 70 i-More changes for portability, specifically for SBCL (David Lichteblau) Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.2.0 Err bitreich.org 70 i-2005-11-25 Err bitreich.org 70 i-Portable version thanks to TRIVIAL-GRAY-STREAMS (David Lichteblau) Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.1.1 Err bitreich.org 70 i-2005-11-25 Err bitreich.org 70 i-Documentation enhancements Err bitreich.org 70 i- Err bitreich.org 70 i-Version 0.1.0 Err bitreich.org 70 i-2005-11-25 Err bitreich.org 70 i-Initial public release Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/README.md b/3rdparties/software/flexi-streams-20190107-git/README.md /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/README.md.gph bitreich.org 70 i@@ -1,12 +0,0 @@ Err bitreich.org 70 i---------------------------------------------------------- Err bitreich.org 70 i-FLEXI-STREAMS - Flexible bivalent streams for Common Lisp Err bitreich.org 70 i---------------------------------------------------------- Err bitreich.org 70 i- Err bitreich.org 70 i-FLEXI-STREAMS implements "virtual" bivalent streams that can be Err bitreich.org 70 i-layered atop real binary or bivalent streams and that can be used to Err bitreich.org 70 i-read and write character data in various single- or multi-octet Err bitreich.org 70 i-encodings which can be changed on the fly. It also supplies in-memory Err bitreich.org 70 i-binary streams which are similar to string streams. Err bitreich.org 70 i- Err bitreich.org 70 i-Complete documentation for CL-INTERPOL can be found in the `docs` Err bitreich.org 70 i-directory or at the [project documentation site](https://edicl.github.io/flexi-streams/). Err bitreich.org 70 i-\ No newline at end of file Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/ascii.lisp b/3rdparties/software/flexi-streams-20190107-git/ascii.lisp /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/ascii.lisp.gph bitreich.org 70 i@@ -1,36 +0,0 @@ Err bitreich.org 70 i-;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: FLEXI-STREAMS; Base: 10 -*- Err bitreich.org 70 i-;;; $Header: /usr/local/cvsrep/flexi-streams/ascii.lisp,v 1.9 2008/05/18 21:32:15 edi Exp $ Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Copyright (c) 2005-2008, Dr. Edmund Weitz. All rights reserved. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Redistribution and use in source and binary forms, with or without Err bitreich.org 70 i-;;; modification, are permitted provided that the following conditions Err bitreich.org 70 i-;;; are met: Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions of source code must retain the above copyright Err bitreich.org 70 i-;;; notice, this list of conditions and the following disclaimer. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions in binary form must reproduce the above Err bitreich.org 70 i-;;; copyright notice, this list of conditions and the following Err bitreich.org 70 i-;;; disclaimer in the documentation and/or other materials Err bitreich.org 70 i-;;; provided with the distribution. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED Err bitreich.org 70 i-;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED Err bitreich.org 70 i-;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE Err bitreich.org 70 i-;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY Err bitreich.org 70 i-;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL Err bitreich.org 70 i-;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE Err bitreich.org 70 i-;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS Err bitreich.org 70 i-;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING Err bitreich.org 70 i-;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS Err bitreich.org 70 i-;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :flexi-streams) Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +ascii-table+ Err bitreich.org 70 i- ;; currently not used, but we leave it in here just in case... Err bitreich.org 70 i- (make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533)) Err bitreich.org 70 i- "An array enumerating the character codes for the US-ASCII Err bitreich.org 70 i-encoding.") Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/code-pages.lisp b/3rdparties/software/flexi-streams-20190107-git/code-pages.lisp /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/code-pages.lisp.gph bitreich.org 70 i@@ -1,62 +0,0 @@ Err bitreich.org 70 i-;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: FLEXI-STREAMS; Base: 10 -*- Err bitreich.org 70 i-;;; $Header: /usr/local/cvsrep/flexi-streams/code-pages.lisp,v 1.7 2008/05/18 21:32:15 edi Exp $ Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Copyright (c) 2005-2008, Dr. Edmund Weitz. All rights reserved. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Redistribution and use in source and binary forms, with or without Err bitreich.org 70 i-;;; modification, are permitted provided that the following conditions Err bitreich.org 70 i-;;; are met: Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions of source code must retain the above copyright Err bitreich.org 70 i-;;; notice, this list of conditions and the following disclaimer. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions in binary form must reproduce the above Err bitreich.org 70 i-;;; copyright notice, this list of conditions and the following Err bitreich.org 70 i-;;; disclaimer in the documentation and/or other materials Err bitreich.org 70 i-;;; provided with the distribution. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED Err bitreich.org 70 i-;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED Err bitreich.org 70 i-;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE Err bitreich.org 70 i-;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY Err bitreich.org 70 i-;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL Err bitreich.org 70 i-;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE Err bitreich.org 70 i-;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS Err bitreich.org 70 i-;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING Err bitreich.org 70 i-;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS Err bitreich.org 70 i-;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :flexi-streams) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; the following code was auto-generated with LWW Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +code-page-tables+ Err bitreich.org 70 i- `((437 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 199 252 233 226 228 224 229 231 234 235 232 239 238 236 196 197 201 230 198 244 246 242 251 249 255 214 220 162 163 165 8359 402 225 237 243 250 241 209 170 186 191 8976 172 189 188 161 171 187 9617 9618 9619 9474 9508 9569 9570 9558 9557 9571 9553 9559 9565 9564 9563 9488 9492 9524 9516 9500 9472 9532 9566 9567 9562 9556 9577 9574 9568 9552 9580 9575 9576 9572 9573 9561 9560 9554 9555 9579 9578 9496 9484 9608 9604 9612 9616 9600 945 223 915 960 931 963 181 964 934 920 937 948 8734 966 949 8745 8801 177 8805 8804 8992 8993 247 8776 176 8729 183 8730 8319 178 9632 160))) Err bitreich.org 70 i- (720 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 128 129 233 226 132 224 134 231 234 235 232 239 238 141 142 143 144 1617 1618 244 164 1600 251 249 1569 1570 1571 1572 163 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 171 187 9617 9618 9619 9474 9508 9569 9570 9558 9557 9571 9553 9559 9565 9564 9563 9488 9492 9524 9516 9500 9472 9532 9566 9567 9562 9556 9577 9574 9568 9552 9580 9575 9576 9572 9573 9561 9560 9554 9555 9579 9578 9496 9484 9608 9604 9612 9616 9600 1590 1591 1592 1593 1594 1601 181 1602 1603 1604 1605 1606 1607 1608 1609 1610 8801 1611 1612 1613 1614 1615 1616 8776 176 8729 183 8730 8319 178 9632 160))) Err bitreich.org 70 i- (737 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 931 932 933 934 935 936 937 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 963 962 964 965 966 967 968 9617 9618 9619 9474 9508 9569 9570 9558 9557 9571 9553 9559 9565 9564 9563 9488 9492 9524 9516 9500 9472 9532 9566 9567 9562 9556 9577 9574 9568 9552 9580 9575 9576 9572 9573 9561 9560 9554 9555 9579 9578 9496 9484 9608 9604 9612 9616 9600 969 940 941 942 970 943 972 973 971 974 902 904 905 906 908 910 911 177 8805 8804 938 939 247 8776 176 8729 183 8730 8319 178 9632 160))) Err bitreich.org 70 i- (775 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 262 252 233 257 228 291 229 263 322 275 342 343 299 377 196 197 201 230 198 333 246 290 162 346 347 214 220 248 163 216 215 164 256 298 243 379 380 378 8221 166 169 174 172 189 188 321 171 187 9617 9618 9619 9474 9508 260 268 280 278 9571 9553 9559 9565 302 352 9488 9492 9524 9516 9500 9472 9532 370 362 9562 9556 9577 9574 9568 9552 9580 381 261 269 281 279 303 353 371 363 382 9496 9484 9608 9604 9612 9616 9600 211 223 332 323 245 213 181 324 310 311 315 316 326 274 325 8217 173 177 8220 190 182 167 247 8222 176 8729 183 185 179 178 9632 160))) Err bitreich.org 70 i- (850 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 199 252 233 226 228 224 229 231 234 235 232 239 238 236 196 197 201 230 198 244 246 242 251 249 255 214 220 248 163 216 215 402 225 237 243 250 241 209 170 186 191 174 172 189 188 161 171 187 9617 9618 9619 9474 9508 193 194 192 169 9571 9553 9559 9565 162 165 9488 9492 9524 9516 9500 9472 9532 227 195 9562 9556 9577 9574 9568 9552 9580 164 240 208 202 203 200 305 205 206 207 9496 9484 9608 9604 166 204 9600 211 223 212 210 245 213 181 254 222 218 219 217 253 221 175 180 173 177 8215 190 182 167 247 184 176 168 183 185 179 178 9632 160))) Err bitreich.org 70 i- (852 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 199 252 233 226 228 367 263 231 322 235 336 337 238 377 196 262 201 313 314 244 246 317 318 346 347 214 220 356 357 321 215 269 225 237 243 250 260 261 381 382 280 281 172 378 268 351 171 187 9617 9618 9619 9474 9508 193 194 282 350 9571 9553 9559 9565 379 380 9488 9492 9524 9516 9500 9472 9532 258 259 9562 9556 9577 9574 9568 9552 9580 164 273 272 270 203 271 327 205 206 283 9496 9484 9608 9604 354 366 9600 211 223 212 323 324 328 352 353 340 218 341 368 253 221 355 180 173 733 731 711 728 167 247 184 176 168 729 369 344 345 9632 160))) Err bitreich.org 70 i- (855 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 1106 1026 1107 1027 1105 1025 1108 1028 1109 1029 1110 1030 1111 1031 1112 1032 1113 1033 1114 1034 1115 1035 1116 1036 1118 1038 1119 1039 1102 1070 1098 1066 1072 1040 1073 1041 1094 1062 1076 1044 1077 1045 1092 1060 1075 1043 171 187 9617 9618 9619 9474 9508 1093 1061 1080 1048 9571 9553 9559 9565 1081 1049 9488 9492 9524 9516 9500 9472 9532 1082 1050 9562 9556 9577 9574 9568 9552 9580 164 1083 1051 1084 1052 1085 1053 1086 1054 1087 9496 9484 9608 9604 1055 1103 9600 1071 1088 1056 1089 1057 1090 1058 1091 1059 1078 1046 1074 1042 1100 1068 8470 173 1099 1067 1079 1047 1096 1064 1101 1069 1097 1065 1095 1063 167 9632 160))) Err bitreich.org 70 i- (857 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 199 252 233 226 228 224 229 231 234 235 232 239 238 305 196 197 201 230 198 244 246 242 251 249 304 214 220 248 163 216 350 351 225 237 243 250 241 209 286 287 191 174 172 189 188 161 171 187 9617 9618 9619 9474 9508 193 194 192 169 9571 9553 9559 9565 162 165 9488 9492 9524 9516 9500 9472 9532 227 195 9562 9556 9577 9574 9568 9552 9580 164 186 170 202 203 200 65533 205 206 207 9496 9484 9608 9604 166 204 9600 211 223 212 210 245 213 181 65533 215 218 219 217 236 255 175 180 173 177 65533 190 182 167 247 184 176 168 183 185 179 178 9632 160))) Err bitreich.org 70 i- (860 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 199 252 233 226 227 224 193 231 234 202 232 205 212 236 195 194 201 192 200 244 245 242 218 249 204 213 220 162 163 217 8359 211 225 237 243 250 241 209 170 186 191 210 172 189 188 161 171 187 9617 9618 9619 9474 9508 9569 9570 9558 9557 9571 9553 9559 9565 9564 9563 9488 9492 9524 9516 9500 9472 9532 9566 9567 9562 9556 9577 9574 9568 9552 9580 9575 9576 9572 9573 9561 9560 9554 9555 9579 9578 9496 9484 9608 9604 9612 9616 9600 945 223 915 960 931 963 181 964 934 920 937 948 8734 966 949 8745 8801 177 8805 8804 8992 8993 247 8776 176 8729 183 8730 8319 178 9632 160))) Err bitreich.org 70 i- (861 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 199 252 233 226 228 224 229 231 234 235 232 208 240 222 196 197 201 230 198 244 246 254 251 221 253 214 220 248 163 216 8359 402 225 237 243 250 193 205 211 218 191 8976 172 189 188 161 171 187 9617 9618 9619 9474 9508 9569 9570 9558 9557 9571 9553 9559 9565 9564 9563 9488 9492 9524 9516 9500 9472 9532 9566 9567 9562 9556 9577 9574 9568 9552 9580 9575 9576 9572 9573 9561 9560 9554 9555 9579 9578 9496 9484 9608 9604 9612 9616 9600 945 223 915 960 931 963 181 964 934 920 937 948 8734 966 949 8745 8801 177 8805 8804 8992 8993 247 8776 176 8729 183 8730 8319 178 9632 160))) Err bitreich.org 70 i- (862 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 162 163 165 8359 402 225 237 243 250 241 209 170 186 191 8976 172 189 188 161 171 187 9617 9618 9619 9474 9508 9569 9570 9558 9557 9571 9553 9559 9565 9564 9563 9488 9492 9524 9516 9500 9472 9532 9566 9567 9562 9556 9577 9574 9568 9552 9580 9575 9576 9572 9573 9561 9560 9554 9555 9579 9578 9496 9484 9608 9604 9612 9616 9600 945 223 915 960 931 963 181 964 934 920 937 948 8734 966 949 8745 8801 177 8805 8804 8992 8993 247 8776 176 8729 183 8730 8319 178 9632 160))) Err bitreich.org 70 i- (863 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 199 252 233 226 194 224 182 231 234 235 232 239 238 8215 192 167 201 200 202 244 203 207 251 249 164 212 220 162 163 217 219 402 166 180 243 250 168 184 179 175 206 8976 172 189 188 190 171 187 9617 9618 9619 9474 9508 9569 9570 9558 9557 9571 9553 9559 9565 9564 9563 9488 9492 9524 9516 9500 9472 9532 9566 9567 9562 9556 9577 9574 9568 9552 9580 9575 9576 9572 9573 9561 9560 9554 9555 9579 9578 9496 9484 9608 9604 9612 9616 9600 945 223 915 960 931 963 181 964 934 920 937 948 8734 966 949 8745 8801 177 8805 8804 8992 8993 247 8776 176 8729 183 8730 8319 178 9632 160))) Err bitreich.org 70 i- (864 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 176 183 8729 8730 9618 9472 9474 9532 9508 9516 9500 9524 9488 9484 9492 9496 946 8734 966 177 189 188 8776 171 187 65271 65272 155 156 65275 65276 159 160 173 65154 163 164 65156 65533 65533 65166 65167 65173 65177 1548 65181 65185 65189 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 65233 1563 65201 65205 65209 1567 162 65152 65153 65155 65157 65226 65163 65165 65169 65171 65175 65179 65183 65187 65191 65193 65195 65197 65199 65203 65207 65211 65215 65217 65221 65227 65231 166 172 247 215 65225 1600 65235 65239 65243 65247 65251 65255 65259 65261 65263 65267 65213 65228 65230 65229 65249 65149 1617 65253 65257 65260 65264 65266 65232 65237 65269 65270 65245 65241 65265 9632 65533))) Err bitreich.org 70 i- (865 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 199 252 233 226 228 224 229 231 234 235 232 239 238 236 196 197 201 230 198 244 246 242 251 249 255 214 220 248 163 216 8359 402 225 237 243 250 241 209 170 186 191 8976 172 189 188 161 171 164 9617 9618 9619 9474 9508 9569 9570 9558 9557 9571 9553 9559 9565 9564 9563 9488 9492 9524 9516 9500 9472 9532 9566 9567 9562 9556 9577 9574 9568 9552 9580 9575 9576 9572 9573 9561 9560 9554 9555 9579 9578 9496 9484 9608 9604 9612 9616 9600 945 223 915 960 931 963 181 964 934 920 937 948 8734 966 949 8745 8801 177 8805 8804 8992 8993 247 8776 176 8729 183 8730 8319 178 9632 160))) Err bitreich.org 70 i- (866 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 9617 9618 9619 9474 9508 9569 9570 9558 9557 9571 9553 9559 9565 9564 9563 9488 9492 9524 9516 9500 9472 9532 9566 9567 9562 9556 9577 9574 9568 9552 9580 9575 9576 9572 9573 9561 9560 9554 9555 9579 9578 9496 9484 9608 9604 9612 9616 9600 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1025 1105 1028 1108 1031 1111 1038 1118 176 8729 183 8730 8470 164 9632 160))) Err bitreich.org 70 i- (869 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 902 135 183 172 166 8216 8217 904 8213 905 906 938 908 147 148 910 939 169 911 178 179 940 163 941 942 943 970 912 972 973 913 914 915 916 917 918 919 189 920 921 171 187 9617 9618 9619 9474 9508 922 923 924 925 9571 9553 9559 9565 926 927 9488 9492 9524 9516 9500 9472 9532 928 929 9562 9556 9577 9574 9568 9552 9580 931 932 933 934 935 936 937 945 946 947 9496 9484 9608 9604 948 949 9600 950 951 952 953 954 955 956 957 958 959 960 961 963 962 964 900 173 177 965 966 967 167 968 901 176 168 969 971 944 974 9632 160))) Err bitreich.org 70 i- (1250 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 8364 129 8218 131 8222 8230 8224 8225 136 8240 352 8249 346 356 381 377 144 8216 8217 8220 8221 8226 8211 8212 152 8482 353 8250 347 357 382 378 160 711 728 321 164 260 166 167 168 169 350 171 172 173 174 379 176 177 731 322 180 181 182 183 184 261 351 187 317 733 318 380 340 193 194 258 196 313 262 199 268 201 280 203 282 205 206 270 272 323 327 211 212 336 214 215 344 366 218 368 220 221 354 223 341 225 226 259 228 314 263 231 269 233 281 235 283 237 238 271 273 324 328 243 244 337 246 247 345 367 250 369 252 253 355 729))) Err bitreich.org 70 i- (1251 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 1026 1027 8218 1107 8222 8230 8224 8225 8364 8240 1033 8249 1034 1036 1035 1039 1106 8216 8217 8220 8221 8226 8211 8212 152 8482 1113 8250 1114 1116 1115 1119 160 1038 1118 1032 164 1168 166 167 1025 169 1028 171 172 173 174 1031 176 177 1030 1110 1169 181 182 183 1105 8470 1108 187 1112 1029 1109 1111 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103))) Err bitreich.org 70 i- (1252 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 8364 129 8218 402 8222 8230 8224 8225 710 8240 352 8249 338 141 381 143 144 8216 8217 8220 8221 8226 8211 8212 732 8482 353 8250 339 157 382 376 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255))) Err bitreich.org 70 i- (1253 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 8364 129 8218 402 8222 8230 8224 8225 136 8240 138 8249 140 141 142 143 144 8216 8217 8220 8221 8226 8211 8212 152 8482 154 8250 156 157 158 159 160 901 902 163 164 165 166 167 168 169 65533 171 172 173 174 8213 176 177 178 179 900 181 182 183 904 905 906 187 908 189 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 65533 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 65533))) Err bitreich.org 70 i- (1254 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 8364 129 8218 402 8222 8230 8224 8225 710 8240 352 8249 338 141 142 143 144 8216 8217 8220 8221 8226 8211 8212 732 8482 353 8250 339 157 158 376 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 286 209 210 211 212 213 214 215 216 217 218 219 220 304 350 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 287 241 242 243 244 245 246 247 248 249 250 251 252 305 351 255))) Err bitreich.org 70 i- (1255 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 8364 129 8218 402 8222 8230 8224 8225 710 8240 138 8249 140 141 142 143 144 8216 8217 8220 8221 8226 8211 8212 732 8482 154 8250 156 157 158 159 160 161 162 163 8362 165 166 167 168 169 215 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 247 187 188 189 190 191 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1520 1521 1522 1523 1524 65533 65533 65533 65533 65533 65533 65533 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 65533 65533 8206 8207 65533))) Err bitreich.org 70 i- (1256 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 8364 1662 8218 402 8222 8230 8224 8225 710 8240 1657 8249 338 1670 1688 1672 1711 8216 8217 8220 8221 8226 8211 8212 1705 8482 1681 8250 339 8204 8205 1722 160 1548 162 163 164 165 166 167 168 169 1726 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 1563 187 188 189 190 1567 1729 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 215 1591 1592 1593 1594 1600 1601 1602 1603 224 1604 226 1605 1606 1607 1608 231 232 233 234 235 1609 1610 238 239 1611 1612 1613 1614 244 1615 1616 247 1617 249 1618 251 252 8206 8207 1746))) Err bitreich.org 70 i- (1257 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 8364 129 8218 131 8222 8230 8224 8225 136 8240 138 8249 140 168 711 184 144 8216 8217 8220 8221 8226 8211 8212 152 8482 154 8250 156 175 731 159 160 65533 162 163 164 65533 166 167 216 169 342 171 172 173 174 198 176 177 178 179 180 181 182 183 248 185 343 187 188 189 190 230 260 302 256 262 196 197 280 274 268 201 377 278 290 310 298 315 352 323 325 211 332 213 214 215 370 321 346 362 220 379 381 223 261 303 257 263 228 229 281 275 269 233 378 279 291 311 299 316 353 324 326 243 333 245 246 247 371 322 347 363 252 380 382 729))) Err bitreich.org 70 i- (1258 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 8364 129 8218 402 8222 8230 8224 8225 710 8240 138 8249 338 141 142 143 144 8216 8217 8220 8221 8226 8211 8212 732 8482 154 8250 339 157 158 376 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 258 196 197 198 199 200 201 202 203 768 205 206 207 272 209 777 211 212 416 214 215 216 217 218 219 220 431 771 223 224 225 226 259 228 229 230 231 232 233 234 235 769 237 238 239 273 241 803 243 244 417 246 247 248 249 250 251 252 432 8363 255)))) Err bitreich.org 70 i- "A list of 8-bit Windows code pages where each element is a Err bitreich.org 70 i-cons with the car being the ID of the code page and the cdr being Err bitreich.org 70 i-a vector enumerating the corresponding character codes.") Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/conditions.lisp b/3rdparties/software/flexi-streams-20190107-git/conditions.lisp /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/conditions.lisp.gph bitreich.org 70 i@@ -1,108 +0,0 @@ Err bitreich.org 70 i-;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: FLEXI-STREAMS; Base: 10 -*- Err bitreich.org 70 i-;;; $Header: /usr/local/cvsrep/flexi-streams/conditions.lisp,v 1.9 2008/05/25 22:23:58 edi Exp $ Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Copyright (c) 2005-2008, Dr. Edmund Weitz. All rights reserved. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Redistribution and use in source and binary forms, with or without Err bitreich.org 70 i-;;; modification, are permitted provided that the following conditions Err bitreich.org 70 i-;;; are met: Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions of source code must retain the above copyright Err bitreich.org 70 i-;;; notice, this list of conditions and the following disclaimer. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions in binary form must reproduce the above Err bitreich.org 70 i-;;; copyright notice, this list of conditions and the following Err bitreich.org 70 i-;;; disclaimer in the documentation and/or other materials Err bitreich.org 70 i-;;; provided with the distribution. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED Err bitreich.org 70 i-;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED Err bitreich.org 70 i-;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE Err bitreich.org 70 i-;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY Err bitreich.org 70 i-;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL Err bitreich.org 70 i-;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE Err bitreich.org 70 i-;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS Err bitreich.org 70 i-;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING Err bitreich.org 70 i-;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS Err bitreich.org 70 i-;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :flexi-streams) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition flexi-stream-error (stream-error) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Superclass for all errors related to flexi Err bitreich.org 70 i-streams.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition flexi-stream-simple-error (flexi-stream-error simple-condition) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Like FLEXI-STREAM-ERROR but with formatting Err bitreich.org 70 i-capabilities.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition flexi-stream-element-type-error (flexi-stream-error) Err bitreich.org 70 i- ((element-type :initarg :element-type Err bitreich.org 70 i- :reader flexi-stream-element-type-error-element-type)) Err bitreich.org 70 i- (:report (lambda (condition stream) Err bitreich.org 70 i- (format stream "Element type ~S not allowed." Err bitreich.org 70 i- (flexi-stream-element-type-error-element-type condition)))) Err bitreich.org 70 i- (:documentation "Errors of this type are signalled if the flexi Err bitreich.org 70 i-stream has a wrong element type.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition flexi-stream-out-of-sync-error (flexi-stream-error) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:report (lambda (condition stream) Err bitreich.org 70 i- (declare (ignore condition)) Err bitreich.org 70 i- (format stream "Stream out of sync from previous Err bitreich.org 70 i-lookahead, couldn't rewind."))) Err bitreich.org 70 i- (:documentation "This can happen if you're trying to write to an IO Err bitreich.org 70 i-stream which had prior to that `looked ahead' while reading and now Err bitreich.org 70 i-can't `rewind' to the octet where you /should/ be.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition in-memory-stream-error (stream-error) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Superclass for all errors related to Err bitreich.org 70 i-IN-MEMORY streams.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition in-memory-stream-simple-error (in-memory-stream-error simple-condition) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Like IN-MEMORY-STREAM-ERROR but with formatting Err bitreich.org 70 i-capabilities.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition in-memory-stream-closed-error (in-memory-stream-error) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:report (lambda (condition stream) Err bitreich.org 70 i- (format stream "~S is closed." Err bitreich.org 70 i- (stream-error-stream condition)))) Err bitreich.org 70 i- (:documentation "An error that is signalled when someone is trying Err bitreich.org 70 i-to read from or write to a closed IN-MEMORY stream.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition in-memory-stream-position-spec-error (in-memory-stream-simple-error) Err bitreich.org 70 i- ((position-spec :initarg :position-spec Err bitreich.org 70 i- :reader in-memory-stream-position-spec-error-position-spec)) Err bitreich.org 70 i- (:documentation "Errors of this type are signalled if an erroneous Err bitreich.org 70 i-position spec is used in conjunction with FILE-POSITION.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition external-format-condition (simple-condition) Err bitreich.org 70 i- ((external-format :initarg :external-format Err bitreich.org 70 i- :initform nil Err bitreich.org 70 i- :reader external-format-condition-external-format)) Err bitreich.org 70 i- (:documentation "Superclass for all conditions related to external Err bitreich.org 70 i-formats.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition external-format-error (external-format-condition error) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Superclass for all errors related to external Err bitreich.org 70 i-formats.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition external-format-encoding-error (external-format-error) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Errors of this type are signalled if there is an Err bitreich.org 70 i-encoding problem.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun signal-encoding-error (external-format format-control &rest format-args) Err bitreich.org 70 i- "Convenience function similar to ERROR to signal conditions of type Err bitreich.org 70 i-EXTERNAL-FORMAT-ENCODING-ERROR." Err bitreich.org 70 i- (error 'external-format-encoding-error Err bitreich.org 70 i- :format-control format-control Err bitreich.org 70 i- :format-arguments format-args Err bitreich.org 70 i- :external-format external-format)) Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/decode.lisp b/3rdparties/software/flexi-streams-20190107-git/decode.lisp /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/decode.lisp.gph bitreich.org 70 i@@ -1,468 +0,0 @@ Err bitreich.org 70 i-;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: FLEXI-STREAMS; Base: 10 -*- Err bitreich.org 70 i-;;; $Header: /usr/local/cvsrep/flexi-streams/decode.lisp,v 1.35 2008/08/26 10:59:22 edi Exp $ Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Copyright (c) 2005-2008, Dr. Edmund Weitz. All rights reserved. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Redistribution and use in source and binary forms, with or without Err bitreich.org 70 i-;;; modification, are permitted provided that the following conditions Err bitreich.org 70 i-;;; are met: Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions of source code must retain the above copyright Err bitreich.org 70 i-;;; notice, this list of conditions and the following disclaimer. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions in binary form must reproduce the above Err bitreich.org 70 i-;;; copyright notice, this list of conditions and the following Err bitreich.org 70 i-;;; disclaimer in the documentation and/or other materials Err bitreich.org 70 i-;;; provided with the distribution. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED Err bitreich.org 70 i-;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED Err bitreich.org 70 i-;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE Err bitreich.org 70 i-;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY Err bitreich.org 70 i-;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL Err bitreich.org 70 i-;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE Err bitreich.org 70 i-;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS Err bitreich.org 70 i-;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING Err bitreich.org 70 i-;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS Err bitreich.org 70 i-;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :flexi-streams) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun recover-from-encoding-error (external-format format-control &rest format-args) Err bitreich.org 70 i- "Helper function used by OCTETS-TO-CHAR-CODE below to deal with Err bitreich.org 70 i-encoding errors. Checks if *SUBSTITUTION-CHAR* is not NIL and returns Err bitreich.org 70 i-its character code in this case. Otherwise signals an Err bitreich.org 70 i-EXTERNAL-FORMAT-ENCODING-ERROR as determined by the arguments to this Err bitreich.org 70 i-function and provides a corresponding USE-VALUE restart." Err bitreich.org 70 i- (when *substitution-char* Err bitreich.org 70 i- (return-from recover-from-encoding-error (char-code *substitution-char*))) Err bitreich.org 70 i- (restart-case Err bitreich.org 70 i- (apply #'signal-encoding-error external-format format-control format-args) Err bitreich.org 70 i- (use-value (char) Err bitreich.org 70 i- :report "Specify a character to be used instead." Err bitreich.org 70 i- :interactive (lambda () Err bitreich.org 70 i- (loop Err bitreich.org 70 i- (format *query-io* "Type a character: ") Err bitreich.org 70 i- (let ((line (read-line *query-io*))) Err bitreich.org 70 i- (when (= 1 (length line)) Err bitreich.org 70 i- (return (list (char line 0))))))) Err bitreich.org 70 i- (char-code char)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric octets-to-char-code (format reader) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (:documentation "Converts a sequence of octets to a character code Err bitreich.org 70 i-\(which is returned, or NIL in case of EOF) using the external format Err bitreich.org 70 i-FORMAT. The sequence is obtained by calling the function \(which must Err bitreich.org 70 i-be a functional object) READER with no arguments which should return Err bitreich.org 70 i-one octet per call. In the case of EOF, READER should return NIL. Err bitreich.org 70 i- Err bitreich.org 70 i-The special variable *CURRENT-UNREADER* must be bound correctly Err bitreich.org 70 i-whenever this function is called.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric octets-to-string* (format sequence start end) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (:documentation "A generic function which dispatches on the external Err bitreich.org 70 i-format and does the real work for OCTETS-TO-STRING.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod octets-to-string* :around (format (list list) start end) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (octets-to-string* format (coerce list 'vector) start end)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro define-sequence-readers ((format-class) &body body) Err bitreich.org 70 i- "Non-hygienic utility macro which defines methods for READ-SEQUENCE* Err bitreich.org 70 i-and OCTETS-TO-STRING* for the class FORMAT-CLASS. BODY is described Err bitreich.org 70 i-in the docstring of DEFINE-CHAR-ENCODERS but can additionally contain Err bitreich.org 70 i-a form \(UNGET
) which has to be replaced by the correct code to Err bitreich.org 70 i-`unread' the octets for the character designated by ." Err bitreich.org 70 i- (let* ((body `((block char-decoder Err bitreich.org 70 i- (locally Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- ,@body))))) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (defmethod read-sequence* ((format ,format-class) flexi-input-stream sequence start end) Err bitreich.org 70 i- (with-accessors ((position flexi-stream-position) Err bitreich.org 70 i- (bound flexi-stream-bound) Err bitreich.org 70 i- (octet-stack flexi-stream-octet-stack) Err bitreich.org 70 i- (last-octet flexi-stream-last-octet) Err bitreich.org 70 i- (last-char-code flexi-stream-last-char-code) Err bitreich.org 70 i- (stream flexi-stream-stream)) Err bitreich.org 70 i- flexi-input-stream Err bitreich.org 70 i- (let* (buffer Err bitreich.org 70 i- (buffer-pos 0) Err bitreich.org 70 i- (buffer-end 0) Err bitreich.org 70 i- (index start) Err bitreich.org 70 i- donep Err bitreich.org 70 i- ;; whether we will later be able to rewind the stream if Err bitreich.org 70 i- ;; needed (to get rid of unused octets in the buffer) Err bitreich.org 70 i- (can-rewind-p (maybe-rewind stream 0)) Err bitreich.org 70 i- (factor (encoding-factor format)) Err bitreich.org 70 i- (integer-factor (floor factor)) Err bitreich.org 70 i- ;; it's an interesting question whether it makes sense Err bitreich.org 70 i- ;; performance-wise to make RESERVE significantly bigger Err bitreich.org 70 i- ;; (and thus put potentially a lot more octets into Err bitreich.org 70 i- ;; OCTET-STACK), especially for UTF-8 Err bitreich.org 70 i- (reserve (cond ((or (not (floatp factor)) Err bitreich.org 70 i- (not can-rewind-p)) 0) Err bitreich.org 70 i- (t (ceiling (* (- factor integer-factor) (- end start))))))) Err bitreich.org 70 i- (declare (fixnum buffer-pos buffer-end index integer-factor reserve) Err bitreich.org 70 i- (boolean can-rewind-p)) Err bitreich.org 70 i- (flet ((compute-fill-amount () Err bitreich.org 70 i- "Computes the amount of octets we can savely read into Err bitreich.org 70 i-the buffer without violating the stream's bound \(if there is one) and Err bitreich.org 70 i-without potentially reading much more than we need \(unless we can Err bitreich.org 70 i-rewind afterwards)." Err bitreich.org 70 i- (let ((minimum (min (the fixnum (+ (the fixnum (* integer-factor Err bitreich.org 70 i- (the fixnum (- end index)))) Err bitreich.org 70 i- reserve)) Err bitreich.org 70 i- +buffer-size+))) Err bitreich.org 70 i- (cond (bound (min minimum (- bound position))) Err bitreich.org 70 i- (t minimum)))) Err bitreich.org 70 i- (fill-buffer (end) Err bitreich.org 70 i- "Tries to fill the buffer from BUFFER-POS to END and Err bitreich.org 70 i-returns NIL if the buffer doesn't contain any new data." Err bitreich.org 70 i- (when donep Err bitreich.org 70 i- (return-from fill-buffer nil)) Err bitreich.org 70 i- ;; put data from octet stack into buffer if there is any Err bitreich.org 70 i- (loop Err bitreich.org 70 i- (when (>= buffer-pos end) Err bitreich.org 70 i- (return)) Err bitreich.org 70 i- (let ((next-octet (pop octet-stack))) Err bitreich.org 70 i- (cond (next-octet Err bitreich.org 70 i- (setf (aref (the (array octet *) buffer) buffer-pos) (the octet next-octet)) Err bitreich.org 70 i- (incf buffer-pos)) Err bitreich.org 70 i- (t (return))))) Err bitreich.org 70 i- (setq buffer-end (read-sequence buffer stream Err bitreich.org 70 i- :start buffer-pos Err bitreich.org 70 i- :end end)) Err bitreich.org 70 i- ;; we reached EOF, so we remember this Err bitreich.org 70 i- (when (< buffer-end end) Err bitreich.org 70 i- (setq donep t)) Err bitreich.org 70 i- ;; BUFFER-POS is only greater than zero if the buffer Err bitreich.org 70 i- ;; already contains unread data from the octet stack Err bitreich.org 70 i- ;; (see below), so we test for ZEROP here and do /not/ Err bitreich.org 70 i- ;; compare with BUFFER-POS Err bitreich.org 70 i- (unless (zerop buffer-end) Err bitreich.org 70 i- (incf position buffer-end)))) Err bitreich.org 70 i- (let ((minimum (compute-fill-amount))) Err bitreich.org 70 i- (declare (fixnum minimum)) Err bitreich.org 70 i- (setq buffer (make-octet-buffer minimum)) Err bitreich.org 70 i- ;; fill buffer for the first time or return immediately if Err bitreich.org 70 i- ;; we don't succeed Err bitreich.org 70 i- (unless (fill-buffer minimum) Err bitreich.org 70 i- (return-from read-sequence* start))) Err bitreich.org 70 i- (setq buffer-pos 0) Err bitreich.org 70 i- (macrolet ((iterate (set-place) Err bitreich.org 70 i- "A very unhygienic macro to implement the Err bitreich.org 70 i-actual iteration through the sequence including housekeeping for the Err bitreich.org 70 i-flexi stream. SET-PLACE is the place \(using the index INDEX) used to Err bitreich.org 70 i-access the sequence." Err bitreich.org 70 i- `(flet ((leave () Err bitreich.org 70 i- "This is the function used to Err bitreich.org 70 i-abort the LOOP iteration below." Err bitreich.org 70 i- (when (> index start) Err bitreich.org 70 i- (setq last-octet nil Err bitreich.org 70 i- last-char-code ,(sublis '((index . (1- index))) set-place))) Err bitreich.org 70 i- (return-from read-sequence* index))) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- (when (>= index end) Err bitreich.org 70 i- ;; check if there are octets in the Err bitreich.org 70 i- ;; buffer we didn't use - see Err bitreich.org 70 i- ;; COMPUTE-FILL-AMOUNT above Err bitreich.org 70 i- (let ((rest (- buffer-end buffer-pos))) Err bitreich.org 70 i- (when (plusp rest) Err bitreich.org 70 i- (or (and can-rewind-p Err bitreich.org 70 i- (maybe-rewind stream rest)) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- (when (>= buffer-pos buffer-end) Err bitreich.org 70 i- (return)) Err bitreich.org 70 i- (decf buffer-end) Err bitreich.org 70 i- (push (aref (the (array octet *) buffer) buffer-end) Err bitreich.org 70 i- octet-stack))))) Err bitreich.org 70 i- (leave)) Err bitreich.org 70 i- (let ((next-char-code Err bitreich.org 70 i- (progn (symbol-macrolet Err bitreich.org 70 i- ((octet-getter Err bitreich.org 70 i- ;; this is the code to retrieve the next octet (or Err bitreich.org 70 i- ;; NIL) and to fill the buffer if needed Err bitreich.org 70 i- (block next-octet Err bitreich.org 70 i- (when (>= buffer-pos buffer-end) Err bitreich.org 70 i- (setq buffer-pos 0) Err bitreich.org 70 i- (unless (fill-buffer (compute-fill-amount)) Err bitreich.org 70 i- (return-from next-octet))) Err bitreich.org 70 i- (prog1 Err bitreich.org 70 i- (aref (the (array octet *) buffer) buffer-pos) Err bitreich.org 70 i- (incf buffer-pos))))) Err bitreich.org 70 i- (macrolet ((unget (form) Err bitreich.org 70 i- `(unread-char% ,form flexi-input-stream))) Err bitreich.org 70 i- ,',@body))))) Err bitreich.org 70 i- (unless next-char-code Err bitreich.org 70 i- (leave)) Err bitreich.org 70 i- (setf ,set-place (code-char next-char-code)) Err bitreich.org 70 i- (incf index)))))) Err bitreich.org 70 i- (etypecase sequence Err bitreich.org 70 i- (string (iterate (char sequence index))) Err bitreich.org 70 i- (array (iterate (aref sequence index))) Err bitreich.org 70 i- (list (iterate (nth index sequence))))))))) Err bitreich.org 70 i- (defmethod octets-to-string* ((format ,format-class) sequence start end) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end)) Err bitreich.org 70 i- (let* ((i start) Err bitreich.org 70 i- (string-length (compute-number-of-chars format sequence start end)) Err bitreich.org 70 i- (string (make-array string-length :element-type 'char*))) Err bitreich.org 70 i- (declare (fixnum i string-length)) Err bitreich.org 70 i- (loop for j of-type fixnum from 0 below string-length Err bitreich.org 70 i- do (setf (schar string j) Err bitreich.org 70 i- (code-char (macrolet ((unget (form) Err bitreich.org 70 i- `(decf i (character-length format ,form)))) Err bitreich.org 70 i- (symbol-macrolet ((octet-getter (and (< i end) Err bitreich.org 70 i- (prog1 Err bitreich.org 70 i- (the octet (aref sequence i)) Err bitreich.org 70 i- (incf i))))) Err bitreich.org 70 i- ,@body)))) Err bitreich.org 70 i- finally (return string))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro define-char-decoders ((lf-format-class cr-format-class crlf-format-class) &body body) Err bitreich.org 70 i- "Non-hygienic utility macro which defines several decoding-related Err bitreich.org 70 i-methods for the classes LF-FORMAT-CLASS, CR-FORMAT-CLASS, and Err bitreich.org 70 i-CRLF-FORMAT-CLASS where it is assumed that CR-FORMAT-CLASS is the same Err bitreich.org 70 i-encoding as LF-FORMAT-CLASS but with CR instead of LF line endings and Err bitreich.org 70 i-similar for CRLF-FORMAT-CLASS, i.e. LF-FORMAT-CLASS is the base class. Err bitreich.org 70 i-BODY is a code template for the code to read octets and return one Err bitreich.org 70 i-character code. BODY must contain a symbol OCTET-GETTER representing Err bitreich.org 70 i-the form which is used to obtain the next octet." Err bitreich.org 70 i- (let* ((body (with-unique-names (char-code) Err bitreich.org 70 i- `((let ((,char-code (progn ,@body))) Err bitreich.org 70 i- (when (and ,char-code Err bitreich.org 70 i- (or (<= #xd8 (logand* #x00ff (ash* ,char-code -8)) #xdf) Err bitreich.org 70 i- (> ,char-code #x10ffff))) Err bitreich.org 70 i- (recover-from-encoding-error format "Illegal code point ~A \(#x~:*~X)." ,char-code)) Err bitreich.org 70 i- ,char-code))))) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (defmethod octets-to-char-code ((format ,lf-format-class) reader) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (function reader)) Err bitreich.org 70 i- (symbol-macrolet ((octet-getter (funcall reader))) Err bitreich.org 70 i- ,@(sublis '((char-decoder . octets-to-char-code)) Err bitreich.org 70 i- body))) Err bitreich.org 70 i- (define-sequence-readers (,lf-format-class) ,@body) Err bitreich.org 70 i- (define-sequence-readers (,cr-format-class) Err bitreich.org 70 i- ,(with-unique-names (char-code) Err bitreich.org 70 i- `(let ((,char-code (progn ,@body))) Err bitreich.org 70 i- (case ,char-code Err bitreich.org 70 i- (#.+cr+ #.(char-code #\Newline)) Err bitreich.org 70 i- (otherwise ,char-code))))) Err bitreich.org 70 i- (define-sequence-readers (,crlf-format-class) Err bitreich.org 70 i- ,(with-unique-names (char-code next-char-code get-char-code) Err bitreich.org 70 i- `(flet ((,get-char-code () ,@body)) Err bitreich.org 70 i- (let ((,char-code (,get-char-code))) Err bitreich.org 70 i- (case ,char-code Err bitreich.org 70 i- (#.+cr+ Err bitreich.org 70 i- (let ((,next-char-code (,get-char-code))) Err bitreich.org 70 i- (case ,next-char-code Err bitreich.org 70 i- (#.+lf+ #.(char-code #\Newline)) Err bitreich.org 70 i- ;; we saw a CR but no LF afterwards, but then the data Err bitreich.org 70 i- ;; ended, so we just return #\Return Err bitreich.org 70 i- ((nil) +cr+) Err bitreich.org 70 i- ;; if the character we peeked at wasn't a Err bitreich.org 70 i- ;; linefeed character we unread its constituents Err bitreich.org 70 i- (otherwise (unget (code-char ,next-char-code)) Err bitreich.org 70 i- ,char-code)))) Err bitreich.org 70 i- (otherwise ,char-code))))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-char-decoders (flexi-latin-1-format flexi-cr-latin-1-format flexi-crlf-latin-1-format) Err bitreich.org 70 i- octet-getter) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-char-decoders (flexi-ascii-format flexi-cr-ascii-format flexi-crlf-ascii-format) Err bitreich.org 70 i- (when-let (octet octet-getter) Err bitreich.org 70 i- (if (> (the octet octet) 127) Err bitreich.org 70 i- (recover-from-encoding-error format Err bitreich.org 70 i- "No character which corresponds to octet #x~X." octet) Err bitreich.org 70 i- octet))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-char-decoders (flexi-8-bit-format flexi-cr-8-bit-format flexi-crlf-8-bit-format) Err bitreich.org 70 i- (with-accessors ((decoding-table external-format-decoding-table)) Err bitreich.org 70 i- format Err bitreich.org 70 i- (when-let (octet octet-getter) Err bitreich.org 70 i- (let ((char-code (aref (the (simple-array char-code-integer *) decoding-table) Err bitreich.org 70 i- (the octet octet)))) Err bitreich.org 70 i- (if (or (null char-code) Err bitreich.org 70 i- (= (the char-code-integer char-code) 65533)) Err bitreich.org 70 i- (recover-from-encoding-error format Err bitreich.org 70 i- "No character which corresponds to octet #x~X." octet) Err bitreich.org 70 i- char-code))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-char-decoders (flexi-utf-8-format flexi-cr-utf-8-format flexi-crlf-utf-8-format) Err bitreich.org 70 i- (let (first-octet-seen) Err bitreich.org 70 i- (declare (boolean first-octet-seen)) Err bitreich.org 70 i- (macrolet ((read-next-byte () Err bitreich.org 70 i- '(prog1 Err bitreich.org 70 i- (or octet-getter Err bitreich.org 70 i- (cond (first-octet-seen Err bitreich.org 70 i- (return-from char-decoder Err bitreich.org 70 i- (recover-from-encoding-error format Err bitreich.org 70 i- "End of data while in UTF-8 sequence."))) Err bitreich.org 70 i- (t (return-from char-decoder nil)))) Err bitreich.org 70 i- (setq first-octet-seen t)))) Err bitreich.org 70 i- (flet ((recover-from-overlong-sequence (value) Err bitreich.org 70 i- (restart-case Err bitreich.org 70 i- (recover-from-encoding-error format "`Overlong' UTF-8 sequence for code point #x~X." Err bitreich.org 70 i- value) Err bitreich.org 70 i- (accept-overlong-sequence () Err bitreich.org 70 i- :report "Accept the code point and continue." Err bitreich.org 70 i- value)))) Err bitreich.org 70 i- (let ((octet (read-next-byte))) Err bitreich.org 70 i- (declare (type octet octet)) Err bitreich.org 70 i- (block utf-8-sequence Err bitreich.org 70 i- (multiple-value-bind (start count) Err bitreich.org 70 i- (cond ((not (logbitp 7 octet)) Err bitreich.org 70 i- ;; avoid the overlong checks below Err bitreich.org 70 i- (return-from utf-8-sequence octet)) Err bitreich.org 70 i- ((= #b11000000 (logand* octet #b11100000)) Err bitreich.org 70 i- (values (logand* octet #b00011111) 1)) Err bitreich.org 70 i- ((= #b11100000 (logand* octet #b11110000)) Err bitreich.org 70 i- (values (logand* octet #b00001111) 2)) Err bitreich.org 70 i- ((= #b11110000 (logand* octet #b11111000)) Err bitreich.org 70 i- (values (logand* octet #b00000111) 3)) Err bitreich.org 70 i- (t (return-from char-decoder Err bitreich.org 70 i- (recover-from-encoding-error format Err bitreich.org 70 i- "Unexpected value #x~X at start of UTF-8 sequence." Err bitreich.org 70 i- octet)))) Err bitreich.org 70 i- (declare (fixnum count)) Err bitreich.org 70 i- (loop for result of-type code-point Err bitreich.org 70 i- = start then (+ (ash* result 6) Err bitreich.org 70 i- (logand* octet #b111111)) Err bitreich.org 70 i- repeat count Err bitreich.org 70 i- for octet of-type octet = (read-next-byte) Err bitreich.org 70 i- unless (= #b10000000 (logand* octet #b11000000)) Err bitreich.org 70 i- do (return-from char-decoder Err bitreich.org 70 i- (recover-from-encoding-error format Err bitreich.org 70 i- "Unexpected value #x~X in UTF-8 sequence." octet)) Err bitreich.org 70 i- finally (return (cond ((< result (ecase count Err bitreich.org 70 i- (1 #x00080) Err bitreich.org 70 i- (2 #x00800) Err bitreich.org 70 i- (3 #x10000))) Err bitreich.org 70 i- (recover-from-overlong-sequence result)) Err bitreich.org 70 i- (t result))))))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-char-decoders (flexi-utf-16-le-format flexi-cr-utf-16-le-format flexi-crlf-utf-16-le-format) Err bitreich.org 70 i- (let (first-octet-seen) Err bitreich.org 70 i- (declare (boolean first-octet-seen)) Err bitreich.org 70 i- (macrolet ((read-next-byte () Err bitreich.org 70 i- '(prog1 Err bitreich.org 70 i- (or octet-getter Err bitreich.org 70 i- (cond (first-octet-seen Err bitreich.org 70 i- (return-from char-decoder Err bitreich.org 70 i- (recover-from-encoding-error format Err bitreich.org 70 i- "End of data while in UTF-16 sequence."))) Err bitreich.org 70 i- (t (return-from char-decoder nil)))) Err bitreich.org 70 i- (setq first-octet-seen t)))) Err bitreich.org 70 i- (flet ((read-next-word () Err bitreich.org 70 i- (+ (the octet (read-next-byte)) Err bitreich.org 70 i- (ash* (the octet (read-next-byte)) 8)))) Err bitreich.org 70 i- (declare (inline read-next-word)) Err bitreich.org 70 i- (let ((word (read-next-word))) Err bitreich.org 70 i- (declare (type (unsigned-byte 16) word)) Err bitreich.org 70 i- (cond ((<= #xd800 word #xdfff) Err bitreich.org 70 i- (let ((next-word (read-next-word))) Err bitreich.org 70 i- (declare (type (unsigned-byte 16) next-word)) Err bitreich.org 70 i- (unless (<= #xdc00 next-word #xdfff) Err bitreich.org 70 i- (return-from char-decoder Err bitreich.org 70 i- (recover-from-encoding-error format Err bitreich.org 70 i- "Unexpected UTF-16 word #x~X following #x~X." Err bitreich.org 70 i- next-word word))) Err bitreich.org 70 i- (+ (ash* (logand* #b1111111111 word) 10) Err bitreich.org 70 i- (logand* #b1111111111 next-word) Err bitreich.org 70 i- #x10000))) Err bitreich.org 70 i- (t word))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-char-decoders (flexi-utf-16-be-format flexi-cr-utf-16-be-format flexi-crlf-utf-16-be-format) Err bitreich.org 70 i- (let (first-octet-seen) Err bitreich.org 70 i- (declare (boolean first-octet-seen)) Err bitreich.org 70 i- (macrolet ((read-next-byte () Err bitreich.org 70 i- '(prog1 Err bitreich.org 70 i- (or octet-getter Err bitreich.org 70 i- (cond (first-octet-seen Err bitreich.org 70 i- (return-from char-decoder Err bitreich.org 70 i- (recover-from-encoding-error format Err bitreich.org 70 i- "End of data while in UTF-16 sequence."))) Err bitreich.org 70 i- (t (return-from char-decoder nil)))) Err bitreich.org 70 i- (setq first-octet-seen t)))) Err bitreich.org 70 i- (flet ((read-next-word () Err bitreich.org 70 i- (+ (ash* (the octet (read-next-byte)) 8) Err bitreich.org 70 i- (the octet (read-next-byte))))) Err bitreich.org 70 i- (declare (inline read-next-word)) Err bitreich.org 70 i- (let ((word (read-next-word))) Err bitreich.org 70 i- (declare (type (unsigned-byte 16) word)) Err bitreich.org 70 i- (cond ((<= #xd800 word #xdfff) Err bitreich.org 70 i- (let ((next-word (read-next-word))) Err bitreich.org 70 i- (declare (type (unsigned-byte 16) next-word)) Err bitreich.org 70 i- (unless (<= #xdc00 next-word #xdfff) Err bitreich.org 70 i- (return-from char-decoder Err bitreich.org 70 i- (recover-from-encoding-error format Err bitreich.org 70 i- "Unexpected UTF-16 word #x~X following #x~X." Err bitreich.org 70 i- next-word word))) Err bitreich.org 70 i- (+ (ash* (logand* #b1111111111 word) 10) Err bitreich.org 70 i- (logand* #b1111111111 next-word) Err bitreich.org 70 i- #x10000))) Err bitreich.org 70 i- (t word))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-char-decoders (flexi-utf-32-le-format flexi-cr-utf-32-le-format flexi-crlf-utf-32-le-format) Err bitreich.org 70 i- (let (first-octet-seen) Err bitreich.org 70 i- (declare (boolean first-octet-seen)) Err bitreich.org 70 i- (macrolet ((read-next-byte () Err bitreich.org 70 i- '(prog1 Err bitreich.org 70 i- (or octet-getter Err bitreich.org 70 i- (cond (first-octet-seen Err bitreich.org 70 i- (return-from char-decoder Err bitreich.org 70 i- (recover-from-encoding-error format Err bitreich.org 70 i- "End of data while in UTF-32 sequence."))) Err bitreich.org 70 i- (t (return-from char-decoder nil)))) Err bitreich.org 70 i- (setq first-octet-seen t)))) Err bitreich.org 70 i- (loop for count of-type fixnum from 0 to 24 by 8 Err bitreich.org 70 i- for octet of-type octet = (read-next-byte) Err bitreich.org 70 i- sum (ash* octet count))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-char-decoders (flexi-utf-32-be-format flexi-cr-utf-32-be-format flexi-crlf-utf-32-be-format) Err bitreich.org 70 i- (let (first-octet-seen) Err bitreich.org 70 i- (declare (boolean first-octet-seen)) Err bitreich.org 70 i- (macrolet ((read-next-byte () Err bitreich.org 70 i- '(prog1 Err bitreich.org 70 i- (or octet-getter Err bitreich.org 70 i- (cond (first-octet-seen Err bitreich.org 70 i- (return-from char-decoder Err bitreich.org 70 i- (recover-from-encoding-error format Err bitreich.org 70 i- "End of data while in UTF-32 sequence."))) Err bitreich.org 70 i- (t (return-from char-decoder nil)))) Err bitreich.org 70 i- (setq first-octet-seen t)))) Err bitreich.org 70 i- (loop for count of-type fixnum from 24 downto 0 by 8 Err bitreich.org 70 i- for octet of-type octet = (read-next-byte) Err bitreich.org 70 i- sum (ash* octet count))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod octets-to-char-code ((format flexi-cr-mixin) reader) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (ignore reader)) Err bitreich.org 70 i- (let ((char-code (call-next-method))) Err bitreich.org 70 i- (case char-code Err bitreich.org 70 i- (#.+cr+ #.(char-code #\Newline)) Err bitreich.org 70 i- (otherwise char-code)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod octets-to-char-code ((format flexi-crlf-mixin) reader) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (function *current-unreader*)) Err bitreich.org 70 i- (declare (ignore reader)) Err bitreich.org 70 i- (let ((char-code (call-next-method))) Err bitreich.org 70 i- (case char-code Err bitreich.org 70 i- (#.+cr+ Err bitreich.org 70 i- (let ((next-char-code (call-next-method))) Err bitreich.org 70 i- (case next-char-code Err bitreich.org 70 i- (#.+lf+ #.(char-code #\Newline)) Err bitreich.org 70 i- ;; we saw a CR but no LF afterwards, but then the data Err bitreich.org 70 i- ;; ended, so we just return #\Return Err bitreich.org 70 i- ((nil) +cr+) Err bitreich.org 70 i- ;; if the character we peeked at wasn't a Err bitreich.org 70 i- ;; linefeed character we unread its constituents Err bitreich.org 70 i- (otherwise (funcall *current-unreader* (code-char next-char-code)) Err bitreich.org 70 i- char-code)))) Err bitreich.org 70 i- (otherwise char-code)))) Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/docs/foo.txt b/3rdparties/software/flexi-streams-20190107-git/docs/foo.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/docs/foo.txt.gph bitreich.org 70 iBinary files differ. Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/docs/index.html b/3rdparties/software/flexi-streams-20190107-git/docs/index.html /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/docs/index.html.gph bitreich.org 70 i@@ -1,1119 +0,0 @@ Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- FLEXI-STREAMS - Flexible bivalent streams for Common Lisp Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-

FLEXI-STREAMS - Flexible bivalent streams for Common Lisp

Err bitreich.org 70 i- Err bitreich.org 70 i-
Err bitreich.org 70 i-
 

Abstract

Err bitreich.org 70 i- Err bitreich.org 70 i-FLEXI-STREAMS implements "virtual" bivalent streams that can be Err bitreich.org 70 i-layered atop real binary or bivalent streams and that can be used to Err bitreich.org 70 i-read and write character data in various single- or multi-octet Err bitreich.org 70 i-encodings which can be changed on the fly. It also supplies Err bitreich.org 70 i-in-memory binary streams which are similar to string streams. Err bitreich.org 70 i-

Err bitreich.org 70 i-The library needs a Common Lisp implementation that Err bitreich.org 70 i-supports Gray Err bitreich.org 70 i-streams and relies on David Err bitreich.org 70 i-Lichteblau's trivial-gray-streams Err bitreich.org 70 i-to offer portability between different Lisps. Err bitreich.org 70 i-

Err bitreich.org 70 i-The code comes with Err bitreich.org 70 i-a BSD-style Err bitreich.org 70 i-license so you can basically do with it whatever you want. Err bitreich.org 70 i- Err bitreich.org 70 i-

Err bitreich.org 70 i-Download shortcut: https://github.com/edicl/flexi-streams/releases/latest Err bitreich.org 70 i-

Err bitreich.org 70 i- Err bitreich.org 70 i-
 

Contents

Err bitreich.org 70 i-
    Err bitreich.org 70 i-
  1. Example usage Err bitreich.org 70 i-
  2. Download and installation Err bitreich.org 70 i-
  3. Support Err bitreich.org 70 i-
  4. The FLEXI-STREAMS dictionary Err bitreich.org 70 i-
      Err bitreich.org 70 i-
    1. External formats Err bitreich.org 70 i-
        Err bitreich.org 70 i-
      1. make-external-format Err bitreich.org 70 i-
      2. external-format-name Err bitreich.org 70 i-
      3. external-format-eol-style Err bitreich.org 70 i-
      4. external-format-little-endian Err bitreich.org 70 i-
      5. external-format-id Err bitreich.org 70 i-
      6. external-format-equal Err bitreich.org 70 i-
      7. *default-eol-style* Err bitreich.org 70 i-
      8. *default-little-endian* Err bitreich.org 70 i-
      9. external-format-condition Err bitreich.org 70 i-
      10. external-format-condition-external-format Err bitreich.org 70 i-
      11. external-format-error Err bitreich.org 70 i-
      12. external-format-encoding-error Err bitreich.org 70 i-
      13. *substitution-char* Err bitreich.org 70 i-
      14. accept-overlong-sequence Err bitreich.org 70 i-
      Err bitreich.org 70 i-
    2. Flexi streams Err bitreich.org 70 i-
        Err bitreich.org 70 i-
      1. flexi-stream Err bitreich.org 70 i-
      2. flexi-input-stream Err bitreich.org 70 i-
      3. flexi-output-stream Err bitreich.org 70 i-
      4. flexi-io-stream Err bitreich.org 70 i-
      5. make-flexi-stream Err bitreich.org 70 i-
      6. flexi-stream-external-format Err bitreich.org 70 i-
      7. flexi-stream-element-type Err bitreich.org 70 i-
      8. flexi-stream-column Err bitreich.org 70 i-
      9. flexi-stream-position Err bitreich.org 70 i-
      10. flexi-stream-bound Err bitreich.org 70 i-
      11. flexi-stream-stream Err bitreich.org 70 i-
      12. unread-byte Err bitreich.org 70 i-
      13. peek-byte Err bitreich.org 70 i-
      14. octet Err bitreich.org 70 i-
      15. flexi-stream-error Err bitreich.org 70 i-
      16. flexi-stream-out-of-sync-error Err bitreich.org 70 i-
      17. flexi-stream-element-type-error Err bitreich.org 70 i-
      18. flexi-stream-element-type-error-element-type Err bitreich.org 70 i-
      Err bitreich.org 70 i-
    3. In-memory streams Err bitreich.org 70 i-
        Err bitreich.org 70 i-
      1. in-memory-stream Err bitreich.org 70 i-
      2. in-memory-input-stream Err bitreich.org 70 i-
      3. in-memory-output-stream Err bitreich.org 70 i-
      4. list-stream Err bitreich.org 70 i-
      5. vector-stream Err bitreich.org 70 i-
      6. make-in-memory-input-stream Err bitreich.org 70 i-
      7. make-in-memory-output-stream Err bitreich.org 70 i-
      8. get-output-stream-sequence Err bitreich.org 70 i-
      9. output-stream-sequence-length Err bitreich.org 70 i-
      10. with-input-from-sequence Err bitreich.org 70 i-
      11. with-output-to-sequence Err bitreich.org 70 i-
      12. in-memory-stream-error Err bitreich.org 70 i-
      13. in-memory-stream-closed-error Err bitreich.org 70 i-
      14. in-memory-stream-position-spec-error Err bitreich.org 70 i-
      15. in-memory-stream-position-spec-error-position-spec Err bitreich.org 70 i-
      Err bitreich.org 70 i-
    4. Strings Err bitreich.org 70 i-
        Err bitreich.org 70 i-
      1. string-to-octets Err bitreich.org 70 i-
      2. octets-to-string Err bitreich.org 70 i-
      3. octet-length Err bitreich.org 70 i-
      4. char-length Err bitreich.org 70 i-
      Err bitreich.org 70 i-
    Err bitreich.org 70 i-
  5. File positions Err bitreich.org 70 i-
  6. Acknowledgements Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-
 

Example usage

Err bitreich.org 70 i- Err bitreich.org 70 i-The examples were created with LispWorks 4.4.6 pro on Windows. The following two functions create the same file: Err bitreich.org 70 i- Err bitreich.org 70 i-
	Err	bitreich.org	70
i-(defun foo (pathspec)	Err	bitreich.org	70
i-  "With standard LispWorks streams."	Err	bitreich.org	70
i-  (with-open-file (out pathspec	Err	bitreich.org	70
i-                       :direction :output	Err	bitreich.org	70
i-                       :if-exists :supersede	Err	bitreich.org	70
i-                       :external-format '(:utf-8 :eol-style :crlf))	Err	bitreich.org	70
i-    (write-line "ÄÖÜ1" out))	Err	bitreich.org	70
i-  (with-open-file (out pathspec	Err	bitreich.org	70
i-                       :direction :output	Err	bitreich.org	70
i-                       :if-exists :append	Err	bitreich.org	70
i-                       :external-format '(:latin-1 :eol-style :lf))	Err	bitreich.org	70
i-    (write-line "ÄÖÜ2" out))	Err	bitreich.org	70
i-  (with-open-file (out pathspec	Err	bitreich.org	70
i-                       :direction :output	Err	bitreich.org	70
i-                       :if-exists :append	Err	bitreich.org	70
i-                       :element-type 'octet)	Err	bitreich.org	70
i-    (write-byte #xeb out)	Err	bitreich.org	70
i-    (write-sequence #(#xa3 #xa4 #xa5) out))	Err	bitreich.org	70
i-  (with-open-file (out pathspec	Err	bitreich.org	70
i-                       :direction :output	Err	bitreich.org	70
i-                       :if-exists :append	Err	bitreich.org	70
i-                       :external-format '(:unicode :little-endian nil :eol-style :crlf))	Err	bitreich.org	70
i-    (write-line "ÄÖÜ3" out)))	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-(defun bar (pathspec)	Err	bitreich.org	70
i-  "With a flexi stream."	Err	bitreich.org	70
i-  (with-open-file (out pathspec	Err	bitreich.org	70
i-                       :direction :output	Err	bitreich.org	70
i-                       :if-exists :supersede	Err	bitreich.org	70
i-                       :external-format '(:latin-1 :eol-style :lf))	Err	bitreich.org	70
i-    (setq out (make-flexi-stream out :external-format :utf-8))	Err	bitreich.org	70
i-    (write-line "ÄÖÜ1" out)	Err	bitreich.org	70
i-    (setf (flexi-stream-external-format out) '(:latin-1 :eol-style :lf))	Err	bitreich.org	70
i-    (write-line "ÄÖÜ2" out) 	Err	bitreich.org	70
i-    (write-byte #xeb out)	Err	bitreich.org	70
i-    (write-sequence #(#xa3 #xa4 #xa5) out)	Err	bitreich.org	70
i-    (setf (flexi-stream-external-format out) :ucs-2be)	Err	bitreich.org	70
i-    (write-line "ÄÖÜ3" out)))	Err	bitreich.org	70
i-
Err bitreich.org 70 i- Err bitreich.org 70 i-

Err bitreich.org 70 i-And applying this function Err bitreich.org 70 i-

	Err	bitreich.org	70
i-(defun baz (pathspec)	Err	bitreich.org	70
i-  (let (result)	Err	bitreich.org	70
i-    (with-open-file (in pathspec :element-type 'octet)	Err	bitreich.org	70
i-      (setq in (make-flexi-stream in :external-format :utf-8))	Err	bitreich.org	70
i-      (push (read-line in) result)	Err	bitreich.org	70
i-      (push (read-byte in) result)	Err	bitreich.org	70
i-      (setf (flexi-stream-external-format in) '(:latin-1 :eol-style :lf))	Err	bitreich.org	70
i-      (push (read-line in) result) 	Err	bitreich.org	70
i-      (setf (flexi-stream-external-format in) :greek)	Err	bitreich.org	70
i-      (push (read-char in) result)	Err	bitreich.org	70
i-      (setf (flexi-stream-external-format in) :latin0)	Err	bitreich.org	70
i-      (let ((string (make-string 3 :element-type 'character)))	Err	bitreich.org	70
i-        (read-sequence string in)	Err	bitreich.org	70
i-        (push string result))	Err	bitreich.org	70
i-      (let ((octets (make-array 2 :element-type 'octet)))	Err	bitreich.org	70
i-        (read-sequence octets in)	Err	bitreich.org	70
i-        (push octets result))	Err	bitreich.org	70
i-      (setf (flexi-stream-external-format in) :ucs-2be)	Err	bitreich.org	70
i-      (push (read-line in) result))	Err	bitreich.org	70
i-    (nreverse result)))	Err	bitreich.org	70
i-
Err bitreich.org 70 i-to the file created above will yield the list Err bitreich.org 70 i-
	Err	bitreich.org	70
i-("ÄÖÜ1" 196 "ÖÜ2" #\λ "£€¥" #(0 196) "ÖÜ3")	Err	bitreich.org	70
i-
Err bitreich.org 70 i- Err bitreich.org 70 i-

Err bitreich.org 70 i-For more examples see the source code Err bitreich.org 70 i-of Err bitreich.org 70 i-CL-RFC2047, Err bitreich.org 70 i-Drakma, Chunga, Err bitreich.org 70 i-or CL-WBXML. Err bitreich.org 70 i- Err bitreich.org 70 i-
 

Download and installation

Err bitreich.org 70 i- Err bitreich.org 70 i-Before you try to install FLEXI-STREAMS, first check that in your Lisp Err bitreich.org 70 i-each character's Err bitreich.org 70 i-character Err bitreich.org 70 i-code is equal to Err bitreich.org 70 i-its Unicode code point and Err bitreich.org 70 i-that (CHAR-CODE #\Newline) Err bitreich.org 70 i-and (CHAR-CODE #\Linefeed) have the same Err bitreich.org 70 i-value (10). (This is the case for all relevant CL Err bitreich.org 70 i-implementations which were in use when this library was written. It Err bitreich.org 70 i-is not mandated by the ANSI standard, though.) Err bitreich.org 70 i-

Err bitreich.org 70 i-FLEXI-STREAMS together with this documentation can be downloaded from https://github.com/edicl/flexi-streams/releases/latest. Err bitreich.org 70 i-

Err bitreich.org 70 i-Before you install FLEXI-STREAMS you first need to Err bitreich.org 70 i-install the trivial-gray-streams library Err bitreich.org 70 i-unless you already have it. Err bitreich.org 70 i-

Err bitreich.org 70 i-FLEXI-STREAMS comes with a system definition for ASDF so you can install the library with Err bitreich.org 70 i-

	Err	bitreich.org	70
i-(asdf:oos 'asdf:load-op :flexi-streams)	Err	bitreich.org	70
i-
Err bitreich.org 70 i-if you've unpacked it in a place where ASDF can find it. Installation Err bitreich.org 70 i-via asdf-install Err bitreich.org 70 i-should also be possible, and there's a port Err bitreich.org 70 i-to Gentoo Lisp thanks to Err bitreich.org 70 i-Matthew Kennedy. Err bitreich.org 70 i-

Err bitreich.org 70 i-You can run a test suite which tests some (but Err bitreich.org 70 i-not all) aspects of the library with Err bitreich.org 70 i-

	Err	bitreich.org	70
i-(asdf:oos 'asdf:test-op :flexi-streams)	Err	bitreich.org	70
i-
Err bitreich.org 70 i-This might take a while... Err bitreich.org 70 i-

Err bitreich.org 70 i-The current development version of FLEXI-STREAMS can be found Err bitreich.org 70 i-at http://bknr.net/trac/browser/trunk/thirdparty. Err bitreich.org 70 i-This is the one to send patches against. Use at Err bitreich.org 70 i-your own risk. Err bitreich.org 70 i-

Err bitreich.org 70 i-Luís Oliveira maintains a darcs Err bitreich.org 70 i-repository of FLEXI-STREAMS Err bitreich.org 70 i-at http://common-lisp.net/~loliveira/ediware/. Err bitreich.org 70 i-

Err bitreich.org 70 i-A Mercurial Err bitreich.org 70 i-repository of older versions is available Err bitreich.org 70 i-at http://arcanes.fr.eu.org/~pierre/2007/02/weitz/ Err bitreich.org 70 i-thanks to Pierre Thierry. Err bitreich.org 70 i- Err bitreich.org 70 i-
 

Support

Err bitreich.org 70 i- Err bitreich.org 70 i-The development version of flexi-streams can be Err bitreich.org 70 i-found on Err bitreich.org 70 i-github. Please use the github issue tracking system to submit bug Err bitreich.org 70 i-reports. Patches are welcome, please Err bitreich.org 70 i-use GitHub pull Err bitreich.org 70 i-requests. If you want to make a change, Err bitreich.org 70 i-please read this Err bitreich.org 70 i-first. Err bitreich.org 70 i- Err bitreich.org 70 i-
 

The FLEXI-STREAMS dictionary

Err bitreich.org 70 i- Err bitreich.org 70 i-

External formats

Err bitreich.org 70 i- Err bitreich.org 70 i-EXTERNAL-FORMAT objects are used to denote the external Err bitreich.org 70 i-formats of flexi streams. These objects are created using Err bitreich.org 70 i-the MAKE-EXTERNAL-FORMAT Err bitreich.org 70 i-function, and there are various Err bitreich.org 70 i-readers to query their attributes. Once such an object is Err bitreich.org 70 i-created it can't be changed. Err bitreich.org 70 i-

Err bitreich.org 70 i-An external format consists of a basic encoding Err bitreich.org 70 i-(like ISO 8859-1 Err bitreich.org 70 i-or UTF-8), a Err bitreich.org 70 i-definition how line endings are denoted - by a carriage return Err bitreich.org 70 i-character (ASCII 13), by a line feed character (ASCII 10), Err bitreich.org 70 i-or by both of these characters in a row -, and optionally (for Err bitreich.org 70 i-encodings that use units larger than 8 bits) information Err bitreich.org 70 i-about the endianess Err bitreich.org 70 i-of the encoding. Err bitreich.org 70 i-

Err bitreich.org 70 i-The following encodings are currently supported by FLEXI-STREAMS: Err bitreich.org 70 i-

    Err bitreich.org 70 i-
  • UTF-8 (denoted by the keyword :UTF-8), Err bitreich.org 70 i-
  • UTF-16 (denoted by the keyword :UTF-16), Err bitreich.org 70 i-
  • UTF-32 (denoted by the keyword :UTF-32), Err bitreich.org 70 i-
  • all ISO 8859 character sets (denoted by keywords like :ISO-8859-15), Err bitreich.org 70 i-
  • KOI8-R (denoted by the keyword :KOI8-R), Err bitreich.org 70 i-
  • a couple Err bitreich.org 70 i-of Windows code Err bitreich.org 70 i-pages (denoted by the keyword :CODE-PAGE and an Err bitreich.org 70 i-obligatory :ID argument), and Err bitreich.org 70 i-
  • US-ASCII. Err bitreich.org 70 i-
Err bitreich.org 70 i-

Err bitreich.org 70 i-A couple of alternative names are allowed that are listed below: Err bitreich.org 70 i-

Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-
:UTF-8:UTF8
:UTF-16:UTF16
:UCS-2
:UCS2
:UNICODE
:UTF-32:UTF32
:UCS-4
:UCS4
:ISO-8859-1:LATIN-1
:LATIN1
:ISO-8859-2:LATIN-2
:LATIN2
:ISO-8859-3:LATIN-3
:LATIN3
:ISO-8859-4:LATIN-4
:LATIN4
:ISO-8859-5:CYRILLIC
:ISO-8859-6:ARABIC
:ISO-8859-7:GREEK
:ISO-8859-8:HEBREW
:ISO-8859-9:LATIN-5
:LATIN5
:ISO-8859-10:LATIN-6
:LATIN6
:ISO-8859-11:THAI
:ISO-8859-13:LATIN-7
:LATIN7
:ISO-8859-14:LATIN-8
:LATIN8
:ISO-8859-15:LATIN-9
:LATIN9
:LATIN-0
:LATIN0
:ISO-8859-16:LATIN-10
:LATIN10
:CODE-PAGE:CODEPAGE
WIN32:CODE-PAGE
(only on LWW)
:KOI8-R:KOI8R
:US-ASCII:ASCII
Err bitreich.org 70 i-

Err bitreich.org 70 i-(Note that we treat UCS-2 exactly like UTF-16 although there Err bitreich.org 70 i-are subtle Err bitreich.org 70 i-differences. Also note that even though we support encodings like Err bitreich.org 70 i-UTF-32 some Lisps only supports characters contained within Err bitreich.org 70 i-the Basic Err bitreich.org 70 i-Multilingual Plane (like LispWorks) or even less (like CMUCL), so Err bitreich.org 70 i-if other characters are read from a Err bitreich.org 70 i-flexi Err bitreich.org 70 i-stream, READ-CHAR Err bitreich.org 70 i-will try to be helpful and return the corresponding Unicode code point - Err bitreich.org 70 i-an integer - instead. This might lead to an error if you're using Err bitreich.org 70 i-functions Err bitreich.org 70 i-like READ-LINE, though.) Err bitreich.org 70 i- Err bitreich.org 70 i-

Err bitreich.org 70 i-Whenever a FLEXI-STREAMS function accepts an external format as one of Err bitreich.org 70 i-its arguments, you can provide either an EXTERNAL-FORMAT Err bitreich.org 70 i-object or a shortcut which can be a list or a symbol. The list Err bitreich.org 70 i-shortcuts have a syntax similar Err bitreich.org 70 i-to the Err bitreich.org 70 i-one used by LispWorks - the cars are the names of and encoding Err bitreich.org 70 i-and the cdrs of these lists correspond to the keyword arguments Err bitreich.org 70 i-to MAKE-EXTERNAL-FORMAT, so Err bitreich.org 70 i-for example Err bitreich.org 70 i-

(:latin-1 :eol-style :crlf)
Err bitreich.org 70 i-is equivalent to Err bitreich.org 70 i-
(make-external-format :latin-1 :eol-style :crlf)
The Err bitreich.org 70 i-symbol shortcuts are equivalent to Err bitreich.org 70 i-calling MAKE-EXTERNAL-FORMAT Err bitreich.org 70 i-without keyword arguments, i.e. Err bitreich.org 70 i-
:thai
Err bitreich.org 70 i-behaves like Err bitreich.org 70 i-
(make-external-format :thai)
Err bitreich.org 70 i-Finally, the following expansions are Err bitreich.org 70 i-available: Err bitreich.org 70 i-

Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-
:UCS-2LE(:UCS-2 :LITTLE-ENDIAN T)
:UCS-2BE(:UCS-2 :LITTLE-ENDIAN NIL)
:UCS-4LE(:UCS-4 :LITTLE-ENDIAN T)
:UCS-4BE(:UCS-4 :LITTLE-ENDIAN NIL)
:UTF-16LE(:UTF-16 :LITTLE-ENDIAN T)
:UTF-16BE(:UTF-16 :LITTLE-ENDIAN NIL)
:UTF-32LE(:UTF-32 :LITTLE-ENDIAN T)
:UTF-32BE(:UTF-32 :LITTLE-ENDIAN NIL)
:IBM437(:CODE-PAGE :ID 437)
:IBM850(:CODE-PAGE :ID 850)
:IBM852(:CODE-PAGE :ID 852)
:IBM855(:CODE-PAGE :ID 855)
:IBM857(:CODE-PAGE :ID 857)
:IBM860(:CODE-PAGE :ID 860)
:IBM861(:CODE-PAGE :ID 861)
:IBM862(:CODE-PAGE :ID 862)
:IBM863(:CODE-PAGE :ID 863)
:IBM864(:CODE-PAGE :ID 864)
:IBM865(:CODE-PAGE :ID 865)
:IBM866(:CODE-PAGE :ID 866)
:IBM869(:CODE-PAGE :ID 869)
:WINDOWS-1250(:CODE-PAGE :ID 1250)
:WINDOWS-1251(:CODE-PAGE :ID 1251)
:WINDOWS-1252(:CODE-PAGE :ID 1252)
:WINDOWS-1253(:CODE-PAGE :ID 1253)
:WINDOWS-1254(:CODE-PAGE :ID 1254)
:WINDOWS-1255(:CODE-PAGE :ID 1255)
:WINDOWS-1256(:CODE-PAGE :ID 1256)
:WINDOWS-1257(:CODE-PAGE :ID 1257)
:WINDOWS-1258(:CODE-PAGE :ID 1258)
Err bitreich.org 70 i-

Err bitreich.org 70 i-Note that if you provide a shortcut, it Err bitreich.org 70 i-will be converted to an EXTERNAL-FORMAT object first. Err bitreich.org 70 i-So, if you're concerned about efficiency, create these objects once and Err bitreich.org 70 i-re-use them. Err bitreich.org 70 i- Err bitreich.org 70 i-


[Function] Err bitreich.org 70 i-
make-external-format name &key eol-style little-endian id => external-format Err bitreich.org 70 i- Err bitreich.org 70 i-


Creates and returns Err bitreich.org 70 i-an EXTERNAL-FORMAT Err bitreich.org 70 i-object. name is a Err bitreich.org 70 i-symbol, eol-style is one of the Err bitreich.org 70 i-keywords :CR, :LF, or :CRLF, Err bitreich.org 70 i-and little-endian is Err bitreich.org 70 i-a generalized Err bitreich.org 70 i-boolean. The default value for eol-style is the value of *DEFAULT-EOL-STYLE* except for Windows code pages where it is :CRLF. The default value Err bitreich.org 70 i-for little-endian is the value of *DEFAULT-LITTLE-ENDIAN* - this value is ignored unless name denotes one of UTF-16 or UTF-32. Err bitreich.org 70 i-id must be an integer denoting a Windows code page Err bitreich.org 70 i-known by FLEXI-STREAMS if name Err bitreich.org 70 i-is :CODE-PAGE or WIN32:CODE-PAGE, otherwise Err bitreich.org 70 i-the value is ignored. See the section Err bitreich.org 70 i-about external formats for more info. Err bitreich.org 70 i-

Err bitreich.org 70 i-Examples (run on Windows): Err bitreich.org 70 i- Err bitreich.org 70 i-

	Err	bitreich.org	70
i-CL-USER 1 > (make-external-format :latin-1)	Err	bitreich.org	70
i-#<FLEXI-STREAMS::EXTERNAL-FORMAT (:ISO-8859-1 :EOL-STYLE :CRLF) 2067DA84>	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-CL-USER 2 > (make-external-format :latin-1 :eol-style :lf)	Err	bitreich.org	70
i-#<FLEXI-STREAMS::EXTERNAL-FORMAT (:ISO-8859-1 :EOL-STYLE :LF) 2068B4D4>	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-CL-USER 3 > (make-external-format :ibm437)	Err	bitreich.org	70
i-#<FLEXI-STREAMS::EXTERNAL-FORMAT (:CODE-PAGE :ID 437 :EOL-STYLE :CRLF) 2069B33C>	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-CL-USER 4 > (make-external-format :ucs-2)	Err	bitreich.org	70
i-#<FLEXI-STREAMS::EXTERNAL-FORMAT (:UTF-16 :EOL-STYLE :CRLF :LITTLE-ENDIAN T) 206B4F4C>	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-CL-USER 5 > (make-external-format :ucs-2be)	Err	bitreich.org	70
i-#<FLEXI-STREAMS::EXTERNAL-FORMAT (:UTF-16 :EOL-STYLE :CRLF :LITTLE-ENDIAN NIL) 2067DBE4>	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-CL-USER 6 > (make-external-format :ucs-2be :eol-style :cr)	Err	bitreich.org	70
i-#<FLEXI-STREAMS::EXTERNAL-FORMAT (:UTF-16 :EOL-STYLE :CR :LITTLE-ENDIAN NIL) 206B54AC>	Err	bitreich.org	70
i-
Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Readers] Err bitreich.org 70 i-
external-format-name external-format => name Err bitreich.org 70 i-
external-format-eol-style external-format => eol-style Err bitreich.org 70 i-
external-format-little-endian external-format => little-endian Err bitreich.org 70 i-
external-format-id external-format => id Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-These methods can be used to query an EXTERNAL-FORMAT object for its attributes. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Functions] Err bitreich.org 70 i-
external-format-equal external-format-1 external-format-2 => generalized-boolean Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-Checks whether the two external formats external-format-1 and external-format-2 are equivalent with respect to their effects on flexi streams. Err bitreich.org 70 i-

Err bitreich.org 70 i-Examples (run on Windows): Err bitreich.org 70 i- Err bitreich.org 70 i-

	Err	bitreich.org	70
i-CL-USER 1 > (make-external-format :ucs-4le)	Err	bitreich.org	70
i-#<FLEXI-STREAMS::EXTERNAL-FORMAT (:UTF-32 :EOL-STYLE :CRLF :LITTLE-ENDIAN T) 2067FB74>	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-CL-USER 2 > (external-format-equal * (make-external-format :utf32 :little-endian t))	Err	bitreich.org	70
i-T	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-CL-USER 3 > (make-external-format :code-page :id 437)	Err	bitreich.org	70
i-#<FLEXI-STREAMS::EXTERNAL-FORMAT (:CODE-PAGE :ID 437 :EOL-STYLE :CRLF) 2069428C>	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-CL-USER 4 > (external-format-equal * (make-external-format :ibm437))	Err	bitreich.org	70
i-T	Err	bitreich.org	70
i-
Err bitreich.org 70 i- Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Special variable] Err bitreich.org 70 i-
*default-eol-style* Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-The default value for the eol-style keyword argument of MAKE-EXTERNAL-FORMAT. Its initial value is :CRLF on Windows and :LF on other operating systems. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Special variable] Err bitreich.org 70 i-
*default-little-endian* Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-The default value for the little-endian keyword argument of MAKE-EXTERNAL-FORMAT. Its initial value corresponds to the endianess of the platform FLEXI-STREAMS is used on as revealed by the :LITTLE-ENDIAN feature. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Condition] Err bitreich.org 70 i-
external-format-condition Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-All conditions related to external formats are of this type. Err bitreich.org 70 i-There's a slot for the external format which can be accessed with EXTERNAL-FORMAT-CONDITION-EXTERNAL-FORMAT. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Reader] Err bitreich.org 70 i-
external-format-condition-external-format condition => external-format Err bitreich.org 70 i- Err bitreich.org 70 i-


If condition is of Err bitreich.org 70 i-type EXTERNAL-FORMAT-CONDITION, Err bitreich.org 70 i-this function will return the associated external format. Note that Err bitreich.org 70 i-there are situation which happen during the creation of external Err bitreich.org 70 i-formats where this method returns NIL. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Condition] Err bitreich.org 70 i-
external-format-error Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-All errors related to external formats are of this type. Err bitreich.org 70 i-This is a subtype of EXTERNAL-FORMAT-CONDITION. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Condition] Err bitreich.org 70 i-
external-format-encoding-error Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-All errors related to encoding problems with external formats are of this type. (This includes situation where an end of file is encountered in the middle of a multi-octet character.) When this condition is signalled during reading, USE-VALUE Err bitreich.org 70 i-restart is provided. See also *SUBSTITUTION-CHAR* and the example for it. EXTERNAL-FORMAT-ENCODING-ERROR is a subtype of EXTERNAL-FORMAT-ERROR. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Special variable] Err bitreich.org 70 i-
*substitution-char* Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-If this value is not NIL, it should be a character which is used Err bitreich.org 70 i-(as if by a USE-VALUE restart) whenever during reading an error of Err bitreich.org 70 i-type EXTERNAL-FORMAT-ENCODING-ERROR would have been signalled otherwise. Err bitreich.org 70 i- Err bitreich.org 70 i-
	Err	bitreich.org	70
i-CL-USER 1 > (defun foo ()	Err	bitreich.org	70
i-              ;; not a valid UTF-8 sequence	Err	bitreich.org	70
i-              (with-input-from-sequence (in '(#xe4 #xf6 #xfc))	Err	bitreich.org	70
i-                (setq in (make-flexi-stream in :external-format :utf8))	Err	bitreich.org	70
i-                (read-line in)))	Err	bitreich.org	70
i-FOO	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-CL-USER 2 > (foo)	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-Error: Unexpected value #xF6 in UTF-8 sequence.	Err	bitreich.org	70
i-  1 (continue) Specify a character to be used instead.	Err	bitreich.org	70
i-  2 (abort) Return to level 0.	Err	bitreich.org	70
i-  3 Return to top loop level 0.	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-Type :b for backtrace, :c <option number> to proceed,  or :? for other options	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-CL-USER 3 : 1 > :c	Err	bitreich.org	70
i-Type a character: x	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-Error: End of file while in UTF-8 sequence.	Err	bitreich.org	70
i-  1 (continue) Specify a character to be used instead.	Err	bitreich.org	70
i-  2 (abort) Return to level 0.	Err	bitreich.org	70
i-  3 Return to top loop level 0.	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-Type :b for backtrace, :c <option number> to proceed,  or :? for other options	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-CL-USER 4 : 1 > :c	Err	bitreich.org	70
i-Type a character: y	Err	bitreich.org	70
i-"xy"	Err	bitreich.org	70
i-T	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-CL-USER 5 > (handler-bind ((external-format-encoding-error (lambda (condition)	Err	bitreich.org	70
i-                                                          (use-value #\-))))	Err	bitreich.org	70
i-              (foo))	Err	bitreich.org	70
i-"--"	Err	bitreich.org	70
i-T	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-CL-USER 6 > (let ((*substitution-char* #\?))	Err	bitreich.org	70
i-              (foo))	Err	bitreich.org	70
i-"??"	Err	bitreich.org	70
i-T	Err	bitreich.org	70
i-
Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Restart] Err bitreich.org 70 i-
accept-overlong-sequence Err bitreich.org 70 i- Err bitreich.org 70 i-


This is Err bitreich.org 70 i-a restart Err bitreich.org 70 i-which is established whenever a UTF-8 "overlong" sequence is Err bitreich.org 70 i-encountered. If Err bitreich.org 70 i-you invoke Err bitreich.org 70 i-this restart, the corresponding code point will be accepted although Err bitreich.org 70 i-it was encoded in an illegal way. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-

Flexi streams

Err bitreich.org 70 i- Err bitreich.org 70 i-Flexi streams are the core of the FLEXI-STREAMS library. You Err bitreich.org 70 i-create them using the Err bitreich.org 70 i-function MAKE-FLEXI-STREAM which Err bitreich.org 70 i-takes an open binary stream (called the underlying stream) as its only required argument. Err bitreich.org 70 i-A binary stream in this context means that if it's an input Err bitreich.org 70 i-stream, you can read from it with Err bitreich.org 70 i-READ-BYTE Err bitreich.org 70 i-(or, as a workaround for LispWorks, you can at least apply Err bitreich.org 70 i-READ-SEQUENCE Err bitreich.org 70 i-to it where the sequence is an array of element Err bitreich.org 70 i-type OCTET), and similarly for Err bitreich.org 70 i-WRITE-BYTE Err bitreich.org 70 i-(WRITE-SEQUENCE Err bitreich.org 70 i-for LispWorks) Err bitreich.org 70 i-and output Err bitreich.org 70 i-streams. (Note that this specifically holds Err bitreich.org 70 i-for bivalent Err bitreich.org 70 i-streams like socket streams.) Err bitreich.org 70 i-

Err bitreich.org 70 i-A flexi stream behaves like an ordinary Lisp stream. It is an input Err bitreich.org 70 i-stream if the underlying binary stream is an input stream, and it is Err bitreich.org 70 i-an output stream when the underlying binary stream is an output Err bitreich.org 70 i-stream. You can write characters as well Err bitreich.org 70 i-as octets to an output flexi stream and similarly Err bitreich.org 70 i-you can read characters and octets from an input flexi stream. Err bitreich.org 70 i-

Err bitreich.org 70 i-A flexi stream always has an external Err bitreich.org 70 i-format associated with it which is deployed whenever you read Err bitreich.org 70 i-characters from the stream or write characters to it. You Err bitreich.org 70 i-can change the external Err bitreich.org 70 i-format while you use the stream. Err bitreich.org 70 i-

Err bitreich.org 70 i-Once you're using a flexi stream you should not read from or Err bitreich.org 70 i-write to the underlying stream directly anymore. Err bitreich.org 70 i-

Err bitreich.org 70 i-If Err bitreich.org 70 i-you close Err bitreich.org 70 i-a flexi stream, the underlying stream will also be closed. However, it Err bitreich.org 70 i-also suffices to close the underlying stream directly should you not Err bitreich.org 70 i-want to use the flexi stream anymore. So, the following usage Err bitreich.org 70 i-(where IN is implicitly closed at the end) is OK: Err bitreich.org 70 i-

	Err	bitreich.org	70
i-(with-open-file (in "/foo/bar/baz.txt")	Err	bitreich.org	70
i-  (let ((flexi (make-flexi-stream in :external-format :hebrew)))	Err	bitreich.org	70
i-    (read-line flexi)))	Err	bitreich.org	70
i-
Err bitreich.org 70 i-

Err bitreich.org 70 i-Output flexi streams will try to keep track of Err bitreich.org 70 i-the column Err bitreich.org 70 i-they're in but you can also set the Err bitreich.org 70 i-column directly. This value will be incremented by one for each Err bitreich.org 70 i-character written to the stream and it will be set to 0 Err bitreich.org 70 i-if you send a #\Newline character. The column will be Err bitreich.org 70 i-set to NIL if an OCTET Err bitreich.org 70 i-is sent to the stream. Once the column is NIL it'll stay Err bitreich.org 70 i-like that unless it is explicitly set to another value. Err bitreich.org 70 i-

Err bitreich.org 70 i-Input flexi streams keep track of Err bitreich.org 70 i-their position within the stream. Err bitreich.org 70 i-This value is incremented by one for Err bitreich.org 70 i-each OCTET read from the stream, and Err bitreich.org 70 i-it is incremented by the number of octets actually read for each Err bitreich.org 70 i-character read from the stream. So, if the encoding is UTF-8, reading Err bitreich.org 70 i-the character #\ä (a-umlaut) will advance the position by two. Err bitreich.org 70 i-If the encoding is UTF-32 and the end-of-line style Err bitreich.org 70 i-is :CRLF, reading a #\Newline will advance Err bitreich.org 70 i-the position by eight. Err bitreich.org 70 i-

Err bitreich.org 70 i-You can also set the bound of an Err bitreich.org 70 i-input flexi stream. Initially it is NIL, but when it's Err bitreich.org 70 i-an integer and the Err bitreich.org 70 i-stream's position has gone beyond Err bitreich.org 70 i-this bound, the stream will behave as if no more input is available. Err bitreich.org 70 i-

Err bitreich.org 70 i-Caveat: You can Err bitreich.org 70 i-only unread Err bitreich.org 70 i-a character from a flexi stream if you haven't changed the external format after you read it. Err bitreich.org 70 i-

Err bitreich.org 70 i-Caveat: The underlying stream should either be a binary stream (i.e. have an element type that is a subtype of integer) or it should explicitly use an external format with :LF as its end-of-line style. Otherwise it might perform unwanted conversion of line endings on its own. (LispWorks does this even if you write binary data to the stream using WRITE-SEQUENCE.) Err bitreich.org 70 i- Err bitreich.org 70 i-


[Standard class] Err bitreich.org 70 i-
flexi-stream Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-Every flexi stream returned by MAKE-FLEXI-STREAM is of this type which is a subtype of STREAM. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Standard class] Err bitreich.org 70 i-
flexi-input-stream Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-A flexi stream is of this type if its underlying stream is an input stream. This is a subtype of FLEXI-STREAM. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Standard class] Err bitreich.org 70 i-
flexi-output-stream Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-A flexi stream is of this type if its underlying stream is an output stream. This is a subtype of FLEXI-STREAM. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Standard class] Err bitreich.org 70 i-
flexi-io-stream Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-A flexi stream is of this type if it is both a FLEXI-INPUT-STREAM as well as a FLEXI-OUTPUT-STREAM. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Function] Err bitreich.org 70 i-
make-flexi-stream stream &key external-format element-type column position bound => flexi-stream Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-Creates and returns a flexi stream, i.e. an object of type FLEXI-STREAM. stream is the underlying Lisp stream. external-format is the initial external format to be used by the stream, the default is the value of evaluating (MAKE-EXTERNAL-FORMAT :LATIN1). element-type is the initial element type of the flexi stream the default of which is LW:SIMPLE-CHAR for LispWorks and CHARACTER otherwise. column is the initial column of the stream and should only be provided for output streams, the default is 0. position is the initial octet position of the stream and must only be provided for input streams, the default is 0. bound should be NIL (the default) or an integer and must only be provided for input streams. If the octet position of the stream has gone beyond this bound, the stream will behave as if no more input is available. See the section about flexi streams for more information. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Accessors] Err bitreich.org 70 i-
flexi-stream-external-format flexi-stream => external-format Err bitreich.org 70 i-
(setf (flexi-stream-external-format flexi-stream) external-format) Err bitreich.org 70 i-
flexi-stream-element-type flexi-stream => element-type Err bitreich.org 70 i-
(setf (flexi-stream-element-type flexi-stream) element-type) Err bitreich.org 70 i-
flexi-stream-column flexi-output-stream => column Err bitreich.org 70 i-
(setf (flexi-stream-column flexi-output-stream) column) Err bitreich.org 70 i-
flexi-stream-position flexi-input-stream => position Err bitreich.org 70 i-
(setf (flexi-stream-position flexi-input-stream) position) Err bitreich.org 70 i-
flexi-stream-bound flexi-input-stream => bound Err bitreich.org 70 i-
(setf (flexi-stream-bound flexi-input-stream) bound) Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-These methods can be used to get and set the corresponding attributes of a flexi stream. Err bitreich.org 70 i-

Err bitreich.org 70 i-(SETF Err bitreich.org 70 i-FLEXI-STREAM-EXTERNAL-FORMAT) accepts keyword symbols Err bitreich.org 70 i-(names of external formats), lists Err bitreich.org 70 i-(which should be valid lists of parameters Err bitreich.org 70 i-to MAKE-EXTERNAL-FORMAT), or EXTERNAL-FORMAT objects: Err bitreich.org 70 i-

	Err	bitreich.org	70
i-CL-USER 1 > (setf (flexi-stream-external-format *my-stream*) :ucs-4le)	Err	bitreich.org	70
i-#<FLEXI-STREAMS::EXTERNAL-FORMAT (:UTF-32 :EOL-STYLE :CRLF :LITTLE-ENDIAN T) 206920DC>	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-CL-USER 2 > (setf (flexi-stream-external-format *my-stream*) '(:ucs-2be :eol-style :br))	Err	bitreich.org	70
i-#<FLEXI-STREAMS::EXTERNAL-FORMAT (:UTF-16 :EOL-STYLE :BR :LITTLE-ENDIAN NIL) 20696934>	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-CL-USER 3 > (setf (flexi-stream-external-format *my-stream*) (make-external-format :ibm437))	Err	bitreich.org	70
i-#<FLEXI-STREAMS::EXTERNAL-FORMAT (:CODE-PAGE :ID 437 :EOL-STYLE :CRLF) 2068716C>	Err	bitreich.org	70
i-
Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Reader] Err bitreich.org 70 i-
flexi-stream-stream flexi-stream => stream Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-This method returns the underlying stream of a flexi stream. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Generic function] Err bitreich.org 70 i-
unread-byte byte stream => nil Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-Similar to UNREAD-CHAR in that it "unreads" the last octet from Err bitreich.org 70 i-stream which must be a flexi stream. Note that you can only call UNREAD-BYTE after a corresponding Err bitreich.org 70 i-READ-BYTE, not after READ-CHAR. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Generic function] Err bitreich.org 70 i-
peek-byte stream &optional peek-type eof-error-p eof-value => byte Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-PEEK-BYTE is like PEEK-CHAR, i.e. it returns an octet from stream (which must be a flexi stream) Err bitreich.org 70 i-without actually removing it. If peek-type is NIL, the next octet is Err bitreich.org 70 i-returned, if peek-type is T, the next octet which is not 0 is Err bitreich.org 70 i-returned, if peek-type is an octet, the next octet which equals Err bitreich.org 70 i-peek-type is returned. eof-error-p and eof-value are interpreted as usual. Err bitreich.org 70 i-

Err bitreich.org 70 i-Note that the parameters aren't in the same order as with PEEK-CHAR because it doesn't make much sense to make stream an optional argument. Err bitreich.org 70 i-

Err bitreich.org 70 i- Err bitreich.org 70 i-


[Type] Err bitreich.org 70 i-
octet Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-Just a shortcut for (UNSIGNED-BYTE 8). Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Condition] Err bitreich.org 70 i-
flexi-stream-error Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-All errors related to flexi streams are of this type. This is a subtype of STREAM-ERROR. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Condition] Err bitreich.org 70 i-
flexi-stream-out-of-sync-error Err bitreich.org 70 i- Err bitreich.org 70 i-


This can happen if you're trying to write to Err bitreich.org 70 i-an IO stream which had prior to that Err bitreich.org 70 i-"looked ahead" while reading and now can't "rewind" to the octet where Err bitreich.org 70 i-you should be. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Condition] Err bitreich.org 70 i-
flexi-stream-element-type-error Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-All errors related to problems with the element type of flexi streams are of this type. This is a subtype of FLEXI-STREAM-ERROR and has an additional slot for the element type which can be accessed with FLEXI-STREAM-ELEMENT-TYPE-ERROR-ELEMENT-TYPE. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Reader] Err bitreich.org 70 i-
flexi-stream-element-type-error-element-type condition => element-type Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-If condition is of type FLEXI-STREAM-ELEMENT-TYPE-ERROR, this function will return the offending element type. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-

In-memory streams

Err bitreich.org 70 i- Err bitreich.org 70 i-The library also provides in-memory binary streams which are modeled after string streams and behave very similar only that they deal with octets instead of characters and the underlying data structure is not a string but either a list or a vector. These streams can obviously be used as the underlying streams for flexi streams. Err bitreich.org 70 i- Err bitreich.org 70 i-


[Standard class] Err bitreich.org 70 i-
in-memory-stream Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-Every in-memory stream returned by MAKE-IN-MEMORY-INPUT-STREAM or MAKE-IN-MEMORY-OUTPUT-STREAM is of this type which is a subtype of STREAM. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Standard class] Err bitreich.org 70 i-
in-memory-input-stream Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-Every in-memory stream returned by MAKE-IN-MEMORY-INPUT-STREAM is of this type which is a subtype of IN-MEMORY-STREAM. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Standard class] Err bitreich.org 70 i-
in-memory-output-stream Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-Every in-memory stream returned by MAKE-IN-MEMORY-OUTPUT-STREAM is of this type which is a subtype of IN-MEMORY-STREAM. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Standard class] Err bitreich.org 70 i-
list-stream Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-Every in-memory input stream is of this type if it reads from a list. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Standard class] Err bitreich.org 70 i-
vector-stream Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-Every in-memory stream is of this type if it reads from or writes to a vector. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Generic function] Err bitreich.org 70 i-
make-in-memory-input-stream sequence &key start end transformer => in-memory-input-stream Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-Returns a binary input stream (of type IN-MEMORY-INPUT-STREAM) which will supply, in order, the Err bitreich.org 70 i-octets in the subsequence of sequence bounded by start (the default is 0) and end (the default is the length of sequence). sequence must either be a list or a vector of octets. Err bitreich.org 70 i-Each octet returned will be transformed in turn by the optional Err bitreich.org 70 i-transformer function. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Function] Err bitreich.org 70 i-
make-in-memory-output-stream &key element-type transformer => in-memory-output-stream Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-Returns a binary output stream (of type IN-MEMORY-OUTPUT-STREAM) which accepts objects of type element-type (a subtype of OCTET) and makes Err bitreich.org 70 i-available a sequence (see GET-OUTPUT-STREAM-SEQUENCE) that contains the octets that were actually Err bitreich.org 70 i-output. The octets stored will each be transformed by the optional transformer function. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Generic function] Err bitreich.org 70 i-
get-output-stream-sequence stream &key as-list => sequence Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-Returns a vector containing, in order, all the octets that have Err bitreich.org 70 i-been output to the in-memory output stream stream. This operation clears any Err bitreich.org 70 i-octets on stream, so the vector contains only those octets which have Err bitreich.org 70 i-been output since the last call to GET-OUTPUT-STREAM-SEQUENCE or since Err bitreich.org 70 i-the creation of the stream, whichever occurred most recently. If Err bitreich.org 70 i-as-list is true the return value is coerced to a list. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Generic function] Err bitreich.org 70 i-
output-stream-sequence-length stream => length Err bitreich.org 70 i- Err bitreich.org 70 i-


Returns the current length of the underlying vector Err bitreich.org 70 i-of the in-memory output Err bitreich.org 70 i-stream stream, i.e. this is the length of the Err bitreich.org 70 i-sequence that GET-OUTPUT-STREAM-SEQUENCE would return if called at Err bitreich.org 70 i-this very moment. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Macro] Err bitreich.org 70 i-
with-input-from-sequence (var sequence &key start end transformer) statement* => result* Err bitreich.org 70 i- Err bitreich.org 70 i-


Creates an in-memory input Err bitreich.org 70 i-stream from the sequence sequence using the Err bitreich.org 70 i-parameters start and end Err bitreich.org 70 i-(see MAKE-IN-MEMORY-INPUT-STREAM), Err bitreich.org 70 i-binds var to this stream and then executes Err bitreich.org 70 i-the statement* forms. A Err bitreich.org 70 i-function transformer may optionally be specified Err bitreich.org 70 i-to transform the returned octets. The stream is automatically closed Err bitreich.org 70 i-on exit from Err bitreich.org 70 i-WITH-OUTPUT-TO-SEQUENCE, no matter whether the exit is normal or Err bitreich.org 70 i-abnormal. The return value of this macro is the return value of Err bitreich.org 70 i-the last statement of statement*. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Macro] Err bitreich.org 70 i-
with-output-to-sequence (var &key as-list element-type transformer) statement* => sequence Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-Creates an in-memory output stream, binds var to this stream and Err bitreich.org 70 i-then executes the statement* forms. The stream stores Err bitreich.org 70 i-data of type element-type (a subtype of OCTET) which is (optionally) transformed by the Err bitreich.org 70 i-function transformer prior to storage. The stream is automatically closed on Err bitreich.org 70 i-exit from WITH-OUTPUT-TO-SEQUENCE, no matter whether the exit is Err bitreich.org 70 i-normal or abnormal. The return value of this macro is a vector (or a Err bitreich.org 70 i-list if as-list is true) containing the octets that were sent to the Err bitreich.org 70 i-stream within the body of the macro. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Condition] Err bitreich.org 70 i-
in-memory-stream-error Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-All errors related to in-memory streams are of this type. This is a subtype of STREAM-ERROR. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Condition] Err bitreich.org 70 i-
in-memory-stream-closed-error Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-An error of this type is signalled if one tries to read from or write to an in-memory stream which had already been closed. This is a subtype of IN-MEMORY-STREAM-ERROR. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Condition] Err bitreich.org 70 i-
in-memory-stream-position-spec-error Err bitreich.org 70 i- Err bitreich.org 70 i-


Errors of this type are signalled if an erroneous Err bitreich.org 70 i-position spec is used in conjunction Err bitreich.org 70 i-with FILE-POSITION. This is a Err bitreich.org 70 i-subtype Err bitreich.org 70 i-of IN-MEMORY-STREAM-ERROR Err bitreich.org 70 i-and has an additional slot for the position spec which can be accessed Err bitreich.org 70 i-with IN-MEMORY-STREAM-POSITION-SPEC-ERROR-POSITION-SPEC. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-


[Reader] Err bitreich.org 70 i-
in-memory-stream-position-spec-error-position-spec condition => position-spec Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i-If condition is of type IN-MEMORY-STREAM-POSITION-SPEC-ERROR, this function will return the offending position spec. Err bitreich.org 70 i-
Err bitreich.org 70 i- Err bitreich.org 70 i-

Strings

Err bitreich.org 70 i- Err bitreich.org 70 i-This section collects a few convenience functions for strings conversions. Err bitreich.org 70 i- Err bitreich.org 70 i-


[Function] Err bitreich.org 70 i-
string-to-octets string &key external-format start end => vector Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i- Err bitreich.org 70 i-Converts the Lisp string string from start to end to an array of Err bitreich.org 70 i-octets corresponding to the external Err bitreich.org 70 i-format designated by external-format. The defaults for Err bitreich.org 70 i-start and end Err bitreich.org 70 i-are 0 and the length of the string. The default Err bitreich.org 70 i-for external-format is :LATIN1. Err bitreich.org 70 i-

Err bitreich.org 70 i-In spite of the name, string can be any sequence of characters, but Err bitreich.org 70 i-the function is optimized for strings. Err bitreich.org 70 i-

Err bitreich.org 70 i- Err bitreich.org 70 i-


[Function] Err bitreich.org 70 i-
octets-to-string sequence &key external-format start end => string Err bitreich.org 70 i- Err bitreich.org 70 i-


Converts the Lisp Err bitreich.org 70 i-sequence sequence of octets Err bitreich.org 70 i-from start to end to a string Err bitreich.org 70 i-using the external format designated Err bitreich.org 70 i-by external-format. The defaults for Err bitreich.org 70 i-start and end Err bitreich.org 70 i-are 0 and the length of the sequence. The default Err bitreich.org 70 i-for external-format is :LATIN1. Err bitreich.org 70 i-

Err bitreich.org 70 i-This function is optimized for the case Err bitreich.org 70 i-of sequence being Err bitreich.org 70 i-a vector. Err bitreich.org 70 i-Don't use lists if you are in hurry. Err bitreich.org 70 i-

Err bitreich.org 70 i- Err bitreich.org 70 i-


[Function] Err bitreich.org 70 i-
octet-length string &key external-format start end => length Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i- Err bitreich.org 70 i-Returns the length of the subsequence of string from start to end in Err bitreich.org 70 i-octets if encoded using Err bitreich.org 70 i-the external format designated Err bitreich.org 70 i-by external-format. Err bitreich.org 70 i-The defaults for Err bitreich.org 70 i-start and end Err bitreich.org 70 i-are 0 and the length of string. The default Err bitreich.org 70 i-for external-format is :LATIN1. Err bitreich.org 70 i-

Err bitreich.org 70 i-In spite of the name, string can be any sequence of characters, but Err bitreich.org 70 i-the function is optimized for strings. Err bitreich.org 70 i-

Err bitreich.org 70 i- Err bitreich.org 70 i-


[Function] Err bitreich.org 70 i-
char-length sequence &key external-format start end => length Err bitreich.org 70 i- Err bitreich.org 70 i-


Err bitreich.org 70 i- Err bitreich.org 70 i-Kind of the inverse of OCTET-LENGTH. Err bitreich.org 70 i-Returns the length of the subsequence (of octets) of sequence from start to end in Err bitreich.org 70 i-characters if decoded using Err bitreich.org 70 i-the external format designated Err bitreich.org 70 i-by external-format. Err bitreich.org 70 i-The defaults for Err bitreich.org 70 i-start and end Err bitreich.org 70 i-are 0 and the length of the sequence. The default Err bitreich.org 70 i-for external-format is :LATIN1. Note that this function doesn't check for the validity of the data in sequence. Err bitreich.org 70 i-

Err bitreich.org 70 i-This function is optimized for the case Err bitreich.org 70 i-of sequence being Err bitreich.org 70 i-a vector. Err bitreich.org 70 i-Don't use lists if you are in hurry. Err bitreich.org 70 i-

Err bitreich.org 70 i- Err bitreich.org 70 i-
 

File positions

Err bitreich.org 70 i- Err bitreich.org 70 i-For flexi streams as well Err bitreich.org 70 i-as for in-memory Err bitreich.org 70 i-streams, FILE-POSITION Err bitreich.org 70 i-will usually return NIL and do nothing when a second Err bitreich.org 70 i-argument is supplied. This is correct Err bitreich.org 70 i-w.r.t. the ANSI Err bitreich.org 70 i-standard, but not very helpful. However, even Err bitreich.org 70 i-with Gray Err bitreich.org 70 i-streams there is no portable way to implement a better Err bitreich.org 70 i-behaviour. Err bitreich.org 70 i-

Err bitreich.org 70 i-For LispWorks Err bitreich.org 70 i-and CLISP, Err bitreich.org 70 i-FILE-POSITION Err bitreich.org 70 i-for flexi streams will work as if the Err bitreich.org 70 i-function had been applied to the underlying stream, and Err bitreich.org 70 i-for in-memory streams it will try to do Err bitreich.org 70 i-something sensible if the underlying data structure is a vector Err bitreich.org 70 i-(i.e. not a list). Patches for other Common Lisp Err bitreich.org 70 i-implementations should be sent to Err bitreich.org 70 i-the trivial-gray-streams Err bitreich.org 70 i-maintainers. Err bitreich.org 70 i- Err bitreich.org 70 i-
 

Acknowledgements

Err bitreich.org 70 i- Err bitreich.org 70 i-Thanks to David Lichteblau for numerous portability patches. Thanks Err bitreich.org 70 i-to Igor Plekhov for the KOI8-R code. Thanks to Anton Vodonosov for Err bitreich.org 70 i-numerous patches and additions. Thanks Err bitreich.org 70 i-to Hans Hübner for Err bitreich.org 70 i-his work on making FLEXI-STREAMS faster. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/encode.lisp b/3rdparties/software/flexi-streams-20190107-git/encode.lisp /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/encode.lisp.gph bitreich.org 70 i@@ -1,282 +0,0 @@ Err bitreich.org 70 i-;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: FLEXI-STREAMS; Base: 10 -*- Err bitreich.org 70 i-;;; $Header: /usr/local/cvsrep/flexi-streams/encode.lisp,v 1.26 2008/05/26 10:55:08 edi Exp $ Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Copyright (c) 2005-2008, Dr. Edmund Weitz. All rights reserved. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Redistribution and use in source and binary forms, with or without Err bitreich.org 70 i-;;; modification, are permitted provided that the following conditions Err bitreich.org 70 i-;;; are met: Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions of source code must retain the above copyright Err bitreich.org 70 i-;;; notice, this list of conditions and the following disclaimer. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions in binary form must reproduce the above Err bitreich.org 70 i-;;; copyright notice, this list of conditions and the following Err bitreich.org 70 i-;;; disclaimer in the documentation and/or other materials Err bitreich.org 70 i-;;; provided with the distribution. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED Err bitreich.org 70 i-;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED Err bitreich.org 70 i-;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE Err bitreich.org 70 i-;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY Err bitreich.org 70 i-;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL Err bitreich.org 70 i-;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE Err bitreich.org 70 i-;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS Err bitreich.org 70 i-;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING Err bitreich.org 70 i-;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS Err bitreich.org 70 i-;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :flexi-streams) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric char-to-octets (format char writer) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (:documentation "Converts the character CHAR to a sequence of octets Err bitreich.org 70 i-using the external format FORMAT. The conversion is performed by Err bitreich.org 70 i-calling the unary function \(which must be a functional object) WRITER Err bitreich.org 70 i-repeatedly each octet. The return value of this function is Err bitreich.org 70 i-unspecified.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric write-sequence* (format stream sequence start end) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (:documentation "A generic function which dispatches on the external Err bitreich.org 70 i-format and does the real work for STREAM-WRITE-SEQUENCE.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric string-to-octets* (format string start end) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (:documentation "A generic function which dispatches on the external Err bitreich.org 70 i-format and does the real work for STRING-TO-OCTETS.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod string-to-octets* :around (format (list list) start end) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (string-to-octets* format (coerce list 'string*) start end)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro define-sequence-writers ((format-class) &body body) Err bitreich.org 70 i- "Non-hygienic utility macro which defines methods for Err bitreich.org 70 i-WRITE-SEQUENCE* and STRING-TO-OCTETS* for the class FORMAT-CLASS. For Err bitreich.org 70 i-BODY see the docstring of DEFINE-CHAR-ENCODERS." Err bitreich.org 70 i- (let ((body `((locally Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- ,@body)))) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (defmethod string-to-octets* ((format ,format-class) string start end) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end) (string string)) Err bitreich.org 70 i- (let ((octets (make-array (compute-number-of-octets format string start end) Err bitreich.org 70 i- :element-type 'octet)) Err bitreich.org 70 i- (j 0)) Err bitreich.org 70 i- (declare (fixnum j)) Err bitreich.org 70 i- (loop for i of-type fixnum from start below end do Err bitreich.org 70 i- (macrolet ((octet-writer (form) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (setf (aref (the (array octet *) octets) j) ,form) Err bitreich.org 70 i- (incf j)))) Err bitreich.org 70 i- (symbol-macrolet ((char-getter (char string i))) Err bitreich.org 70 i- (progn ,@body)))) Err bitreich.org 70 i- octets)) Err bitreich.org 70 i- (defmethod write-sequence* ((format ,format-class) stream sequence start end) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end)) Err bitreich.org 70 i- (with-accessors ((column flexi-stream-column)) Err bitreich.org 70 i- stream Err bitreich.org 70 i- (let* ((octet-seen-p nil) Err bitreich.org 70 i- (buffer-pos 0) Err bitreich.org 70 i- ;; estimate should be good enough... Err bitreich.org 70 i- (factor (encoding-factor format)) Err bitreich.org 70 i- ;; we don't want arbitrarily large buffer, do we? Err bitreich.org 70 i- (buffer-size (min +buffer-size+ (ceiling (* factor (- end start))))) Err bitreich.org 70 i- (buffer (make-octet-buffer buffer-size)) Err bitreich.org 70 i- (underlying-stream (flexi-stream-stream stream))) Err bitreich.org 70 i- (declare (fixnum buffer-pos buffer-size) Err bitreich.org 70 i- (boolean octet-seen-p) Err bitreich.org 70 i- (type (array octet *) buffer)) Err bitreich.org 70 i- (macrolet ((octet-writer (form) Err bitreich.org 70 i- `(write-octet ,form))) Err bitreich.org 70 i- (labels ((flush-buffer () Err bitreich.org 70 i- "Sends all octets in BUFFER to the underlying stream." Err bitreich.org 70 i- (write-sequence buffer underlying-stream :end buffer-pos) Err bitreich.org 70 i- (setq buffer-pos 0)) Err bitreich.org 70 i- (write-octet (octet) Err bitreich.org 70 i- "Adds one octet to the buffer and flushes it if necessary." Err bitreich.org 70 i- (declare (type octet octet)) Err bitreich.org 70 i- (when (>= buffer-pos buffer-size) Err bitreich.org 70 i- (flush-buffer)) Err bitreich.org 70 i- (setf (aref buffer buffer-pos) octet) Err bitreich.org 70 i- (incf buffer-pos)) Err bitreich.org 70 i- (write-object (object) Err bitreich.org 70 i- "Dispatches to WRITE-OCTET or WRITE-CHARACTER Err bitreich.org 70 i-depending on the type of OBJECT." Err bitreich.org 70 i- (etypecase object Err bitreich.org 70 i- (octet (setq octet-seen-p t) Err bitreich.org 70 i- (write-octet object)) Err bitreich.org 70 i- (character (symbol-macrolet ((char-getter object)) Err bitreich.org 70 i- ,@body))))) Err bitreich.org 70 i- (macrolet ((iterate (&body output-forms) Err bitreich.org 70 i- "An unhygienic macro to implement the actual Err bitreich.org 70 i-iteration through SEQUENCE. OUTPUT-FORM is the form to retrieve one Err bitreich.org 70 i-sequence element and put its octet representation into the buffer." Err bitreich.org 70 i- `(loop for index of-type fixnum from start below end Err bitreich.org 70 i- do (progn ,@output-forms) Err bitreich.org 70 i- finally (when (plusp buffer-pos) Err bitreich.org 70 i- (flush-buffer))))) Err bitreich.org 70 i- (etypecase sequence Err bitreich.org 70 i- (string (iterate Err bitreich.org 70 i- (symbol-macrolet ((char-getter (char sequence index))) Err bitreich.org 70 i- ,@body))) Err bitreich.org 70 i- (array (iterate Err bitreich.org 70 i- (symbol-macrolet ((char-getter (aref sequence index))) Err bitreich.org 70 i- ,@body))) Err bitreich.org 70 i- (list (iterate (write-object (nth index sequence)))))) Err bitreich.org 70 i- ;; update the column slot, setting it to NIL if we sent Err bitreich.org 70 i- ;; octets Err bitreich.org 70 i- (setq column Err bitreich.org 70 i- (cond (octet-seen-p nil) Err bitreich.org 70 i- (t (let ((last-newline-pos (position #\Newline sequence Err bitreich.org 70 i- :test #'char= Err bitreich.org 70 i- :start start Err bitreich.org 70 i- :end end Err bitreich.org 70 i- :from-end t))) Err bitreich.org 70 i- (cond (last-newline-pos (- end last-newline-pos 1)) Err bitreich.org 70 i- (column (+ column (- end start)))))))))))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro define-char-encoders ((lf-format-class cr-format-class crlf-format-class) &body body) Err bitreich.org 70 i- "Non-hygienic utility macro which defines several encoding-related Err bitreich.org 70 i-methods for the classes LF-FORMAT-CLASS, CR-FORMAT-CLASS, and Err bitreich.org 70 i-CRLF-FORMAT-CLASS where it is assumed that CR-FORMAT-CLASS is the same Err bitreich.org 70 i-encoding as LF-FORMAT-CLASS but with CR instead of LF line endings and Err bitreich.org 70 i-similar for CRLF-FORMAT-CLASS, i.e. LF-FORMAT-CLASS is the base class. Err bitreich.org 70 i-BODY is a code template for the code to convert one character to Err bitreich.org 70 i-octets. BODY must contain a symbol CHAR-GETTER representing the form Err bitreich.org 70 i-which is used to obtain the character and a forms like \(OCTET-WRITE Err bitreich.org 70 i-) to write the octet . The CHAR-GETTER form might be Err bitreich.org 70 i-called more than once." Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (defmethod char-to-octets ((format ,lf-format-class) char writer) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (character char) (function writer)) Err bitreich.org 70 i- (symbol-macrolet ((char-getter char)) Err bitreich.org 70 i- (macrolet ((octet-writer (form) Err bitreich.org 70 i- `(funcall writer ,form))) Err bitreich.org 70 i- ,@body))) Err bitreich.org 70 i- (define-sequence-writers (,lf-format-class) ,@body) Err bitreich.org 70 i- (define-sequence-writers (,cr-format-class) Err bitreich.org 70 i- ;; modify the body so that the getter replaces a #\Newline Err bitreich.org 70 i- ;; with a #\Return Err bitreich.org 70 i- ,@(sublis `((char-getter . ,(with-unique-names (char) Err bitreich.org 70 i- `(let ((,char char-getter)) Err bitreich.org 70 i- (declare (character ,char)) Err bitreich.org 70 i- (if (char= ,char #\Newline) Err bitreich.org 70 i- #\Return Err bitreich.org 70 i- ,char))))) Err bitreich.org 70 i- body)) Err bitreich.org 70 i- (define-sequence-writers (,crlf-format-class) Err bitreich.org 70 i- ;; modify the body so that we potentially write octets for Err bitreich.org 70 i- ;; two characters (#\Return and #\Linefeed) - the original Err bitreich.org 70 i- ;; body is wrapped with the WRITE-CHAR local function Err bitreich.org 70 i- ,(with-unique-names (char write-char) Err bitreich.org 70 i- `(flet ((,write-char (,char) Err bitreich.org 70 i- ,@(sublis `((char-getter . ,char)) body))) Err bitreich.org 70 i- (let ((,char char-getter)) Err bitreich.org 70 i- (declare (character ,char)) Err bitreich.org 70 i- (cond ((char= ,char #\Newline) Err bitreich.org 70 i- (,write-char #\Return) Err bitreich.org 70 i- (,write-char #\Linefeed)) Err bitreich.org 70 i- (t (,write-char ,char))))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-char-encoders (flexi-latin-1-format flexi-cr-latin-1-format flexi-crlf-latin-1-format) Err bitreich.org 70 i- (let ((octet (char-code char-getter))) Err bitreich.org 70 i- (when (> octet 255) Err bitreich.org 70 i- (signal-encoding-error format "~S (code ~A) is not a LATIN-1 character." char-getter octet)) Err bitreich.org 70 i- (octet-writer octet))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-char-encoders (flexi-ascii-format flexi-cr-ascii-format flexi-crlf-ascii-format) Err bitreich.org 70 i- (let ((octet (char-code char-getter))) Err bitreich.org 70 i- (when (> octet 127) Err bitreich.org 70 i- (signal-encoding-error format "~S (code ~A) is not an ASCII character." char-getter octet)) Err bitreich.org 70 i- (octet-writer octet))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-char-encoders (flexi-8-bit-format flexi-cr-8-bit-format flexi-crlf-8-bit-format) Err bitreich.org 70 i- (with-accessors ((encoding-hash external-format-encoding-hash)) Err bitreich.org 70 i- format Err bitreich.org 70 i- (let ((octet (gethash (char-code char-getter) encoding-hash))) Err bitreich.org 70 i- (unless octet Err bitreich.org 70 i- (signal-encoding-error format "~S (code ~A) is not in this encoding." char-getter octet)) Err bitreich.org 70 i- (octet-writer octet)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-char-encoders (flexi-utf-8-format flexi-cr-utf-8-format flexi-crlf-utf-8-format) Err bitreich.org 70 i- ;; the old version using LDB was more elegant, but some Lisps had Err bitreich.org 70 i- ;; trouble optimizing it Err bitreich.org 70 i- (let ((char-code (char-code char-getter))) Err bitreich.org 70 i- (tagbody Err bitreich.org 70 i- (cond ((< char-code #x80) Err bitreich.org 70 i- (octet-writer char-code) Err bitreich.org 70 i- (go zero)) Err bitreich.org 70 i- ((< char-code #x800) Err bitreich.org 70 i- (octet-writer (logior* #b11000000 (ash* char-code -6))) Err bitreich.org 70 i- (go one)) Err bitreich.org 70 i- ((< char-code #x10000) Err bitreich.org 70 i- (octet-writer (logior* #b11100000 (ash* char-code -12))) Err bitreich.org 70 i- (go two)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (octet-writer (logior* #b11110000 (ash* char-code -18))))) Err bitreich.org 70 i- (octet-writer (logior* #b10000000 (logand* #b00111111 (ash* char-code -12)))) Err bitreich.org 70 i- two Err bitreich.org 70 i- (octet-writer (logior* #b10000000 (logand* #b00111111 (ash* char-code -6)))) Err bitreich.org 70 i- one Err bitreich.org 70 i- (octet-writer (logior* #b10000000 (logand* #b00111111 char-code))) Err bitreich.org 70 i- zero))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-char-encoders (flexi-utf-16-le-format flexi-cr-utf-16-le-format flexi-crlf-utf-16-le-format) Err bitreich.org 70 i- (flet ((write-word (word) Err bitreich.org 70 i- (octet-writer (logand* #x00ff word)) Err bitreich.org 70 i- (octet-writer (ash* (logand* #xff00 word) -8)))) Err bitreich.org 70 i- (declare (inline write-word)) Err bitreich.org 70 i- (let ((char-code (char-code char-getter))) Err bitreich.org 70 i- (declare (type char-code-integer char-code)) Err bitreich.org 70 i- (cond ((< char-code #x10000) Err bitreich.org 70 i- (write-word char-code)) Err bitreich.org 70 i- (t (decf char-code #x10000) Err bitreich.org 70 i- (write-word (logior* #xd800 (ash* char-code -10))) Err bitreich.org 70 i- (write-word (logior* #xdc00 (logand* #x03ff char-code)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-char-encoders (flexi-utf-16-be-format flexi-cr-utf-16-be-format flexi-crlf-utf-16-be-format) Err bitreich.org 70 i- (flet ((write-word (word) Err bitreich.org 70 i- (octet-writer (ash* (logand* #xff00 word) -8)) Err bitreich.org 70 i- (octet-writer (logand* #x00ff word)))) Err bitreich.org 70 i- (declare (inline write-word)) Err bitreich.org 70 i- (let ((char-code (char-code char-getter))) Err bitreich.org 70 i- (declare (type char-code-integer char-code)) Err bitreich.org 70 i- (cond ((< char-code #x10000) Err bitreich.org 70 i- (write-word char-code)) Err bitreich.org 70 i- (t (decf char-code #x10000) Err bitreich.org 70 i- (write-word (logior* #xd800 (ash* char-code -10))) Err bitreich.org 70 i- (write-word (logior* #xdc00 (logand* #x03ff char-code)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-char-encoders (flexi-utf-32-le-format flexi-cr-utf-32-le-format flexi-crlf-utf-32-le-format) Err bitreich.org 70 i- (let ((char-code (char-code char-getter))) Err bitreich.org 70 i- (octet-writer (logand* #x00ff char-code)) Err bitreich.org 70 i- (octet-writer (logand* #x00ff (ash* char-code -8))) Err bitreich.org 70 i- (octet-writer (logand* #x00ff (ash* char-code -16))) Err bitreich.org 70 i- (octet-writer (logand* #x00ff (ash* char-code -24))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-char-encoders (flexi-utf-32-be-format flexi-cr-utf-32-be-format flexi-crlf-utf-32-be-format) Err bitreich.org 70 i- (let ((char-code (char-code char-getter))) Err bitreich.org 70 i- (octet-writer (logand* #x00ff (ash* char-code -24))) Err bitreich.org 70 i- (octet-writer (logand* #x00ff (ash* char-code -16))) Err bitreich.org 70 i- (octet-writer (logand* #x00ff (ash* char-code -8))) Err bitreich.org 70 i- (octet-writer (logand* #x00ff char-code)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod char-to-octets ((format flexi-cr-mixin) char writer) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (character char)) Err bitreich.org 70 i- (if (char= char #\Newline) Err bitreich.org 70 i- (call-next-method format #\Return writer) Err bitreich.org 70 i- (call-next-method))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod char-to-octets ((format flexi-crlf-mixin) char writer) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (character char)) Err bitreich.org 70 i- (cond ((char= char #\Newline) Err bitreich.org 70 i- (call-next-method format #\Return writer) Err bitreich.org 70 i- (call-next-method format #\Linefeed writer)) Err bitreich.org 70 i- (t (call-next-method)))) Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/external-format.lisp b/3rdparties/software/flexi-streams-20190107-git/external-format.lisp /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/external-format.lisp.gph bitreich.org 70 i@@ -1,389 +0,0 @@ Err bitreich.org 70 i-;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: FLEXI-STREAMS; Base: 10 -*- Err bitreich.org 70 i-;;; $Header: /usr/local/cvsrep/flexi-streams/external-format.lisp,v 1.24 2008/05/26 10:55:08 edi Exp $ Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Copyright (c) 2005-2008, Dr. Edmund Weitz. All rights reserved. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Redistribution and use in source and binary forms, with or without Err bitreich.org 70 i-;;; modification, are permitted provided that the following conditions Err bitreich.org 70 i-;;; are met: Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions of source code must retain the above copyright Err bitreich.org 70 i-;;; notice, this list of conditions and the following disclaimer. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions in binary form must reproduce the above Err bitreich.org 70 i-;;; copyright notice, this list of conditions and the following Err bitreich.org 70 i-;;; disclaimer in the documentation and/or other materials Err bitreich.org 70 i-;;; provided with the distribution. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED Err bitreich.org 70 i-;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED Err bitreich.org 70 i-;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE Err bitreich.org 70 i-;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY Err bitreich.org 70 i-;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL Err bitreich.org 70 i-;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE Err bitreich.org 70 i-;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS Err bitreich.org 70 i-;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING Err bitreich.org 70 i-;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS Err bitreich.org 70 i-;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :flexi-streams) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass external-format () Err bitreich.org 70 i- ((name :initarg :name Err bitreich.org 70 i- :reader external-format-name Err bitreich.org 70 i- :documentation "The name of the external format - a Err bitreich.org 70 i-keyword.") Err bitreich.org 70 i- (id :initarg :id Err bitreich.org 70 i- :initform nil Err bitreich.org 70 i- :reader external-format-id Err bitreich.org 70 i- :documentation "If the external format denotes a Windows Err bitreich.org 70 i-code page this ID specifies which one to use. Otherwise the Err bitreich.org 70 i-value is ignored \(and usually NIL).") Err bitreich.org 70 i- (little-endian :initarg :little-endian Err bitreich.org 70 i- :initform *default-little-endian* Err bitreich.org 70 i- :reader external-format-little-endian Err bitreich.org 70 i- :documentation "Whether multi-octet values are Err bitreich.org 70 i-read and written with the least significant octet first. For Err bitreich.org 70 i-8-bit encodings like :ISO-8859-1 this value is ignored.") Err bitreich.org 70 i- (eol-style :initarg :eol-style Err bitreich.org 70 i- :reader external-format-eol-style Err bitreich.org 70 i- :documentation "The character\(s) to or from which Err bitreich.org 70 i-a #\Newline will be translated - one of the keywords :CR, :LF, Err bitreich.org 70 i-or :CRLF.")) Err bitreich.org 70 i- (:documentation "EXTERNAL-FORMAT objects are used to denote Err bitreich.org 70 i-encodings for flexi streams or for the string functions defined in Err bitreich.org 70 i-strings.lisp.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod make-load-form ((thing external-format) &optional environment) Err bitreich.org 70 i- "Defines a way to reconstruct external formats. Needed for OpenMCL." Err bitreich.org 70 i- (make-load-form-saving-slots thing :environment environment)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-cr-mixin () Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "A mixin for external-formats where the end-of-line Err bitreich.org 70 i-designator is #\Return.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-crlf-mixin () Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "A mixin for external-formats where the end-of-line Err bitreich.org 70 i-designator is the sequence #\Return #\Linefeed.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-8-bit-format (external-format) Err bitreich.org 70 i- ((encoding-hash :accessor external-format-encoding-hash) Err bitreich.org 70 i- (decoding-table :accessor external-format-decoding-table)) Err bitreich.org 70 i- (:documentation "The class for all flexi streams which use an 8-bit Err bitreich.org 70 i-encoding and thus need additional slots for the encoding/decoding Err bitreich.org 70 i-tables.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-cr-8-bit-format (flexi-cr-mixin flexi-8-bit-format) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Special class for external formats which use an Err bitreich.org 70 i-8-bit encoding /and/ have #\Return as the line-end character.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-crlf-8-bit-format (flexi-crlf-mixin flexi-8-bit-format) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Special class for external formats which use an Err bitreich.org 70 i-8-bit encoding /and/ have the sequence #\Return #\Linefeed as the Err bitreich.org 70 i-line-end character.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-ascii-format (flexi-8-bit-format) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Special class for external formats which use the Err bitreich.org 70 i-US-ASCII encoding.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-cr-ascii-format (flexi-cr-mixin flexi-ascii-format) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Special class for external formats which use the Err bitreich.org 70 i-US-ASCII encoding /and/ have #\Return as the line-end character.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-crlf-ascii-format (flexi-crlf-mixin flexi-ascii-format) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Special class for external formats which use the Err bitreich.org 70 i-US-ASCII encoding /and/ have the sequence #\Return #\Linefeed as the Err bitreich.org 70 i-line-end character.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-latin-1-format (flexi-8-bit-format) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Special class for external formats which use the Err bitreich.org 70 i-ISO-8859-1 encoding.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-cr-latin-1-format (flexi-cr-mixin flexi-latin-1-format) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Special class for external formats which use the Err bitreich.org 70 i-ISO-8859-1 encoding /and/ have #\Return as the line-end character.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-crlf-latin-1-format (flexi-crlf-mixin flexi-latin-1-format) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Special class for external formats which use the Err bitreich.org 70 i-ISO-8859-1 encoding /and/ have the sequence #\Return #\Linefeed as the Err bitreich.org 70 i-line-end character.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-utf-32-format (external-format) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Abstract class for external formats which use the Err bitreich.org 70 i-UTF-32 encoding.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-utf-32-le-format (flexi-utf-32-format) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Special class for external formats which use the Err bitreich.org 70 i-UTF-32 encoding with little-endian byte ordering.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-cr-utf-32-le-format (flexi-cr-mixin flexi-utf-32-le-format) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Special class for external formats which use the Err bitreich.org 70 i-UTF-32 encoding with little-endian byte ordering /and/ have #\Return Err bitreich.org 70 i-as the line-end character.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-crlf-utf-32-le-format (flexi-crlf-mixin flexi-utf-32-le-format) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Special class for external formats which use the Err bitreich.org 70 i-UTF-32 encoding with little-endian byte ordering /and/ have the Err bitreich.org 70 i-sequence #\Return #\Linefeed as the line-end character.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-utf-32-be-format (flexi-utf-32-format) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Special class for external formats which use the Err bitreich.org 70 i-UTF-32 encoding with big-endian byte ordering.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-cr-utf-32-be-format (flexi-cr-mixin flexi-utf-32-be-format) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Special class for external formats which use the Err bitreich.org 70 i-UTF-32 encoding with big-endian byte ordering /and/ have #\Return as Err bitreich.org 70 i-the line-end character.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-crlf-utf-32-be-format (flexi-crlf-mixin flexi-utf-32-be-format) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Special class for external formats which use the Err bitreich.org 70 i-the UTF-32 encoding with big-endian byte ordering /and/ have the Err bitreich.org 70 i-sequence #\Return #\Linefeed as the line-end character.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-utf-16-format (external-format) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Abstract class for external formats which use the Err bitreich.org 70 i-UTF-16 encoding.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-utf-16-le-format (flexi-utf-16-format) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Special class for external formats which use the Err bitreich.org 70 i-UTF-16 encoding with little-endian byte ordering.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-cr-utf-16-le-format (flexi-cr-mixin flexi-utf-16-le-format) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Special class for external formats which use the Err bitreich.org 70 i-UTF-16 encoding with little-endian byte ordering /and/ have #\Return Err bitreich.org 70 i-as the line-end character.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-crlf-utf-16-le-format (flexi-crlf-mixin flexi-utf-16-le-format) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Special class for external formats which use the Err bitreich.org 70 i-UTF-16 encoding with little-endian byte ordering /and/ have the Err bitreich.org 70 i-sequence #\Return #\Linefeed as the line-end character.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-utf-16-be-format (flexi-utf-16-format) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Special class for external formats which use the Err bitreich.org 70 i-UTF-16 encoding with big-endian byte ordering.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-cr-utf-16-be-format (flexi-cr-mixin flexi-utf-16-be-format) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Special class for external formats which use the Err bitreich.org 70 i-UTF-16 encoding with big-endian byte ordering /and/ have #\Return as Err bitreich.org 70 i-the line-end character.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-crlf-utf-16-be-format (flexi-crlf-mixin flexi-utf-16-be-format) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Special class for external formats which use the Err bitreich.org 70 i-UTF-16 encoding with big-endian byte ordering /and/ have the sequence Err bitreich.org 70 i-#\Return #\Linefeed as the line-end character.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-utf-8-format (external-format) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Special class for external formats which use the Err bitreich.org 70 i-UTF-8 encoding.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-cr-utf-8-format (flexi-cr-mixin flexi-utf-8-format) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Special class for external formats which use the Err bitreich.org 70 i-UTF-8 encoding /and/ have #\Return as the line-end character.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-crlf-utf-8-format (flexi-crlf-mixin flexi-utf-8-format) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Special class for external formats which use the Err bitreich.org 70 i-UTF-8 encoding /and/ have the sequence #\Return #\Linefeed as the Err bitreich.org 70 i-line-end character.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod initialize-instance :after ((external-format flexi-8-bit-format) &rest initargs) Err bitreich.org 70 i- "Sets the fixed encoding/decoding tables for this particular Err bitreich.org 70 i-external format." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (declare (ignore initargs)) Err bitreich.org 70 i- (with-accessors ((encoding-hash external-format-encoding-hash) Err bitreich.org 70 i- (decoding-table external-format-decoding-table) Err bitreich.org 70 i- (name external-format-name) Err bitreich.org 70 i- (id external-format-id)) Err bitreich.org 70 i- external-format Err bitreich.org 70 i- (multiple-value-setq (encoding-hash decoding-table) Err bitreich.org 70 i- (cond ((ascii-name-p name) Err bitreich.org 70 i- (values +ascii-hash+ +ascii-table+)) Err bitreich.org 70 i- ((koi8-r-name-p name) Err bitreich.org 70 i- (values +koi8-r-hash+ +koi8-r-table+)) Err bitreich.org 70 i- ((iso-8859-name-p name) Err bitreich.org 70 i- (values (cdr (assoc name +iso-8859-hashes+ :test #'eq)) Err bitreich.org 70 i- (cdr (assoc name +iso-8859-tables+ :test #'eq)))) Err bitreich.org 70 i- ((code-page-name-p name) Err bitreich.org 70 i- (values (cdr (assoc id +code-page-hashes+)) Err bitreich.org 70 i- (cdr (assoc id +code-page-tables+)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun external-format-class-name (real-name &key eol-style little-endian id) Err bitreich.org 70 i- "Given the initargs for a general external format returns the name Err bitreich.org 70 i-\(a symbol) of the most specific subclass matching these arguments." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (declare (ignore id)) Err bitreich.org 70 i- (cond ((ascii-name-p real-name) Err bitreich.org 70 i- (ecase eol-style Err bitreich.org 70 i- (:lf 'flexi-ascii-format) Err bitreich.org 70 i- (:cr 'flexi-cr-ascii-format) Err bitreich.org 70 i- (:crlf 'flexi-crlf-ascii-format))) Err bitreich.org 70 i- ((eq real-name :iso-8859-1) Err bitreich.org 70 i- (ecase eol-style Err bitreich.org 70 i- (:lf 'flexi-latin-1-format) Err bitreich.org 70 i- (:cr 'flexi-cr-latin-1-format) Err bitreich.org 70 i- (:crlf 'flexi-crlf-latin-1-format))) Err bitreich.org 70 i- ((or (koi8-r-name-p real-name) Err bitreich.org 70 i- (iso-8859-name-p real-name) Err bitreich.org 70 i- (code-page-name-p real-name)) Err bitreich.org 70 i- (ecase eol-style Err bitreich.org 70 i- (:lf 'flexi-8-bit-format) Err bitreich.org 70 i- (:cr 'flexi-cr-8-bit-format) Err bitreich.org 70 i- (:crlf 'flexi-crlf-8-bit-format))) Err bitreich.org 70 i- (t (ecase real-name Err bitreich.org 70 i- (:utf-8 (ecase eol-style Err bitreich.org 70 i- (:lf 'flexi-utf-8-format) Err bitreich.org 70 i- (:cr 'flexi-cr-utf-8-format) Err bitreich.org 70 i- (:crlf 'flexi-crlf-utf-8-format))) Err bitreich.org 70 i- (:utf-16 (ecase eol-style Err bitreich.org 70 i- (:lf (if little-endian Err bitreich.org 70 i- 'flexi-utf-16-le-format Err bitreich.org 70 i- 'flexi-utf-16-be-format)) Err bitreich.org 70 i- (:cr (if little-endian Err bitreich.org 70 i- 'flexi-cr-utf-16-le-format Err bitreich.org 70 i- 'flexi-cr-utf-16-be-format)) Err bitreich.org 70 i- (:crlf (if little-endian Err bitreich.org 70 i- 'flexi-crlf-utf-16-le-format Err bitreich.org 70 i- 'flexi-crlf-utf-16-be-format)))) Err bitreich.org 70 i- (:utf-32 (ecase eol-style Err bitreich.org 70 i- (:lf (if little-endian Err bitreich.org 70 i- 'flexi-utf-32-le-format Err bitreich.org 70 i- 'flexi-utf-32-be-format)) Err bitreich.org 70 i- (:cr (if little-endian Err bitreich.org 70 i- 'flexi-cr-utf-32-le-format Err bitreich.org 70 i- 'flexi-cr-utf-32-be-format)) Err bitreich.org 70 i- (:crlf (if little-endian Err bitreich.org 70 i- 'flexi-crlf-utf-32-le-format Err bitreich.org 70 i- 'flexi-crlf-utf-32-be-format)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-external-format% (name &key (little-endian *default-little-endian*) Err bitreich.org 70 i- id eol-style) Err bitreich.org 70 i- "Used internally by MAKE-EXTERNAL-FORMAT to default some of the Err bitreich.org 70 i-keywords arguments and to determine the right subclass of Err bitreich.org 70 i-EXTERNAL-FORMAT." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (let* ((real-name (normalize-external-format-name name)) Err bitreich.org 70 i- (initargs Err bitreich.org 70 i- (cond ((or (iso-8859-name-p real-name) Err bitreich.org 70 i- (koi8-r-name-p real-name) Err bitreich.org 70 i- (ascii-name-p real-name)) Err bitreich.org 70 i- (list :eol-style (or eol-style *default-eol-style*))) Err bitreich.org 70 i- ((code-page-name-p real-name) Err bitreich.org 70 i- (list :id (or (known-code-page-id-p id) Err bitreich.org 70 i- (error 'external-format-error Err bitreich.org 70 i- :format-control "Unknown code page ID ~S" Err bitreich.org 70 i- :format-arguments (list id))) Err bitreich.org 70 i- ;; default EOL style for Windows code pages is :CRLF Err bitreich.org 70 i- :eol-style (or eol-style :crlf))) Err bitreich.org 70 i- (t (list :eol-style (or eol-style *default-eol-style*) Err bitreich.org 70 i- :little-endian little-endian))))) Err bitreich.org 70 i- (apply #'make-instance (apply #'external-format-class-name real-name initargs) Err bitreich.org 70 i- :name real-name Err bitreich.org 70 i- initargs))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-external-format (name &rest args Err bitreich.org 70 i- &key (little-endian *default-little-endian*) Err bitreich.org 70 i- id eol-style) Err bitreich.org 70 i- "Creates and returns an external format object as specified. Err bitreich.org 70 i-NAME is a keyword like :LATIN1 or :UTF-8, LITTLE-ENDIAN specifies Err bitreich.org 70 i-the `endianess' of the external format and is ignored for 8-bit Err bitreich.org 70 i-encodings, EOL-STYLE is one of the keywords :CR, :LF, or :CRLF Err bitreich.org 70 i-which denote the end-of-line character \(sequence), ID is the ID Err bitreich.org 70 i-of a Windows code page \(and ignored for other encodings)." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- ;; the keyword arguments are only there for arglist display in the IDE Err bitreich.org 70 i- (declare (ignore id little-endian)) Err bitreich.org 70 i- (let ((shortcut-args (cdr (assoc name +shortcut-map+ :test #'string-equal)))) Err bitreich.org 70 i- (cond (shortcut-args Err bitreich.org 70 i- (apply #'make-external-format% Err bitreich.org 70 i- (append shortcut-args Err bitreich.org 70 i- `(:eol-style ,eol-style)))) Err bitreich.org 70 i- (t (apply #'make-external-format% name args))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun maybe-convert-external-format (external-format) Err bitreich.org 70 i- "Given an external format designator \(a keyword, a list, or an Err bitreich.org 70 i-EXTERNAL-FORMAT object) returns the corresponding EXTERNAL-FORMAT Err bitreich.org 70 i-object." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (typecase external-format Err bitreich.org 70 i- (symbol (make-external-format external-format)) Err bitreich.org 70 i- (list (apply #'make-external-format external-format)) Err bitreich.org 70 i- (otherwise external-format))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun external-format-equal (ef1 ef2) Err bitreich.org 70 i- "Checks whether two EXTERNAL-FORMAT objects denote the same encoding." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (let* ((name1 (external-format-name ef1)) Err bitreich.org 70 i- (code-page-name-p (code-page-name-p name1))) Err bitreich.org 70 i- ;; they must habe the same canonical name Err bitreich.org 70 i- (and (eq name1 Err bitreich.org 70 i- (external-format-name ef2)) Err bitreich.org 70 i- ;; if both are code pages the IDs must be the same Err bitreich.org 70 i- (or (not code-page-name-p) Err bitreich.org 70 i- (eql (external-format-id ef1) Err bitreich.org 70 i- (external-format-id ef2))) Err bitreich.org 70 i- ;; for non-8-bit encodings the endianess must be the same Err bitreich.org 70 i- (or code-page-name-p Err bitreich.org 70 i- (ascii-name-p name1) Err bitreich.org 70 i- (koi8-r-name-p name1) Err bitreich.org 70 i- (iso-8859-name-p name1) Err bitreich.org 70 i- (eq name1 :utf-8) Err bitreich.org 70 i- (eq (not (external-format-little-endian ef1)) Err bitreich.org 70 i- (not (external-format-little-endian ef2)))) Err bitreich.org 70 i- ;; the EOL style must also be the same Err bitreich.org 70 i- (eq (external-format-eol-style ef1) Err bitreich.org 70 i- (external-format-eol-style ef2))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun normalize-external-format (external-format) Err bitreich.org 70 i- "Returns a list which is a `normalized' representation of the Err bitreich.org 70 i-external format EXTERNAL-FORMAT. Used internally by PRINT-OBJECT, for Err bitreich.org 70 i-example. Basically, the result is an argument list that can be fed Err bitreich.org 70 i-back to MAKE-EXTERNAL-FORMAT to create an equivalent object." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (let ((name (external-format-name external-format)) Err bitreich.org 70 i- (eol-style (external-format-eol-style external-format))) Err bitreich.org 70 i- (cond ((or (ascii-name-p name) Err bitreich.org 70 i- (koi8-r-name-p name) Err bitreich.org 70 i- (iso-8859-name-p name) Err bitreich.org 70 i- (eq name :utf-8)) Err bitreich.org 70 i- (list name :eol-style eol-style)) Err bitreich.org 70 i- ((code-page-name-p name) Err bitreich.org 70 i- (list name Err bitreich.org 70 i- :id (external-format-id external-format) Err bitreich.org 70 i- :eol-style eol-style)) Err bitreich.org 70 i- (t (list name Err bitreich.org 70 i- :eol-style eol-style Err bitreich.org 70 i- :little-endian (external-format-little-endian external-format)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod print-object ((object external-format) stream) Err bitreich.org 70 i- "How an EXTERNAL-FORMAT object is rendered. Uses Err bitreich.org 70 i-NORMALIZE-EXTERNAL-FORMAT." Err bitreich.org 70 i- (print-unreadable-object (object stream :type t :identity t) Err bitreich.org 70 i- (prin1 (normalize-external-format object) stream))) Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/flexi-streams.asd b/3rdparties/software/flexi-streams-20190107-git/flexi-streams.asd /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/flexi-streams.asd.gph bitreich.org 70 i@@ -1,79 +0,0 @@ Err bitreich.org 70 i-;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: CL-USER; Base: 10 -*- Err bitreich.org 70 i-;;; $Header: /usr/local/cvsrep/flexi-streams/flexi-streams.asd,v 1.79 2008/08/26 10:59:22 edi Exp $ Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Copyright (c) 2005-2008, Dr. Edmund Weitz. All rights reserved. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Redistribution and use in source and binary forms, with or without Err bitreich.org 70 i-;;; modification, are permitted provided that the following conditions Err bitreich.org 70 i-;;; are met: Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions of source code must retain the above copyright Err bitreich.org 70 i-;;; notice, this list of conditions and the following disclaimer. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions in binary form must reproduce the above Err bitreich.org 70 i-;;; copyright notice, this list of conditions and the following Err bitreich.org 70 i-;;; disclaimer in the documentation and/or other materials Err bitreich.org 70 i-;;; provided with the distribution. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED Err bitreich.org 70 i-;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED Err bitreich.org 70 i-;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE Err bitreich.org 70 i-;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY Err bitreich.org 70 i-;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL Err bitreich.org 70 i-;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE Err bitreich.org 70 i-;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS Err bitreich.org 70 i-;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING Err bitreich.org 70 i-;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS Err bitreich.org 70 i-;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl-user) Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage :flexi-streams-system Err bitreich.org 70 i- (:use :asdf :cl)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :flexi-streams-system) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Maybe it can be made work for some encodings Err bitreich.org 70 i-(when (<= char-code-limit 65533) Err bitreich.org 70 i- (error "flexi-streams doesn't work on implementations with CHAR-CODE-LIMIT (~a) less than 65533" Err bitreich.org 70 i- char-code-limit)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defsystem :flexi-streams Err bitreich.org 70 i- :version "1.0.18" Err bitreich.org 70 i- :serial t Err bitreich.org 70 i- :description "Flexible bivalent streams for Common Lisp" Err bitreich.org 70 i- :license "BSD-2-Clause" Err bitreich.org 70 i- :components ((:file "packages") Err bitreich.org 70 i- (:file "mapping") Err bitreich.org 70 i- (:file "ascii") Err bitreich.org 70 i- (:file "koi8-r") Err bitreich.org 70 i- (:file "iso-8859") Err bitreich.org 70 i- (:file "code-pages") Err bitreich.org 70 i- (:file "specials") Err bitreich.org 70 i- (:file "util") Err bitreich.org 70 i- (:file "conditions") Err bitreich.org 70 i- (:file "external-format") Err bitreich.org 70 i- (:file "length") Err bitreich.org 70 i- (:file "encode") Err bitreich.org 70 i- (:file "decode") Err bitreich.org 70 i- (:file "in-memory") Err bitreich.org 70 i- (:file "stream") Err bitreich.org 70 i- #+:lispworks (:file "lw-char-stream") Err bitreich.org 70 i- (:file "output") Err bitreich.org 70 i- (:file "input") Err bitreich.org 70 i- (:file "io") Err bitreich.org 70 i- (:file "strings")) Err bitreich.org 70 i- :depends-on (:trivial-gray-streams)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defsystem :flexi-streams-test Err bitreich.org 70 i- :components ((:module "test" Err bitreich.org 70 i- :serial t Err bitreich.org 70 i- :components ((:file "packages") Err bitreich.org 70 i- (:file "test")))) Err bitreich.org 70 i- :depends-on (:flexi-streams)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod perform ((o test-op) (c (eql (find-system 'flexi-streams)))) Err bitreich.org 70 i- (operate 'load-op 'flexi-streams-test) Err bitreich.org 70 i- (funcall (intern (symbol-name :run-all-tests) Err bitreich.org 70 i- (find-package :flexi-streams-test)))) Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/in-memory.lisp b/3rdparties/software/flexi-streams-20190107-git/in-memory.lisp /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/in-memory.lisp.gph bitreich.org 70 i@@ -1,442 +0,0 @@ Err bitreich.org 70 i-;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: FLEXI-STREAMS; Base: 10 -*- Err bitreich.org 70 i-;;; $Header: /usr/local/cvsrep/flexi-streams/in-memory.lisp,v 1.31 2008/05/19 07:57:07 edi Exp $ Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Copyright (c) 2005-2008, Dr. Edmund Weitz. All rights reserved. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Redistribution and use in source and binary forms, with or without Err bitreich.org 70 i-;;; modification, are permitted provided that the following conditions Err bitreich.org 70 i-;;; are met: Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions of source code must retain the above copyright Err bitreich.org 70 i-;;; notice, this list of conditions and the following disclaimer. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions in binary form must reproduce the above Err bitreich.org 70 i-;;; copyright notice, this list of conditions and the following Err bitreich.org 70 i-;;; disclaimer in the documentation and/or other materials Err bitreich.org 70 i-;;; provided with the distribution. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED Err bitreich.org 70 i-;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED Err bitreich.org 70 i-;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE Err bitreich.org 70 i-;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY Err bitreich.org 70 i-;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL Err bitreich.org 70 i-;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE Err bitreich.org 70 i-;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS Err bitreich.org 70 i-;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING Err bitreich.org 70 i-;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS Err bitreich.org 70 i-;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :flexi-streams) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass in-memory-stream (trivial-gray-stream-mixin) Err bitreich.org 70 i- ((transformer :initarg :transformer Err bitreich.org 70 i- :accessor in-memory-stream-transformer Err bitreich.org 70 i- :documentation "A function used to transform the Err bitreich.org 70 i-written/read octet to the value stored/retrieved in/from the Err bitreich.org 70 i-underlying vector.") Err bitreich.org 70 i- #+:cmu Err bitreich.org 70 i- (open-p :initform t Err bitreich.org 70 i- :accessor in-memory-stream-open-p Err bitreich.org 70 i- :documentation "For CMUCL we have to keep track of this Err bitreich.org 70 i-manually.")) Err bitreich.org 70 i- (:documentation "An IN-MEMORY-STREAM is a binary stream that reads Err bitreich.org 70 i-octets from or writes octets to a sequence in RAM.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass in-memory-input-stream (in-memory-stream fundamental-binary-input-stream) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "An IN-MEMORY-INPUT-STREAM is a binary stream that Err bitreich.org 70 i-reads octets from a sequence in RAM.")) Err bitreich.org 70 i- Err bitreich.org 70 i-#+:cmu Err bitreich.org 70 i-(defmethod output-stream-p ((stream in-memory-input-stream)) Err bitreich.org 70 i- "Explicitly states whether this is an output stream." Err bitreich.org 70 i- (declare (optimize speed)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass in-memory-output-stream (in-memory-stream fundamental-binary-output-stream) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "An IN-MEMORY-OUTPUT-STREAM is a binary stream that Err bitreich.org 70 i-writes octets to a sequence in RAM.")) Err bitreich.org 70 i- Err bitreich.org 70 i-#+:cmu Err bitreich.org 70 i-(defmethod input-stream-p ((stream in-memory-output-stream)) Err bitreich.org 70 i- "Explicitly states whether this is an input stream." Err bitreich.org 70 i- (declare (optimize speed)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass list-stream () Err bitreich.org 70 i- ((list :initarg :list Err bitreich.org 70 i- :accessor list-stream-list Err bitreich.org 70 i- :documentation "The underlying list of the stream.")) Err bitreich.org 70 i- (:documentation "A LIST-STREAM is a mixin for IN-MEMORY streams Err bitreich.org 70 i-where the underlying sequence is a list.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass vector-stream () Err bitreich.org 70 i- ((vector :initarg :vector Err bitreich.org 70 i- :accessor vector-stream-vector Err bitreich.org 70 i- :documentation "The underlying vector of the stream which Err bitreich.org 70 i-\(for output) must always be adjustable and have a fill pointer.")) Err bitreich.org 70 i- (:documentation "A VECTOR-STREAM is a mixin for IN-MEMORY streams Err bitreich.org 70 i-where the underlying sequence is a vector.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass list-input-stream (list-stream in-memory-input-stream) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "A binary input stream that gets its data from an Err bitreich.org 70 i-associated list of octets.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass vector-input-stream (vector-stream in-memory-input-stream) Err bitreich.org 70 i- ((index :initarg :index Err bitreich.org 70 i- :accessor vector-stream-index Err bitreich.org 70 i- :type (integer 0 #.array-dimension-limit) Err bitreich.org 70 i- :documentation "An index into the underlying vector denoting Err bitreich.org 70 i-the current position.") Err bitreich.org 70 i- (end :initarg :end Err bitreich.org 70 i- :accessor vector-stream-end Err bitreich.org 70 i- :type (integer 0 #.array-dimension-limit) Err bitreich.org 70 i- :documentation "An index into the underlying vector denoting Err bitreich.org 70 i-the end of the available data.")) Err bitreich.org 70 i- (:documentation "A binary input stream that gets its data from an Err bitreich.org 70 i-associated vector of octets.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass vector-output-stream (vector-stream in-memory-output-stream) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "A binary output stream that writes its data to an Err bitreich.org 70 i-associated vector.")) Err bitreich.org 70 i- Err bitreich.org 70 i-#+:cmu Err bitreich.org 70 i-(defmethod open-stream-p ((stream in-memory-stream)) Err bitreich.org 70 i- "Returns a true value if STREAM is open. See ANSI standard." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (in-memory-stream-open-p stream)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+:cmu Err bitreich.org 70 i-(defmethod close ((stream in-memory-stream) &key abort) Err bitreich.org 70 i- "Closes the stream STREAM. See ANSI standard." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (declare (ignore abort)) Err bitreich.org 70 i- (prog1 Err bitreich.org 70 i- (in-memory-stream-open-p stream) Err bitreich.org 70 i- (setf (in-memory-stream-open-p stream) nil))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod check-if-open ((stream in-memory-stream)) Err bitreich.org 70 i- "Checks if STREAM is open and signals an error otherwise." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (unless (open-stream-p stream) Err bitreich.org 70 i- (error 'in-memory-stream-closed-error Err bitreich.org 70 i- :stream stream))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-element-type ((stream in-memory-stream)) Err bitreich.org 70 i- "The element type is always OCTET by definition." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- 'octet) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric peek-byte (stream &optional peek-type eof-err-p eof-value) Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "PEEK-BYTE is like PEEK-CHAR, i.e. it returns a byte from the stream without Err bitreich.org 70 i- actually removing it. If PEEK-TYPE is NIL the next byte is returned, if Err bitreich.org 70 i- PEEK-TYPE is T, the next byte which is not 0 is returned, if PEEK-TYPE is an Err bitreich.org 70 i- byte, the next byte which equals PEEK-TYPE is returned. EOF-ERROR-P and Err bitreich.org 70 i- EOF-VALUE are interpreted as usual.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod peek-byte ((stream vector-input-stream) &optional peek-type (eof-error-p t) eof-value) Err bitreich.org 70 i- "Returns a byte from VECTOR-INPUT-STREAM without actually removing it." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (let ((index (vector-stream-index stream))) Err bitreich.org 70 i- (loop :for byte = (read-byte stream eof-error-p :eof) Err bitreich.org 70 i- :for new-index :from index Err bitreich.org 70 i- :until (cond ((eq byte :eof) Err bitreich.org 70 i- (return eof-value)) Err bitreich.org 70 i- ((null peek-type)) Err bitreich.org 70 i- ((eq peek-type 't) Err bitreich.org 70 i- (plusp byte)) Err bitreich.org 70 i- ((= byte peek-type))) Err bitreich.org 70 i- :finally (setf (slot-value stream 'index) new-index) Err bitreich.org 70 i- (return byte)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod peek-byte ((stream list-input-stream) &optional peek-type (eof-error-p t) eof-value) Err bitreich.org 70 i- "Returns a byte from VECTOR-INPUT-STREAM without actually removing it." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- :for list-elem = (car (list-stream-list stream)) Err bitreich.org 70 i- :for byte = (read-byte stream eof-error-p :eof) Err bitreich.org 70 i- :until (cond ((eq byte :eof) Err bitreich.org 70 i- (return eof-value)) Err bitreich.org 70 i- ((null peek-type)) Err bitreich.org 70 i- ((eq peek-type 't) Err bitreich.org 70 i- (plusp byte)) Err bitreich.org 70 i- ((= byte peek-type))) Err bitreich.org 70 i- :finally (push list-elem (list-stream-list stream)) Err bitreich.org 70 i- (return byte))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod transform-octet ((stream in-memory-stream) octet) Err bitreich.org 70 i- "Applies the transformer of STREAM to octet and returns the result." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (funcall (or (in-memory-stream-transformer stream) Err bitreich.org 70 i- #'identity) octet)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-read-byte ((stream list-input-stream)) Err bitreich.org 70 i- "Reads one byte by simply popping it off of the top of the list." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (check-if-open stream) Err bitreich.org 70 i- (with-accessors ((list list-stream-list)) Err bitreich.org 70 i- stream Err bitreich.org 70 i- (transform-octet stream (or (pop list) (return-from stream-read-byte :eof))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-listen ((stream list-input-stream)) Err bitreich.org 70 i- "Checks whether list is not empty." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (check-if-open stream) Err bitreich.org 70 i- (with-accessors ((list list-stream-list)) Err bitreich.org 70 i- stream Err bitreich.org 70 i- list)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-read-sequence ((stream list-input-stream) sequence start end &key) Err bitreich.org 70 i- "Repeatedly pops elements from the list until it's empty." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end)) Err bitreich.org 70 i- (with-accessors ((list list-stream-list)) Err bitreich.org 70 i- stream Err bitreich.org 70 i- (loop for index of-type fixnum from start below end Err bitreich.org 70 i- while list Err bitreich.org 70 i- do (setf (elt sequence index) (pop list)) Err bitreich.org 70 i- finally (return index)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-read-byte ((stream vector-input-stream)) Err bitreich.org 70 i- "Reads one byte and increments INDEX pointer unless we're beyond Err bitreich.org 70 i-END pointer." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (check-if-open stream) Err bitreich.org 70 i- (with-accessors ((index vector-stream-index) Err bitreich.org 70 i- (end vector-stream-end) Err bitreich.org 70 i- (vector vector-stream-vector)) Err bitreich.org 70 i- stream Err bitreich.org 70 i- (let ((current-index index)) Err bitreich.org 70 i- (declare (fixnum current-index)) Err bitreich.org 70 i- (cond ((< current-index (the fixnum end)) Err bitreich.org 70 i- (incf (the fixnum index)) Err bitreich.org 70 i- (transform-octet stream (aref vector current-index))) Err bitreich.org 70 i- (t :eof))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-listen ((stream vector-input-stream)) Err bitreich.org 70 i- "Checking whether INDEX is beyond END." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (check-if-open stream) Err bitreich.org 70 i- (with-accessors ((index vector-stream-index) Err bitreich.org 70 i- (end vector-stream-end)) Err bitreich.org 70 i- stream Err bitreich.org 70 i- (< (the fixnum index) (the fixnum end)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-read-sequence ((stream vector-input-stream) sequence start end &key) Err bitreich.org 70 i- "Traverses both sequences in parallel until the end of one of them Err bitreich.org 70 i-is reached." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end)) Err bitreich.org 70 i- (loop with vector-end of-type fixnum = (vector-stream-end stream) Err bitreich.org 70 i- with vector = (vector-stream-vector stream) Err bitreich.org 70 i- for index of-type fixnum from start below end Err bitreich.org 70 i- for vector-index of-type fixnum = (vector-stream-index stream) Err bitreich.org 70 i- while (< vector-index vector-end) Err bitreich.org 70 i- do (setf (elt sequence index) Err bitreich.org 70 i- (aref vector vector-index)) Err bitreich.org 70 i- (incf (the fixnum (vector-stream-index stream))) Err bitreich.org 70 i- finally (return index))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-write-byte ((stream vector-output-stream) byte) Err bitreich.org 70 i- "Writes a byte \(octet) by extending the underlying vector." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (check-if-open stream) Err bitreich.org 70 i- (with-accessors ((vector vector-stream-vector)) Err bitreich.org 70 i- stream Err bitreich.org 70 i- (vector-push-extend (transform-octet stream byte) vector))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-write-sequence ((stream vector-output-stream) sequence start end &key) Err bitreich.org 70 i- "Just calls VECTOR-PUSH-EXTEND repeatedly." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end)) Err bitreich.org 70 i- (with-accessors ((vector vector-stream-vector)) Err bitreich.org 70 i- stream Err bitreich.org 70 i- (loop for index of-type fixnum from start below end Err bitreich.org 70 i- do (vector-push-extend (transform-octet stream (elt sequence index)) vector)) Err bitreich.org 70 i- sequence)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-file-position ((stream vector-input-stream)) Err bitreich.org 70 i- "Simply returns the index into the underlying vector." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (with-accessors ((index vector-stream-index)) Err bitreich.org 70 i- stream Err bitreich.org 70 i- index)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod (setf stream-file-position) (position-spec (stream vector-input-stream)) Err bitreich.org 70 i- "Sets the index into the underlying vector if POSITION-SPEC is acceptable." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (with-accessors ((index vector-stream-index) Err bitreich.org 70 i- (end vector-stream-end)) Err bitreich.org 70 i- stream Err bitreich.org 70 i- (setq index Err bitreich.org 70 i- (case position-spec Err bitreich.org 70 i- (:start 0) Err bitreich.org 70 i- (:end end) Err bitreich.org 70 i- (otherwise Err bitreich.org 70 i- (unless (integerp position-spec) Err bitreich.org 70 i- (error 'in-memory-stream-position-spec-error Err bitreich.org 70 i- :format-control "Unknown file position designator: ~S." Err bitreich.org 70 i- :format-arguments (list position-spec) Err bitreich.org 70 i- :stream stream Err bitreich.org 70 i- :position-spec position-spec)) Err bitreich.org 70 i- (unless (<= 0 position-spec end) Err bitreich.org 70 i- (error 'in-memory-stream-position-spec-error Err bitreich.org 70 i- :format-control "File position designator ~S is out of bounds." Err bitreich.org 70 i- :format-arguments (list position-spec) Err bitreich.org 70 i- :stream stream Err bitreich.org 70 i- :position-spec position-spec)) Err bitreich.org 70 i- position-spec))) Err bitreich.org 70 i- position-spec)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-file-position ((stream vector-output-stream)) Err bitreich.org 70 i- "Simply returns the fill pointer of the underlying vector." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (with-accessors ((vector vector-stream-vector)) Err bitreich.org 70 i- stream Err bitreich.org 70 i- (fill-pointer vector))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod (setf stream-file-position) (position-spec (stream vector-output-stream)) Err bitreich.org 70 i- "Sets the fill pointer underlying vector if POSITION-SPEC is Err bitreich.org 70 i-acceptable. Adjusts the vector if necessary." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (with-accessors ((vector vector-stream-vector)) Err bitreich.org 70 i- stream Err bitreich.org 70 i- (let* ((total-size (array-total-size vector)) Err bitreich.org 70 i- (new-fill-pointer Err bitreich.org 70 i- (case position-spec Err bitreich.org 70 i- (:start 0) Err bitreich.org 70 i- (:end Err bitreich.org 70 i- (warn "File position designator :END doesn't really make sense for an output stream.") Err bitreich.org 70 i- total-size) Err bitreich.org 70 i- (otherwise Err bitreich.org 70 i- (unless (integerp position-spec) Err bitreich.org 70 i- (error 'in-memory-stream-position-spec-error Err bitreich.org 70 i- :format-control "Unknown file position designator: ~S." Err bitreich.org 70 i- :format-arguments (list position-spec) Err bitreich.org 70 i- :stream stream Err bitreich.org 70 i- :position-spec position-spec)) Err bitreich.org 70 i- (unless (<= 0 position-spec array-total-size-limit) Err bitreich.org 70 i- (error 'in-memory-stream-position-spec-error Err bitreich.org 70 i- :format-control "File position designator ~S is out of bounds." Err bitreich.org 70 i- :format-arguments (list position-spec) Err bitreich.org 70 i- :stream stream Err bitreich.org 70 i- :position-spec position-spec)) Err bitreich.org 70 i- position-spec)))) Err bitreich.org 70 i- (declare (fixnum total-size new-fill-pointer)) Err bitreich.org 70 i- (when (> new-fill-pointer total-size) Err bitreich.org 70 i- (adjust-array vector new-fill-pointer)) Err bitreich.org 70 i- (setf (fill-pointer vector) new-fill-pointer) Err bitreich.org 70 i- position-spec))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod make-in-memory-input-stream ((vector vector) &key (start 0) Err bitreich.org 70 i- (end (length vector)) Err bitreich.org 70 i- transformer) Err bitreich.org 70 i- "Returns a binary input stream which will supply, in order, the Err bitreich.org 70 i-octets in the subsequence of VECTOR bounded by START and END. Err bitreich.org 70 i-Each octet returned will be transformed in turn by the optional Err bitreich.org 70 i-TRANSFORMER function." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (make-instance 'vector-input-stream Err bitreich.org 70 i- :vector vector Err bitreich.org 70 i- :index start Err bitreich.org 70 i- :end end Err bitreich.org 70 i- :transformer transformer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod make-in-memory-input-stream ((list list) &key (start 0) Err bitreich.org 70 i- (end (length list)) Err bitreich.org 70 i- transformer) Err bitreich.org 70 i- "Returns a binary input stream which will supply, in order, the Err bitreich.org 70 i-octets in the subsequence of LIST bounded by START and END. Each Err bitreich.org 70 i-octet returned will be transformed in turn by the optional Err bitreich.org 70 i-TRANSFORMER function." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (make-instance 'list-input-stream Err bitreich.org 70 i- :list (subseq list start end) Err bitreich.org 70 i- :transformer transformer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-output-vector (&key (element-type 'octet)) Err bitreich.org 70 i- "Creates and returns an array which can be used as the underlying Err bitreich.org 70 i-vector for a VECTOR-OUTPUT-STREAM." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (make-array 0 :adjustable t Err bitreich.org 70 i- :fill-pointer 0 Err bitreich.org 70 i- :element-type element-type)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-in-memory-output-stream (&key (element-type 'octet) transformer) Err bitreich.org 70 i- "Returns a binary output stream which accepts objects of type Err bitreich.org 70 i-ELEMENT-TYPE \(a subtype of OCTET) and makes available a sequence Err bitreich.org 70 i-that contains the octes that were actually output. The octets Err bitreich.org 70 i-stored will each be transformed by the optional TRANSFORMER Err bitreich.org 70 i-function." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (make-instance 'vector-output-stream Err bitreich.org 70 i- :vector (make-output-vector :element-type element-type) Err bitreich.org 70 i- :transformer transformer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-output-stream-sequence ((stream in-memory-output-stream) &key as-list) Err bitreich.org 70 i- "Returns a vector containing, in order, all the octets that have Err bitreich.org 70 i-been output to the IN-MEMORY stream STREAM. This operation clears any Err bitreich.org 70 i-octets on STREAM, so the vector contains only those octets which have Err bitreich.org 70 i-been output since the last call to GET-OUTPUT-STREAM-SEQUENCE or since Err bitreich.org 70 i-the creation of the stream, whichever occurred most recently. If Err bitreich.org 70 i-AS-LIST is true the return value is coerced to a list." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (with-accessors ((vector vector-stream-vector)) Err bitreich.org 70 i- stream Err bitreich.org 70 i- (prog1 Err bitreich.org 70 i- (if as-list Err bitreich.org 70 i- (coerce vector 'list) Err bitreich.org 70 i- vector) Err bitreich.org 70 i- (setq vector Err bitreich.org 70 i- (make-output-vector))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod output-stream-sequence-length ((stream in-memory-output-stream)) Err bitreich.org 70 i- "Returns the current length of the underlying vector of the Err bitreich.org 70 i-IN-MEMORY output stream STREAM." Err bitreich.org 70 i- (declare (optimize speed)) Err bitreich.org 70 i- (length (the vector (vector-stream-vector stream)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-input-from-sequence ((var sequence &key start end transformer) Err bitreich.org 70 i- &body body) Err bitreich.org 70 i- "Creates an IN-MEMORY input stream from SEQUENCE using the Err bitreich.org 70 i-parameters START and END, binds VAR to this stream and then Err bitreich.org 70 i-executes the code in BODY. A function TRANSFORMER may optionally Err bitreich.org 70 i-be specified to transform the returned octets. The stream is Err bitreich.org 70 i-automatically closed on exit from WITH-INPUT-FROM-SEQUENCE, no Err bitreich.org 70 i-matter whether the exit is normal or abnormal. The return value Err bitreich.org 70 i-of this macro is the return value of BODY." Err bitreich.org 70 i- (with-rebinding (sequence) Err bitreich.org 70 i- `(let (,var) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (setq ,var (make-in-memory-input-stream ,sequence Err bitreich.org 70 i- :start (or ,start 0) Err bitreich.org 70 i- :end (or ,end (length ,sequence)) Err bitreich.org 70 i- :transformer ,transformer)) Err bitreich.org 70 i- ,@body) Err bitreich.org 70 i- (when ,var (close ,var)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-output-to-sequence ((var &key as-list (element-type ''octet) transformer) Err bitreich.org 70 i- &body body) Err bitreich.org 70 i- "Creates an IN-MEMORY output stream, binds VAR to this stream Err bitreich.org 70 i-and then executes the code in BODY. The stream stores data of Err bitreich.org 70 i-type ELEMENT-TYPE \(a subtype of OCTET) which is \(optionally) Err bitreich.org 70 i-transformed by the function TRANSFORMER prior to storage. The Err bitreich.org 70 i-stream is automatically closed on exit from Err bitreich.org 70 i-WITH-OUTPUT-TO-SEQUENCE, no matter whether the exit is normal or Err bitreich.org 70 i-abnormal. The return value of this macro is a vector \(or a list Err bitreich.org 70 i-if AS-LIST is true) containing the octets that were sent to the Err bitreich.org 70 i-stream within BODY." Err bitreich.org 70 i- `(let (,var) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (setq ,var (make-in-memory-output-stream :element-type ,element-type Err bitreich.org 70 i- :transformer ,transformer)) Err bitreich.org 70 i- ,@body Err bitreich.org 70 i- (get-output-stream-sequence ,var :as-list ,as-list)) Err bitreich.org 70 i- (when ,var (close ,var))))) Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/input.lisp b/3rdparties/software/flexi-streams-20190107-git/input.lisp /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/input.lisp.gph bitreich.org 70 i@@ -1,289 +0,0 @@ Err bitreich.org 70 i-;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: FLEXI-STREAMS; Base: 10 -*- Err bitreich.org 70 i-;;; $Header: /usr/local/cvsrep/flexi-streams/input.lisp,v 1.78 2008/05/25 19:25:44 edi Exp $ Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Copyright (c) 2005-2008, Dr. Edmund Weitz. All rights reserved. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Redistribution and use in source and binary forms, with or without Err bitreich.org 70 i-;;; modification, are permitted provided that the following conditions Err bitreich.org 70 i-;;; are met: Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions of source code must retain the above copyright Err bitreich.org 70 i-;;; notice, this list of conditions and the following disclaimer. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions in binary form must reproduce the above Err bitreich.org 70 i-;;; copyright notice, this list of conditions and the following Err bitreich.org 70 i-;;; disclaimer in the documentation and/or other materials Err bitreich.org 70 i-;;; provided with the distribution. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED Err bitreich.org 70 i-;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED Err bitreich.org 70 i-;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE Err bitreich.org 70 i-;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY Err bitreich.org 70 i-;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL Err bitreich.org 70 i-;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE Err bitreich.org 70 i-;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS Err bitreich.org 70 i-;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING Err bitreich.org 70 i-;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS Err bitreich.org 70 i-;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :flexi-streams) Err bitreich.org 70 i- Err bitreich.org 70 i-#-:lispworks Err bitreich.org 70 i-(defmethod read-byte* ((flexi-input-stream flexi-input-stream)) Err bitreich.org 70 i- "Reads one byte \(octet) from the underlying stream of Err bitreich.org 70 i-FLEXI-OUTPUT-STREAM \(or from the internal stack if it's not Err bitreich.org 70 i-empty)." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- ;; we're using S instead of STREAM here because of an Err bitreich.org 70 i- ;; issue with SBCL: Err bitreich.org 70 i- ;; Err bitreich.org 70 i- (with-accessors ((position flexi-stream-position) Err bitreich.org 70 i- (bound flexi-stream-bound) Err bitreich.org 70 i- (octet-stack flexi-stream-octet-stack) Err bitreich.org 70 i- (s flexi-stream-stream)) Err bitreich.org 70 i- flexi-input-stream Err bitreich.org 70 i- (declare (integer position) Err bitreich.org 70 i- (type (or null integer) bound)) Err bitreich.org 70 i- (when (and bound Err bitreich.org 70 i- (>= position bound)) Err bitreich.org 70 i- (return-from read-byte* nil)) Err bitreich.org 70 i- (incf position) Err bitreich.org 70 i- (or (pop octet-stack) Err bitreich.org 70 i- (read-byte s nil nil) Err bitreich.org 70 i- (progn (decf position) nil)))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+:lispworks Err bitreich.org 70 i-(defmethod read-byte* ((flexi-input-stream flexi-input-stream)) Err bitreich.org 70 i- "Reads one byte \(octet) from the underlying \(binary) stream of Err bitreich.org 70 i-FLEXI-OUTPUT-STREAM \(or from the internal stack if it's not empty)." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (with-accessors ((position flexi-stream-position) Err bitreich.org 70 i- (bound flexi-stream-bound) Err bitreich.org 70 i- (octet-stack flexi-stream-octet-stack) Err bitreich.org 70 i- (stream flexi-stream-stream)) Err bitreich.org 70 i- flexi-input-stream Err bitreich.org 70 i- (declare (integer position) Err bitreich.org 70 i- (type (or null integer) bound)) Err bitreich.org 70 i- (when (and bound Err bitreich.org 70 i- (>= position bound)) Err bitreich.org 70 i- (return-from read-byte* nil)) Err bitreich.org 70 i- (incf position) Err bitreich.org 70 i- (or (pop octet-stack) Err bitreich.org 70 i- (read-byte stream nil nil) Err bitreich.org 70 i- (progn (decf position) nil)))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+:lispworks Err bitreich.org 70 i-(defmethod read-byte* ((flexi-input-stream flexi-char-input-stream)) Err bitreich.org 70 i- "Reads one byte \(octet) from the underlying stream of Err bitreich.org 70 i-FLEXI-OUTPUT-STREAM \(or from the internal stack if it's not empty). Err bitreich.org 70 i-Only used for LispWorks bivalent streams which aren't binary." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (with-accessors ((position flexi-stream-position) Err bitreich.org 70 i- (bound flexi-stream-bound) Err bitreich.org 70 i- (octet-stack flexi-stream-octet-stack) Err bitreich.org 70 i- (stream flexi-stream-stream)) Err bitreich.org 70 i- flexi-input-stream Err bitreich.org 70 i- (declare (integer position) Err bitreich.org 70 i- (type (or null integer) bound)) Err bitreich.org 70 i- (when (and bound Err bitreich.org 70 i- (>= position bound)) Err bitreich.org 70 i- (return-from read-byte* nil)) Err bitreich.org 70 i- (incf position) Err bitreich.org 70 i- (or (pop octet-stack) Err bitreich.org 70 i- ;; we use READ-SEQUENCE because READ-BYTE doesn't work with all Err bitreich.org 70 i- ;; bivalent streams in LispWorks Err bitreich.org 70 i- (let* ((buffer (make-array 1 :element-type 'octet)) Err bitreich.org 70 i- (new-position (read-sequence buffer stream))) Err bitreich.org 70 i- (cond ((zerop new-position) Err bitreich.org 70 i- (decf position) nil) Err bitreich.org 70 i- (t (aref buffer 0))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-clear-input ((flexi-input-stream flexi-input-stream)) Err bitreich.org 70 i- "Calls the corresponding method for the underlying input stream Err bitreich.org 70 i-and also clears the value of the OCTET-STACK slot." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- ;; note that we don't reset the POSITION slot Err bitreich.org 70 i- (with-accessors ((octet-stack flexi-stream-octet-stack) Err bitreich.org 70 i- (stream flexi-stream-stream)) Err bitreich.org 70 i- flexi-input-stream Err bitreich.org 70 i- (setq octet-stack nil) Err bitreich.org 70 i- (clear-input stream))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-listen ((flexi-input-stream flexi-input-stream)) Err bitreich.org 70 i- "Calls the corresponding method for the underlying input stream Err bitreich.org 70 i-but first checks if \(old) input is available in the OCTET-STACK Err bitreich.org 70 i-slot." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (with-accessors ((position flexi-stream-position) Err bitreich.org 70 i- (bound flexi-stream-bound) Err bitreich.org 70 i- (octet-stack flexi-stream-octet-stack) Err bitreich.org 70 i- (stream flexi-stream-stream)) Err bitreich.org 70 i- flexi-input-stream Err bitreich.org 70 i- (declare (integer position) Err bitreich.org 70 i- (type (or null integer) bound)) Err bitreich.org 70 i- (when (and bound Err bitreich.org 70 i- (>= position bound)) Err bitreich.org 70 i- (return-from stream-listen nil)) Err bitreich.org 70 i- (or octet-stack (listen stream)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-read-byte ((stream flexi-input-stream)) Err bitreich.org 70 i- "Reads one byte \(octet) from the underlying stream." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- ;; set LAST-CHAR-CODE slot to NIL because we can't UNREAD-CHAR after Err bitreich.org 70 i- ;; this operation Err bitreich.org 70 i- (with-accessors ((last-char-code flexi-stream-last-char-code) Err bitreich.org 70 i- (last-octet flexi-stream-last-octet)) Err bitreich.org 70 i- stream Err bitreich.org 70 i- (setq last-char-code nil) Err bitreich.org 70 i- (let ((octet (read-byte* stream))) Err bitreich.org 70 i- (setq last-octet octet) Err bitreich.org 70 i- (or octet :eof)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun unread-char% (char flexi-input-stream) Err bitreich.org 70 i- "Used internally to put a character CHAR which was already read back Err bitreich.org 70 i-on the stream. Uses the OCTET-STACK slot and decrements the POSITION Err bitreich.org 70 i-slot accordingly." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (with-accessors ((position flexi-stream-position) Err bitreich.org 70 i- (octet-stack flexi-stream-octet-stack) Err bitreich.org 70 i- (external-format flexi-stream-external-format)) Err bitreich.org 70 i- flexi-input-stream Err bitreich.org 70 i- (let ((counter 0) octets-reversed) Err bitreich.org 70 i- (declare (fixnum counter)) Err bitreich.org 70 i- (flet ((writer (octet) Err bitreich.org 70 i- (incf counter) Err bitreich.org 70 i- (push octet octets-reversed))) Err bitreich.org 70 i- (declare (dynamic-extent (function writer))) Err bitreich.org 70 i- (char-to-octets external-format char #'writer) Err bitreich.org 70 i- (decf position counter) Err bitreich.org 70 i- (setq octet-stack (nreconc octets-reversed octet-stack)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-read-char ((stream flexi-input-stream)) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- ;; note that we do nothing for the :LF EOL style because we assume Err bitreich.org 70 i- ;; that #\Newline is the same as #\Linefeed in all Lisps which will Err bitreich.org 70 i- ;; use this library Err bitreich.org 70 i- (with-accessors ((external-format flexi-stream-external-format) Err bitreich.org 70 i- (last-octet flexi-stream-last-octet) Err bitreich.org 70 i- (last-char-code flexi-stream-last-char-code)) Err bitreich.org 70 i- stream Err bitreich.org 70 i- ;; set LAST-OCTET slot to NIL because we can't UNREAD-BYTE after Err bitreich.org 70 i- ;; this operation Err bitreich.org 70 i- (setq last-octet nil) Err bitreich.org 70 i- (flet ((reader () Err bitreich.org 70 i- (read-byte* stream)) Err bitreich.org 70 i- (unreader (char) Err bitreich.org 70 i- (unread-char% char stream))) Err bitreich.org 70 i- (declare (dynamic-extent (function reader) (function unreader))) Err bitreich.org 70 i- (let* ((*current-unreader* #'unreader) Err bitreich.org 70 i- (char-code (or (octets-to-char-code external-format #'reader) Err bitreich.org 70 i- (return-from stream-read-char :eof)))) Err bitreich.org 70 i- ;; remember this character and its char code for UNREAD-CHAR Err bitreich.org 70 i- (setq last-char-code char-code) Err bitreich.org 70 i- (or (code-char char-code) char-code))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-read-char-no-hang ((stream flexi-input-stream)) Err bitreich.org 70 i- "Reads one character if the underlying stream has at least one Err bitreich.org 70 i-octet available." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- ;; note that this may block for non-8-bit encodings - I think Err bitreich.org 70 i- ;; there's no easy way to handle this correctly Err bitreich.org 70 i- (and (stream-listen stream) Err bitreich.org 70 i- (stream-read-char stream))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-read-sequence ((flexi-input-stream flexi-input-stream) sequence start end &key) Err bitreich.org 70 i- "An optimized version which uses a buffer underneath. The function Err bitreich.org 70 i-can deliver characters as well as octets and it decides what to do Err bitreich.org 70 i-based on the element type of the sequence \(which takes precedence) Err bitreich.org 70 i-and the element type of the stream. What you'll really get might also Err bitreich.org 70 i-depend on your Lisp. Some of the implementations are more picky than Err bitreich.org 70 i-others - see for example FLEXI-STREAMS-TEST::SEQUENCE-TEST." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end)) Err bitreich.org 70 i- (with-accessors ((octet-stack flexi-stream-octet-stack) Err bitreich.org 70 i- (external-format flexi-stream-external-format) Err bitreich.org 70 i- (last-octet flexi-stream-last-octet) Err bitreich.org 70 i- (last-char-code flexi-stream-last-char-code) Err bitreich.org 70 i- (element-type flexi-stream-element-type) Err bitreich.org 70 i- (stream flexi-stream-stream)) Err bitreich.org 70 i- flexi-input-stream Err bitreich.org 70 i- (when (>= start end) Err bitreich.org 70 i- (return-from stream-read-sequence start)) Err bitreich.org 70 i- (when (or (subtypep (etypecase sequence Err bitreich.org 70 i- (vector (array-element-type sequence)) Err bitreich.org 70 i- (list t)) Err bitreich.org 70 i- 'integer) Err bitreich.org 70 i- (and (not (stringp sequence)) Err bitreich.org 70 i- (type-equal element-type 'octet))) Err bitreich.org 70 i- ;; if binary data is requested, just read from the underlying Err bitreich.org 70 i- ;; stream directly and skip the rest (but flush octet stack Err bitreich.org 70 i- ;; first) Err bitreich.org 70 i- (let ((index start)) Err bitreich.org 70 i- (declare (fixnum index)) Err bitreich.org 70 i- (when octet-stack Err bitreich.org 70 i- (replace sequence octet-stack :start1 start :end1 end) Err bitreich.org 70 i- (let ((octets-flushed (min (length octet-stack) (- end start)))) Err bitreich.org 70 i- (incf index octets-flushed) Err bitreich.org 70 i- (setq octet-stack (nthcdr octets-flushed octet-stack)))) Err bitreich.org 70 i- (setq index (read-sequence sequence stream :start index :end end)) Err bitreich.org 70 i- (when (> index start) Err bitreich.org 70 i- (setq last-char-code nil Err bitreich.org 70 i- last-octet (elt sequence (1- index)))) Err bitreich.org 70 i- (return-from stream-read-sequence index))) Err bitreich.org 70 i- ;; otherwise hand over to the external format to do the work Err bitreich.org 70 i- (read-sequence* external-format flexi-input-stream sequence start end))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-unread-char ((stream flexi-input-stream) char) Err bitreich.org 70 i- "Implements UNREAD-CHAR for streams of type FLEXI-INPUT-STREAM. Err bitreich.org 70 i-Makes sure CHAR will only be unread if it was the last character Err bitreich.org 70 i-read and if it was read with the same encoding that's currently Err bitreich.org 70 i-being used by the stream." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (with-accessors ((last-char-code flexi-stream-last-char-code)) Err bitreich.org 70 i- stream Err bitreich.org 70 i- (unless last-char-code Err bitreich.org 70 i- (error 'flexi-stream-error Err bitreich.org 70 i- :format-control "No character to unread from this stream \(or external format has changed or last reading operation was binary).")) Err bitreich.org 70 i- (unless (= (char-code char) last-char-code) Err bitreich.org 70 i- (error 'flexi-stream-error Err bitreich.org 70 i- :format-control "Last character read (~S) was different from ~S." Err bitreich.org 70 i- :format-arguments (list (code-char last-char-code) char))) Err bitreich.org 70 i- (unread-char% char stream) Err bitreich.org 70 i- (setq last-char-code nil) Err bitreich.org 70 i- nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod unread-byte (byte (flexi-input-stream flexi-input-stream)) Err bitreich.org 70 i- "Similar to UNREAD-CHAR in that it `unreads' the last octet from Err bitreich.org 70 i-STREAM. Note that you can only call UNREAD-BYTE after a corresponding Err bitreich.org 70 i-READ-BYTE." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (with-accessors ((last-octet flexi-stream-last-octet) Err bitreich.org 70 i- (octet-stack flexi-stream-octet-stack) Err bitreich.org 70 i- (position flexi-stream-position)) Err bitreich.org 70 i- flexi-input-stream Err bitreich.org 70 i- (unless last-octet Err bitreich.org 70 i- (error 'flexi-stream-error Err bitreich.org 70 i- :format-control "No byte to unread from this stream \(or last reading operation read a character).")) Err bitreich.org 70 i- (unless (= byte last-octet) Err bitreich.org 70 i- (error 'flexi-stream-error Err bitreich.org 70 i- :format-control "Last byte read was different from #x~X." Err bitreich.org 70 i- :format-arguments (list byte))) Err bitreich.org 70 i- (setq last-octet nil) Err bitreich.org 70 i- (decf (the integer position)) Err bitreich.org 70 i- (push byte octet-stack) Err bitreich.org 70 i- nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod peek-byte ((flexi-input-stream flexi-input-stream) Err bitreich.org 70 i- &optional peek-type (eof-error-p t) eof-value) Err bitreich.org 70 i- "Returns an octet from FLEXI-INPUT-STREAM without actually removing it." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (loop for octet = (read-byte flexi-input-stream eof-error-p :eof) Err bitreich.org 70 i- until (cond ((eq octet :eof) Err bitreich.org 70 i- (return eof-value)) Err bitreich.org 70 i- ((null peek-type)) Err bitreich.org 70 i- ((eq peek-type t) Err bitreich.org 70 i- (plusp octet)) Err bitreich.org 70 i- ((= octet peek-type))) Err bitreich.org 70 i- finally (unread-byte octet flexi-input-stream) Err bitreich.org 70 i- (return octet))) Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/io.lisp b/3rdparties/software/flexi-streams-20190107-git/io.lisp /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/io.lisp.gph bitreich.org 70 i@@ -1,110 +0,0 @@ Err bitreich.org 70 i-;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: FLEXI-STREAMS; Base: 10 -*- Err bitreich.org 70 i-;;; $Header: /usr/local/cvsrep/flexi-streams/io.lisp,v 1.2 2008/05/20 23:44:45 edi Exp $ Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Copyright (c) 2005-2008, Dr. Edmund Weitz. All rights reserved. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Redistribution and use in source and binary forms, with or without Err bitreich.org 70 i-;;; modification, are permitted provided that the following conditions Err bitreich.org 70 i-;;; are met: Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions of source code must retain the above copyright Err bitreich.org 70 i-;;; notice, this list of conditions and the following disclaimer. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions in binary form must reproduce the above Err bitreich.org 70 i-;;; copyright notice, this list of conditions and the following Err bitreich.org 70 i-;;; disclaimer in the documentation and/or other materials Err bitreich.org 70 i-;;; provided with the distribution. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED Err bitreich.org 70 i-;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED Err bitreich.org 70 i-;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE Err bitreich.org 70 i-;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY Err bitreich.org 70 i-;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL Err bitreich.org 70 i-;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE Err bitreich.org 70 i-;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS Err bitreich.org 70 i-;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING Err bitreich.org 70 i-;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS Err bitreich.org 70 i-;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :flexi-streams) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod reset-input-state ((flexi-io-stream flexi-io-stream)) Err bitreich.org 70 i- "This method is used to clear any state associated with previous Err bitreich.org 70 i-input before output is attempted on the stream. It can fail if the Err bitreich.org 70 i-octet stack is not empty and the stream can't be `rewound'." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (with-accessors ((last-char-code flexi-stream-last-char-code) Err bitreich.org 70 i- (last-octet flexi-stream-last-octet) Err bitreich.org 70 i- (octet-stack flexi-stream-octet-stack) Err bitreich.org 70 i- (stream flexi-stream-stream)) Err bitreich.org 70 i- flexi-io-stream Err bitreich.org 70 i- (when octet-stack Err bitreich.org 70 i- (unless (maybe-rewind stream (length octet-stack)) Err bitreich.org 70 i- (error 'flexi-stream-out-of-sync-error Err bitreich.org 70 i- :stream flexi-io-stream)) Err bitreich.org 70 i- (setq octet-stack nil)) Err bitreich.org 70 i- (setq last-octet nil Err bitreich.org 70 i- last-char-code nil))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-write-byte :before ((stream flexi-io-stream) byte) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (declare (ignore byte)) Err bitreich.org 70 i- (reset-input-state stream)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-write-char :before ((stream flexi-io-stream) char) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (declare (ignore char)) Err bitreich.org 70 i- (reset-input-state stream)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-write-sequence :before ((stream flexi-io-stream) sequence start end &key) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (declare (ignore sequence start end)) Err bitreich.org 70 i- (reset-input-state stream)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-clear-output :before ((stream flexi-io-stream)) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (reset-input-state stream)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod reset-output-state ((flexi-io-stream flexi-io-stream)) Err bitreich.org 70 i- "This method is used to clear any state associated with previous Err bitreich.org 70 i-output before the stream is used for input." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (with-accessors ((column flexi-stream-column)) Err bitreich.org 70 i- flexi-io-stream Err bitreich.org 70 i- (setq column nil))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-read-byte :before ((stream flexi-io-stream)) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (reset-output-state stream)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-read-char :before ((stream flexi-io-stream)) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (reset-output-state stream)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-read-sequence :before ((stream flexi-io-stream) sequence start end &key) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (declare (ignore sequence start end)) Err bitreich.org 70 i- (reset-output-state stream)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-unread-char :before ((stream flexi-io-stream) char) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (declare (ignore char)) Err bitreich.org 70 i- (reset-output-state stream)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod unread-byte :before (byte (stream flexi-io-stream)) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (declare (ignore byte)) Err bitreich.org 70 i- (reset-output-state stream)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-clear-input :before ((stream flexi-io-stream)) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (reset-output-state stream)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod write-byte* :after (byte (stream flexi-io-stream)) Err bitreich.org 70 i- "Keep POSITION slot up to date even when performing output." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (declare (ignore byte)) Err bitreich.org 70 i- (with-accessors ((position flexi-stream-position)) Err bitreich.org 70 i- stream Err bitreich.org 70 i- (incf position))) Err bitreich.org 70 i-\ No newline at end of file Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/iso-8859.lisp b/3rdparties/software/flexi-streams-20190107-git/iso-8859.lisp /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/iso-8859.lisp.gph bitreich.org 70 i@@ -1,53 +0,0 @@ Err bitreich.org 70 i-;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: FLEXI-STREAMS; Base: 10 -*- Err bitreich.org 70 i-;;; $Header: /usr/local/cvsrep/flexi-streams/iso-8859.lisp,v 1.7 2008/05/18 21:32:15 edi Exp $ Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Copyright (c) 2005-2008, Dr. Edmund Weitz. All rights reserved. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Redistribution and use in source and binary forms, with or without Err bitreich.org 70 i-;;; modification, are permitted provided that the following conditions Err bitreich.org 70 i-;;; are met: Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions of source code must retain the above copyright Err bitreich.org 70 i-;;; notice, this list of conditions and the following disclaimer. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions in binary form must reproduce the above Err bitreich.org 70 i-;;; copyright notice, this list of conditions and the following Err bitreich.org 70 i-;;; disclaimer in the documentation and/or other materials Err bitreich.org 70 i-;;; provided with the distribution. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED Err bitreich.org 70 i-;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED Err bitreich.org 70 i-;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE Err bitreich.org 70 i-;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY Err bitreich.org 70 i-;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL Err bitreich.org 70 i-;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE Err bitreich.org 70 i-;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS Err bitreich.org 70 i-;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING Err bitreich.org 70 i-;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS Err bitreich.org 70 i-;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :flexi-streams) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; the following code was auto-generated from files which can be Err bitreich.org 70 i-;;; found at Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +iso-8859-tables+ Err bitreich.org 70 i- `((:iso-8859-1 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255))) Err bitreich.org 70 i- (:iso-8859-2 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 260 728 321 164 317 346 167 168 352 350 356 377 173 381 379 176 261 731 322 180 318 347 711 184 353 351 357 378 733 382 380 340 193 194 258 196 313 262 199 268 201 280 203 282 205 206 270 272 323 327 211 212 336 214 215 344 366 218 368 220 221 354 223 341 225 226 259 228 314 263 231 269 233 281 235 283 237 238 271 273 324 328 243 244 337 246 247 345 367 250 369 252 253 355 729))) Err bitreich.org 70 i- (:iso-8859-3 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 294 728 163 164 65533 292 167 168 304 350 286 308 173 65533 379 176 295 178 179 180 181 293 183 184 305 351 287 309 189 65533 380 192 193 194 65533 196 266 264 199 200 201 202 203 204 205 206 207 65533 209 210 211 212 288 214 215 284 217 218 219 220 364 348 223 224 225 226 65533 228 267 265 231 232 233 234 235 236 237 238 239 65533 241 242 243 244 289 246 247 285 249 250 251 252 365 349 729))) Err bitreich.org 70 i- (:iso-8859-4 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 260 312 342 164 296 315 167 168 352 274 290 358 173 381 175 176 261 731 343 180 297 316 711 184 353 275 291 359 330 382 331 256 193 194 195 196 197 198 302 268 201 280 203 278 205 206 298 272 325 332 310 212 213 214 215 216 370 218 219 220 360 362 223 257 225 226 227 228 229 230 303 269 233 281 235 279 237 238 299 273 326 333 311 244 245 246 247 248 371 250 251 252 361 363 729))) Err bitreich.org 70 i- (:iso-8859-5 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 173 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 8470 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 167 1118 1119))) Err bitreich.org 70 i- (:iso-8859-6 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 65533 65533 65533 164 65533 65533 65533 65533 65533 65533 65533 1548 173 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 1563 65533 65533 65533 1567 65533 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 65533 65533 65533 65533 65533 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533))) Err bitreich.org 70 i- (:iso-8859-7 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 8216 8217 163 8364 8367 166 167 168 169 890 171 172 173 65533 8213 176 177 178 179 900 901 902 183 904 905 906 187 908 189 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 65533 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 65533))) Err bitreich.org 70 i- (:iso-8859-8 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 65533 162 163 164 165 166 167 168 169 215 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 247 187 188 189 190 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 8215 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 65533 65533 8206 8207 65533))) Err bitreich.org 70 i- (:iso-8859-9 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 286 209 210 211 212 213 214 215 216 217 218 219 220 304 350 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 287 241 242 243 244 245 246 247 248 249 250 251 252 305 351 255))) Err bitreich.org 70 i- (:iso-8859-10 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 260 274 290 298 296 310 167 315 272 352 358 381 173 362 330 176 261 275 291 299 297 311 183 316 273 353 359 382 8213 363 331 256 193 194 195 196 197 198 302 268 201 280 203 278 205 206 207 208 325 332 211 212 213 214 360 216 370 218 219 220 221 222 223 257 225 226 227 228 229 230 303 269 233 281 235 279 237 238 239 240 326 333 243 244 245 246 361 248 371 250 251 252 253 254 312))) Err bitreich.org 70 i- (:iso-8859-11 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 65533 65533 65533 65533 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 65533 65533 65533 65533))) Err bitreich.org 70 i- (:iso-8859-13 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 8221 162 163 164 8222 166 167 216 169 342 171 172 173 174 198 176 177 178 179 8220 181 182 183 248 185 343 187 188 189 190 230 260 302 256 262 196 197 280 274 268 201 377 278 290 310 298 315 352 323 325 211 332 213 214 215 370 321 346 362 220 379 381 223 261 303 257 263 228 229 281 275 269 233 378 279 291 311 299 316 353 324 326 243 333 245 246 247 371 322 347 363 252 380 382 8217))) Err bitreich.org 70 i- (:iso-8859-14 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 7682 7683 163 266 267 7690 167 7808 169 7810 7691 7922 173 174 376 7710 7711 288 289 7744 7745 182 7766 7809 7767 7811 7776 7923 7812 7813 7777 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 372 209 210 211 212 213 214 7786 216 217 218 219 220 221 374 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 373 241 242 243 244 245 246 7787 248 249 250 251 252 253 375 255))) Err bitreich.org 70 i- (:iso-8859-15 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 8364 165 352 167 353 169 170 171 172 173 174 175 176 177 178 179 381 181 182 183 382 185 186 187 338 339 376 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255))) Err bitreich.org 70 i- (:iso-8859-16 . ,(make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 260 261 321 8364 8222 352 167 353 169 536 171 377 173 378 379 176 177 268 322 381 8221 182 183 382 269 537 187 338 339 376 380 192 193 194 258 196 262 198 199 200 201 202 203 204 205 206 207 272 323 210 211 212 336 214 346 368 217 218 219 220 280 538 223 224 225 226 259 228 263 230 231 232 233 234 235 236 237 238 239 273 324 242 243 244 337 246 347 369 249 250 251 252 281 539 255)))) Err bitreich.org 70 i- "A list of the ISO-8859 encodings where each element is a cons Err bitreich.org 70 i-with the car being a keyword denoting the encoding and the cdr Err bitreich.org 70 i-being a vector enumerating the corresponding character codes.") Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/koi8-r.lisp b/3rdparties/software/flexi-streams-20190107-git/koi8-r.lisp /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/koi8-r.lisp.gph bitreich.org 70 i@@ -1,36 +0,0 @@ Err bitreich.org 70 i-;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: FLEXI-STREAMS; Base: 10 -*- Err bitreich.org 70 i-;;; $Header: /usr/local/cvsrep/flexi-streams/koi8-r.lisp,v 1.2 2008/05/18 21:32:15 edi Exp $ Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Copyright (c) 2006, Igor Plekhov. All rights reserved. Err bitreich.org 70 i-;;; Copyright (c) 2006-2008, Dr. Edmund Weitz. All rights reserved. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Redistribution and use in source and binary forms, with or without Err bitreich.org 70 i-;;; modification, are permitted provided that the following conditions Err bitreich.org 70 i-;;; are met: Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions of source code must retain the above copyright Err bitreich.org 70 i-;;; notice, this list of conditions and the following disclaimer. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions in binary form must reproduce the above Err bitreich.org 70 i-;;; copyright notice, this list of conditions and the following Err bitreich.org 70 i-;;; disclaimer in the documentation and/or other materials Err bitreich.org 70 i-;;; provided with the distribution. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED Err bitreich.org 70 i-;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED Err bitreich.org 70 i-;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE Err bitreich.org 70 i-;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY Err bitreich.org 70 i-;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL Err bitreich.org 70 i-;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE Err bitreich.org 70 i-;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS Err bitreich.org 70 i-;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING Err bitreich.org 70 i-;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS Err bitreich.org 70 i-;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :flexi-streams) Err bitreich.org 70 i- Err bitreich.org 70 i-;; http://unicode.org/Public/MAPPINGS/VENDORS/MISC/KOI8-R.TXT Err bitreich.org 70 i-(defconstant +koi8-r-table+ Err bitreich.org 70 i- (make-decoding-table '(0 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 116 117 118 119 120 121 122 123 124 125 126 127 9472 9474 9484 9488 9492 9496 9500 9508 9516 9524 9532 9600 9604 9608 9612 9616 9617 9618 9619 8992 9632 8729 8730 8776 8804 8805 160 8993 176 178 183 247 9552 9553 9554 1105 9555 9556 9557 9558 9559 9560 9561 9562 9563 9564 9565 9566 9567 9568 9569 1025 9570 9571 9572 9573 9574 9575 9576 9577 9578 9579 9580 169 1102 1072 1073 1094 1076 1077 1092 1075 1093 1080 1081 1082 1083 1084 1085 1086 1087 1103 1088 1089 1090 1091 1078 1074 1100 1099 1079 1096 1101 1097 1095 1098 1070 1040 1041 1062 1044 1045 1060 1043 1061 1048 1049 1050 1051 1052 1053 1054 1055 1071 1056 1057 1058 1059 1046 1042 1068 1067 1047 1064 1069 1065 1063 1066)) Err bitreich.org 70 i- "An array enumerating the character codes for the KOI8-R encoding.") Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/length.lisp b/3rdparties/software/flexi-streams-20190107-git/length.lisp /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/length.lisp.gph bitreich.org 70 i@@ -1,468 +0,0 @@ Err bitreich.org 70 i-;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: FLEXI-STREAMS; Base: 10 -*- Err bitreich.org 70 i-;;; $Header: /usr/local/cvsrep/flexi-streams/length.lisp,v 1.6 2008/05/29 10:25:14 edi Exp $ Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Copyright (c) 2005-2008, Dr. Edmund Weitz. All rights reserved. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Redistribution and use in source and binary forms, with or without Err bitreich.org 70 i-;;; modification, are permitted provided that the following conditions Err bitreich.org 70 i-;;; are met: Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions of source code must retain the above copyright Err bitreich.org 70 i-;;; notice, this list of conditions and the following disclaimer. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions in binary form must reproduce the above Err bitreich.org 70 i-;;; copyright notice, this list of conditions and the following Err bitreich.org 70 i-;;; disclaimer in the documentation and/or other materials Err bitreich.org 70 i-;;; provided with the distribution. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED Err bitreich.org 70 i-;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED Err bitreich.org 70 i-;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE Err bitreich.org 70 i-;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY Err bitreich.org 70 i-;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL Err bitreich.org 70 i-;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE Err bitreich.org 70 i-;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS Err bitreich.org 70 i-;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING Err bitreich.org 70 i-;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS Err bitreich.org 70 i-;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :flexi-streams) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric encoding-factor (format) Err bitreich.org 70 i- (:documentation "Given an external format FORMAT, returns a factor Err bitreich.org 70 i-which denotes the octets to characters ratio to expect when Err bitreich.org 70 i-encoding/decoding. If the returned value is an integer, the factor is Err bitreich.org 70 i-assumed to be exact. If it is a \(double) float, the factor is Err bitreich.org 70 i-supposed to be based on heuristics and usually not exact. Err bitreich.org 70 i- Err bitreich.org 70 i-This factor is used in string.lisp.") Err bitreich.org 70 i- (declare #.*standard-optimize-settings*)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod encoding-factor ((format flexi-8-bit-format)) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- ;; 8-bit encodings map octets to characters in an exact one-to-one Err bitreich.org 70 i- ;; fashion Err bitreich.org 70 i- 1) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod encoding-factor ((format flexi-utf-8-format)) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- ;; UTF-8 characters can be anything from one to six octets, but we Err bitreich.org 70 i- ;; assume that the "overhead" is only about 5 percent - this Err bitreich.org 70 i- ;; estimate is obviously very much dependant on the content Err bitreich.org 70 i- 1.05d0) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod encoding-factor ((format flexi-utf-16-format)) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- ;; usually one character maps to two octets, but characters with Err bitreich.org 70 i- ;; code points above #x10000 map to four octets - we assume that we Err bitreich.org 70 i- ;; usually don't see these characters but of course have to return a Err bitreich.org 70 i- ;; float Err bitreich.org 70 i- 2.0d0) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod encoding-factor ((format flexi-utf-32-format)) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- ;; UTF-32 always matches every character to four octets Err bitreich.org 70 i- 4) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod encoding-factor ((format flexi-crlf-mixin)) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- ;; if the sequence #\Return #\Linefeed is the line-end marker, this Err bitreich.org 70 i- ;; obviously makes encodings potentially longer and definitely makes Err bitreich.org 70 i- ;; the estimate unexact Err bitreich.org 70 i- (* 1.02d0 (call-next-method))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric check-end (format start end i) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (:documentation "Helper function used below to determine if we tried Err bitreich.org 70 i-to read past the end of the sequence.") Err bitreich.org 70 i- (:method (format start end i) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (ignore start)) Err bitreich.org 70 i- (declare (fixnum end i)) Err bitreich.org 70 i- (when (> i end) Err bitreich.org 70 i- (signal-encoding-error format "This sequence can't be decoded ~ Err bitreich.org 70 i-using ~A as it is too short. ~A octet~:P missing at the end." Err bitreich.org 70 i- (external-format-name format) Err bitreich.org 70 i- (- i end)))) Err bitreich.org 70 i- (:method ((format flexi-utf-16-format) start end i) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end i)) Err bitreich.org 70 i- (declare (ignore i)) Err bitreich.org 70 i- ;; don't warn twice Err bitreich.org 70 i- (when (evenp (- end start)) Err bitreich.org 70 i- (call-next-method)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric compute-number-of-chars (format sequence start end) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (:documentation "Computes the exact number of characters required to Err bitreich.org 70 i-decode the sequence of octets in SEQUENCE from START to END using the Err bitreich.org 70 i-external format FORMAT.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod compute-number-of-chars :around (format (list list) start end) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (call-next-method format (coerce list 'vector) start end)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod compute-number-of-chars ((format flexi-8-bit-format) sequence start end) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end)) Err bitreich.org 70 i- (declare (ignore sequence)) Err bitreich.org 70 i- (- end start)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod compute-number-of-chars ((format flexi-crlf-mixin) sequence start end) Err bitreich.org 70 i- ;; this method only applies to the 8-bit formats as all other Err bitreich.org 70 i- ;; formats with CRLF line endings have their own specialized methods Err bitreich.org 70 i- ;; below Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end) (vector sequence)) Err bitreich.org 70 i- (let ((i start) Err bitreich.org 70 i- (length (- end start))) Err bitreich.org 70 i- (declare (fixnum i length)) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- (when (>= i end) Err bitreich.org 70 i- (return)) Err bitreich.org 70 i- (let ((position (search #.(vector +cr+ +lf+) sequence :start2 i :end2 end :test #'=))) Err bitreich.org 70 i- (unless position Err bitreich.org 70 i- (return)) Err bitreich.org 70 i- (setq i (1+ position)) Err bitreich.org 70 i- (decf length))) Err bitreich.org 70 i- length)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod compute-number-of-chars ((format flexi-utf-8-format) sequence start end) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end) (vector sequence)) Err bitreich.org 70 i- (let ((sum 0) Err bitreich.org 70 i- (i start)) Err bitreich.org 70 i- (declare (fixnum i sum)) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- (when (>= i end) Err bitreich.org 70 i- (return)) Err bitreich.org 70 i- (let* ((octet (aref sequence i)) Err bitreich.org 70 i- ;; note that there are no validity checks here Err bitreich.org 70 i- (length (cond ((not (logbitp 7 octet)) 1) Err bitreich.org 70 i- ((= #b11000000 (logand* octet #b11100000)) 2) Err bitreich.org 70 i- ((= #b11100000 (logand* octet #b11110000)) 3) Err bitreich.org 70 i- (t 4)))) Err bitreich.org 70 i- (declare (fixnum length) (type octet octet)) Err bitreich.org 70 i- (incf sum) Err bitreich.org 70 i- (incf i length))) Err bitreich.org 70 i- (check-end format start end i) Err bitreich.org 70 i- sum)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod compute-number-of-chars ((format flexi-crlf-utf-8-format) sequence start end) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end) (vector sequence)) Err bitreich.org 70 i- (let ((sum 0) Err bitreich.org 70 i- (i start) Err bitreich.org 70 i- (last-octet 0)) Err bitreich.org 70 i- (declare (fixnum i sum) (type octet last-octet)) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- (when (>= i end) Err bitreich.org 70 i- (return)) Err bitreich.org 70 i- (let* ((octet (aref sequence i)) Err bitreich.org 70 i- ;; note that there are no validity checks here Err bitreich.org 70 i- (length (cond ((not (logbitp 7 octet)) 1) Err bitreich.org 70 i- ((= #b11000000 (logand* octet #b11100000)) 2) Err bitreich.org 70 i- ((= #b11100000 (logand* octet #b11110000)) 3) Err bitreich.org 70 i- (t 4)))) Err bitreich.org 70 i- (declare (fixnum length) (type octet octet)) Err bitreich.org 70 i- (unless (and (= octet +lf+) (= last-octet +cr+)) Err bitreich.org 70 i- (incf sum)) Err bitreich.org 70 i- (incf i length) Err bitreich.org 70 i- (setq last-octet octet))) Err bitreich.org 70 i- (check-end format start end i) Err bitreich.org 70 i- sum)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod compute-number-of-chars :before ((format flexi-utf-16-format) sequence start end) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end) (vector sequence)) Err bitreich.org 70 i- (declare (ignore sequence)) Err bitreich.org 70 i- (when (oddp (- end start)) Err bitreich.org 70 i- (signal-encoding-error format "~A octet~:P cannot be decoded ~ Err bitreich.org 70 i-using UTF-16 as ~:*~A is not even." Err bitreich.org 70 i- (- end start)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod compute-number-of-chars ((format flexi-utf-16-le-format) sequence start end) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end)) Err bitreich.org 70 i- (let ((sum 0) Err bitreich.org 70 i- (i start)) Err bitreich.org 70 i- (declare (fixnum i sum)) Err bitreich.org 70 i- (decf end 2) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- (when (> i end) Err bitreich.org 70 i- (return)) Err bitreich.org 70 i- (let* ((high-octet (aref sequence (1+ i))) Err bitreich.org 70 i- (length (cond ((<= #xd8 high-octet #xdf) 4) Err bitreich.org 70 i- (t 2)))) Err bitreich.org 70 i- (declare (fixnum length) (type octet high-octet)) Err bitreich.org 70 i- (incf sum) Err bitreich.org 70 i- (incf i length))) Err bitreich.org 70 i- (check-end format start (+ end 2) i) Err bitreich.org 70 i- sum)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod compute-number-of-chars ((format flexi-utf-16-be-format) sequence start end) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end) (vector sequence)) Err bitreich.org 70 i- (let ((sum 0) Err bitreich.org 70 i- (i start)) Err bitreich.org 70 i- (declare (fixnum i sum)) Err bitreich.org 70 i- (decf end 2) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- (when (> i end) Err bitreich.org 70 i- (return)) Err bitreich.org 70 i- (let* ((high-octet (aref sequence i)) Err bitreich.org 70 i- (length (cond ((<= #xd8 high-octet #xdf) 4) Err bitreich.org 70 i- (t 2)))) Err bitreich.org 70 i- (declare (fixnum length) (type octet high-octet)) Err bitreich.org 70 i- (incf sum) Err bitreich.org 70 i- (incf i length))) Err bitreich.org 70 i- (check-end format start (+ end 2) i) Err bitreich.org 70 i- sum)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod compute-number-of-chars ((format flexi-crlf-utf-16-le-format) sequence start end) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end) (vector sequence)) Err bitreich.org 70 i- (let ((sum 0) Err bitreich.org 70 i- (i start) Err bitreich.org 70 i- (last-octet 0)) Err bitreich.org 70 i- (declare (fixnum i sum) (type octet last-octet)) Err bitreich.org 70 i- (decf end 2) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- (when (> i end) Err bitreich.org 70 i- (return)) Err bitreich.org 70 i- (let* ((high-octet (aref sequence (1+ i))) Err bitreich.org 70 i- (length (cond ((<= #xd8 high-octet #xdf) 4) Err bitreich.org 70 i- (t 2)))) Err bitreich.org 70 i- (declare (fixnum length) (type octet high-octet)) Err bitreich.org 70 i- (unless (and (zerop high-octet) Err bitreich.org 70 i- (= (the octet (aref sequence i)) +lf+) Err bitreich.org 70 i- (= last-octet +cr+)) Err bitreich.org 70 i- (incf sum)) Err bitreich.org 70 i- (setq last-octet (if (zerop high-octet) Err bitreich.org 70 i- (aref sequence i) Err bitreich.org 70 i- 0)) Err bitreich.org 70 i- (incf i length))) Err bitreich.org 70 i- (check-end format start (+ end 2) i) Err bitreich.org 70 i- sum)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod compute-number-of-chars ((format flexi-crlf-utf-16-be-format) sequence start end) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end) (vector sequence)) Err bitreich.org 70 i- (let ((sum 0) Err bitreich.org 70 i- (i start) Err bitreich.org 70 i- (last-octet 0)) Err bitreich.org 70 i- (declare (fixnum i sum) (type octet last-octet)) Err bitreich.org 70 i- (decf end 2) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- (when (> i end) Err bitreich.org 70 i- (return)) Err bitreich.org 70 i- (let* ((high-octet (aref sequence i)) Err bitreich.org 70 i- (length (cond ((<= #xd8 high-octet #xdf) 4) Err bitreich.org 70 i- (t 2)))) Err bitreich.org 70 i- (declare (fixnum length) (type octet high-octet)) Err bitreich.org 70 i- (unless (and (zerop high-octet) Err bitreich.org 70 i- (= (the octet (aref sequence (1+ i))) +lf+) Err bitreich.org 70 i- (= last-octet +cr+)) Err bitreich.org 70 i- (incf sum)) Err bitreich.org 70 i- (setq last-octet (if (zerop high-octet) Err bitreich.org 70 i- (aref sequence (1+ i)) Err bitreich.org 70 i- 0)) Err bitreich.org 70 i- (incf i length))) Err bitreich.org 70 i- (check-end format start (+ end 2) i) Err bitreich.org 70 i- sum)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod compute-number-of-chars :before ((format flexi-utf-32-format) sequence start end) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end)) Err bitreich.org 70 i- (declare (ignore sequence)) Err bitreich.org 70 i- (let ((length (- end start))) Err bitreich.org 70 i- (when (plusp (mod length 4)) Err bitreich.org 70 i- (signal-encoding-error format "~A octet~:P cannot be decoded ~ Err bitreich.org 70 i-using UTF-32 as ~:*~A is not a multiple-value of four." Err bitreich.org 70 i- length)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod compute-number-of-chars ((format flexi-utf-32-format) sequence start end) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end)) Err bitreich.org 70 i- (declare (ignore sequence)) Err bitreich.org 70 i- (ceiling (- end start) 4)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod compute-number-of-chars ((format flexi-crlf-utf-32-le-format) sequence start end) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end) (vector sequence)) Err bitreich.org 70 i- (let ((i start) Err bitreich.org 70 i- (length (ceiling (- end start) 4))) Err bitreich.org 70 i- (decf end 8) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- (when (> i end) Err bitreich.org 70 i- (return)) Err bitreich.org 70 i- (cond ((loop for j of-type fixnum from i Err bitreich.org 70 i- for octet across #.(vector +cr+ 0 0 0 +lf+ 0 0 0) Err bitreich.org 70 i- always (= octet (aref sequence j))) Err bitreich.org 70 i- (decf length) Err bitreich.org 70 i- (incf i 8)) Err bitreich.org 70 i- (t (incf i 4)))) Err bitreich.org 70 i- length)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod compute-number-of-chars ((format flexi-crlf-utf-32-be-format) sequence start end) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end) (vector sequence)) Err bitreich.org 70 i- (let ((i start) Err bitreich.org 70 i- (length (ceiling (- end start) 4))) Err bitreich.org 70 i- (decf end 8) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- (when (> i end) Err bitreich.org 70 i- (return)) Err bitreich.org 70 i- (cond ((loop for j of-type fixnum from i Err bitreich.org 70 i- for octet across #.(vector 0 0 0 +cr+ 0 0 0 +lf+) Err bitreich.org 70 i- always (= octet (aref sequence j))) Err bitreich.org 70 i- (decf length) Err bitreich.org 70 i- (incf i 8)) Err bitreich.org 70 i- (t (incf i 4)))) Err bitreich.org 70 i- length)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric compute-number-of-octets (format sequence start end) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (:documentation "Computes the exact number of octets required to Err bitreich.org 70 i-encode the sequence of characters in SEQUENCE from START to END using Err bitreich.org 70 i-the external format FORMAT.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod compute-number-of-octets :around (format (list list) start end) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (call-next-method format (coerce list 'string*) start end)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod compute-number-of-octets ((format flexi-8-bit-format) string start end) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end)) Err bitreich.org 70 i- (declare (ignore string)) Err bitreich.org 70 i- (- end start)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod compute-number-of-octets ((format flexi-utf-8-format) string start end) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end) (string string)) Err bitreich.org 70 i- (let ((sum 0) Err bitreich.org 70 i- (i start)) Err bitreich.org 70 i- (declare (fixnum i sum)) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- (when (>= i end) Err bitreich.org 70 i- (return)) Err bitreich.org 70 i- (let* ((char-code (char-code (char string i))) Err bitreich.org 70 i- (char-length (cond ((< char-code #x80) 1) Err bitreich.org 70 i- ((< char-code #x800) 2) Err bitreich.org 70 i- ((< char-code #x10000) 3) Err bitreich.org 70 i- (t 4)))) Err bitreich.org 70 i- (declare (fixnum char-length) (type char-code-integer char-code)) Err bitreich.org 70 i- (incf sum char-length) Err bitreich.org 70 i- (incf i))) Err bitreich.org 70 i- sum)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod compute-number-of-octets ((format flexi-crlf-utf-8-format) string start end) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end) (string string)) Err bitreich.org 70 i- (let ((sum 0) Err bitreich.org 70 i- (i start)) Err bitreich.org 70 i- (declare (fixnum i sum)) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- (when (>= i end) Err bitreich.org 70 i- (return)) Err bitreich.org 70 i- (let* ((char-code (char-code (char string i))) Err bitreich.org 70 i- (char-length (cond ((= char-code #.(char-code #\Newline)) 2) Err bitreich.org 70 i- ((< char-code #x80) 1) Err bitreich.org 70 i- ((< char-code #x800) 2) Err bitreich.org 70 i- ((< char-code #x10000) 3) Err bitreich.org 70 i- (t 4)))) Err bitreich.org 70 i- (declare (fixnum char-length) (type char-code-integer char-code)) Err bitreich.org 70 i- (incf sum char-length) Err bitreich.org 70 i- (incf i))) Err bitreich.org 70 i- sum)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod compute-number-of-octets ((format flexi-utf-16-format) string start end) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end) (string string)) Err bitreich.org 70 i- (let ((sum 0) Err bitreich.org 70 i- (i start)) Err bitreich.org 70 i- (declare (fixnum i sum)) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- (when (>= i end) Err bitreich.org 70 i- (return)) Err bitreich.org 70 i- (let* ((char-code (char-code (char string i))) Err bitreich.org 70 i- (char-length (cond ((< char-code #x10000) 2) Err bitreich.org 70 i- (t 4)))) Err bitreich.org 70 i- (declare (fixnum char-length) (type char-code-integer char-code)) Err bitreich.org 70 i- (incf sum char-length) Err bitreich.org 70 i- (incf i))) Err bitreich.org 70 i- sum)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod compute-number-of-octets ((format flexi-crlf-utf-16-le-format) string start end) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end) (string string)) Err bitreich.org 70 i- (let ((sum 0) Err bitreich.org 70 i- (i start)) Err bitreich.org 70 i- (declare (fixnum i sum)) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- (when (>= i end) Err bitreich.org 70 i- (return)) Err bitreich.org 70 i- (let* ((char-code (char-code (char string i))) Err bitreich.org 70 i- (char-length (cond ((= char-code #.(char-code #\Newline)) 4) Err bitreich.org 70 i- ((< char-code #x10000) 2) Err bitreich.org 70 i- (t 4)))) Err bitreich.org 70 i- (declare (fixnum char-length) (type char-code-integer char-code)) Err bitreich.org 70 i- (incf sum char-length) Err bitreich.org 70 i- (incf i))) Err bitreich.org 70 i- sum)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod compute-number-of-octets ((format flexi-crlf-utf-16-be-format) string start end) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end) (string string)) Err bitreich.org 70 i- (let ((sum 0) Err bitreich.org 70 i- (i start)) Err bitreich.org 70 i- (declare (fixnum i sum)) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- (when (>= i end) Err bitreich.org 70 i- (return)) Err bitreich.org 70 i- (let* ((char-code (char-code (char string i))) Err bitreich.org 70 i- (char-length (cond ((= char-code #.(char-code #\Newline)) 4) Err bitreich.org 70 i- ((< char-code #x10000) 2) Err bitreich.org 70 i- (t 4)))) Err bitreich.org 70 i- (declare (fixnum char-length) (type char-code-integer char-code)) Err bitreich.org 70 i- (incf sum char-length) Err bitreich.org 70 i- (incf i))) Err bitreich.org 70 i- sum)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod compute-number-of-octets ((format flexi-utf-32-format) string start end) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end)) Err bitreich.org 70 i- (declare (ignore string)) Err bitreich.org 70 i- (* 4 (- end start))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod compute-number-of-octets ((format flexi-crlf-mixin) string start end) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end) (string string)) Err bitreich.org 70 i- (+ (call-next-method) Err bitreich.org 70 i- (* (case (external-format-name format) Err bitreich.org 70 i- (:utf-32 4) Err bitreich.org 70 i- (otherwise 1)) Err bitreich.org 70 i- (count #\Newline string :start start :end end :test #'char=)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric character-length (format char) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (:documentation "Returns the number of octets needed to encode the Err bitreich.org 70 i-single character CHAR.") Err bitreich.org 70 i- (:method (format char) Err bitreich.org 70 i- (compute-number-of-octets format (string char) 0 1))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod character-length :around ((format flexi-crlf-mixin) (char (eql #\Newline))) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (+ (call-next-method format +cr+) Err bitreich.org 70 i- (call-next-method format +lf+))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod character-length ((format flexi-8-bit-format) char) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (ignore char)) Err bitreich.org 70 i- 1) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod character-length ((format flexi-utf-32-format) char) Err bitreich.org 70 i- (declare #.*fixnum-optimize-settings*) Err bitreich.org 70 i- (declare (ignore char)) Err bitreich.org 70 i- 4) Err bitreich.org 70 i-\ No newline at end of file Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/lw-char-stream.lisp b/3rdparties/software/flexi-streams-20190107-git/lw-char-stream.lisp /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/lw-char-stream.lisp.gph bitreich.org 70 i@@ -1,77 +0,0 @@ Err bitreich.org 70 i-;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: FLEXI-STREAMS; Base: 10 -*- Err bitreich.org 70 i-;;; $Header: /usr/local/cvsrep/flexi-streams/lw-char-stream.lisp,v 1.1 2008/05/23 14:43:09 edi Exp $ Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Copyright (c) 2005-2008, Dr. Edmund Weitz. All rights reserved. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Redistribution and use in source and binary forms, with or without Err bitreich.org 70 i-;;; modification, are permitted provided that the following conditions Err bitreich.org 70 i-;;; are met: Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions of source code must retain the above copyright Err bitreich.org 70 i-;;; notice, this list of conditions and the following disclaimer. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions in binary form must reproduce the above Err bitreich.org 70 i-;;; copyright notice, this list of conditions and the following Err bitreich.org 70 i-;;; disclaimer in the documentation and/or other materials Err bitreich.org 70 i-;;; provided with the distribution. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED Err bitreich.org 70 i-;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED Err bitreich.org 70 i-;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE Err bitreich.org 70 i-;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY Err bitreich.org 70 i-;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL Err bitreich.org 70 i-;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE Err bitreich.org 70 i-;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS Err bitreich.org 70 i-;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING Err bitreich.org 70 i-;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS Err bitreich.org 70 i-;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :flexi-streams) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-char-output-stream (flexi-output-stream) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "This class is for output streams where the Err bitreich.org 70 i-underlying stream is bivalent but not binary. It exists solely for Err bitreich.org 70 i-the purpose of optimizing output to binary streams on LispWorks. See Err bitreich.org 70 i-WRITE-BYTE*.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-char-input-stream (flexi-input-stream) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "This class is for input streams where the Err bitreich.org 70 i-underlying stream is bivalent but not binary. It exists solely for Err bitreich.org 70 i-the purpose of optimizing input to binary streams on LispWorks. See Err bitreich.org 70 i-READ-BYTE*.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-char-io-stream (flexi-char-input-stream flexi-char-output-stream flexi-io-stream) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "This class is for bidirectional streams where the Err bitreich.org 70 i-underlying stream is bivalent but not binary. It exists solely for Err bitreich.org 70 i-the purpose of optimizing input and output from/to binary streams on Err bitreich.org 70 i-LispWorks. See READ-BYTE* and WRITE-BYTE*.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod initialize-instance :after ((flexi-stream flexi-output-stream) &rest initargs) Err bitreich.org 70 i- "Might change the class of FLEXI-STREAM for optimization purposes. Err bitreich.org 70 i-Only needed for LispWorks." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (declare (ignore initargs)) Err bitreich.org 70 i- (with-accessors ((stream flexi-stream-stream)) Err bitreich.org 70 i- flexi-stream Err bitreich.org 70 i- (unless (subtypep (stream-element-type stream) 'octet) Err bitreich.org 70 i- (change-class flexi-stream Err bitreich.org 70 i- (typecase flexi-stream Err bitreich.org 70 i- (flexi-io-stream 'flexi-char-io-stream) Err bitreich.org 70 i- (otherwise 'flexi-char-output-stream)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod initialize-instance :after ((flexi-stream flexi-input-stream) &rest initargs) Err bitreich.org 70 i- "Might change the class of FLEXI-STREAM for optimization purposes. Err bitreich.org 70 i-Only needed for LispWorks." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (declare (ignore initargs)) Err bitreich.org 70 i- (with-accessors ((stream flexi-stream-stream)) Err bitreich.org 70 i- flexi-stream Err bitreich.org 70 i- (unless (subtypep (stream-element-type stream) 'octet) Err bitreich.org 70 i- (change-class flexi-stream Err bitreich.org 70 i- (typecase flexi-stream Err bitreich.org 70 i- (flexi-io-stream 'flexi-char-io-stream) Err bitreich.org 70 i- (otherwise 'flexi-char-input-stream)))))) Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/mapping.lisp b/3rdparties/software/flexi-streams-20190107-git/mapping.lisp /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/mapping.lisp.gph bitreich.org 70 i@@ -1,81 +0,0 @@ Err bitreich.org 70 i-;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: FLEXI-STREAMS; Base: 10 -*- Err bitreich.org 70 i-;;; $Header: /usr/local/cvsrep/flexi-streams/mapping.lisp,v 1.3 2008/05/25 19:07:53 edi Exp $ Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Copyright (c) 2005-2008, Dr. Edmund Weitz. All rights reserved. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Redistribution and use in source and binary forms, with or without Err bitreich.org 70 i-;;; modification, are permitted provided that the following conditions Err bitreich.org 70 i-;;; are met: Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions of source code must retain the above copyright Err bitreich.org 70 i-;;; notice, this list of conditions and the following disclaimer. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions in binary form must reproduce the above Err bitreich.org 70 i-;;; copyright notice, this list of conditions and the following Err bitreich.org 70 i-;;; disclaimer in the documentation and/or other materials Err bitreich.org 70 i-;;; provided with the distribution. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED Err bitreich.org 70 i-;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED Err bitreich.org 70 i-;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE Err bitreich.org 70 i-;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY Err bitreich.org 70 i-;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL Err bitreich.org 70 i-;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE Err bitreich.org 70 i-;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS Err bitreich.org 70 i-;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING Err bitreich.org 70 i-;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS Err bitreich.org 70 i-;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :flexi-streams) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype octet () Err bitreich.org 70 i- "A shortcut for \(UNSIGNED-BYTE 8)." Err bitreich.org 70 i- '(unsigned-byte 8)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype char* () Err bitreich.org 70 i- "Convenience shortcut to paper over the difference between LispWorks Err bitreich.org 70 i-and the other Lisps." Err bitreich.org 70 i- #+:lispworks 'lw:simple-char Err bitreich.org 70 i- #-:lispworks 'character) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype string* () Err bitreich.org 70 i- "Convenience shortcut to paper over the difference between LispWorks Err bitreich.org 70 i-and the other Lisps." Err bitreich.org 70 i- #+:lispworks 'lw:text-string Err bitreich.org 70 i- #-:lispworks 'string) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype char-code-integer () Err bitreich.org 70 i- "The subtype of integers which can be returned by the function CHAR-CODE." Err bitreich.org 70 i- #-:cmu '(integer 0 #.(1- char-code-limit)) Err bitreich.org 70 i- #+:cmu '(integer 0 65533)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype code-point () Err bitreich.org 70 i- "The subtype of integers that's just big enough to hold all Unicode Err bitreich.org 70 i-codepoints. Err bitreich.org 70 i- Err bitreich.org 70 i-See for example ." Err bitreich.org 70 i- '(mod #x110000)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro defconstant (name value &optional doc) Err bitreich.org 70 i- "Make sure VALUE is evaluated only once \(to appease SBCL)." Err bitreich.org 70 i- `(cl:defconstant ,name (if (boundp ',name) (symbol-value ',name) ,value) Err bitreich.org 70 i- ,@(when doc (list doc)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun invert-table (table) Err bitreich.org 70 i- "`Inverts' an array which maps octets to character codes to a hash Err bitreich.org 70 i-table which maps character codes to octets." Err bitreich.org 70 i- (let ((hash (make-hash-table))) Err bitreich.org 70 i- (loop for octet from 0 Err bitreich.org 70 i- for char-code across table Err bitreich.org 70 i- unless (= char-code 65533) Err bitreich.org 70 i- do (setf (gethash char-code hash) octet)) Err bitreich.org 70 i- hash)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-decoding-table (list) Err bitreich.org 70 i- "Creates and returns an array which contains the elements in the Err bitreich.org 70 i-list LIST and has an element type that's suitable for character Err bitreich.org 70 i-codes." Err bitreich.org 70 i- (make-array (length list) Err bitreich.org 70 i- :element-type 'char-code-integer Err bitreich.org 70 i- :initial-contents list)) Err bitreich.org 70 i-\ No newline at end of file Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/output.lisp b/3rdparties/software/flexi-streams-20190107-git/output.lisp /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/output.lisp.gph bitreich.org 70 i@@ -1,162 +0,0 @@ Err bitreich.org 70 i-;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: FLEXI-STREAMS; Base: 10 -*- Err bitreich.org 70 i-;;; $Header: /usr/local/cvsrep/flexi-streams/output.lisp,v 1.65 2008/05/24 23:15:25 edi Exp $ Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Copyright (c) 2005-2008, Dr. Edmund Weitz. All rights reserved. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Redistribution and use in source and binary forms, with or without Err bitreich.org 70 i-;;; modification, are permitted provided that the following conditions Err bitreich.org 70 i-;;; are met: Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions of source code must retain the above copyright Err bitreich.org 70 i-;;; notice, this list of conditions and the following disclaimer. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions in binary form must reproduce the above Err bitreich.org 70 i-;;; copyright notice, this list of conditions and the following Err bitreich.org 70 i-;;; disclaimer in the documentation and/or other materials Err bitreich.org 70 i-;;; provided with the distribution. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED Err bitreich.org 70 i-;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED Err bitreich.org 70 i-;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE Err bitreich.org 70 i-;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY Err bitreich.org 70 i-;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL Err bitreich.org 70 i-;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE Err bitreich.org 70 i-;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS Err bitreich.org 70 i-;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING Err bitreich.org 70 i-;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS Err bitreich.org 70 i-;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :flexi-streams) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric write-byte* (byte stream) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (:documentation "Writes one byte \(octet) to the underlying stream Err bitreich.org 70 i-STREAM.")) Err bitreich.org 70 i- Err bitreich.org 70 i-#-:lispworks Err bitreich.org 70 i-(defmethod write-byte* (byte (flexi-output-stream flexi-output-stream)) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (with-accessors ((stream flexi-stream-stream)) Err bitreich.org 70 i- flexi-output-stream Err bitreich.org 70 i- (write-byte byte stream))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+:lispworks Err bitreich.org 70 i-(defmethod write-byte* (byte (flexi-output-stream flexi-output-stream)) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (with-accessors ((stream flexi-stream-stream)) Err bitreich.org 70 i- flexi-output-stream Err bitreich.org 70 i- (write-byte byte stream))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+:lispworks Err bitreich.org 70 i-(defmethod write-byte* (byte (flexi-output-stream flexi-char-output-stream)) Err bitreich.org 70 i- "This method is only used for LispWorks bivalent streams which Err bitreich.org 70 i-aren't binary." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- ;; we use WRITE-SEQUENCE because WRITE-BYTE doesn't work with all Err bitreich.org 70 i- ;; bivalent streams in LispWorks (4.4.6) Err bitreich.org 70 i- (with-accessors ((stream flexi-stream-stream)) Err bitreich.org 70 i- flexi-output-stream Err bitreich.org 70 i- (write-sequence (make-array 1 :element-type 'octet Err bitreich.org 70 i- :initial-element byte) Err bitreich.org 70 i- stream) Err bitreich.org 70 i- byte)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-write-char ((stream flexi-output-stream) char) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (with-accessors ((external-format flexi-stream-external-format)) Err bitreich.org 70 i- stream Err bitreich.org 70 i- (flet ((writer (octet) Err bitreich.org 70 i- (write-byte* octet stream))) Err bitreich.org 70 i- (declare (dynamic-extent (function writer))) Err bitreich.org 70 i- (char-to-octets external-format char #'writer)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-write-char :after ((stream flexi-output-stream) char) Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- ;; update the column unless we're in the middle of the line and Err bitreich.org 70 i- ;; the current value is NIL Err bitreich.org 70 i- (with-accessors ((column flexi-stream-column)) Err bitreich.org 70 i- stream Err bitreich.org 70 i- (cond ((char= char #\Newline) (setq column 0)) Err bitreich.org 70 i- (column (incf (the integer column)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-clear-output ((flexi-output-stream flexi-output-stream)) Err bitreich.org 70 i- "Simply calls the corresponding method for the underlying Err bitreich.org 70 i-output stream." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (with-accessors ((stream flexi-stream-stream)) Err bitreich.org 70 i- flexi-output-stream Err bitreich.org 70 i- (clear-output stream))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-finish-output ((flexi-output-stream flexi-output-stream)) Err bitreich.org 70 i- "Simply calls the corresponding method for the underlying Err bitreich.org 70 i-output stream." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (with-accessors ((stream flexi-stream-stream)) Err bitreich.org 70 i- flexi-output-stream Err bitreich.org 70 i- (finish-output stream))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-force-output ((flexi-output-stream flexi-output-stream)) Err bitreich.org 70 i- "Simply calls the corresponding method for the underlying Err bitreich.org 70 i-output stream." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (with-accessors ((stream flexi-stream-stream)) Err bitreich.org 70 i- flexi-output-stream Err bitreich.org 70 i- (force-output stream))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-line-column ((flexi-output-stream flexi-output-stream)) Err bitreich.org 70 i- "Returns the column stored in the COLUMN slot of the Err bitreich.org 70 i-FLEXI-OUTPUT-STREAM object STREAM." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (with-accessors ((column flexi-stream-column)) Err bitreich.org 70 i- flexi-output-stream Err bitreich.org 70 i- column)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-write-byte ((flexi-output-stream flexi-output-stream) byte) Err bitreich.org 70 i- "Writes a byte \(octet) to the underlying stream." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (with-accessors ((column flexi-stream-column)) Err bitreich.org 70 i- flexi-output-stream Err bitreich.org 70 i- ;; set column to NIL because we don't know how to handle binary Err bitreich.org 70 i- ;; output mixed with character output Err bitreich.org 70 i- (setq column nil) Err bitreich.org 70 i- (write-byte* byte flexi-output-stream))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+:allegro Err bitreich.org 70 i-(defmethod stream-terpri ((stream flexi-output-stream)) Err bitreich.org 70 i- "Writes a #\Newline character to the underlying stream." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- ;; needed for AllegroCL - grrr... Err bitreich.org 70 i- (stream-write-char stream #\Newline)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-write-sequence ((flexi-output-stream flexi-output-stream) sequence start end &key) Err bitreich.org 70 i- "An optimized version which uses a buffer underneath. The function Err bitreich.org 70 i-can accepts characters as well as octets and it decides what to do Err bitreich.org 70 i-based on the element type of the sequence \(if possible) or on the Err bitreich.org 70 i-individual elements, i.e. you can mix characters and octets in Err bitreich.org 70 i-SEQUENCE if you want. Whether that really works might also depend on Err bitreich.org 70 i-your Lisp, some of the implementations are more picky than others." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end)) Err bitreich.org 70 i- (with-accessors ((column flexi-stream-column) Err bitreich.org 70 i- (external-format flexi-stream-external-format) Err bitreich.org 70 i- (stream flexi-stream-stream)) Err bitreich.org 70 i- flexi-output-stream Err bitreich.org 70 i- (when (>= start end) Err bitreich.org 70 i- (return-from stream-write-sequence sequence)) Err bitreich.org 70 i- (when (and (vectorp sequence) Err bitreich.org 70 i- (subtypep (array-element-type sequence) 'integer)) Err bitreich.org 70 i- ;; if this is pure binary output, just send all the stuff to the Err bitreich.org 70 i- ;; underlying stream directly and skip the rest Err bitreich.org 70 i- (setq column nil) Err bitreich.org 70 i- (return-from stream-write-sequence Err bitreich.org 70 i- (write-sequence sequence stream :start start :end end))) Err bitreich.org 70 i- ;; otherwise hand over to the external format to do the work Err bitreich.org 70 i- (write-sequence* external-format flexi-output-stream sequence start end)) Err bitreich.org 70 i- sequence) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-write-string ((stream flexi-output-stream) string Err bitreich.org 70 i- &optional (start 0) (end (length string))) Err bitreich.org 70 i- "Simply hands over to the optimized method for STREAM-WRITE-SEQUENCE." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (stream-write-sequence stream string start (or end (length string)))) Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/packages.lisp b/3rdparties/software/flexi-streams-20190107-git/packages.lisp /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/packages.lisp.gph bitreich.org 70 i@@ -1,90 +0,0 @@ Err bitreich.org 70 i-;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: CL-USER; Base: 10 -*- Err bitreich.org 70 i-;;; $Header: /usr/local/cvsrep/flexi-streams/packages.lisp,v 1.39 2008/05/30 07:50:31 edi Exp $ Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Copyright (c) 2005-2008, Dr. Edmund Weitz. All rights reserved. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Redistribution and use in source and binary forms, with or without Err bitreich.org 70 i-;;; modification, are permitted provided that the following conditions Err bitreich.org 70 i-;;; are met: Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions of source code must retain the above copyright Err bitreich.org 70 i-;;; notice, this list of conditions and the following disclaimer. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions in binary form must reproduce the above Err bitreich.org 70 i-;;; copyright notice, this list of conditions and the following Err bitreich.org 70 i-;;; disclaimer in the documentation and/or other materials Err bitreich.org 70 i-;;; provided with the distribution. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED Err bitreich.org 70 i-;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED Err bitreich.org 70 i-;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE Err bitreich.org 70 i-;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY Err bitreich.org 70 i-;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL Err bitreich.org 70 i-;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE Err bitreich.org 70 i-;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS Err bitreich.org 70 i-;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING Err bitreich.org 70 i-;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS Err bitreich.org 70 i-;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl-user) Err bitreich.org 70 i- Err bitreich.org 70 i-(unless (find-symbol (symbol-name :stream-file-position) :trivial-gray-streams) Err bitreich.org 70 i- (error "You need a newer version of TRIVIAL-GRAY-STREAMS.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage :flexi-streams Err bitreich.org 70 i- (:use :cl :trivial-gray-streams) Err bitreich.org 70 i- (:nicknames :flex) Err bitreich.org 70 i- (:shadow #+:lispworks :with-accessors Err bitreich.org 70 i- :defconstant) Err bitreich.org 70 i- (:export :*default-eol-style* Err bitreich.org 70 i- :*default-little-endian* Err bitreich.org 70 i- :*substitution-char* Err bitreich.org 70 i- :accept-overlong-sequence Err bitreich.org 70 i- :char-length Err bitreich.org 70 i- :external-format-condition Err bitreich.org 70 i- :external-format-condition-external-format Err bitreich.org 70 i- :external-format-eol-style Err bitreich.org 70 i- :external-format-error Err bitreich.org 70 i- :external-format-encoding-error Err bitreich.org 70 i- :external-format-equal Err bitreich.org 70 i- :external-format-id Err bitreich.org 70 i- :external-format-little-endian Err bitreich.org 70 i- :external-format-name Err bitreich.org 70 i- :flexi-input-stream Err bitreich.org 70 i- :flexi-output-stream Err bitreich.org 70 i- :flexi-io-stream Err bitreich.org 70 i- :flexi-stream Err bitreich.org 70 i- :flexi-stream-bound Err bitreich.org 70 i- :flexi-stream-column Err bitreich.org 70 i- :flexi-stream-external-format Err bitreich.org 70 i- :flexi-stream-element-type Err bitreich.org 70 i- :flexi-stream-element-type-error Err bitreich.org 70 i- :flexi-stream-element-type-error-element-type Err bitreich.org 70 i- :flexi-stream-error Err bitreich.org 70 i- :flexi-stream-out-of-sync-error Err bitreich.org 70 i- :flexi-stream-position Err bitreich.org 70 i- :flexi-stream-stream Err bitreich.org 70 i- :get-output-stream-sequence Err bitreich.org 70 i- :in-memory-stream Err bitreich.org 70 i- :in-memory-stream-closed-error Err bitreich.org 70 i- :in-memory-stream-error Err bitreich.org 70 i- :in-memory-stream-position-spec-error Err bitreich.org 70 i- :in-memory-stream-position-spec-error-position-spec Err bitreich.org 70 i- :in-memory-input-stream Err bitreich.org 70 i- :in-memory-output-stream Err bitreich.org 70 i- :list-stream Err bitreich.org 70 i- :make-external-format Err bitreich.org 70 i- :make-in-memory-input-stream Err bitreich.org 70 i- :make-in-memory-output-stream Err bitreich.org 70 i- :make-flexi-stream Err bitreich.org 70 i- :octet Err bitreich.org 70 i- :octet-length Err bitreich.org 70 i- :octets-to-string Err bitreich.org 70 i- :output-stream-sequence-length Err bitreich.org 70 i- :peek-byte Err bitreich.org 70 i- :string-to-octets Err bitreich.org 70 i- :unread-byte Err bitreich.org 70 i- :vector-stream Err bitreich.org 70 i- :with-input-from-sequence Err bitreich.org 70 i- :with-output-to-sequence)) Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/specials.lisp b/3rdparties/software/flexi-streams-20190107-git/specials.lisp /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/specials.lisp.gph bitreich.org 70 i@@ -1,199 +0,0 @@ Err bitreich.org 70 i-;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: FLEXI-STREAMS; Base: 10 -*- Err bitreich.org 70 i-;;; $Header: /usr/local/cvsrep/flexi-streams/specials.lisp,v 1.33 2008/05/25 01:40:54 edi Exp $ Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Copyright (c) 2005-2008, Dr. Edmund Weitz. All rights reserved. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Redistribution and use in source and binary forms, with or without Err bitreich.org 70 i-;;; modification, are permitted provided that the following conditions Err bitreich.org 70 i-;;; are met: Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions of source code must retain the above copyright Err bitreich.org 70 i-;;; notice, this list of conditions and the following disclaimer. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions in binary form must reproduce the above Err bitreich.org 70 i-;;; copyright notice, this list of conditions and the following Err bitreich.org 70 i-;;; disclaimer in the documentation and/or other materials Err bitreich.org 70 i-;;; provided with the distribution. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED Err bitreich.org 70 i-;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED Err bitreich.org 70 i-;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE Err bitreich.org 70 i-;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY Err bitreich.org 70 i-;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL Err bitreich.org 70 i-;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE Err bitreich.org 70 i-;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS Err bitreich.org 70 i-;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING Err bitreich.org 70 i-;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS Err bitreich.org 70 i-;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :flexi-streams) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *standard-optimize-settings* Err bitreich.org 70 i- '(optimize Err bitreich.org 70 i- speed Err bitreich.org 70 i- (space 0) Err bitreich.org 70 i- (debug 1) Err bitreich.org 70 i- (compilation-speed 0)) Err bitreich.org 70 i- "The standard optimize settings used by most declaration expressions.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *fixnum-optimize-settings* Err bitreich.org 70 i- '(optimize Err bitreich.org 70 i- speed Err bitreich.org 70 i- (space 0) Err bitreich.org 70 i- (debug 1) Err bitreich.org 70 i- (compilation-speed 0) Err bitreich.org 70 i- #+:lispworks (hcl:fixnum-safety 0)) Err bitreich.org 70 i- "Like *STANDARD-OPTIMIZE-SETTINGS*, but \(on LispWorks) with all Err bitreich.org 70 i-arithmetic being fixnum arithmetic.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +lf+ (char-code #\Linefeed)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +cr+ (char-code #\Return)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *current-unreader* nil Err bitreich.org 70 i- "A unary function which might be called to `unread' a character Err bitreich.org 70 i-\(i.e. the sequence of octets it represents). Err bitreich.org 70 i- Err bitreich.org 70 i-Used by the function OCTETS-TO-CHAR-CODE and must always be bound to a Err bitreich.org 70 i-suitable functional object when this function is called.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar +name-map+ Err bitreich.org 70 i- '((:utf8 . :utf-8) Err bitreich.org 70 i- (:utf16 . :utf-16) Err bitreich.org 70 i- (:ucs2 . :utf-16) Err bitreich.org 70 i- (:ucs-2 . :utf-16) Err bitreich.org 70 i- (:unicode . :utf-16) Err bitreich.org 70 i- (:utf32 . :utf-32) Err bitreich.org 70 i- (:ucs4 . :utf-32) Err bitreich.org 70 i- (:ucs-4 . :utf-32) Err bitreich.org 70 i- (:ascii . :us-ascii) Err bitreich.org 70 i- (:koi8r . :koi8-r) Err bitreich.org 70 i- (:latin-1 . :iso-8859-1) Err bitreich.org 70 i- (:latin1 . :iso-8859-1) Err bitreich.org 70 i- (:latin-2 . :iso-8859-2) Err bitreich.org 70 i- (:latin2 . :iso-8859-2) Err bitreich.org 70 i- (:latin-3 . :iso-8859-3) Err bitreich.org 70 i- (:latin3 . :iso-8859-3) Err bitreich.org 70 i- (:latin-4 . :iso-8859-4) Err bitreich.org 70 i- (:latin4 . :iso-8859-4) Err bitreich.org 70 i- (:cyrillic . :iso-8859-5) Err bitreich.org 70 i- (:arabic . :iso-8859-6) Err bitreich.org 70 i- (:greek . :iso-8859-7) Err bitreich.org 70 i- (:hebrew . :iso-8859-8) Err bitreich.org 70 i- (:latin-5 . :iso-8859-9) Err bitreich.org 70 i- (:latin5 . :iso-8859-9) Err bitreich.org 70 i- (:latin-6 . :iso-8859-10) Err bitreich.org 70 i- (:latin6 . :iso-8859-10) Err bitreich.org 70 i- (:thai . :iso-8859-11) Err bitreich.org 70 i- (:latin-7 . :iso-8859-13) Err bitreich.org 70 i- (:latin7 . :iso-8859-13) Err bitreich.org 70 i- (:latin-8 . :iso-8859-14) Err bitreich.org 70 i- (:latin8 . :iso-8859-14) Err bitreich.org 70 i- (:latin-9 . :iso-8859-15) Err bitreich.org 70 i- (:latin9 . :iso-8859-15) Err bitreich.org 70 i- (:latin-0 . :iso-8859-15) Err bitreich.org 70 i- (:latin0 . :iso-8859-15) Err bitreich.org 70 i- (:latin-10 . :iso-8859-16) Err bitreich.org 70 i- (:latin10 . :iso-8859-16) Err bitreich.org 70 i- (:codepage . :code-page) Err bitreich.org 70 i- #+(and :lispworks :win32) Err bitreich.org 70 i- (win32:code-page . :code-page)) Err bitreich.org 70 i- "An alist which mapes alternative names for external formats to Err bitreich.org 70 i-their canonical counterparts.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar +shortcut-map+ Err bitreich.org 70 i- '((:ucs-2le . (:ucs-2 :little-endian t)) Err bitreich.org 70 i- (:ucs-2be . (:ucs-2 :little-endian nil)) Err bitreich.org 70 i- (:ucs-4le . (:ucs-4 :little-endian t)) Err bitreich.org 70 i- (:ucs-4be . (:ucs-4 :little-endian nil)) Err bitreich.org 70 i- (:utf-16le . (:utf-16 :little-endian t)) Err bitreich.org 70 i- (:utf-16be . (:utf-16 :little-endian nil)) Err bitreich.org 70 i- (:utf-32le . (:utf-32 :little-endian t)) Err bitreich.org 70 i- (:utf-32be . (:utf-32 :little-endian nil)) Err bitreich.org 70 i- (:ibm437 . (:code-page :id 437)) Err bitreich.org 70 i- (:ibm850 . (:code-page :id 850)) Err bitreich.org 70 i- (:ibm852 . (:code-page :id 852)) Err bitreich.org 70 i- (:ibm855 . (:code-page :id 855)) Err bitreich.org 70 i- (:ibm857 . (:code-page :id 857)) Err bitreich.org 70 i- (:ibm860 . (:code-page :id 860)) Err bitreich.org 70 i- (:ibm861 . (:code-page :id 861)) Err bitreich.org 70 i- (:ibm862 . (:code-page :id 862)) Err bitreich.org 70 i- (:ibm863 . (:code-page :id 863)) Err bitreich.org 70 i- (:ibm864 . (:code-page :id 864)) Err bitreich.org 70 i- (:ibm865 . (:code-page :id 865)) Err bitreich.org 70 i- (:ibm866 . (:code-page :id 866)) Err bitreich.org 70 i- (:ibm869 . (:code-page :id 869)) Err bitreich.org 70 i- (:windows-1250 . (:code-page :id 1250)) Err bitreich.org 70 i- (:windows-1251 . (:code-page :id 1251)) Err bitreich.org 70 i- (:windows-1252 . (:code-page :id 1252)) Err bitreich.org 70 i- (:windows-1253 . (:code-page :id 1253)) Err bitreich.org 70 i- (:windows-1254 . (:code-page :id 1254)) Err bitreich.org 70 i- (:windows-1255 . (:code-page :id 1255)) Err bitreich.org 70 i- (:windows-1256 . (:code-page :id 1256)) Err bitreich.org 70 i- (:windows-1257 . (:code-page :id 1257)) Err bitreich.org 70 i- (:windows-1258 . (:code-page :id 1258))) Err bitreich.org 70 i- "An alist which maps shortcuts for external formats to their Err bitreich.org 70 i-long forms.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *default-eol-style* Err bitreich.org 70 i- #+:win32 :crlf Err bitreich.org 70 i- #-:win32 :lf Err bitreich.org 70 i- "The end-of-line style used by external formats if none is Err bitreich.org 70 i-explicitly given. Depends on the OS the code is compiled on.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *default-little-endian* Err bitreich.org 70 i- #+:little-endian t Err bitreich.org 70 i- #-:little-endian nil Err bitreich.org 70 i- "Whether external formats are little-endian by default Err bitreich.org 70 i-\(i.e. unless explicitly specified). Depends on the platform Err bitreich.org 70 i-the code is compiled on.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *substitution-char* nil Err bitreich.org 70 i- "If this value is not NIL, it should be a character which is used Err bitreich.org 70 i-\(as if by a USE-VALUE restart) whenever during reading an error of Err bitreich.org 70 i-type FLEXI-STREAM-ENCODING-ERROR would have been signalled otherwise.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +iso-8859-hashes+ Err bitreich.org 70 i- (loop for (name . table) in +iso-8859-tables+ Err bitreich.org 70 i- collect (cons name (invert-table table))) Err bitreich.org 70 i- "An alist which maps names for ISO-8859 encodings to hash Err bitreich.org 70 i-tables which map character codes to the corresponding octets.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +code-page-hashes+ Err bitreich.org 70 i- (loop for (id . table) in +code-page-tables+ Err bitreich.org 70 i- collect (cons id (invert-table table))) Err bitreich.org 70 i- "An alist which maps IDs of Windows code pages to hash tables Err bitreich.org 70 i-which map character codes to the corresponding octets.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +ascii-hash+ (invert-table +ascii-table+) Err bitreich.org 70 i- "A hash table which maps US-ASCII character codes to the Err bitreich.org 70 i-corresponding octets.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +koi8-r-hash+ (invert-table +koi8-r-table+) Err bitreich.org 70 i- "A hash table which maps KOI8-R character codes to the Err bitreich.org 70 i-corresponding octets.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +buffer-size+ 8192 Err bitreich.org 70 i- "Default size for buffers used for internal purposes.") Err bitreich.org 70 i- Err bitreich.org 70 i-(pushnew :flexi-streams *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;; stuff for Nikodemus Siivola's HYPERDOC Err bitreich.org 70 i-;; see Err bitreich.org 70 i-;; and Err bitreich.org 70 i-;; also used by LW-ADD-ONS Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *hyperdoc-base-uri* "http://weitz.de/flexi-streams/") Err bitreich.org 70 i- Err bitreich.org 70 i-(let ((exported-symbols-alist Err bitreich.org 70 i- (loop for symbol being the external-symbols of :flexi-streams Err bitreich.org 70 i- collect (cons symbol Err bitreich.org 70 i- (concatenate 'string Err bitreich.org 70 i- "#" Err bitreich.org 70 i- (string-downcase symbol)))))) Err bitreich.org 70 i- (defun hyperdoc-lookup (symbol type) Err bitreich.org 70 i- (declare (ignore type)) Err bitreich.org 70 i- (cdr (assoc symbol Err bitreich.org 70 i- exported-symbols-alist Err bitreich.org 70 i- :test #'eq)))) Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/stream.lisp b/3rdparties/software/flexi-streams-20190107-git/stream.lisp /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/stream.lisp.gph bitreich.org 70 i@@ -1,241 +0,0 @@ Err bitreich.org 70 i-;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: FLEXI-STREAMS; Base: 10 -*- Err bitreich.org 70 i-;;; $Header: /usr/local/cvsrep/flexi-streams/stream.lisp,v 1.61 2008/05/19 22:32:56 edi Exp $ Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Copyright (c) 2005-2008, Dr. Edmund Weitz. All rights reserved. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Redistribution and use in source and binary forms, with or without Err bitreich.org 70 i-;;; modification, are permitted provided that the following conditions Err bitreich.org 70 i-;;; are met: Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions of source code must retain the above copyright Err bitreich.org 70 i-;;; notice, this list of conditions and the following disclaimer. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions in binary form must reproduce the above Err bitreich.org 70 i-;;; copyright notice, this list of conditions and the following Err bitreich.org 70 i-;;; disclaimer in the documentation and/or other materials Err bitreich.org 70 i-;;; provided with the distribution. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED Err bitreich.org 70 i-;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED Err bitreich.org 70 i-;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE Err bitreich.org 70 i-;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY Err bitreich.org 70 i-;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL Err bitreich.org 70 i-;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE Err bitreich.org 70 i-;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS Err bitreich.org 70 i-;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING Err bitreich.org 70 i-;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS Err bitreich.org 70 i-;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :flexi-streams) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-stream (trivial-gray-stream-mixin) Err bitreich.org 70 i- ((stream :initarg :stream Err bitreich.org 70 i- :reader flexi-stream-stream Err bitreich.org 70 i- :documentation "The actual stream that's used for Err bitreich.org 70 i-input and/or output. It must be capable of reading/writing Err bitreich.org 70 i-octets with READ-SEQUENCE and/or WRITE-SEQUENCE.") Err bitreich.org 70 i- (external-format :initform (make-external-format :iso-8859-1) Err bitreich.org 70 i- :initarg :flexi-stream-external-format Err bitreich.org 70 i- :accessor flexi-stream-external-format Err bitreich.org 70 i- :documentation "The encoding currently used Err bitreich.org 70 i-by this stream. Can be changed on the fly.") Err bitreich.org 70 i- (element-type :initform 'char* Err bitreich.org 70 i- :initarg :element-type Err bitreich.org 70 i- :accessor flexi-stream-element-type Err bitreich.org 70 i- :documentation "The element type of this stream.")) Err bitreich.org 70 i- (:documentation "A FLEXI-STREAM object is a stream that's Err bitreich.org 70 i-`layered' atop an existing binary/bivalent stream in order to Err bitreich.org 70 i-allow for multi-octet external formats. FLEXI-STREAM itself is a Err bitreich.org 70 i-mixin and should not be instantiated.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod initialize-instance :after ((flexi-stream flexi-stream) &rest initargs) Err bitreich.org 70 i- "Makes sure the EXTERNAL-FORMAT and ELEMENT-TYPE slots contain Err bitreich.org 70 i-reasonable values." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (declare (ignore initargs)) Err bitreich.org 70 i- (with-accessors ((external-format flexi-stream-external-format) Err bitreich.org 70 i- (element-type flexi-stream-element-type)) Err bitreich.org 70 i- flexi-stream Err bitreich.org 70 i- (unless (or (subtypep element-type 'character) Err bitreich.org 70 i- (subtypep element-type 'octet)) Err bitreich.org 70 i- (error 'flexi-stream-element-type-error Err bitreich.org 70 i- :element-type element-type Err bitreich.org 70 i- :stream flexi-stream)) Err bitreich.org 70 i- (setq external-format (maybe-convert-external-format external-format)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod (setf flexi-stream-external-format) :around (new-value (flexi-stream flexi-stream)) Err bitreich.org 70 i- "Converts the new value to an EXTERNAL-FORMAT object if Err bitreich.org 70 i-necessary." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (call-next-method (maybe-convert-external-format new-value) flexi-stream)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod (setf flexi-stream-element-type) :before (new-value (flexi-stream flexi-stream)) Err bitreich.org 70 i- "Checks whether the new value makes sense before it is set." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (unless (or (subtypep new-value 'character) Err bitreich.org 70 i- (type-equal new-value 'octet)) Err bitreich.org 70 i- (error 'flexi-stream-element-type-error Err bitreich.org 70 i- :element-type new-value Err bitreich.org 70 i- :stream flexi-stream))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-element-type ((stream flexi-stream)) Err bitreich.org 70 i- "Returns the element type that was provided by the creator of Err bitreich.org 70 i-the stream." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (with-accessors ((element-type flexi-stream-element-type)) Err bitreich.org 70 i- stream Err bitreich.org 70 i- element-type)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod close ((stream flexi-stream) &key abort) Err bitreich.org 70 i- "Closes the flexi stream by closing the underlying `real' Err bitreich.org 70 i-stream." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (with-accessors ((stream flexi-stream-stream)) Err bitreich.org 70 i- stream Err bitreich.org 70 i- (cond ((open-stream-p stream) Err bitreich.org 70 i- (close stream :abort abort)) Err bitreich.org 70 i- (t nil)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod open-stream-p ((stream flexi-stream)) Err bitreich.org 70 i- "A flexi stream is open if its underlying stream is open." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (with-accessors ((stream flexi-stream-stream)) Err bitreich.org 70 i- stream Err bitreich.org 70 i- (open-stream-p stream))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod stream-file-position ((stream flexi-stream)) Err bitreich.org 70 i- "Dispatch to method for underlying stream." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (with-accessors ((stream flexi-stream-stream)) Err bitreich.org 70 i- stream Err bitreich.org 70 i- (file-position stream))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod (setf stream-file-position) (position-spec (stream flexi-stream)) Err bitreich.org 70 i- "Dispatch to method for underlying stream." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (with-accessors ((underlying-stream flexi-stream-stream)) Err bitreich.org 70 i- stream Err bitreich.org 70 i- (if (file-position underlying-stream position-spec) Err bitreich.org 70 i- (setf (flexi-stream-position stream) (file-position underlying-stream)) Err bitreich.org 70 i- nil))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-output-stream (flexi-stream fundamental-binary-output-stream Err bitreich.org 70 i- fundamental-character-output-stream) Err bitreich.org 70 i- ((column :initform 0 Err bitreich.org 70 i- :accessor flexi-stream-column Err bitreich.org 70 i- :documentation "The current output column. A Err bitreich.org 70 i-non-negative integer or NIL.")) Err bitreich.org 70 i- (:documentation "A FLEXI-OUTPUT-STREAM is a FLEXI-STREAM that Err bitreich.org 70 i-can actually be instatiated and used for output. Don't use Err bitreich.org 70 i-MAKE-INSTANCE to create a new FLEXI-OUTPUT-STREAM but use Err bitreich.org 70 i-MAKE-FLEXI-STREAM instead.")) Err bitreich.org 70 i- Err bitreich.org 70 i-#+:cmu Err bitreich.org 70 i-(defmethod input-stream-p ((stream flexi-output-stream)) Err bitreich.org 70 i- "Explicitly states whether this is an input stream." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-input-stream (flexi-stream fundamental-binary-input-stream Err bitreich.org 70 i- fundamental-character-input-stream) Err bitreich.org 70 i- ((last-char-code :initform nil Err bitreich.org 70 i- :accessor flexi-stream-last-char-code Err bitreich.org 70 i- :documentation "This slot either holds NIL or the Err bitreich.org 70 i-last character \(code) read successfully. This is mainly used for Err bitreich.org 70 i-UNREAD-CHAR sanity checks.") Err bitreich.org 70 i- (last-octet :initform nil Err bitreich.org 70 i- :accessor flexi-stream-last-octet Err bitreich.org 70 i- :documentation "This slot either holds NIL or the last Err bitreich.org 70 i-octet read successfully from the stream using a `binary' operation Err bitreich.org 70 i-such as READ-BYTE. This is mainly used for UNREAD-BYTE sanity Err bitreich.org 70 i-checks.") Err bitreich.org 70 i- (octet-stack :initform nil Err bitreich.org 70 i- :accessor flexi-stream-octet-stack Err bitreich.org 70 i- :documentation "A small buffer which holds octets Err bitreich.org 70 i-that were already read from the underlying stream but not yet Err bitreich.org 70 i-used to produce characters. This is mainly used if we have to Err bitreich.org 70 i-look ahead for a CR/LF line ending.") Err bitreich.org 70 i- (position :initform 0 Err bitreich.org 70 i- :initarg :position Err bitreich.org 70 i- :type integer Err bitreich.org 70 i- :accessor flexi-stream-position Err bitreich.org 70 i- :documentation "The position within the stream where each Err bitreich.org 70 i-octet read counts as one.") Err bitreich.org 70 i- (bound :initform nil Err bitreich.org 70 i- :initarg :bound Err bitreich.org 70 i- :type (or null integer) Err bitreich.org 70 i- :accessor flexi-stream-bound Err bitreich.org 70 i- :documentation "When this is not NIL, it must be an integer Err bitreich.org 70 i-and the stream will behave as if no more data is available as soon as Err bitreich.org 70 i-POSITION is greater or equal than this value.")) Err bitreich.org 70 i- (:documentation "A FLEXI-INPUT-STREAM is a FLEXI-STREAM that Err bitreich.org 70 i-can actually be instatiated and used for input. Don't use Err bitreich.org 70 i-MAKE-INSTANCE to create a new FLEXI-INPUT-STREAM but use Err bitreich.org 70 i-MAKE-FLEXI-STREAM instead.")) Err bitreich.org 70 i- Err bitreich.org 70 i-#+:cmu Err bitreich.org 70 i-(defmethod output-stream-p ((stream flexi-input-stream)) Err bitreich.org 70 i- "Explicitly states whether this is an output stream." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass flexi-io-stream (flexi-input-stream flexi-output-stream) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "A FLEXI-IO-STREAM is a FLEXI-STREAM that can Err bitreich.org 70 i-actually be instatiated and used for input and output. Don't use Err bitreich.org 70 i-MAKE-INSTANCE to create a new FLEXI-IO-STREAM but use Err bitreich.org 70 i-MAKE-FLEXI-STREAM instead.")) Err bitreich.org 70 i- Err bitreich.org 70 i-#+:cmu Err bitreich.org 70 i-(defmethod input-stream-p ((stream flexi-io-stream)) Err bitreich.org 70 i- "Explicitly states whether this is an input stream." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-#+:cmu Err bitreich.org 70 i-(defmethod output-stream-p ((stream flexi-io-stream)) Err bitreich.org 70 i- "Explicitly states whether this is an output stream." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-flexi-stream (stream &rest args Err bitreich.org 70 i- &key (external-format (make-external-format :iso-8859-1)) Err bitreich.org 70 i- element-type column position bound) Err bitreich.org 70 i- "Creates and returns a new flexi stream. STREAM must be an open Err bitreich.org 70 i-binary or `bivalent' stream, i.e. it must be capable of Err bitreich.org 70 i-reading/writing octets with READ-SEQUENCE and/or WRITE-SEQUENCE. The Err bitreich.org 70 i-resulting flexi stream is an input stream if and only if STREAM is an Err bitreich.org 70 i-input stream. Likewise, it's an output stream if and only if STREAM Err bitreich.org 70 i-is an output stream. The default for ELEMENT-TYPE is LW:SIMPLE-CHAR Err bitreich.org 70 i-on LispWorks and CHARACTER on other Lisps. EXTERNAL-FORMAT must be an Err bitreich.org 70 i-EXTERNAL-FORMAT object or a symbol or a list denoting such an object. Err bitreich.org 70 i-COLUMN is the initial column of the stream which is either a Err bitreich.org 70 i-non-negative integer or NIL. The COLUMN argument must only be used Err bitreich.org 70 i-for output streams. POSITION \(only used for input streams) should be Err bitreich.org 70 i-an integer and it denotes the position the stream is in - it will be Err bitreich.org 70 i-increased by one for each octet read. BOUND \(only used for input Err bitreich.org 70 i-streams) should be NIL or an integer. If BOUND is not NIL and Err bitreich.org 70 i-POSITION has gone beyond BOUND, then the stream will behave as if no Err bitreich.org 70 i-more input is available." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- ;; these arguments are ignored - they are only there to provide a Err bitreich.org 70 i- ;; meaningful parameter list for IDEs Err bitreich.org 70 i- (declare (ignore element-type column position bound)) Err bitreich.org 70 i- (unless (and (streamp stream) Err bitreich.org 70 i- (open-stream-p stream)) Err bitreich.org 70 i- (error "~S should have been an open stream." stream)) Err bitreich.org 70 i- (apply #'make-instance Err bitreich.org 70 i- ;; actual type depends on STREAM Err bitreich.org 70 i- (cond ((and (input-stream-p stream) Err bitreich.org 70 i- (output-stream-p stream)) Err bitreich.org 70 i- 'flexi-io-stream) Err bitreich.org 70 i- ((input-stream-p stream) Err bitreich.org 70 i- 'flexi-input-stream) Err bitreich.org 70 i- ((output-stream-p stream) Err bitreich.org 70 i- 'flexi-output-stream) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (error "~S is neither an input nor an output stream." stream))) Err bitreich.org 70 i- :stream stream Err bitreich.org 70 i- :flexi-stream-external-format external-format Err bitreich.org 70 i- (sans args :external-format))) Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/strings.lisp b/3rdparties/software/flexi-streams-20190107-git/strings.lisp /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/strings.lisp.gph bitreich.org 70 i@@ -1,82 +0,0 @@ Err bitreich.org 70 i-;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: FLEXI-STREAMS; Base: 10 -*- Err bitreich.org 70 i-;;; $Header: /usr/local/cvsrep/flexi-streams/strings.lisp,v 1.34 2008/05/26 10:55:08 edi Exp $ Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Copyright (c) 2005-2008, Dr. Edmund Weitz. All rights reserved. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Redistribution and use in source and binary forms, with or without Err bitreich.org 70 i-;;; modification, are permitted provided that the following conditions Err bitreich.org 70 i-;;; are met: Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions of source code must retain the above copyright Err bitreich.org 70 i-;;; notice, this list of conditions and the following disclaimer. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions in binary form must reproduce the above Err bitreich.org 70 i-;;; copyright notice, this list of conditions and the following Err bitreich.org 70 i-;;; disclaimer in the documentation and/or other materials Err bitreich.org 70 i-;;; provided with the distribution. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED Err bitreich.org 70 i-;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED Err bitreich.org 70 i-;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE Err bitreich.org 70 i-;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY Err bitreich.org 70 i-;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL Err bitreich.org 70 i-;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE Err bitreich.org 70 i-;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS Err bitreich.org 70 i-;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING Err bitreich.org 70 i-;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS Err bitreich.org 70 i-;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :flexi-streams) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun string-to-octets (string &key Err bitreich.org 70 i- (external-format :latin1) Err bitreich.org 70 i- (start 0) (end (length string))) Err bitreich.org 70 i- "Converts the Lisp string STRING from START to END to an array of Err bitreich.org 70 i-octets corresponding to the external format designated by Err bitreich.org 70 i-EXTERNAL-FORMAT. Err bitreich.org 70 i- Err bitreich.org 70 i-In spite of the name, STRING can be any sequence of characters, but Err bitreich.org 70 i-the function is optimized for strings." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (setq external-format (maybe-convert-external-format external-format)) Err bitreich.org 70 i- ;; the external format knows how to do it... Err bitreich.org 70 i- (string-to-octets* external-format string start end)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun octets-to-string (sequence &key Err bitreich.org 70 i- (external-format :latin1) Err bitreich.org 70 i- (start 0) (end (length sequence))) Err bitreich.org 70 i- "Converts the Lisp sequence SEQUENCE of octets from START to END to Err bitreich.org 70 i-a string using the external format designated by EXTERNAL-FORMAT. Err bitreich.org 70 i- Err bitreich.org 70 i-This function is optimized for the case of SEQUENCE being a vector. Err bitreich.org 70 i-Don't use lists if you're in a hurry." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end)) Err bitreich.org 70 i- (setq external-format (maybe-convert-external-format external-format)) Err bitreich.org 70 i- ;; the external format knows how to do it... Err bitreich.org 70 i- (octets-to-string* external-format sequence start end)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun octet-length (string &key (external-format :latin1) (start 0) (end (length string))) Err bitreich.org 70 i- "Returns the length of the substring of STRING from START to END in Err bitreich.org 70 i-octets if encoded using the external format EXTERNAL-FORMAT. Err bitreich.org 70 i- Err bitreich.org 70 i-In spite of the name, STRING can be any sequence of characters, but Err bitreich.org 70 i-the function is optimized for strings." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end)) Err bitreich.org 70 i- (setq external-format (maybe-convert-external-format external-format)) Err bitreich.org 70 i- (compute-number-of-octets external-format string start end)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun char-length (sequence &key (external-format :latin1) (start 0) (end (length sequence))) Err bitreich.org 70 i- "Kind of the inverse of OCTET-LENGTH. Returns the length of the Err bitreich.org 70 i-subsequence \(of octets) of SEQUENCE from START to END in characters Err bitreich.org 70 i-if decoded using the external format EXTERNAL-FORMAT. Note that this Err bitreich.org 70 i-function doesn't check for the validity of the data in SEQUENCE. Err bitreich.org 70 i- Err bitreich.org 70 i-This function is optimized for the case of SEQUENCE being a vector. Err bitreich.org 70 i-Don't use lists if you're in a hurry." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (declare (fixnum start end)) Err bitreich.org 70 i- (setq external-format (maybe-convert-external-format external-format)) Err bitreich.org 70 i- (compute-number-of-chars external-format sequence start end)) Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/README b/3rdparties/software/flexi-streams-20190107-git/test/README /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/README.gph bitreich.org 70 i@@ -1,4 +0,0 @@ Err bitreich.org 70 i-The reference files in this directory were created/converted using a Err bitreich.org 70 i-mixture of GNU recode and the native internationalization facilities Err bitreich.org 70 i-of LispWorks and AllegroCL, i.e. we're not testing FLEXI-STREAMS Err bitreich.org 70 i-against files created by itself (which would be kind of useless). Err bitreich.org 70 i-\ No newline at end of file Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/hebrew_latin8_cr.txt b/3rdparties/software/flexi-streams-20190107-git/test/hebrew_latin8_cr.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/hebrew_latin8_cr.txt.gph bitreich.org 70 i@@ -1 +0,0 @@ Err bitreich.org 70 i-: 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: - Err bitreich.org 70 i-\ No newline at end of file Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/hebrew_latin8_crlf.txt b/3rdparties/software/flexi-streams-20190107-git/test/hebrew_latin8_crlf.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/hebrew_latin8_crlf.txt.gph bitreich.org 70 i@@ -1,68 +0,0 @@ Err bitreich.org 70 i-: 1 Err bitreich.org 70 i- - 2 Err bitreich.org 70 i-: - Err bitreich.org 70 i-:- 3 Err bitreich.org 70 i- - - 4 Err bitreich.org 70 i-: Err bitreich.org 70 i- 5 Err bitreich.org 70 i-: - - Err bitreich.org 70 i- 6 Err bitreich.org 70 i-: Err bitreich.org 70 i- - 7 Err bitreich.org 70 i- Err bitreich.org 70 i-:- Err bitreich.org 70 i-- - 8 Err bitreich.org 70 i-: Err bitreich.org 70 i-- 9 Err bitreich.org 70 i-:- Err bitreich.org 70 i- 10 Err bitreich.org 70 i-:- Err bitreich.org 70 i- 11 Err bitreich.org 70 i-- - Err bitreich.org 70 i-:- Err bitreich.org 70 i- 12 Err bitreich.org 70 i- - - Err bitreich.org 70 i-:- Err bitreich.org 70 i-: - - 13 Err bitreich.org 70 i- 14 Err bitreich.org 70 i- Err bitreich.org 70 i-: Err bitreich.org 70 i-- 15 Err bitreich.org 70 i-:- Err bitreich.org 70 i-- - 16 Err bitreich.org 70 i- - Err bitreich.org 70 i-: Err bitreich.org 70 i- 17 Err bitreich.org 70 i-:- Err bitreich.org 70 i- 18 Err bitreich.org 70 i-:- Err bitreich.org 70 i-: - - 19 Err bitreich.org 70 i- 20 Err bitreich.org 70 i-: - - Err bitreich.org 70 i-- - 21 Err bitreich.org 70 i- Err bitreich.org 70 i-:- - Err bitreich.org 70 i- 22 Err bitreich.org 70 i-: - Err bitreich.org 70 i-: - - 23 Err bitreich.org 70 i- 24 Err bitreich.org 70 i-:- - Err bitreich.org 70 i-- - 25 Err bitreich.org 70 i- - Err bitreich.org 70 i-:- Err bitreich.org 70 i- 26 Err bitreich.org 70 i- Err bitreich.org 70 i-:- - - Err bitreich.org 70 i- - 27 Err bitreich.org 70 i-: Err bitreich.org 70 i- 28 Err bitreich.org 70 i- - Err bitreich.org 70 i-:- - Err bitreich.org 70 i- -- 29 Err bitreich.org 70 i-- -- - - Err bitreich.org 70 i-: - Err bitreich.org 70 i- - - 30 Err bitreich.org 70 i- -- - - Err bitreich.org 70 i-:- Err bitreich.org 70 i- - -- 31 Err bitreich.org 70 i-: - Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/hebrew_latin8_lf.txt b/3rdparties/software/flexi-streams-20190107-git/test/hebrew_latin8_lf.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/hebrew_latin8_lf.txt.gph bitreich.org 70 i@@ -1,68 +0,0 @@ Err bitreich.org 70 i-: 1 Err bitreich.org 70 i- - 2 Err bitreich.org 70 i-: - Err bitreich.org 70 i-:- 3 Err bitreich.org 70 i- - - 4 Err bitreich.org 70 i-: Err bitreich.org 70 i- 5 Err bitreich.org 70 i-: - - Err bitreich.org 70 i- 6 Err bitreich.org 70 i-: Err bitreich.org 70 i- - 7 Err bitreich.org 70 i- Err bitreich.org 70 i-:- Err bitreich.org 70 i-- - 8 Err bitreich.org 70 i-: Err bitreich.org 70 i-- 9 Err bitreich.org 70 i-:- Err bitreich.org 70 i- 10 Err bitreich.org 70 i-:- Err bitreich.org 70 i- 11 Err bitreich.org 70 i-- - Err bitreich.org 70 i-:- Err bitreich.org 70 i- 12 Err bitreich.org 70 i- - - Err bitreich.org 70 i-:- Err bitreich.org 70 i-: - - 13 Err bitreich.org 70 i- 14 Err bitreich.org 70 i- Err bitreich.org 70 i-: Err bitreich.org 70 i-- 15 Err bitreich.org 70 i-:- Err bitreich.org 70 i-- - 16 Err bitreich.org 70 i- - Err bitreich.org 70 i-: Err bitreich.org 70 i- 17 Err bitreich.org 70 i-:- Err bitreich.org 70 i- 18 Err bitreich.org 70 i-:- Err bitreich.org 70 i-: - - 19 Err bitreich.org 70 i- 20 Err bitreich.org 70 i-: - - Err bitreich.org 70 i-- - 21 Err bitreich.org 70 i- Err bitreich.org 70 i-:- - Err bitreich.org 70 i- 22 Err bitreich.org 70 i-: - Err bitreich.org 70 i-: - - 23 Err bitreich.org 70 i- 24 Err bitreich.org 70 i-:- - Err bitreich.org 70 i-- - 25 Err bitreich.org 70 i- - Err bitreich.org 70 i-:- Err bitreich.org 70 i- 26 Err bitreich.org 70 i- Err bitreich.org 70 i-:- - - Err bitreich.org 70 i- - 27 Err bitreich.org 70 i-: Err bitreich.org 70 i- 28 Err bitreich.org 70 i- - Err bitreich.org 70 i-:- - Err bitreich.org 70 i- -- 29 Err bitreich.org 70 i-- -- - - Err bitreich.org 70 i-: - Err bitreich.org 70 i- - - 30 Err bitreich.org 70 i- -- - - Err bitreich.org 70 i-:- Err bitreich.org 70 i- - -- 31 Err bitreich.org 70 i-: - Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/hebrew_utf8_cr.txt b/3rdparties/software/flexi-streams-20190107-git/test/hebrew_utf8_cr.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/hebrew_utf8_cr.txt.gph bitreich.org 70 i@@ -1 +0,0 @@ Err bitreich.org 70 i-:ץראה תאו םימשה תא םיהלא ארב תישארב א 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:יששה םוי רקב-יהיו בר Err bitreich.org 70 i-\ No newline at end of file Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/hebrew_utf8_crlf.txt b/3rdparties/software/flexi-streams-20190107-git/test/hebrew_utf8_crlf.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/hebrew_utf8_crlf.txt.gph bitreich.org 70 i@@ -1,68 +0,0 @@ Err bitreich.org 70 i-:ץראה תאו םימשה תא םיהלא ארב תישארב א 1 Err bitreich.org 70 i-םוהת ינפ-לע ךשחו והבו והת התיה ץראהו ב 2 Err bitreich.org 70 i-:םימה ינפ-לע תפחרמ םיהלא חורו Err bitreich.org 70 i-:רוא-יהיו רוא יהי םיהלא רמאיו ג 3 Err bitreich.org 70 i-םיהלא לדביו בוט-יכ רואה-תא םיהלא אריו ד 4 Err bitreich.org 70 i-:ךשחה ןיבו רואה ןיב Err bitreich.org 70 i-הליל ארק ךשחלו םוי רואל םיהלא ארקיו ה 5 Err bitreich.org 70 i-:דחא םוי רקב-יהיו ברע-יהיו Err bitreich.org 70 i-יהיו םימה ךותב עיקר יהי םיהלא רמאיו ו 6 Err bitreich.org 70 i-:םימל םימ ןיב לידבמ Err bitreich.org 70 i-רשא םימה ןיב לדביו עיקרה-תא םיהלא שעיו ז 7 Err bitreich.org 70 i-עיקרל לעמ רשא םימה ןיבו עיקרל תחתמ Err bitreich.org 70 i-:ןכ-יהיו Err bitreich.org 70 i-רקב-יהיו ברע-יהיו םימש עיקרל םיהלא ארקיו ח 8 Err bitreich.org 70 i-:ינש םוי Err bitreich.org 70 i-םוקמ-לא םימשה תחתמ םימה ווקי םיהלא רמאיו ט 9 Err bitreich.org 70 i-:ןכ-יהיו השביה הארתו דחא Err bitreich.org 70 i-ארק םימה הוקמלו ץרא השביל םיהלא ארקיו י 10 Err bitreich.org 70 i-:בוט-יכ םיהלא אריו םימי Err bitreich.org 70 i-ערז עירזמ בשע אשד ץראה אשדת םיהלא רמאיו אי 11 Err bitreich.org 70 i-ץראה-לע וב-וערז רשא ונימל ירפ השע ירפ ץע Err bitreich.org 70 i-:ןכ-יהיו Err bitreich.org 70 i-ץעו והנימל ערז עירזמ בשע אשד ץראה אצותו בי 12 Err bitreich.org 70 i-םיהלא אריו והנימל וב-וערז רשא ירפ-השע Err bitreich.org 70 i-:בוט-יכ Err bitreich.org 70 i-:ישילש םוי רקב-יהיו ברע-יהיו גי 13 Err bitreich.org 70 i-לידבהל םימשה עיקרב תראמ יהי םיהלא רמאיו די 14 Err bitreich.org 70 i-םידעומלו תתאל ויהו הלילה ןיבו םויה ןיב Err bitreich.org 70 i-:םינשו םימילו Err bitreich.org 70 i-ץראה-לע ריאהל םימשה עיקרב תרואמל ויהו וט 15 Err bitreich.org 70 i-:ןכ-יהיו Err bitreich.org 70 i-רואמה-תא םילדגה תראמה ינש-תא םיהלא שעיו זט 16 Err bitreich.org 70 i-תלשממל ןטקה רואמה-תאו םויה תלשממל לדגה Err bitreich.org 70 i-:םיבכוכה תאו הלילה Err bitreich.org 70 i-ריאהל םימשה עיקרב םיהלא םתא ןתיו זי 17 Err bitreich.org 70 i-:ץראה-לע Err bitreich.org 70 i-ןיבו רואה ןיב לידבהלו הלילבו םויב לשמלו חי 18 Err bitreich.org 70 i-:בוט-יכ םיהלא אריו ךשחה Err bitreich.org 70 i-:יעיבר םוי רקב-יהיו ברע-יהיו טי 19 Err bitreich.org 70 i-ףועו היח שפנ ץרש םימה וצרשי םיהלא רמאיו כ 20 Err bitreich.org 70 i-:םימשה עיקר ינפ-לע ץראה-לע ףפועי Err bitreich.org 70 i-שפנ-לכ תאו םילדגה םנינתה-תא םיהלא ארביו אכ 21 Err bitreich.org 70 i-תאו םהנימל םימה וצרש רשא תשמרה היחה Err bitreich.org 70 i-:בוט-יכ םיהלא אריו והנימל ףנכ ףוע-לכ Err bitreich.org 70 i-ואלמו וברו ורפ רמאל םיהלא םתא ךרביו בכ 22 Err bitreich.org 70 i-:ץראב ברי ףועהו םימיב םימה-תא Err bitreich.org 70 i-:ישימח םוי רקב-יהיו ברע-יהיו גכ 23 Err bitreich.org 70 i-המהב הנימל היח שפנ ץראה אצות םיהלא רמאיו דכ 24 Err bitreich.org 70 i-:ןכ-יהיו הנימל ץרא-ותיחו שמרו Err bitreich.org 70 i-המהבה-תאו הנימל ץראה תיח-תא םיהלא שעיו הכ 25 Err bitreich.org 70 i-םיהלא אריו והנימל המדאה שמר-לכ תאו הנימל Err bitreich.org 70 i-:בוט-יכ Err bitreich.org 70 i-ונתומדכ ונמלצב םדא השענ םיהלא רמאיו וכ 26 Err bitreich.org 70 i-המהבבו םימשה ףועבו םיה תגדב ודריו Err bitreich.org 70 i-:ץראה-לע שמרה שמרה-לכבו ץראה-לכבו Err bitreich.org 70 i-ארב םיהלא םלצב ומלצב םדאה-תא םיהלא ארביו זכ 27 Err bitreich.org 70 i-:םתא ארב הבקנו רכז ותא Err bitreich.org 70 i-וברו ורפ םיהלא םהל רמאיו םיהלא םתא ךרביו חכ 28 Err bitreich.org 70 i-ףועבו םיה תגדב ודרו השבכו ץראה-תא ואלמו Err bitreich.org 70 i-:ץראה-לע תשמרה היח-לכבו םימשה Err bitreich.org 70 i-ערז בשע-לכ-תא םכל יתתנ הנה םיהלא רמאיו טכ 29 Err bitreich.org 70 i-וב-רשא ץעה-לכ-תאו ץראה-לכ ינפ-לע רשא ערז Err bitreich.org 70 i-:הלכאל היהי םכל ערז ערז ץע-ירפ Err bitreich.org 70 i-שמור לכלו םימשה ףוע-לכלו ץראה תיח-לכלו ל 30 Err bitreich.org 70 i-בשע קרי-לכ-תא היח שפנ וב-רשא ץראה-לע Err bitreich.org 70 i-:ןכ-יהיו הלכאל Err bitreich.org 70 i-דאמ בוט-הנהו השע רשא-לכ-תא םיהלא אריו אל 31 Err bitreich.org 70 i-:יששה םוי רקב-יהיו בר Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/hebrew_utf8_lf.txt b/3rdparties/software/flexi-streams-20190107-git/test/hebrew_utf8_lf.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/hebrew_utf8_lf.txt.gph bitreich.org 70 i@@ -1,68 +0,0 @@ Err bitreich.org 70 i-:ץראה תאו םימשה תא םיהלא ארב תישארב א 1 Err bitreich.org 70 i-םוהת ינפ-לע ךשחו והבו והת התיה ץראהו ב 2 Err bitreich.org 70 i-:םימה ינפ-לע תפחרמ םיהלא חורו Err bitreich.org 70 i-:רוא-יהיו רוא יהי םיהלא רמאיו ג 3 Err bitreich.org 70 i-םיהלא לדביו בוט-יכ רואה-תא םיהלא אריו ד 4 Err bitreich.org 70 i-:ךשחה ןיבו רואה ןיב Err bitreich.org 70 i-הליל ארק ךשחלו םוי רואל םיהלא ארקיו ה 5 Err bitreich.org 70 i-:דחא םוי רקב-יהיו ברע-יהיו Err bitreich.org 70 i-יהיו םימה ךותב עיקר יהי םיהלא רמאיו ו 6 Err bitreich.org 70 i-:םימל םימ ןיב לידבמ Err bitreich.org 70 i-רשא םימה ןיב לדביו עיקרה-תא םיהלא שעיו ז 7 Err bitreich.org 70 i-עיקרל לעמ רשא םימה ןיבו עיקרל תחתמ Err bitreich.org 70 i-:ןכ-יהיו Err bitreich.org 70 i-רקב-יהיו ברע-יהיו םימש עיקרל םיהלא ארקיו ח 8 Err bitreich.org 70 i-:ינש םוי Err bitreich.org 70 i-םוקמ-לא םימשה תחתמ םימה ווקי םיהלא רמאיו ט 9 Err bitreich.org 70 i-:ןכ-יהיו השביה הארתו דחא Err bitreich.org 70 i-ארק םימה הוקמלו ץרא השביל םיהלא ארקיו י 10 Err bitreich.org 70 i-:בוט-יכ םיהלא אריו םימי Err bitreich.org 70 i-ערז עירזמ בשע אשד ץראה אשדת םיהלא רמאיו אי 11 Err bitreich.org 70 i-ץראה-לע וב-וערז רשא ונימל ירפ השע ירפ ץע Err bitreich.org 70 i-:ןכ-יהיו Err bitreich.org 70 i-ץעו והנימל ערז עירזמ בשע אשד ץראה אצותו בי 12 Err bitreich.org 70 i-םיהלא אריו והנימל וב-וערז רשא ירפ-השע Err bitreich.org 70 i-:בוט-יכ Err bitreich.org 70 i-:ישילש םוי רקב-יהיו ברע-יהיו גי 13 Err bitreich.org 70 i-לידבהל םימשה עיקרב תראמ יהי םיהלא רמאיו די 14 Err bitreich.org 70 i-םידעומלו תתאל ויהו הלילה ןיבו םויה ןיב Err bitreich.org 70 i-:םינשו םימילו Err bitreich.org 70 i-ץראה-לע ריאהל םימשה עיקרב תרואמל ויהו וט 15 Err bitreich.org 70 i-:ןכ-יהיו Err bitreich.org 70 i-רואמה-תא םילדגה תראמה ינש-תא םיהלא שעיו זט 16 Err bitreich.org 70 i-תלשממל ןטקה רואמה-תאו םויה תלשממל לדגה Err bitreich.org 70 i-:םיבכוכה תאו הלילה Err bitreich.org 70 i-ריאהל םימשה עיקרב םיהלא םתא ןתיו זי 17 Err bitreich.org 70 i-:ץראה-לע Err bitreich.org 70 i-ןיבו רואה ןיב לידבהלו הלילבו םויב לשמלו חי 18 Err bitreich.org 70 i-:בוט-יכ םיהלא אריו ךשחה Err bitreich.org 70 i-:יעיבר םוי רקב-יהיו ברע-יהיו טי 19 Err bitreich.org 70 i-ףועו היח שפנ ץרש םימה וצרשי םיהלא רמאיו כ 20 Err bitreich.org 70 i-:םימשה עיקר ינפ-לע ץראה-לע ףפועי Err bitreich.org 70 i-שפנ-לכ תאו םילדגה םנינתה-תא םיהלא ארביו אכ 21 Err bitreich.org 70 i-תאו םהנימל םימה וצרש רשא תשמרה היחה Err bitreich.org 70 i-:בוט-יכ םיהלא אריו והנימל ףנכ ףוע-לכ Err bitreich.org 70 i-ואלמו וברו ורפ רמאל םיהלא םתא ךרביו בכ 22 Err bitreich.org 70 i-:ץראב ברי ףועהו םימיב םימה-תא Err bitreich.org 70 i-:ישימח םוי רקב-יהיו ברע-יהיו גכ 23 Err bitreich.org 70 i-המהב הנימל היח שפנ ץראה אצות םיהלא רמאיו דכ 24 Err bitreich.org 70 i-:ןכ-יהיו הנימל ץרא-ותיחו שמרו Err bitreich.org 70 i-המהבה-תאו הנימל ץראה תיח-תא םיהלא שעיו הכ 25 Err bitreich.org 70 i-םיהלא אריו והנימל המדאה שמר-לכ תאו הנימל Err bitreich.org 70 i-:בוט-יכ Err bitreich.org 70 i-ונתומדכ ונמלצב םדא השענ םיהלא רמאיו וכ 26 Err bitreich.org 70 i-המהבבו םימשה ףועבו םיה תגדב ודריו Err bitreich.org 70 i-:ץראה-לע שמרה שמרה-לכבו ץראה-לכבו Err bitreich.org 70 i-ארב םיהלא םלצב ומלצב םדאה-תא םיהלא ארביו זכ 27 Err bitreich.org 70 i-:םתא ארב הבקנו רכז ותא Err bitreich.org 70 i-וברו ורפ םיהלא םהל רמאיו םיהלא םתא ךרביו חכ 28 Err bitreich.org 70 i-ףועבו םיה תגדב ודרו השבכו ץראה-תא ואלמו Err bitreich.org 70 i-:ץראה-לע תשמרה היח-לכבו םימשה Err bitreich.org 70 i-ערז בשע-לכ-תא םכל יתתנ הנה םיהלא רמאיו טכ 29 Err bitreich.org 70 i-וב-רשא ץעה-לכ-תאו ץראה-לכ ינפ-לע רשא ערז Err bitreich.org 70 i-:הלכאל היהי םכל ערז ערז ץע-ירפ Err bitreich.org 70 i-שמור לכלו םימשה ףוע-לכלו ץראה תיח-לכלו ל 30 Err bitreich.org 70 i-בשע קרי-לכ-תא היח שפנ וב-רשא ץראה-לע Err bitreich.org 70 i-:ןכ-יהיו הלכאל Err bitreich.org 70 i-דאמ בוט-הנהו השע רשא-לכ-תא םיהלא אריו אל 31 Err bitreich.org 70 i-:יששה םוי רקב-יהיו בר Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/kafka_cp1252_cr.txt b/3rdparties/software/flexi-streams-20190107-git/test/kafka_cp1252_cr.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/kafka_cp1252_cr.txt.gph bitreich.org 70 i@@ -1 +0,0 @@ Err bitreich.org 70 i-Als Gregor Samsa eines Morgens aus unruhigen Trumen erwachte, fand er sich in seinem Bett zu einem ungeheueren Ungeziefer verwandelt. Er lag auf seinem panzerartig harten Rcken und sah, wenn er den Kopf ein wenig hob, seinen gewlbten, braunen, von bogenfrmigen Versteifungen geteilten Bauch, auf dessen Hhe sich die Bettdecke, zum gnzlichen Niedergleiten bereit, kaum noch erhalten konnte. Seine vielen, im Vergleich zu seinem sonstigen Umfang klglich dnnen Beine flimmerten ihm hilflos vor den Augen.Was ist mit mir geschehen?, dachte er. Es war kein Traum. Sein Zimmer, ein richtiges, nur etwas zu kleines Menschenzimmer, lag ruhig zwischen den vier wohlbekannten Wnden. ber dem Tisch, auf dem eine auseinandergepackte Musterkollektion von Tuchwaren ausgebreitet war - Samsa war Reisender - hing das Bild, das er vor kurzem aus einer illustrierten Zeitschrift ausgeschnitten und in einem hbschen, vergoldeten Rahmen untergebracht hatte. Es stellte eine Dame dar, die mit einem Pelzhut und einer Pelzboa versehen, aufrecht dasa und einen schweren Pelzmuff, in dem ihr ganzer Unterarm verschwunden war, dem Beschauer entgegenhob.Gregors Blick richtete sich dann zum Fenster, und das trbe Wetter - man hrte Regentropfen auf das Fensterblech aufschlagen - machte ihn ganz melancholisch. Wie wre es, wenn ich noch ein wenig weiterschliefe und alle Narrheiten verge, dachte er, aber das war gnzlich undurchfhrbar, denn er war gewhnt, auf der rechten Seite zu schlafen, konnte sich aber in seinem gegenwrtigen Zustand nicht in diese Lage bringen. Mit welcher Kraft er sich auch auf die rechte Seite warf, immer wieder schaukelte er in die Rckenlage zurck. Er versuchte es wohl hundertmal, schlo die Augen, um die zappelnden Beine nicht sehen zu mssen, und lie erst ab, als er in der Seite einen noch nie gefhlten, leichten, dumpfen Schmerz zu fhlen begann.Ach Gott, dachte er, was fr einen anstrengenden Beruf habe ich gewhlt! Tag aus, Tag ein auf der Reise. Die geschftlichen Aufregungen sind viel grer, als im eigentlichen Geschft zu Hause, und auerdem ist mir noch diese Plage des Reisens auferlegt, die Sorgen um die Zuganschlsse, das unregelmige, schlechte Essen, ein immer wechselnder, nie andauernder, nie herzlich werdender menschlicher Verkehr. Der Teufel soll das alles holen! Er fhlte ein leichtes Jucken oben auf dem Bauch; schob sich auf dem Rcken langsam nher zum Bettpfosten, um den Kopf besser heben zu knnen; fand die juckende Stelle, die mit lauter kleinen weien Pnktchen besetzt war, die er nicht zu beurteilen verstand; und wollte mit einem Bein die Stelle betasten, zog es aber gleich zurck, denn bei der Berhrung umwehten ihn Klteschauer.Er glitt wieder in seine frhere Lage zurck. Dies frhzeitige Aufstehen, dachte er, macht einen ganz bldsinnig. Der Mensch mu seinen Schlaf haben. Andere Reisende leben wie Haremsfrauen. Wenn ich zum Beispiel im Laufe des Vormittags ins Gasthaus zurckgehe, um die erlangten Auftrge zu berschreiben, sitzen diese Herren erst beim Frhstck. Das sollte ich bei meinem Chef versuchen; ich wrde auf der Stelle hinausfliegen. Wer wei brigens, ob das nicht sehr gut fr mich wre. Wenn ich mich nicht wegen meiner Eltern zurckhielte, ich htte lngst gekndigt, ich wre vor den Chef hin getreten und htte ihm meine Meinung von Grund des Herzens aus gesagt. Vom Pult htte er fallen mssen! Es ist auch eine sonderbare Art, sich auf das Pult zu setzen und von der Hhe herab mit dem Angestellten zu reden, der berdies wegen der Schwerhrigkeit des Chefs ganz nahe herantreten mu. Nun, die Hoffnung ist noch nicht gnzlich aufgegeben; habe ich einmal das Geld beisammen, um die Schuld der Eltern an ihn abzuzahlen - es drfte noch fnf bis sechs Jahre dauern - , mache ich die Sache unbedingt. Dann wird der groe Schnitt gemacht. Vorlufig allerdings mu ich aufstehen, denn mein Zug fhrt um fnf.Und er sah zur Weckuhr hinber, die auf dem Kasten tickte. Himmlischer Vater!, dachte er. Es war halb sieben Uhr, und die Zeiger gingen ruhig vorwrts, es war sogar halb vorber, es nherte sich schon dreiviertel. Sollte der Wecker nicht gelutet haben? Man sah vom Bett aus, da er auf vier Uhr richtig eingestellt war; gewi hatte er auch gelutet. Ja, aber war es mglich, dieses mbelerschtternde Luten ruhig zu verschlafen? Nun, ruhig hatte er ja nicht geschlafen, aber wahrscheinlich desto fester. Was aber sollte er jetzt tun? Der nchste Zug ging um sieben Uhr; um den einzuholen, htte er sich unsinnig beeilen mssen, und die Kollektion war noch nicht eingepackt, und er selbst fhlte sich durchaus nicht besonders frisch und beweglich. Und selbst wenn er den Zug einholte, ein Donnerwetter des Chefs war nicht zu vermeiden, denn der Geschftsdiener hatte beim Fnfuhrzug gewartet und die Meldung von seiner Versumnis lngst erstattet. Es war eine Kreatur des Chefs, ohne Rckgrat und Verstand. Wie nun, wenn er sich krank meldete? Das wre aber uerst peinlich und verdchtig, denn Gregor war whrend seines fnfjhrigen Dienstes noch nicht einmal krank gewesen. Gewi wrde der Chef mit dem Krankenkassenarzt kommen, wrde den Eltern wegen des faulen Sohnes Vorwrfe machen und alle Einwnde durch den Hinweis auf den Krankenkassenarzt abschneiden, fr den es ja berhaupt nur ganz gesunde, aber arbeitsscheue Menschen gibt. Und htte er brigens in diesem Falle so ganz unrecht? Gregor fhlte sich tatschlich, abgesehen von einer nach dem langen Schlaf wirklich berflssigen Schlfrigkeit, ganz wohl und hatte sogar einen besonders krftigen Hunger. Err bitreich.org 70 i-\ No newline at end of file Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/kafka_cp1252_crlf.txt b/3rdparties/software/flexi-streams-20190107-git/test/kafka_cp1252_crlf.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/kafka_cp1252_crlf.txt.gph bitreich.org 70 i@@ -1,11 +0,0 @@ Err bitreich.org 70 i-Als Gregor Samsa eines Morgens aus unruhigen Trumen erwachte, fand er sich in seinem Bett zu einem ungeheueren Ungeziefer verwandelt. Er lag auf seinem panzerartig harten Rcken und sah, wenn er den Kopf ein wenig hob, seinen gewlbten, braunen, von bogenfrmigen Versteifungen geteilten Bauch, auf dessen Hhe sich die Bettdecke, zum gnzlichen Niedergleiten bereit, kaum noch erhalten konnte. Seine vielen, im Vergleich zu seinem sonstigen Umfang klglich dnnen Beine flimmerten ihm hilflos vor den Augen. Err bitreich.org 70 i- Err bitreich.org 70 i-Was ist mit mir geschehen?, dachte er. Es war kein Traum. Sein Zimmer, ein richtiges, nur etwas zu kleines Menschenzimmer, lag ruhig zwischen den vier wohlbekannten Wnden. ber dem Tisch, auf dem eine auseinandergepackte Musterkollektion von Tuchwaren ausgebreitet war - Samsa war Reisender - hing das Bild, das er vor kurzem aus einer illustrierten Zeitschrift ausgeschnitten und in einem hbschen, vergoldeten Rahmen untergebracht hatte. Es stellte eine Dame dar, die mit einem Pelzhut und einer Pelzboa versehen, aufrecht dasa und einen schweren Pelzmuff, in dem ihr ganzer Unterarm verschwunden war, dem Beschauer entgegenhob. Err bitreich.org 70 i- Err bitreich.org 70 i-Gregors Blick richtete sich dann zum Fenster, und das trbe Wetter - man hrte Regentropfen auf das Fensterblech aufschlagen - machte ihn ganz melancholisch. Wie wre es, wenn ich noch ein wenig weiterschliefe und alle Narrheiten verge, dachte er, aber das war gnzlich undurchfhrbar, denn er war gewhnt, auf der rechten Seite zu schlafen, konnte sich aber in seinem gegenwrtigen Zustand nicht in diese Lage bringen. Mit welcher Kraft er sich auch auf die rechte Seite warf, immer wieder schaukelte er in die Rckenlage zurck. Er versuchte es wohl hundertmal, schlo die Augen, um die zappelnden Beine nicht sehen zu mssen, und lie erst ab, als er in der Seite einen noch nie gefhlten, leichten, dumpfen Schmerz zu fhlen begann. Err bitreich.org 70 i- Err bitreich.org 70 i-Ach Gott, dachte er, was fr einen anstrengenden Beruf habe ich gewhlt! Tag aus, Tag ein auf der Reise. Die geschftlichen Aufregungen sind viel grer, als im eigentlichen Geschft zu Hause, und auerdem ist mir noch diese Plage des Reisens auferlegt, die Sorgen um die Zuganschlsse, das unregelmige, schlechte Essen, ein immer wechselnder, nie andauernder, nie herzlich werdender menschlicher Verkehr. Der Teufel soll das alles holen! Er fhlte ein leichtes Jucken oben auf dem Bauch; schob sich auf dem Rcken langsam nher zum Bettpfosten, um den Kopf besser heben zu knnen; fand die juckende Stelle, die mit lauter kleinen weien Pnktchen besetzt war, die er nicht zu beurteilen verstand; und wollte mit einem Bein die Stelle betasten, zog es aber gleich zurck, denn bei der Berhrung umwehten ihn Klteschauer. Err bitreich.org 70 i- Err bitreich.org 70 i-Er glitt wieder in seine frhere Lage zurck. Dies frhzeitige Aufstehen, dachte er, macht einen ganz bldsinnig. Der Mensch mu seinen Schlaf haben. Andere Reisende leben wie Haremsfrauen. Wenn ich zum Beispiel im Laufe des Vormittags ins Gasthaus zurckgehe, um die erlangten Auftrge zu berschreiben, sitzen diese Herren erst beim Frhstck. Das sollte ich bei meinem Chef versuchen; ich wrde auf der Stelle hinausfliegen. Wer wei brigens, ob das nicht sehr gut fr mich wre. Wenn ich mich nicht wegen meiner Eltern zurckhielte, ich htte lngst gekndigt, ich wre vor den Chef hin getreten und htte ihm meine Meinung von Grund des Herzens aus gesagt. Vom Pult htte er fallen mssen! Es ist auch eine sonderbare Art, sich auf das Pult zu setzen und von der Hhe herab mit dem Angestellten zu reden, der berdies wegen der Schwerhrigkeit des Chefs ganz nahe herantreten mu. Nun, die Hoffnung ist noch nicht gnzlich aufgegeben; habe ich einmal das Geld beisammen, um die Schuld der Eltern an ihn abzuzahlen - es drfte noch fnf bis sechs Jahre dauern - , mache ich die Sache unbedingt. Dann wird der groe Schnitt gemacht. Vorlufig allerdings mu ich aufstehen, denn mein Zug fhrt um fnf. Err bitreich.org 70 i- Err bitreich.org 70 i-Und er sah zur Weckuhr hinber, die auf dem Kasten tickte. Himmlischer Vater!, dachte er. Es war halb sieben Uhr, und die Zeiger gingen ruhig vorwrts, es war sogar halb vorber, es nherte sich schon dreiviertel. Sollte der Wecker nicht gelutet haben? Man sah vom Bett aus, da er auf vier Uhr richtig eingestellt war; gewi hatte er auch gelutet. Ja, aber war es mglich, dieses mbelerschtternde Luten ruhig zu verschlafen? Nun, ruhig hatte er ja nicht geschlafen, aber wahrscheinlich desto fester. Was aber sollte er jetzt tun? Der nchste Zug ging um sieben Uhr; um den einzuholen, htte er sich unsinnig beeilen mssen, und die Kollektion war noch nicht eingepackt, und er selbst fhlte sich durchaus nicht besonders frisch und beweglich. Und selbst wenn er den Zug einholte, ein Donnerwetter des Chefs war nicht zu vermeiden, denn der Geschftsdiener hatte beim Fnfuhrzug gewartet und die Meldung von seiner Versumnis lngst erstattet. Es war eine Kreatur des Chefs, ohne Rckgrat und Verstand. Wie nun, wenn er sich krank meldete? Das wre aber uerst peinlich und verdchtig, denn Gregor war whrend seines fnfjhrigen Dienstes noch nicht einmal krank gewesen. Gewi wrde der Chef mit dem Krankenkassenarzt kommen, wrde den Eltern wegen des faulen Sohnes Vorwrfe machen und alle Einwnde durch den Hinweis auf den Krankenkassenarzt abschneiden, fr den es ja berhaupt nur ganz gesunde, aber arbeitsscheue Menschen gibt. Und htte er brigens in diesem Falle so ganz unrecht? Gregor fhlte sich tatschlich, abgesehen von einer nach dem langen Schlaf wirklich berflssigen Schlfrigkeit, ganz wohl und hatte sogar einen besonders krftigen Hunger. Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/kafka_cp1252_lf.txt b/3rdparties/software/flexi-streams-20190107-git/test/kafka_cp1252_lf.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/kafka_cp1252_lf.txt.gph bitreich.org 70 i@@ -1,11 +0,0 @@ Err bitreich.org 70 i-Als Gregor Samsa eines Morgens aus unruhigen Trumen erwachte, fand er sich in seinem Bett zu einem ungeheueren Ungeziefer verwandelt. Er lag auf seinem panzerartig harten Rcken und sah, wenn er den Kopf ein wenig hob, seinen gewlbten, braunen, von bogenfrmigen Versteifungen geteilten Bauch, auf dessen Hhe sich die Bettdecke, zum gnzlichen Niedergleiten bereit, kaum noch erhalten konnte. Seine vielen, im Vergleich zu seinem sonstigen Umfang klglich dnnen Beine flimmerten ihm hilflos vor den Augen. Err bitreich.org 70 i- Err bitreich.org 70 i-Was ist mit mir geschehen?, dachte er. Es war kein Traum. Sein Zimmer, ein richtiges, nur etwas zu kleines Menschenzimmer, lag ruhig zwischen den vier wohlbekannten Wnden. ber dem Tisch, auf dem eine auseinandergepackte Musterkollektion von Tuchwaren ausgebreitet war - Samsa war Reisender - hing das Bild, das er vor kurzem aus einer illustrierten Zeitschrift ausgeschnitten und in einem hbschen, vergoldeten Rahmen untergebracht hatte. Es stellte eine Dame dar, die mit einem Pelzhut und einer Pelzboa versehen, aufrecht dasa und einen schweren Pelzmuff, in dem ihr ganzer Unterarm verschwunden war, dem Beschauer entgegenhob. Err bitreich.org 70 i- Err bitreich.org 70 i-Gregors Blick richtete sich dann zum Fenster, und das trbe Wetter - man hrte Regentropfen auf das Fensterblech aufschlagen - machte ihn ganz melancholisch. Wie wre es, wenn ich noch ein wenig weiterschliefe und alle Narrheiten verge, dachte er, aber das war gnzlich undurchfhrbar, denn er war gewhnt, auf der rechten Seite zu schlafen, konnte sich aber in seinem gegenwrtigen Zustand nicht in diese Lage bringen. Mit welcher Kraft er sich auch auf die rechte Seite warf, immer wieder schaukelte er in die Rckenlage zurck. Er versuchte es wohl hundertmal, schlo die Augen, um die zappelnden Beine nicht sehen zu mssen, und lie erst ab, als er in der Seite einen noch nie gefhlten, leichten, dumpfen Schmerz zu fhlen begann. Err bitreich.org 70 i- Err bitreich.org 70 i-Ach Gott, dachte er, was fr einen anstrengenden Beruf habe ich gewhlt! Tag aus, Tag ein auf der Reise. Die geschftlichen Aufregungen sind viel grer, als im eigentlichen Geschft zu Hause, und auerdem ist mir noch diese Plage des Reisens auferlegt, die Sorgen um die Zuganschlsse, das unregelmige, schlechte Essen, ein immer wechselnder, nie andauernder, nie herzlich werdender menschlicher Verkehr. Der Teufel soll das alles holen! Er fhlte ein leichtes Jucken oben auf dem Bauch; schob sich auf dem Rcken langsam nher zum Bettpfosten, um den Kopf besser heben zu knnen; fand die juckende Stelle, die mit lauter kleinen weien Pnktchen besetzt war, die er nicht zu beurteilen verstand; und wollte mit einem Bein die Stelle betasten, zog es aber gleich zurck, denn bei der Berhrung umwehten ihn Klteschauer. Err bitreich.org 70 i- Err bitreich.org 70 i-Er glitt wieder in seine frhere Lage zurck. Dies frhzeitige Aufstehen, dachte er, macht einen ganz bldsinnig. Der Mensch mu seinen Schlaf haben. Andere Reisende leben wie Haremsfrauen. Wenn ich zum Beispiel im Laufe des Vormittags ins Gasthaus zurckgehe, um die erlangten Auftrge zu berschreiben, sitzen diese Herren erst beim Frhstck. Das sollte ich bei meinem Chef versuchen; ich wrde auf der Stelle hinausfliegen. Wer wei brigens, ob das nicht sehr gut fr mich wre. Wenn ich mich nicht wegen meiner Eltern zurckhielte, ich htte lngst gekndigt, ich wre vor den Chef hin getreten und htte ihm meine Meinung von Grund des Herzens aus gesagt. Vom Pult htte er fallen mssen! Es ist auch eine sonderbare Art, sich auf das Pult zu setzen und von der Hhe herab mit dem Angestellten zu reden, der berdies wegen der Schwerhrigkeit des Chefs ganz nahe herantreten mu. Nun, die Hoffnung ist noch nicht gnzlich aufgegeben; habe ich einmal das Geld beisammen, um die Schuld der Eltern an ihn abzuzahlen - es drfte noch fnf bis sechs Jahre dauern - , mache ich die Sache unbedingt. Dann wird der groe Schnitt gemacht. Vorlufig allerdings mu ich aufstehen, denn mein Zug fhrt um fnf. Err bitreich.org 70 i- Err bitreich.org 70 i-Und er sah zur Weckuhr hinber, die auf dem Kasten tickte. Himmlischer Vater!, dachte er. Es war halb sieben Uhr, und die Zeiger gingen ruhig vorwrts, es war sogar halb vorber, es nherte sich schon dreiviertel. Sollte der Wecker nicht gelutet haben? Man sah vom Bett aus, da er auf vier Uhr richtig eingestellt war; gewi hatte er auch gelutet. Ja, aber war es mglich, dieses mbelerschtternde Luten ruhig zu verschlafen? Nun, ruhig hatte er ja nicht geschlafen, aber wahrscheinlich desto fester. Was aber sollte er jetzt tun? Der nchste Zug ging um sieben Uhr; um den einzuholen, htte er sich unsinnig beeilen mssen, und die Kollektion war noch nicht eingepackt, und er selbst fhlte sich durchaus nicht besonders frisch und beweglich. Und selbst wenn er den Zug einholte, ein Donnerwetter des Chefs war nicht zu vermeiden, denn der Geschftsdiener hatte beim Fnfuhrzug gewartet und die Meldung von seiner Versumnis lngst erstattet. Es war eine Kreatur des Chefs, ohne Rckgrat und Verstand. Wie nun, wenn er sich krank meldete? Das wre aber uerst peinlich und verdchtig, denn Gregor war whrend seines fnfjhrigen Dienstes noch nicht einmal krank gewesen. Gewi wrde der Chef mit dem Krankenkassenarzt kommen, wrde den Eltern wegen des faulen Sohnes Vorwrfe machen und alle Einwnde durch den Hinweis auf den Krankenkassenarzt abschneiden, fr den es ja berhaupt nur ganz gesunde, aber arbeitsscheue Menschen gibt. Und htte er brigens in diesem Falle so ganz unrecht? Gregor fhlte sich tatschlich, abgesehen von einer nach dem langen Schlaf wirklich berflssigen Schlfrigkeit, ganz wohl und hatte sogar einen besonders krftigen Hunger. Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/kafka_latin1_cr.txt b/3rdparties/software/flexi-streams-20190107-git/test/kafka_latin1_cr.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/kafka_latin1_cr.txt.gph bitreich.org 70 i@@ -1 +0,0 @@ Err bitreich.org 70 i-Als Gregor Samsa eines Morgens aus unruhigen Trumen erwachte, fand er sich in seinem Bett zu einem ungeheueren Ungeziefer verwandelt. Er lag auf seinem panzerartig harten Rcken und sah, wenn er den Kopf ein wenig hob, seinen gewlbten, braunen, von bogenfrmigen Versteifungen geteilten Bauch, auf dessen Hhe sich die Bettdecke, zum gnzlichen Niedergleiten bereit, kaum noch erhalten konnte. Seine vielen, im Vergleich zu seinem sonstigen Umfang klglich dnnen Beine flimmerten ihm hilflos vor den Augen.Was ist mit mir geschehen?, dachte er. Es war kein Traum. Sein Zimmer, ein richtiges, nur etwas zu kleines Menschenzimmer, lag ruhig zwischen den vier wohlbekannten Wnden. ber dem Tisch, auf dem eine auseinandergepackte Musterkollektion von Tuchwaren ausgebreitet war - Samsa war Reisender - hing das Bild, das er vor kurzem aus einer illustrierten Zeitschrift ausgeschnitten und in einem hbschen, vergoldeten Rahmen untergebracht hatte. Es stellte eine Dame dar, die mit einem Pelzhut und einer Pelzboa versehen, aufrecht dasa und einen schweren Pelzmuff, in dem ihr ganzer Unterarm verschwunden war, dem Beschauer entgegenhob.Gregors Blick richtete sich dann zum Fenster, und das trbe Wetter - man hrte Regentropfen auf das Fensterblech aufschlagen - machte ihn ganz melancholisch. Wie wre es, wenn ich noch ein wenig weiterschliefe und alle Narrheiten verge, dachte er, aber das war gnzlich undurchfhrbar, denn er war gewhnt, auf der rechten Seite zu schlafen, konnte sich aber in seinem gegenwrtigen Zustand nicht in diese Lage bringen. Mit welcher Kraft er sich auch auf die rechte Seite warf, immer wieder schaukelte er in die Rckenlage zurck. Er versuchte es wohl hundertmal, schlo die Augen, um die zappelnden Beine nicht sehen zu mssen, und lie erst ab, als er in der Seite einen noch nie gefhlten, leichten, dumpfen Schmerz zu fhlen begann.Ach Gott, dachte er, was fr einen anstrengenden Beruf habe ich gewhlt! Tag aus, Tag ein auf der Reise. Die geschftlichen Aufregungen sind viel grer, als im eigentlichen Geschft zu Hause, und auerdem ist mir noch diese Plage des Reisens auferlegt, die Sorgen um die Zuganschlsse, das unregelmige, schlechte Essen, ein immer wechselnder, nie andauernder, nie herzlich werdender menschlicher Verkehr. Der Teufel soll das alles holen! Er fhlte ein leichtes Jucken oben auf dem Bauch; schob sich auf dem Rcken langsam nher zum Bettpfosten, um den Kopf besser heben zu knnen; fand die juckende Stelle, die mit lauter kleinen weien Pnktchen besetzt war, die er nicht zu beurteilen verstand; und wollte mit einem Bein die Stelle betasten, zog es aber gleich zurck, denn bei der Berhrung umwehten ihn Klteschauer.Er glitt wieder in seine frhere Lage zurck. Dies frhzeitige Aufstehen, dachte er, macht einen ganz bldsinnig. Der Mensch mu seinen Schlaf haben. Andere Reisende leben wie Haremsfrauen. Wenn ich zum Beispiel im Laufe des Vormittags ins Gasthaus zurckgehe, um die erlangten Auftrge zu berschreiben, sitzen diese Herren erst beim Frhstck. Das sollte ich bei meinem Chef versuchen; ich wrde auf der Stelle hinausfliegen. Wer wei brigens, ob das nicht sehr gut fr mich wre. Wenn ich mich nicht wegen meiner Eltern zurckhielte, ich htte lngst gekndigt, ich wre vor den Chef hin getreten und htte ihm meine Meinung von Grund des Herzens aus gesagt. Vom Pult htte er fallen mssen! Es ist auch eine sonderbare Art, sich auf das Pult zu setzen und von der Hhe herab mit dem Angestellten zu reden, der berdies wegen der Schwerhrigkeit des Chefs ganz nahe herantreten mu. Nun, die Hoffnung ist noch nicht gnzlich aufgegeben; habe ich einmal das Geld beisammen, um die Schuld der Eltern an ihn abzuzahlen - es drfte noch fnf bis sechs Jahre dauern - , mache ich die Sache unbedingt. Dann wird der groe Schnitt gemacht. Vorlufig allerdings mu ich aufstehen, denn mein Zug fhrt um fnf.Und er sah zur Weckuhr hinber, die auf dem Kasten tickte. Himmlischer Vater!, dachte er. Es war halb sieben Uhr, und die Zeiger gingen ruhig vorwrts, es war sogar halb vorber, es nherte sich schon dreiviertel. Sollte der Wecker nicht gelutet haben? Man sah vom Bett aus, da er auf vier Uhr richtig eingestellt war; gewi hatte er auch gelutet. Ja, aber war es mglich, dieses mbelerschtternde Luten ruhig zu verschlafen? Nun, ruhig hatte er ja nicht geschlafen, aber wahrscheinlich desto fester. Was aber sollte er jetzt tun? Der nchste Zug ging um sieben Uhr; um den einzuholen, htte er sich unsinnig beeilen mssen, und die Kollektion war noch nicht eingepackt, und er selbst fhlte sich durchaus nicht besonders frisch und beweglich. Und selbst wenn er den Zug einholte, ein Donnerwetter des Chefs war nicht zu vermeiden, denn der Geschftsdiener hatte beim Fnfuhrzug gewartet und die Meldung von seiner Versumnis lngst erstattet. Es war eine Kreatur des Chefs, ohne Rckgrat und Verstand. Wie nun, wenn er sich krank meldete? Das wre aber uerst peinlich und verdchtig, denn Gregor war whrend seines fnfjhrigen Dienstes noch nicht einmal krank gewesen. Gewi wrde der Chef mit dem Krankenkassenarzt kommen, wrde den Eltern wegen des faulen Sohnes Vorwrfe machen und alle Einwnde durch den Hinweis auf den Krankenkassenarzt abschneiden, fr den es ja berhaupt nur ganz gesunde, aber arbeitsscheue Menschen gibt. Und htte er brigens in diesem Falle so ganz unrecht? Gregor fhlte sich tatschlich, abgesehen von einer nach dem langen Schlaf wirklich berflssigen Schlfrigkeit, ganz wohl und hatte sogar einen besonders krftigen Hunger. Err bitreich.org 70 i-\ No newline at end of file Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/kafka_latin1_crlf.txt b/3rdparties/software/flexi-streams-20190107-git/test/kafka_latin1_crlf.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/kafka_latin1_crlf.txt.gph bitreich.org 70 i@@ -1,11 +0,0 @@ Err bitreich.org 70 i-Als Gregor Samsa eines Morgens aus unruhigen Trumen erwachte, fand er sich in seinem Bett zu einem ungeheueren Ungeziefer verwandelt. Er lag auf seinem panzerartig harten Rcken und sah, wenn er den Kopf ein wenig hob, seinen gewlbten, braunen, von bogenfrmigen Versteifungen geteilten Bauch, auf dessen Hhe sich die Bettdecke, zum gnzlichen Niedergleiten bereit, kaum noch erhalten konnte. Seine vielen, im Vergleich zu seinem sonstigen Umfang klglich dnnen Beine flimmerten ihm hilflos vor den Augen. Err bitreich.org 70 i- Err bitreich.org 70 i-Was ist mit mir geschehen?, dachte er. Es war kein Traum. Sein Zimmer, ein richtiges, nur etwas zu kleines Menschenzimmer, lag ruhig zwischen den vier wohlbekannten Wnden. ber dem Tisch, auf dem eine auseinandergepackte Musterkollektion von Tuchwaren ausgebreitet war - Samsa war Reisender - hing das Bild, das er vor kurzem aus einer illustrierten Zeitschrift ausgeschnitten und in einem hbschen, vergoldeten Rahmen untergebracht hatte. Es stellte eine Dame dar, die mit einem Pelzhut und einer Pelzboa versehen, aufrecht dasa und einen schweren Pelzmuff, in dem ihr ganzer Unterarm verschwunden war, dem Beschauer entgegenhob. Err bitreich.org 70 i- Err bitreich.org 70 i-Gregors Blick richtete sich dann zum Fenster, und das trbe Wetter - man hrte Regentropfen auf das Fensterblech aufschlagen - machte ihn ganz melancholisch. Wie wre es, wenn ich noch ein wenig weiterschliefe und alle Narrheiten verge, dachte er, aber das war gnzlich undurchfhrbar, denn er war gewhnt, auf der rechten Seite zu schlafen, konnte sich aber in seinem gegenwrtigen Zustand nicht in diese Lage bringen. Mit welcher Kraft er sich auch auf die rechte Seite warf, immer wieder schaukelte er in die Rckenlage zurck. Er versuchte es wohl hundertmal, schlo die Augen, um die zappelnden Beine nicht sehen zu mssen, und lie erst ab, als er in der Seite einen noch nie gefhlten, leichten, dumpfen Schmerz zu fhlen begann. Err bitreich.org 70 i- Err bitreich.org 70 i-Ach Gott, dachte er, was fr einen anstrengenden Beruf habe ich gewhlt! Tag aus, Tag ein auf der Reise. Die geschftlichen Aufregungen sind viel grer, als im eigentlichen Geschft zu Hause, und auerdem ist mir noch diese Plage des Reisens auferlegt, die Sorgen um die Zuganschlsse, das unregelmige, schlechte Essen, ein immer wechselnder, nie andauernder, nie herzlich werdender menschlicher Verkehr. Der Teufel soll das alles holen! Er fhlte ein leichtes Jucken oben auf dem Bauch; schob sich auf dem Rcken langsam nher zum Bettpfosten, um den Kopf besser heben zu knnen; fand die juckende Stelle, die mit lauter kleinen weien Pnktchen besetzt war, die er nicht zu beurteilen verstand; und wollte mit einem Bein die Stelle betasten, zog es aber gleich zurck, denn bei der Berhrung umwehten ihn Klteschauer. Err bitreich.org 70 i- Err bitreich.org 70 i-Er glitt wieder in seine frhere Lage zurck. Dies frhzeitige Aufstehen, dachte er, macht einen ganz bldsinnig. Der Mensch mu seinen Schlaf haben. Andere Reisende leben wie Haremsfrauen. Wenn ich zum Beispiel im Laufe des Vormittags ins Gasthaus zurckgehe, um die erlangten Auftrge zu berschreiben, sitzen diese Herren erst beim Frhstck. Das sollte ich bei meinem Chef versuchen; ich wrde auf der Stelle hinausfliegen. Wer wei brigens, ob das nicht sehr gut fr mich wre. Wenn ich mich nicht wegen meiner Eltern zurckhielte, ich htte lngst gekndigt, ich wre vor den Chef hin getreten und htte ihm meine Meinung von Grund des Herzens aus gesagt. Vom Pult htte er fallen mssen! Es ist auch eine sonderbare Art, sich auf das Pult zu setzen und von der Hhe herab mit dem Angestellten zu reden, der berdies wegen der Schwerhrigkeit des Chefs ganz nahe herantreten mu. Nun, die Hoffnung ist noch nicht gnzlich aufgegeben; habe ich einmal das Geld beisammen, um die Schuld der Eltern an ihn abzuzahlen - es drfte noch fnf bis sechs Jahre dauern - , mache ich die Sache unbedingt. Dann wird der groe Schnitt gemacht. Vorlufig allerdings mu ich aufstehen, denn mein Zug fhrt um fnf. Err bitreich.org 70 i- Err bitreich.org 70 i-Und er sah zur Weckuhr hinber, die auf dem Kasten tickte. Himmlischer Vater!, dachte er. Es war halb sieben Uhr, und die Zeiger gingen ruhig vorwrts, es war sogar halb vorber, es nherte sich schon dreiviertel. Sollte der Wecker nicht gelutet haben? Man sah vom Bett aus, da er auf vier Uhr richtig eingestellt war; gewi hatte er auch gelutet. Ja, aber war es mglich, dieses mbelerschtternde Luten ruhig zu verschlafen? Nun, ruhig hatte er ja nicht geschlafen, aber wahrscheinlich desto fester. Was aber sollte er jetzt tun? Der nchste Zug ging um sieben Uhr; um den einzuholen, htte er sich unsinnig beeilen mssen, und die Kollektion war noch nicht eingepackt, und er selbst fhlte sich durchaus nicht besonders frisch und beweglich. Und selbst wenn er den Zug einholte, ein Donnerwetter des Chefs war nicht zu vermeiden, denn der Geschftsdiener hatte beim Fnfuhrzug gewartet und die Meldung von seiner Versumnis lngst erstattet. Es war eine Kreatur des Chefs, ohne Rckgrat und Verstand. Wie nun, wenn er sich krank meldete? Das wre aber uerst peinlich und verdchtig, denn Gregor war whrend seines fnfjhrigen Dienstes noch nicht einmal krank gewesen. Gewi wrde der Chef mit dem Krankenkassenarzt kommen, wrde den Eltern wegen des faulen Sohnes Vorwrfe machen und alle Einwnde durch den Hinweis auf den Krankenkassenarzt abschneiden, fr den es ja berhaupt nur ganz gesunde, aber arbeitsscheue Menschen gibt. Und htte er brigens in diesem Falle so ganz unrecht? Gregor fhlte sich tatschlich, abgesehen von einer nach dem langen Schlaf wirklich berflssigen Schlfrigkeit, ganz wohl und hatte sogar einen besonders krftigen Hunger. Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/kafka_latin1_lf.txt b/3rdparties/software/flexi-streams-20190107-git/test/kafka_latin1_lf.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/kafka_latin1_lf.txt.gph bitreich.org 70 i@@ -1,11 +0,0 @@ Err bitreich.org 70 i-Als Gregor Samsa eines Morgens aus unruhigen Trumen erwachte, fand er sich in seinem Bett zu einem ungeheueren Ungeziefer verwandelt. Er lag auf seinem panzerartig harten Rcken und sah, wenn er den Kopf ein wenig hob, seinen gewlbten, braunen, von bogenfrmigen Versteifungen geteilten Bauch, auf dessen Hhe sich die Bettdecke, zum gnzlichen Niedergleiten bereit, kaum noch erhalten konnte. Seine vielen, im Vergleich zu seinem sonstigen Umfang klglich dnnen Beine flimmerten ihm hilflos vor den Augen. Err bitreich.org 70 i- Err bitreich.org 70 i-Was ist mit mir geschehen?, dachte er. Es war kein Traum. Sein Zimmer, ein richtiges, nur etwas zu kleines Menschenzimmer, lag ruhig zwischen den vier wohlbekannten Wnden. ber dem Tisch, auf dem eine auseinandergepackte Musterkollektion von Tuchwaren ausgebreitet war - Samsa war Reisender - hing das Bild, das er vor kurzem aus einer illustrierten Zeitschrift ausgeschnitten und in einem hbschen, vergoldeten Rahmen untergebracht hatte. Es stellte eine Dame dar, die mit einem Pelzhut und einer Pelzboa versehen, aufrecht dasa und einen schweren Pelzmuff, in dem ihr ganzer Unterarm verschwunden war, dem Beschauer entgegenhob. Err bitreich.org 70 i- Err bitreich.org 70 i-Gregors Blick richtete sich dann zum Fenster, und das trbe Wetter - man hrte Regentropfen auf das Fensterblech aufschlagen - machte ihn ganz melancholisch. Wie wre es, wenn ich noch ein wenig weiterschliefe und alle Narrheiten verge, dachte er, aber das war gnzlich undurchfhrbar, denn er war gewhnt, auf der rechten Seite zu schlafen, konnte sich aber in seinem gegenwrtigen Zustand nicht in diese Lage bringen. Mit welcher Kraft er sich auch auf die rechte Seite warf, immer wieder schaukelte er in die Rckenlage zurck. Er versuchte es wohl hundertmal, schlo die Augen, um die zappelnden Beine nicht sehen zu mssen, und lie erst ab, als er in der Seite einen noch nie gefhlten, leichten, dumpfen Schmerz zu fhlen begann. Err bitreich.org 70 i- Err bitreich.org 70 i-Ach Gott, dachte er, was fr einen anstrengenden Beruf habe ich gewhlt! Tag aus, Tag ein auf der Reise. Die geschftlichen Aufregungen sind viel grer, als im eigentlichen Geschft zu Hause, und auerdem ist mir noch diese Plage des Reisens auferlegt, die Sorgen um die Zuganschlsse, das unregelmige, schlechte Essen, ein immer wechselnder, nie andauernder, nie herzlich werdender menschlicher Verkehr. Der Teufel soll das alles holen! Er fhlte ein leichtes Jucken oben auf dem Bauch; schob sich auf dem Rcken langsam nher zum Bettpfosten, um den Kopf besser heben zu knnen; fand die juckende Stelle, die mit lauter kleinen weien Pnktchen besetzt war, die er nicht zu beurteilen verstand; und wollte mit einem Bein die Stelle betasten, zog es aber gleich zurck, denn bei der Berhrung umwehten ihn Klteschauer. Err bitreich.org 70 i- Err bitreich.org 70 i-Er glitt wieder in seine frhere Lage zurck. Dies frhzeitige Aufstehen, dachte er, macht einen ganz bldsinnig. Der Mensch mu seinen Schlaf haben. Andere Reisende leben wie Haremsfrauen. Wenn ich zum Beispiel im Laufe des Vormittags ins Gasthaus zurckgehe, um die erlangten Auftrge zu berschreiben, sitzen diese Herren erst beim Frhstck. Das sollte ich bei meinem Chef versuchen; ich wrde auf der Stelle hinausfliegen. Wer wei brigens, ob das nicht sehr gut fr mich wre. Wenn ich mich nicht wegen meiner Eltern zurckhielte, ich htte lngst gekndigt, ich wre vor den Chef hin getreten und htte ihm meine Meinung von Grund des Herzens aus gesagt. Vom Pult htte er fallen mssen! Es ist auch eine sonderbare Art, sich auf das Pult zu setzen und von der Hhe herab mit dem Angestellten zu reden, der berdies wegen der Schwerhrigkeit des Chefs ganz nahe herantreten mu. Nun, die Hoffnung ist noch nicht gnzlich aufgegeben; habe ich einmal das Geld beisammen, um die Schuld der Eltern an ihn abzuzahlen - es drfte noch fnf bis sechs Jahre dauern - , mache ich die Sache unbedingt. Dann wird der groe Schnitt gemacht. Vorlufig allerdings mu ich aufstehen, denn mein Zug fhrt um fnf. Err bitreich.org 70 i- Err bitreich.org 70 i-Und er sah zur Weckuhr hinber, die auf dem Kasten tickte. Himmlischer Vater!, dachte er. Es war halb sieben Uhr, und die Zeiger gingen ruhig vorwrts, es war sogar halb vorber, es nherte sich schon dreiviertel. Sollte der Wecker nicht gelutet haben? Man sah vom Bett aus, da er auf vier Uhr richtig eingestellt war; gewi hatte er auch gelutet. Ja, aber war es mglich, dieses mbelerschtternde Luten ruhig zu verschlafen? Nun, ruhig hatte er ja nicht geschlafen, aber wahrscheinlich desto fester. Was aber sollte er jetzt tun? Der nchste Zug ging um sieben Uhr; um den einzuholen, htte er sich unsinnig beeilen mssen, und die Kollektion war noch nicht eingepackt, und er selbst fhlte sich durchaus nicht besonders frisch und beweglich. Und selbst wenn er den Zug einholte, ein Donnerwetter des Chefs war nicht zu vermeiden, denn der Geschftsdiener hatte beim Fnfuhrzug gewartet und die Meldung von seiner Versumnis lngst erstattet. Es war eine Kreatur des Chefs, ohne Rckgrat und Verstand. Wie nun, wenn er sich krank meldete? Das wre aber uerst peinlich und verdchtig, denn Gregor war whrend seines fnfjhrigen Dienstes noch nicht einmal krank gewesen. Gewi wrde der Chef mit dem Krankenkassenarzt kommen, wrde den Eltern wegen des faulen Sohnes Vorwrfe machen und alle Einwnde durch den Hinweis auf den Krankenkassenarzt abschneiden, fr den es ja berhaupt nur ganz gesunde, aber arbeitsscheue Menschen gibt. Und htte er brigens in diesem Falle so ganz unrecht? Gregor fhlte sich tatschlich, abgesehen von einer nach dem langen Schlaf wirklich berflssigen Schlfrigkeit, ganz wohl und hatte sogar einen besonders krftigen Hunger. Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/kafka_utf8_cr.txt b/3rdparties/software/flexi-streams-20190107-git/test/kafka_utf8_cr.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/kafka_utf8_cr.txt.gph bitreich.org 70 i@@ -1 +0,0 @@ Err bitreich.org 70 i-Als Gregor Samsa eines Morgens aus unruhigen Träumen erwachte, fand er sich in seinem Bett zu einem ungeheueren Ungeziefer verwandelt. Er lag auf seinem panzerartig harten Rücken und sah, wenn er den Kopf ein wenig hob, seinen gewölbten, braunen, von bogenförmigen Versteifungen geteilten Bauch, auf dessen Höhe sich die Bettdecke, zum gänzlichen Niedergleiten bereit, kaum noch erhalten konnte. Seine vielen, im Vergleich zu seinem sonstigen Umfang kläglich dünnen Beine flimmerten ihm hilflos vor den Augen.»Was ist mit mir geschehen?«, dachte er. Es war kein Traum. Sein Zimmer, ein richtiges, nur etwas zu kleines Menschenzimmer, lag ruhig zwischen den vier wohlbekannten Wänden. Über dem Tisch, auf dem eine auseinandergepackte Musterkollektion von Tuchwaren ausgebreitet war - Samsa war Reisender - hing das Bild, das er vor kurzem aus einer illustrierten Zeitschrift ausgeschnitten und in einem hübschen, vergoldeten Rahmen untergebracht hatte. Es stellte eine Dame dar, die mit einem Pelzhut und einer Pelzboa versehen, aufrecht dasaß und einen schweren Pelzmuff, in dem ihr ganzer Unterarm verschwunden war, dem Beschauer entgegenhob.Gregors Blick richtete sich dann zum Fenster, und das trübe Wetter - man hörte Regentropfen auf das Fensterblech aufschlagen - machte ihn ganz melancholisch. »Wie wäre es, wenn ich noch ein wenig weiterschliefe und alle Narrheiten vergäße«, dachte er, aber das war gänzlich undurchführbar, denn er war gewöhnt, auf der rechten Seite zu schlafen, konnte sich aber in seinem gegenwärtigen Zustand nicht in diese Lage bringen. Mit welcher Kraft er sich auch auf die rechte Seite warf, immer wieder schaukelte er in die Rückenlage zurück. Er versuchte es wohl hundertmal, schloß die Augen, um die zappelnden Beine nicht sehen zu müssen, und ließ erst ab, als er in der Seite einen noch nie gefühlten, leichten, dumpfen Schmerz zu fühlen begann.»Ach Gott«, dachte er, »was für einen anstrengenden Beruf habe ich gewählt! Tag aus, Tag ein auf der Reise. Die geschäftlichen Aufregungen sind viel größer, als im eigentlichen Geschäft zu Hause, und außerdem ist mir noch diese Plage des Reisens auferlegt, die Sorgen um die Zuganschlüsse, das unregelmäßige, schlechte Essen, ein immer wechselnder, nie andauernder, nie herzlich werdender menschlicher Verkehr. Der Teufel soll das alles holen!« Er fühlte ein leichtes Jucken oben auf dem Bauch; schob sich auf dem Rücken langsam näher zum Bettpfosten, um den Kopf besser heben zu können; fand die juckende Stelle, die mit lauter kleinen weißen Pünktchen besetzt war, die er nicht zu beurteilen verstand; und wollte mit einem Bein die Stelle betasten, zog es aber gleich zurück, denn bei der Berührung umwehten ihn Kälteschauer.Er glitt wieder in seine frühere Lage zurück. »Dies frühzeitige Aufstehen«, dachte er, »macht einen ganz blödsinnig. Der Mensch muß seinen Schlaf haben. Andere Reisende leben wie Haremsfrauen. Wenn ich zum Beispiel im Laufe des Vormittags ins Gasthaus zurückgehe, um die erlangten Aufträge zu überschreiben, sitzen diese Herren erst beim Frühstück. Das sollte ich bei meinem Chef versuchen; ich würde auf der Stelle hinausfliegen. Wer weiß übrigens, ob das nicht sehr gut für mich wäre. Wenn ich mich nicht wegen meiner Eltern zurückhielte, ich hätte längst gekündigt, ich wäre vor den Chef hin getreten und hätte ihm meine Meinung von Grund des Herzens aus gesagt. Vom Pult hätte er fallen müssen! Es ist auch eine sonderbare Art, sich auf das Pult zu setzen und von der Höhe herab mit dem Angestellten zu reden, der überdies wegen der Schwerhörigkeit des Chefs ganz nahe herantreten muß. Nun, die Hoffnung ist noch nicht gänzlich aufgegeben; habe ich einmal das Geld beisammen, um die Schuld der Eltern an ihn abzuzahlen - es dürfte noch fünf bis sechs Jahre dauern - , mache ich die Sache unbedingt. Dann wird der große Schnitt gemacht. Vorläufig allerdings muß ich aufstehen, denn mein Zug fährt um fünf.«Und er sah zur Weckuhr hinüber, die auf dem Kasten tickte. »Himmlischer Vater!«, dachte er. Es war halb sieben Uhr, und die Zeiger gingen ruhig vorwärts, es war sogar halb vorüber, es näherte sich schon dreiviertel. Sollte der Wecker nicht geläutet haben? Man sah vom Bett aus, daß er auf vier Uhr richtig eingestellt war; gewiß hatte er auch geläutet. Ja, aber war es möglich, dieses möbelerschütternde Läuten ruhig zu verschlafen? Nun, ruhig hatte er ja nicht geschlafen, aber wahrscheinlich desto fester. Was aber sollte er jetzt tun? Der nächste Zug ging um sieben Uhr; um den einzuholen, hätte er sich unsinnig beeilen müssen, und die Kollektion war noch nicht eingepackt, und er selbst fühlte sich durchaus nicht besonders frisch und beweglich. Und selbst wenn er den Zug einholte, ein Donnerwetter des Chefs war nicht zu vermeiden, denn der Geschäftsdiener hatte beim Fünfuhrzug gewartet und die Meldung von seiner Versäumnis längst erstattet. Es war eine Kreatur des Chefs, ohne Rückgrat und Verstand. Wie nun, wenn er sich krank meldete? Das wäre aber äußerst peinlich und verdächtig, denn Gregor war während seines fünfjährigen Dienstes noch nicht einmal krank gewesen. Gewiß würde der Chef mit dem Krankenkassenarzt kommen, würde den Eltern wegen des faulen Sohnes Vorwürfe machen und alle Einwände durch den Hinweis auf den Krankenkassenarzt abschneiden, für den es ja überhaupt nur ganz gesunde, aber arbeitsscheue Menschen gibt. Und hätte er übrigens in diesem Falle so ganz unrecht? Gregor fühlte sich tatsächlich, abgesehen von einer nach dem langen Schlaf wirklich überflüssigen Schläfrigkeit, ganz wohl und hatte sogar einen besonders kräftigen Hunger. Err bitreich.org 70 i-\ No newline at end of file Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/kafka_utf8_crlf.txt b/3rdparties/software/flexi-streams-20190107-git/test/kafka_utf8_crlf.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/kafka_utf8_crlf.txt.gph bitreich.org 70 i@@ -1,11 +0,0 @@ Err bitreich.org 70 i-Als Gregor Samsa eines Morgens aus unruhigen Träumen erwachte, fand er sich in seinem Bett zu einem ungeheueren Ungeziefer verwandelt. Er lag auf seinem panzerartig harten Rücken und sah, wenn er den Kopf ein wenig hob, seinen gewölbten, braunen, von bogenförmigen Versteifungen geteilten Bauch, auf dessen Höhe sich die Bettdecke, zum gänzlichen Niedergleiten bereit, kaum noch erhalten konnte. Seine vielen, im Vergleich zu seinem sonstigen Umfang kläglich dünnen Beine flimmerten ihm hilflos vor den Augen. Err bitreich.org 70 i- Err bitreich.org 70 i-»Was ist mit mir geschehen?«, dachte er. Es war kein Traum. Sein Zimmer, ein richtiges, nur etwas zu kleines Menschenzimmer, lag ruhig zwischen den vier wohlbekannten Wänden. Über dem Tisch, auf dem eine auseinandergepackte Musterkollektion von Tuchwaren ausgebreitet war - Samsa war Reisender - hing das Bild, das er vor kurzem aus einer illustrierten Zeitschrift ausgeschnitten und in einem hübschen, vergoldeten Rahmen untergebracht hatte. Es stellte eine Dame dar, die mit einem Pelzhut und einer Pelzboa versehen, aufrecht dasaß und einen schweren Pelzmuff, in dem ihr ganzer Unterarm verschwunden war, dem Beschauer entgegenhob. Err bitreich.org 70 i- Err bitreich.org 70 i-Gregors Blick richtete sich dann zum Fenster, und das trübe Wetter - man hörte Regentropfen auf das Fensterblech aufschlagen - machte ihn ganz melancholisch. »Wie wäre es, wenn ich noch ein wenig weiterschliefe und alle Narrheiten vergäße«, dachte er, aber das war gänzlich undurchführbar, denn er war gewöhnt, auf der rechten Seite zu schlafen, konnte sich aber in seinem gegenwärtigen Zustand nicht in diese Lage bringen. Mit welcher Kraft er sich auch auf die rechte Seite warf, immer wieder schaukelte er in die Rückenlage zurück. Er versuchte es wohl hundertmal, schloß die Augen, um die zappelnden Beine nicht sehen zu müssen, und ließ erst ab, als er in der Seite einen noch nie gefühlten, leichten, dumpfen Schmerz zu fühlen begann. Err bitreich.org 70 i- Err bitreich.org 70 i-»Ach Gott«, dachte er, »was für einen anstrengenden Beruf habe ich gewählt! Tag aus, Tag ein auf der Reise. Die geschäftlichen Aufregungen sind viel größer, als im eigentlichen Geschäft zu Hause, und außerdem ist mir noch diese Plage des Reisens auferlegt, die Sorgen um die Zuganschlüsse, das unregelmäßige, schlechte Essen, ein immer wechselnder, nie andauernder, nie herzlich werdender menschlicher Verkehr. Der Teufel soll das alles holen!« Er fühlte ein leichtes Jucken oben auf dem Bauch; schob sich auf dem Rücken langsam näher zum Bettpfosten, um den Kopf besser heben zu können; fand die juckende Stelle, die mit lauter kleinen weißen Pünktchen besetzt war, die er nicht zu beurteilen verstand; und wollte mit einem Bein die Stelle betasten, zog es aber gleich zurück, denn bei der Berührung umwehten ihn Kälteschauer. Err bitreich.org 70 i- Err bitreich.org 70 i-Er glitt wieder in seine frühere Lage zurück. »Dies frühzeitige Aufstehen«, dachte er, »macht einen ganz blödsinnig. Der Mensch muß seinen Schlaf haben. Andere Reisende leben wie Haremsfrauen. Wenn ich zum Beispiel im Laufe des Vormittags ins Gasthaus zurückgehe, um die erlangten Aufträge zu überschreiben, sitzen diese Herren erst beim Frühstück. Das sollte ich bei meinem Chef versuchen; ich würde auf der Stelle hinausfliegen. Wer weiß übrigens, ob das nicht sehr gut für mich wäre. Wenn ich mich nicht wegen meiner Eltern zurückhielte, ich hätte längst gekündigt, ich wäre vor den Chef hin getreten und hätte ihm meine Meinung von Grund des Herzens aus gesagt. Vom Pult hätte er fallen müssen! Es ist auch eine sonderbare Art, sich auf das Pult zu setzen und von der Höhe herab mit dem Angestellten zu reden, der überdies wegen der Schwerhörigkeit des Chefs ganz nahe herantreten muß. Nun, die Hoffnung ist noch nicht gänzlich aufgegeben; habe ich einmal das Geld beisammen, um die Schuld der Eltern an ihn abzuzahlen - es dürfte noch fünf bis sechs Jahre dauern - , mache ich die Sache unbedingt. Dann wird der große Schnitt gemacht. Vorläufig allerdings muß ich aufstehen, denn mein Zug fährt um fünf.« Err bitreich.org 70 i- Err bitreich.org 70 i-Und er sah zur Weckuhr hinüber, die auf dem Kasten tickte. »Himmlischer Vater!«, dachte er. Es war halb sieben Uhr, und die Zeiger gingen ruhig vorwärts, es war sogar halb vorüber, es näherte sich schon dreiviertel. Sollte der Wecker nicht geläutet haben? Man sah vom Bett aus, daß er auf vier Uhr richtig eingestellt war; gewiß hatte er auch geläutet. Ja, aber war es möglich, dieses möbelerschütternde Läuten ruhig zu verschlafen? Nun, ruhig hatte er ja nicht geschlafen, aber wahrscheinlich desto fester. Was aber sollte er jetzt tun? Der nächste Zug ging um sieben Uhr; um den einzuholen, hätte er sich unsinnig beeilen müssen, und die Kollektion war noch nicht eingepackt, und er selbst fühlte sich durchaus nicht besonders frisch und beweglich. Und selbst wenn er den Zug einholte, ein Donnerwetter des Chefs war nicht zu vermeiden, denn der Geschäftsdiener hatte beim Fünfuhrzug gewartet und die Meldung von seiner Versäumnis längst erstattet. Es war eine Kreatur des Chefs, ohne Rückgrat und Verstand. Wie nun, wenn er sich krank meldete? Das wäre aber äußerst peinlich und verdächtig, denn Gregor war während seines fünfjährigen Dienstes noch nicht einmal krank gewesen. Gewiß würde der Chef mit dem Krankenkassenarzt kommen, würde den Eltern wegen des faulen Sohnes Vorwürfe machen und alle Einwände durch den Hinweis auf den Krankenkassenarzt abschneiden, für den es ja überhaupt nur ganz gesunde, aber arbeitsscheue Menschen gibt. Und hätte er übrigens in diesem Falle so ganz unrecht? Gregor fühlte sich tatsächlich, abgesehen von einer nach dem langen Schlaf wirklich überflüssigen Schläfrigkeit, ganz wohl und hatte sogar einen besonders kräftigen Hunger. Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/kafka_utf8_lf.txt b/3rdparties/software/flexi-streams-20190107-git/test/kafka_utf8_lf.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/kafka_utf8_lf.txt.gph bitreich.org 70 i@@ -1,11 +0,0 @@ Err bitreich.org 70 i-Als Gregor Samsa eines Morgens aus unruhigen Träumen erwachte, fand er sich in seinem Bett zu einem ungeheueren Ungeziefer verwandelt. Er lag auf seinem panzerartig harten Rücken und sah, wenn er den Kopf ein wenig hob, seinen gewölbten, braunen, von bogenförmigen Versteifungen geteilten Bauch, auf dessen Höhe sich die Bettdecke, zum gänzlichen Niedergleiten bereit, kaum noch erhalten konnte. Seine vielen, im Vergleich zu seinem sonstigen Umfang kläglich dünnen Beine flimmerten ihm hilflos vor den Augen. Err bitreich.org 70 i- Err bitreich.org 70 i-»Was ist mit mir geschehen?«, dachte er. Es war kein Traum. Sein Zimmer, ein richtiges, nur etwas zu kleines Menschenzimmer, lag ruhig zwischen den vier wohlbekannten Wänden. Über dem Tisch, auf dem eine auseinandergepackte Musterkollektion von Tuchwaren ausgebreitet war - Samsa war Reisender - hing das Bild, das er vor kurzem aus einer illustrierten Zeitschrift ausgeschnitten und in einem hübschen, vergoldeten Rahmen untergebracht hatte. Es stellte eine Dame dar, die mit einem Pelzhut und einer Pelzboa versehen, aufrecht dasaß und einen schweren Pelzmuff, in dem ihr ganzer Unterarm verschwunden war, dem Beschauer entgegenhob. Err bitreich.org 70 i- Err bitreich.org 70 i-Gregors Blick richtete sich dann zum Fenster, und das trübe Wetter - man hörte Regentropfen auf das Fensterblech aufschlagen - machte ihn ganz melancholisch. »Wie wäre es, wenn ich noch ein wenig weiterschliefe und alle Narrheiten vergäße«, dachte er, aber das war gänzlich undurchführbar, denn er war gewöhnt, auf der rechten Seite zu schlafen, konnte sich aber in seinem gegenwärtigen Zustand nicht in diese Lage bringen. Mit welcher Kraft er sich auch auf die rechte Seite warf, immer wieder schaukelte er in die Rückenlage zurück. Er versuchte es wohl hundertmal, schloß die Augen, um die zappelnden Beine nicht sehen zu müssen, und ließ erst ab, als er in der Seite einen noch nie gefühlten, leichten, dumpfen Schmerz zu fühlen begann. Err bitreich.org 70 i- Err bitreich.org 70 i-»Ach Gott«, dachte er, »was für einen anstrengenden Beruf habe ich gewählt! Tag aus, Tag ein auf der Reise. Die geschäftlichen Aufregungen sind viel größer, als im eigentlichen Geschäft zu Hause, und außerdem ist mir noch diese Plage des Reisens auferlegt, die Sorgen um die Zuganschlüsse, das unregelmäßige, schlechte Essen, ein immer wechselnder, nie andauernder, nie herzlich werdender menschlicher Verkehr. Der Teufel soll das alles holen!« Er fühlte ein leichtes Jucken oben auf dem Bauch; schob sich auf dem Rücken langsam näher zum Bettpfosten, um den Kopf besser heben zu können; fand die juckende Stelle, die mit lauter kleinen weißen Pünktchen besetzt war, die er nicht zu beurteilen verstand; und wollte mit einem Bein die Stelle betasten, zog es aber gleich zurück, denn bei der Berührung umwehten ihn Kälteschauer. Err bitreich.org 70 i- Err bitreich.org 70 i-Er glitt wieder in seine frühere Lage zurück. »Dies frühzeitige Aufstehen«, dachte er, »macht einen ganz blödsinnig. Der Mensch muß seinen Schlaf haben. Andere Reisende leben wie Haremsfrauen. Wenn ich zum Beispiel im Laufe des Vormittags ins Gasthaus zurückgehe, um die erlangten Aufträge zu überschreiben, sitzen diese Herren erst beim Frühstück. Das sollte ich bei meinem Chef versuchen; ich würde auf der Stelle hinausfliegen. Wer weiß übrigens, ob das nicht sehr gut für mich wäre. Wenn ich mich nicht wegen meiner Eltern zurückhielte, ich hätte längst gekündigt, ich wäre vor den Chef hin getreten und hätte ihm meine Meinung von Grund des Herzens aus gesagt. Vom Pult hätte er fallen müssen! Es ist auch eine sonderbare Art, sich auf das Pult zu setzen und von der Höhe herab mit dem Angestellten zu reden, der überdies wegen der Schwerhörigkeit des Chefs ganz nahe herantreten muß. Nun, die Hoffnung ist noch nicht gänzlich aufgegeben; habe ich einmal das Geld beisammen, um die Schuld der Eltern an ihn abzuzahlen - es dürfte noch fünf bis sechs Jahre dauern - , mache ich die Sache unbedingt. Dann wird der große Schnitt gemacht. Vorläufig allerdings muß ich aufstehen, denn mein Zug fährt um fünf.« Err bitreich.org 70 i- Err bitreich.org 70 i-Und er sah zur Weckuhr hinüber, die auf dem Kasten tickte. »Himmlischer Vater!«, dachte er. Es war halb sieben Uhr, und die Zeiger gingen ruhig vorwärts, es war sogar halb vorüber, es näherte sich schon dreiviertel. Sollte der Wecker nicht geläutet haben? Man sah vom Bett aus, daß er auf vier Uhr richtig eingestellt war; gewiß hatte er auch geläutet. Ja, aber war es möglich, dieses möbelerschütternde Läuten ruhig zu verschlafen? Nun, ruhig hatte er ja nicht geschlafen, aber wahrscheinlich desto fester. Was aber sollte er jetzt tun? Der nächste Zug ging um sieben Uhr; um den einzuholen, hätte er sich unsinnig beeilen müssen, und die Kollektion war noch nicht eingepackt, und er selbst fühlte sich durchaus nicht besonders frisch und beweglich. Und selbst wenn er den Zug einholte, ein Donnerwetter des Chefs war nicht zu vermeiden, denn der Geschäftsdiener hatte beim Fünfuhrzug gewartet und die Meldung von seiner Versäumnis längst erstattet. Es war eine Kreatur des Chefs, ohne Rückgrat und Verstand. Wie nun, wenn er sich krank meldete? Das wäre aber äußerst peinlich und verdächtig, denn Gregor war während seines fünfjährigen Dienstes noch nicht einmal krank gewesen. Gewiß würde der Chef mit dem Krankenkassenarzt kommen, würde den Eltern wegen des faulen Sohnes Vorwürfe machen und alle Einwände durch den Hinweis auf den Krankenkassenarzt abschneiden, für den es ja überhaupt nur ganz gesunde, aber arbeitsscheue Menschen gibt. Und hätte er übrigens in diesem Falle so ganz unrecht? Gregor fühlte sich tatsächlich, abgesehen von einer nach dem langen Schlaf wirklich überflüssigen Schläfrigkeit, ganz wohl und hatte sogar einen besonders kräftigen Hunger. Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/packages.lisp b/3rdparties/software/flexi-streams-20190107-git/test/packages.lisp /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/packages.lisp.gph bitreich.org 70 i@@ -1,41 +0,0 @@ Err bitreich.org 70 i-;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: CL-USER; Base: 10 -*- Err bitreich.org 70 i-;;; $Header: /usr/local/cvsrep/flexi-streams/test/packages.lisp,v 1.8 2008/08/01 10:12:43 edi Exp $ Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Copyright (c) 2006-2008, Dr. Edmund Weitz. All rights reserved. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Redistribution and use in source and binary forms, with or without Err bitreich.org 70 i-;;; modification, are permitted provided that the following conditions Err bitreich.org 70 i-;;; are met: Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions of source code must retain the above copyright Err bitreich.org 70 i-;;; notice, this list of conditions and the following disclaimer. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions in binary form must reproduce the above Err bitreich.org 70 i-;;; copyright notice, this list of conditions and the following Err bitreich.org 70 i-;;; disclaimer in the documentation and/or other materials Err bitreich.org 70 i-;;; provided with the distribution. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED Err bitreich.org 70 i-;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED Err bitreich.org 70 i-;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE Err bitreich.org 70 i-;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY Err bitreich.org 70 i-;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL Err bitreich.org 70 i-;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE Err bitreich.org 70 i-;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS Err bitreich.org 70 i-;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING Err bitreich.org 70 i-;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS Err bitreich.org 70 i-;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl-user) Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage :flexi-streams-test Err bitreich.org 70 i- (:use :cl :flexi-streams) Err bitreich.org 70 i- (:import-from :flexi-streams Err bitreich.org 70 i- :with-unique-names Err bitreich.org 70 i- :with-rebinding Err bitreich.org 70 i- :char* Err bitreich.org 70 i- :normalize-external-format Err bitreich.org 70 i- :+name-map+ Err bitreich.org 70 i- :+shortcut-map+) Err bitreich.org 70 i- (:export :run-all-tests)) Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/russian_koi8r_cr.txt b/3rdparties/software/flexi-streams-20190107-git/test/russian_koi8r_cr.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/russian_koi8r_cr.txt.gph bitreich.org 70 i@@ -1 +0,0 @@ Err bitreich.org 70 i- Unicode, 10-12 1997 . Unicode, , Unicode , , . Err bitreich.org 70 i-\ No newline at end of file Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/russian_koi8r_crlf.txt b/3rdparties/software/flexi-streams-20190107-git/test/russian_koi8r_crlf.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/russian_koi8r_crlf.txt.gph bitreich.org 70 i@@ -1,6 +0,0 @@ Err bitreich.org 70 i- Err bitreich.org 70 i-Unicode, 10-12 1997 . Err bitreich.org 70 i- Err bitreich.org 70 i- Unicode, , Err bitreich.org 70 i- Unicode Err bitreich.org 70 i-, , . Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/russian_koi8r_lf.txt b/3rdparties/software/flexi-streams-20190107-git/test/russian_koi8r_lf.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/russian_koi8r_lf.txt.gph bitreich.org 70 i@@ -1,6 +0,0 @@ Err bitreich.org 70 i- Err bitreich.org 70 i-Unicode, 10-12 1997 . Err bitreich.org 70 i- Err bitreich.org 70 i- Unicode, , Err bitreich.org 70 i- Unicode Err bitreich.org 70 i-, , . Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/russian_utf8_cr.txt b/3rdparties/software/flexi-streams-20190107-git/test/russian_utf8_cr.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/russian_utf8_cr.txt.gph bitreich.org 70 i@@ -1 +0,0 @@ Err bitreich.org 70 i-Зарегистрируйтесь сейчас на Десятую Международную Конференцию поUnicode, которая состоится 10-12 марта 1997 года в Майнце в Германии.Конференция соберет широкий круг экспертов по вопросам глобальногоИнтернета и Unicode, локализации и интернационализации, воплощению иприменению Unicode в различных операционных системах и программныхприложениях, шрифтах, верстке и многоязычных компьютерных системах. Err bitreich.org 70 i-\ No newline at end of file Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/russian_utf8_crlf.txt b/3rdparties/software/flexi-streams-20190107-git/test/russian_utf8_crlf.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/russian_utf8_crlf.txt.gph bitreich.org 70 i@@ -1,6 +0,0 @@ Err bitreich.org 70 i-Зарегистрируйтесь сейчас на Десятую Международную Конференцию по Err bitreich.org 70 i-Unicode, которая состоится 10-12 марта 1997 года в Майнце в Германии. Err bitreich.org 70 i-Конференция соберет широкий круг экспертов по вопросам глобального Err bitreich.org 70 i-Интернета и Unicode, локализации и интернационализации, воплощению и Err bitreich.org 70 i-применению Unicode в различных операционных системах и программных Err bitreich.org 70 i-приложениях, шрифтах, верстке и многоязычных компьютерных системах. Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/russian_utf8_lf.txt b/3rdparties/software/flexi-streams-20190107-git/test/russian_utf8_lf.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/russian_utf8_lf.txt.gph bitreich.org 70 i@@ -1,6 +0,0 @@ Err bitreich.org 70 i-Зарегистрируйтесь сейчас на Десятую Международную Конференцию по Err bitreich.org 70 i-Unicode, которая состоится 10-12 марта 1997 года в Майнце в Германии. Err bitreich.org 70 i-Конференция соберет широкий круг экспертов по вопросам глобального Err bitreich.org 70 i-Интернета и Unicode, локализации и интернационализации, воплощению и Err bitreich.org 70 i-применению Unicode в различных операционных системах и программных Err bitreich.org 70 i-приложениях, шрифтах, верстке и многоязычных компьютерных системах. Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/test.lisp b/3rdparties/software/flexi-streams-20190107-git/test/test.lisp /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/test.lisp.gph bitreich.org 70 i@@ -1,737 +0,0 @@ Err bitreich.org 70 i-;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: FLEXI-STREAMS-TEST; Base: 10 -*- Err bitreich.org 70 i-;;; $Header: /usr/local/cvsrep/flexi-streams/test/test.lisp,v 1.39 2008/05/30 09:10:55 edi Exp $ Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Copyright (c) 2006-2008, Dr. Edmund Weitz. All rights reserved. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Redistribution and use in source and binary forms, with or without Err bitreich.org 70 i-;;; modification, are permitted provided that the following conditions Err bitreich.org 70 i-;;; are met: Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions of source code must retain the above copyright Err bitreich.org 70 i-;;; notice, this list of conditions and the following disclaimer. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions in binary form must reproduce the above Err bitreich.org 70 i-;;; copyright notice, this list of conditions and the following Err bitreich.org 70 i-;;; disclaimer in the documentation and/or other materials Err bitreich.org 70 i-;;; provided with the distribution. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED Err bitreich.org 70 i-;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED Err bitreich.org 70 i-;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE Err bitreich.org 70 i-;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY Err bitreich.org 70 i-;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL Err bitreich.org 70 i-;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE Err bitreich.org 70 i-;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS Err bitreich.org 70 i-;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING Err bitreich.org 70 i-;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS Err bitreich.org 70 i-;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :flexi-streams-test) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-test-suite ((test-description &key show-progress-p) &body body) Err bitreich.org 70 i- "Defines a test suite. Three utilities are available inside of the Err bitreich.org 70 i-body of the macro: The function FAIL, and the macros CHECK and Err bitreich.org 70 i-WITH-EXPECTED-ERROR. FAIL, the lowest level utility, marks the test Err bitreich.org 70 i-defined by WITH-TEST-SUITE as failed. CHECK checks whether its argument is Err bitreich.org 70 i-true, otherwise it calls FAIL. If during evaluation of the specified Err bitreich.org 70 i-expression any condition is signalled, this is also considered a Err bitreich.org 70 i-failure. WITH-EXPECTED-ERROR executes its body and considers the test Err bitreich.org 70 i-a success if the specified error was signalled, otherwise it calls Err bitreich.org 70 i-FAIL. Err bitreich.org 70 i- Err bitreich.org 70 i-WITH-TEST-SUITE prints a simple progress report if SHOW-PROGRESS-P is true." Err bitreich.org 70 i- (with-unique-names (successp testcount) Err bitreich.org 70 i- (with-rebinding (show-progress-p) Err bitreich.org 70 i- `(let ((,successp t) Err bitreich.org 70 i- (,testcount 1)) Err bitreich.org 70 i- (when (and ,show-progress-p (not (numberp ,show-progress-p))) Err bitreich.org 70 i- (setq ,show-progress-p 1)) Err bitreich.org 70 i- (flet ((fail (format-str &rest format-args) Err bitreich.org 70 i- (apply #'format t format-str format-args) Err bitreich.org 70 i- (setq ,successp nil)) Err bitreich.org 70 i- (maybe-show-progress () Err bitreich.org 70 i- (when (and ,show-progress-p (zerop (mod ,testcount ,show-progress-p))) Err bitreich.org 70 i- (format t ".") Err bitreich.org 70 i- (when (zerop (mod ,testcount (* 10 ,show-progress-p))) Err bitreich.org 70 i- (terpri)) Err bitreich.org 70 i- (force-output)) Err bitreich.org 70 i- (incf ,testcount))) Err bitreich.org 70 i- (macrolet ((check (expression) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (maybe-show-progress) Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (unless ,expression Err bitreich.org 70 i- (fail "~&Test ~S failed.~%" ',expression)) Err bitreich.org 70 i- (error (c) Err bitreich.org 70 i- (fail "~&Test ~S failed signalling error of type ~A: ~A.~%" Err bitreich.org 70 i- ',expression (type-of c) c))))) Err bitreich.org 70 i- (with-expected-error ((condition-type) &body body) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (maybe-show-progress) Err bitreich.org 70 i- (handler-case (progn ,@body) Err bitreich.org 70 i- (,condition-type () t) Err bitreich.org 70 i- (:no-error (&rest args) Err bitreich.org 70 i- (declare (ignore args)) Err bitreich.org 70 i- (fail "~&Expected condition ~S not signalled.~%" Err bitreich.org 70 i- ',condition-type)))))) Err bitreich.org 70 i- (format t "~&Test suite: ~S~%" ,test-description) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- ,successp)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; LW can't indent this correctly because it's in a MACROLET Err bitreich.org 70 i-#+:lispworks Err bitreich.org 70 i-(editor:setup-indent "with-expected-error" 1 2 4) Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +buffer-size+ 8192 Err bitreich.org 70 i- "Size of buffers for COPY-STREAM* below.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *copy-function* nil Err bitreich.org 70 i- "Which function to use when copying from one stream to the other - Err bitreich.org 70 i-see for example COPY-FILE below.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *this-file* (load-time-value Err bitreich.org 70 i- (or #.*compile-file-pathname* *load-pathname*)) Err bitreich.org 70 i- "The pathname of the file \(`test.lisp') where this variable was Err bitreich.org 70 i-defined.") Err bitreich.org 70 i- Err bitreich.org 70 i-#+:lispworks Err bitreich.org 70 i-(defun get-env-variable-as-directory (name) Err bitreich.org 70 i- (lw:when-let (string (lw:environment-variable name)) Err bitreich.org 70 i- (when (plusp (length string)) Err bitreich.org 70 i- (cond ((find (char string (1- (length string))) "\\/" :test #'char=) string) Err bitreich.org 70 i- (t (lw:string-append string "/")))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *tmp-dir* Err bitreich.org 70 i- (load-time-value Err bitreich.org 70 i- (merge-pathnames "odd-streams-test/" Err bitreich.org 70 i- #+:allegro (system:temporary-directory) Err bitreich.org 70 i- #+:lispworks (pathname (or (get-env-variable-as-directory "TEMP") Err bitreich.org 70 i- (get-env-variable-as-directory "TMP") Err bitreich.org 70 i- #+:win32 "C:/" Err bitreich.org 70 i- #-:win32 "/tmp/")) Err bitreich.org 70 i- #-(or :allegro :lispworks) #p"/tmp/")) Err bitreich.org 70 i- "The pathname of a temporary directory used for testing.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *test-files* Err bitreich.org 70 i- '(("kafka" (:utf8 :latin1 :cp1252)) Err bitreich.org 70 i- ("tilton" (:utf8 :ascii)) Err bitreich.org 70 i- ("hebrew" (:utf8 :latin8)) Err bitreich.org 70 i- ("russian" (:utf8 :koi8r)) Err bitreich.org 70 i- ("unicode_demo" (:utf8 :ucs2 :ucs4))) Err bitreich.org 70 i- "A list of test files where each entry consists of the name Err bitreich.org 70 i-prefix and a list of encodings.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun create-file-variants (file-name symbol) Err bitreich.org 70 i- "For a name suffix FILE-NAME and a symbol SYMBOL denoting an Err bitreich.org 70 i-encoding returns a list of pairs where the car is a full file Err bitreich.org 70 i-name and the cdr is the corresponding external format. This list Err bitreich.org 70 i-contains all possible variants w.r.t. to line-end conversion and Err bitreich.org 70 i-endianness." Err bitreich.org 70 i- (let ((args (ecase symbol Err bitreich.org 70 i- (:ascii '(:ascii)) Err bitreich.org 70 i- (:latin1 '(:latin-1)) Err bitreich.org 70 i- (:latin8 '(:hebrew)) Err bitreich.org 70 i- (:cp1252 '(:code-page :id 1252)) Err bitreich.org 70 i- (:koi8r '(:koi8-r)) Err bitreich.org 70 i- (:utf8 '(:utf-8)) Err bitreich.org 70 i- (:ucs2 '(:utf-16)) Err bitreich.org 70 i- (:ucs4 '(:utf-32)))) Err bitreich.org 70 i- (endianp (member symbol '(:ucs2 :ucs4)))) Err bitreich.org 70 i- (loop for little-endian in (if endianp '(t nil) '(t)) Err bitreich.org 70 i- for endian-suffix in (if endianp '("_le" "_be") '("")) Err bitreich.org 70 i- nconc (loop for eol-style in '(:lf :cr :crlf) Err bitreich.org 70 i- collect (cons (format nil "~A_~(~A~)_~(~A~)~A.txt" Err bitreich.org 70 i- file-name symbol eol-style endian-suffix) Err bitreich.org 70 i- (apply #'make-external-format Err bitreich.org 70 i- (append args `(:eol-style ,eol-style Err bitreich.org 70 i- :little-endian ,little-endian)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun create-test-combinations (file-name symbols &optional simplep) Err bitreich.org 70 i- "For a name suffix FILE-NAME and a list of symbols SYMBOLS denoting Err bitreich.org 70 i-different encodings of the corresponding file returns a list of lists Err bitreich.org 70 i-which can be used as arglists by COMPARE-FILES. If SIMPLEP is true, a Err bitreich.org 70 i-list which can be used for the string and sequence tests below is Err bitreich.org 70 i-returned." Err bitreich.org 70 i- (let ((file-variants (loop for symbol in symbols Err bitreich.org 70 i- nconc (create-file-variants file-name symbol)))) Err bitreich.org 70 i- (loop for (name-in . external-format-in) in file-variants Err bitreich.org 70 i- when simplep Err bitreich.org 70 i- collect (list name-in external-format-in) Err bitreich.org 70 i- else Err bitreich.org 70 i- nconc (loop for (name-out . external-format-out) in file-variants Err bitreich.org 70 i- collect (list name-in external-format-in name-out external-format-out))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun file-equal (file1 file2) Err bitreich.org 70 i- "Returns a true value iff FILE1 and FILE2 have the same Err bitreich.org 70 i-contents \(viewed as binary files)." Err bitreich.org 70 i- (with-open-file (stream1 file1 :element-type 'octet) Err bitreich.org 70 i- (with-open-file (stream2 file2 :element-type 'octet) Err bitreich.org 70 i- (and (= (file-length stream1) (file-length stream2)) Err bitreich.org 70 i- (loop for byte1 = (read-byte stream1 nil nil) Err bitreich.org 70 i- for byte2 = (read-byte stream2 nil nil) Err bitreich.org 70 i- while (and byte1 byte2) Err bitreich.org 70 i- always (= byte1 byte2)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun copy-stream (stream-in external-format-in stream-out external-format-out) Err bitreich.org 70 i- "Copies the contents of the binary stream STREAM-IN to the Err bitreich.org 70 i-binary stream STREAM-OUT using flexi streams - STREAM-IN is read Err bitreich.org 70 i-with the external format EXTERNAL-FORMAT-IN and STREAM-OUT is Err bitreich.org 70 i-written with EXTERNAL-FORMAT-OUT." Err bitreich.org 70 i- (let ((in (make-flexi-stream stream-in :external-format external-format-in)) Err bitreich.org 70 i- (out (make-flexi-stream stream-out :external-format external-format-out))) Err bitreich.org 70 i- (loop for line = (read-line in nil nil) Err bitreich.org 70 i- while line Err bitreich.org 70 i- do (write-line line out)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun copy-stream* (stream-in external-format-in stream-out external-format-out) Err bitreich.org 70 i- "Like COPY-STREAM, but uses READ-SEQUENCE and WRITE-SEQUENCE instead Err bitreich.org 70 i-of READ-LINE and WRITE-LINE." Err bitreich.org 70 i- (let ((in (make-flexi-stream stream-in :external-format external-format-in)) Err bitreich.org 70 i- (out (make-flexi-stream stream-out :external-format external-format-out)) Err bitreich.org 70 i- (buffer (make-array +buffer-size+ :element-type 'char*))) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- (let ((position (read-sequence buffer in))) Err bitreich.org 70 i- (when (zerop position) (return)) Err bitreich.org 70 i- (write-sequence buffer out :end position))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun copy-file (path-in external-format-in path-out external-format-out direction-out direction-in) Err bitreich.org 70 i- "Copies the contents of the file denoted by the pathname Err bitreich.org 70 i-PATH-IN to the file denoted by the pathname PATH-OUT using flexi Err bitreich.org 70 i-streams - STREAM-IN is read with the external format Err bitreich.org 70 i-EXTERNAL-FORMAT-IN and STREAM-OUT is written with Err bitreich.org 70 i-EXTERNAL-FORMAT-OUT. The input file is opened with Err bitreich.org 70 i-the :DIRECTION keyword argument DIRECTION-IN, the output file is Err bitreich.org 70 i-opened with the :DIRECTION keyword argument DIRECTION-OUT." Err bitreich.org 70 i- (with-open-file (in path-in Err bitreich.org 70 i- :element-type 'octet Err bitreich.org 70 i- :direction direction-in Err bitreich.org 70 i- :if-does-not-exist :error Err bitreich.org 70 i- :if-exists :overwrite) Err bitreich.org 70 i- (with-open-file (out path-out Err bitreich.org 70 i- :element-type 'octet Err bitreich.org 70 i- :direction direction-out Err bitreich.org 70 i- :if-does-not-exist :create Err bitreich.org 70 i- :if-exists :supersede) Err bitreich.org 70 i- (funcall *copy-function* in external-format-in out external-format-out)))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+:lispworks Err bitreich.org 70 i-(defun copy-file-lw (path-in external-format-in path-out external-format-out direction-out direction-in) Err bitreich.org 70 i- "Same as COPY-FILE, but uses character streams instead of Err bitreich.org 70 i-binary streams. Only used to test LispWorks-specific behaviour." Err bitreich.org 70 i- (with-open-file (in path-in Err bitreich.org 70 i- :external-format '(:latin-1 :eol-style :lf) Err bitreich.org 70 i- :element-type 'base-char Err bitreich.org 70 i- :direction direction-in Err bitreich.org 70 i- :if-does-not-exist :error Err bitreich.org 70 i- :if-exists :overwrite) Err bitreich.org 70 i- (with-open-file (out path-out Err bitreich.org 70 i- :external-format '(:latin-1 :eol-style :lf) Err bitreich.org 70 i- :element-type 'base-char Err bitreich.org 70 i- :direction direction-out Err bitreich.org 70 i- :direction :output Err bitreich.org 70 i- :if-does-not-exist :create Err bitreich.org 70 i- :if-exists :supersede) Err bitreich.org 70 i- (funcall *copy-function* in external-format-in out external-format-out)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun compare-files (&key verbose) Err bitreich.org 70 i- "Each test in this suite copies the contents of one file \(in the Err bitreich.org 70 i-`test' directory) to another file \(in a temporary directory) using Err bitreich.org 70 i-flexi streams with different external formats. The resulting file is Err bitreich.org 70 i-compared with an existing file in the `test' directory to check if the Err bitreich.org 70 i-outcome is as expected. Uses various variants of the :DIRECTION Err bitreich.org 70 i-keyword when opening the files. Err bitreich.org 70 i- Err bitreich.org 70 i-Returns a true value iff all tests succeeded. Prints information Err bitreich.org 70 i-about each individual comparison if VERBOSE is true." Err bitreich.org 70 i- (with-test-suite ("Reading/writing files" :show-progress-p (not verbose)) Err bitreich.org 70 i- (flet ((one-comparison (path-in external-format-in path-out external-format-out verbose) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&File ~S, using copy function ~S" (file-namestring path-in) *copy-function*) Err bitreich.org 70 i- (format t "~& and external formats ~S --> ~S" Err bitreich.org 70 i- (normalize-external-format external-format-in) Err bitreich.org 70 i- (normalize-external-format external-format-out))) Err bitreich.org 70 i- (let ((full-path-in (merge-pathnames path-in *this-file*)) Err bitreich.org 70 i- (full-path-out (ensure-directories-exist Err bitreich.org 70 i- (merge-pathnames path-out *tmp-dir*))) Err bitreich.org 70 i- (full-path-orig (merge-pathnames path-out *this-file*))) Err bitreich.org 70 i- (dolist (direction-out '(:output :io)) Err bitreich.org 70 i- (dolist (direction-in '(:input :io)) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&...directions ~S --> ~S" direction-in direction-out)) Err bitreich.org 70 i- (copy-file full-path-in external-format-in Err bitreich.org 70 i- full-path-out external-format-out Err bitreich.org 70 i- direction-out direction-in) Err bitreich.org 70 i- (check (file-equal full-path-out full-path-orig)) Err bitreich.org 70 i- #+:lispworks Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&...directions ~S --> ~S \(LispWorks)" direction-in direction-out)) Err bitreich.org 70 i- (copy-file-lw full-path-in external-format-in Err bitreich.org 70 i- full-path-out external-format-out Err bitreich.org 70 i- direction-out direction-in) Err bitreich.org 70 i- (check (file-equal full-path-out full-path-orig)))))))) Err bitreich.org 70 i- (loop with compare-files-args-list = (loop for (file-name symbols) in *test-files* Err bitreich.org 70 i- nconc (create-test-combinations file-name symbols)) Err bitreich.org 70 i- for *copy-function* in '(copy-stream copy-stream*) Err bitreich.org 70 i- do (loop for (path-in external-format-in path-out external-format-out) in compare-files-args-list Err bitreich.org 70 i- do (one-comparison path-in external-format-in path-out external-format-out verbose)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun file-as-octet-vector (pathspec) Err bitreich.org 70 i- "Returns the contents of the file denoted by PATHSPEC as a vector of Err bitreich.org 70 i-octets." Err bitreich.org 70 i- (with-open-file (in pathspec :element-type 'octet) Err bitreich.org 70 i- (let ((vector (make-array (file-length in) :element-type 'octet))) Err bitreich.org 70 i- (read-sequence vector in) Err bitreich.org 70 i- vector))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun file-as-string (pathspec external-format) Err bitreich.org 70 i- "Reads the contents of the file denoted by PATHSPEC using the Err bitreich.org 70 i-external format EXTERNAL-FORMAT and returns the result as a string." Err bitreich.org 70 i- (with-open-file (in pathspec :element-type 'octet) Err bitreich.org 70 i- (let* ((number-of-octets (file-length in)) Err bitreich.org 70 i- (in (make-flexi-stream in :external-format external-format)) Err bitreich.org 70 i- (string (make-array number-of-octets Err bitreich.org 70 i- :element-type #+:lispworks 'lw:simple-char Err bitreich.org 70 i- #-:lispworks 'character Err bitreich.org 70 i- :fill-pointer t))) Err bitreich.org 70 i- (setf (fill-pointer string) (read-sequence string in)) Err bitreich.org 70 i- string))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun old-string-to-octets (string &key Err bitreich.org 70 i- (external-format (make-external-format :latin1)) Err bitreich.org 70 i- (start 0) end) Err bitreich.org 70 i- "The old version of STRING-TO-OCTETS. We can use it to test Err bitreich.org 70 i-in-memory streams." Err bitreich.org 70 i- (declare (optimize speed)) Err bitreich.org 70 i- (with-output-to-sequence (out) Err bitreich.org 70 i- (let ((flexi (make-flexi-stream out :external-format external-format))) Err bitreich.org 70 i- (write-string string flexi :start start :end end)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun old-octets-to-string (vector &key Err bitreich.org 70 i- (external-format (make-external-format :latin1)) Err bitreich.org 70 i- (start 0) (end (length vector))) Err bitreich.org 70 i- "The old version of OCTETS-TO-STRING. We can use it to test Err bitreich.org 70 i-in-memory streams." Err bitreich.org 70 i- (declare (optimize speed)) Err bitreich.org 70 i- (with-input-from-sequence (in vector :start start :end end) Err bitreich.org 70 i- (let ((flexi (make-flexi-stream in :external-format external-format)) Err bitreich.org 70 i- (result (make-array (- end start) Err bitreich.org 70 i- :element-type #+:lispworks 'lw:simple-char Err bitreich.org 70 i- #-:lispworks 'character Err bitreich.org 70 i- :fill-pointer t))) Err bitreich.org 70 i- (setf (fill-pointer result) Err bitreich.org 70 i- (read-sequence result flexi)) Err bitreich.org 70 i- result))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun string-tests (&key verbose) Err bitreich.org 70 i- "Tests whether conversion from strings to octets and vice versa Err bitreich.org 70 i-works as expected. Also tests with the old versions of the conversion Err bitreich.org 70 i-functions in order to test in-memory streams." Err bitreich.org 70 i- (with-test-suite ("String tests" :show-progress-p (and (not verbose) 10)) Err bitreich.org 70 i- (flet ((one-string-test (pathspec external-format verbose) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&With external format ~S:" (normalize-external-format external-format))) Err bitreich.org 70 i- (let* ((full-path (merge-pathnames pathspec *this-file*)) Err bitreich.org 70 i- (octets-vector (file-as-octet-vector full-path)) Err bitreich.org 70 i- (octets-list (coerce octets-vector 'list)) Err bitreich.org 70 i- (string (file-as-string full-path external-format))) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&...testing OCTETS-TO-STRING")) Err bitreich.org 70 i- (check (string= (octets-to-string octets-vector :external-format external-format) string)) Err bitreich.org 70 i- (check (string= (octets-to-string octets-list :external-format external-format) string)) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&...testing STRING-TO-OCTETS")) Err bitreich.org 70 i- (check (equalp (string-to-octets string :external-format external-format) octets-vector)) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&...testing in-memory streams")) Err bitreich.org 70 i- (check (string= (old-octets-to-string octets-vector :external-format external-format) string)) Err bitreich.org 70 i- (check (string= (old-octets-to-string octets-list :external-format external-format) string)) Err bitreich.org 70 i- (check (equalp (old-string-to-octets string :external-format external-format) octets-vector))))) Err bitreich.org 70 i- (loop with simple-test-args-list = (loop for (file-name symbols) in *test-files* Err bitreich.org 70 i- nconc (create-test-combinations file-name symbols t)) Err bitreich.org 70 i- for (pathspec external-format) in simple-test-args-list Err bitreich.org 70 i- do (one-string-test pathspec external-format verbose))))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defun sequence-equal (seq1 seq2) Err bitreich.org 70 i- "Whether the two sequences have the same elements." Err bitreich.org 70 i- (and (= (length seq1) (length seq2)) Err bitreich.org 70 i- (loop for i below (length seq1) Err bitreich.org 70 i- always (eql (elt seq1 i) (elt seq2 i))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun sequence-tests (&key verbose) Err bitreich.org 70 i- "Several tests to confirm that READ-SEQUENCE and WRITE-SEQUENCE Err bitreich.org 70 i-behave as expected." Err bitreich.org 70 i- (with-test-suite ("Sequence tests" :show-progress-p (and (not verbose) 10)) Err bitreich.org 70 i- (flet ((one-sequence-test (pathspec external-format verbose) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&With external format ~S:" (normalize-external-format external-format))) Err bitreich.org 70 i- (let* ((full-path (merge-pathnames pathspec *this-file*)) Err bitreich.org 70 i- (file-string (file-as-string full-path external-format)) Err bitreich.org 70 i- (string-length (length file-string)) Err bitreich.org 70 i- (octets (file-as-octet-vector full-path)) Err bitreich.org 70 i- (octet-length (length octets))) Err bitreich.org 70 i- (when (external-format-equal external-format (make-external-format :utf8)) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&...reading octets")) Err bitreich.org 70 i- #-:openmcl Err bitreich.org 70 i- ;; FLEXI-STREAMS puts integers into the list, but OpenMCL Err bitreich.org 70 i- ;; thinks they are characters... Err bitreich.org 70 i- (with-open-file (in full-path :element-type 'octet) Err bitreich.org 70 i- (let* ((in (make-flexi-stream in :external-format external-format)) Err bitreich.org 70 i- (list (make-list octet-length))) Err bitreich.org 70 i- (setf (flexi-stream-element-type in) 'octet) Err bitreich.org 70 i- #-:clisp Err bitreich.org 70 i- (read-sequence list in) Err bitreich.org 70 i- #+:clisp Err bitreich.org 70 i- (ext:read-byte-sequence list in) Err bitreich.org 70 i- (check (sequence-equal list octets)))) Err bitreich.org 70 i- (with-open-file (in full-path :element-type 'octet) Err bitreich.org 70 i- (let* ((in (make-flexi-stream in :external-format external-format)) Err bitreich.org 70 i- (third (floor octet-length 3)) Err bitreich.org 70 i- (half (floor octet-length 2)) Err bitreich.org 70 i- (vector (make-array half :element-type 'octet))) Err bitreich.org 70 i- (check (sequence-equal (loop repeat third Err bitreich.org 70 i- collect (read-byte in)) Err bitreich.org 70 i- (subseq octets 0 third))) Err bitreich.org 70 i- (read-sequence vector in) Err bitreich.org 70 i- (check (sequence-equal vector (subseq octets third (+ third half))))))) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&...reading characters")) Err bitreich.org 70 i- (with-open-file (in full-path :element-type 'octet) Err bitreich.org 70 i- (let* ((in (make-flexi-stream in :external-format external-format)) Err bitreich.org 70 i- (string (make-string (- string-length 10) :element-type 'char*))) Err bitreich.org 70 i- (setf (flexi-stream-element-type in) 'octet) Err bitreich.org 70 i- (check (sequence-equal (loop repeat 10 Err bitreich.org 70 i- collect (read-char in)) Err bitreich.org 70 i- (subseq file-string 0 10))) Err bitreich.org 70 i- (read-sequence string in) Err bitreich.org 70 i- (check (sequence-equal string (subseq file-string 10))))) Err bitreich.org 70 i- (with-open-file (in full-path :element-type 'octet) Err bitreich.org 70 i- (let* ((in (make-flexi-stream in :external-format external-format)) Err bitreich.org 70 i- (list (make-list (- string-length 100)))) Err bitreich.org 70 i- (check (sequence-equal (loop repeat 50 Err bitreich.org 70 i- collect (read-char in)) Err bitreich.org 70 i- (subseq file-string 0 50))) Err bitreich.org 70 i- #-:clisp Err bitreich.org 70 i- (read-sequence list in) Err bitreich.org 70 i- #+:clisp Err bitreich.org 70 i- (ext:read-char-sequence list in) Err bitreich.org 70 i- (check (sequence-equal list (subseq file-string 50 (- string-length 50)))) Err bitreich.org 70 i- (check (sequence-equal (loop repeat 50 Err bitreich.org 70 i- collect (read-char in)) Err bitreich.org 70 i- (subseq file-string (- string-length 50)))))) Err bitreich.org 70 i- (with-open-file (in full-path :element-type 'octet) Err bitreich.org 70 i- (let* ((in (make-flexi-stream in :external-format external-format)) Err bitreich.org 70 i- (array (make-array (- string-length 50)))) Err bitreich.org 70 i- (check (sequence-equal (loop repeat 25 Err bitreich.org 70 i- collect (read-char in)) Err bitreich.org 70 i- (subseq file-string 0 25))) Err bitreich.org 70 i- #-:clisp Err bitreich.org 70 i- (read-sequence array in) Err bitreich.org 70 i- #+:clisp Err bitreich.org 70 i- (ext:read-char-sequence array in) Err bitreich.org 70 i- (check (sequence-equal array (subseq file-string 25 (- string-length 25)))) Err bitreich.org 70 i- (check (sequence-equal (loop repeat 25 Err bitreich.org 70 i- collect (read-char in)) Err bitreich.org 70 i- (subseq file-string (- string-length 25)))))) Err bitreich.org 70 i- (let ((path-out (ensure-directories-exist (merge-pathnames pathspec *tmp-dir*)))) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&...writing sequences")) Err bitreich.org 70 i- (with-open-file (out path-out Err bitreich.org 70 i- :direction :output Err bitreich.org 70 i- :if-exists :supersede Err bitreich.org 70 i- :element-type 'octet) Err bitreich.org 70 i- (let ((out (make-flexi-stream out :external-format external-format))) Err bitreich.org 70 i- (write-sequence octets out))) Err bitreich.org 70 i- (check (file-equal full-path path-out)) Err bitreich.org 70 i- (with-open-file (out path-out Err bitreich.org 70 i- :direction :output Err bitreich.org 70 i- :if-exists :supersede Err bitreich.org 70 i- :element-type 'octet) Err bitreich.org 70 i- (let ((out (make-flexi-stream out :external-format external-format))) Err bitreich.org 70 i- (write-sequence file-string out))) Err bitreich.org 70 i- (check (file-equal full-path path-out)) Err bitreich.org 70 i- (with-open-file (out path-out Err bitreich.org 70 i- :direction :output Err bitreich.org 70 i- :if-exists :supersede Err bitreich.org 70 i- :element-type 'octet) Err bitreich.org 70 i- (let ((out (make-flexi-stream out :external-format external-format))) Err bitreich.org 70 i- (write-sequence file-string out :end 100) Err bitreich.org 70 i- (write-sequence octets out Err bitreich.org 70 i- :start (length (string-to-octets file-string Err bitreich.org 70 i- :external-format external-format Err bitreich.org 70 i- :end 100))))) Err bitreich.org 70 i- (check (file-equal full-path path-out)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (loop with simple-test-args-list = (loop for (file-name symbols) in *test-files* Err bitreich.org 70 i- nconc (create-test-combinations file-name symbols t)) Err bitreich.org 70 i- for (pathspec external-format) in simple-test-args-list Err bitreich.org 70 i- do (one-sequence-test pathspec external-format verbose))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro using-values ((&rest values) &body body) Err bitreich.org 70 i- "Executes BODY and feeds an element from VALUES to the USE-VALUE Err bitreich.org 70 i-restart each time a EXTERNAL-FORMAT-ENCODING-ERROR is signalled. Err bitreich.org 70 i-Signals an error when there are more or less Err bitreich.org 70 i-EXTERNAL-FORMAT-ENCODING-ERRORs than there are elements in VALUES." Err bitreich.org 70 i- (with-unique-names (value-stack condition-counter) Err bitreich.org 70 i- `(let ((,value-stack ',values) Err bitreich.org 70 i- (,condition-counter 0)) Err bitreich.org 70 i- (handler-bind ((external-format-encoding-error Err bitreich.org 70 i- #'(lambda (c) Err bitreich.org 70 i- (declare (ignore c)) Err bitreich.org 70 i- (unless ,value-stack Err bitreich.org 70 i- (error "Too many encoding errors signalled, expected only ~A." Err bitreich.org 70 i- ,(length values))) Err bitreich.org 70 i- (incf ,condition-counter) Err bitreich.org 70 i- (use-value (pop ,value-stack))))) Err bitreich.org 70 i- (prog1 (progn ,@body) Err bitreich.org 70 i- (when ,value-stack Err bitreich.org 70 i- (error "~A encoding errors signalled, but ~A were expected." Err bitreich.org 70 i- ,condition-counter ,(length values)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun accept-overlong (octets code-point) Err bitreich.org 70 i- "Converts the `overlong' UTF-8 sequence OCTETS to using Err bitreich.org 70 i-OCTETS-TO-STRINGS, accepts the expected error with the corresponding Err bitreich.org 70 i-restart and checks that the result is CODE-POINT." Err bitreich.org 70 i- (handler-bind ((external-format-encoding-error Err bitreich.org 70 i- (lambda (c) Err bitreich.org 70 i- (declare (ignore c)) Err bitreich.org 70 i- (invoke-restart 'accept-overlong-sequence)))) Err bitreich.org 70 i- (string= (octets-to-string octets :external-format :utf-8) Err bitreich.org 70 i- (string (code-char code-point))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun read-flexi-line (sequence external-format) Err bitreich.org 70 i- "Creates and returns a string from the octet sequence SEQUENCE using Err bitreich.org 70 i-the external format EXTERNAL-FORMAT." Err bitreich.org 70 i- (with-input-from-sequence (in sequence) Err bitreich.org 70 i- (setq in (make-flexi-stream in :external-format external-format)) Err bitreich.org 70 i- (read-line in))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun read-flexi-line* (sequence external-format) Err bitreich.org 70 i- "Like READ-FLEXI-LINE but uses OCTETS-TO-STRING internally." Err bitreich.org 70 i- (octets-to-string sequence :external-format external-format)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun error-handling-tests (&key verbose) Err bitreich.org 70 i- "Tests several possible errors and how they are handled." Err bitreich.org 70 i- (with-test-suite ("Testing error handling" :show-progress-p (not verbose)) Err bitreich.org 70 i- (macrolet ((want-encoding-error (input format) Err bitreich.org 70 i- `(with-expected-error (external-format-encoding-error) Err bitreich.org 70 i- (read-flexi-line* ,input ,format)))) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&\"Overlong\" UTF-8 sequences")) Err bitreich.org 70 i- (want-encoding-error #(#b11000000 #b10000000) :utf-8) Err bitreich.org 70 i- (want-encoding-error #(#b11000001 #b10000000) :utf-8) Err bitreich.org 70 i- (want-encoding-error #(#b11100000 #b10011111 #b10000000) :utf-8) Err bitreich.org 70 i- (want-encoding-error #(#b11110000 #b10001111 #b10000000 #b10000000) :utf-8) Err bitreich.org 70 i- (check (accept-overlong #(#b11000000 #b10000000) #b00000000)) Err bitreich.org 70 i- (check (accept-overlong #(#b11000001 #b10000000) #b01000000)) Err bitreich.org 70 i- (check (accept-overlong #(#b11100000 #b10011111 #b10000000) #b011111000000)) Err bitreich.org 70 i- (check (accept-overlong #(#b11110000 #b10001111 #b10000000 #b10000000) Err bitreich.org 70 i- #b1111000000000000)) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&Invalid lead octets in UTF-8")) Err bitreich.org 70 i- (want-encoding-error #(#b11111000) :utf-8) Err bitreich.org 70 i- (want-encoding-error #(#b11111001) :utf-8) Err bitreich.org 70 i- (want-encoding-error #(#b11111100) :utf-8) Err bitreich.org 70 i- (want-encoding-error #(#b11111101) :utf-8) Err bitreich.org 70 i- (want-encoding-error #(#b11111110) :utf-8) Err bitreich.org 70 i- (want-encoding-error #(#b11111111) :utf-8) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&Illegal code points")) Err bitreich.org 70 i- (want-encoding-error #(#x00 #x00 #x11 #x00) :utf-32le) Err bitreich.org 70 i- (want-encoding-error #(#x00 #xd8) :utf-16le) Err bitreich.org 70 i- (want-encoding-error #(#xff #xdf) :utf-16le)) Err bitreich.org 70 i- (macrolet ((want-encoding-error (input format) Err bitreich.org 70 i- `(with-expected-error (external-format-encoding-error) Err bitreich.org 70 i- (read-flexi-line* ,input ,format)))) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&UTF-8 sequences which are too short")) Err bitreich.org 70 i- (want-encoding-error #(#xe4 #xf6 #xfc) :utf8) Err bitreich.org 70 i- (want-encoding-error #(#xc0) :utf8) Err bitreich.org 70 i- (want-encoding-error #(#xe0 #xff) :utf8) Err bitreich.org 70 i- (want-encoding-error #(#xf0 #xff #xff) :utf8) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&UTF-16 sequences with an odd number of octets")) Err bitreich.org 70 i- (want-encoding-error #(#x01) :utf-16le) Err bitreich.org 70 i- (want-encoding-error #(#x01 #x01 #x01) :utf-16le) Err bitreich.org 70 i- (want-encoding-error #(#x01) :utf-16be) Err bitreich.org 70 i- (want-encoding-error #(#x01 #x01 #x01) :utf-16be) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&Missing words in UTF-16")) Err bitreich.org 70 i- (want-encoding-error #(#x01 #xd8) :utf-16le) Err bitreich.org 70 i- (want-encoding-error #(#xd8 #x01) :utf-16be) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&Missing octets in UTF-32")) Err bitreich.org 70 i- (want-encoding-error #(#x01) :utf-32le) Err bitreich.org 70 i- (want-encoding-error #(#x01 #x01) :utf-32le) Err bitreich.org 70 i- (want-encoding-error #(#x01 #x01 #x01) :utf-32le) Err bitreich.org 70 i- (want-encoding-error #(#x01 #x01 #x01 #x01 #x01) :utf-32le) Err bitreich.org 70 i- (want-encoding-error #(#x01) :utf-32be) Err bitreich.org 70 i- (want-encoding-error #(#x01 #x01) :utf-32be) Err bitreich.org 70 i- (want-encoding-error #(#x01 #x01 #x01) :utf-32be) Err bitreich.org 70 i- (want-encoding-error #(#x01 #x01 #x01 #x01 #x01) :utf-32be)) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&Handling of EOF in the middle of CRLF")) Err bitreich.org 70 i- (check (string= #.(string #\Return) Err bitreich.org 70 i- (read-flexi-line `(,(char-code #\Return)) '(:ascii :eol-style :crlf)))) Err bitreich.org 70 i- (let ((*substitution-char* #\?)) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&Fixed substitution character #\?") Err bitreich.org 70 i- (format t "~&:ASCII doesn't have characters with char codes > 127")) Err bitreich.org 70 i- (check (string= "a??" (read-flexi-line `(,(char-code #\a) 128 200) :ascii))) Err bitreich.org 70 i- (check (string= "a??" (read-flexi-line* `#(,(char-code #\a) 128 200) :ascii))) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&:WINDOWS-1253 doesn't have a characters with codes 170 and 210")) Err bitreich.org 70 i- (check (string= "a??" (read-flexi-line `(,(char-code #\a) 170 210) :windows-1253))) Err bitreich.org 70 i- (check (string= "a??" (read-flexi-line* `#(,(char-code #\a) 170 210) :windows-1253))) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&Not a valid UTF-8 sequence")) Err bitreich.org 70 i- (check (string= "??" (read-flexi-line '(#xe4 #xf6 #xfc) :utf8)))) Err bitreich.org 70 i- (let ((*substitution-char* nil)) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&Variable substitution using USE-VALUE restart") Err bitreich.org 70 i- (format t "~&:ASCII doesn't have characters with char codes > 127")) Err bitreich.org 70 i- (check (string= "abc" (using-values (#\b #\c) Err bitreich.org 70 i- (read-flexi-line `(,(char-code #\a) 128 200) :ascii)))) Err bitreich.org 70 i- (check (string= "abc" (using-values (#\b #\c) Err bitreich.org 70 i- (read-flexi-line* `#(,(char-code #\a) 128 200) :ascii)))) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&:WINDOWS-1253 doesn't have a characters with codes 170 and 210")) Err bitreich.org 70 i- (check (string= "axy" (using-values (#\x #\y) Err bitreich.org 70 i- (read-flexi-line `(,(char-code #\a) 170 210) :windows-1253)))) Err bitreich.org 70 i- (check (string= "axy" (using-values (#\x #\y) Err bitreich.org 70 i- (read-flexi-line* `#(,(char-code #\a) 170 210) :windows-1253)))) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&Not a valid UTF-8 sequence")) Err bitreich.org 70 i- (check (string= "QW" (using-values (#\Q #\W) (read-flexi-line '(#xe4 #xf6 #xfc) :utf8)))) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&UTF-8 can't start neither with #b11111110 nor with #b11111111")) Err bitreich.org 70 i- (check (string= "QW" (using-values (#\Q #\W) (read-flexi-line '(#b11111110 #b11111111) :utf8)))) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&Only one octet in UTF-16 sequence")) Err bitreich.org 70 i- (check (string= "E" (using-values (#\E) (read-flexi-line '(#x01) :utf-16le)))) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&Two octets in UTF-16, but value of resulting word suggests that another word follows")) Err bitreich.org 70 i- (check (string= "R" (using-values (#\R) (read-flexi-line '(#x01 #xd8) :utf-16le)))) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&The second word must fit into the [#xdc00; #xdfff] interval, but it is #xdbff")) Err bitreich.org 70 i- (check (string= "T" (using-values (#\T) (read-flexi-line '(#x01 #xd8 #xff #xdb) :utf-16le)))) Err bitreich.org 70 i- (check (string= "T" (using-values (#\T) (read-flexi-line* #(#x01 #xd8 #xff #xdb) :utf-16le)))) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&The same as for little endian above, but using inverse order of bytes in words")) Err bitreich.org 70 i- (check (string= "E" (using-values (#\E) (read-flexi-line '(#x01) :utf-16be)))) Err bitreich.org 70 i- (check (string= "R" (using-values (#\R) (read-flexi-line '(#xd8 #x01) :utf-16be)))) Err bitreich.org 70 i- (check (string= "T" (using-values (#\T) (read-flexi-line '(#xd8 #x01 #xdb #xff) :utf-16be)))) Err bitreich.org 70 i- (check (string= "T" (using-values (#\T) (read-flexi-line* #(#xd8 #x01 #xdb #xff) :utf-16be)))) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~&EOF in the middle of a 4-octet sequence in UTF-32")) Err bitreich.org 70 i- (check (string= "Y" (using-values (#\Y) (read-flexi-line '(#x01) :utf-32le)))) Err bitreich.org 70 i- (check (string= "Y" (using-values (#\Y) (read-flexi-line '(#x01 #x01) :utf-32le)))) Err bitreich.org 70 i- (check (string= "Y" (using-values (#\Y) (read-flexi-line '(#x01 #x01 #x01) :utf-32le)))) Err bitreich.org 70 i- (check (string= "aY" (using-values (#\Y) Err bitreich.org 70 i- (read-flexi-line `(,(char-code #\a) #x00 #x00 #x00 #x01) :utf-32le)))) Err bitreich.org 70 i- (check (string= "Y" (using-values (#\Y) (read-flexi-line '(#x01) :utf-32be)))) Err bitreich.org 70 i- (check (string= "Y" (using-values (#\Y) (read-flexi-line '(#x01 #x01) :utf-32be)))) Err bitreich.org 70 i- (check (string= "Y" (using-values (#\Y) (read-flexi-line '(#x01 #x01 #x01) :utf-32be)))) Err bitreich.org 70 i- (check (string= "aY" (using-values (#\Y) Err bitreich.org 70 i- (read-flexi-line `(#x00 #x00 #x00 ,(char-code #\a) #x01) :utf-32be))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun unread-char-tests (&key verbose) Err bitreich.org 70 i- "Tests whether UNREAD-CHAR behaves as expected." Err bitreich.org 70 i- (with-test-suite ("UNREAD-CHAR behaviour." :show-progress-p (and (not verbose) 100)) Err bitreich.org 70 i- (flet ((test-one-file (file-name external-format) Err bitreich.org 70 i- (when verbose Err bitreich.org 70 i- (format t "~& ...and external format ~A" (normalize-external-format external-format))) Err bitreich.org 70 i- (with-open-file (in (merge-pathnames file-name *this-file*) Err bitreich.org 70 i- :element-type 'flex:octet) Err bitreich.org 70 i- (let ((in (make-flexi-stream in :external-format external-format))) Err bitreich.org 70 i- (loop repeat 300 Err bitreich.org 70 i- for char = (read-char in) Err bitreich.org 70 i- do (unread-char char in) Err bitreich.org 70 i- (check (char= (read-char in) char))))))) Err bitreich.org 70 i- (loop for (file-name symbols) in *test-files* Err bitreich.org 70 i- when verbose Err bitreich.org 70 i- do (format t "~&With file ~S" file-name) Err bitreich.org 70 i- do (loop for symbol in symbols Err bitreich.org 70 i- do (loop for (file-name . external-format) in (create-file-variants file-name symbol) Err bitreich.org 70 i- do (test-one-file file-name external-format))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun column-tests (&key verbose) Err bitreich.org 70 i- (with-test-suite ("STREAM-LINE-COLUMN tests" :show-progress-p (not verbose)) Err bitreich.org 70 i- (let* ((binary-stream (flexi-streams:make-in-memory-output-stream)) Err bitreich.org 70 i- (stream (flexi-streams:make-flexi-stream binary-stream :external-format :iso-8859-1))) Err bitreich.org 70 i- (write-sequence "hello" stream) Err bitreich.org 70 i- (format stream "~12Tworld") Err bitreich.org 70 i- (finish-output stream) Err bitreich.org 70 i- (check (string= "hello world" Err bitreich.org 70 i- (flexi-streams:octets-to-string Err bitreich.org 70 i- (flexi-streams::vector-stream-vector binary-stream) Err bitreich.org 70 i- :external-format :iso-8859-1))) Err bitreich.org 70 i- (terpri stream) Err bitreich.org 70 i- (check (= 0 (flexi-stream-column stream))) Err bitreich.org 70 i- (write-sequence "abc" stream) Err bitreich.org 70 i- (check (= 3 (flexi-stream-column stream))) Err bitreich.org 70 i- (terpri stream) Err bitreich.org 70 i- (check (= 0 (flexi-stream-column stream)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-external-format-tests (&key verbose) Err bitreich.org 70 i- (with-test-suite ("MAKE-EXTERNAL-FORMAT tests" :show-progress-p (not verbose)) Err bitreich.org 70 i- (flet ((make-case (real-name &key id name) Err bitreich.org 70 i- (list real-name Err bitreich.org 70 i- :id id Err bitreich.org 70 i- :input-names (list name (string-upcase name) (string-downcase name))))) Err bitreich.org 70 i- (let ((cases (append '((:utf-8 :id nil Err bitreich.org 70 i- :input-names (:utf8 :utf-8 "utf8" "utf-8" "UTF8" "UTF-8"))) Err bitreich.org 70 i- (loop for (name . real-name) in +name-map+ Err bitreich.org 70 i- unless (member :code-page (list name real-name)) Err bitreich.org 70 i- append (list (make-case real-name :name name) Err bitreich.org 70 i- (make-case real-name :name real-name))) Err bitreich.org 70 i- (loop for (name . definition) in +shortcut-map+ Err bitreich.org 70 i- for key = (car definition) Err bitreich.org 70 i- for id = (getf (cdr definition) :id) Err bitreich.org 70 i- for expected = (or (cdr (assoc key +name-map+)) key) Err bitreich.org 70 i- collect (make-case expected :id id :name name))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (loop for (expected-name . kwargs) in cases Err bitreich.org 70 i- for id = (getf kwargs :id) Err bitreich.org 70 i- for input-names = (getf kwargs :input-names) Err bitreich.org 70 i- do (loop for name in input-names Err bitreich.org 70 i- for ext-format = (make-external-format name) Err bitreich.org 70 i- do (check (eq (flex:external-format-name ext-format) expected-name)) Err bitreich.org 70 i- when id Err bitreich.org 70 i- do (check (= (flex:external-format-id ext-format) id)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (let ((error-cases '("utf-8 " " utf-8" "utf8 " " utf8" "utf89" :utf89 utf89 :code-page nil))) Err bitreich.org 70 i- (loop for input-name in error-cases Err bitreich.org 70 i- do (with-expected-error (external-format-error) Err bitreich.org 70 i- (make-external-format input-name)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun peek-byte-tests (&key verbose) Err bitreich.org 70 i- (with-test-suite ("PEEK-BYTE tests" :show-progress-p (not verbose)) Err bitreich.org 70 i- (flex:with-input-from-sequence (input #(0 1 2)) Err bitreich.org 70 i- (let ((stream (flex:make-flexi-stream input))) Err bitreich.org 70 i- ;; If peek-type was specified as 2 we need to peek the first octect equal to 2 Err bitreich.org 70 i- (check (= 2 (flex::peek-byte stream 2 nil 1))) Err bitreich.org 70 i- ;; also, the octet should be unread to the stream so that we can peek it again Err bitreich.org 70 i- (check (= 2 (flex::peek-byte stream nil nil nil))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun run-all-tests (&key verbose) Err bitreich.org 70 i- "Runs all tests for FLEXI-STREAMS and returns a true value iff all Err bitreich.org 70 i-tests succeeded. VERBOSE is interpreted by the individual test suites Err bitreich.org 70 i-above." Err bitreich.org 70 i- (let ((successp t)) Err bitreich.org 70 i- (macrolet ((run-test-suite (&body body) Err bitreich.org 70 i- `(unless (progn ,@body) Err bitreich.org 70 i- (setq successp nil)))) Err bitreich.org 70 i- (run-test-suite (compare-files :verbose verbose)) Err bitreich.org 70 i- (run-test-suite (string-tests :verbose verbose)) Err bitreich.org 70 i- (run-test-suite (sequence-tests :verbose verbose)) Err bitreich.org 70 i- (run-test-suite (error-handling-tests :verbose verbose)) Err bitreich.org 70 i- (run-test-suite (unread-char-tests :verbose verbose)) Err bitreich.org 70 i- (run-test-suite (column-tests :verbose verbose)) Err bitreich.org 70 i- (run-test-suite (make-external-format-tests :verbose verbose)) Err bitreich.org 70 i- (run-test-suite (peek-byte-tests :verbose verbose)) Err bitreich.org 70 i- (format t "~2&~:[Some tests failed~;All tests passed~]." successp) Err bitreich.org 70 i- successp))) Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/tilton_ascii_cr.txt b/3rdparties/software/flexi-streams-20190107-git/test/tilton_ascii_cr.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/tilton_ascii_cr.txt.gph bitreich.org 70 i@@ -1 +0,0 @@ Err bitreich.org 70 i-Programmers who lock onto a design decision and cling to it in the face ofcontradictory new information -- well, that's almost everyone in myexperience, so I better not say what I think of them or people will startsaying bad things about me on c.l.l. -- Ken Tilton%This reminds me of the NYC cabby who accepted a fare to Chicago. Whenthey got there and could not find the friend who was supposed to pay thefare he just laughed and said he should have known. -- Ken Tilton%>> Actually, I believe that Aikido, Jazz and Lisp are different appearances>> of the same thing.Yes, the Tao. /Everything/ is a different appearance of the tao. -- Ken Tilton"Ken, I went to the library and read up on Buddhism, and believe me, youare no Buddhist." -- Kenny's mom%That absolutely terrifies the herd-following, lockstep-marching,mainstream-saluting cowards that obediently dash out or online toscoop up books on The Latest Thing. They learn and use atrocities likeJava, C++, XML, and even Python for the security it gives them andthen sit there slaving away miserably, tediously, joylously paying offmortgages and supporting ungrateful teenagers who despise them, onlyto look out the double-sealed thermo-pane windows of theircentral-heated, sound-proofed, dead-bolted, suffocating little nestsinto the howling gale thinking "what do they know that I do not know?"when they see us under a lean-to hunched over our laptops to shieldthem from the rain laughing our asses off as we write great codebetween bong hits.... what was the question? -- Ken Tilton%Shut up! (That last phrase has four or more syllables if pronounced asintended.) -- Ken Tilton%Nonsense. You'll be using it for the GUI, not protein-folding. -- Ken Tilton (responding to a comment that LTK was slow because it was based on TK)%Continuations certainly are clever, but if we learned anything from therejection of the cover art for "Smell the Glove", it is that "there is afine line between stupid... and clever". -- Ken Tilton%Ah, there's no place like academia for dispassionate, intellectuallyhonest discussion of new ideas on their merits. Thank god for tenuregiving your bold antagonist the protection they needed to shout downyour iconoclastic..... hang on... -- Ken Tilton%Whoever objected must be in my killfile, ... -- Ken Tilton%From memory (but I think I have it right):"But Jesus said, Suffer captured variables, and forbid them not, to comeunto thine macro bodies: for of such is are DSLs made." -- Ken TiltonCan I get an Amen?%Awareness of defect is the first step to recovery. -- Ken Tilton%You made a bad analogy (there are no good ones, but you found a newlow) ... -- Ken Tilton%Yes, it is true that Kent Pitman was raised by a closet full of LispMachines, but the exception only proves the rule. -- Ken Tilton (in a postscript after positing that computer languages are not learned in infancy)%I suggest you try bartender's school to support yourself, startprogramming for fun again. -- Ken Tilton (responding to a comment that 98% of anything to do with computers was not interesting code)%You could add four lanes to my carpal tunnel and I still could notwrite all the code I am dying to write. -- Ken Tilton%Neutrality? I want to bury other languages, not have a gateway to them. -- Ken Tilton%Ken: "Cute puppy. Did you get it for companionship or to pick up chicks?"Simon: "Hunh? My puppy /always/ gives me companionship." -- Ken Tilton (on how he was understood by a native english speaker)% Err bitreich.org 70 i-\ No newline at end of file Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/tilton_ascii_crlf.txt b/3rdparties/software/flexi-streams-20190107-git/test/tilton_ascii_crlf.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/tilton_ascii_crlf.txt.gph bitreich.org 70 i@@ -1,96 +0,0 @@ Err bitreich.org 70 i-Programmers who lock onto a design decision and cling to it in the face of Err bitreich.org 70 i-contradictory new information -- well, that's almost everyone in my Err bitreich.org 70 i-experience, so I better not say what I think of them or people will start Err bitreich.org 70 i-saying bad things about me on c.l.l. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-This reminds me of the NYC cabby who accepted a fare to Chicago. When Err bitreich.org 70 i-they got there and could not find the friend who was supposed to pay the Err bitreich.org 70 i-fare he just laughed and said he should have known. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i->> Actually, I believe that Aikido, Jazz and Lisp are different appearances Err bitreich.org 70 i->> of the same thing. Err bitreich.org 70 i-Yes, the Tao. /Everything/ is a different appearance of the tao. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i- Err bitreich.org 70 i-"Ken, I went to the library and read up on Buddhism, and believe me, you Err bitreich.org 70 i-are no Buddhist." Err bitreich.org 70 i- -- Kenny's mom Err bitreich.org 70 i-% Err bitreich.org 70 i-That absolutely terrifies the herd-following, lockstep-marching, Err bitreich.org 70 i-mainstream-saluting cowards that obediently dash out or online to Err bitreich.org 70 i-scoop up books on The Latest Thing. They learn and use atrocities like Err bitreich.org 70 i-Java, C++, XML, and even Python for the security it gives them and Err bitreich.org 70 i-then sit there slaving away miserably, tediously, joylously paying off Err bitreich.org 70 i-mortgages and supporting ungrateful teenagers who despise them, only Err bitreich.org 70 i-to look out the double-sealed thermo-pane windows of their Err bitreich.org 70 i-central-heated, sound-proofed, dead-bolted, suffocating little nests Err bitreich.org 70 i-into the howling gale thinking "what do they know that I do not know?" Err bitreich.org 70 i-when they see us under a lean-to hunched over our laptops to shield Err bitreich.org 70 i-them from the rain laughing our asses off as we write great code Err bitreich.org 70 i-between bong hits.... what was the question? Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-Shut up! (That last phrase has four or more syllables if pronounced as Err bitreich.org 70 i-intended.) Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-Nonsense. You'll be using it for the GUI, not protein-folding. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i- (responding to a comment that LTK was slow because it Err bitreich.org 70 i- was based on TK) Err bitreich.org 70 i-% Err bitreich.org 70 i-Continuations certainly are clever, but if we learned anything from the Err bitreich.org 70 i-rejection of the cover art for "Smell the Glove", it is that "there is a Err bitreich.org 70 i-fine line between stupid... and clever". Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-Ah, there's no place like academia for dispassionate, intellectually Err bitreich.org 70 i-honest discussion of new ideas on their merits. Thank god for tenure Err bitreich.org 70 i-giving your bold antagonist the protection they needed to shout down Err bitreich.org 70 i-your iconoclastic..... hang on... Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-Whoever objected must be in my killfile, ... Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-From memory (but I think I have it right): Err bitreich.org 70 i- Err bitreich.org 70 i-"But Jesus said, Suffer captured variables, and forbid them not, to come Err bitreich.org 70 i-unto thine macro bodies: for of such is are DSLs made." Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i- Err bitreich.org 70 i-Can I get an Amen? Err bitreich.org 70 i-% Err bitreich.org 70 i-Awareness of defect is the first step to recovery. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-You made a bad analogy (there are no good ones, but you found a new Err bitreich.org 70 i-low) ... Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-Yes, it is true that Kent Pitman was raised by a closet full of Lisp Err bitreich.org 70 i-Machines, but the exception only proves the rule. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i- (in a postscript after positing that computer Err bitreich.org 70 i- languages are not learned in infancy) Err bitreich.org 70 i-% Err bitreich.org 70 i-I suggest you try bartender's school to support yourself, start Err bitreich.org 70 i-programming for fun again. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i- (responding to a comment that 98% of anything to do Err bitreich.org 70 i- with computers was not interesting code) Err bitreich.org 70 i-% Err bitreich.org 70 i-You could add four lanes to my carpal tunnel and I still could not Err bitreich.org 70 i-write all the code I am dying to write. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-Neutrality? I want to bury other languages, not have a gateway to them. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-Ken: "Cute puppy. Did you get it for companionship or to pick up chicks?" Err bitreich.org 70 i-Simon: "Hunh? My puppy /always/ gives me companionship." Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i- (on how he was understood by a native english speaker) Err bitreich.org 70 i-% Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/tilton_ascii_lf.txt b/3rdparties/software/flexi-streams-20190107-git/test/tilton_ascii_lf.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/tilton_ascii_lf.txt.gph bitreich.org 70 i@@ -1,96 +0,0 @@ Err bitreich.org 70 i-Programmers who lock onto a design decision and cling to it in the face of Err bitreich.org 70 i-contradictory new information -- well, that's almost everyone in my Err bitreich.org 70 i-experience, so I better not say what I think of them or people will start Err bitreich.org 70 i-saying bad things about me on c.l.l. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-This reminds me of the NYC cabby who accepted a fare to Chicago. When Err bitreich.org 70 i-they got there and could not find the friend who was supposed to pay the Err bitreich.org 70 i-fare he just laughed and said he should have known. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i->> Actually, I believe that Aikido, Jazz and Lisp are different appearances Err bitreich.org 70 i->> of the same thing. Err bitreich.org 70 i-Yes, the Tao. /Everything/ is a different appearance of the tao. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i- Err bitreich.org 70 i-"Ken, I went to the library and read up on Buddhism, and believe me, you Err bitreich.org 70 i-are no Buddhist." Err bitreich.org 70 i- -- Kenny's mom Err bitreich.org 70 i-% Err bitreich.org 70 i-That absolutely terrifies the herd-following, lockstep-marching, Err bitreich.org 70 i-mainstream-saluting cowards that obediently dash out or online to Err bitreich.org 70 i-scoop up books on The Latest Thing. They learn and use atrocities like Err bitreich.org 70 i-Java, C++, XML, and even Python for the security it gives them and Err bitreich.org 70 i-then sit there slaving away miserably, tediously, joylously paying off Err bitreich.org 70 i-mortgages and supporting ungrateful teenagers who despise them, only Err bitreich.org 70 i-to look out the double-sealed thermo-pane windows of their Err bitreich.org 70 i-central-heated, sound-proofed, dead-bolted, suffocating little nests Err bitreich.org 70 i-into the howling gale thinking "what do they know that I do not know?" Err bitreich.org 70 i-when they see us under a lean-to hunched over our laptops to shield Err bitreich.org 70 i-them from the rain laughing our asses off as we write great code Err bitreich.org 70 i-between bong hits.... what was the question? Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-Shut up! (That last phrase has four or more syllables if pronounced as Err bitreich.org 70 i-intended.) Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-Nonsense. You'll be using it for the GUI, not protein-folding. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i- (responding to a comment that LTK was slow because it Err bitreich.org 70 i- was based on TK) Err bitreich.org 70 i-% Err bitreich.org 70 i-Continuations certainly are clever, but if we learned anything from the Err bitreich.org 70 i-rejection of the cover art for "Smell the Glove", it is that "there is a Err bitreich.org 70 i-fine line between stupid... and clever". Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-Ah, there's no place like academia for dispassionate, intellectually Err bitreich.org 70 i-honest discussion of new ideas on their merits. Thank god for tenure Err bitreich.org 70 i-giving your bold antagonist the protection they needed to shout down Err bitreich.org 70 i-your iconoclastic..... hang on... Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-Whoever objected must be in my killfile, ... Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-From memory (but I think I have it right): Err bitreich.org 70 i- Err bitreich.org 70 i-"But Jesus said, Suffer captured variables, and forbid them not, to come Err bitreich.org 70 i-unto thine macro bodies: for of such is are DSLs made." Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i- Err bitreich.org 70 i-Can I get an Amen? Err bitreich.org 70 i-% Err bitreich.org 70 i-Awareness of defect is the first step to recovery. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-You made a bad analogy (there are no good ones, but you found a new Err bitreich.org 70 i-low) ... Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-Yes, it is true that Kent Pitman was raised by a closet full of Lisp Err bitreich.org 70 i-Machines, but the exception only proves the rule. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i- (in a postscript after positing that computer Err bitreich.org 70 i- languages are not learned in infancy) Err bitreich.org 70 i-% Err bitreich.org 70 i-I suggest you try bartender's school to support yourself, start Err bitreich.org 70 i-programming for fun again. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i- (responding to a comment that 98% of anything to do Err bitreich.org 70 i- with computers was not interesting code) Err bitreich.org 70 i-% Err bitreich.org 70 i-You could add four lanes to my carpal tunnel and I still could not Err bitreich.org 70 i-write all the code I am dying to write. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-Neutrality? I want to bury other languages, not have a gateway to them. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-Ken: "Cute puppy. Did you get it for companionship or to pick up chicks?" Err bitreich.org 70 i-Simon: "Hunh? My puppy /always/ gives me companionship." Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i- (on how he was understood by a native english speaker) Err bitreich.org 70 i-% Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/tilton_utf8_cr.txt b/3rdparties/software/flexi-streams-20190107-git/test/tilton_utf8_cr.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/tilton_utf8_cr.txt.gph bitreich.org 70 i@@ -1 +0,0 @@ Err bitreich.org 70 i-Programmers who lock onto a design decision and cling to it in the face ofcontradictory new information -- well, that's almost everyone in myexperience, so I better not say what I think of them or people will startsaying bad things about me on c.l.l. -- Ken Tilton%This reminds me of the NYC cabby who accepted a fare to Chicago. Whenthey got there and could not find the friend who was supposed to pay thefare he just laughed and said he should have known. -- Ken Tilton%>> Actually, I believe that Aikido, Jazz and Lisp are different appearances>> of the same thing.Yes, the Tao. /Everything/ is a different appearance of the tao. -- Ken Tilton"Ken, I went to the library and read up on Buddhism, and believe me, youare no Buddhist." -- Kenny's mom%That absolutely terrifies the herd-following, lockstep-marching,mainstream-saluting cowards that obediently dash out or online toscoop up books on The Latest Thing. They learn and use atrocities likeJava, C++, XML, and even Python for the security it gives them andthen sit there slaving away miserably, tediously, joylously paying offmortgages and supporting ungrateful teenagers who despise them, onlyto look out the double-sealed thermo-pane windows of theircentral-heated, sound-proofed, dead-bolted, suffocating little nestsinto the howling gale thinking "what do they know that I do not know?"when they see us under a lean-to hunched over our laptops to shieldthem from the rain laughing our asses off as we write great codebetween bong hits.... what was the question? -- Ken Tilton%Shut up! (That last phrase has four or more syllables if pronounced asintended.) -- Ken Tilton%Nonsense. You'll be using it for the GUI, not protein-folding. -- Ken Tilton (responding to a comment that LTK was slow because it was based on TK)%Continuations certainly are clever, but if we learned anything from therejection of the cover art for "Smell the Glove", it is that "there is afine line between stupid... and clever". -- Ken Tilton%Ah, there's no place like academia for dispassionate, intellectuallyhonest discussion of new ideas on their merits. Thank god for tenuregiving your bold antagonist the protection they needed to shout downyour iconoclastic..... hang on... -- Ken Tilton%Whoever objected must be in my killfile, ... -- Ken Tilton%From memory (but I think I have it right):"But Jesus said, Suffer captured variables, and forbid them not, to comeunto thine macro bodies: for of such is are DSLs made." -- Ken TiltonCan I get an Amen?%Awareness of defect is the first step to recovery. -- Ken Tilton%You made a bad analogy (there are no good ones, but you found a newlow) ... -- Ken Tilton%Yes, it is true that Kent Pitman was raised by a closet full of LispMachines, but the exception only proves the rule. -- Ken Tilton (in a postscript after positing that computer languages are not learned in infancy)%I suggest you try bartender's school to support yourself, startprogramming for fun again. -- Ken Tilton (responding to a comment that 98% of anything to do with computers was not interesting code)%You could add four lanes to my carpal tunnel and I still could notwrite all the code I am dying to write. -- Ken Tilton%Neutrality? I want to bury other languages, not have a gateway to them. -- Ken Tilton%Ken: "Cute puppy. Did you get it for companionship or to pick up chicks?"Simon: "Hunh? My puppy /always/ gives me companionship." -- Ken Tilton (on how he was understood by a native english speaker)% Err bitreich.org 70 i-\ No newline at end of file Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/tilton_utf8_crlf.txt b/3rdparties/software/flexi-streams-20190107-git/test/tilton_utf8_crlf.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/tilton_utf8_crlf.txt.gph bitreich.org 70 i@@ -1,96 +0,0 @@ Err bitreich.org 70 i-Programmers who lock onto a design decision and cling to it in the face of Err bitreich.org 70 i-contradictory new information -- well, that's almost everyone in my Err bitreich.org 70 i-experience, so I better not say what I think of them or people will start Err bitreich.org 70 i-saying bad things about me on c.l.l. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-This reminds me of the NYC cabby who accepted a fare to Chicago. When Err bitreich.org 70 i-they got there and could not find the friend who was supposed to pay the Err bitreich.org 70 i-fare he just laughed and said he should have known. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i->> Actually, I believe that Aikido, Jazz and Lisp are different appearances Err bitreich.org 70 i->> of the same thing. Err bitreich.org 70 i-Yes, the Tao. /Everything/ is a different appearance of the tao. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i- Err bitreich.org 70 i-"Ken, I went to the library and read up on Buddhism, and believe me, you Err bitreich.org 70 i-are no Buddhist." Err bitreich.org 70 i- -- Kenny's mom Err bitreich.org 70 i-% Err bitreich.org 70 i-That absolutely terrifies the herd-following, lockstep-marching, Err bitreich.org 70 i-mainstream-saluting cowards that obediently dash out or online to Err bitreich.org 70 i-scoop up books on The Latest Thing. They learn and use atrocities like Err bitreich.org 70 i-Java, C++, XML, and even Python for the security it gives them and Err bitreich.org 70 i-then sit there slaving away miserably, tediously, joylously paying off Err bitreich.org 70 i-mortgages and supporting ungrateful teenagers who despise them, only Err bitreich.org 70 i-to look out the double-sealed thermo-pane windows of their Err bitreich.org 70 i-central-heated, sound-proofed, dead-bolted, suffocating little nests Err bitreich.org 70 i-into the howling gale thinking "what do they know that I do not know?" Err bitreich.org 70 i-when they see us under a lean-to hunched over our laptops to shield Err bitreich.org 70 i-them from the rain laughing our asses off as we write great code Err bitreich.org 70 i-between bong hits.... what was the question? Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-Shut up! (That last phrase has four or more syllables if pronounced as Err bitreich.org 70 i-intended.) Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-Nonsense. You'll be using it for the GUI, not protein-folding. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i- (responding to a comment that LTK was slow because it Err bitreich.org 70 i- was based on TK) Err bitreich.org 70 i-% Err bitreich.org 70 i-Continuations certainly are clever, but if we learned anything from the Err bitreich.org 70 i-rejection of the cover art for "Smell the Glove", it is that "there is a Err bitreich.org 70 i-fine line between stupid... and clever". Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-Ah, there's no place like academia for dispassionate, intellectually Err bitreich.org 70 i-honest discussion of new ideas on their merits. Thank god for tenure Err bitreich.org 70 i-giving your bold antagonist the protection they needed to shout down Err bitreich.org 70 i-your iconoclastic..... hang on... Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-Whoever objected must be in my killfile, ... Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-From memory (but I think I have it right): Err bitreich.org 70 i- Err bitreich.org 70 i-"But Jesus said, Suffer captured variables, and forbid them not, to come Err bitreich.org 70 i-unto thine macro bodies: for of such is are DSLs made." Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i- Err bitreich.org 70 i-Can I get an Amen? Err bitreich.org 70 i-% Err bitreich.org 70 i-Awareness of defect is the first step to recovery. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-You made a bad analogy (there are no good ones, but you found a new Err bitreich.org 70 i-low) ... Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-Yes, it is true that Kent Pitman was raised by a closet full of Lisp Err bitreich.org 70 i-Machines, but the exception only proves the rule. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i- (in a postscript after positing that computer Err bitreich.org 70 i- languages are not learned in infancy) Err bitreich.org 70 i-% Err bitreich.org 70 i-I suggest you try bartender's school to support yourself, start Err bitreich.org 70 i-programming for fun again. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i- (responding to a comment that 98% of anything to do Err bitreich.org 70 i- with computers was not interesting code) Err bitreich.org 70 i-% Err bitreich.org 70 i-You could add four lanes to my carpal tunnel and I still could not Err bitreich.org 70 i-write all the code I am dying to write. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-Neutrality? I want to bury other languages, not have a gateway to them. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-Ken: "Cute puppy. Did you get it for companionship or to pick up chicks?" Err bitreich.org 70 i-Simon: "Hunh? My puppy /always/ gives me companionship." Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i- (on how he was understood by a native english speaker) Err bitreich.org 70 i-% Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/tilton_utf8_lf.txt b/3rdparties/software/flexi-streams-20190107-git/test/tilton_utf8_lf.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/tilton_utf8_lf.txt.gph bitreich.org 70 i@@ -1,96 +0,0 @@ Err bitreich.org 70 i-Programmers who lock onto a design decision and cling to it in the face of Err bitreich.org 70 i-contradictory new information -- well, that's almost everyone in my Err bitreich.org 70 i-experience, so I better not say what I think of them or people will start Err bitreich.org 70 i-saying bad things about me on c.l.l. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-This reminds me of the NYC cabby who accepted a fare to Chicago. When Err bitreich.org 70 i-they got there and could not find the friend who was supposed to pay the Err bitreich.org 70 i-fare he just laughed and said he should have known. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i->> Actually, I believe that Aikido, Jazz and Lisp are different appearances Err bitreich.org 70 i->> of the same thing. Err bitreich.org 70 i-Yes, the Tao. /Everything/ is a different appearance of the tao. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i- Err bitreich.org 70 i-"Ken, I went to the library and read up on Buddhism, and believe me, you Err bitreich.org 70 i-are no Buddhist." Err bitreich.org 70 i- -- Kenny's mom Err bitreich.org 70 i-% Err bitreich.org 70 i-That absolutely terrifies the herd-following, lockstep-marching, Err bitreich.org 70 i-mainstream-saluting cowards that obediently dash out or online to Err bitreich.org 70 i-scoop up books on The Latest Thing. They learn and use atrocities like Err bitreich.org 70 i-Java, C++, XML, and even Python for the security it gives them and Err bitreich.org 70 i-then sit there slaving away miserably, tediously, joylously paying off Err bitreich.org 70 i-mortgages and supporting ungrateful teenagers who despise them, only Err bitreich.org 70 i-to look out the double-sealed thermo-pane windows of their Err bitreich.org 70 i-central-heated, sound-proofed, dead-bolted, suffocating little nests Err bitreich.org 70 i-into the howling gale thinking "what do they know that I do not know?" Err bitreich.org 70 i-when they see us under a lean-to hunched over our laptops to shield Err bitreich.org 70 i-them from the rain laughing our asses off as we write great code Err bitreich.org 70 i-between bong hits.... what was the question? Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-Shut up! (That last phrase has four or more syllables if pronounced as Err bitreich.org 70 i-intended.) Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-Nonsense. You'll be using it for the GUI, not protein-folding. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i- (responding to a comment that LTK was slow because it Err bitreich.org 70 i- was based on TK) Err bitreich.org 70 i-% Err bitreich.org 70 i-Continuations certainly are clever, but if we learned anything from the Err bitreich.org 70 i-rejection of the cover art for "Smell the Glove", it is that "there is a Err bitreich.org 70 i-fine line between stupid... and clever". Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-Ah, there's no place like academia for dispassionate, intellectually Err bitreich.org 70 i-honest discussion of new ideas on their merits. Thank god for tenure Err bitreich.org 70 i-giving your bold antagonist the protection they needed to shout down Err bitreich.org 70 i-your iconoclastic..... hang on... Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-Whoever objected must be in my killfile, ... Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-From memory (but I think I have it right): Err bitreich.org 70 i- Err bitreich.org 70 i-"But Jesus said, Suffer captured variables, and forbid them not, to come Err bitreich.org 70 i-unto thine macro bodies: for of such is are DSLs made." Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i- Err bitreich.org 70 i-Can I get an Amen? Err bitreich.org 70 i-% Err bitreich.org 70 i-Awareness of defect is the first step to recovery. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-You made a bad analogy (there are no good ones, but you found a new Err bitreich.org 70 i-low) ... Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-Yes, it is true that Kent Pitman was raised by a closet full of Lisp Err bitreich.org 70 i-Machines, but the exception only proves the rule. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i- (in a postscript after positing that computer Err bitreich.org 70 i- languages are not learned in infancy) Err bitreich.org 70 i-% Err bitreich.org 70 i-I suggest you try bartender's school to support yourself, start Err bitreich.org 70 i-programming for fun again. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i- (responding to a comment that 98% of anything to do Err bitreich.org 70 i- with computers was not interesting code) Err bitreich.org 70 i-% Err bitreich.org 70 i-You could add four lanes to my carpal tunnel and I still could not Err bitreich.org 70 i-write all the code I am dying to write. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-Neutrality? I want to bury other languages, not have a gateway to them. Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i-% Err bitreich.org 70 i-Ken: "Cute puppy. Did you get it for companionship or to pick up chicks?" Err bitreich.org 70 i-Simon: "Hunh? My puppy /always/ gives me companionship." Err bitreich.org 70 i- -- Ken Tilton Err bitreich.org 70 i- (on how he was understood by a native english speaker) Err bitreich.org 70 i-% Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs2_cr_be.txt b/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs2_cr_be.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs2_cr_be.txt.gph bitreich.org 70 iBinary files differ. Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs2_cr_le.txt b/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs2_cr_le.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs2_cr_le.txt.gph bitreich.org 70 iBinary files differ. Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs2_crlf_be.txt b/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs2_crlf_be.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs2_crlf_be.txt.gph bitreich.org 70 iBinary files differ. Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs2_crlf_le.txt b/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs2_crlf_le.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs2_crlf_le.txt.gph bitreich.org 70 iBinary files differ. Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs2_lf_be.txt b/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs2_lf_be.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs2_lf_be.txt.gph bitreich.org 70 iBinary files differ. Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs2_lf_le.txt b/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs2_lf_le.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs2_lf_le.txt.gph bitreich.org 70 iBinary files differ. Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs4_cr_be.txt b/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs4_cr_be.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs4_cr_be.txt.gph bitreich.org 70 iBinary files differ. Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs4_cr_le.txt b/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs4_cr_le.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs4_cr_le.txt.gph bitreich.org 70 iBinary files differ. Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs4_crlf_be.txt b/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs4_crlf_be.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs4_crlf_be.txt.gph bitreich.org 70 iBinary files differ. Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs4_crlf_le.txt b/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs4_crlf_le.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs4_crlf_le.txt.gph bitreich.org 70 iBinary files differ. Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs4_lf_be.txt b/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs4_lf_be.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs4_lf_be.txt.gph bitreich.org 70 iBinary files differ. Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs4_lf_le.txt b/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs4_lf_le.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_ucs4_lf_le.txt.gph bitreich.org 70 iBinary files differ. Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_utf8_cr.txt b/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_utf8_cr.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_utf8_cr.txt.gph bitreich.org 70 i@@ -1 +0,0 @@ Err bitreich.org 70 i-UTF-8 encoded sample plain-text file‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾Markus Kuhn [ˈmaʳkʊs kuːn] — 2002-07-25The ASCII compatible UTF-8 encoding used in this plain-text fileis defined in Unicode, ISO 10646-1, and RFC 2279.Using Unicode/UTF-8, you can write in emails and source code things such asMathematics and sciences: ∮ E⋅da = Q, n → ∞, ∑ f(i) = ∏ g(i), ⎧⎡⎛┌─────┐⎞⎤⎫ ⎪⎢⎜│a²+b³ ⎟⎥⎪ ∀x∈ℝ: ⌈x⌉ = −⌊−x⌋, α ∧ ¬β = ¬(¬α ∨ β), ⎪⎢⎜│───── ⎟⎥⎪ ⎪⎢⎜⎷ c₈ ⎟⎥⎪ ℕ ⊆ ℕ₀ ⊂ ℤ ⊂ ℚ ⊂ ℝ ⊂ ℂ, ⎨⎢⎜ ⎟⎥⎬ ⎪⎢⎜ ∞ ⎟⎥⎪ ⊥ < a ≠ b ≡ c ≤ d ≪ ⊤ ⇒ (⟦A⟧ ⇔ ⟪B⟫), ⎪⎢⎜ ⎲ ⎟⎥⎪ ⎪⎢⎜ ⎳aⁱ-bⁱ⎟⎥⎪ 2H₂ + O₂ ⇌ 2H₂O, R = 4.7 kΩ, ⌀ 200 mm ⎩⎣⎝i=1 ⎠⎦⎭Linguistics and dictionaries: ði ıntəˈnæʃənəl fəˈnɛtık əsoʊsiˈeıʃn Y [ˈʏpsilɔn], Yen [jɛn], Yoga [ˈjoːgɑ]APL: ((V⍳V)=⍳⍴V)/V←,V ⌷←⍳→⍴∆∇⊃‾⍎⍕⌈Nicer typography in plain text files: ╔══════════════════════════════════════════╗ ║ ║ ║ • ‘single’ and “double” quotes ║ ║ ║ ║ • Curly apostrophes: “We’ve been here” ║ ║ ║ ║ • Latin-1 apostrophe and accents: '´` ║ ║ ║ ║ • ‚deutsche‘ „Anführungszeichen“ ║ ║ ║ ║ • †, ‡, ‰, •, 3–4, —, −5/+5, ™, … ║ ║ ║ ║ • ASCII safety test: 1lI|, 0OD, 8B ║ ║ ╭─────────╮ ║ ║ • the euro symbol: │ 14.95 € │ ║ ║ ╰─────────╯ ║ ╚══════════════════════════════════════════╝Combining characters: STARGΛ̊TE SG-1, a = v̇ = r̈, a⃑ ⊥ b⃑Greek (in Polytonic): The Greek anthem: Σὲ γνωρίζω ἀπὸ τὴν κόψη τοῦ σπαθιοῦ τὴν τρομερή, σὲ γνωρίζω ἀπὸ τὴν ὄψη ποὺ μὲ βία μετράει τὴ γῆ. ᾿Απ᾿ τὰ κόκκαλα βγαλμένη τῶν ῾Ελλήνων τὰ ἱερά καὶ σὰν πρῶτα ἀνδρειωμένη χαῖρε, ὦ χαῖρε, ᾿Ελευθεριά! From a speech of Demosthenes in the 4th century BC: Οὐχὶ ταὐτὰ παρίσταταί μοι γιγνώσκειν, ὦ ἄνδρες ᾿Αθηναῖοι, ὅταν τ᾿ εἰς τὰ πράγματα ἀποβλέψω καὶ ὅταν πρὸς τοὺς λόγους οὓς ἀκούω· τοὺς μὲν γὰρ λόγους περὶ τοῦ τιμωρήσασθαι Φίλιππον ὁρῶ γιγνομένους, τὰ δὲ πράγματ᾿ εἰς τοῦτο προήκοντα, ὥσθ᾿ ὅπως μὴ πεισόμεθ᾿ αὐτοὶ πρότερον κακῶς σκέψασθαι δέον. οὐδέν οὖν ἄλλο μοι δοκοῦσιν οἱ τὰ τοιαῦτα λέγοντες ἢ τὴν ὑπόθεσιν, περὶ ἧς βουλεύεσθαι, οὐχὶ τὴν οὖσαν παριστάντες ὑμῖν ἁμαρτάνειν. ἐγὼ δέ, ὅτι μέν ποτ᾿ ἐξῆν τῇ πόλει καὶ τὰ αὑτῆς ἔχειν ἀσφαλῶς καὶ Φίλιππον τιμωρήσασθαι, καὶ μάλ᾿ ἀκριβῶς οἶδα· ἐπ᾿ ἐμοῦ γάρ, οὐ πάλαι γέγονεν ταῦτ᾿ ἀμφότερα· νῦν μέντοι πέπεισμαι τοῦθ᾿ ἱκανὸν προλαβεῖν ἡμῖν εἶναι τὴν πρώτην, ὅπως τοὺς συμμάχους σώσομεν. ἐὰν γὰρ τοῦτο βεβαίως ὑπάρξῃ, τότε καὶ περὶ τοῦ τίνα τιμωρήσεταί τις καὶ ὃν τρόπον ἐξέσται σκοπεῖν· πρὶν δὲ τὴν ἀρχὴν ὀρθῶς ὑποθέσθαι, μάταιον ἡγοῦμαι περὶ τῆς τελευτῆς ὁντινοῦν ποιεῖσθαι λόγον. Δημοσθένους, Γ´ ᾿ΟλυνθιακὸςGeorgian: From a Unicode conference invitation: გთხოვთ ახლავე გაიაროთ რეგისტრაცია Unicode-ის მეათე საერთაშორისო კონფერენციაზე დასასწრებად, რომელიც გაიმართება 10-12 მარტს, ქ. მაინცში, გერმანიაში. კონფერენცია შეჰკრებს ერთად მსოფლიოს ექსპერტებს ისეთ დარგებში როგორიცაა ინტერნეტი და Unicode-ი, ინტერნაციონალიზაცია და ლოკალიზაცია, Unicode-ის გამოყენება ოპერაციულ სისტემებსა, და გამოყენებით პროგრამებში, შრიფტებში, ტექსტების დამუშავებასა და მრავალენოვან კომპიუტერულ სისტემებში.Russian: From a Unicode conference invitation: Зарегистрируйтесь сейчас на Десятую Международную Конференцию по Unicode, которая состоится 10-12 марта 1997 года в Майнце в Германии. Конференция соберет широкий круг экспертов по вопросам глобального Интернета и Unicode, локализации и интернационализации, воплощению и применению Unicode в различных операционных системах и программных приложениях, шрифтах, верстке и многоязычных компьютерных системах.Thai (UCS Level 2): Excerpt from a poetry on The Romance of The Three Kingdoms (a Chinese classic 'San Gua'): [----------------------------|------------------------] ๏ แผ่นดินฮั่นเสื่อมโทรมแสนสังเวช พระปกเกศกองบู๊กู้ขึ้นใหม่ สิบสองกษัตริย์ก่อนหน้าแลถัดไป สององค์ไซร้โง่เขลาเบาปัญญา ทรงนับถือขันทีเป็นที่พึ่ง บ้านเมืองจึงวิปริตเป็นนักหนา โฮจิ๋นเรียกทัพทั่วหัวเมืองมา หมายจะฆ่ามดชั่วตัวสำคัญ เหมือนขับไสไล่เสือจากเคหา รับหมาป่าเข้ามาเลยอาสัญ ฝ่ายอ้องอุ้นยุแยกให้แตกกัน ใช้สาวนั้นเป็นชนวนชื่นชวนใจ พลันลิฉุยกุยกีกลับก่อเหตุ ช่างอาเพศจริงหนาฟ้าร้องไห้ ต้องรบราฆ่าฟันจนบรรลัย ฤๅหาใครค้ำชูกู้บรรลังก์ ฯ (The above is a two-column text. If combining characters are handled correctly, the lines of the second column should be aligned with the | character above.)Ethiopian: Proverbs in the Amharic language: ሰማይ አይታረስ ንጉሥ አይከሰስ። ብላ ካለኝ እንደአባቴ በቆመጠኝ። ጌጥ ያለቤቱ ቁምጥና ነው። ደሀ በሕልሙ ቅቤ ባይጠጣ ንጣት በገደለው። የአፍ ወለምታ በቅቤ አይታሽም። አይጥ በበላ ዳዋ ተመታ። ሲተረጉሙ ይደረግሙ። ቀስ በቀስ፥ ዕንቁላል በእግሩ ይሄዳል። ድር ቢያብር አንበሳ ያስር። ሰው እንደቤቱ እንጅ እንደ ጉረቤቱ አይተዳደርም። እግዜር የከፈተውን ጉሮሮ ሳይዘጋው አይድርም። የጎረቤት ሌባ፥ ቢያዩት ይስቅ ባያዩት ያጠልቅ። ሥራ ከመፍታት ልጄን ላፋታት። ዓባይ ማደሪያ የለው፥ ግንድ ይዞ ይዞራል። የእስላም አገሩ መካ የአሞራ አገሩ ዋርካ። ተንጋሎ ቢተፉ ተመልሶ ባፉ። ወዳጅህ ማር ቢሆን ጨርስህ አትላሰው። እግርህን በፍራሽህ ልክ ዘርጋ።Runes: ᚻᛖ ᚳᚹᚫᚦ ᚦᚫᛏ ᚻᛖ ᛒᚢᛞᛖ ᚩᚾ ᚦᚫᛗ ᛚᚪᚾᛞᛖ ᚾᚩᚱᚦᚹᛖᚪᚱᛞᚢᛗ ᚹᛁᚦ ᚦᚪ ᚹᛖᛥᚫ (Old English, which transcribed into Latin reads 'He cwaeth that he bude thaem lande northweardum with tha Westsae.' and means 'He said that he lived in the northern land near the Western Sea.')Braille: ⡌⠁⠧⠑ ⠼⠁⠒ ⡍⠜⠇⠑⠹⠰⠎ ⡣⠕⠌ ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠙⠑⠁⠙⠒ ⠞⠕ ⠃⠑⠛⠔ ⠺⠊⠹⠲ ⡹⠻⠑ ⠊⠎ ⠝⠕ ⠙⠳⠃⠞ ⠱⠁⠞⠑⠧⠻ ⠁⠃⠳⠞ ⠹⠁⠞⠲ ⡹⠑ ⠗⠑⠛⠊⠌⠻ ⠕⠋ ⠙⠊⠎ ⠃⠥⠗⠊⠁⠇ ⠺⠁⠎ ⠎⠊⠛⠝⠫ ⠃⠹ ⠹⠑ ⠊⠇⠻⠛⠹⠍⠁⠝⠂ ⠹⠑ ⠊⠇⠻⠅⠂ ⠹⠑ ⠥⠝⠙⠻⠞⠁⠅⠻⠂ ⠁⠝⠙ ⠹⠑ ⠡⠊⠑⠋ ⠍⠳⠗⠝⠻⠲ ⡎⠊⠗⠕⠕⠛⠑ ⠎⠊⠛⠝⠫ ⠊⠞⠲ ⡁⠝⠙ ⡎⠊⠗⠕⠕⠛⠑⠰⠎ ⠝⠁⠍⠑ ⠺⠁⠎ ⠛⠕⠕⠙ ⠥⠏⠕⠝ ⠰⡡⠁⠝⠛⠑⠂ ⠋⠕⠗ ⠁⠝⠹⠹⠔⠛ ⠙⠑ ⠡⠕⠎⠑ ⠞⠕ ⠏⠥⠞ ⠙⠊⠎ ⠙⠁⠝⠙ ⠞⠕⠲ ⡕⠇⠙ ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ ⡍⠔⠙⠖ ⡊ ⠙⠕⠝⠰⠞ ⠍⠑⠁⠝ ⠞⠕ ⠎⠁⠹ ⠹⠁⠞ ⡊ ⠅⠝⠪⠂ ⠕⠋ ⠍⠹ ⠪⠝ ⠅⠝⠪⠇⠫⠛⠑⠂ ⠱⠁⠞ ⠹⠻⠑ ⠊⠎ ⠏⠜⠞⠊⠊⠥⠇⠜⠇⠹ ⠙⠑⠁⠙ ⠁⠃⠳⠞ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ ⡊ ⠍⠊⠣⠞ ⠙⠁⠧⠑ ⠃⠑⠲ ⠔⠊⠇⠔⠫⠂ ⠍⠹⠎⠑⠇⠋⠂ ⠞⠕ ⠗⠑⠛⠜⠙ ⠁ ⠊⠕⠋⠋⠔⠤⠝⠁⠊⠇ ⠁⠎ ⠹⠑ ⠙⠑⠁⠙⠑⠌ ⠏⠊⠑⠊⠑ ⠕⠋ ⠊⠗⠕⠝⠍⠕⠝⠛⠻⠹ ⠔ ⠹⠑ ⠞⠗⠁⠙⠑⠲ ⡃⠥⠞ ⠹⠑ ⠺⠊⠎⠙⠕⠍ ⠕⠋ ⠳⠗ ⠁⠝⠊⠑⠌⠕⠗⠎ ⠊⠎ ⠔ ⠹⠑ ⠎⠊⠍⠊⠇⠑⠆ ⠁⠝⠙ ⠍⠹ ⠥⠝⠙⠁⠇⠇⠪⠫ ⠙⠁⠝⠙⠎ ⠩⠁⠇⠇ ⠝⠕⠞ ⠙⠊⠌⠥⠗⠃ ⠊⠞⠂ ⠕⠗ ⠹⠑ ⡊⠳⠝⠞⠗⠹⠰⠎ ⠙⠕⠝⠑ ⠋⠕⠗⠲ ⡹⠳ ⠺⠊⠇⠇ ⠹⠻⠑⠋⠕⠗⠑ ⠏⠻⠍⠊⠞ ⠍⠑ ⠞⠕ ⠗⠑⠏⠑⠁⠞⠂ ⠑⠍⠏⠙⠁⠞⠊⠊⠁⠇⠇⠹⠂ ⠹⠁⠞ ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ (The first couple of paragraphs of "A Christmas Carol" by Dickens)Compact font selection example text: ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789 abcdefghijklmnopqrstuvwxyz £©µÀÆÖÞßéöÿ –—‘“”„†•…‰™œŠŸž€ ΑΒΓΔΩαβγδω АБВГДабвгд ∀∂∈ℝ∧∪≡∞ ↑↗↨↻⇣ ┐┼╔╘░►☺♀ fi�⑀₂ἠḂӥẄɐː⍎אԱაGreetings in various languages: Hello world, Καλημέρα κόσμε, コンニチハBox drawing alignment tests: █ ▉ ╔══╦══╗ ┌──┬──┐ ╭──┬──╮ ╭──┬──╮ ┏━━┳━━┓ ┎┒┏┑ ╷ ╻ ┏┯┓ ┌┰┐ ▊ ╱╲╱╲╳╳╳ ║┌─╨─┐║ │╔═╧═╗│ │╒═╪═╕│ │╓─╁─╖│ ┃┌─╂─┐┃ ┗╃╄┙ ╶┼╴╺╋╸┠┼┨ ┝╋┥ ▋ ╲╱╲╱╳╳╳ ║│╲ ╱│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╿ │┃ ┍╅╆┓ ╵ ╹ ┗┷┛ └┸┘ ▌ ╱╲╱╲╳╳╳ ╠╡ ╳ ╞╣ ├╢ ╟┤ ├┼─┼─┼┤ ├╫─╂─╫┤ ┣┿╾┼╼┿┫ ┕┛┖┚ ┌┄┄┐ ╎ ┏┅┅┓ ┋ ▍ ╲╱╲╱╳╳╳ ║│╱ ╲│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╽ │┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╏ ┇ ┋ ▎ ║└─╥─┘║ │╚═╤═╝│ │╘═╪═╛│ │╙─╀─╜│ ┃└─╂─┘┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╏ ┇ ┋ ▏ ╚══╩══╝ └──┴──┘ ╰──┴──╯ ╰──┴──╯ ┗━━┻━━┛ ▗▄▖▛▀▜ └╌╌┘ ╎ ┗╍╍┛ ┋ ▁▂▃▄▅▆▇█ ▝▀▘▙▄▟ Err bitreich.org 70 i-\ No newline at end of file Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_utf8_crlf.txt b/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_utf8_crlf.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_utf8_crlf.txt.gph bitreich.org 70 i@@ -1,212 +0,0 @@ Err bitreich.org 70 i- Err bitreich.org 70 i-UTF-8 encoded sample plain-text file Err bitreich.org 70 i-‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ Err bitreich.org 70 i- Err bitreich.org 70 i-Markus Kuhn [ˈmaʳkʊs kuːn] — 2002-07-25 Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-The ASCII compatible UTF-8 encoding used in this plain-text file Err bitreich.org 70 i-is defined in Unicode, ISO 10646-1, and RFC 2279. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Using Unicode/UTF-8, you can write in emails and source code things such as Err bitreich.org 70 i- Err bitreich.org 70 i-Mathematics and sciences: Err bitreich.org 70 i- Err bitreich.org 70 i- ∮ E⋅da = Q, n → ∞, ∑ f(i) = ∏ g(i), ⎧⎡⎛┌─────┐⎞⎤⎫ Err bitreich.org 70 i- ⎪⎢⎜│a²+b³ ⎟⎥⎪ Err bitreich.org 70 i- ∀x∈ℝ: ⌈x⌉ = −⌊−x⌋, α ∧ ¬β = ¬(¬α ∨ β), ⎪⎢⎜│───── ⎟⎥⎪ Err bitreich.org 70 i- ⎪⎢⎜⎷ c₈ ⎟⎥⎪ Err bitreich.org 70 i- ℕ ⊆ ℕ₀ ⊂ ℤ ⊂ ℚ ⊂ ℝ ⊂ ℂ, ⎨⎢⎜ ⎟⎥⎬ Err bitreich.org 70 i- ⎪⎢⎜ ∞ ⎟⎥⎪ Err bitreich.org 70 i- ⊥ < a ≠ b ≡ c ≤ d ≪ ⊤ ⇒ (⟦A⟧ ⇔ ⟪B⟫), ⎪⎢⎜ ⎲ ⎟⎥⎪ Err bitreich.org 70 i- ⎪⎢⎜ ⎳aⁱ-bⁱ⎟⎥⎪ Err bitreich.org 70 i- 2H₂ + O₂ ⇌ 2H₂O, R = 4.7 kΩ, ⌀ 200 mm ⎩⎣⎝i=1 ⎠⎦⎭ Err bitreich.org 70 i- Err bitreich.org 70 i-Linguistics and dictionaries: Err bitreich.org 70 i- Err bitreich.org 70 i- ði ıntəˈnæʃənəl fəˈnɛtık əsoʊsiˈeıʃn Err bitreich.org 70 i- Y [ˈʏpsilɔn], Yen [jɛn], Yoga [ˈjoːgɑ] Err bitreich.org 70 i- Err bitreich.org 70 i-APL: Err bitreich.org 70 i- Err bitreich.org 70 i- ((V⍳V)=⍳⍴V)/V←,V ⌷←⍳→⍴∆∇⊃‾⍎⍕⌈ Err bitreich.org 70 i- Err bitreich.org 70 i-Nicer typography in plain text files: Err bitreich.org 70 i- Err bitreich.org 70 i- ╔══════════════════════════════════════════╗ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • ‘single’ and “double” quotes ║ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • Curly apostrophes: “We’ve been here” ║ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • Latin-1 apostrophe and accents: '´` ║ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • ‚deutsche‘ „Anführungszeichen“ ║ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • †, ‡, ‰, •, 3–4, —, −5/+5, ™, … ║ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • ASCII safety test: 1lI|, 0OD, 8B ║ Err bitreich.org 70 i- ║ ╭─────────╮ ║ Err bitreich.org 70 i- ║ • the euro symbol: │ 14.95 € │ ║ Err bitreich.org 70 i- ║ ╰─────────╯ ║ Err bitreich.org 70 i- ╚══════════════════════════════════════════╝ Err bitreich.org 70 i- Err bitreich.org 70 i-Combining characters: Err bitreich.org 70 i- Err bitreich.org 70 i- STARGΛ̊TE SG-1, a = v̇ = r̈, a⃑ ⊥ b⃑ Err bitreich.org 70 i- Err bitreich.org 70 i-Greek (in Polytonic): Err bitreich.org 70 i- Err bitreich.org 70 i- The Greek anthem: Err bitreich.org 70 i- Err bitreich.org 70 i- Σὲ γνωρίζω ἀπὸ τὴν κόψη Err bitreich.org 70 i- τοῦ σπαθιοῦ τὴν τρομερή, Err bitreich.org 70 i- σὲ γνωρίζω ἀπὸ τὴν ὄψη Err bitreich.org 70 i- ποὺ μὲ βία μετράει τὴ γῆ. Err bitreich.org 70 i- Err bitreich.org 70 i- ᾿Απ᾿ τὰ κόκκαλα βγαλμένη Err bitreich.org 70 i- τῶν ῾Ελλήνων τὰ ἱερά Err bitreich.org 70 i- καὶ σὰν πρῶτα ἀνδρειωμένη Err bitreich.org 70 i- χαῖρε, ὦ χαῖρε, ᾿Ελευθεριά! Err bitreich.org 70 i- Err bitreich.org 70 i- From a speech of Demosthenes in the 4th century BC: Err bitreich.org 70 i- Err bitreich.org 70 i- Οὐχὶ ταὐτὰ παρίσταταί μοι γιγνώσκειν, ὦ ἄνδρες ᾿Αθηναῖοι, Err bitreich.org 70 i- ὅταν τ᾿ εἰς τὰ πράγματα ἀποβλέψω καὶ ὅταν πρὸς τοὺς Err bitreich.org 70 i- λόγους οὓς ἀκούω· τοὺς μὲν γὰρ λόγους περὶ τοῦ Err bitreich.org 70 i- τιμωρήσασθαι Φίλιππον ὁρῶ γιγνομένους, τὰ δὲ πράγματ᾿ Err bitreich.org 70 i- εἰς τοῦτο προήκοντα, ὥσθ᾿ ὅπως μὴ πεισόμεθ᾿ αὐτοὶ Err bitreich.org 70 i- πρότερον κακῶς σκέψασθαι δέον. οὐδέν οὖν ἄλλο μοι δοκοῦσιν Err bitreich.org 70 i- οἱ τὰ τοιαῦτα λέγοντες ἢ τὴν ὑπόθεσιν, περὶ ἧς βουλεύεσθαι, Err bitreich.org 70 i- οὐχὶ τὴν οὖσαν παριστάντες ὑμῖν ἁμαρτάνειν. ἐγὼ δέ, ὅτι μέν Err bitreich.org 70 i- ποτ᾿ ἐξῆν τῇ πόλει καὶ τὰ αὑτῆς ἔχειν ἀσφαλῶς καὶ Φίλιππον Err bitreich.org 70 i- τιμωρήσασθαι, καὶ μάλ᾿ ἀκριβῶς οἶδα· ἐπ᾿ ἐμοῦ γάρ, οὐ πάλαι Err bitreich.org 70 i- γέγονεν ταῦτ᾿ ἀμφότερα· νῦν μέντοι πέπεισμαι τοῦθ᾿ ἱκανὸν Err bitreich.org 70 i- προλαβεῖν ἡμῖν εἶναι τὴν πρώτην, ὅπως τοὺς συμμάχους Err bitreich.org 70 i- σώσομεν. ἐὰν γὰρ τοῦτο βεβαίως ὑπάρξῃ, τότε καὶ περὶ τοῦ Err bitreich.org 70 i- τίνα τιμωρήσεταί τις καὶ ὃν τρόπον ἐξέσται σκοπεῖν· πρὶν δὲ Err bitreich.org 70 i- τὴν ἀρχὴν ὀρθῶς ὑποθέσθαι, μάταιον ἡγοῦμαι περὶ τῆς Err bitreich.org 70 i- τελευτῆς ὁντινοῦν ποιεῖσθαι λόγον. Err bitreich.org 70 i- Err bitreich.org 70 i- Δημοσθένους, Γ´ ᾿Ολυνθιακὸς Err bitreich.org 70 i- Err bitreich.org 70 i-Georgian: Err bitreich.org 70 i- Err bitreich.org 70 i- From a Unicode conference invitation: Err bitreich.org 70 i- Err bitreich.org 70 i- გთხოვთ ახლავე გაიაროთ რეგისტრაცია Unicode-ის მეათე საერთაშორისო Err bitreich.org 70 i- კონფერენციაზე დასასწრებად, რომელიც გაიმართება 10-12 მარტს, Err bitreich.org 70 i- ქ. მაინცში, გერმანიაში. კონფერენცია შეჰკრებს ერთად მსოფლიოს Err bitreich.org 70 i- ექსპერტებს ისეთ დარგებში როგორიცაა ინტერნეტი და Unicode-ი, Err bitreich.org 70 i- ინტერნაციონალიზაცია და ლოკალიზაცია, Unicode-ის გამოყენება Err bitreich.org 70 i- ოპერაციულ სისტემებსა, და გამოყენებით პროგრამებში, შრიფტებში, Err bitreich.org 70 i- ტექსტების დამუშავებასა და მრავალენოვან კომპიუტერულ სისტემებში. Err bitreich.org 70 i- Err bitreich.org 70 i-Russian: Err bitreich.org 70 i- Err bitreich.org 70 i- From a Unicode conference invitation: Err bitreich.org 70 i- Err bitreich.org 70 i- Зарегистрируйтесь сейчас на Десятую Международную Конференцию по Err bitreich.org 70 i- Unicode, которая состоится 10-12 марта 1997 года в Майнце в Германии. Err bitreich.org 70 i- Конференция соберет широкий круг экспертов по вопросам глобального Err bitreich.org 70 i- Интернета и Unicode, локализации и интернационализации, воплощению и Err bitreich.org 70 i- применению Unicode в различных операционных системах и программных Err bitreich.org 70 i- приложениях, шрифтах, верстке и многоязычных компьютерных системах. Err bitreich.org 70 i- Err bitreich.org 70 i-Thai (UCS Level 2): Err bitreich.org 70 i- Err bitreich.org 70 i- Excerpt from a poetry on The Romance of The Three Kingdoms (a Chinese Err bitreich.org 70 i- classic 'San Gua'): Err bitreich.org 70 i- Err bitreich.org 70 i- [----------------------------|------------------------] Err bitreich.org 70 i- ๏ แผ่นดินฮั่นเสื่อมโทรมแสนสังเวช พระปกเกศกองบู๊กู้ขึ้นใหม่ Err bitreich.org 70 i- สิบสองกษัตริย์ก่อนหน้าแลถัดไป สององค์ไซร้โง่เขลาเบาปัญญา Err bitreich.org 70 i- ทรงนับถือขันทีเป็นที่พึ่ง บ้านเมืองจึงวิปริตเป็นนักหนา Err bitreich.org 70 i- โฮจิ๋นเรียกทัพทั่วหัวเมืองมา หมายจะฆ่ามดชั่วตัวสำคัญ Err bitreich.org 70 i- เหมือนขับไสไล่เสือจากเคหา รับหมาป่าเข้ามาเลยอาสัญ Err bitreich.org 70 i- ฝ่ายอ้องอุ้นยุแยกให้แตกกัน ใช้สาวนั้นเป็นชนวนชื่นชวนใจ Err bitreich.org 70 i- พลันลิฉุยกุยกีกลับก่อเหตุ ช่างอาเพศจริงหนาฟ้าร้องไห้ Err bitreich.org 70 i- ต้องรบราฆ่าฟันจนบรรลัย ฤๅหาใครค้ำชูกู้บรรลังก์ ฯ Err bitreich.org 70 i- Err bitreich.org 70 i- (The above is a two-column text. If combining characters are handled Err bitreich.org 70 i- correctly, the lines of the second column should be aligned with the Err bitreich.org 70 i- | character above.) Err bitreich.org 70 i- Err bitreich.org 70 i-Ethiopian: Err bitreich.org 70 i- Err bitreich.org 70 i- Proverbs in the Amharic language: Err bitreich.org 70 i- Err bitreich.org 70 i- ሰማይ አይታረስ ንጉሥ አይከሰስ። Err bitreich.org 70 i- ብላ ካለኝ እንደአባቴ በቆመጠኝ። Err bitreich.org 70 i- ጌጥ ያለቤቱ ቁምጥና ነው። Err bitreich.org 70 i- ደሀ በሕልሙ ቅቤ ባይጠጣ ንጣት በገደለው። Err bitreich.org 70 i- የአፍ ወለምታ በቅቤ አይታሽም። Err bitreich.org 70 i- አይጥ በበላ ዳዋ ተመታ። Err bitreich.org 70 i- ሲተረጉሙ ይደረግሙ። Err bitreich.org 70 i- ቀስ በቀስ፥ ዕንቁላል በእግሩ ይሄዳል። Err bitreich.org 70 i- ድር ቢያብር አንበሳ ያስር። Err bitreich.org 70 i- ሰው እንደቤቱ እንጅ እንደ ጉረቤቱ አይተዳደርም። Err bitreich.org 70 i- እግዜር የከፈተውን ጉሮሮ ሳይዘጋው አይድርም። Err bitreich.org 70 i- የጎረቤት ሌባ፥ ቢያዩት ይስቅ ባያዩት ያጠልቅ። Err bitreich.org 70 i- ሥራ ከመፍታት ልጄን ላፋታት። Err bitreich.org 70 i- ዓባይ ማደሪያ የለው፥ ግንድ ይዞ ይዞራል። Err bitreich.org 70 i- የእስላም አገሩ መካ የአሞራ አገሩ ዋርካ። Err bitreich.org 70 i- ተንጋሎ ቢተፉ ተመልሶ ባፉ። Err bitreich.org 70 i- ወዳጅህ ማር ቢሆን ጨርስህ አትላሰው። Err bitreich.org 70 i- እግርህን በፍራሽህ ልክ ዘርጋ። Err bitreich.org 70 i- Err bitreich.org 70 i-Runes: Err bitreich.org 70 i- Err bitreich.org 70 i- ᚻᛖ ᚳᚹᚫᚦ ᚦᚫᛏ ᚻᛖ ᛒᚢᛞᛖ ᚩᚾ ᚦᚫᛗ ᛚᚪᚾᛞᛖ ᚾᚩᚱᚦᚹᛖᚪᚱᛞᚢᛗ ᚹᛁᚦ ᚦᚪ ᚹᛖᛥᚫ Err bitreich.org 70 i- Err bitreich.org 70 i- (Old English, which transcribed into Latin reads 'He cwaeth that he Err bitreich.org 70 i- bude thaem lande northweardum with tha Westsae.' and means 'He said Err bitreich.org 70 i- that he lived in the northern land near the Western Sea.') Err bitreich.org 70 i- Err bitreich.org 70 i-Braille: Err bitreich.org 70 i- Err bitreich.org 70 i- ⡌⠁⠧⠑ ⠼⠁⠒ ⡍⠜⠇⠑⠹⠰⠎ ⡣⠕⠌ Err bitreich.org 70 i- Err bitreich.org 70 i- ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠙⠑⠁⠙⠒ ⠞⠕ ⠃⠑⠛⠔ ⠺⠊⠹⠲ ⡹⠻⠑ ⠊⠎ ⠝⠕ ⠙⠳⠃⠞ Err bitreich.org 70 i- ⠱⠁⠞⠑⠧⠻ ⠁⠃⠳⠞ ⠹⠁⠞⠲ ⡹⠑ ⠗⠑⠛⠊⠌⠻ ⠕⠋ ⠙⠊⠎ ⠃⠥⠗⠊⠁⠇ ⠺⠁⠎ Err bitreich.org 70 i- ⠎⠊⠛⠝⠫ ⠃⠹ ⠹⠑ ⠊⠇⠻⠛⠹⠍⠁⠝⠂ ⠹⠑ ⠊⠇⠻⠅⠂ ⠹⠑ ⠥⠝⠙⠻⠞⠁⠅⠻⠂ Err bitreich.org 70 i- ⠁⠝⠙ ⠹⠑ ⠡⠊⠑⠋ ⠍⠳⠗⠝⠻⠲ ⡎⠊⠗⠕⠕⠛⠑ ⠎⠊⠛⠝⠫ ⠊⠞⠲ ⡁⠝⠙ Err bitreich.org 70 i- ⡎⠊⠗⠕⠕⠛⠑⠰⠎ ⠝⠁⠍⠑ ⠺⠁⠎ ⠛⠕⠕⠙ ⠥⠏⠕⠝ ⠰⡡⠁⠝⠛⠑⠂ ⠋⠕⠗ ⠁⠝⠹⠹⠔⠛ ⠙⠑ Err bitreich.org 70 i- ⠡⠕⠎⠑ ⠞⠕ ⠏⠥⠞ ⠙⠊⠎ ⠙⠁⠝⠙ ⠞⠕⠲ Err bitreich.org 70 i- Err bitreich.org 70 i- ⡕⠇⠙ ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ Err bitreich.org 70 i- Err bitreich.org 70 i- ⡍⠔⠙⠖ ⡊ ⠙⠕⠝⠰⠞ ⠍⠑⠁⠝ ⠞⠕ ⠎⠁⠹ ⠹⠁⠞ ⡊ ⠅⠝⠪⠂ ⠕⠋ ⠍⠹ Err bitreich.org 70 i- ⠪⠝ ⠅⠝⠪⠇⠫⠛⠑⠂ ⠱⠁⠞ ⠹⠻⠑ ⠊⠎ ⠏⠜⠞⠊⠊⠥⠇⠜⠇⠹ ⠙⠑⠁⠙ ⠁⠃⠳⠞ Err bitreich.org 70 i- ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ ⡊ ⠍⠊⠣⠞ ⠙⠁⠧⠑ ⠃⠑⠲ ⠔⠊⠇⠔⠫⠂ ⠍⠹⠎⠑⠇⠋⠂ ⠞⠕ Err bitreich.org 70 i- ⠗⠑⠛⠜⠙ ⠁ ⠊⠕⠋⠋⠔⠤⠝⠁⠊⠇ ⠁⠎ ⠹⠑ ⠙⠑⠁⠙⠑⠌ ⠏⠊⠑⠊⠑ ⠕⠋ ⠊⠗⠕⠝⠍⠕⠝⠛⠻⠹ Err bitreich.org 70 i- ⠔ ⠹⠑ ⠞⠗⠁⠙⠑⠲ ⡃⠥⠞ ⠹⠑ ⠺⠊⠎⠙⠕⠍ ⠕⠋ ⠳⠗ ⠁⠝⠊⠑⠌⠕⠗⠎ Err bitreich.org 70 i- ⠊⠎ ⠔ ⠹⠑ ⠎⠊⠍⠊⠇⠑⠆ ⠁⠝⠙ ⠍⠹ ⠥⠝⠙⠁⠇⠇⠪⠫ ⠙⠁⠝⠙⠎ Err bitreich.org 70 i- ⠩⠁⠇⠇ ⠝⠕⠞ ⠙⠊⠌⠥⠗⠃ ⠊⠞⠂ ⠕⠗ ⠹⠑ ⡊⠳⠝⠞⠗⠹⠰⠎ ⠙⠕⠝⠑ ⠋⠕⠗⠲ ⡹⠳ Err bitreich.org 70 i- ⠺⠊⠇⠇ ⠹⠻⠑⠋⠕⠗⠑ ⠏⠻⠍⠊⠞ ⠍⠑ ⠞⠕ ⠗⠑⠏⠑⠁⠞⠂ ⠑⠍⠏⠙⠁⠞⠊⠊⠁⠇⠇⠹⠂ ⠹⠁⠞ Err bitreich.org 70 i- ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ Err bitreich.org 70 i- Err bitreich.org 70 i- (The first couple of paragraphs of "A Christmas Carol" by Dickens) Err bitreich.org 70 i- Err bitreich.org 70 i-Compact font selection example text: Err bitreich.org 70 i- Err bitreich.org 70 i- ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789 Err bitreich.org 70 i- abcdefghijklmnopqrstuvwxyz £©µÀÆÖÞßéöÿ Err bitreich.org 70 i- –—‘“”„†•…‰™œŠŸž€ ΑΒΓΔΩαβγδω АБВГДабвгд Err bitreich.org 70 i- ∀∂∈ℝ∧∪≡∞ ↑↗↨↻⇣ ┐┼╔╘░►☺♀ fi�⑀₂ἠḂӥẄɐː⍎אԱა Err bitreich.org 70 i- Err bitreich.org 70 i-Greetings in various languages: Err bitreich.org 70 i- Err bitreich.org 70 i- Hello world, Καλημέρα κόσμε, コンニチハ Err bitreich.org 70 i- Err bitreich.org 70 i-Box drawing alignment tests: █ Err bitreich.org 70 i- ▉ Err bitreich.org 70 i- ╔══╦══╗ ┌──┬──┐ ╭──┬──╮ ╭──┬──╮ ┏━━┳━━┓ ┎┒┏┑ ╷ ╻ ┏┯┓ ┌┰┐ ▊ ╱╲╱╲╳╳╳ Err bitreich.org 70 i- ║┌─╨─┐║ │╔═╧═╗│ │╒═╪═╕│ │╓─╁─╖│ ┃┌─╂─┐┃ ┗╃╄┙ ╶┼╴╺╋╸┠┼┨ ┝╋┥ ▋ ╲╱╲╱╳╳╳ Err bitreich.org 70 i- ║│╲ ╱│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╿ │┃ ┍╅╆┓ ╵ ╹ ┗┷┛ └┸┘ ▌ ╱╲╱╲╳╳╳ Err bitreich.org 70 i- ╠╡ ╳ ╞╣ ├╢ ╟┤ ├┼─┼─┼┤ ├╫─╂─╫┤ ┣┿╾┼╼┿┫ ┕┛┖┚ ┌┄┄┐ ╎ ┏┅┅┓ ┋ ▍ ╲╱╲╱╳╳╳ Err bitreich.org 70 i- ║│╱ ╲│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╽ │┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╏ ┇ ┋ ▎ Err bitreich.org 70 i- ║└─╥─┘║ │╚═╤═╝│ │╘═╪═╛│ │╙─╀─╜│ ┃└─╂─┘┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╏ ┇ ┋ ▏ Err bitreich.org 70 i- ╚══╩══╝ └──┴──┘ ╰──┴──╯ ╰──┴──╯ ┗━━┻━━┛ ▗▄▖▛▀▜ └╌╌┘ ╎ ┗╍╍┛ ┋ ▁▂▃▄▅▆▇█ Err bitreich.org 70 i- ▝▀▘▙▄▟ Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_utf8_lf.txt b/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_utf8_lf.txt /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/test/unicode_demo_utf8_lf.txt.gph bitreich.org 70 i@@ -1,212 +0,0 @@ Err bitreich.org 70 i- Err bitreich.org 70 i-UTF-8 encoded sample plain-text file Err bitreich.org 70 i-‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ Err bitreich.org 70 i- Err bitreich.org 70 i-Markus Kuhn [ˈmaʳkʊs kuːn] — 2002-07-25 Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-The ASCII compatible UTF-8 encoding used in this plain-text file Err bitreich.org 70 i-is defined in Unicode, ISO 10646-1, and RFC 2279. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Using Unicode/UTF-8, you can write in emails and source code things such as Err bitreich.org 70 i- Err bitreich.org 70 i-Mathematics and sciences: Err bitreich.org 70 i- Err bitreich.org 70 i- ∮ E⋅da = Q, n → ∞, ∑ f(i) = ∏ g(i), ⎧⎡⎛┌─────┐⎞⎤⎫ Err bitreich.org 70 i- ⎪⎢⎜│a²+b³ ⎟⎥⎪ Err bitreich.org 70 i- ∀x∈ℝ: ⌈x⌉ = −⌊−x⌋, α ∧ ¬β = ¬(¬α ∨ β), ⎪⎢⎜│───── ⎟⎥⎪ Err bitreich.org 70 i- ⎪⎢⎜⎷ c₈ ⎟⎥⎪ Err bitreich.org 70 i- ℕ ⊆ ℕ₀ ⊂ ℤ ⊂ ℚ ⊂ ℝ ⊂ ℂ, ⎨⎢⎜ ⎟⎥⎬ Err bitreich.org 70 i- ⎪⎢⎜ ∞ ⎟⎥⎪ Err bitreich.org 70 i- ⊥ < a ≠ b ≡ c ≤ d ≪ ⊤ ⇒ (⟦A⟧ ⇔ ⟪B⟫), ⎪⎢⎜ ⎲ ⎟⎥⎪ Err bitreich.org 70 i- ⎪⎢⎜ ⎳aⁱ-bⁱ⎟⎥⎪ Err bitreich.org 70 i- 2H₂ + O₂ ⇌ 2H₂O, R = 4.7 kΩ, ⌀ 200 mm ⎩⎣⎝i=1 ⎠⎦⎭ Err bitreich.org 70 i- Err bitreich.org 70 i-Linguistics and dictionaries: Err bitreich.org 70 i- Err bitreich.org 70 i- ði ıntəˈnæʃənəl fəˈnɛtık əsoʊsiˈeıʃn Err bitreich.org 70 i- Y [ˈʏpsilɔn], Yen [jɛn], Yoga [ˈjoːgɑ] Err bitreich.org 70 i- Err bitreich.org 70 i-APL: Err bitreich.org 70 i- Err bitreich.org 70 i- ((V⍳V)=⍳⍴V)/V←,V ⌷←⍳→⍴∆∇⊃‾⍎⍕⌈ Err bitreich.org 70 i- Err bitreich.org 70 i-Nicer typography in plain text files: Err bitreich.org 70 i- Err bitreich.org 70 i- ╔══════════════════════════════════════════╗ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • ‘single’ and “double” quotes ║ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • Curly apostrophes: “We’ve been here” ║ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • Latin-1 apostrophe and accents: '´` ║ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • ‚deutsche‘ „Anführungszeichen“ ║ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • †, ‡, ‰, •, 3–4, —, −5/+5, ™, … ║ Err bitreich.org 70 i- ║ ║ Err bitreich.org 70 i- ║ • ASCII safety test: 1lI|, 0OD, 8B ║ Err bitreich.org 70 i- ║ ╭─────────╮ ║ Err bitreich.org 70 i- ║ • the euro symbol: │ 14.95 € │ ║ Err bitreich.org 70 i- ║ ╰─────────╯ ║ Err bitreich.org 70 i- ╚══════════════════════════════════════════╝ Err bitreich.org 70 i- Err bitreich.org 70 i-Combining characters: Err bitreich.org 70 i- Err bitreich.org 70 i- STARGΛ̊TE SG-1, a = v̇ = r̈, a⃑ ⊥ b⃑ Err bitreich.org 70 i- Err bitreich.org 70 i-Greek (in Polytonic): Err bitreich.org 70 i- Err bitreich.org 70 i- The Greek anthem: Err bitreich.org 70 i- Err bitreich.org 70 i- Σὲ γνωρίζω ἀπὸ τὴν κόψη Err bitreich.org 70 i- τοῦ σπαθιοῦ τὴν τρομερή, Err bitreich.org 70 i- σὲ γνωρίζω ἀπὸ τὴν ὄψη Err bitreich.org 70 i- ποὺ μὲ βία μετράει τὴ γῆ. Err bitreich.org 70 i- Err bitreich.org 70 i- ᾿Απ᾿ τὰ κόκκαλα βγαλμένη Err bitreich.org 70 i- τῶν ῾Ελλήνων τὰ ἱερά Err bitreich.org 70 i- καὶ σὰν πρῶτα ἀνδρειωμένη Err bitreich.org 70 i- χαῖρε, ὦ χαῖρε, ᾿Ελευθεριά! Err bitreich.org 70 i- Err bitreich.org 70 i- From a speech of Demosthenes in the 4th century BC: Err bitreich.org 70 i- Err bitreich.org 70 i- Οὐχὶ ταὐτὰ παρίσταταί μοι γιγνώσκειν, ὦ ἄνδρες ᾿Αθηναῖοι, Err bitreich.org 70 i- ὅταν τ᾿ εἰς τὰ πράγματα ἀποβλέψω καὶ ὅταν πρὸς τοὺς Err bitreich.org 70 i- λόγους οὓς ἀκούω· τοὺς μὲν γὰρ λόγους περὶ τοῦ Err bitreich.org 70 i- τιμωρήσασθαι Φίλιππον ὁρῶ γιγνομένους, τὰ δὲ πράγματ᾿ Err bitreich.org 70 i- εἰς τοῦτο προήκοντα, ὥσθ᾿ ὅπως μὴ πεισόμεθ᾿ αὐτοὶ Err bitreich.org 70 i- πρότερον κακῶς σκέψασθαι δέον. οὐδέν οὖν ἄλλο μοι δοκοῦσιν Err bitreich.org 70 i- οἱ τὰ τοιαῦτα λέγοντες ἢ τὴν ὑπόθεσιν, περὶ ἧς βουλεύεσθαι, Err bitreich.org 70 i- οὐχὶ τὴν οὖσαν παριστάντες ὑμῖν ἁμαρτάνειν. ἐγὼ δέ, ὅτι μέν Err bitreich.org 70 i- ποτ᾿ ἐξῆν τῇ πόλει καὶ τὰ αὑτῆς ἔχειν ἀσφαλῶς καὶ Φίλιππον Err bitreich.org 70 i- τιμωρήσασθαι, καὶ μάλ᾿ ἀκριβῶς οἶδα· ἐπ᾿ ἐμοῦ γάρ, οὐ πάλαι Err bitreich.org 70 i- γέγονεν ταῦτ᾿ ἀμφότερα· νῦν μέντοι πέπεισμαι τοῦθ᾿ ἱκανὸν Err bitreich.org 70 i- προλαβεῖν ἡμῖν εἶναι τὴν πρώτην, ὅπως τοὺς συμμάχους Err bitreich.org 70 i- σώσομεν. ἐὰν γὰρ τοῦτο βεβαίως ὑπάρξῃ, τότε καὶ περὶ τοῦ Err bitreich.org 70 i- τίνα τιμωρήσεταί τις καὶ ὃν τρόπον ἐξέσται σκοπεῖν· πρὶν δὲ Err bitreich.org 70 i- τὴν ἀρχὴν ὀρθῶς ὑποθέσθαι, μάταιον ἡγοῦμαι περὶ τῆς Err bitreich.org 70 i- τελευτῆς ὁντινοῦν ποιεῖσθαι λόγον. Err bitreich.org 70 i- Err bitreich.org 70 i- Δημοσθένους, Γ´ ᾿Ολυνθιακὸς Err bitreich.org 70 i- Err bitreich.org 70 i-Georgian: Err bitreich.org 70 i- Err bitreich.org 70 i- From a Unicode conference invitation: Err bitreich.org 70 i- Err bitreich.org 70 i- გთხოვთ ახლავე გაიაროთ რეგისტრაცია Unicode-ის მეათე საერთაშორისო Err bitreich.org 70 i- კონფერენციაზე დასასწრებად, რომელიც გაიმართება 10-12 მარტს, Err bitreich.org 70 i- ქ. მაინცში, გერმანიაში. კონფერენცია შეჰკრებს ერთად მსოფლიოს Err bitreich.org 70 i- ექსპერტებს ისეთ დარგებში როგორიცაა ინტერნეტი და Unicode-ი, Err bitreich.org 70 i- ინტერნაციონალიზაცია და ლოკალიზაცია, Unicode-ის გამოყენება Err bitreich.org 70 i- ოპერაციულ სისტემებსა, და გამოყენებით პროგრამებში, შრიფტებში, Err bitreich.org 70 i- ტექსტების დამუშავებასა და მრავალენოვან კომპიუტერულ სისტემებში. Err bitreich.org 70 i- Err bitreich.org 70 i-Russian: Err bitreich.org 70 i- Err bitreich.org 70 i- From a Unicode conference invitation: Err bitreich.org 70 i- Err bitreich.org 70 i- Зарегистрируйтесь сейчас на Десятую Международную Конференцию по Err bitreich.org 70 i- Unicode, которая состоится 10-12 марта 1997 года в Майнце в Германии. Err bitreich.org 70 i- Конференция соберет широкий круг экспертов по вопросам глобального Err bitreich.org 70 i- Интернета и Unicode, локализации и интернационализации, воплощению и Err bitreich.org 70 i- применению Unicode в различных операционных системах и программных Err bitreich.org 70 i- приложениях, шрифтах, верстке и многоязычных компьютерных системах. Err bitreich.org 70 i- Err bitreich.org 70 i-Thai (UCS Level 2): Err bitreich.org 70 i- Err bitreich.org 70 i- Excerpt from a poetry on The Romance of The Three Kingdoms (a Chinese Err bitreich.org 70 i- classic 'San Gua'): Err bitreich.org 70 i- Err bitreich.org 70 i- [----------------------------|------------------------] Err bitreich.org 70 i- ๏ แผ่นดินฮั่นเสื่อมโทรมแสนสังเวช พระปกเกศกองบู๊กู้ขึ้นใหม่ Err bitreich.org 70 i- สิบสองกษัตริย์ก่อนหน้าแลถัดไป สององค์ไซร้โง่เขลาเบาปัญญา Err bitreich.org 70 i- ทรงนับถือขันทีเป็นที่พึ่ง บ้านเมืองจึงวิปริตเป็นนักหนา Err bitreich.org 70 i- โฮจิ๋นเรียกทัพทั่วหัวเมืองมา หมายจะฆ่ามดชั่วตัวสำคัญ Err bitreich.org 70 i- เหมือนขับไสไล่เสือจากเคหา รับหมาป่าเข้ามาเลยอาสัญ Err bitreich.org 70 i- ฝ่ายอ้องอุ้นยุแยกให้แตกกัน ใช้สาวนั้นเป็นชนวนชื่นชวนใจ Err bitreich.org 70 i- พลันลิฉุยกุยกีกลับก่อเหตุ ช่างอาเพศจริงหนาฟ้าร้องไห้ Err bitreich.org 70 i- ต้องรบราฆ่าฟันจนบรรลัย ฤๅหาใครค้ำชูกู้บรรลังก์ ฯ Err bitreich.org 70 i- Err bitreich.org 70 i- (The above is a two-column text. If combining characters are handled Err bitreich.org 70 i- correctly, the lines of the second column should be aligned with the Err bitreich.org 70 i- | character above.) Err bitreich.org 70 i- Err bitreich.org 70 i-Ethiopian: Err bitreich.org 70 i- Err bitreich.org 70 i- Proverbs in the Amharic language: Err bitreich.org 70 i- Err bitreich.org 70 i- ሰማይ አይታረስ ንጉሥ አይከሰስ። Err bitreich.org 70 i- ብላ ካለኝ እንደአባቴ በቆመጠኝ። Err bitreich.org 70 i- ጌጥ ያለቤቱ ቁምጥና ነው። Err bitreich.org 70 i- ደሀ በሕልሙ ቅቤ ባይጠጣ ንጣት በገደለው። Err bitreich.org 70 i- የአፍ ወለምታ በቅቤ አይታሽም። Err bitreich.org 70 i- አይጥ በበላ ዳዋ ተመታ። Err bitreich.org 70 i- ሲተረጉሙ ይደረግሙ። Err bitreich.org 70 i- ቀስ በቀስ፥ ዕንቁላል በእግሩ ይሄዳል። Err bitreich.org 70 i- ድር ቢያብር አንበሳ ያስር። Err bitreich.org 70 i- ሰው እንደቤቱ እንጅ እንደ ጉረቤቱ አይተዳደርም። Err bitreich.org 70 i- እግዜር የከፈተውን ጉሮሮ ሳይዘጋው አይድርም። Err bitreich.org 70 i- የጎረቤት ሌባ፥ ቢያዩት ይስቅ ባያዩት ያጠልቅ። Err bitreich.org 70 i- ሥራ ከመፍታት ልጄን ላፋታት። Err bitreich.org 70 i- ዓባይ ማደሪያ የለው፥ ግንድ ይዞ ይዞራል። Err bitreich.org 70 i- የእስላም አገሩ መካ የአሞራ አገሩ ዋርካ። Err bitreich.org 70 i- ተንጋሎ ቢተፉ ተመልሶ ባፉ። Err bitreich.org 70 i- ወዳጅህ ማር ቢሆን ጨርስህ አትላሰው። Err bitreich.org 70 i- እግርህን በፍራሽህ ልክ ዘርጋ። Err bitreich.org 70 i- Err bitreich.org 70 i-Runes: Err bitreich.org 70 i- Err bitreich.org 70 i- ᚻᛖ ᚳᚹᚫᚦ ᚦᚫᛏ ᚻᛖ ᛒᚢᛞᛖ ᚩᚾ ᚦᚫᛗ ᛚᚪᚾᛞᛖ ᚾᚩᚱᚦᚹᛖᚪᚱᛞᚢᛗ ᚹᛁᚦ ᚦᚪ ᚹᛖᛥᚫ Err bitreich.org 70 i- Err bitreich.org 70 i- (Old English, which transcribed into Latin reads 'He cwaeth that he Err bitreich.org 70 i- bude thaem lande northweardum with tha Westsae.' and means 'He said Err bitreich.org 70 i- that he lived in the northern land near the Western Sea.') Err bitreich.org 70 i- Err bitreich.org 70 i-Braille: Err bitreich.org 70 i- Err bitreich.org 70 i- ⡌⠁⠧⠑ ⠼⠁⠒ ⡍⠜⠇⠑⠹⠰⠎ ⡣⠕⠌ Err bitreich.org 70 i- Err bitreich.org 70 i- ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠙⠑⠁⠙⠒ ⠞⠕ ⠃⠑⠛⠔ ⠺⠊⠹⠲ ⡹⠻⠑ ⠊⠎ ⠝⠕ ⠙⠳⠃⠞ Err bitreich.org 70 i- ⠱⠁⠞⠑⠧⠻ ⠁⠃⠳⠞ ⠹⠁⠞⠲ ⡹⠑ ⠗⠑⠛⠊⠌⠻ ⠕⠋ ⠙⠊⠎ ⠃⠥⠗⠊⠁⠇ ⠺⠁⠎ Err bitreich.org 70 i- ⠎⠊⠛⠝⠫ ⠃⠹ ⠹⠑ ⠊⠇⠻⠛⠹⠍⠁⠝⠂ ⠹⠑ ⠊⠇⠻⠅⠂ ⠹⠑ ⠥⠝⠙⠻⠞⠁⠅⠻⠂ Err bitreich.org 70 i- ⠁⠝⠙ ⠹⠑ ⠡⠊⠑⠋ ⠍⠳⠗⠝⠻⠲ ⡎⠊⠗⠕⠕⠛⠑ ⠎⠊⠛⠝⠫ ⠊⠞⠲ ⡁⠝⠙ Err bitreich.org 70 i- ⡎⠊⠗⠕⠕⠛⠑⠰⠎ ⠝⠁⠍⠑ ⠺⠁⠎ ⠛⠕⠕⠙ ⠥⠏⠕⠝ ⠰⡡⠁⠝⠛⠑⠂ ⠋⠕⠗ ⠁⠝⠹⠹⠔⠛ ⠙⠑ Err bitreich.org 70 i- ⠡⠕⠎⠑ ⠞⠕ ⠏⠥⠞ ⠙⠊⠎ ⠙⠁⠝⠙ ⠞⠕⠲ Err bitreich.org 70 i- Err bitreich.org 70 i- ⡕⠇⠙ ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ Err bitreich.org 70 i- Err bitreich.org 70 i- ⡍⠔⠙⠖ ⡊ ⠙⠕⠝⠰⠞ ⠍⠑⠁⠝ ⠞⠕ ⠎⠁⠹ ⠹⠁⠞ ⡊ ⠅⠝⠪⠂ ⠕⠋ ⠍⠹ Err bitreich.org 70 i- ⠪⠝ ⠅⠝⠪⠇⠫⠛⠑⠂ ⠱⠁⠞ ⠹⠻⠑ ⠊⠎ ⠏⠜⠞⠊⠊⠥⠇⠜⠇⠹ ⠙⠑⠁⠙ ⠁⠃⠳⠞ Err bitreich.org 70 i- ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ ⡊ ⠍⠊⠣⠞ ⠙⠁⠧⠑ ⠃⠑⠲ ⠔⠊⠇⠔⠫⠂ ⠍⠹⠎⠑⠇⠋⠂ ⠞⠕ Err bitreich.org 70 i- ⠗⠑⠛⠜⠙ ⠁ ⠊⠕⠋⠋⠔⠤⠝⠁⠊⠇ ⠁⠎ ⠹⠑ ⠙⠑⠁⠙⠑⠌ ⠏⠊⠑⠊⠑ ⠕⠋ ⠊⠗⠕⠝⠍⠕⠝⠛⠻⠹ Err bitreich.org 70 i- ⠔ ⠹⠑ ⠞⠗⠁⠙⠑⠲ ⡃⠥⠞ ⠹⠑ ⠺⠊⠎⠙⠕⠍ ⠕⠋ ⠳⠗ ⠁⠝⠊⠑⠌⠕⠗⠎ Err bitreich.org 70 i- ⠊⠎ ⠔ ⠹⠑ ⠎⠊⠍⠊⠇⠑⠆ ⠁⠝⠙ ⠍⠹ ⠥⠝⠙⠁⠇⠇⠪⠫ ⠙⠁⠝⠙⠎ Err bitreich.org 70 i- ⠩⠁⠇⠇ ⠝⠕⠞ ⠙⠊⠌⠥⠗⠃ ⠊⠞⠂ ⠕⠗ ⠹⠑ ⡊⠳⠝⠞⠗⠹⠰⠎ ⠙⠕⠝⠑ ⠋⠕⠗⠲ ⡹⠳ Err bitreich.org 70 i- ⠺⠊⠇⠇ ⠹⠻⠑⠋⠕⠗⠑ ⠏⠻⠍⠊⠞ ⠍⠑ ⠞⠕ ⠗⠑⠏⠑⠁⠞⠂ ⠑⠍⠏⠙⠁⠞⠊⠊⠁⠇⠇⠹⠂ ⠹⠁⠞ Err bitreich.org 70 i- ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ Err bitreich.org 70 i- Err bitreich.org 70 i- (The first couple of paragraphs of "A Christmas Carol" by Dickens) Err bitreich.org 70 i- Err bitreich.org 70 i-Compact font selection example text: Err bitreich.org 70 i- Err bitreich.org 70 i- ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789 Err bitreich.org 70 i- abcdefghijklmnopqrstuvwxyz £©µÀÆÖÞßéöÿ Err bitreich.org 70 i- –—‘“”„†•…‰™œŠŸž€ ΑΒΓΔΩαβγδω АБВГДабвгд Err bitreich.org 70 i- ∀∂∈ℝ∧∪≡∞ ↑↗↨↻⇣ ┐┼╔╘░►☺♀ fi�⑀₂ἠḂӥẄɐː⍎אԱა Err bitreich.org 70 i- Err bitreich.org 70 i-Greetings in various languages: Err bitreich.org 70 i- Err bitreich.org 70 i- Hello world, Καλημέρα κόσμε, コンニチハ Err bitreich.org 70 i- Err bitreich.org 70 i-Box drawing alignment tests: █ Err bitreich.org 70 i- ▉ Err bitreich.org 70 i- ╔══╦══╗ ┌──┬──┐ ╭──┬──╮ ╭──┬──╮ ┏━━┳━━┓ ┎┒┏┑ ╷ ╻ ┏┯┓ ┌┰┐ ▊ ╱╲╱╲╳╳╳ Err bitreich.org 70 i- ║┌─╨─┐║ │╔═╧═╗│ │╒═╪═╕│ │╓─╁─╖│ ┃┌─╂─┐┃ ┗╃╄┙ ╶┼╴╺╋╸┠┼┨ ┝╋┥ ▋ ╲╱╲╱╳╳╳ Err bitreich.org 70 i- ║│╲ ╱│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╿ │┃ ┍╅╆┓ ╵ ╹ ┗┷┛ └┸┘ ▌ ╱╲╱╲╳╳╳ Err bitreich.org 70 i- ╠╡ ╳ ╞╣ ├╢ ╟┤ ├┼─┼─┼┤ ├╫─╂─╫┤ ┣┿╾┼╼┿┫ ┕┛┖┚ ┌┄┄┐ ╎ ┏┅┅┓ ┋ ▍ ╲╱╲╱╳╳╳ Err bitreich.org 70 i- ║│╱ ╲│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╽ │┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╏ ┇ ┋ ▎ Err bitreich.org 70 i- ║└─╥─┘║ │╚═╤═╝│ │╘═╪═╛│ │╙─╀─╜│ ┃└─╂─┘┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╏ ┇ ┋ ▏ Err bitreich.org 70 i- ╚══╩══╝ └──┴──┘ ╰──┴──╯ ╰──┴──╯ ┗━━┻━━┛ ▗▄▖▛▀▜ └╌╌┘ ╎ ┗╍╍┛ ┋ ▁▂▃▄▅▆▇█ Err bitreich.org 70 i- ▝▀▘▙▄▟ Err bitreich.org 70 1diff --git a/3rdparties/software/flexi-streams-20190107-git/util.lisp b/3rdparties/software/flexi-streams-20190107-git/util.lisp /scm/clic/file/3rdparties/software/flexi-streams-20190107-git/util.lisp.gph bitreich.org 70 i@@ -1,206 +0,0 @@ Err bitreich.org 70 i-;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: FLEXI-STREAMS; Base: 10 -*- Err bitreich.org 70 i-;;; $Header: /usr/local/cvsrep/flexi-streams/util.lisp,v 1.24 2008/05/25 21:26:12 edi Exp $ Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Copyright (c) 2005-2008, Dr. Edmund Weitz. All rights reserved. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Redistribution and use in source and binary forms, with or without Err bitreich.org 70 i-;;; modification, are permitted provided that the following conditions Err bitreich.org 70 i-;;; are met: Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions of source code must retain the above copyright Err bitreich.org 70 i-;;; notice, this list of conditions and the following disclaimer. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; * Redistributions in binary form must reproduce the above Err bitreich.org 70 i-;;; copyright notice, this list of conditions and the following Err bitreich.org 70 i-;;; disclaimer in the documentation and/or other materials Err bitreich.org 70 i-;;; provided with the distribution. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED Err bitreich.org 70 i-;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED Err bitreich.org 70 i-;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE Err bitreich.org 70 i-;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY Err bitreich.org 70 i-;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL Err bitreich.org 70 i-;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE Err bitreich.org 70 i-;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS Err bitreich.org 70 i-;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING Err bitreich.org 70 i-;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS Err bitreich.org 70 i-;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :flexi-streams) Err bitreich.org 70 i- Err bitreich.org 70 i-#+:lispworks Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (import '(lw:with-unique-names lw:when-let))) Err bitreich.org 70 i- Err bitreich.org 70 i-#-:lispworks Err bitreich.org 70 i-(defmacro when-let ((var form) &body body) Err bitreich.org 70 i- "Evaluates FORM and binds VAR to the result, then executes BODY Err bitreich.org 70 i-if VAR has a true value." Err bitreich.org 70 i- `(let ((,var ,form)) Err bitreich.org 70 i- (when ,var ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i-#-:lispworks Err bitreich.org 70 i-(defmacro with-unique-names ((&rest bindings) &body body) Err bitreich.org 70 i- "Syntax: WITH-UNIQUE-NAMES ( { var | (var x) }* ) declaration* form* Err bitreich.org 70 i- Err bitreich.org 70 i-Executes a series of forms with each VAR bound to a fresh, Err bitreich.org 70 i-uninterned symbol. The uninterned symbol is as if returned by a call Err bitreich.org 70 i-to GENSYM with the string denoted by X - or, if X is not supplied, the Err bitreich.org 70 i-string denoted by VAR - as argument. Err bitreich.org 70 i- Err bitreich.org 70 i-The variable bindings created are lexical unless special declarations Err bitreich.org 70 i-are specified. The scopes of the name bindings and declarations do not Err bitreich.org 70 i-include the Xs. Err bitreich.org 70 i- Err bitreich.org 70 i-The forms are evaluated in order, and the values of all but the last Err bitreich.org 70 i-are discarded \(that is, the body is an implicit PROGN)." Err bitreich.org 70 i- ;; reference implementation posted to comp.lang.lisp as Err bitreich.org 70 i- ;; by Vebjorn Ljosa - see also Err bitreich.org 70 i- ;; Err bitreich.org 70 i- `(let ,(mapcar #'(lambda (binding) Err bitreich.org 70 i- (check-type binding (or cons symbol)) Err bitreich.org 70 i- (if (consp binding) Err bitreich.org 70 i- (destructuring-bind (var x) binding Err bitreich.org 70 i- (check-type var symbol) Err bitreich.org 70 i- `(,var (gensym ,(etypecase x Err bitreich.org 70 i- (symbol (symbol-name x)) Err bitreich.org 70 i- (character (string x)) Err bitreich.org 70 i- (string x))))) Err bitreich.org 70 i- `(,binding (gensym ,(symbol-name binding))))) Err bitreich.org 70 i- bindings) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+:lispworks Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (setf (macro-function 'with-rebinding) Err bitreich.org 70 i- (macro-function 'lw:rebinding))) Err bitreich.org 70 i- Err bitreich.org 70 i-#-:lispworks Err bitreich.org 70 i-(defmacro with-rebinding (bindings &body body) Err bitreich.org 70 i- "WITH-REBINDING ( { var | (var prefix) }* ) form* Err bitreich.org 70 i- Err bitreich.org 70 i-Evaluates a series of forms in the lexical environment that is Err bitreich.org 70 i-formed by adding the binding of each VAR to a fresh, uninterned Err bitreich.org 70 i-symbol, and the binding of that fresh, uninterned symbol to VAR's Err bitreich.org 70 i-original value, i.e., its value in the current lexical environment. Err bitreich.org 70 i- Err bitreich.org 70 i-The uninterned symbol is created as if by a call to GENSYM with the Err bitreich.org 70 i-string denoted by PREFIX - or, if PREFIX is not supplied, the string Err bitreich.org 70 i-denoted by VAR - as argument. Err bitreich.org 70 i- Err bitreich.org 70 i-The forms are evaluated in order, and the values of all but the last Err bitreich.org 70 i-are discarded \(that is, the body is an implicit PROGN)." Err bitreich.org 70 i- ;; reference implementation posted to comp.lang.lisp as Err bitreich.org 70 i- ;; by Vebjorn Ljosa - see also Err bitreich.org 70 i- ;; Err bitreich.org 70 i- (loop for binding in bindings Err bitreich.org 70 i- for var = (if (consp binding) (car binding) binding) Err bitreich.org 70 i- for name = (gensym) Err bitreich.org 70 i- collect `(,name ,var) into renames Err bitreich.org 70 i- collect ``(,,var ,,name) into temps Err bitreich.org 70 i- finally (return `(let ,renames Err bitreich.org 70 i- (with-unique-names ,bindings Err bitreich.org 70 i- `(let (,,@temps) Err bitreich.org 70 i- ,,@body)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun normalize-external-format-name (name) Err bitreich.org 70 i- "Converts NAME \(a symbol) to a `canonical' name for an Err bitreich.org 70 i-external format, e.g. :LATIN1 will be converted to :ISO-8859-1. Err bitreich.org 70 i-Also checks if there is an external format with that name and Err bitreich.org 70 i-signals an error otherwise." Err bitreich.org 70 i- (let ((real-name (cdr (find name flex::+name-map+ Err bitreich.org 70 i- :test (lambda (item pair) Err bitreich.org 70 i- (or (string-equal item (cdr pair)) Err bitreich.org 70 i- (string-equal item (car pair)))))))) Err bitreich.org 70 i- (unless real-name Err bitreich.org 70 i- (error 'external-format-error Err bitreich.org 70 i- :format-control "~S is not known to be a name for an external format." Err bitreich.org 70 i- :format-arguments (list name))) Err bitreich.org 70 i- real-name)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ascii-name-p (name) Err bitreich.org 70 i- "Checks whether NAME is the keyword :ASCII." Err bitreich.org 70 i- (eq name :us-ascii)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun koi8-r-name-p (name) Err bitreich.org 70 i- "Checks whether NAME is the keyword :KOI8-R." Err bitreich.org 70 i- (eq name :koi8-r)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun code-page-name-p (name) Err bitreich.org 70 i- "Checks whether NAME is the keyword :CODE-PAGE." Err bitreich.org 70 i- (eq name :code-page)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun iso-8859-name-p (name) Err bitreich.org 70 i- "Checks whether NAME \(a keyword) names one of the known Err bitreich.org 70 i-ISO-8859 encodings." Err bitreich.org 70 i- (find name +iso-8859-tables+ :key #'car)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun known-code-page-id-p (id) Err bitreich.org 70 i- "Checks whether ID \(a number) denotes one of the known Windows Err bitreich.org 70 i-code pages." Err bitreich.org 70 i- (and (find id +code-page-tables+ :key #'car) Err bitreich.org 70 i- id)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+:lispworks Err bitreich.org 70 i-(defun sans (plist &rest keys) Err bitreich.org 70 i- "Returns PLIST with keyword arguments from KEYS removed." Err bitreich.org 70 i- (sys::remove-properties plist keys)) Err bitreich.org 70 i- Err bitreich.org 70 i-#-:lispworks Err bitreich.org 70 i-(defun sans (plist &rest keys) Err bitreich.org 70 i- "Returns PLIST with keyword arguments from KEYS removed." Err bitreich.org 70 i- ;; stolen from Usenet posting <3247672165664225@naggum.no> by Erik Err bitreich.org 70 i- ;; Naggum Err bitreich.org 70 i- (let ((sans ())) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- (let ((tail (nth-value 2 (get-properties plist keys)))) Err bitreich.org 70 i- ;; this is how it ends Err bitreich.org 70 i- (unless tail Err bitreich.org 70 i- (return (nreconc sans plist))) Err bitreich.org 70 i- ;; copy all the unmatched keys Err bitreich.org 70 i- (loop until (eq plist tail) do Err bitreich.org 70 i- (push (pop plist) sans) Err bitreich.org 70 i- (push (pop plist) sans)) Err bitreich.org 70 i- ;; skip the matched key Err bitreich.org 70 i- (setq plist (cddr plist)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+:lispworks Err bitreich.org 70 i-(defmacro with-accessors (slot-entries instance &body body) Err bitreich.org 70 i- "For LispWorks, we prefer SLOT-VALUE over accessors for better Err bitreich.org 70 i-performance." Err bitreich.org 70 i- ;; note that we assume that the variables have the same names as the Err bitreich.org 70 i- ;; slots Err bitreich.org 70 i- `(with-slots ,(mapcar #'car slot-entries) Err bitreich.org 70 i- ,instance Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-octet-buffer (&optional (size +buffer-size+)) Err bitreich.org 70 i- "Creates and returns a fresh buffer \(a specialized array) of size Err bitreich.org 70 i-+BUFFER-SIZE+ to hold octets." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (make-array size :element-type 'octet)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun type-equal (type1 type2) Err bitreich.org 70 i- "Whether TYPE1 and TYPE2 denote the same type." Err bitreich.org 70 i- (declare #.*standard-optimize-settings*) Err bitreich.org 70 i- (and (subtypep type1 type2) Err bitreich.org 70 i- (subtypep type2 type1))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun maybe-rewind (stream octets) Err bitreich.org 70 i- "Tries to `rewind' the \(binary) stream STREAM by OCTETS octets. Err bitreich.org 70 i-Returns T if it succeeds, otherwise NIL." Err bitreich.org 70 i- (when-let (position (file-position stream)) Err bitreich.org 70 i- (if (file-position stream (- position octets)) t nil))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro logand* (x y) Err bitreich.org 70 i- "Solely for optimization purposes. Some Lisps need it, some don't." Err bitreich.org 70 i- `(the fixnum (logand ,x ,y))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro logior* (x y) Err bitreich.org 70 i- "Solely for optimization purposes. Some Lisps need it, some don't." Err bitreich.org 70 i- `(the fixnum (logior ,x ,y))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro ash* (integer count) Err bitreich.org 70 i- "Solely for optimization purposes. Some Lisps need it, some don't." Err bitreich.org 70 i- `(the fixnum (ash ,integer ,count))) Err bitreich.org 70 1diff --git a/3rdparties/software/split-sequence-v1.5.0/LICENSE b/3rdparties/software/split-sequence-v1.5.0/LICENSE /scm/clic/file/3rdparties/software/split-sequence-v1.5.0/LICENSE.gph bitreich.org 70 i@@ -1,21 +0,0 @@ Err bitreich.org 70 i-Copyright (C) 2001-2018, Arthur Lemmens et al. Err bitreich.org 70 i- Err bitreich.org 70 i-Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-obtaining a copy of this software and associated documentation Err bitreich.org 70 i-files (the "Software"), to deal in the Software without Err bitreich.org 70 i-restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-furnished to do so, subject to the following conditions: Err bitreich.org 70 i- Err bitreich.org 70 i-The above copyright notice and this permission notice shall be Err bitreich.org 70 i-included in all copies or substantial portions of the Software. Err bitreich.org 70 i- Err bitreich.org 70 i-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-DEALINGS IN THE SOFTWARE. Err bitreich.org 70 1diff --git a/3rdparties/software/split-sequence-v1.5.0/README.md b/3rdparties/software/split-sequence-v1.5.0/README.md /scm/clic/file/3rdparties/software/split-sequence-v1.5.0/README.md.gph bitreich.org 70 i@@ -1,109 +0,0 @@ Err bitreich.org 70 i-SPLIT-SEQUENCE Err bitreich.org 70 i-============== Err bitreich.org 70 i- Err bitreich.org 70 i-[SPLIT-SEQUENCE](http://cliki.net/split-sequence) is a member of the Err bitreich.org 70 i-[Common Lisp Utilities](http://cliki.net/Common%20Lisp%20Utilities) Err bitreich.org 70 i-family of programs, designed by community consensus. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-_Function_ __SPLIT-SEQUENCE, SPLIT-SEQUENCE-IF, SPLIT-SEQUENCE-IF-NOT__ Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-__Syntax:__ Err bitreich.org 70 i- Err bitreich.org 70 i-__split-sequence__ _delimiter sequence `&key` count Err bitreich.org 70 i-remove-empty-subseqs from-end start end test test-not key ⇒ list, Err bitreich.org 70 i-index_ Err bitreich.org 70 i- Err bitreich.org 70 i-__split-sequence-if__ _predicate sequence `&key` count Err bitreich.org 70 i-remove-empty-subseqs from-end start end key ⇒ list, index_ Err bitreich.org 70 i- Err bitreich.org 70 i-__split-sequence-if-not__ _predicate sequence `&key` count Err bitreich.org 70 i-remove-empty-subseqs from-end start end key ⇒ list, index_ Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-__Arguments and Values:__ Err bitreich.org 70 i- Err bitreich.org 70 i-_delimiter_—an _object_. Err bitreich.org 70 i- Err bitreich.org 70 i-_predicate_—a designator for a _function_ of one _argument_ that Err bitreich.org 70 i-returns a _generalized boolean_. Err bitreich.org 70 i- Err bitreich.org 70 i-_sequence_—a _proper sequence_. Err bitreich.org 70 i- Err bitreich.org 70 i-_count_—an _integer_ or __nil__. The default is __nil__. Err bitreich.org 70 i- Err bitreich.org 70 i-_remove-empty-subseqs_—a _generalized boolean_. The default is Err bitreich.org 70 i-_false_. Err bitreich.org 70 i- Err bitreich.org 70 i-_from-end_—a _generalized boolean_. The default is _false_. Err bitreich.org 70 i- Err bitreich.org 70 i-_start, end_—_bounding index designators_ of _sequence_. The Err bitreich.org 70 i-defaults for _start_ and _end_ are __0__ and __nil__, respectively. Err bitreich.org 70 i- Err bitreich.org 70 i-_test_—a _designator_ for a _function_ of two _arguments_ that Err bitreich.org 70 i-returns a _generalized boolean_. Err bitreich.org 70 i- Err bitreich.org 70 i-_test-not_—a _designator_ for a _function_ of two _arguments_ Err bitreich.org 70 i-that returns a _generalized boolean_. Err bitreich.org 70 i- Err bitreich.org 70 i-_key_—a _designator_ for a _function_ of one _argument_, or Err bitreich.org 70 i-__nil__. Err bitreich.org 70 i- Err bitreich.org 70 i-_list_—a _proper sequence_. Err bitreich.org 70 i- Err bitreich.org 70 i-_index_—an _integer_ greater than or equal to zero, and less Err bitreich.org 70 i-than or equal to the _length_ of the _sequence_. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-__Description:__ Err bitreich.org 70 i- Err bitreich.org 70 i-Splits _sequence_ into a list of subsequences delimited by objects Err bitreich.org 70 i-_satisfying the test_. Err bitreich.org 70 i- Err bitreich.org 70 i-_List_ is a list of sequences of the same kind as _sequence_ that has Err bitreich.org 70 i-elements consisting of subsequences of _sequence_ that were delimited Err bitreich.org 70 i-in the argument by elements _satisfying the test_. Index is an index Err bitreich.org 70 i-into _sequence_ indicating the unprocessed region, suitable as an Err bitreich.org 70 i-argument to Err bitreich.org 70 i-[subseq](http://www.lispworks.com/documentation/HyperSpec/Body/f_subseq.htm) Err bitreich.org 70 i-to continue processing in the same manner if desired. Err bitreich.org 70 i- Err bitreich.org 70 i-The _count_ argument, if supplied, limits the number of subsequences Err bitreich.org 70 i-in the first return value; if more than _count_ delimited subsequences Err bitreich.org 70 i-exist in _sequence_, the _count_ leftmost delimited subsequences will Err bitreich.org 70 i-be in order in the first return value, and the second return value Err bitreich.org 70 i-will be the index into _sequence_ at which processing stopped. Err bitreich.org 70 i- Err bitreich.org 70 i-If _from-end_ is non-null, _sequence_ is conceptually processed from Err bitreich.org 70 i-right to left, accumulating the subsequences in reverse order; Err bitreich.org 70 i-_from-end_ only makes a difference in the case of a non-null _count_ Err bitreich.org 70 i-argument. In the presence of _from-end_, the _count_ rightmost Err bitreich.org 70 i-delimited subsequences will be in the order that they are in Err bitreich.org 70 i-_sequence_ in the first return value, and the second is the index Err bitreich.org 70 i-indicating the end of the unprocessed region. Err bitreich.org 70 i- Err bitreich.org 70 i-The _start_ and _end_ keyword arguments permit a certain subsequence Err bitreich.org 70 i-of the _sequence_ to be processed without the need for a copying Err bitreich.org 70 i-stage; their use is conceptually equivalent to partitioning the Err bitreich.org 70 i-subsequence delimited by _start_ and _end_, only without the need for Err bitreich.org 70 i-copying. Err bitreich.org 70 i- Err bitreich.org 70 i-If _remove-empty-subseqs_ is null (the default), then empty Err bitreich.org 70 i-subsequences will be included in the result. Err bitreich.org 70 i- Err bitreich.org 70 i-In all cases, the subsequences in the first return value will be in Err bitreich.org 70 i-the order that they appeared in _sequence_. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-__Examples:__ Err bitreich.org 70 i- Err bitreich.org 70 i-
	Err	bitreich.org	70
i-SPLIT-SEQUENCE> (split-sequence #\Space "A stitch in time saves nine.")	Err	bitreich.org	70
i-⇒ ("A" "stitch" "in" "time" "saves" "nine.")	Err	bitreich.org	70
i-⇒ 28	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-SPLIT-SEQUENCE> (split-sequence #\, "foo,bar ,baz, foobar , barbaz,")	Err	bitreich.org	70
i-⇒ ("foo" "bar " "baz" " foobar " " barbaz" "")	Err	bitreich.org	70
i-⇒ 30	Err	bitreich.org	70
i-
Err bitreich.org 70 1diff --git a/3rdparties/software/split-sequence-v1.5.0/split-sequence.asd b/3rdparties/software/split-sequence-v1.5.0/split-sequence.asd /scm/clic/file/3rdparties/software/split-sequence-v1.5.0/split-sequence.asd.gph bitreich.org 70 i@@ -1,23 +0,0 @@ Err bitreich.org 70 i-;;; -*- Lisp -*- Err bitreich.org 70 i- Err bitreich.org 70 i-(defsystem :split-sequence Err bitreich.org 70 i- :author "Arthur Lemmens " Err bitreich.org 70 i- :maintainer "Sharp Lispers " Err bitreich.org 70 i- :description "Splits a sequence into a list of subsequences Err bitreich.org 70 i- delimited by objects satisfying a test." Err bitreich.org 70 i- :license "MIT" Err bitreich.org 70 i- :version (:read-file-form "version.sexp") Err bitreich.org 70 i- :components ((:static-file "version.sexp") Err bitreich.org 70 i- (:file "split-sequence"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defsystem :split-sequence/tests Err bitreich.org 70 i- :author "Arthur Lemmens " Err bitreich.org 70 i- :maintainer "Sharp Lispers " Err bitreich.org 70 i- :description "Split-Sequence test suite" Err bitreich.org 70 i- :license "MIT" Err bitreich.org 70 i- :depends-on (:split-sequence :fiveam) Err bitreich.org 70 i- :components ((:file "tests"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod perform ((o test-op) (c (eql (find-system :split-sequence)))) Err bitreich.org 70 i- (load-system :split-sequence/tests) Err bitreich.org 70 i- (symbol-call :5am :run! :split-sequence)) Err bitreich.org 70 1diff --git a/3rdparties/software/split-sequence-v1.5.0/split-sequence.lisp b/3rdparties/software/split-sequence-v1.5.0/split-sequence.lisp /scm/clic/file/3rdparties/software/split-sequence-v1.5.0/split-sequence.lisp.gph bitreich.org 70 i@@ -1,172 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: Lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; SPLIT-SEQUENCE Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; This code was based on Arthur Lemmens' in Err bitreich.org 70 i-;;; ; Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; changes include: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; * altering the behaviour of the :from-end keyword argument to Err bitreich.org 70 i-;;; return the subsequences in original order, for consistency with Err bitreich.org 70 i-;;; CL:REMOVE, CL:SUBSTITUTE et al. (:from-end being non-NIL only Err bitreich.org 70 i-;;; affects the answer if :count is less than the number of Err bitreich.org 70 i-;;; subsequences, by analogy with the above-referenced functions). Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; * changing the :maximum keyword argument to :count, by analogy Err bitreich.org 70 i-;;; with CL:REMOVE, CL:SUBSTITUTE, and so on. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; * naming the function SPLIT-SEQUENCE rather than PARTITION rather Err bitreich.org 70 i-;;; than SPLIT. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; * adding SPLIT-SEQUENCE-IF and SPLIT-SEQUENCE-IF-NOT. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; * The second return value is now an index rather than a copy of a Err bitreich.org 70 i-;;; portion of the sequence; this index is the `right' one to feed to Err bitreich.org 70 i-;;; CL:SUBSEQ for continued processing. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; There's a certain amount of code duplication here, which is kept Err bitreich.org 70 i-;;; to illustrate the relationship between the SPLIT-SEQUENCE Err bitreich.org 70 i-;;; functions and the CL:POSITION functions. Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage :split-sequence Err bitreich.org 70 i- (:use :common-lisp) Err bitreich.org 70 i- (:export #:split-sequence Err bitreich.org 70 i- #:split-sequence-if Err bitreich.org 70 i- #:split-sequence-if-not)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :split-sequence) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftype array-index (&optional (length array-dimension-limit)) Err bitreich.org 70 i- `(integer 0 (,length))) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (ftype (function (&rest t) (values list integer)) Err bitreich.org 70 i- split-sequence split-sequence-if split-sequence-if-not)) Err bitreich.org 70 i- Err bitreich.org 70 i-(declaim (ftype (function (function sequence array-index Err bitreich.org 70 i- (or null array-index) (or null array-index) boolean) Err bitreich.org 70 i- (values list integer)) Err bitreich.org 70 i- split-from-start split-from-end)) Err bitreich.org 70 i- Err bitreich.org 70 i-(macrolet ((check-bounds (sequence start end) Err bitreich.org 70 i- (let ((length (gensym (string '#:length)))) Err bitreich.org 70 i- `(let ((,length (length ,sequence))) Err bitreich.org 70 i- (check-type ,start unsigned-byte "a non-negative integer") Err bitreich.org 70 i- (when ,end (check-type ,end unsigned-byte "a non-negative integer or NIL")) Err bitreich.org 70 i- (unless ,end Err bitreich.org 70 i- (setf ,end ,length)) Err bitreich.org 70 i- (unless (<= ,start ,end ,length) Err bitreich.org 70 i- (error "Wrong sequence bounds. start: ~S end: ~S" ,start ,end)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun split-sequence (delimiter sequence &key (start 0) (end nil) (from-end nil) Err bitreich.org 70 i- (count nil) (remove-empty-subseqs nil) Err bitreich.org 70 i- (test #'eql) (test-not nil) (key #'identity)) Err bitreich.org 70 i- "Return a list of subsequences in seq delimited by delimiter. Err bitreich.org 70 i- Err bitreich.org 70 i-If :remove-empty-subseqs is NIL, empty subsequences will be included Err bitreich.org 70 i-in the result; otherwise they will be discarded. All other keywords Err bitreich.org 70 i-work analogously to those for CL:SUBSTITUTE. In particular, the Err bitreich.org 70 i-behaviour of :from-end is possibly different from other versions of Err bitreich.org 70 i-this function; :from-end values of NIL and T are equivalent unless Err bitreich.org 70 i-:count is supplied. The second return value is an index suitable as an Err bitreich.org 70 i-argument to CL:SUBSEQ into the sequence indicating where processing Err bitreich.org 70 i-stopped." Err bitreich.org 70 i- (check-bounds sequence start end) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((and (not from-end) (null test-not)) Err bitreich.org 70 i- (split-from-start (lambda (sequence start) Err bitreich.org 70 i- (position delimiter sequence :start start :key key :test test)) Err bitreich.org 70 i- sequence start end count remove-empty-subseqs)) Err bitreich.org 70 i- ((and (not from-end) test-not) Err bitreich.org 70 i- (split-from-start (lambda (sequence start) Err bitreich.org 70 i- (position delimiter sequence :start start :key key :test-not test-not)) Err bitreich.org 70 i- sequence start end count remove-empty-subseqs)) Err bitreich.org 70 i- ((and from-end (null test-not)) Err bitreich.org 70 i- (split-from-end (lambda (sequence end) Err bitreich.org 70 i- (position delimiter sequence :end end :from-end t :key key :test test)) Err bitreich.org 70 i- sequence start end count remove-empty-subseqs)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (split-from-end (lambda (sequence end) Err bitreich.org 70 i- (position delimiter sequence :end end :from-end t :key key :test-not test-not)) Err bitreich.org 70 i- sequence start end count remove-empty-subseqs)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun split-sequence-if (predicate sequence &key (start 0) (end nil) (from-end nil) Err bitreich.org 70 i- (count nil) (remove-empty-subseqs nil) (key #'identity)) Err bitreich.org 70 i- "Return a list of subsequences in seq delimited by items satisfying Err bitreich.org 70 i-predicate. Err bitreich.org 70 i- Err bitreich.org 70 i-If :remove-empty-subseqs is NIL, empty subsequences will be included Err bitreich.org 70 i-in the result; otherwise they will be discarded. All other keywords Err bitreich.org 70 i-work analogously to those for CL:SUBSTITUTE-IF. In particular, the Err bitreich.org 70 i-behaviour of :from-end is possibly different from other versions of Err bitreich.org 70 i-this function; :from-end values of NIL and T are equivalent unless Err bitreich.org 70 i-:count is supplied. The second return value is an index suitable as an Err bitreich.org 70 i-argument to CL:SUBSEQ into the sequence indicating where processing Err bitreich.org 70 i-stopped." Err bitreich.org 70 i- (check-bounds sequence start end) Err bitreich.org 70 i- (if from-end Err bitreich.org 70 i- (split-from-end (lambda (sequence end) Err bitreich.org 70 i- (position-if predicate sequence :end end :from-end t :key key)) Err bitreich.org 70 i- sequence start end count remove-empty-subseqs) Err bitreich.org 70 i- (split-from-start (lambda (sequence start) Err bitreich.org 70 i- (position-if predicate sequence :start start :key key)) Err bitreich.org 70 i- sequence start end count remove-empty-subseqs))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun split-sequence-if-not (predicate sequence &key (count nil) (remove-empty-subseqs nil) Err bitreich.org 70 i- (from-end nil) (start 0) (end nil) (key #'identity)) Err bitreich.org 70 i- "Return a list of subsequences in seq delimited by items satisfying Err bitreich.org 70 i-\(CL:COMPLEMENT predicate). Err bitreich.org 70 i- Err bitreich.org 70 i-If :remove-empty-subseqs is NIL, empty subsequences will be included Err bitreich.org 70 i-in the result; otherwise they will be discarded. All other keywords Err bitreich.org 70 i-work analogously to those for CL:SUBSTITUTE-IF-NOT. In particular, Err bitreich.org 70 i-the behaviour of :from-end is possibly different from other versions Err bitreich.org 70 i-of this function; :from-end values of NIL and T are equivalent unless Err bitreich.org 70 i-:count is supplied. The second return value is an index suitable as an Err bitreich.org 70 i-argument to CL:SUBSEQ into the sequence indicating where processing Err bitreich.org 70 i-stopped." Err bitreich.org 70 i- (check-bounds sequence start end) Err bitreich.org 70 i- (if from-end Err bitreich.org 70 i- (split-from-end (lambda (sequence end) Err bitreich.org 70 i- (position-if-not predicate sequence :end end :from-end t :key key)) Err bitreich.org 70 i- sequence start end count remove-empty-subseqs) Err bitreich.org 70 i- (split-from-start (lambda (sequence start) Err bitreich.org 70 i- (position-if-not predicate sequence :start start :key key)) Err bitreich.org 70 i- sequence start end count remove-empty-subseqs)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun split-from-end (position-fn sequence start end count remove-empty-subseqs) Err bitreich.org 70 i- (declare (optimize (speed 3) (debug 0))) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- :for right := end :then left Err bitreich.org 70 i- :for left := (max (or (funcall position-fn sequence right) -1) Err bitreich.org 70 i- (1- start)) Err bitreich.org 70 i- :unless (and (= right (1+ left)) Err bitreich.org 70 i- remove-empty-subseqs) ; empty subseq we don't want Err bitreich.org 70 i- :if (and count (>= nr-elts count)) Err bitreich.org 70 i- ;; We can't take any more. Return now. Err bitreich.org 70 i- :return (values (nreverse subseqs) right) Err bitreich.org 70 i- :else Err bitreich.org 70 i- :collect (subseq sequence (1+ left) right) into subseqs Err bitreich.org 70 i- :and :sum 1 :into nr-elts Err bitreich.org 70 i- :until (< left start) Err bitreich.org 70 i- :finally (return (values (nreverse subseqs) (1+ left))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun split-from-start (position-fn sequence start end count remove-empty-subseqs) Err bitreich.org 70 i- (declare (optimize (speed 3) (debug 0))) Err bitreich.org 70 i- (let ((length (length sequence))) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- :for left := start :then (+ right 1) Err bitreich.org 70 i- :for right := (min (or (funcall position-fn sequence left) length) Err bitreich.org 70 i- end) Err bitreich.org 70 i- :unless (and (= right left) Err bitreich.org 70 i- remove-empty-subseqs) ; empty subseq we don't want Err bitreich.org 70 i- :if (and count (>= nr-elts count)) Err bitreich.org 70 i- ;; We can't take any more. Return now. Err bitreich.org 70 i- :return (values subseqs left) Err bitreich.org 70 i- :else Err bitreich.org 70 i- :collect (subseq sequence left right) :into subseqs Err bitreich.org 70 i- :and :sum 1 :into nr-elts Err bitreich.org 70 i- :until (>= right end) Err bitreich.org 70 i- :finally (return (values subseqs right))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(pushnew :split-sequence *features*) Err bitreich.org 70 1diff --git a/3rdparties/software/split-sequence-v1.5.0/tests.lisp b/3rdparties/software/split-sequence-v1.5.0/tests.lisp /scm/clic/file/3rdparties/software/split-sequence-v1.5.0/tests.lisp.gph bitreich.org 70 i@@ -1,38 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: Lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage :split-sequence/tests Err bitreich.org 70 i- (:use :common-lisp :split-sequence :fiveam)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :split-sequence/tests) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-suite* :split-sequence) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; SPLIT-SEQUENCE Err bitreich.org 70 i- Err bitreich.org 70 i-(test (split-sequence.1 :compile-at :definition-time) Err bitreich.org 70 i- (is (equalp (split-sequence #\; "a;;b;c") Err bitreich.org 70 i- (values '("a" "" "b" "c") 6)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(test (split-sequence.2 :compile-at :definition-time) Err bitreich.org 70 i- (is (equalp (split-sequence #\; "a;;b;c" :from-end t) Err bitreich.org 70 i- (values '("a" "" "b" "c") 0)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(test (split-sequence.3 :compile-at :definition-time) Err bitreich.org 70 i- (is (equalp (split-sequence #\; "a;;b;c" :from-end t :count 1) Err bitreich.org 70 i- (values '("c") 4)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(test (split-sequence.4 :compile-at :definition-time) Err bitreich.org 70 i- (is (equalp (split-sequence #\; "a;;b;c" :remove-empty-subseqs t) Err bitreich.org 70 i- (values '("a" "b" "c") 6)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(test (split-sequence.5 :compile-at :definition-time) Err bitreich.org 70 i- (is (equalp (split-sequence #\; ";oo;bar;ba;" :start 1 :end 9) Err bitreich.org 70 i- (values '("oo" "bar" "b") 9)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(test (split-sequence-if.1 :compile-at :definition-time) Err bitreich.org 70 i- (is (equalp (split-sequence-if (lambda (x) (member x '(#\a #\b))) "abracadabra") Err bitreich.org 70 i- (values '("" "" "r" "c" "d" "" "r" "") 11)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(test (split-sequence-if-not.1 :compile-at :definition-time) Err bitreich.org 70 i- (is (equalp (split-sequence-if-not (lambda (x) (member x '(#\a #\b))) "abracadabra") Err bitreich.org 70 i- (values '("ab" "a" "a" "ab" "a") 11)))) Err bitreich.org 70 1diff --git a/3rdparties/software/split-sequence-v1.5.0/version.sexp b/3rdparties/software/split-sequence-v1.5.0/version.sexp /scm/clic/file/3rdparties/software/split-sequence-v1.5.0/version.sexp.gph bitreich.org 70 i@@ -1,2 +0,0 @@ Err bitreich.org 70 i-;; -*- lisp -*- Err bitreich.org 70 i-"1.5.0" Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-features-20161204-git/.travis.yml b/3rdparties/software/trivial-features-20161204-git/.travis.yml /scm/clic/file/3rdparties/software/trivial-features-20161204-git/.travis.yml.gph bitreich.org 70 i@@ -1,30 +0,0 @@ Err bitreich.org 70 i-language: lisp Err bitreich.org 70 i- Err bitreich.org 70 i-env: Err bitreich.org 70 i- matrix: Err bitreich.org 70 i- # - LISP=abcl Err bitreich.org 70 i- # - LISP=allegro Err bitreich.org 70 i- - LISP=sbcl Err bitreich.org 70 i- - LISP=sbcl32 Err bitreich.org 70 i- - LISP=ccl Err bitreich.org 70 i- - LISP=ccl32 Err bitreich.org 70 i- - LISP=clisp Err bitreich.org 70 i- - LISP=clisp32 Err bitreich.org 70 i- # - LISP=cmucl Err bitreich.org 70 i- - LISP=ecl Err bitreich.org 70 i- Err bitreich.org 70 i-matrix: Err bitreich.org 70 i- allow_failures: Err bitreich.org 70 i- - env: LISP=ecl Err bitreich.org 70 i- Err bitreich.org 70 i-install: Err bitreich.org 70 i- - curl -L https://github.com/luismbo/cl-travis/raw/master/install.sh | sh Err bitreich.org 70 i- - if [ "${LISP:(-2)}" = "32" ]; then Err bitreich.org 70 i- sudo apt-get install libc6-dev-i386; Err bitreich.org 70 i- fi Err bitreich.org 70 i- Err bitreich.org 70 i-script: Err bitreich.org 70 i- - cl -e '(ql:quickload :cffi-grovel) Err bitreich.org 70 i- (ql:quickload :trivial-features-tests) Err bitreich.org 70 i- (unless (trivial-features-tests:run) Err bitreich.org 70 i- (uiop:quit 1))' Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-features-20161204-git/COPYRIGHT b/3rdparties/software/trivial-features-20161204-git/COPYRIGHT /scm/clic/file/3rdparties/software/trivial-features-20161204-git/COPYRIGHT.gph bitreich.org 70 i@@ -1,21 +0,0 @@ Err bitreich.org 70 i-Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i- Err bitreich.org 70 i-Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-obtaining a copy of this software and associated documentation Err bitreich.org 70 i-files (the "Software"), to deal in the Software without Err bitreich.org 70 i-restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-furnished to do so, subject to the following conditions: Err bitreich.org 70 i- Err bitreich.org 70 i-The above copyright notice and this permission notice shall be Err bitreich.org 70 i-included in all copies or substantial portions of the Software. Err bitreich.org 70 i- Err bitreich.org 70 i-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-DEALINGS IN THE SOFTWARE. Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-features-20161204-git/README.md b/3rdparties/software/trivial-features-20161204-git/README.md /scm/clic/file/3rdparties/software/trivial-features-20161204-git/README.md.gph bitreich.org 70 i@@ -1,32 +0,0 @@ Err bitreich.org 70 i-[![Build Status](https://travis-ci.org/trivial-features/trivial-features.svg?branch=master)](https://travis-ci.org/trivial-features/trivial-features) Err bitreich.org 70 i- Err bitreich.org 70 i-trivial-features ensures consistent `*FEATURES*` across multiple Err bitreich.org 70 i-Common Lisp implementations. Err bitreich.org 70 i- Err bitreich.org 70 i-For example, on MacOS X platforms, while most Lisps push `:DARWIN` to Err bitreich.org 70 i-`*FEATURES*`, CLISP and Allegro push `:MACOS` and `:MACOSX` instead, Err bitreich.org 70 i-respectively. Some Lisps might not push any feature suggesting MacOS Err bitreich.org 70 i-X at all. trivial-features will make sure all Lisps will have Err bitreich.org 70 i-`:DARWIN` in the `*FEATURES*` list when running on MacOS X. This Err bitreich.org 70 i-way, you can write Err bitreich.org 70 i- Err bitreich.org 70 i- #+darwin foo #-darwin bar Err bitreich.org 70 i- Err bitreich.org 70 i-instead of Err bitreich.org 70 i- Err bitreich.org 70 i- #+(or darwin macos macosx) foo Err bitreich.org 70 i- #-(or darwin macos macosx) bar Err bitreich.org 70 i- Err bitreich.org 70 i-The included [SPEC.md][1] document describes the set of symbols that Err bitreich.org 70 i-should or should not be present in `CL:*FEATURES*` on certain Err bitreich.org 70 i-circumstances. This specification is implemented by the Err bitreich.org 70 i-TRIVIAL-FEATURES system which supports a handful of Lisps. Err bitreich.org 70 i- Err bitreich.org 70 i-The test suite is, in effect, an implementation using [CFFI][2] that Err bitreich.org 70 i-is checked against the various implementations in `src/tf-*.lisp`. Err bitreich.org 70 i- Err bitreich.org 70 i-trivial-features is MIT-licenced. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-[1]: https://github.com/trivial-features/trivial-features/blob/master/SPEC.md Err bitreich.org 70 i-[2]: http://common-lisp.net/project/cffi Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-features-20161204-git/SPEC.md b/3rdparties/software/trivial-features-20161204-git/SPEC.md /scm/clic/file/3rdparties/software/trivial-features-20161204-git/SPEC.md.gph bitreich.org 70 i@@ -1,86 +0,0 @@ Err bitreich.org 70 i-TRIVIAL-FEATURES Err bitreich.org 70 i-================ Err bitreich.org 70 i- Err bitreich.org 70 i-This is a first *draft* of a description of what symbols should be Err bitreich.org 70 i-present in `CL:*FEATURES*` for various platforms. A possible future Err bitreich.org 70 i-direction of this documentation might be a CDR document, if it turns Err bitreich.org 70 i-out to be a good idea. (Making the language of this document much Err bitreich.org 70 i-more precise will be necessary then.) Err bitreich.org 70 i- Err bitreich.org 70 i-We will start by limiting ourselves to OS, CPU and endianness features Err bitreich.org 70 i-on Windows and POSIX platforms. Err bitreich.org 70 i- Err bitreich.org 70 i-There are various possible implementation strategies ranging from null Err bitreich.org 70 i-implementations (when the host Lisp already pushes the wanted feature) Err bitreich.org 70 i-to using FFI (e.g. calling uname() to grab system information. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Specification Err bitreich.org 70 i-------------- Err bitreich.org 70 i- Err bitreich.org 70 i-### ENDIANNESS Err bitreich.org 70 i- Err bitreich.org 70 i-Either `:LITTLE-ENDIAN` or `:BIG-ENDIAN` should present in Err bitreich.org 70 i-`\*FEATURES\*`. For the time being, we will not concern ourselves Err bitreich.org 70 i-with other orderings, switchable endianness, etc. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-### OPERATING SYSTEM Err bitreich.org 70 i- Err bitreich.org 70 i-On Windows, `:WINDOWS` should be present in `*FEATURES*`. Err bitreich.org 70 i- Err bitreich.org 70 i-On POSIX systems, the "sysname" information from uname(3) should be Err bitreich.org 70 i-used to push the appropriate symbol to `*FEATURES*` by upcasing that Err bitreich.org 70 i-string (or downcasing for the "modern" lisps) and interning it in the Err bitreich.org 70 i-keyword package. Err bitreich.org 70 i- Err bitreich.org 70 i-Examples: Err bitreich.org 70 i- Err bitreich.org 70 i- - `:DARWIN` Err bitreich.org 70 i- - `:LINUX` Err bitreich.org 70 i- - `:NETBSD` Err bitreich.org 70 i- - `:OPENBSD` Err bitreich.org 70 i- - `:FREEBSD` Err bitreich.org 70 i- Err bitreich.org 70 i-For convenience, `:UNIX` should be pushed when running on Err bitreich.org 70 i-POSIX/UNIX-like operating system (that doesn't include Windows) and Err bitreich.org 70 i-`:BSD` should be present when running on BSD-based systems (that Err bitreich.org 70 i-includes Darwin) Err bitreich.org 70 i- Err bitreich.org 70 i-[add `:MACH` too?] Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-### CPU Err bitreich.org 70 i- Err bitreich.org 70 i-These features should be mutually exclusive: Err bitreich.org 70 i- Err bitreich.org 70 i- - `:X86` Err bitreich.org 70 i- - `:X86-64` Err bitreich.org 70 i- - `:PPC` Err bitreich.org 70 i- - `:PPC64` Err bitreich.org 70 i- - `:MIPS` Err bitreich.org 70 i- - `:ALPHA` Err bitreich.org 70 i- - `:SPARC` Err bitreich.org 70 i- - `:SPARC64` Err bitreich.org 70 i- - `:HPPA` Err bitreich.org 70 i- - `:HPPA64` Err bitreich.org 70 i- Err bitreich.org 70 i-[add more ...] Err bitreich.org 70 i- Err bitreich.org 70 i-[note: it's debatable whether `:X86` shouldn't also be exported on Err bitreich.org 70 i-x86-64, and `:PPC` on ppc64. SBCL doesn't. Other ways Err bitreich.org 70 i-to handle, for example, the x86/x86-64 case would be to export Err bitreich.org 70 i-something like `:PC386` in both cases or have an additional `:X86-32`. Or Err bitreich.org 70 i-finally, have just `:X86`, `:PPC`, etc, and add `:32-BIT-CPU` and Err bitreich.org 70 i-`:64-BIT-CPU` features.] Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Unreferenced References Err bitreich.org 70 i------------------------ Err bitreich.org 70 i- Err bitreich.org 70 i- * [CLHS: Variable \*FEATURES\*][1] Err bitreich.org 70 i- * [Maintaining Portable Lisp Programs][2], by Christophe Rhodes Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-[1]: http://www.lispworks.com/documentation/HyperSpec/Body/v_featur.htm Err bitreich.org 70 i-[2]: http://www-jcsu.jesus.cam.ac.uk/~csr21/papers/features.pdf Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-features-20161204-git/release.lisp b/3rdparties/software/trivial-features-20161204-git/release.lisp /scm/clic/file/3rdparties/software/trivial-features-20161204-git/release.lisp.gph bitreich.org 70 i@@ -1,247 +0,0 @@ Err bitreich.org 70 i-#!/usr/bin/env clisp Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage :release-script (:use #:cl #:regexp)) Err bitreich.org 70 i-(in-package :release-script) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Configuration ------------------------------------------------------------ Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *project-name* "trivial-features") Err bitreich.org 70 i-(defparameter *asdf-file* (format nil "~A.asd" *project-name*)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *host* "common-lisp.net") Err bitreich.org 70 i-(defparameter *release-dir* Err bitreich.org 70 i- (format nil "public_html/tarballs/~A/" *project-name*)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *version-file* nil) Err bitreich.org 70 i-(defparameter *version-file-dir* nil) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; -------------------------------------------------------------------------- Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Utilities Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ensure-list (x) Err bitreich.org 70 i- (if (listp x) x (list x))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro string-case (expression &body clauses) Err bitreich.org 70 i- `(let ((it ,expression)) ; yes, anaphoric, deal with it. Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ,@(loop for clause in clauses collect Err bitreich.org 70 i- `((or ,@(loop for alternative in (ensure-list (first clause)) Err bitreich.org 70 i- collect (or (eq t alternative) Err bitreich.org 70 i- `(string= it ,alternative)))) Err bitreich.org 70 i- ,@(rest clause)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *development-mode* t) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun die (format-control &rest format-args) Err bitreich.org 70 i- (format *error-output* "~?" format-control format-args) Err bitreich.org 70 i- (if *development-mode* Err bitreich.org 70 i- (cerror "continue" "die") Err bitreich.org 70 i- (ext:quit 1))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun numeric-split (string) Err bitreich.org 70 i- (if (digit-char-p (char string 0)) Err bitreich.org 70 i- (multiple-value-bind (number next-position) Err bitreich.org 70 i- (parse-integer string :junk-allowed t) Err bitreich.org 70 i- (cons number (when (< next-position (length string)) Err bitreich.org 70 i- (numeric-split (subseq string next-position))))) Err bitreich.org 70 i- (let ((next-digit-position (position-if #'digit-char-p string))) Err bitreich.org 70 i- (if next-digit-position Err bitreich.org 70 i- (cons (subseq string 0 next-digit-position) Err bitreich.org 70 i- (numeric-split (subseq string next-digit-position))) Err bitreich.org 70 i- (list string))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun natural-string-< (s1 s2) Err bitreich.org 70 i- (labels ((aux< (l1 l2) Err bitreich.org 70 i- (cond ((null l1) (not (null l2))) Err bitreich.org 70 i- ((null l2) nil) Err bitreich.org 70 i- (t (destructuring-bind (x . xs) l1 Err bitreich.org 70 i- (destructuring-bind (y . ys) l2 Err bitreich.org 70 i- (cond ((and (numberp x) (stringp y)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- ((and (numberp y) (stringp x)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- ((and (numberp x) (numberp y)) Err bitreich.org 70 i- (or (< x y) (and (= x y) (aux< xs ys)))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (or (string-lessp x y) Err bitreich.org 70 i- (and (string-equal x y) Err bitreich.org 70 i- (aux< xs ys))))))))))) Err bitreich.org 70 i- (aux< (numeric-split s1) Err bitreich.org 70 i- (numeric-split s2)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Running commands Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *dry-run* nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun cmd? (format-control &rest format-args) Err bitreich.org 70 i- (let ((cmd (format nil "~?" format-control format-args))) Err bitreich.org 70 i- (with-open-stream (s1 (ext:run-shell-command cmd :output :stream)) Err bitreich.org 70 i- (loop for line = (read-line s1 nil nil) Err bitreich.org 70 i- while line Err bitreich.org 70 i- collect line)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; XXX: quote arguments. Err bitreich.org 70 i-(defun cmd (format-control &rest format-args) Err bitreich.org 70 i- (when *development-mode* Err bitreich.org 70 i- (format *debug-io* "CMD: ~?~%" format-control format-args)) Err bitreich.org 70 i- (let ((ret (ext:run-shell-command (format nil "~?" format-control format-args)))) Err bitreich.org 70 i- (or (null ret) Err bitreich.org 70 i- (zerop ret)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun cmd! (format-control &rest format-args) Err bitreich.org 70 i- (or (apply #'cmd format-control format-args) Err bitreich.org 70 i- (die "cmd '~?' failed." format-control format-args))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun maybe-cmd! (format-control &rest format-args) Err bitreich.org 70 i- (if *dry-run* Err bitreich.org 70 i- (format t "SUPPRESSING: ~?~%" format-control format-args) Err bitreich.org 70 i- (apply #'cmd! format-control format-args))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(defun find-current-version () Err bitreich.org 70 i- (subseq (reduce (lambda (x y) (if (natural-string-< x y) y x)) Err bitreich.org 70 i- (cmd? "git tag -l v\\*")) Err bitreich.org 70 i- 1)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun parse-version (string) Err bitreich.org 70 i- (mapcar (lambda (x) Err bitreich.org 70 i- (parse-integer x :junk-allowed t)) Err bitreich.org 70 i- (loop repeat 3 ; XXX: parameterize Err bitreich.org 70 i- for el in (regexp-split "\\." (find-current-version)) Err bitreich.org 70 i- collect el))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun check-for-unrecorded-changes (&optional force) Err bitreich.org 70 i- (unless (cmd "git diff --exit-code") Err bitreich.org 70 i- (write-line "Unrecorded changes.") Err bitreich.org 70 i- (if force Err bitreich.org 70 i- (write-line "Continuing anyway.") Err bitreich.org 70 i- (die "Aborting.~@ Err bitreich.org 70 i- Use -f or --force if you want to make a release anyway.")))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun new-version-number-candidates (current-version) Err bitreich.org 70 i- (let ((current-version (parse-version current-version))) Err bitreich.org 70 i- (labels ((alternatives (before after) Err bitreich.org 70 i- (when after Err bitreich.org 70 i- (cons (append before (list (1+ (first after))) Err bitreich.org 70 i- (mapcar (constantly 0) (rest after))) Err bitreich.org 70 i- (alternatives (append before (list (first after))) Err bitreich.org 70 i- (rest after)))))) Err bitreich.org 70 i- (loop for alt in (alternatives nil current-version) Err bitreich.org 70 i- collect (reduce (lambda (acc next) Err bitreich.org 70 i- (format nil "~a.~a" acc next)) Err bitreich.org 70 i- alt))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ask-user-for-version (current-version next-versions) Err bitreich.org 70 i- (format *query-io* "Current version is ~A. Which will be the next one?~%" Err bitreich.org 70 i- current-version) Err bitreich.org 70 i- (loop for i from 1 and version in next-versions Err bitreich.org 70 i- do (format *query-io* "~T~A) ~A~%" i version)) Err bitreich.org 70 i- (format *query-io* "? ") Err bitreich.org 70 i- (finish-output *query-io*) Err bitreich.org 70 i- (nth (1- (parse-integer (read-line) :junk-allowed t)) Err bitreich.org 70 i- next-versions)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun git-tag-tree (version) Err bitreich.org 70 i- (write-line "Tagging the tree...") Err bitreich.org 70 i- (maybe-cmd! "git tag \"v~A\"" version)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun add-version-to-system-file (version path-in path-out) Err bitreich.org 70 i- (with-open-file (in path-in :direction :input) Err bitreich.org 70 i- (with-open-file (out path-out :direction :output) Err bitreich.org 70 i- (loop for line = (read-line in nil nil) while line Err bitreich.org 70 i- do (write-line line out) Err bitreich.org 70 i- when (string= #1="(defsystem " line Err bitreich.org 70 i- :end2 (min (length #1#) (length line))) Err bitreich.org 70 i- do (format out " :version ~s~%" version))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun create-dist (version distname) Err bitreich.org 70 i- (write-line "Creating distribution...") Err bitreich.org 70 i- (cmd! "mkdir \"~a\"" distname) Err bitreich.org 70 i- (cmd! "git archive master | tar xC \"~A\"" distname) Err bitreich.org 70 i- (format t "Updating ~A with new version: ~A~%" *asdf-file* version) Err bitreich.org 70 i- (let* ((asdf-file-path (format nil "~A/~A" distname *asdf-file*)) Err bitreich.org 70 i- (tmp-asdf-file-path (format nil "~a.tmp" asdf-file-path))) Err bitreich.org 70 i- (add-version-to-system-file version asdf-file-path tmp-asdf-file-path) Err bitreich.org 70 i- (cmd! "mv \"~a\" \"~a\"" tmp-asdf-file-path asdf-file-path))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun tar-and-sign (distname tarball) Err bitreich.org 70 i- (write-line "Creating and signing tarball...") Err bitreich.org 70 i- (cmd! "tar czf \"~a\" \"~a\"" tarball distname) Err bitreich.org 70 i- (cmd! "gpg -b -a \"~a\"" tarball)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *remote-directory* (format nil "~A:~A" *host* *release-dir*)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun upload-tarball (tarball signature remote-directory) Err bitreich.org 70 i- (write-line "Copying tarball to web server...") Err bitreich.org 70 i- (maybe-cmd! "scp \"~A\" \"~A\" \"~A\"" tarball signature remote-directory) Err bitreich.org 70 i- (format t "Uploaded ~A and ~A.~%" tarball signature)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun update-remote-links (tarball signature host release-dir project-name) Err bitreich.org 70 i- (format t "Updating ~A_latest links...~%" project-name) Err bitreich.org 70 i- (maybe-cmd! "ssh \"~A\" ln -sf \"~A\" \"~A/~A_latest.tar.gz\"" Err bitreich.org 70 i- host tarball release-dir project-name) Err bitreich.org 70 i- (maybe-cmd! "ssh \"~A\" ln -sf \"~A\" \"~A/~A_latest.tar.gz.asc\"" Err bitreich.org 70 i- host signature release-dir project-name)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun upload-version-file (version version-file host version-file-dir) Err bitreich.org 70 i- (format t "Uploading ~A...~%" version-file) Err bitreich.org 70 i- (maybe-cmd! "echo -n \"~A\" > \"~A\"" version version-file) Err bitreich.org 70 i- (maybe-cmd! "scp \"~A\" \"~A\":\"~A\"" version-file host version-file-dir) Err bitreich.org 70 i- (maybe-cmd! "rm \"~A\"" version-file)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun maybe-clean-things-up (tarball signature) Err bitreich.org 70 i- (when (y-or-n-p "Clean local tarball and signature?") Err bitreich.org 70 i- (cmd! "rm \"~A\" \"~A\"" tarball signature))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun run (force version) Err bitreich.org 70 i- (check-for-unrecorded-changes force) Err bitreich.org 70 i- ;; figure out what version we'll be preparing. Err bitreich.org 70 i- (unless version Err bitreich.org 70 i- (let* ((current-version (find-current-version)) Err bitreich.org 70 i- (next-versions (new-version-number-candidates current-version))) Err bitreich.org 70 i- (setf version (or (ask-user-for-version current-version next-versions) Err bitreich.org 70 i- (die "invalid selection."))))) Err bitreich.org 70 i- (git-tag-tree version) Err bitreich.org 70 i- (let* ((distname (format nil "~A_~A" *project-name* version)) Err bitreich.org 70 i- (tarball (format nil "~A.tar.gz" distname)) Err bitreich.org 70 i- (signature (format nil "~A.asc" tarball))) Err bitreich.org 70 i- ;; package things up. Err bitreich.org 70 i- (create-dist version distname) Err bitreich.org 70 i- (tar-and-sign distname tarball) Err bitreich.org 70 i- ;; upload. Err bitreich.org 70 i- (upload-tarball tarball signature *remote-directory*) Err bitreich.org 70 i- (update-remote-links tarball signature *host* *release-dir* *project-name*) Err bitreich.org 70 i- (when *version-file* Err bitreich.org 70 i- (upload-version-file version *version-file* *host* *version-file-dir*)) Err bitreich.org 70 i- ;; clean up. Err bitreich.org 70 i- (maybe-clean-things-up tarball signature) Err bitreich.org 70 i- ;; documentation. Err bitreich.org 70 i- ;; (write-line "Building and uploading documentation...") Err bitreich.org 70 i- ;; (maybe-cmd! "make -C doc upload-docs") Err bitreich.org 70 i- ;; push tags and any outstanding changes. Err bitreich.org 70 i- (write-line "Pushing tags and changes...") Err bitreich.org 70 i- (maybe-cmd! "git push --tags origin master"))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Do it to it Err bitreich.org 70 i- Err bitreich.org 70 i-(let ((force nil) Err bitreich.org 70 i- (version nil) Err bitreich.org 70 i- (args ext:*args*)) Err bitreich.org 70 i- (loop while args Err bitreich.org 70 i- do (string-case (pop args) Err bitreich.org 70 i- (("-h" "--help") Err bitreich.org 70 i- (write-line "No help, sorry. Read the source.") Err bitreich.org 70 i- (ext:quit 0)) Err bitreich.org 70 i- (("-f" "--force") Err bitreich.org 70 i- (setf force t)) Err bitreich.org 70 i- (("-v" "--version") Err bitreich.org 70 i- (setf version (pop args))) Err bitreich.org 70 i- (("-n" "--dry-run") Err bitreich.org 70 i- (setf *dry-run* t)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (die "Unrecognized argument '~a'" it)))) Err bitreich.org 70 i- (run force version)) Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-features-20161204-git/src/tf-abcl.lisp b/3rdparties/software/trivial-features-20161204-git/src/tf-abcl.lisp /scm/clic/file/3rdparties/software/trivial-features-20161204-git/src/tf-abcl.lisp.gph bitreich.org 70 i@@ -1,46 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; tf-abcl.lisp --- ABCL trivial-features implementation. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2009, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl-user) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Endianness Err bitreich.org 70 i- Err bitreich.org 70 i-(pushnew (let ((order (jcall "toString" Err bitreich.org 70 i- (jstatic "nativeOrder" "java.nio.ByteOrder")))) Err bitreich.org 70 i- (cond ((string-equal order "LITTLE_ENDIAN") Err bitreich.org 70 i- :little-endian) Err bitreich.org 70 i- ((string-equal order "BIG_ENDIAN") Err bitreich.org 70 i- :big-endian) Err bitreich.org 70 i- (t (error "Byte order ~A unknown" order)))) Err bitreich.org 70 i- *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; OS Err bitreich.org 70 i- Err bitreich.org 70 i-;;; ABCL already pushes :LINUX and :UNIX. Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; CPU Err bitreich.org 70 i- Err bitreich.org 70 i-;;; ABCL already pushes :x86-64 Err bitreich.org 70 i-\ No newline at end of file Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-features-20161204-git/src/tf-allegro.lisp b/3rdparties/software/trivial-features-20161204-git/src/tf-allegro.lisp /scm/clic/file/3rdparties/software/trivial-features-20161204-git/src/tf-allegro.lisp.gph bitreich.org 70 i@@ -1,49 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; tf-allegro.lisp --- Allegro implementation of trivial-features. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl-user) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Endianness Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Allegro already pushes :LITTLE-ENDIAN and :BIG-ENDIAN. Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; OS Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Allegro already pushes :LINUX and :UNIX. Err bitreich.org 70 i- Err bitreich.org 70 i-#+mswindows (pushnew :windows *features*) Err bitreich.org 70 i-#+macosx (pushnew :darwin *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Pushing :BSD. (Make sure this list is complete.) Err bitreich.org 70 i-#+(or macosx darwin freebsd netbsd openbsd) Err bitreich.org 70 i-(pushnew :bsd *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; CPU Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Allegro already pushes :X86 and :X86-64. Err bitreich.org 70 i- Err bitreich.org 70 i-;;; what about PPC64? Err bitreich.org 70 i-#+powerpc (pushnew :ppc *features*) Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-features-20161204-git/src/tf-clasp.lisp b/3rdparties/software/trivial-features-20161204-git/src/tf-clasp.lisp /scm/clic/file/3rdparties/software/trivial-features-20161204-git/src/tf-clasp.lisp.gph bitreich.org 70 i@@ -1,36 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; tf-clasp.lisp --- CLASP implementation of trivial-features. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl-user) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Endianness Err bitreich.org 70 i-;;; - Set by CLASP directly. Sets :LITTLE-ENDIAN or :BIG-ENDIAN Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; OS Err bitreich.org 70 i-;;; - Set by CLASP directly. Already pushes :DARWIN, :LINUX, :UNIX, :BSD Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; CPU Err bitreich.org 70 i-;;; - Set by CLASP directly. Already pushes :X86-64 (currently the only Err bitreich.org 70 i-;;; supported platform) - More will be added directly in CLASP as soon as Err bitreich.org 70 i-;;; porting is done. Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-features-20161204-git/src/tf-clisp.lisp b/3rdparties/software/trivial-features-20161204-git/src/tf-clisp.lisp /scm/clic/file/3rdparties/software/trivial-features-20161204-git/src/tf-clisp.lisp.gph bitreich.org 70 i@@ -1,72 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; tf-clisp.lisp --- CLISP trivial-features implementation. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl-user) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Endianness Err bitreich.org 70 i- Err bitreich.org 70 i-(pushnew (intern (symbol-name (if sys::*big-endian* Err bitreich.org 70 i- '#:big-endian Err bitreich.org 70 i- '#:little-endian)) Err bitreich.org 70 i- '#:keyword) Err bitreich.org 70 i- *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; OS Err bitreich.org 70 i- Err bitreich.org 70 i-;;; CLISP already exports :UNIX. Err bitreich.org 70 i- Err bitreich.org 70 i-#+win32 (pushnew :windows *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-#-win32 Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (pushnew (with-standard-io-syntax Err bitreich.org 70 i- (read-from-string Err bitreich.org 70 i- (format nil ":~(~A~)" (posix:uname-sysname (posix:uname))))) Err bitreich.org 70 i- *features*)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(or darwin freebsd netbsd openbsd) Err bitreich.org 70 i-(pushnew :bsd *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; CPU Err bitreich.org 70 i- Err bitreich.org 70 i-;;; FIXME: not complete Err bitreich.org 70 i-(let ((cpu (cond Err bitreich.org 70 i- ((or (member :pc386 *features*) Err bitreich.org 70 i- (member (machine-type) '("x86" "x86_64") Err bitreich.org 70 i- :test #'string-equal)) Err bitreich.org 70 i- (if (member :word-size=64 *features*) Err bitreich.org 70 i- '#:x86-64 Err bitreich.org 70 i- '#:x86)) Err bitreich.org 70 i- ((string= (machine-type) "POWER MACINTOSH") Err bitreich.org 70 i- '#:ppc) Err bitreich.org 70 i- ((or (member (machine-type) '("SPARC" "SPARC64") Err bitreich.org 70 i- :test #'string-equal)) Err bitreich.org 70 i- (if (member :word-size=64 *features*) Err bitreich.org 70 i- '#:sparc64 Err bitreich.org 70 i- '#:sparc))))) Err bitreich.org 70 i- (when cpu Err bitreich.org 70 i- (pushnew (intern (symbol-name cpu) '#:keyword) Err bitreich.org 70 i- *features*))) Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-features-20161204-git/src/tf-cmucl.lisp b/3rdparties/software/trivial-features-20161204-git/src/tf-cmucl.lisp /scm/clic/file/3rdparties/software/trivial-features-20161204-git/src/tf-cmucl.lisp.gph bitreich.org 70 i@@ -1,44 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; tf-cmucl.lisp --- CMUCL implementation of trivial-features. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl-user) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Endianness Err bitreich.org 70 i- Err bitreich.org 70 i-(pushnew (alien:with-alien ((ptr (array (alien:unsigned 8) 2))) Err bitreich.org 70 i- (setf (sys:sap-ref-16 (alien:alien-sap ptr) 0) #xfeff) Err bitreich.org 70 i- (ecase (sys:sap-ref-8 (alien:alien-sap ptr) 0) Err bitreich.org 70 i- (#xfe (intern "BIG-ENDIAN" :keyword)) Err bitreich.org 70 i- (#xff (intern "LITTLE-ENDIAN" :keyword)))) Err bitreich.org 70 i- *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; OS Err bitreich.org 70 i- Err bitreich.org 70 i-;;; CMUCL already pushes :UNIX, :BSD, :LINUX and :DARWIN. Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; CPU Err bitreich.org 70 i- Err bitreich.org 70 i-;;; CMUCL already pushes :PPC and :X86. Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-features-20161204-git/src/tf-corman.lisp b/3rdparties/software/trivial-features-20161204-git/src/tf-corman.lisp /scm/clic/file/3rdparties/software/trivial-features-20161204-git/src/tf-corman.lisp.gph bitreich.org 70 i@@ -1,39 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; tf-corman.lisp --- Corman Lisp implementation of trivial-features. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl-user) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Endianness Err bitreich.org 70 i- Err bitreich.org 70 i-(pushnew :little-endian *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; OS Err bitreich.org 70 i- Err bitreich.org 70 i-(pushnew :windows *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; CPU Err bitreich.org 70 i- Err bitreich.org 70 i-(pushnew :x86 *features*) Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-features-20161204-git/src/tf-ecl.lisp b/3rdparties/software/trivial-features-20161204-git/src/tf-ecl.lisp /scm/clic/file/3rdparties/software/trivial-features-20161204-git/src/tf-ecl.lisp.gph bitreich.org 70 i@@ -1,55 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; tf-ecl.lisp --- ECL implementation of trivial-features. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007-2009, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl-user) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Endianness Err bitreich.org 70 i- Err bitreich.org 70 i-(pushnew (let ((ptr (ffi:allocate-foreign-object :unsigned-short))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (setf (ffi:deref-pointer ptr :unsigned-short) #xfeff) Err bitreich.org 70 i- (ecase (ffi:deref-pointer ptr :unsigned-byte) Err bitreich.org 70 i- (#xfe (intern "BIG-ENDIAN" "KEYWORD")) Err bitreich.org 70 i- (#xff (intern "LITTLE-ENDIAN" "KEYWORD")))) Err bitreich.org 70 i- (ffi:free-foreign-object ptr))) Err bitreich.org 70 i- *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; OS Err bitreich.org 70 i- Err bitreich.org 70 i-;;; ECL already pushes :DARWIN, :LINUX, :UNIX (except on Darwin) and :BSD. Err bitreich.org 70 i- Err bitreich.org 70 i-#+darwin (pushnew :unix *features*) Err bitreich.org 70 i-#+win32 (pushnew :windows *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; CPU Err bitreich.org 70 i- Err bitreich.org 70 i-;;; FIXME: add more Err bitreich.org 70 i-#+powerpc7450 (pushnew :ppc *features*) Err bitreich.org 70 i-#+x86_64 (pushnew :x86-64 *features*) Err bitreich.org 70 i-#+(or i386 i486 i586 i686) (pushnew :x86 *features*) Err bitreich.org 70 i-#+(or armv5l armv6l armv7l) (pushnew :arm *features*) Err bitreich.org 70 i-#+mipsel (pushnew :mips *features*) Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-features-20161204-git/src/tf-lispworks.lisp b/3rdparties/software/trivial-features-20161204-git/src/tf-lispworks.lisp /scm/clic/file/3rdparties/software/trivial-features-20161204-git/src/tf-lispworks.lisp.gph bitreich.org 70 i@@ -1,58 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; tf-lispworks.lisp --- Lispworks implementation of trivial-features. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl-user) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Endianness Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Lispworks pushes :LITTLE-ENDIAN. Err bitreich.org 70 i- Err bitreich.org 70 i-#-little-endian (pushnew :big-endian *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-#-(and) Err bitreich.org 70 i-(pushnew (fli:with-dynamic-foreign-objects () Err bitreich.org 70 i- (let ((ptr (fli:alloca :type :byte :nelems 2))) Err bitreich.org 70 i- (setf (fli:dereference ptr :type '(:unsigned :short)) #xfeff) Err bitreich.org 70 i- (ecase (fli:dereference ptr :type '(:unsigned :byte)) Err bitreich.org 70 i- (#xfe (intern "BIG-ENDIAN" :keyword)) Err bitreich.org 70 i- (#xff (intern "LITTLE-ENDIAN" :keyword))))) Err bitreich.org 70 i- *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; OS Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Lispworks already pushes :DARWIN, :LINUX and :UNIX. Err bitreich.org 70 i- Err bitreich.org 70 i-#+win32 (pushnew :windows *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Pushing :BSD. (Make sure this list is complete.) Err bitreich.org 70 i-#+(or darwin freebsd netbsd openbsd) Err bitreich.org 70 i-(pushnew :bsd *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; CPU Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Lispworks already pushes :X86. Err bitreich.org 70 i- Err bitreich.org 70 i-#+powerpc (pushnew :ppc *features*) Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-features-20161204-git/src/tf-mcl.lisp b/3rdparties/software/trivial-features-20161204-git/src/tf-mcl.lisp /scm/clic/file/3rdparties/software/trivial-features-20161204-git/src/tf-mcl.lisp.gph bitreich.org 70 i@@ -1,41 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; tf-mcl.lisp --- Digitool MCL trivial-features implementation. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2010, Chun Tian (binghe) Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl-user) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Endianness Err bitreich.org 70 i- Err bitreich.org 70 i-(pushnew :big-endian *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; OS Err bitreich.org 70 i- Err bitreich.org 70 i-;;; MCL already pushes :UNIX and :DARWIN. Err bitreich.org 70 i- Err bitreich.org 70 i-(pushnew :bsd *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; CPU Err bitreich.org 70 i- Err bitreich.org 70 i-#+ppc-target (pushnew :ppc *features*) Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-features-20161204-git/src/tf-mkcl.lisp b/3rdparties/software/trivial-features-20161204-git/src/tf-mkcl.lisp /scm/clic/file/3rdparties/software/trivial-features-20161204-git/src/tf-mkcl.lisp.gph bitreich.org 70 i@@ -1,49 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; tf-mkcl.lisp --- MKCL implementation of trivial-features. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007-2009, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl-user) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Endianness Err bitreich.org 70 i- Err bitreich.org 70 i-#-(or :little-endian :big-endian) Err bitreich.org 70 i-(pushnew (let ((ptr (ffi:allocate-foreign-object :unsigned-short))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (setf (ffi:deref-pointer ptr :unsigned-short) #xfeff) Err bitreich.org 70 i- (ecase (ffi:deref-pointer ptr :unsigned-byte) Err bitreich.org 70 i- (#xfe (intern "BIG-ENDIAN" "KEYWORD")) Err bitreich.org 70 i- (#xff (intern "LITTLE-ENDIAN" "KEYWORD")))) Err bitreich.org 70 i- (ffi:free-foreign-object ptr))) Err bitreich.org 70 i- *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; OS Err bitreich.org 70 i- Err bitreich.org 70 i-;;; MKCL conforms to SPEC Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; CPU Err bitreich.org 70 i- Err bitreich.org 70 i-;;; MKCL conforms to SPEC Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-features-20161204-git/src/tf-mocl.lisp b/3rdparties/software/trivial-features-20161204-git/src/tf-mocl.lisp /scm/clic/file/3rdparties/software/trivial-features-20161204-git/src/tf-mocl.lisp.gph bitreich.org 70 i@@ -1,40 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; tf-mocl.lisp --- MOCL trivial-features implementation. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl-user) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Endianness Err bitreich.org 70 i- Err bitreich.org 70 i-;;; MOCL already pushes :LITTLE-ENDIAN. Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; OS Err bitreich.org 70 i- Err bitreich.org 70 i-;;; MOCL already pushes :IOS, :DARWIN, :BSD, and :UNIX for iOS, Err bitreich.org 70 i-;;; and :ANDROID, :LINUX, and :UNIX for Android. Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; CPU Err bitreich.org 70 i- Err bitreich.org 70 i-;;; MOCL already pushes :ARM. Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-features-20161204-git/src/tf-openmcl.lisp b/3rdparties/software/trivial-features-20161204-git/src/tf-openmcl.lisp /scm/clic/file/3rdparties/software/trivial-features-20161204-git/src/tf-openmcl.lisp.gph bitreich.org 70 i@@ -1,47 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; tf-openmcl.lisp --- OpenMCL trivial-features implementation. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl-user) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Endianness Err bitreich.org 70 i- Err bitreich.org 70 i-(pushnew #+big-endian-target :big-endian Err bitreich.org 70 i- #+little-endian-target :little-endian Err bitreich.org 70 i- *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; OS Err bitreich.org 70 i- Err bitreich.org 70 i-;;; OpenMCL already pushes :UNIX and :DARWIN. Err bitreich.org 70 i- Err bitreich.org 70 i-#+linux-target (pushnew :linux *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-#+darwin (pushnew :bsd *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; CPU Err bitreich.org 70 i- Err bitreich.org 70 i-;;; what about ppc64? Err bitreich.org 70 i-#+ppc-target (pushnew :ppc *features*) Err bitreich.org 70 i-#+x8664-target (pushnew :x86-64 *features*) Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-features-20161204-git/src/tf-sbcl.lisp b/3rdparties/software/trivial-features-20161204-git/src/tf-sbcl.lisp /scm/clic/file/3rdparties/software/trivial-features-20161204-git/src/tf-sbcl.lisp.gph bitreich.org 70 i@@ -1,51 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; tf-sbcl.lisp --- SBCL trivial-features implementation. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007-2009, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl-user) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Endianness Err bitreich.org 70 i- Err bitreich.org 70 i-(pushnew (sb-alien:with-alien ((ptr (array (sb-alien:unsigned 8) 2))) Err bitreich.org 70 i- (setf (sb-sys:sap-ref-16 (sb-alien:alien-sap ptr) 0) #xfeff) Err bitreich.org 70 i- (ecase (sb-sys:sap-ref-8 (sb-alien:alien-sap ptr) 0) Err bitreich.org 70 i- (#xfe (intern "BIG-ENDIAN" :keyword)) Err bitreich.org 70 i- (#xff (intern "LITTLE-ENDIAN" :keyword)))) Err bitreich.org 70 i- *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; OS Err bitreich.org 70 i- Err bitreich.org 70 i-;;; SBCL already pushes :DARWIN, :LINUX, :BSD and :UNIX. Err bitreich.org 70 i- Err bitreich.org 70 i-#+win32 Err bitreich.org 70 i-(progn Err bitreich.org 70 i- ;; note: as of 2008 or so, SBCL doesn't push :UNIX and :WIN32 Err bitreich.org 70 i- ;; simultaneously anymore. Err bitreich.org 70 i- (setq *features* (remove :unix *features*)) Err bitreich.org 70 i- (pushnew :windows *features*)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; CPU Err bitreich.org 70 i- Err bitreich.org 70 i-;;; SBCL already pushes: :X86, :X86-64, and :PPC Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-features-20161204-git/src/tf-scl.lisp b/3rdparties/software/trivial-features-20161204-git/src/tf-scl.lisp /scm/clic/file/3rdparties/software/trivial-features-20161204-git/src/tf-scl.lisp.gph bitreich.org 70 i@@ -1,47 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; tf-scl.lisp --- SCL implementation of trivial-features. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl-user) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Endianness Err bitreich.org 70 i- Err bitreich.org 70 i-(pushnew (alien:with-alien ((ptr (array (alien:unsigned 8) 2))) Err bitreich.org 70 i- (setf (sys:sap-ref-16 (alien:alien-sap ptr) 0) #xfeff) Err bitreich.org 70 i- (ecase (sys:sap-ref-8 (alien:alien-sap ptr) 0) Err bitreich.org 70 i- (#xfe (intern (symbol-name '#:big-endian) '#:keyword)) Err bitreich.org 70 i- (#xff (intern (symbol-name '#:little-endian) '#:keyword)))) Err bitreich.org 70 i- *features*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; OS Err bitreich.org 70 i- Err bitreich.org 70 i-;;; SCL already pushes :unix, :bsd, :linux, :hpux, and :solaris Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; CPU Err bitreich.org 70 i- Err bitreich.org 70 i-;;; SCL already pushes :amd64, :x86, :sparc, :sparc64, :hppa and :hppa64. Err bitreich.org 70 i-;;; For 64 bit CPUs the SCL pushes: :64bit Err bitreich.org 70 i- Err bitreich.org 70 i-#+amd64 (pushnew :x86-64 *features*) Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-features-20161204-git/src/tf-xcl.lisp b/3rdparties/software/trivial-features-20161204-git/src/tf-xcl.lisp /scm/clic/file/3rdparties/software/trivial-features-20161204-git/src/tf-xcl.lisp.gph bitreich.org 70 i@@ -1,39 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; tf-xcl.lisp --- XCL trivial-features implementation. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2009, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl-user) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Endianness Err bitreich.org 70 i- Err bitreich.org 70 i-;;; XCL already pushes :LITTLE-ENDIAN. Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; OS Err bitreich.org 70 i- Err bitreich.org 70 i-;;; XCL already pushes :LINUX, :UNIX, :FREEBSD, :NETBSD, :BSD and :WINDOWS. Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; CPU Err bitreich.org 70 i- Err bitreich.org 70 i-;;; XCL already pushes :X86 and :X86-64. Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-features-20161204-git/tests/package.lisp b/3rdparties/software/trivial-features-20161204-git/tests/package.lisp /scm/clic/file/3rdparties/software/trivial-features-20161204-git/tests/package.lisp.gph bitreich.org 70 i@@ -1,34 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; package.lisp --- TRIVIAL-FEATURES-TESTS package definition. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl-user) Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage :trivial-features-tests Err bitreich.org 70 i- (:use :common-lisp Err bitreich.org 70 i- :regression-test Err bitreich.org 70 i- :alexandria Err bitreich.org 70 i- :cffi) Err bitreich.org 70 i- (:export #:run)) Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-features-20161204-git/tests/sysinfo.lisp b/3rdparties/software/trivial-features-20161204-git/tests/sysinfo.lisp /scm/clic/file/3rdparties/software/trivial-features-20161204-git/tests/sysinfo.lisp.gph bitreich.org 70 i@@ -1,49 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; sysinfo.lisp --- FFI definitions for GetSystemInfo(). Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :trivial-features-tests) Err bitreich.org 70 i- Err bitreich.org 70 i-(defctype word :unsigned-short) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcenum (architecture word) Err bitreich.org 70 i- (:amd64 9) Err bitreich.org 70 i- (:ia64 6) Err bitreich.org 70 i- (:intel 0) Err bitreich.org 70 i- (:unknown #xffff)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defcstruct (system-info :size 36) Err bitreich.org 70 i- (processor-architecture architecture)) Err bitreich.org 70 i- Err bitreich.org 70 i-(load-foreign-library "kernel32.dll") Err bitreich.org 70 i- Err bitreich.org 70 i-(defcfun ("GetSystemInfo" %get-system-info :cconv :stdcall) :void Err bitreich.org 70 i- (system-info :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; only getting at the CPU architecture for now. Err bitreich.org 70 i-(defun get-system-info () Err bitreich.org 70 i- (with-foreign-object (si 'system-info) Err bitreich.org 70 i- (%get-system-info si) Err bitreich.org 70 i- (foreign-slot-value si 'system-info 'processor-architecture))) Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-features-20161204-git/tests/tests.lisp b/3rdparties/software/trivial-features-20161204-git/tests/tests.lisp /scm/clic/file/3rdparties/software/trivial-features-20161204-git/tests/tests.lisp.gph bitreich.org 70 i@@ -1,130 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; tests.lisp --- trivial-features tests. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :trivial-features-tests) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun run () Err bitreich.org 70 i- (let ((*package* (find-package :trivial-features-tests))) Err bitreich.org 70 i- (do-tests) Err bitreich.org 70 i- (null (regression-test:pending-tests)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Support Code Err bitreich.org 70 i- Err bitreich.org 70 i-#-windows Err bitreich.org 70 i-(progn Err bitreich.org 70 i- ;; Hmm, why not just use OSICAT-POSIX:UNAME? Err bitreich.org 70 i- (defcfun ("uname" %uname) :int Err bitreich.org 70 i- (buf :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Get system identification. Err bitreich.org 70 i- (defun uname () Err bitreich.org 70 i- (with-foreign-object (buf '(:struct utsname)) Err bitreich.org 70 i- (when (= (%uname buf) -1) Err bitreich.org 70 i- (error "uname() returned -1")) Err bitreich.org 70 i- (macrolet ((utsname-slot (name) Err bitreich.org 70 i- `(foreign-string-to-lisp Err bitreich.org 70 i- (foreign-slot-pointer buf 'utsname ',name)))) Err bitreich.org 70 i- (values (utsname-slot sysname) Err bitreich.org 70 i- ;; (utsname-slot nodename) Err bitreich.org 70 i- ;; (utsname-slot release) Err bitreich.org 70 i- ;; (utsname-slot version) Err bitreich.org 70 i- (utsname-slot machine)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun mutually-exclusive-p (features) Err bitreich.org 70 i- (= 1 (loop for feature in features when (featurep feature) count 1))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Tests Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest endianness.1 Err bitreich.org 70 i- (with-foreign-object (p :uint16) Err bitreich.org 70 i- (setf (mem-ref p :uint16) #xfeff) Err bitreich.org 70 i- (ecase (mem-ref p :uint8) Err bitreich.org 70 i- (#xfe (featurep :big-endian)) Err bitreich.org 70 i- (#xff (featurep :little-endian)))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *bsds* '(:darwin :netbsd :openbsd :freebsd)) Err bitreich.org 70 i-(defparameter *unices* (list* :linux *bsds*)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+windows Err bitreich.org 70 i-(deftest os.1 Err bitreich.org 70 i- (featurep (list* :or :unix *unices*)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-#-windows Err bitreich.org 70 i-(deftest os.1 Err bitreich.org 70 i- (featurep (make-keyword (string-upcase (uname)))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest os.2 Err bitreich.org 70 i- (if (featurep :bsd) Err bitreich.org 70 i- (mutually-exclusive-p *bsds*) Err bitreich.org 70 i- (featurep `(:not (:or ,@*bsds*)))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest os.3 Err bitreich.org 70 i- (if (featurep `(:or ,@*unices*)) Err bitreich.org 70 i- (featurep :unix) Err bitreich.org 70 i- t) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest os.4 Err bitreich.org 70 i- (if (featurep :windows) Err bitreich.org 70 i- (not (featurep :unix)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest cpu.1 Err bitreich.org 70 i- (mutually-exclusive-p '(:ppc :ppc64 :x86 :x86-64 :alpha :mips)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-#+windows Err bitreich.org 70 i-(deftest cpu.2 Err bitreich.org 70 i- (case (get-system-info) Err bitreich.org 70 i- (:intel (featurep :x86)) Err bitreich.org 70 i- (:amd64 (featurep :x86-64)) Err bitreich.org 70 i- (:ia64 nil) ; add this feature later! Err bitreich.org 70 i- (t t)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-#-windows Err bitreich.org 70 i-(deftest cpu.2 Err bitreich.org 70 i- (let ((machine (nth-value 1 (uname)))) Err bitreich.org 70 i- (cond ((member machine '("x86" "x86_64") :test #'string=) Err bitreich.org 70 i- (ecase (foreign-type-size :pointer) Err bitreich.org 70 i- (4 (featurep :x86)) Err bitreich.org 70 i- (8 (featurep :x86-64)))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (format *debug-io* Err bitreich.org 70 i- "~&; NOTE: unhandled machine type, ~a, in CPU.2 test.~%" Err bitreich.org 70 i- machine) Err bitreich.org 70 i- t))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-;; regression test: sometimes, silly logic leads to pushing nil to Err bitreich.org 70 i-;; *features*. Err bitreich.org 70 i-(deftest nil.1 (featurep nil) nil) Err bitreich.org 70 i-(deftest nil.2 (featurep :nil) nil) Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-features-20161204-git/tests/utsname.lisp b/3rdparties/software/trivial-features-20161204-git/tests/utsname.lisp /scm/clic/file/3rdparties/software/trivial-features-20161204-git/tests/utsname.lisp.gph bitreich.org 70 i@@ -1,36 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; utsname.lisp --- Grovel definitions for uname(3). Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :trivial-features-tests) Err bitreich.org 70 i- Err bitreich.org 70 i-(include "sys/utsname.h") Err bitreich.org 70 i- Err bitreich.org 70 i-(cstruct utsname "struct utsname" Err bitreich.org 70 i- (sysname "sysname" :type :char) Err bitreich.org 70 i- (nodename "nodename" :type :char) Err bitreich.org 70 i- (release "release" :type :char) Err bitreich.org 70 i- (version "version" :type :char) Err bitreich.org 70 i- (machine "machine" :type :char)) Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-features-20161204-git/trivial-features-tests.asd b/3rdparties/software/trivial-features-20161204-git/trivial-features-tests.asd /scm/clic/file/3rdparties/software/trivial-features-20161204-git/trivial-features-tests.asd.gph bitreich.org 70 i@@ -1,50 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; trivial-features-tests.asd --- ASDF definition. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:load-toplevel :execute) Err bitreich.org 70 i- ;; We need to load trivial-features this way before the the Err bitreich.org 70 i- ;; defsystem form is read for the corner case when someone loads Err bitreich.org 70 i- ;; trivial-features-tests before trivial-features since the system Err bitreich.org 70 i- ;; definition's got a #+windows reader conditional that is supplied Err bitreich.org 70 i- ;; by trivial-features. Err bitreich.org 70 i- (oos 'load-op 'trivial-features)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defsystem trivial-features-tests Err bitreich.org 70 i- :description "Unit tests for TRIVIAL-FEATURES." Err bitreich.org 70 i- :defsystem-depends-on (cffi-grovel) Err bitreich.org 70 i- :depends-on (trivial-features rt cffi alexandria) Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:module tests Err bitreich.org 70 i- :serial t Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:file "package") Err bitreich.org 70 i- #-windows (:cffi-grovel-file "utsname") Err bitreich.org 70 i- #+windows (:file "sysinfo") Err bitreich.org 70 i- (:file "tests"))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod perform ((o test-op) (c (eql (find-system 'trivial-features-tests)))) Err bitreich.org 70 i- (let ((*package* (find-package 'trivial-features-tests))) Err bitreich.org 70 i- (funcall (find-symbol (symbol-name '#:do-tests))))) Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-features-20161204-git/trivial-features.asd b/3rdparties/software/trivial-features-20161204-git/trivial-features.asd /scm/clic/file/3rdparties/software/trivial-features-20161204-git/trivial-features.asd.gph bitreich.org 70 i@@ -1,57 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; trivial-features.asd --- ASDF system definition. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Copyright (C) 2007, Luis Oliveira Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Permission is hereby granted, free of charge, to any person Err bitreich.org 70 i-;;; obtaining a copy of this software and associated documentation Err bitreich.org 70 i-;;; files (the "Software"), to deal in the Software without Err bitreich.org 70 i-;;; restriction, including without limitation the rights to use, copy, Err bitreich.org 70 i-;;; modify, merge, publish, distribute, sublicense, and/or sell copies Err bitreich.org 70 i-;;; of the Software, and to permit persons to whom the Software is Err bitreich.org 70 i-;;; furnished to do so, subject to the following conditions: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The above copyright notice and this permission notice shall be Err bitreich.org 70 i-;;; included in all copies or substantial portions of the Software. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT Err bitreich.org 70 i-;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, Err bitreich.org 70 i-;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, Err bitreich.org 70 i-;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER Err bitreich.org 70 i-;;; DEALINGS IN THE SOFTWARE. Err bitreich.org 70 i- Err bitreich.org 70 i-#-(or sbcl clisp allegro openmcl mcl mkcl lispworks ecl cmu scl cormanlisp abcl xcl mocl clasp) Err bitreich.org 70 i-(error "Sorry, your Lisp is not supported. Patches welcome.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defsystem trivial-features Err bitreich.org 70 i- :description "Ensures consistent *FEATURES* across multiple CLs." Err bitreich.org 70 i- :author "Luis Oliveira " Err bitreich.org 70 i- :licence "MIT" Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:module src Err bitreich.org 70 i- :serial t Err bitreich.org 70 i- :components Err bitreich.org 70 i- (#+allegro (:file "tf-allegro") Err bitreich.org 70 i- #+clisp (:file "tf-clisp") Err bitreich.org 70 i- #+cmu (:file "tf-cmucl") Err bitreich.org 70 i- #+cormanlisp (:file "tf-cormanlisp") Err bitreich.org 70 i- #+ecl (:file "tf-ecl") Err bitreich.org 70 i- #+lispworks (:file "tf-lispworks") Err bitreich.org 70 i- #+openmcl (:file "tf-openmcl") Err bitreich.org 70 i- #+mcl (:file "tf-mcl") Err bitreich.org 70 i- #+mkcl (:file "tf-mkcl") Err bitreich.org 70 i- #+sbcl (:file "tf-sbcl") Err bitreich.org 70 i- #+scl (:file "tf-scl") Err bitreich.org 70 i- #+abcl (:file "tf-abcl") Err bitreich.org 70 i- #+xcl (:file "tf-xcl") Err bitreich.org 70 i- #+mocl (:file "tf-mocl") Err bitreich.org 70 i- #+clasp (:file "tf-clasp") Err bitreich.org 70 i- )))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod perform ((o test-op) (c (eql (find-system 'trivial-features)))) Err bitreich.org 70 i- (operate 'load-op 'trivial-features-tests) Err bitreich.org 70 i- (operate 'test-op 'trivial-features-tests)) Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-garbage-20181018-git/.gitignore b/3rdparties/software/trivial-garbage-20181018-git/.gitignore /scm/clic/file/3rdparties/software/trivial-garbage-20181018-git/.gitignore.gph bitreich.org 70 i@@ -1,4 +0,0 @@ Err bitreich.org 70 i-*~ Err bitreich.org 70 i-doc/.atdoc.xml Err bitreich.org 70 i-doc/header.gif Err bitreich.org 70 i-doc/index.html Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-garbage-20181018-git/.travis.yml b/3rdparties/software/trivial-garbage-20181018-git/.travis.yml /scm/clic/file/3rdparties/software/trivial-garbage-20181018-git/.travis.yml.gph bitreich.org 70 i@@ -1,26 +0,0 @@ Err bitreich.org 70 i-language: lisp Err bitreich.org 70 i- Err bitreich.org 70 i-env: Err bitreich.org 70 i- matrix: Err bitreich.org 70 i- - LISP=abcl Err bitreich.org 70 i- - LISP=allegro Err bitreich.org 70 i- - LISP=sbcl Err bitreich.org 70 i- - LISP=sbcl32 Err bitreich.org 70 i- - LISP=ccl Err bitreich.org 70 i- - LISP=ccl32 Err bitreich.org 70 i- - LISP=clisp Err bitreich.org 70 i- - LISP=clisp32 Err bitreich.org 70 i- # - LISP=cmucl Err bitreich.org 70 i- - LISP=ecl Err bitreich.org 70 i- Err bitreich.org 70 i-# matrix: Err bitreich.org 70 i-# allow_failures: Err bitreich.org 70 i-# - env: LISP=ecl Err bitreich.org 70 i- Err bitreich.org 70 i-install: Err bitreich.org 70 i- - curl -L https://github.com/luismbo/cl-travis/raw/master/install.sh | sh Err bitreich.org 70 i- Err bitreich.org 70 i-script: Err bitreich.org 70 i- - cl -e '(ql:quickload :trivial-garbage-tests) Err bitreich.org 70 i- (unless (trivial-garbage-tests:run) Err bitreich.org 70 i- (uiop:quit 1))' Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-garbage-20181018-git/README.md b/3rdparties/software/trivial-garbage-20181018-git/README.md /scm/clic/file/3rdparties/software/trivial-garbage-20181018-git/README.md.gph bitreich.org 70 i@@ -1,12 +0,0 @@ Err bitreich.org 70 i-[![Build Status](https://travis-ci.org/trivial-garbage/trivial-garbage.svg?branch=master)](https://travis-ci.org/trivial-garbage/trivial-garbage) Err bitreich.org 70 i- Err bitreich.org 70 i-trivial-garbage provides a portable API to finalizers, weak Err bitreich.org 70 i-hash-tables and weak pointers on all major implementations of the Err bitreich.org 70 i-Common Lisp programming language. Err bitreich.org 70 i- Err bitreich.org 70 i-Documentation is available at the [project's website][1]. Err bitreich.org 70 i- Err bitreich.org 70 i-It is placed in the public domain with absolutely no warranty. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-[1]: http://common-lisp.net/project/trivial-garbage/ Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-garbage-20181018-git/build.xcvb b/3rdparties/software/trivial-garbage-20181018-git/build.xcvb /scm/clic/file/3rdparties/software/trivial-garbage-20181018-git/build.xcvb.gph bitreich.org 70 i@@ -1 +0,0 @@ Err bitreich.org 70 i-#+xcvb (module (:fullname "/trivial-garbage" :depends-on ("trivial-garbage"))) Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-garbage-20181018-git/doc/index.css b/3rdparties/software/trivial-garbage-20181018-git/doc/index.css /scm/clic/file/3rdparties/software/trivial-garbage-20181018-git/doc/index.css.gph bitreich.org 70 i@@ -1,178 +0,0 @@ Err bitreich.org 70 i-/* based on atdoc's orange-sans.css */ Err bitreich.org 70 i- Err bitreich.org 70 i-div.sidebar { Err bitreich.org 70 i- float: right; Err bitreich.org 70 i- min-width: 15%; Err bitreich.org 70 i- padding: 0pt 5pt 5pt 5pt; Err bitreich.org 70 i- font-family: verdana, arial; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-a { Err bitreich.org 70 i- text-decoration: none; Err bitreich.org 70 i- color: #ee8500; Err bitreich.org 70 i-/* Err bitreich.org 70 i- border-bottom: 1px dotted black; Err bitreich.org 70 i- border-top: 1px solid white; Err bitreich.org 70 i- border-left: 1px solid white; Err bitreich.org 70 i- border-right: 1px solid white; Err bitreich.org 70 i- padding-top: 1px; Err bitreich.org 70 i- padding-bottom: 1px; Err bitreich.org 70 i-*/ Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.nonlink { Err bitreich.org 70 i- border-bottom: 1px solid white; Err bitreich.org 70 i- border-top: 1px solid white; Err bitreich.org 70 i- border-left: 1px solid white; Err bitreich.org 70 i- border-right: 1px solid white; Err bitreich.org 70 i- padding-top: 1px; Err bitreich.org 70 i- padding-bottom: 1px; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.sidebar a { Err bitreich.org 70 i- border-top: 1px solid #eeeeee; Err bitreich.org 70 i- border-left: 1px solid #eeeeee; Err bitreich.org 70 i- border-right: 1px solid #eeeeee; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-/* Err bitreich.org 70 i-a:hover { Err bitreich.org 70 i- color: #000000; Err bitreich.org 70 i- border: 1px solid black; Err bitreich.org 70 i-} Err bitreich.org 70 i-*/ Err bitreich.org 70 i- Err bitreich.org 70 i-#headerlink { Err bitreich.org 70 i- border: none; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-#headerlink:hover { Err bitreich.org 70 i- border: none; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-body { Err bitreich.org 70 i- color: #000000; Err bitreich.org 70 i- background-color: #ffffff; Err bitreich.org 70 i- margin-top: 2em; Err bitreich.org 70 i- margin-right: 10em; Err bitreich.org 70 i- margin-left: 10em; Err bitreich.org 70 i- font-family: helvetica, verdana, arial; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.main { Err bitreich.org 70 i- margin-top: 20px; Err bitreich.org 70 i- margin-left: 40px; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.padded { Err bitreich.org 70 i- padding-left: 30px; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.padded h1,h2 { Err bitreich.org 70 i- margin-left: -30px; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-h1 { Err bitreich.org 70 i- color: #ee8500; Err bitreich.org 70 i- font-size: 22pt; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-h3 { Err bitreich.org 70 i- color: #000000; Err bitreich.org 70 i- border-bottom: 2px solid #ff9500; Err bitreich.org 70 i- margin-left: -3px; Err bitreich.org 70 i- padding-left: 3px; Err bitreich.org 70 i- padding-top: 2em; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-h4 { Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.grau { Err bitreich.org 70 i- padding-top: 1em; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.code { Err bitreich.org 70 i- border: solid 1px #d0d0d0; Err bitreich.org 70 i- padding: 1em; Err bitreich.org 70 i- margin-right: 10%; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.indent { Err bitreich.org 70 i- /*margin-left: 20px; Err bitreich.org 70 i- padding-bottom: 1em;*/ Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.def { Err bitreich.org 70 i- padding: 1px 1px 1px 1px; Err bitreich.org 70 i- margin-bottom: 1px; Err bitreich.org 70 i- font-weight: bold; Err bitreich.org 70 i- margin-right: 40px; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.nomargin { Err bitreich.org 70 i- margin-bottom: 0; Err bitreich.org 70 i- margin-top: 0; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.noindent { Err bitreich.org 70 i- margin-left: -30px; Err bitreich.org 70 i- padding-bottom: 1em; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-#header { Err bitreich.org 70 i- margin-right: 22px; Err bitreich.org 70 i- /*border-bottom: 1px solid black;*/ Err bitreich.org 70 i- font-family: verdana, arial; Err bitreich.org 70 i- font-size: 18pt; Err bitreich.org 70 i- padding-bottom: 1px; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-pre { Err bitreich.org 70 i- background-color: #eeeeee; Err bitreich.org 70 i- border: solid 1px #d0d0d0; Err bitreich.org 70 i- padding: 1em; Err bitreich.org 70 i- margin-right: 10%; Err bitreich.org 70 i-} Err bitreich.org 70 i-#sp-package-list { Err bitreich.org 70 i- /* ... */ Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-#sp-about-packages { Err bitreich.org 70 i- /* ... */ Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.sp-lambda-list { Err bitreich.org 70 i- background-color: #f4f4f4; Err bitreich.org 70 i- padding: 3px 3px 3px 3px; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.sp-definition { Err bitreich.org 70 i- border: 1px solid #cccccc; Err bitreich.org 70 i- padding: 3px 3px 3px 3px; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.sp-definition-body { Err bitreich.org 70 i- padding-left: 2em; Err bitreich.org 70 i- padding-right: 2em; Err bitreich.org 70 i- padding-top: 0.5em; Err bitreich.org 70 i- padding-bottom: 1em; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.sp-definition-body ul { Err bitreich.org 70 i- margin-top: 0; Err bitreich.org 70 i- margin-bottom: 0; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.sp-return { Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-.sph3 { Err bitreich.org 70 i- padding-top: 1em; Err bitreich.org 70 i- font-weight: bold; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-#about-package-legend { display: none } Err bitreich.org 70 i-#contents { display: none } Err bitreich.org 70 i-.function-details-legend { display: none } Err bitreich.org 70 i-#heading2 { display: none } Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-garbage-20181018-git/gendocs.lisp b/3rdparties/software/trivial-garbage-20181018-git/gendocs.lisp /scm/clic/file/3rdparties/software/trivial-garbage-20181018-git/gendocs.lisp.gph bitreich.org 70 i@@ -1,15 +0,0 @@ Err bitreich.org 70 i-(in-package :cl-user) Err bitreich.org 70 i- Err bitreich.org 70 i-(asdf:load-system :atdoc) Err bitreich.org 70 i-(asdf:load-system :trivial-garbage) Err bitreich.org 70 i- Err bitreich.org 70 i-(let* ((base (asdf:component-pathname (asdf:find-system :trivial-garbage))) Err bitreich.org 70 i- (output-directory (merge-pathnames "doc/" base)) Err bitreich.org 70 i- (css-file (merge-pathnames "doc/index.css" base))) Err bitreich.org 70 i- (ensure-directories-exist output-directory) Err bitreich.org 70 i- (atdoc:generate-html-documentation '(:trivial-garbage) Err bitreich.org 70 i- output-directory Err bitreich.org 70 i- :single-page-p t Err bitreich.org 70 i- :heading "Trivial Garbage" Err bitreich.org 70 i- :index-title "Trivial Garbage" Err bitreich.org 70 i- :css css-file)) Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-garbage-20181018-git/release.lisp b/3rdparties/software/trivial-garbage-20181018-git/release.lisp /scm/clic/file/3rdparties/software/trivial-garbage-20181018-git/release.lisp.gph bitreich.org 70 i@@ -1,250 +0,0 @@ Err bitreich.org 70 i-#!/usr/bin/env clisp Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage :release-script (:use #:cl #:regexp)) Err bitreich.org 70 i-(in-package :release-script) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Configuration ------------------------------------------------------------ Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *project-name* "trivial-garbage") Err bitreich.org 70 i-(defparameter *asdf-file* (format nil "~A.asd" *project-name*)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *host* "common-lisp.net") Err bitreich.org 70 i-(defparameter *release-dir* Err bitreich.org 70 i- (format nil "/project/~A/public_html/releases" *project-name*)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *version-file* "VERSION") Err bitreich.org 70 i-(defparameter *version-file-dir* Err bitreich.org 70 i- (format nil "/project/~A/public_html" *project-name*)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; -------------------------------------------------------------------------- Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Utilities Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ensure-list (x) Err bitreich.org 70 i- (if (listp x) x (list x))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro string-case (expression &body clauses) Err bitreich.org 70 i- `(let ((it ,expression)) ; yes, anaphoric, deal with it. Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ,@(loop for clause in clauses collect Err bitreich.org 70 i- `((or ,@(loop for alternative in (ensure-list (first clause)) Err bitreich.org 70 i- collect (or (eq t alternative) Err bitreich.org 70 i- `(string= it ,alternative)))) Err bitreich.org 70 i- ,@(rest clause)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *development-mode* nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun die (format-control &rest format-args) Err bitreich.org 70 i- (format *error-output* "~?" format-control format-args) Err bitreich.org 70 i- (if *development-mode* Err bitreich.org 70 i- (cerror "continue" "die") Err bitreich.org 70 i- (ext:quit 1))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun numeric-split (string) Err bitreich.org 70 i- (if (digit-char-p (char string 0)) Err bitreich.org 70 i- (multiple-value-bind (number next-position) Err bitreich.org 70 i- (parse-integer string :junk-allowed t) Err bitreich.org 70 i- (cons number (when (< next-position (length string)) Err bitreich.org 70 i- (numeric-split (subseq string next-position))))) Err bitreich.org 70 i- (let ((next-digit-position (position-if #'digit-char-p string))) Err bitreich.org 70 i- (if next-digit-position Err bitreich.org 70 i- (cons (subseq string 0 next-digit-position) Err bitreich.org 70 i- (numeric-split (subseq string next-digit-position))) Err bitreich.org 70 i- (list string))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun natural-string-< (s1 s2) Err bitreich.org 70 i- (labels ((aux< (l1 l2) Err bitreich.org 70 i- (cond ((null l1) (not (null l2))) Err bitreich.org 70 i- ((null l2) nil) Err bitreich.org 70 i- (t (destructuring-bind (x . xs) l1 Err bitreich.org 70 i- (destructuring-bind (y . ys) l2 Err bitreich.org 70 i- (cond ((and (numberp x) (stringp y)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- ((and (numberp y) (stringp x)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- ((and (numberp x) (numberp y)) Err bitreich.org 70 i- (or (< x y) (and (= x y) (aux< xs ys)))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (or (string-lessp x y) Err bitreich.org 70 i- (and (string-equal x y) Err bitreich.org 70 i- (aux< xs ys))))))))))) Err bitreich.org 70 i- (aux< (numeric-split s1) Err bitreich.org 70 i- (numeric-split s2)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Running commands Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *dry-run* nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun cmd? (format-control &rest format-args) Err bitreich.org 70 i- (let ((cmd (format nil "~?" format-control format-args))) Err bitreich.org 70 i- (with-open-stream (s1 (ext:run-shell-command cmd :output :stream)) Err bitreich.org 70 i- (loop for line = (read-line s1 nil nil) Err bitreich.org 70 i- while line Err bitreich.org 70 i- collect line)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; XXX: quote arguments. Err bitreich.org 70 i-(defun cmd (format-control &rest format-args) Err bitreich.org 70 i- (when *development-mode* Err bitreich.org 70 i- (format *debug-io* "CMD: ~?~%" format-control format-args)) Err bitreich.org 70 i- (let ((ret (ext:run-shell-command (format nil "~?" format-control format-args)))) Err bitreich.org 70 i- (or (null ret) Err bitreich.org 70 i- (zerop ret)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun cmd! (format-control &rest format-args) Err bitreich.org 70 i- (or (apply #'cmd format-control format-args) Err bitreich.org 70 i- (die "cmd '~?' failed." format-control format-args))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun maybe-cmd! (format-control &rest format-args) Err bitreich.org 70 i- (if *dry-run* Err bitreich.org 70 i- (format t "SUPPRESSING: ~?~%" format-control format-args) Err bitreich.org 70 i- (apply #'cmd! format-control format-args))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(defun find-current-version () Err bitreich.org 70 i- (subseq (reduce (lambda (x y) (if (natural-string-< x y) y x)) Err bitreich.org 70 i- (or (cmd? "git tag -l v\\*") Err bitreich.org 70 i- (die "no version tags found. Please specify initial version."))) Err bitreich.org 70 i- 1)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun parse-version (string) Err bitreich.org 70 i- (mapcar (lambda (x) Err bitreich.org 70 i- (parse-integer x :junk-allowed t)) Err bitreich.org 70 i- (loop repeat 3 ; XXX: parameterize Err bitreich.org 70 i- for el in (regexp-split "\\." (find-current-version)) Err bitreich.org 70 i- collect el))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun check-for-unrecorded-changes (&optional force) Err bitreich.org 70 i- (unless (cmd "git diff --exit-code") Err bitreich.org 70 i- (write-line "Unrecorded changes.") Err bitreich.org 70 i- (if force Err bitreich.org 70 i- (write-line "Continuing anyway.") Err bitreich.org 70 i- (die "Aborting.~@ Err bitreich.org 70 i- Use -f or --force if you want to make a release anyway.")))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun new-version-number-candidates (current-version) Err bitreich.org 70 i- (let ((current-version (parse-version current-version))) Err bitreich.org 70 i- (labels ((alternatives (before after) Err bitreich.org 70 i- (when after Err bitreich.org 70 i- (cons (append before (list (1+ (first after))) Err bitreich.org 70 i- (mapcar (constantly 0) (rest after))) Err bitreich.org 70 i- (alternatives (append before (list (first after))) Err bitreich.org 70 i- (rest after)))))) Err bitreich.org 70 i- (loop for alt in (alternatives nil current-version) Err bitreich.org 70 i- collect (reduce (lambda (acc next) Err bitreich.org 70 i- (format nil "~a.~a" acc next)) Err bitreich.org 70 i- alt))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ask-user-for-version (current-version next-versions) Err bitreich.org 70 i- (format *query-io* "Current version is ~A. Which will be the next one?~%" Err bitreich.org 70 i- current-version) Err bitreich.org 70 i- (loop for i from 1 and version in next-versions Err bitreich.org 70 i- do (format *query-io* "~T~A) ~A~%" i version)) Err bitreich.org 70 i- (format *query-io* "? ") Err bitreich.org 70 i- (finish-output *query-io*) Err bitreich.org 70 i- (nth (1- (parse-integer (read-line) :junk-allowed t)) Err bitreich.org 70 i- next-versions)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun git-tag-tree (version) Err bitreich.org 70 i- (write-line "Tagging the tree...") Err bitreich.org 70 i- (maybe-cmd! "git tag \"v~A\"" version)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun add-version-to-system-file (version path-in path-out) Err bitreich.org 70 i- (let ((defsystem-line (format nil "(defsystem ~A" *project-name*))) Err bitreich.org 70 i- (with-open-file (in path-in :direction :input) Err bitreich.org 70 i- (with-open-file (out path-out :direction :output) Err bitreich.org 70 i- (loop for line = (read-line in nil nil) while line Err bitreich.org 70 i- do (write-line line out) Err bitreich.org 70 i- when (string= defsystem-line line) Err bitreich.org 70 i- do (format out " :version ~s~%" version)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun create-dist (version distname) Err bitreich.org 70 i- (write-line "Creating distribution...") Err bitreich.org 70 i- (cmd! "mkdir \"~a\"" distname) Err bitreich.org 70 i- (cmd! "git archive master | tar xC \"~A\"" distname) Err bitreich.org 70 i- (format t "Updating ~A with new version: ~A~%" *asdf-file* version) Err bitreich.org 70 i- (let* ((asdf-file-path (format nil "~A/~A" distname *asdf-file*)) Err bitreich.org 70 i- (tmp-asdf-file-path (format nil "~a.tmp" asdf-file-path))) Err bitreich.org 70 i- (add-version-to-system-file version asdf-file-path tmp-asdf-file-path) Err bitreich.org 70 i- (cmd! "mv \"~a\" \"~a\"" tmp-asdf-file-path asdf-file-path))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun tar-and-sign (distname tarball) Err bitreich.org 70 i- (write-line "Creating and signing tarball...") Err bitreich.org 70 i- (cmd! "tar czf \"~a\" \"~a\"" tarball distname) Err bitreich.org 70 i- (cmd! "gpg -b -a \"~a\"" tarball)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *remote-directory* (format nil "~A:~A" *host* *release-dir*)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun upload-tarball (tarball signature remote-directory) Err bitreich.org 70 i- (write-line "Copying tarball to web server...") Err bitreich.org 70 i- (maybe-cmd! "scp \"~A\" \"~A\" \"~A\"" tarball signature remote-directory) Err bitreich.org 70 i- (format t "Uploaded ~A and ~A.~%" tarball signature)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun update-remote-links (tarball signature host release-dir project-name) Err bitreich.org 70 i- (format t "Updating ~A_latest links...~%" project-name) Err bitreich.org 70 i- (maybe-cmd! "ssh \"~A\" ln -sf \"~A\" \"~A/~A_latest.tar.gz\"" Err bitreich.org 70 i- host tarball release-dir project-name) Err bitreich.org 70 i- (maybe-cmd! "ssh \"~A\" ln -sf \"~A\" \"~A/~A_latest.tar.gz.asc\"" Err bitreich.org 70 i- host signature release-dir project-name)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun upload-version-file (version version-file host version-file-dir) Err bitreich.org 70 i- (format t "Uploading ~A...~%" version-file) Err bitreich.org 70 i- (with-open-file (out version-file :direction :output) Err bitreich.org 70 i- (write-string version out)) Err bitreich.org 70 i- (maybe-cmd! "scp \"~A\" \"~A\":\"~A\"" version-file host version-file-dir) Err bitreich.org 70 i- (maybe-cmd! "rm \"~A\"" version-file)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun maybe-clean-things-up (tarball signature) Err bitreich.org 70 i- (when (y-or-n-p "Clean local tarball and signature?") Err bitreich.org 70 i- (cmd! "rm \"~A\" \"~A\"" tarball signature))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun run (force version) Err bitreich.org 70 i- (check-for-unrecorded-changes force) Err bitreich.org 70 i- ;; figure out what version we'll be preparing. Err bitreich.org 70 i- (unless version Err bitreich.org 70 i- (let* ((current-version (find-current-version)) Err bitreich.org 70 i- (next-versions (new-version-number-candidates current-version))) Err bitreich.org 70 i- (setf version (or (ask-user-for-version current-version next-versions) Err bitreich.org 70 i- (die "invalid selection."))))) Err bitreich.org 70 i- (git-tag-tree version) Err bitreich.org 70 i- (let* ((distname (format nil "~A_~A" *project-name* version)) Err bitreich.org 70 i- (tarball (format nil "~A.tar.gz" distname)) Err bitreich.org 70 i- (signature (format nil "~A.asc" tarball))) Err bitreich.org 70 i- ;; package things up. Err bitreich.org 70 i- (create-dist version distname) Err bitreich.org 70 i- (tar-and-sign distname tarball) Err bitreich.org 70 i- ;; upload. Err bitreich.org 70 i- (upload-tarball tarball signature *remote-directory*) Err bitreich.org 70 i- (update-remote-links tarball signature *host* *release-dir* *project-name*) Err bitreich.org 70 i- (when *version-file* Err bitreich.org 70 i- (upload-version-file version *version-file* *host* *version-file-dir*)) Err bitreich.org 70 i- ;; clean up. Err bitreich.org 70 i- (maybe-clean-things-up tarball signature) Err bitreich.org 70 i- ;; documentation. Err bitreich.org 70 i- ;; (write-line "Building and uploading documentation...") Err bitreich.org 70 i- ;; (maybe-cmd! "make -C doc upload-docs") Err bitreich.org 70 i- ;; push tags and any outstanding changes. Err bitreich.org 70 i- (write-line "Pushing tags and changes...") Err bitreich.org 70 i- (maybe-cmd! "git push --tags origin master"))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Do it to it Err bitreich.org 70 i- Err bitreich.org 70 i-(let ((force nil) Err bitreich.org 70 i- (version nil) Err bitreich.org 70 i- (args ext:*args*)) Err bitreich.org 70 i- (loop while args Err bitreich.org 70 i- do (string-case (pop args) Err bitreich.org 70 i- (("-h" "--help") Err bitreich.org 70 i- (write-line "No help, sorry. Read the source.") Err bitreich.org 70 i- (ext:quit 0)) Err bitreich.org 70 i- (("-f" "--force") Err bitreich.org 70 i- (setf force t)) Err bitreich.org 70 i- (("-v" "--version") Err bitreich.org 70 i- (setf version (pop args))) Err bitreich.org 70 i- (("-n" "--dry-run") Err bitreich.org 70 i- (setf *dry-run* t)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (die "Unrecognized argument '~a'" it)))) Err bitreich.org 70 i- (run force version)) Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-garbage-20181018-git/tests.lisp b/3rdparties/software/trivial-garbage-20181018-git/tests.lisp /scm/clic/file/3rdparties/software/trivial-garbage-20181018-git/tests.lisp.gph bitreich.org 70 i@@ -1,133 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; tests.lisp --- trivial-garbage tests. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; This software is placed in the public domain by Luis Oliveira Err bitreich.org 70 i-;;; and is provided with absolutely no Err bitreich.org 70 i-;;; warranty. Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:trivial-garbage-tests Err bitreich.org 70 i- (:use #:cl #:trivial-garbage #:regression-test) Err bitreich.org 70 i- (:nicknames #:tg-tests) Err bitreich.org 70 i- (:export #:run)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:trivial-garbage-tests) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun run () Err bitreich.org 70 i- (let ((*package* (find-package :trivial-garbage-tests))) Err bitreich.org 70 i- (do-tests) Err bitreich.org 70 i- (null (set-difference (regression-test:pending-tests) Err bitreich.org 70 i- rtest::*expected-failures*)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Weak Pointers Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest pointers.1 Err bitreich.org 70 i- (weak-pointer-p (make-weak-pointer 42)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest pointers.2 Err bitreich.org 70 i- (weak-pointer-value (make-weak-pointer 42)) Err bitreich.org 70 i- 42) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Weak Hashtables Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (defun sbcl-without-weak-hash-tables-p () Err bitreich.org 70 i- (if (and (find :sbcl *features*) Err bitreich.org 70 i- (not (find-symbol "HASH-TABLE-WEAKNESS" "SB-EXT"))) Err bitreich.org 70 i- '(:and) Err bitreich.org 70 i- '(:or)))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(or corman scl #.(tg-tests::sbcl-without-weak-hash-tables-p)) Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (pushnew 'hashtables.weak-key.1 rt::*expected-failures*) Err bitreich.org 70 i- (pushnew 'hashtables.weak-key.2 rt::*expected-failures*) Err bitreich.org 70 i- (pushnew 'hashtables.weak-value.1 rt::*expected-failures*)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+clasp Err bitreich.org 70 i-(pushnew 'hashtables.weak-value.1 rt::*expected-failures*) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest hashtables.weak-key.1 Err bitreich.org 70 i- (let ((ht (make-weak-hash-table :weakness :key))) Err bitreich.org 70 i- (values (hash-table-p ht) Err bitreich.org 70 i- (hash-table-weakness ht))) Err bitreich.org 70 i- t :key) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest hashtables.weak-key.2 Err bitreich.org 70 i- (let ((ht (make-weak-hash-table :weakness :key :test 'eq))) Err bitreich.org 70 i- (values (hash-table-p ht) Err bitreich.org 70 i- (hash-table-weakness ht))) Err bitreich.org 70 i- t :key) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest hashtables.weak-value.1 Err bitreich.org 70 i- (let ((ht (make-weak-hash-table :weakness :value))) Err bitreich.org 70 i- (values (hash-table-p ht) Err bitreich.org 70 i- (hash-table-weakness ht))) Err bitreich.org 70 i- t :value) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest hashtables.not-weak.1 Err bitreich.org 70 i- (hash-table-weakness (make-hash-table)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Finalizers Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; These tests are, of course, not very reliable. Err bitreich.org 70 i- Err bitreich.org 70 i-(defun dummy (x) Err bitreich.org 70 i- (declare (ignore x)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun test-finalizers-aux (count extra-action) Err bitreich.org 70 i- (let ((cons (list 0)) Err bitreich.org 70 i- (obj (string (gensym)))) Err bitreich.org 70 i- (dotimes (i count) Err bitreich.org 70 i- (finalize obj (lambda () (incf (car cons))))) Err bitreich.org 70 i- (when extra-action Err bitreich.org 70 i- (cancel-finalization obj) Err bitreich.org 70 i- (when (eq extra-action :add-again) Err bitreich.org 70 i- (dotimes (i count) Err bitreich.org 70 i- (finalize obj (lambda () (incf (car cons))))))) Err bitreich.org 70 i- (setq obj (gensym)) Err bitreich.org 70 i- (setq obj (dummy obj)) Err bitreich.org 70 i- cons)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *result*) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; I don't really understand this, but it seems to work, and stems Err bitreich.org 70 i-;;; from the observation that typing the code in sequence at the REPL Err bitreich.org 70 i-;;; achieves the desired result. Superstition at its best. Err bitreich.org 70 i-(defmacro voodoo (string) Err bitreich.org 70 i- `(funcall Err bitreich.org 70 i- (compile nil `(lambda () Err bitreich.org 70 i- (eval (let ((*package* (find-package :tg-tests))) Err bitreich.org 70 i- (read-from-string ,,string))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun test-finalizers (count &optional remove) Err bitreich.org 70 i- (gc :full t) Err bitreich.org 70 i- (voodoo (format nil "(setq *result* (test-finalizers-aux ~S ~S))" Err bitreich.org 70 i- count remove)) Err bitreich.org 70 i- (voodoo "(gc :full t)") Err bitreich.org 70 i- ;; Normally done by a background thread every 0.3 sec: Err bitreich.org 70 i- #+openmcl (ccl::drain-termination-queue) Err bitreich.org 70 i- ;; (an alternative is to sleep a bit) Err bitreich.org 70 i- (voodoo "(car *result*)")) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest finalizers.1 Err bitreich.org 70 i- (test-finalizers 1) Err bitreich.org 70 i- 1) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest finalizers.2 Err bitreich.org 70 i- (test-finalizers 1 t) Err bitreich.org 70 i- 0) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest finalizers.3 Err bitreich.org 70 i- (test-finalizers 5) Err bitreich.org 70 i- 5) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest finalizers.4 Err bitreich.org 70 i- (test-finalizers 5 t) Err bitreich.org 70 i- 0) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest finalizers.5 Err bitreich.org 70 i- (test-finalizers 5 :add-again) Err bitreich.org 70 i- 5) Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-garbage-20181018-git/trivial-garbage.asd b/3rdparties/software/trivial-garbage-20181018-git/trivial-garbage.asd /scm/clic/file/3rdparties/software/trivial-garbage-20181018-git/trivial-garbage.asd.gph bitreich.org 70 i@@ -1,29 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; trivial-garbage.asd --- ASDF system definition for trivial-garbage. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; This software is placed in the public domain by Luis Oliveira Err bitreich.org 70 i-;;; and is provided with absolutely no Err bitreich.org 70 i-;;; warranty. Err bitreich.org 70 i- Err bitreich.org 70 i-#-(or cmu scl sbcl allegro clisp openmcl corman lispworks ecl abcl clasp) Err bitreich.org 70 i-(error "Sorry, your Lisp is not supported by trivial-garbage.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defsystem trivial-garbage Err bitreich.org 70 i- :description "Portable finalizers, weak hash-tables and weak pointers." Err bitreich.org 70 i- :author "Luis Oliveira " Err bitreich.org 70 i- :licence "Public Domain" Err bitreich.org 70 i- :components ((:file "trivial-garbage"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod perform ((op test-op) (sys (eql (find-system :trivial-garbage)))) Err bitreich.org 70 i- (operate 'test-op :trivial-garbage-tests)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defsystem trivial-garbage-tests Err bitreich.org 70 i- :description "Unit tests for TRIVIAL-GARBAGE." Err bitreich.org 70 i- :depends-on (trivial-garbage rt) Err bitreich.org 70 i- :components ((:file "tests"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod perform ((op test-op) Err bitreich.org 70 i- (sys (eql (find-system :trivial-garbage-tests)))) Err bitreich.org 70 i- (operate 'load-op :trivial-garbage-tests) Err bitreich.org 70 i- (funcall (find-symbol (string '#:do-tests) '#:rtest))) Err bitreich.org 70 1diff --git a/3rdparties/software/trivial-garbage-20181018-git/trivial-garbage.lisp b/3rdparties/software/trivial-garbage-20181018-git/trivial-garbage.lisp /scm/clic/file/3rdparties/software/trivial-garbage-20181018-git/trivial-garbage.lisp.gph bitreich.org 70 i@@ -1,404 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; trivial-garbage.lisp --- Trivial Garbage! Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; This software is placed in the public domain by Luis Oliveira Err bitreich.org 70 i-;;; and is provided with absolutely no Err bitreich.org 70 i-;;; warranty. Err bitreich.org 70 i- Err bitreich.org 70 i-#+xcvb (module ()) Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage #:trivial-garbage Err bitreich.org 70 i- (:use #:cl) Err bitreich.org 70 i- (:shadow #:make-hash-table) Err bitreich.org 70 i- (:nicknames #:tg) Err bitreich.org 70 i- (:export #:gc Err bitreich.org 70 i- #:make-weak-pointer Err bitreich.org 70 i- #:weak-pointer-value Err bitreich.org 70 i- #:weak-pointer-p Err bitreich.org 70 i- #:make-weak-hash-table Err bitreich.org 70 i- #:hash-table-weakness Err bitreich.org 70 i- #:finalize Err bitreich.org 70 i- #:cancel-finalization) Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "@a[http://common-lisp.net/project/trivial-garbage]{trivial-garbage} Err bitreich.org 70 i- provides a portable API to finalizers, weak hash-tables and weak Err bitreich.org 70 i- pointers on all major implementations of the Common Lisp Err bitreich.org 70 i- programming language. For a good introduction to these Err bitreich.org 70 i- data-structures, have a look at Err bitreich.org 70 i- @a[http://www.haible.de/bruno/papers/cs/weak/WeakDatastructures-writeup.html]{Weak Err bitreich.org 70 i- References: Data Types and Implementation} by Bruno Haible. Err bitreich.org 70 i- Err bitreich.org 70 i- Source code is available at Err bitreich.org 70 i- @a[https://github.com/trivial-garbage/trivial-garbage]{github}, Err bitreich.org 70 i- which you are welcome to use for submitting patches and/or Err bitreich.org 70 i- @a[https://github.com/trivial-garbage/trivial-garbage/issues]{bug Err bitreich.org 70 i- reports}. Discussion takes place on Err bitreich.org 70 i- @a[http://lists.common-lisp.net/cgi-bin/mailman/listinfo/trivial-garbage-devel]{trivial-garbage-devel Err bitreich.org 70 i- at common-lisp.net}. Err bitreich.org 70 i- Err bitreich.org 70 i- @a[http://common-lisp.net/project/trivial-garbage/releases/]{Tarball Err bitreich.org 70 i- releases} are available, but the easiest way to install this Err bitreich.org 70 i- library is via @a[http://www.quicklisp.org/]{Quicklisp}: Err bitreich.org 70 i- @code{(ql:quickload :trivial-garbage)}. Err bitreich.org 70 i- Err bitreich.org 70 i- @begin[Weak Pointers]{section} Err bitreich.org 70 i- A @em{weak pointer} holds an object in a way that does not prevent Err bitreich.org 70 i- it from being reclaimed by the garbage collector. An object Err bitreich.org 70 i- referenced only by weak pointers is considered unreachable (or Err bitreich.org 70 i- \"weakly reachable\") and so may be collected at any time. When Err bitreich.org 70 i- that happens, the weak pointer's value becomes @code{nil}. Err bitreich.org 70 i- Err bitreich.org 70 i- @aboutfun{make-weak-pointer} Err bitreich.org 70 i- @aboutfun{weak-pointer-value} Err bitreich.org 70 i- @aboutfun{weak-pointer-p} Err bitreich.org 70 i- @end{section} Err bitreich.org 70 i- Err bitreich.org 70 i- @begin[Weak Hash-Tables]{section} Err bitreich.org 70 i- A @em{weak hash-table} is one that weakly references its keys Err bitreich.org 70 i- and/or values. When both key and value are unreachable (or weakly Err bitreich.org 70 i- reachable) that pair is reclaimed by the garbage collector. Err bitreich.org 70 i- Err bitreich.org 70 i- @aboutfun{make-weak-hash-table} Err bitreich.org 70 i- @aboutfun{hash-table-weakness} Err bitreich.org 70 i- @end{section} Err bitreich.org 70 i- Err bitreich.org 70 i- @begin[Finalizers]{section} Err bitreich.org 70 i- A @em{finalizer} is a hook that is executed after a given object Err bitreich.org 70 i- has been reclaimed by the garbage collector. Err bitreich.org 70 i- Err bitreich.org 70 i- @aboutfun{finalize} Err bitreich.org 70 i- @aboutfun{cancel-finalization} Err bitreich.org 70 i- @end{section}")) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package #:trivial-garbage) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; GC Err bitreich.org 70 i- Err bitreich.org 70 i-(defun gc (&key full verbose) Err bitreich.org 70 i- "Initiates a garbage collection. @code{full} forces the collection Err bitreich.org 70 i- of all generations, when applicable. When @code{verbose} is Err bitreich.org 70 i- @em{true}, diagnostic information about the collection is printed Err bitreich.org 70 i- if possible." Err bitreich.org 70 i- (declare (ignorable verbose full)) Err bitreich.org 70 i- #+(or cmu scl) (ext:gc :verbose verbose :full full) Err bitreich.org 70 i- #+sbcl (sb-ext:gc :full full) Err bitreich.org 70 i- #+allegro (excl:gc (not (null full))) Err bitreich.org 70 i- #+(or abcl clisp) (ext:gc) Err bitreich.org 70 i- #+ecl (si:gc t) Err bitreich.org 70 i- #+openmcl (ccl:gc) Err bitreich.org 70 i- #+corman (ccl:gc (if full 3 0)) Err bitreich.org 70 i- #+lispworks (hcl:gc-generation (if full t 0)) Err bitreich.org 70 i- #+clasp (gctools:garbage-collect)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Weak Pointers Err bitreich.org 70 i- Err bitreich.org 70 i-#+openmcl Err bitreich.org 70 i-(defvar *weak-pointers* (cl:make-hash-table :test 'eq :weak :value) Err bitreich.org 70 i- "Weak value hash-table mapping between pseudo weak pointers and its values.") Err bitreich.org 70 i- Err bitreich.org 70 i-#+(or allegro openmcl lispworks) Err bitreich.org 70 i-(defstruct (weak-pointer (:constructor %make-weak-pointer)) Err bitreich.org 70 i- #-openmcl pointer) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-weak-pointer (object) Err bitreich.org 70 i- "Creates a new weak pointer which points to @code{object}. For Err bitreich.org 70 i- portability reasons, @code{object} must not be @code{nil}." Err bitreich.org 70 i- (assert (not (null object))) Err bitreich.org 70 i- #+sbcl (sb-ext:make-weak-pointer object) Err bitreich.org 70 i- #+(or cmu scl) (ext:make-weak-pointer object) Err bitreich.org 70 i- #+clisp (ext:make-weak-pointer object) Err bitreich.org 70 i- #+abcl (ext:make-weak-reference object) Err bitreich.org 70 i- #+ecl (ext:make-weak-pointer object) Err bitreich.org 70 i- #+allegro Err bitreich.org 70 i- (let ((wv (excl:weak-vector 1))) Err bitreich.org 70 i- (setf (svref wv 0) object) Err bitreich.org 70 i- (%make-weak-pointer :pointer wv)) Err bitreich.org 70 i- #+openmcl Err bitreich.org 70 i- (let ((wp (%make-weak-pointer))) Err bitreich.org 70 i- (setf (gethash wp *weak-pointers*) object) Err bitreich.org 70 i- wp) Err bitreich.org 70 i- #+corman (ccl:make-weak-pointer object) Err bitreich.org 70 i- #+lispworks Err bitreich.org 70 i- (let ((array (make-array 1 :weak t))) Err bitreich.org 70 i- (setf (svref array 0) object) Err bitreich.org 70 i- (%make-weak-pointer :pointer array)) Err bitreich.org 70 i- #+clasp (core:make-weak-pointer object)) Err bitreich.org 70 i- Err bitreich.org 70 i-#-(or allegro openmcl lispworks) Err bitreich.org 70 i-(defun weak-pointer-p (object) Err bitreich.org 70 i- "Returns @em{true} if @code{object} is a weak pointer and @code{nil} Err bitreich.org 70 i- otherwise." Err bitreich.org 70 i- #+sbcl (sb-ext:weak-pointer-p object) Err bitreich.org 70 i- #+(or cmu scl) (ext:weak-pointer-p object) Err bitreich.org 70 i- #+clisp (ext:weak-pointer-p object) Err bitreich.org 70 i- #+abcl (typep object 'ext:weak-reference) Err bitreich.org 70 i- #+ecl (typep object 'ext:weak-pointer) Err bitreich.org 70 i- #+corman (ccl:weak-pointer-p object) Err bitreich.org 70 i- #+clasp (core:weak-pointer-valid object)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun weak-pointer-value (weak-pointer) Err bitreich.org 70 i- "If @code{weak-pointer} is valid, returns its value. Otherwise, Err bitreich.org 70 i- returns @code{nil}." Err bitreich.org 70 i- #+sbcl (values (sb-ext:weak-pointer-value weak-pointer)) Err bitreich.org 70 i- #+(or cmu scl) (values (ext:weak-pointer-value weak-pointer)) Err bitreich.org 70 i- #+clisp (values (ext:weak-pointer-value weak-pointer)) Err bitreich.org 70 i- #+abcl (values (ext:weak-reference-value weak-pointer)) Err bitreich.org 70 i- #+ecl (values (ext:weak-pointer-value weak-pointer)) Err bitreich.org 70 i- #+allegro (svref (weak-pointer-pointer weak-pointer) 0) Err bitreich.org 70 i- #+openmcl (values (gethash weak-pointer *weak-pointers*)) Err bitreich.org 70 i- #+corman (ccl:weak-pointer-obj weak-pointer) Err bitreich.org 70 i- #+lispworks (svref (weak-pointer-pointer weak-pointer) 0) Err bitreich.org 70 i- #+clasp (core:weak-pointer-value weak-pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Weak Hash-tables Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Allegro can apparently create weak hash-tables with both weak keys Err bitreich.org 70 i-;;; and weak values but it's not obvious whether it's an OR or an AND Err bitreich.org 70 i-;;; relation. TODO: figure that out. Err bitreich.org 70 i- Err bitreich.org 70 i-(defun weakness-keyword-arg (weakness) Err bitreich.org 70 i- (declare (ignorable weakness)) Err bitreich.org 70 i- #+(or sbcl abcl clasp ecl-weak-hash) :weakness Err bitreich.org 70 i- #+(or clisp openmcl) :weak Err bitreich.org 70 i- #+lispworks :weak-kind Err bitreich.org 70 i- #+allegro (case weakness (:key :weak-keys) (:value :values)) Err bitreich.org 70 i- #+cmu :weak-p) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *weakness-warnings* '() Err bitreich.org 70 i- "List of weaknesses that have already been warned about this Err bitreich.org 70 i- session. Used by `weakness-missing'.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun weakness-missing (weakness errorp) Err bitreich.org 70 i- "Signal an error or warning, depending on ERRORP, about lack of Lisp Err bitreich.org 70 i- support for WEAKNESS." Err bitreich.org 70 i- (cond (errorp Err bitreich.org 70 i- (error "Your Lisp does not support weak ~(~A~) hash-tables." Err bitreich.org 70 i- weakness)) Err bitreich.org 70 i- ((member weakness *weakness-warnings*) nil) Err bitreich.org 70 i- (t (push weakness *weakness-warnings*) Err bitreich.org 70 i- (warn "Your Lisp does not support weak ~(~A~) hash-tables." Err bitreich.org 70 i- weakness)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun weakness-keyword-opt (weakness errorp) Err bitreich.org 70 i- (declare (ignorable errorp)) Err bitreich.org 70 i- (ecase weakness Err bitreich.org 70 i- (:key Err bitreich.org 70 i- #+(or lispworks sbcl abcl clasp clisp openmcl ecl-weak-hash) :key Err bitreich.org 70 i- #+(or allegro cmu) t Err bitreich.org 70 i- #-(or lispworks sbcl abcl clisp openmcl allegro cmu ecl-weak-hash clasp) Err bitreich.org 70 i- (weakness-missing weakness errorp)) Err bitreich.org 70 i- (:value Err bitreich.org 70 i- #+allegro :weak Err bitreich.org 70 i- #+(or clisp openmcl sbcl abcl lispworks cmu ecl-weak-hash) :value Err bitreich.org 70 i- #-(or allegro clisp openmcl sbcl abcl lispworks cmu ecl-weak-hash clasp) Err bitreich.org 70 i- (weakness-missing weakness errorp)) Err bitreich.org 70 i- (:key-or-value Err bitreich.org 70 i- #+(or clisp sbcl abcl cmu) :key-or-value Err bitreich.org 70 i- #+lispworks :either Err bitreich.org 70 i- #-(or clisp sbcl abcl lispworks cmu clasp) Err bitreich.org 70 i- (weakness-missing weakness errorp)) Err bitreich.org 70 i- (:key-and-value Err bitreich.org 70 i- #+(or clisp abcl sbcl cmu ecl-weak-hash) :key-and-value Err bitreich.org 70 i- #+lispworks :both Err bitreich.org 70 i- #-(or clisp sbcl abcl lispworks cmu ecl-weak-hash clasp) Err bitreich.org 70 i- (weakness-missing weakness errorp)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-weak-hash-table (&rest args &key weakness (weakness-matters t) Err bitreich.org 70 i- #+openmcl (test #'eql) Err bitreich.org 70 i- &allow-other-keys) Err bitreich.org 70 i- "Returns a new weak hash table. In addition to the standard Err bitreich.org 70 i- arguments accepted by @code{cl:make-hash-table}, this function adds Err bitreich.org 70 i- extra keywords: @code{:weakness} being the kind of weak table it Err bitreich.org 70 i- should create, and @code{:weakness-matters} being whether an error Err bitreich.org 70 i- should be signalled when that weakness isn't available (the default Err bitreich.org 70 i- is to signal an error). @code{weakness} can be one of @code{:key}, Err bitreich.org 70 i- @code{:value}, @code{:key-or-value}, @code{:key-and-value}. Err bitreich.org 70 i- Err bitreich.org 70 i- If @code{weakness} is @code{:key} or @code{:value}, an entry is Err bitreich.org 70 i- kept as long as its key or value is reachable, respectively. If Err bitreich.org 70 i- @code{weakness} is @code{:key-or-value} or @code{:key-and-value}, Err bitreich.org 70 i- an entry is kept if either or both of its key and value are Err bitreich.org 70 i- reachable, respectively. Err bitreich.org 70 i- Err bitreich.org 70 i- @code{tg::make-hash-table} is available as an alias for this Err bitreich.org 70 i- function should you wish to import it into your package and shadow Err bitreich.org 70 i- @code{cl:make-hash-table}." Err bitreich.org 70 i- (remf args :weakness) Err bitreich.org 70 i- (remf args :weakness-matters) Err bitreich.org 70 i- (if weakness Err bitreich.org 70 i- (let ((arg (weakness-keyword-arg weakness)) Err bitreich.org 70 i- (opt (weakness-keyword-opt weakness weakness-matters))) Err bitreich.org 70 i- (apply #'cl:make-hash-table Err bitreich.org 70 i- #+openmcl :test #+openmcl (if (eq opt :key) #'eq test) Err bitreich.org 70 i- (if arg Err bitreich.org 70 i- (list* arg opt args) Err bitreich.org 70 i- args))) Err bitreich.org 70 i- (apply #'cl:make-hash-table args))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; If you want to use this function to override CL:MAKE-HASH-TABLE, Err bitreich.org 70 i-;;; it's necessary to shadow-import it. For example: Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; (defpackage #:foo Err bitreich.org 70 i-;;; (:use #:common-lisp #:trivial-garbage) Err bitreich.org 70 i-;;; (:shadowing-import-from #:trivial-garbage #:make-hash-table)) Err bitreich.org 70 i-;;; Err bitreich.org 70 i-(defun make-hash-table (&rest args) Err bitreich.org 70 i- (apply #'make-weak-hash-table args)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun hash-table-weakness (ht) Err bitreich.org 70 i- "Returns one of @code{nil}, @code{:key}, @code{:value}, Err bitreich.org 70 i- @code{:key-or-value} or @code{:key-and-value}." Err bitreich.org 70 i- #-(or allegro sbcl abcl clisp cmu openmcl lispworks Err bitreich.org 70 i- ecl-weak-hash clasp) Err bitreich.org 70 i- (declare (ignore ht)) Err bitreich.org 70 i- ;; keep this first if any of the other lisps bugously insert a NIL Err bitreich.org 70 i- ;; for the returned (values) even when *read-suppress* is NIL (e.g. clisp) Err bitreich.org 70 i- #.(if (find :sbcl *features*) Err bitreich.org 70 i- (if (find-symbol "HASH-TABLE-WEAKNESS" "SB-EXT") Err bitreich.org 70 i- (read-from-string "(sb-ext:hash-table-weakness ht)") Err bitreich.org 70 i- nil) Err bitreich.org 70 i- (values)) Err bitreich.org 70 i- #+abcl (sys:hash-table-weakness ht) Err bitreich.org 70 i- #+ecl-weak-hash (ext:hash-table-weakness ht) Err bitreich.org 70 i- #+allegro (cond ((excl:hash-table-weak-keys ht) :key) Err bitreich.org 70 i- ((eq (excl:hash-table-values ht) :weak) :value)) Err bitreich.org 70 i- #+clisp (ext:hash-table-weak-p ht) Err bitreich.org 70 i- #+cmu (let ((weakness (lisp::hash-table-weak-p ht))) Err bitreich.org 70 i- (if (eq t weakness) :key weakness)) Err bitreich.org 70 i- #+openmcl (ccl::hash-table-weak-p ht) Err bitreich.org 70 i- #+lispworks (system::hash-table-weak-kind ht) Err bitreich.org 70 i- #+clasp (core:hash-table-weakness ht)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Finalizers Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Note: Lispworks can't finalize gensyms. Err bitreich.org 70 i- Err bitreich.org 70 i-#+(or allegro clisp lispworks openmcl) Err bitreich.org 70 i-(defvar *finalizers* Err bitreich.org 70 i- (cl:make-hash-table :test 'eq Err bitreich.org 70 i- #+allegro :weak-keys #+:allegro t Err bitreich.org 70 i- #+(or clisp openmcl) :weak Err bitreich.org 70 i- #+lispworks :weak-kind Err bitreich.org 70 i- #+(or clisp openmcl lispworks) :key Err bitreich.org 70 i- #+clasp :weakness #+clasp :key) Err bitreich.org 70 i- "Weak hashtable that holds registered finalizers.") Err bitreich.org 70 i- Err bitreich.org 70 i-#+corman Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (defvar *finalizers* '() Err bitreich.org 70 i- "Weak alist that holds registered finalizers.") Err bitreich.org 70 i- Err bitreich.org 70 i- (defvar *finalizers-cs* (threads:allocate-critical-section))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+lispworks Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (hcl:add-special-free-action 'free-action) Err bitreich.org 70 i- (defun free-action (object) Err bitreich.org 70 i- (let ((finalizers (gethash object *finalizers*))) Err bitreich.org 70 i- (unless (null finalizers) Err bitreich.org 70 i- (mapc #'funcall finalizers))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun finalize (object function) Err bitreich.org 70 i- "Pushes a new @code{function} to the @code{object}'s list of Err bitreich.org 70 i- finalizers. @code{function} should take no arguments. Returns Err bitreich.org 70 i- @code{object}. Err bitreich.org 70 i- Err bitreich.org 70 i- @b{Note:} @code{function} should not attempt to look at Err bitreich.org 70 i- @code{object} by closing over it because that will prevent it from Err bitreich.org 70 i- being garbage collected." Err bitreich.org 70 i- #+(or cmu scl) (ext:finalize object function) Err bitreich.org 70 i- #+sbcl (sb-ext:finalize object function) Err bitreich.org 70 i- #+abcl (ext:finalize object function) Err bitreich.org 70 i- #+ecl (let ((next-fn (ext:get-finalizer object))) Err bitreich.org 70 i- (ext:set-finalizer Err bitreich.org 70 i- object (lambda (obj) Err bitreich.org 70 i- (declare (ignore obj)) Err bitreich.org 70 i- (funcall function) Err bitreich.org 70 i- (when next-fn Err bitreich.org 70 i- (funcall next-fn nil))))) Err bitreich.org 70 i- #+allegro Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (push (excl:schedule-finalization Err bitreich.org 70 i- object (lambda (obj) (declare (ignore obj)) (funcall function))) Err bitreich.org 70 i- (gethash object *finalizers*)) Err bitreich.org 70 i- object) Err bitreich.org 70 i- #+clasp (gctools:finalize object function) Err bitreich.org 70 i- #+clisp Err bitreich.org 70 i- ;; The CLISP code used to be a bit simpler but we had to workaround Err bitreich.org 70 i- ;; a bug regarding the interaction between GC and weak hashtables. Err bitreich.org 70 i- ;; See Err bitreich.org 70 i- ;; and . Err bitreich.org 70 i- (multiple-value-bind (finalizers presentp) Err bitreich.org 70 i- (gethash object *finalizers* (cons 'finalizers nil)) Err bitreich.org 70 i- (unless presentp Err bitreich.org 70 i- (setf (gethash object *finalizers*) finalizers) Err bitreich.org 70 i- (ext:finalize object (lambda (obj) Err bitreich.org 70 i- (declare (ignore obj)) Err bitreich.org 70 i- (mapc #'funcall (cdr finalizers))))) Err bitreich.org 70 i- (push function (cdr finalizers)) Err bitreich.org 70 i- object) Err bitreich.org 70 i- #+openmcl Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (ccl:terminate-when-unreachable Err bitreich.org 70 i- object (lambda (obj) (declare (ignore obj)) (funcall function))) Err bitreich.org 70 i- ;; store number of finalizers Err bitreich.org 70 i- (incf (gethash object *finalizers* 0)) Err bitreich.org 70 i- object) Err bitreich.org 70 i- #+corman Err bitreich.org 70 i- (flet ((get-finalizers (obj) Err bitreich.org 70 i- (assoc obj *finalizers* :test #'eq :key #'ccl:weak-pointer-obj))) Err bitreich.org 70 i- (threads:with-synchronization *finalizers-cs* Err bitreich.org 70 i- (let ((pair (get-finalizers object))) Err bitreich.org 70 i- (if (null pair) Err bitreich.org 70 i- (push (list (ccl:make-weak-pointer object) function) *finalizers*) Err bitreich.org 70 i- (push function (cdr pair))))) Err bitreich.org 70 i- (ccl:register-finalization Err bitreich.org 70 i- object (lambda (obj) Err bitreich.org 70 i- (threads:with-synchronization *finalizers-cs* Err bitreich.org 70 i- (mapc #'funcall (cdr (get-finalizers obj))) Err bitreich.org 70 i- (setq *finalizers* Err bitreich.org 70 i- (delete obj *finalizers* Err bitreich.org 70 i- :test #'eq :key #'ccl:weak-pointer-obj))))) Err bitreich.org 70 i- object) Err bitreich.org 70 i- #+lispworks Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (let ((finalizers (gethash object *finalizers*))) Err bitreich.org 70 i- (unless finalizers Err bitreich.org 70 i- (hcl:flag-special-free-action object)) Err bitreich.org 70 i- (setf (gethash object *finalizers*) Err bitreich.org 70 i- (cons function finalizers))) Err bitreich.org 70 i- object)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun cancel-finalization (object) Err bitreich.org 70 i- "Cancels all of @code{object}'s finalizers, if any." Err bitreich.org 70 i- #+cmu (ext:cancel-finalization object) Err bitreich.org 70 i- #+scl (ext:cancel-finalization object nil) Err bitreich.org 70 i- #+sbcl (sb-ext:cancel-finalization object) Err bitreich.org 70 i- #+abcl (ext:cancel-finalization object) Err bitreich.org 70 i- #+ecl (ext:set-finalizer object nil) Err bitreich.org 70 i- #+allegro Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (mapc #'excl:unschedule-finalization Err bitreich.org 70 i- (gethash object *finalizers*)) Err bitreich.org 70 i- (remhash object *finalizers*)) Err bitreich.org 70 i- #+clasp (gctools:definalize object) Err bitreich.org 70 i- #+clisp Err bitreich.org 70 i- (multiple-value-bind (finalizers present-p) Err bitreich.org 70 i- (gethash object *finalizers*) Err bitreich.org 70 i- (when present-p Err bitreich.org 70 i- (setf (cdr finalizers) nil)) Err bitreich.org 70 i- (remhash object *finalizers*)) Err bitreich.org 70 i- #+openmcl Err bitreich.org 70 i- (let ((count (gethash object *finalizers*))) Err bitreich.org 70 i- (unless (null count) Err bitreich.org 70 i- (dotimes (i count) Err bitreich.org 70 i- (ccl:cancel-terminate-when-unreachable object)))) Err bitreich.org 70 i- #+corman Err bitreich.org 70 i- (threads:with-synchronization *finalizers-cs* Err bitreich.org 70 i- (setq *finalizers* Err bitreich.org 70 i- (delete object *finalizers* :test #'eq :key #'ccl:weak-pointer-obj))) Err bitreich.org 70 i- #+lispworks Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (remhash object *finalizers*) Err bitreich.org 70 i- (hcl:flag-not-special-free-action object))) Err bitreich.org 70 1diff --git a/3rdparties/software/uiop-3.3.2/README.md b/3rdparties/software/uiop-3.3.2/README.md /scm/clic/file/3rdparties/software/uiop-3.3.2/README.md.gph bitreich.org 70 i@@ -1,217 +0,0 @@ Err bitreich.org 70 i-UIOP, the Utilities for Implementation- and OS- Portability Err bitreich.org 70 i-=========================================================== Err bitreich.org 70 i- Err bitreich.org 70 i-UIOP is the portability layer of ASDF. Err bitreich.org 70 i-It provides utilities that abstract over discrepancies between implementations, Err bitreich.org 70 i-between operating systems, and between what the standard provides and Err bitreich.org 70 i-what programmers actually need, to write portable Common Lisp programs. Err bitreich.org 70 i- Err bitreich.org 70 i-It is organized by topic in many files, each of which defines its own package Err bitreich.org 70 i-according to its topic: e.g [pathname.lisp](pathname.lisp) Err bitreich.org 70 i-will define package `UIOP/PATHNAME` and contain utilities related to Err bitreich.org 70 i-the handling of pathname objects. Err bitreich.org 70 i-All exported symbols are reexported in a convenience package `UIOP`, Err bitreich.org 70 i-except for those from `UIOP/COMMON-LISP`. Err bitreich.org 70 i-We recommend package `UIOP` be used to access all the symbols. Err bitreich.org 70 i- Err bitreich.org 70 i-The files that constitute UIOP are, in dependency loading order: Err bitreich.org 70 i- Err bitreich.org 70 i-* [package](package.lisp): Err bitreich.org 70 i- deals with packages and their symbols, most notably including Err bitreich.org 70 i- `define-package`, a variant of `defpackage` capable of hot-upgrade, Err bitreich.org 70 i- or `symbol-call` and `find-symbol*` that are also useful for use in `.asd` Err bitreich.org 70 i- files before packages have been defined. Err bitreich.org 70 i- Err bitreich.org 70 i-* [common-lisp](common-lisp.lisp): Err bitreich.org 70 i- lets you paper over various sub-standard implementations. Err bitreich.org 70 i- Big offenders are Corman, GCL, Genera, MCL, none of them regularly maintained. Err bitreich.org 70 i- Supported without serious issues are: Err bitreich.org 70 i- ABCL, Allegro, CCL, CMUCL, CLASP, CLISP, ECL, LispWorks, MKCL, SBCL, SCL, XCL. Err bitreich.org 70 i- Err bitreich.org 70 i-* [utility](utility.lisp): Err bitreich.org 70 i- provides macros and functions that do not involve I/O; Err bitreich.org 70 i- it handles control-flow, (p)lists, characters, strings, functions, classes, Err bitreich.org 70 i- conditions, "stamps" (real number or boolean for +/- infinity), etc. Err bitreich.org 70 i- It also sports `uiop-debug`, a useful tool to help you debug programs. Err bitreich.org 70 i- Err bitreich.org 70 i-* [version](version.lisp): Err bitreich.org 70 i- manages ASDF-style versioning and a related `with-deprecation` facility Err bitreich.org 70 i- to gracefully declare that users should stop using some deprecated functions. Err bitreich.org 70 i- Err bitreich.org 70 i-* [os](os.lisp): Err bitreich.org 70 i- extracts information from your environment, including an ABI identifier, Err bitreich.org 70 i- features that distinguish Unix vs Windows, Err bitreich.org 70 i- `getenv`, `hostname`, `getcwd` and `chdir`, etc. Err bitreich.org 70 i- Err bitreich.org 70 i-* [pathname](pathname.lisp): Err bitreich.org 70 i- overcomes the gruesome non-portability trap that are CL pathnames Err bitreich.org 70 i- (and their lovecraftian "logical" variant), offering a vast array of functions Err bitreich.org 70 i- and a sensible, usable abstraction to specify relative pathnames. Err bitreich.org 70 i- It has a function `merge-pathnames*` to use instead of `merge-pathnames`, or Err bitreich.org 70 i- even better, `subpathname` and its variant `subpathname*`; it has also plenty Err bitreich.org 70 i- of functions for dealing with pathnames being directory vs file, Err bitreich.org 70 i- physical vs logical, absolute vs relative, and more. Err bitreich.org 70 i- Err bitreich.org 70 i-* [filesystem](filesystem.lisp): Err bitreich.org 70 i- provides portable access to the filesystem, inspecting it, Err bitreich.org 70 i- only using truename when desired, using native OS namestrings, Err bitreich.org 70 i- atomic file renaming, creating or deleting directories, etc. Err bitreich.org 70 i- Err bitreich.org 70 i-* [stream](stream.lisp): Err bitreich.org 70 i- portably deals with `*stderr*` vs `*error-output*`, character encodings Err bitreich.org 70 i- (external formats), element types, safe `read`ing and `write`ing, Err bitreich.org 70 i- opening files, using temporary files, flushing output buffers, Err bitreich.org 70 i- providing `format`-like designators for streams, consuming or copying streams, Err bitreich.org 70 i- concatenating streams or files, copying files, etc. Err bitreich.org 70 i- Err bitreich.org 70 i-* [image](image.lisp): Err bitreich.org 70 i- portably deals with images, dumping them, restoring from them, Err bitreich.org 70 i- registering hooks to run at suitable events in the image lifetime, Err bitreich.org 70 i- printing backtraces, handling fatal conditions, using or avoiding debug modes, Err bitreich.org 70 i- accessing command line arguments or quitting the process. Err bitreich.org 70 i- Err bitreich.org 70 i-* [lisp-build](lisp-build.lisp): Err bitreich.org 70 i- portably compiles Common Lisp code, handles compilation results, Err bitreich.org 70 i- muffles uninteresting conditions, saves and restores deferred warnings, Err bitreich.org 70 i- runs hooks around compilation (to e.g. control optimizations or syntax), Err bitreich.org 70 i- identifies the pathname of the current file, combines FASLs, etc. Err bitreich.org 70 i- Err bitreich.org 70 i-* [launch-program](launch-program.lisp): Err bitreich.org 70 i- semi-portably launches a program as an asynchronous external subprocess. Err bitreich.org 70 i- Available functionality may depend on the underlying implementation. Err bitreich.org 70 i- Err bitreich.org 70 i-* [run-program](run-program.lisp): Err bitreich.org 70 i- fully portably runs a program as a synchronous external subprocess, Err bitreich.org 70 i- feed it input and capture its output. Err bitreich.org 70 i- Most implementations also allow interactive console subprocesses. Err bitreich.org 70 i- Err bitreich.org 70 i-* [configuration](configuration.lisp): Err bitreich.org 70 i- portably locates and parses configuration files, using best practices to Err bitreich.org 70 i- define and validate syntax, search standard paths, Err bitreich.org 70 i- let users specify pathnames or pathname patterns, etc. Err bitreich.org 70 i- Err bitreich.org 70 i-* [backward-driver](backward-driver.lisp): Err bitreich.org 70 i- provides backward-compatibility with earlier incarnations of this library Err bitreich.org 70 i- (i.e. ASDF internals that have leaked, ASDF-UTILS, or older versions of UIOP). Err bitreich.org 70 i- Err bitreich.org 70 i-* [driver](driver.lisp): Err bitreich.org 70 i- reexports all the above utilities in a single package `UIOP`. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Documentation Err bitreich.org 70 i-------------- Err bitreich.org 70 i- Err bitreich.org 70 i-Each file starts with a package definition form that lists the exported symbols. Err bitreich.org 70 i- Err bitreich.org 70 i-All the exported functions, macros and variables ought to have proper docstrings. Err bitreich.org 70 i-If not, then it's a legitimate bug that we invite you to report. Err bitreich.org 70 i- Err bitreich.org 70 i-Maybe some automated tool will extract all that information and Err bitreich.org 70 i-make a webpage from it, at which point it would be nice to insert a link here. Err bitreich.org 70 i- Err bitreich.org 70 i-One tool with which you can extract all the documentation is HEΛP. Err bitreich.org 70 i-At this time, the interface is not great: it isn't obvious at all that you can indeed Err bitreich.org 70 i-use a scrollbar on the right of the top left side panel to navigate the many packages; Err bitreich.org 70 i-once you click on the package you're interested in, you can see its defined symbols: Err bitreich.org 70 i- Err bitreich.org 70 i-* Err bitreich.org 70 i- Err bitreich.org 70 i-Another automated documentation tool is quickdocs, but unhappily, at the time of this writing, Err bitreich.org 70 i-it only extracts information from the first package Err bitreich.org 70 i-(see [bug #24](https://github.com/fukamachi/quickdocs/issues/24)): Err bitreich.org 70 i- Err bitreich.org 70 i-* Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Help wanted extracting working documentation from UIOP's docstrings. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Using UIOP Err bitreich.org 70 i----------- Err bitreich.org 70 i- Err bitreich.org 70 i-UIOP is part of ASDF 3, and any modern Common Lisp implementation Err bitreich.org 70 i-will have all of UIOP available when you `(require "asdf")`. Err bitreich.org 70 i-NB: `(require :asdf)` also works on all implementations but CLISP. Err bitreich.org 70 i-Every implementation has sported ASDF 3 for years, and if yours only provides Err bitreich.org 70 i-ASDF 2, we recommend you install ASDF 3 on top of it, Err bitreich.org 70 i-using the facility in [tools/install-asdf.lisp](../tools/install-asdf.lisp). Err bitreich.org 70 i- Err bitreich.org 70 i-If you need some functionality only available in a recent version of UIOP, Err bitreich.org 70 i-but cannot or will not upgrade ASDF, UIOP is also distributed separately; Err bitreich.org 70 i-see e.g. in Quicklisp. You may then have to load it like any other library, Err bitreich.org 70 i-by adding `"uiop"` or some versioned constraint `(:version "uiop" "3.2.0")` Err bitreich.org 70 i-in your system's `:depends-on` declaration, or at the REPL using: Err bitreich.org 70 i- Err bitreich.org 70 i- (asdf:load-system :uiop) Err bitreich.org 70 i- Err bitreich.org 70 i-When refering to symbols in UIOP, we recommend you either have your package Err bitreich.org 70 i-`:use` the package `:uiop` or `:import-from` it, or that you shall use `uiop:` Err bitreich.org 70 i-as a prefix to the symbols. Please *DO NOT* refer to specific subpackages such as Err bitreich.org 70 i-`uiop/run-program` from the outside of UIOP, because functions may occasionally Err bitreich.org 70 i-be moved from one internal package to the other, without notification. Err bitreich.org 70 i-They have in the past and will in the future. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-When to use UIOP Err bitreich.org 70 i----------------- Err bitreich.org 70 i- Err bitreich.org 70 i-UIOP is the ideal tool to use when: Err bitreich.org 70 i- Err bitreich.org 70 i-* You need utilities that are always available, Err bitreich.org 70 i- portably, with no installation needed. Err bitreich.org 70 i-* You work in a cooperative environment, where the user is a developer Err bitreich.org 70 i- who understands what he's doing and is trusted not to be malicious. Err bitreich.org 70 i-* You are writing a build system, build tools, developer-facing tools. Err bitreich.org 70 i-* You are writing bootstrap scripts, in which you cannot suppose Err bitreich.org 70 i- that any third-party library has been installed (yet), Err bitreich.org 70 i- much less a C compiler or any external tool. Err bitreich.org 70 i-* You are trying to make existing Common Lisp code more robust and portable, Err bitreich.org 70 i- or replacing developer "scripts" Err bitreich.org 70 i- (in shell, perl, python, ruby, js, and other blub languages) Err bitreich.org 70 i- with Common Lisp code, but without concerns about Err bitreich.org 70 i- either end-user usability or security Err bitreich.org 70 i- (at the very least, you, not end-users, are fully controlling pathnames, Err bitreich.org 70 i- and filtering off or portably encoding any unusual character, etc.) Err bitreich.org 70 i- Err bitreich.org 70 i-UIOP is the wrong tool when: Err bitreich.org 70 i- Err bitreich.org 70 i-* You need to have total control on syscalls, Err bitreich.org 70 i- to use special characters in pathnames, to handle symlinks yourself, Err bitreich.org 70 i- or otherwise to have low-level system access. Err bitreich.org 70 i-* You work in an adversarial environment, where some users are stupid, Err bitreich.org 70 i- uneducated or outright malicious, and cannot be trusted not to try and Err bitreich.org 70 i- abuse the system with pathnames, symlinks, race conditions, etc. Err bitreich.org 70 i- (or be tricked into it by attackers). Err bitreich.org 70 i-* You are writing end-user facing tools that pass along user-provided Err bitreich.org 70 i- pathnames, with bad usability implications if a user tries to use weird Err bitreich.org 70 i- pathnames, or even security implications if an attackers crafts bad Err bitreich.org 70 i- pathnames or filesystem setups. Err bitreich.org 70 i- Err bitreich.org 70 i-In those latter cases, we recommend you use IOlib, or osicat, Err bitreich.org 70 i-or some similar library that isn't as portable as UIOP, Err bitreich.org 70 i-but provides fine-grained control over low-level system access. Err bitreich.org 70 i-Also, please use extreme caution. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Some history Err bitreich.org 70 i------------- Err bitreich.org 70 i- Err bitreich.org 70 i-UIOP, formerly known as ASDF-DRIVER (the package and system nicknames are Err bitreich.org 70 i-deprecated), evolved from ASDF 2's internal utilities and portability layer. Err bitreich.org 70 i-It has since fully superseded functionality from the following libraries: Err bitreich.org 70 i-ASDF-UTILS (UIOP carries on the ASDF 2 utilities that this exported), Err bitreich.org 70 i-CL-FAD (UIOP completely replaces it with better design and implementation), Err bitreich.org 70 i-CL-LAUNCH (UIOP took its image and command-line argument handling), Err bitreich.org 70 i-EXTERNAL-PROGRAM, TRIVIAL-SHELL and XCVB-DRIVER Err bitreich.org 70 i-(UIOP's `run-program` and now `launch-program` evolved from XCVB-DRIVER, Err bitreich.org 70 i-from which UIOP also initially got its condition muffling), Err bitreich.org 70 i-SLIME's swank-loader (UIOP has better compilation and ABI identification), Err bitreich.org 70 i-TRIVIAL-BACKTRACE (UIOP/IMAGE has all of it and more), etc. Err bitreich.org 70 i- Err bitreich.org 70 i-UIOP also captures a large subset of the functionality from TRIVIAL-FEATURES, Err bitreich.org 70 i-and a small subset of the functionality from ALEXANDRIA or FARE-UTILS. Err bitreich.org 70 i- Err bitreich.org 70 i-We recommend you use UIOP instead of any of the above, where applicable, Err bitreich.org 70 i-since UIOP is more portable, more robust, more ubiquitous, better designed, Err bitreich.org 70 i-better documented, etc. If you see any way in which UIOP isn't superior, Err bitreich.org 70 i-please tell us: we're interested in improving it so it become so. Err bitreich.org 70 1diff --git a/3rdparties/software/uiop-3.3.2/asdf-driver.asd b/3rdparties/software/uiop-3.3.2/asdf-driver.asd /scm/clic/file/3rdparties/software/uiop-3.3.2/asdf-driver.asd.gph bitreich.org 70 i@@ -1,2 +0,0 @@ Err bitreich.org 70 i-;;; -*- mode: lisp -*- Err bitreich.org 70 i-(defsystem :asdf-driver :depends-on (:uiop)) Err bitreich.org 70 1diff --git a/3rdparties/software/uiop-3.3.2/backward-driver.lisp b/3rdparties/software/uiop-3.3.2/backward-driver.lisp /scm/clic/file/3rdparties/software/uiop-3.3.2/backward-driver.lisp.gph bitreich.org 70 i@@ -1,68 +0,0 @@ Err bitreich.org 70 i-;;; ------------------------------------------------------------------------- Err bitreich.org 70 i-;;; Hacks for backward-compatibility with older versions of UIOP Err bitreich.org 70 i- Err bitreich.org 70 i-(uiop/package:define-package :uiop/backward-driver Err bitreich.org 70 i- (:recycle :uiop/backward-driver :asdf/backward-driver :uiop) Err bitreich.org 70 i- (:use :uiop/common-lisp :uiop/package :uiop/utility :uiop/version Err bitreich.org 70 i- :uiop/pathname :uiop/stream :uiop/os :uiop/image Err bitreich.org 70 i- :uiop/run-program :uiop/lisp-build :uiop/configuration) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- #:coerce-pathname Err bitreich.org 70 i- #:user-configuration-directories #:system-configuration-directories Err bitreich.org 70 i- #:in-first-directory #:in-user-configuration-directory #:in-system-configuration-directory Err bitreich.org 70 i- #:version-compatible-p)) Err bitreich.org 70 i-(in-package :uiop/backward-driver) Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i-(with-deprecation ((version-deprecation *uiop-version* :style-warning "3.2" :warning "3.4")) Err bitreich.org 70 i- ;; Backward compatibility with ASDF 2.000 to 2.26 Err bitreich.org 70 i- Err bitreich.org 70 i- ;; For backward-compatibility only, for people using internals Err bitreich.org 70 i- ;; Reported users in quicklisp 2015-11: hu.dwim.asdf (removed in next release) Err bitreich.org 70 i- ;; Will be removed after 2015-12. Err bitreich.org 70 i- (defun coerce-pathname (name &key type defaults) Err bitreich.org 70 i- "DEPRECATED. Please use UIOP:PARSE-UNIX-NAMESTRING instead." Err bitreich.org 70 i- (parse-unix-namestring name :type type :defaults defaults)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Backward compatibility for ASDF 2.27 to 3.1.4 Err bitreich.org 70 i- (defun user-configuration-directories () Err bitreich.org 70 i- "Return the current user's list of user configuration directories Err bitreich.org 70 i-for configuring common-lisp. Err bitreich.org 70 i-DEPRECATED. Use UIOP:XDG-CONFIG-PATHNAMES instead." Err bitreich.org 70 i- (xdg-config-pathnames "common-lisp")) Err bitreich.org 70 i- (defun system-configuration-directories () Err bitreich.org 70 i- "Return the list of system configuration directories for common-lisp. Err bitreich.org 70 i-DEPRECATED. Use UIOP:CONFIG-SYSTEM-PATHNAMES instead." Err bitreich.org 70 i- (system-config-pathnames "common-lisp")) Err bitreich.org 70 i- (defun in-first-directory (dirs x &key (direction :input)) Err bitreich.org 70 i- "Finds the first appropriate file named X in the list of DIRS for I/O Err bitreich.org 70 i-in DIRECTION \(which may be :INPUT, :OUTPUT, :IO, or :PROBE). Err bitreich.org 70 i-If direction is :INPUT or :PROBE, will return the first extant file named Err bitreich.org 70 i-X in one of the DIRS. Err bitreich.org 70 i-If direction is :OUTPUT or :IO, will simply return the file named X in the Err bitreich.org 70 i-first element of DIRS that exists. DEPRECATED." Err bitreich.org 70 i- (find-preferred-file Err bitreich.org 70 i- (mapcar #'(lambda (dir) (subpathname (ensure-directory-pathname dir) x)) dirs) Err bitreich.org 70 i- :direction direction)) Err bitreich.org 70 i- (defun in-user-configuration-directory (x &key (direction :input)) Err bitreich.org 70 i- "Return the file named X in the user configuration directory for common-lisp. Err bitreich.org 70 i-DEPRECATED." Err bitreich.org 70 i- (xdg-config-pathname `("common-lisp" ,x) direction)) Err bitreich.org 70 i- (defun in-system-configuration-directory (x &key (direction :input)) Err bitreich.org 70 i- "Return the pathname for the file named X under the system configuration directory Err bitreich.org 70 i-for common-lisp. DEPRECATED." Err bitreich.org 70 i- (find-preferred-file (system-config-pathnames "common-lisp" x) :direction direction)) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Backward compatibility with ASDF 1 to ASDF 2.32 Err bitreich.org 70 i- Err bitreich.org 70 i- (defun version-compatible-p (provided-version required-version) Err bitreich.org 70 i- "Is the provided version a compatible substitution for the required-version? Err bitreich.org 70 i-If major versions differ, it's not compatible. Err bitreich.org 70 i-If they are equal, then any later version is compatible, Err bitreich.org 70 i-with later being determined by a lexicographical comparison of minor numbers. Err bitreich.org 70 i-DEPRECATED." Err bitreich.org 70 i- (let ((x (parse-version provided-version nil)) Err bitreich.org 70 i- (y (parse-version required-version nil))) Err bitreich.org 70 i- (and x y (= (car x) (car y)) (lexicographic<= '< (cdr y) (cdr x))))))) Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/uiop-3.3.2/common-lisp.lisp b/3rdparties/software/uiop-3.3.2/common-lisp.lisp /scm/clic/file/3rdparties/software/uiop-3.3.2/common-lisp.lisp.gph bitreich.org 70 i@@ -1,219 +0,0 @@ Err bitreich.org 70 i-;;;; ------------------------------------------------------------------------- Err bitreich.org 70 i-;;;; Handle compatibility with multiple implementations. Err bitreich.org 70 i-;;; This file is for papering over the deficiencies and peculiarities Err bitreich.org 70 i-;;; of various Common Lisp implementations. Err bitreich.org 70 i-;;; For implementation-specific access to the system, see os.lisp instead. Err bitreich.org 70 i-;;; A few functions are defined here, but actually exported from utility; Err bitreich.org 70 i-;;; from this package only common-lisp symbols are exported. Err bitreich.org 70 i- Err bitreich.org 70 i-(uiop/package:define-package :uiop/common-lisp Err bitreich.org 70 i- (:nicknames :uoip/cl) Err bitreich.org 70 i- (:use :uiop/package) Err bitreich.org 70 i- (:use-reexport #-genera :common-lisp #+genera :future-common-lisp) Err bitreich.org 70 i- #+allegro (:intern #:*acl-warn-save*) Err bitreich.org 70 i- #+cormanlisp (:shadow #:user-homedir-pathname) Err bitreich.org 70 i- #+cormanlisp Err bitreich.org 70 i- (:export Err bitreich.org 70 i- #:logical-pathname #:translate-logical-pathname Err bitreich.org 70 i- #:make-broadcast-stream #:file-namestring) Err bitreich.org 70 i- #+genera (:shadowing-import-from :scl #:boolean) Err bitreich.org 70 i- #+genera (:export #:boolean #:ensure-directories-exist #:read-sequence #:write-sequence) Err bitreich.org 70 i- #+(or mcl cmucl) (:shadow #:user-homedir-pathname)) Err bitreich.org 70 i-(in-package :uiop/common-lisp) Err bitreich.org 70 i- Err bitreich.org 70 i-#-(or abcl allegro clasp clisp clozure cmucl cormanlisp ecl gcl genera lispworks mcl mezzano mkcl sbcl scl xcl) Err bitreich.org 70 i-(error "ASDF is not supported on your implementation. Please help us port it.") Err bitreich.org 70 i- Err bitreich.org 70 i-;; (declaim (optimize (speed 1) (debug 3) (safety 3))) ; DON'T: trust implementation defaults. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Early meta-level tweaks Err bitreich.org 70 i- Err bitreich.org 70 i-#+(or allegro clasp clisp clozure cmucl ecl mezzano mkcl sbcl) Err bitreich.org 70 i-(eval-when (:load-toplevel :compile-toplevel :execute) Err bitreich.org 70 i- (when (and #+allegro (member :ics *features*) Err bitreich.org 70 i- #+(or clasp clisp cmucl ecl mkcl) (member :unicode *features*) Err bitreich.org 70 i- #+clozure (member :openmcl-unicode-strings *features*) Err bitreich.org 70 i- #+sbcl (member :sb-unicode *features*)) Err bitreich.org 70 i- ;; Check for unicode at runtime, so that a hypothetical FASL compiled with unicode Err bitreich.org 70 i- ;; but loaded in a non-unicode setting (e.g. on Allegro) won't tell a lie. Err bitreich.org 70 i- (pushnew :asdf-unicode *features*))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+allegro Err bitreich.org 70 i-(eval-when (:load-toplevel :compile-toplevel :execute) Err bitreich.org 70 i- ;; We need to disable autoloading BEFORE any mention of package ASDF. Err bitreich.org 70 i- ;; In particular, there must NOT be a mention of package ASDF in the defpackage of this file Err bitreich.org 70 i- ;; or any previous file. Err bitreich.org 70 i- (setf excl::*autoload-package-name-alist* Err bitreich.org 70 i- (remove "asdf" excl::*autoload-package-name-alist* Err bitreich.org 70 i- :test 'equalp :key 'car)) Err bitreich.org 70 i- (defparameter *acl-warn-save* Err bitreich.org 70 i- (when (boundp 'excl:*warn-on-nested-reader-conditionals*) Err bitreich.org 70 i- excl:*warn-on-nested-reader-conditionals*)) Err bitreich.org 70 i- (when (boundp 'excl:*warn-on-nested-reader-conditionals*) Err bitreich.org 70 i- (setf excl:*warn-on-nested-reader-conditionals* nil)) Err bitreich.org 70 i- (setf *print-readably* nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+clasp Err bitreich.org 70 i-(eval-when (:load-toplevel :compile-toplevel :execute) Err bitreich.org 70 i- (setf *load-verbose* nil) Err bitreich.org 70 i- (defun use-ecl-byte-compiler-p () nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+clozure (in-package :ccl) Err bitreich.org 70 i-#+(and clozure windows-target) ;; See http://trac.clozure.com/ccl/ticket/1117 Err bitreich.org 70 i-(eval-when (:load-toplevel :compile-toplevel :execute) Err bitreich.org 70 i- (unless (fboundp 'external-process-wait) Err bitreich.org 70 i- (in-development-mode Err bitreich.org 70 i- (defun external-process-wait (proc) Err bitreich.org 70 i- (when (and (external-process-pid proc) (eq (external-process-%status proc) :running)) Err bitreich.org 70 i- (with-interrupts-enabled Err bitreich.org 70 i- (wait-on-semaphore (external-process-completed proc)))) Err bitreich.org 70 i- (values (external-process-%exit-code proc) Err bitreich.org 70 i- (external-process-%status proc)))))) Err bitreich.org 70 i-#+clozure (in-package :uiop/common-lisp) ;; back in this package. Err bitreich.org 70 i- Err bitreich.org 70 i-#+cmucl Err bitreich.org 70 i-(eval-when (:load-toplevel :compile-toplevel :execute) Err bitreich.org 70 i- (setf ext:*gc-verbose* nil) Err bitreich.org 70 i- (defun user-homedir-pathname () Err bitreich.org 70 i- (first (ext:search-list (cl:user-homedir-pathname))))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+cormanlisp Err bitreich.org 70 i-(eval-when (:load-toplevel :compile-toplevel :execute) Err bitreich.org 70 i- (deftype logical-pathname () nil) Err bitreich.org 70 i- (defun make-broadcast-stream () *error-output*) Err bitreich.org 70 i- (defun translate-logical-pathname (x) x) Err bitreich.org 70 i- (defun user-homedir-pathname (&optional host) Err bitreich.org 70 i- (declare (ignore host)) Err bitreich.org 70 i- (parse-namestring (format nil "~A\\" (cl:user-homedir-pathname)))) Err bitreich.org 70 i- (defun file-namestring (p) Err bitreich.org 70 i- (setf p (pathname p)) Err bitreich.org 70 i- (format nil "~@[~A~]~@[.~A~]" (pathname-name p) (pathname-type p)))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+ecl Err bitreich.org 70 i-(eval-when (:load-toplevel :compile-toplevel :execute) Err bitreich.org 70 i- (setf *load-verbose* nil) Err bitreich.org 70 i- (defun use-ecl-byte-compiler-p () (and (member :ecl-bytecmp *features*) t)) Err bitreich.org 70 i- (unless (use-ecl-byte-compiler-p) (require :cmp))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+gcl Err bitreich.org 70 i-(eval-when (:load-toplevel :compile-toplevel :execute) Err bitreich.org 70 i- (unless (member :ansi-cl *features*) Err bitreich.org 70 i- (error "ASDF only supports GCL in ANSI mode. Aborting.~%")) Err bitreich.org 70 i- (setf compiler::*compiler-default-type* (pathname "") Err bitreich.org 70 i- compiler::*lsp-ext* "") Err bitreich.org 70 i- #.(let ((code ;; Only support very recent GCL 2.7.0 from November 2013 or later. Err bitreich.org 70 i- (cond Err bitreich.org 70 i- #+gcl Err bitreich.org 70 i- ((or (< system::*gcl-major-version* 2) Err bitreich.org 70 i- (and (= system::*gcl-major-version* 2) Err bitreich.org 70 i- (< system::*gcl-minor-version* 7))) Err bitreich.org 70 i- '(error "GCL 2.7 or later required to use ASDF"))))) Err bitreich.org 70 i- (eval code) Err bitreich.org 70 i- code)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+genera Err bitreich.org 70 i-(eval-when (:load-toplevel :compile-toplevel :execute) Err bitreich.org 70 i- (unless (fboundp 'lambda) Err bitreich.org 70 i- (defmacro lambda (&whole form &rest bvl-decls-and-body) Err bitreich.org 70 i- (declare (ignore bvl-decls-and-body)(zwei::indentation 1 1)) Err bitreich.org 70 i- `#',(cons 'lisp::lambda (cdr form)))) Err bitreich.org 70 i- (unless (fboundp 'ensure-directories-exist) Err bitreich.org 70 i- (defun ensure-directories-exist (path) Err bitreich.org 70 i- (fs:create-directories-recursively (pathname path)))) Err bitreich.org 70 i- (unless (fboundp 'read-sequence) Err bitreich.org 70 i- (defun read-sequence (sequence stream &key (start 0) end) Err bitreich.org 70 i- (scl:send stream :string-in nil sequence start end))) Err bitreich.org 70 i- (unless (fboundp 'write-sequence) Err bitreich.org 70 i- (defun write-sequence (sequence stream &key (start 0) end) Err bitreich.org 70 i- (scl:send stream :string-out sequence start end) Err bitreich.org 70 i- sequence))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+lispworks Err bitreich.org 70 i-(eval-when (:load-toplevel :compile-toplevel :execute) Err bitreich.org 70 i- ;; lispworks 3 and earlier cannot be checked for so we always assume Err bitreich.org 70 i- ;; at least version 4 Err bitreich.org 70 i- (unless (member :lispworks4 *features*) Err bitreich.org 70 i- (pushnew :lispworks5+ *features*) Err bitreich.org 70 i- (unless (member :lispworks5 *features*) Err bitreich.org 70 i- (pushnew :lispworks6+ *features*) Err bitreich.org 70 i- (unless (member :lispworks6 *features*) Err bitreich.org 70 i- (pushnew :lispworks7+ *features*))))) Err bitreich.org 70 i- Err bitreich.org 70 i-#.(or #+mcl ;; the #$ doesn't work on other lisps, even protected by #+mcl, so we use this trick Err bitreich.org 70 i- (read-from-string Err bitreich.org 70 i- "(eval-when (:load-toplevel :compile-toplevel :execute) Err bitreich.org 70 i- (ccl:define-entry-point (_getenv \"getenv\") ((name :string)) :string) Err bitreich.org 70 i- (ccl:define-entry-point (_system \"system\") ((name :string)) :int) Err bitreich.org 70 i- ;; Note: ASDF may expect user-homedir-pathname to provide Err bitreich.org 70 i- ;; the pathname of the current user's home directory, whereas Err bitreich.org 70 i- ;; MCL by default provides the directory from which MCL was started. Err bitreich.org 70 i- ;; See http://code.google.com/p/mcl/wiki/Portability Err bitreich.org 70 i- (defun user-homedir-pathname () Err bitreich.org 70 i- (ccl::findfolder #$kuserdomain #$kCurrentUserFolderType)) Err bitreich.org 70 i- (defun probe-posix (posix-namestring) Err bitreich.org 70 i- \"If a file exists for the posix namestring, return the pathname\" Err bitreich.org 70 i- (ccl::with-cstrs ((cpath posix-namestring)) Err bitreich.org 70 i- (ccl::rlet ((is-dir :boolean) Err bitreich.org 70 i- (fsref :fsref)) Err bitreich.org 70 i- (when (eq #$noerr (#_fspathmakeref cpath fsref is-dir)) Err bitreich.org 70 i- (ccl::%path-from-fsref fsref is-dir))))))")) Err bitreich.org 70 i- Err bitreich.org 70 i-#+mkcl Err bitreich.org 70 i-(eval-when (:load-toplevel :compile-toplevel :execute) Err bitreich.org 70 i- (require :cmp) Err bitreich.org 70 i- (setq clos::*redefine-class-in-place* t)) ;; Make sure we have strict ANSI class redefinition semantics Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Looping Err bitreich.org 70 i-(eval-when (:load-toplevel :compile-toplevel :execute) Err bitreich.org 70 i- (defmacro loop* (&rest rest) Err bitreich.org 70 i- #-genera `(loop ,@rest) Err bitreich.org 70 i- #+genera `(lisp:loop ,@rest))) ;; In genera, CL:LOOP can't destructure, so we use LOOP*. Sigh. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; compatfmt: avoid fancy format directives when unsupported Err bitreich.org 70 i-(eval-when (:load-toplevel :compile-toplevel :execute) Err bitreich.org 70 i- (defun frob-substrings (string substrings &optional frob) Err bitreich.org 70 i- "for each substring in SUBSTRINGS, find occurrences of it within STRING Err bitreich.org 70 i-that don't use parts of matched occurrences of previous strings, and Err bitreich.org 70 i-FROB them, that is to say, remove them if FROB is NIL, Err bitreich.org 70 i-replace by FROB if FROB is a STRING, or if FROB is a FUNCTION, Err bitreich.org 70 i-call FROB with the match and a function that emits a string in the output. Err bitreich.org 70 i-Return a string made of the parts not omitted or emitted by FROB." Err bitreich.org 70 i- (declare (optimize (speed 0) (safety #-gcl 3 #+gcl 0) (debug 3))) Err bitreich.org 70 i- (let ((length (length string)) (stream nil)) Err bitreich.org 70 i- (labels ((emit-string (x &optional (start 0) (end (length x))) Err bitreich.org 70 i- (when (< start end) Err bitreich.org 70 i- (unless stream (setf stream (make-string-output-stream))) Err bitreich.org 70 i- (write-string x stream :start start :end end))) Err bitreich.org 70 i- (emit-substring (start end) Err bitreich.org 70 i- (when (and (zerop start) (= end length)) Err bitreich.org 70 i- (return-from frob-substrings string)) Err bitreich.org 70 i- (emit-string string start end)) Err bitreich.org 70 i- (recurse (substrings start end) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((>= start end)) Err bitreich.org 70 i- ((null substrings) (emit-substring start end)) Err bitreich.org 70 i- (t (let* ((sub-spec (first substrings)) Err bitreich.org 70 i- (sub (if (consp sub-spec) (car sub-spec) sub-spec)) Err bitreich.org 70 i- (fun (if (consp sub-spec) (cdr sub-spec) frob)) Err bitreich.org 70 i- (found (search sub string :start2 start :end2 end)) Err bitreich.org 70 i- (more (rest substrings))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- (found Err bitreich.org 70 i- (recurse more start found) Err bitreich.org 70 i- (etypecase fun Err bitreich.org 70 i- (null) Err bitreich.org 70 i- (string (emit-string fun)) Err bitreich.org 70 i- (function (funcall fun sub #'emit-string))) Err bitreich.org 70 i- (recurse substrings (+ found (length sub)) end)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (recurse more start end)))))))) Err bitreich.org 70 i- (recurse substrings 0 length)) Err bitreich.org 70 i- (if stream (get-output-stream-string stream) ""))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmacro compatfmt (format) Err bitreich.org 70 i- #+(or gcl genera) Err bitreich.org 70 i- (frob-substrings format `("~3i~_" #+genera ,@'("~@<" "~@;" "~@:>" "~:>"))) Err bitreich.org 70 i- #-(or gcl genera) format)) Err bitreich.org 70 1diff --git a/3rdparties/software/uiop-3.3.2/configuration.lisp b/3rdparties/software/uiop-3.3.2/configuration.lisp /scm/clic/file/3rdparties/software/uiop-3.3.2/configuration.lisp.gph bitreich.org 70 i@@ -1,413 +0,0 @@ Err bitreich.org 70 i-;;;; --------------------------------------------------------------------------- Err bitreich.org 70 i-;;;; Generic support for configuration files Err bitreich.org 70 i- Err bitreich.org 70 i-(uiop/package:define-package :uiop/configuration Err bitreich.org 70 i- (:recycle :uiop/configuration :asdf/configuration) ;; necessary to upgrade from 2.27. Err bitreich.org 70 i- (:use :uiop/common-lisp :uiop/utility Err bitreich.org 70 i- :uiop/os :uiop/pathname :uiop/filesystem :uiop/stream :uiop/image :uiop/lisp-build) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- #:user-configuration-directories #:system-configuration-directories ;; implemented in backward-driver Err bitreich.org 70 i- #:in-first-directory #:in-user-configuration-directory #:in-system-configuration-directory ;; idem Err bitreich.org 70 i- #:get-folder-path Err bitreich.org 70 i- #:xdg-data-home #:xdg-config-home #:xdg-data-dirs #:xdg-config-dirs Err bitreich.org 70 i- #:xdg-cache-home #:xdg-runtime-dir #:system-config-pathnames Err bitreich.org 70 i- #:filter-pathname-set #:xdg-data-pathnames #:xdg-config-pathnames Err bitreich.org 70 i- #:find-preferred-file #:xdg-data-pathname #:xdg-config-pathname Err bitreich.org 70 i- #:validate-configuration-form #:validate-configuration-file #:validate-configuration-directory Err bitreich.org 70 i- #:configuration-inheritance-directive-p Err bitreich.org 70 i- #:report-invalid-form #:invalid-configuration #:*ignored-configuration-form* #:*user-cache* Err bitreich.org 70 i- #:*clear-configuration-hook* #:clear-configuration #:register-clear-configuration-hook Err bitreich.org 70 i- #:resolve-location #:location-designator-p #:location-function-p #:*here-directory* Err bitreich.org 70 i- #:resolve-relative-location #:resolve-absolute-location #:upgrade-configuration)) Err bitreich.org 70 i-(in-package :uiop/configuration) Err bitreich.org 70 i- Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (define-condition invalid-configuration () Err bitreich.org 70 i- ((form :reader condition-form :initarg :form) Err bitreich.org 70 i- (location :reader condition-location :initarg :location) Err bitreich.org 70 i- (format :reader condition-format :initarg :format) Err bitreich.org 70 i- (arguments :reader condition-arguments :initarg :arguments :initform nil)) Err bitreich.org 70 i- (:report (lambda (c s) Err bitreich.org 70 i- (format s (compatfmt "~@<~? (will be skipped)~@:>") Err bitreich.org 70 i- (condition-format c) Err bitreich.org 70 i- (list* (condition-form c) (condition-location c) Err bitreich.org 70 i- (condition-arguments c)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun configuration-inheritance-directive-p (x) Err bitreich.org 70 i- "Is X a configuration inheritance directive?" Err bitreich.org 70 i- (let ((kw '(:inherit-configuration :ignore-inherited-configuration))) Err bitreich.org 70 i- (or (member x kw) Err bitreich.org 70 i- (and (length=n-p x 1) (member (car x) kw))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun report-invalid-form (reporter &rest args) Err bitreich.org 70 i- "Report an invalid form according to REPORTER and various ARGS" Err bitreich.org 70 i- (etypecase reporter Err bitreich.org 70 i- (null Err bitreich.org 70 i- (apply 'error 'invalid-configuration args)) Err bitreich.org 70 i- (function Err bitreich.org 70 i- (apply reporter args)) Err bitreich.org 70 i- ((or symbol string) Err bitreich.org 70 i- (apply 'error reporter args)) Err bitreich.org 70 i- (cons Err bitreich.org 70 i- (apply 'apply (append reporter args))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defvar *ignored-configuration-form* nil Err bitreich.org 70 i- "Have configuration forms been ignored while parsing the configuration?") Err bitreich.org 70 i- Err bitreich.org 70 i- (defun validate-configuration-form (form tag directive-validator Err bitreich.org 70 i- &key location invalid-form-reporter) Err bitreich.org 70 i- "Validate a configuration FORM. By default it will raise an error if the Err bitreich.org 70 i-FORM is not valid. Otherwise it will return the validated form. Err bitreich.org 70 i- Arguments control the behavior: Err bitreich.org 70 i- The configuration FORM should be of the form (TAG . ) Err bitreich.org 70 i- Each element of will be checked by first seeing if it's a configuration inheritance Err bitreich.org 70 i-directive (see CONFIGURATION-INHERITANCE-DIRECTIVE-P) then invoking DIRECTIVE-VALIDATOR Err bitreich.org 70 i-on it. Err bitreich.org 70 i- In the event of an invalid form, INVALID-FORM-REPORTER will be used to control Err bitreich.org 70 i-reporting (see REPORT-INVALID-FORM) with LOCATION providing information about where Err bitreich.org 70 i-the configuration form appeared." Err bitreich.org 70 i- (unless (and (consp form) (eq (car form) tag)) Err bitreich.org 70 i- (setf *ignored-configuration-form* t) Err bitreich.org 70 i- (report-invalid-form invalid-form-reporter :form form :location location) Err bitreich.org 70 i- (return-from validate-configuration-form nil)) Err bitreich.org 70 i- (loop :with inherit = 0 :with ignore-invalid-p = nil :with x = (list tag) Err bitreich.org 70 i- :for directive :in (cdr form) Err bitreich.org 70 i- :when (cond Err bitreich.org 70 i- ((configuration-inheritance-directive-p directive) Err bitreich.org 70 i- (incf inherit) t) Err bitreich.org 70 i- ((eq directive :ignore-invalid-entries) Err bitreich.org 70 i- (setf ignore-invalid-p t) t) Err bitreich.org 70 i- ((funcall directive-validator directive) Err bitreich.org 70 i- t) Err bitreich.org 70 i- (ignore-invalid-p Err bitreich.org 70 i- nil) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (setf *ignored-configuration-form* t) Err bitreich.org 70 i- (report-invalid-form invalid-form-reporter :form directive :location location) Err bitreich.org 70 i- nil)) Err bitreich.org 70 i- :do (push directive x) Err bitreich.org 70 i- :finally Err bitreich.org 70 i- (unless (= inherit 1) Err bitreich.org 70 i- (report-invalid-form invalid-form-reporter Err bitreich.org 70 i- :form form :location location Err bitreich.org 70 i- ;; we throw away the form and location arguments, hence the ~2* Err bitreich.org 70 i- ;; this is necessary because of the report in INVALID-CONFIGURATION Err bitreich.org 70 i- :format (compatfmt "~@") Err bitreich.org 70 i- :arguments '(:inherit-configuration :ignore-inherited-configuration))) Err bitreich.org 70 i- (return (nreverse x)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun validate-configuration-file (file validator &key description) Err bitreich.org 70 i- "Validate a configuration FILE. The configuration file should have only one s-expression Err bitreich.org 70 i-in it, which will be checked with the VALIDATOR FORM. DESCRIPTION argument used for error Err bitreich.org 70 i-reporting." Err bitreich.org 70 i- (let ((forms (read-file-forms file))) Err bitreich.org 70 i- (unless (length=n-p forms 1) Err bitreich.org 70 i- (error (compatfmt "~@~%") Err bitreich.org 70 i- description forms)) Err bitreich.org 70 i- (funcall validator (car forms) :location file))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun validate-configuration-directory (directory tag validator &key invalid-form-reporter) Err bitreich.org 70 i- "Map the VALIDATOR across the .conf files in DIRECTORY, the TAG will Err bitreich.org 70 i-be applied to the results to yield a configuration form. Current Err bitreich.org 70 i-values of TAG include :source-registry and :output-translations." Err bitreich.org 70 i- (let ((files (sort (ignore-errors ;; SORT w/o COPY-LIST is OK: DIRECTORY returns a fresh list Err bitreich.org 70 i- (remove-if Err bitreich.org 70 i- 'hidden-pathname-p Err bitreich.org 70 i- (directory* (make-pathname :name *wild* :type "conf" :defaults directory)))) Err bitreich.org 70 i- #'string< :key #'namestring))) Err bitreich.org 70 i- `(,tag Err bitreich.org 70 i- ,@(loop :for file :in files :append Err bitreich.org 70 i- (loop :with ignore-invalid-p = nil Err bitreich.org 70 i- :for form :in (read-file-forms file) Err bitreich.org 70 i- :when (eq form :ignore-invalid-entries) Err bitreich.org 70 i- :do (setf ignore-invalid-p t) Err bitreich.org 70 i- :else Err bitreich.org 70 i- :when (funcall validator form) Err bitreich.org 70 i- :collect form Err bitreich.org 70 i- :else Err bitreich.org 70 i- :when ignore-invalid-p Err bitreich.org 70 i- :do (setf *ignored-configuration-form* t) Err bitreich.org 70 i- :else Err bitreich.org 70 i- :do (report-invalid-form invalid-form-reporter :form form :location file))) Err bitreich.org 70 i- :inherit-configuration))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun resolve-relative-location (x &key ensure-directory wilden) Err bitreich.org 70 i- "Given a designator X for an relative location, resolve it to a pathname." Err bitreich.org 70 i- (ensure-pathname Err bitreich.org 70 i- (etypecase x Err bitreich.org 70 i- (null nil) Err bitreich.org 70 i- (pathname x) Err bitreich.org 70 i- (string (parse-unix-namestring Err bitreich.org 70 i- x :ensure-directory ensure-directory)) Err bitreich.org 70 i- (cons Err bitreich.org 70 i- (if (null (cdr x)) Err bitreich.org 70 i- (resolve-relative-location Err bitreich.org 70 i- (car x) :ensure-directory ensure-directory :wilden wilden) Err bitreich.org 70 i- (let* ((car (resolve-relative-location Err bitreich.org 70 i- (car x) :ensure-directory t :wilden nil))) Err bitreich.org 70 i- (merge-pathnames* Err bitreich.org 70 i- (resolve-relative-location Err bitreich.org 70 i- (cdr x) :ensure-directory ensure-directory :wilden wilden) Err bitreich.org 70 i- car)))) Err bitreich.org 70 i- ((eql :*/) *wild-directory*) Err bitreich.org 70 i- ((eql :**/) *wild-inferiors*) Err bitreich.org 70 i- ((eql :*.*.*) *wild-file*) Err bitreich.org 70 i- ((eql :implementation) Err bitreich.org 70 i- (parse-unix-namestring Err bitreich.org 70 i- (implementation-identifier) :ensure-directory t)) Err bitreich.org 70 i- ((eql :implementation-type) Err bitreich.org 70 i- (parse-unix-namestring Err bitreich.org 70 i- (string-downcase (implementation-type)) :ensure-directory t)) Err bitreich.org 70 i- ((eql :hostname) Err bitreich.org 70 i- (parse-unix-namestring (hostname) :ensure-directory t))) Err bitreich.org 70 i- :wilden (and wilden (not (pathnamep x)) (not (member x '(:*/ :**/ :*.*.*)))) Err bitreich.org 70 i- :want-relative t)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defvar *here-directory* nil Err bitreich.org 70 i- "This special variable is bound to the currect directory during calls to Err bitreich.org 70 i-PROCESS-SOURCE-REGISTRY in order that we be able to interpret the :here Err bitreich.org 70 i-directive.") Err bitreich.org 70 i- Err bitreich.org 70 i- (defvar *user-cache* nil Err bitreich.org 70 i- "A specification as per RESOLVE-LOCATION of where the user keeps his FASL cache") Err bitreich.org 70 i- Err bitreich.org 70 i- (defun resolve-absolute-location (x &key ensure-directory wilden) Err bitreich.org 70 i- "Given a designator X for an absolute location, resolve it to a pathname" Err bitreich.org 70 i- (ensure-pathname Err bitreich.org 70 i- (etypecase x Err bitreich.org 70 i- (null nil) Err bitreich.org 70 i- (pathname x) Err bitreich.org 70 i- (string Err bitreich.org 70 i- (let ((p #-mcl (parse-namestring x) Err bitreich.org 70 i- #+mcl (probe-posix x))) Err bitreich.org 70 i- #+mcl (unless p (error "POSIX pathname ~S does not exist" x)) Err bitreich.org 70 i- (if ensure-directory (ensure-directory-pathname p) p))) Err bitreich.org 70 i- (cons Err bitreich.org 70 i- (return-from resolve-absolute-location Err bitreich.org 70 i- (if (null (cdr x)) Err bitreich.org 70 i- (resolve-absolute-location Err bitreich.org 70 i- (car x) :ensure-directory ensure-directory :wilden wilden) Err bitreich.org 70 i- (merge-pathnames* Err bitreich.org 70 i- (resolve-relative-location Err bitreich.org 70 i- (cdr x) :ensure-directory ensure-directory :wilden wilden) Err bitreich.org 70 i- (resolve-absolute-location Err bitreich.org 70 i- (car x) :ensure-directory t :wilden nil))))) Err bitreich.org 70 i- ((eql :root) Err bitreich.org 70 i- ;; special magic! we return a relative pathname, Err bitreich.org 70 i- ;; but what it means to the output-translations is Err bitreich.org 70 i- ;; "relative to the root of the source pathname's host and device". Err bitreich.org 70 i- (return-from resolve-absolute-location Err bitreich.org 70 i- (let ((p (make-pathname :directory '(:relative)))) Err bitreich.org 70 i- (if wilden (wilden p) p)))) Err bitreich.org 70 i- ((eql :home) (user-homedir-pathname)) Err bitreich.org 70 i- ((eql :here) (resolve-absolute-location Err bitreich.org 70 i- (or *here-directory* (pathname-directory-pathname (load-pathname))) Err bitreich.org 70 i- :ensure-directory t :wilden nil)) Err bitreich.org 70 i- ((eql :user-cache) (resolve-absolute-location Err bitreich.org 70 i- *user-cache* :ensure-directory t :wilden nil))) Err bitreich.org 70 i- :wilden (and wilden (not (pathnamep x))) Err bitreich.org 70 i- :resolve-symlinks *resolve-symlinks* Err bitreich.org 70 i- :want-absolute t)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Try to override declaration in previous versions of ASDF. Err bitreich.org 70 i- (declaim (ftype (function (t &key (:directory boolean) (:wilden boolean) Err bitreich.org 70 i- (:ensure-directory boolean)) t) resolve-location)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun* (resolve-location) (x &key ensure-directory wilden directory) Err bitreich.org 70 i- "Resolve location designator X into a PATHNAME" Err bitreich.org 70 i- ;; :directory backward compatibility, until 2014-01-16: accept directory as well as ensure-directory Err bitreich.org 70 i- (loop* :with dirp = (or directory ensure-directory) Err bitreich.org 70 i- :with (first . rest) = (if (atom x) (list x) x) Err bitreich.org 70 i- :with path = (or (resolve-absolute-location Err bitreich.org 70 i- first :ensure-directory (and (or dirp rest) t) Err bitreich.org 70 i- :wilden (and wilden (null rest))) Err bitreich.org 70 i- (return nil)) Err bitreich.org 70 i- :for (element . morep) :on rest Err bitreich.org 70 i- :for dir = (and (or morep dirp) t) Err bitreich.org 70 i- :for wild = (and wilden (not morep)) Err bitreich.org 70 i- :for sub = (merge-pathnames* Err bitreich.org 70 i- (resolve-relative-location Err bitreich.org 70 i- element :ensure-directory dir :wilden wild) Err bitreich.org 70 i- path) Err bitreich.org 70 i- :do (setf path (if (absolute-pathname-p sub) (resolve-symlinks* sub) sub)) Err bitreich.org 70 i- :finally (return path))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun location-designator-p (x) Err bitreich.org 70 i- "Is X a designator for a location?" Err bitreich.org 70 i- ;; NIL means "skip this entry", or as an output translation, same as translation input. Err bitreich.org 70 i- ;; T means "any input" for a translation, or as output, same as translation input. Err bitreich.org 70 i- (flet ((absolute-component-p (c) Err bitreich.org 70 i- (typep c '(or string pathname Err bitreich.org 70 i- (member :root :home :here :user-cache)))) Err bitreich.org 70 i- (relative-component-p (c) Err bitreich.org 70 i- (typep c '(or string pathname Err bitreich.org 70 i- (member :*/ :**/ :*.*.* :implementation :implementation-type))))) Err bitreich.org 70 i- (or (typep x 'boolean) Err bitreich.org 70 i- (absolute-component-p x) Err bitreich.org 70 i- (and (consp x) (absolute-component-p (first x)) (every #'relative-component-p (rest x)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun location-function-p (x) Err bitreich.org 70 i- "Is X the specification of a location function?" Err bitreich.org 70 i- ;; Location functions are allowed in output translations, and notably used by ABCL for JAR file support. Err bitreich.org 70 i- (and (length=n-p x 2) (eq (car x) :function))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defvar *clear-configuration-hook* '()) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun register-clear-configuration-hook (hook-function &optional call-now-p) Err bitreich.org 70 i- "Register a function to be called when clearing configuration" Err bitreich.org 70 i- (register-hook-function '*clear-configuration-hook* hook-function call-now-p)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun clear-configuration () Err bitreich.org 70 i- "Call the functions in *CLEAR-CONFIGURATION-HOOK*" Err bitreich.org 70 i- (call-functions *clear-configuration-hook*)) Err bitreich.org 70 i- Err bitreich.org 70 i- (register-image-dump-hook 'clear-configuration) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun upgrade-configuration () Err bitreich.org 70 i- "If a previous version of ASDF failed to read some configuration, try again now." Err bitreich.org 70 i- (when *ignored-configuration-form* Err bitreich.org 70 i- (clear-configuration) Err bitreich.org 70 i- (setf *ignored-configuration-form* nil))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- (defun get-folder-path (folder) Err bitreich.org 70 i- "Semi-portable implementation of a subset of LispWorks' sys:get-folder-path, Err bitreich.org 70 i-this function tries to locate the Windows FOLDER for one of Err bitreich.org 70 i-:LOCAL-APPDATA, :APPDATA or :COMMON-APPDATA. Err bitreich.org 70 i- Returns NIL when the folder is not defined (e.g., not on Windows)." Err bitreich.org 70 i- (or #+(and lispworks os-windows) (sys:get-folder-path folder) Err bitreich.org 70 i- ;; read-windows-registry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\AppData Err bitreich.org 70 i- (ecase folder Err bitreich.org 70 i- (:local-appdata (or (getenv-absolute-directory "LOCALAPPDATA") Err bitreich.org 70 i- (subpathname* (get-folder-path :appdata) "Local"))) Err bitreich.org 70 i- (:appdata (getenv-absolute-directory "APPDATA")) Err bitreich.org 70 i- (:common-appdata (or (getenv-absolute-directory "ALLUSERSAPPDATA") Err bitreich.org 70 i- (subpathname* (getenv-absolute-directory "ALLUSERSPROFILE") "Application Data/")))))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Support for the XDG Base Directory Specification Err bitreich.org 70 i- (defun xdg-data-home (&rest more) Err bitreich.org 70 i- "Returns an absolute pathname for the directory containing user-specific data files. Err bitreich.org 70 i-MORE may contain specifications for a subpath relative to this directory: a Err bitreich.org 70 i-subpathname specification and keyword arguments as per RESOLVE-LOCATION \(see Err bitreich.org 70 i-also \"Configuration DSL\"\) in the ASDF manual." Err bitreich.org 70 i- (resolve-absolute-location Err bitreich.org 70 i- `(,(or (getenv-absolute-directory "XDG_DATA_HOME") Err bitreich.org 70 i- (os-cond Err bitreich.org 70 i- ((os-windows-p) (get-folder-path :local-appdata)) Err bitreich.org 70 i- (t (subpathname (user-homedir-pathname) ".local/share/")))) Err bitreich.org 70 i- ,more))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun xdg-config-home (&rest more) Err bitreich.org 70 i- "Returns a pathname for the directory containing user-specific configuration files. Err bitreich.org 70 i-MORE may contain specifications for a subpath relative to this directory: a Err bitreich.org 70 i-subpathname specification and keyword arguments as per RESOLVE-LOCATION \(see Err bitreich.org 70 i-also \"Configuration DSL\"\) in the ASDF manual." Err bitreich.org 70 i- (resolve-absolute-location Err bitreich.org 70 i- `(,(or (getenv-absolute-directory "XDG_CONFIG_HOME") Err bitreich.org 70 i- (os-cond Err bitreich.org 70 i- ((os-windows-p) (xdg-data-home "config/")) Err bitreich.org 70 i- (t (subpathname (user-homedir-pathname) ".config/")))) Err bitreich.org 70 i- ,more))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun xdg-data-dirs (&rest more) Err bitreich.org 70 i- "The preference-ordered set of additional paths to search for data files. Err bitreich.org 70 i-Returns a list of absolute directory pathnames. Err bitreich.org 70 i-MORE may contain specifications for a subpath relative to these directories: a Err bitreich.org 70 i-subpathname specification and keyword arguments as per RESOLVE-LOCATION \(see Err bitreich.org 70 i-also \"Configuration DSL\"\) in the ASDF manual." Err bitreich.org 70 i- (mapcar #'(lambda (d) (resolve-location `(,d ,more))) Err bitreich.org 70 i- (or (remove nil (getenv-absolute-directories "XDG_DATA_DIRS")) Err bitreich.org 70 i- (os-cond Err bitreich.org 70 i- ((os-windows-p) (mapcar 'get-folder-path '(:appdata :common-appdata))) Err bitreich.org 70 i- (t (mapcar 'parse-unix-namestring '("/usr/local/share/" "/usr/share/"))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun xdg-config-dirs (&rest more) Err bitreich.org 70 i- "The preference-ordered set of additional base paths to search for configuration files. Err bitreich.org 70 i-Returns a list of absolute directory pathnames. Err bitreich.org 70 i-MORE may contain specifications for a subpath relative to these directories: Err bitreich.org 70 i-subpathname specification and keyword arguments as per RESOLVE-LOCATION \(see Err bitreich.org 70 i-also \"Configuration DSL\"\) in the ASDF manual." Err bitreich.org 70 i- (mapcar #'(lambda (d) (resolve-location `(,d ,more))) Err bitreich.org 70 i- (or (remove nil (getenv-absolute-directories "XDG_CONFIG_DIRS")) Err bitreich.org 70 i- (os-cond Err bitreich.org 70 i- ((os-windows-p) (xdg-data-dirs "config/")) Err bitreich.org 70 i- (t (mapcar 'parse-unix-namestring '("/etc/xdg/"))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun xdg-cache-home (&rest more) Err bitreich.org 70 i- "The base directory relative to which user specific non-essential data files should be stored. Err bitreich.org 70 i-Returns an absolute directory pathname. Err bitreich.org 70 i-MORE may contain specifications for a subpath relative to this directory: a Err bitreich.org 70 i-subpathname specification and keyword arguments as per RESOLVE-LOCATION \(see Err bitreich.org 70 i-also \"Configuration DSL\"\) in the ASDF manual." Err bitreich.org 70 i- (resolve-absolute-location Err bitreich.org 70 i- `(,(or (getenv-absolute-directory "XDG_CACHE_HOME") Err bitreich.org 70 i- (os-cond Err bitreich.org 70 i- ((os-windows-p) (xdg-data-home "cache/")) Err bitreich.org 70 i- (t (subpathname* (user-homedir-pathname) ".cache/")))) Err bitreich.org 70 i- ,more))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun xdg-runtime-dir (&rest more) Err bitreich.org 70 i- "Pathname for user-specific non-essential runtime files and other file objects, Err bitreich.org 70 i-such as sockets, named pipes, etc. Err bitreich.org 70 i-Returns an absolute directory pathname. Err bitreich.org 70 i-MORE may contain specifications for a subpath relative to this directory: a Err bitreich.org 70 i-subpathname specification and keyword arguments as per RESOLVE-LOCATION \(see Err bitreich.org 70 i-also \"Configuration DSL\"\) in the ASDF manual." Err bitreich.org 70 i- ;; The XDG spec says that if not provided by the login system, the application should Err bitreich.org 70 i- ;; issue a warning and provide a replacement. UIOP is not equipped to do that and returns NIL. Err bitreich.org 70 i- (resolve-absolute-location `(,(getenv-absolute-directory "XDG_RUNTIME_DIR") ,more))) Err bitreich.org 70 i- Err bitreich.org 70 i- ;;; NOTE: modified the docstring because "system user configuration Err bitreich.org 70 i- ;;; directories" seems self-contradictory. I'm not sure my wording is right. Err bitreich.org 70 i- (defun system-config-pathnames (&rest more) Err bitreich.org 70 i- "Return a list of directories where are stored the system's default user configuration information. Err bitreich.org 70 i-MORE may contain specifications for a subpath relative to these directories: a Err bitreich.org 70 i-subpathname specification and keyword arguments as per RESOLVE-LOCATION \(see Err bitreich.org 70 i-also \"Configuration DSL\"\) in the ASDF manual." Err bitreich.org 70 i- (declare (ignorable more)) Err bitreich.org 70 i- (os-cond Err bitreich.org 70 i- ((os-unix-p) (list (resolve-absolute-location `(,(parse-unix-namestring "/etc/") ,more)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun filter-pathname-set (dirs) Err bitreich.org 70 i- "Parse strings as unix namestrings and remove duplicates and non absolute-pathnames in a list." Err bitreich.org 70 i- (remove-duplicates (remove-if-not #'absolute-pathname-p dirs) :from-end t :test 'equal)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun xdg-data-pathnames (&rest more) Err bitreich.org 70 i- "Return a list of absolute pathnames for application data directories. With APP, Err bitreich.org 70 i-returns directory for data for that application, without APP, returns the set of directories Err bitreich.org 70 i-for storing all application configurations. Err bitreich.org 70 i-MORE may contain specifications for a subpath relative to these directories: a Err bitreich.org 70 i-subpathname specification and keyword arguments as per RESOLVE-LOCATION \(see Err bitreich.org 70 i-also \"Configuration DSL\"\) in the ASDF manual." Err bitreich.org 70 i- (filter-pathname-set Err bitreich.org 70 i- `(,(xdg-data-home more) Err bitreich.org 70 i- ,@(xdg-data-dirs more)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun xdg-config-pathnames (&rest more) Err bitreich.org 70 i- "Return a list of pathnames for application configuration. Err bitreich.org 70 i-MORE may contain specifications for a subpath relative to these directories: a Err bitreich.org 70 i-subpathname specification and keyword arguments as per RESOLVE-LOCATION \(see Err bitreich.org 70 i-also \"Configuration DSL\"\) in the ASDF manual." Err bitreich.org 70 i- (filter-pathname-set Err bitreich.org 70 i- `(,(xdg-config-home more) Err bitreich.org 70 i- ,@(xdg-config-dirs more)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun find-preferred-file (files &key (direction :input)) Err bitreich.org 70 i- "Find first file in the list of FILES that exists (for direction :input or :probe) Err bitreich.org 70 i-or just the first one (for direction :output or :io). Err bitreich.org 70 i- Note that when we say \"file\" here, the files in question may be directories." Err bitreich.org 70 i- (find-if (ecase direction ((:probe :input) 'probe-file*) ((:output :io) 'identity)) files)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun xdg-data-pathname (&optional more (direction :input)) Err bitreich.org 70 i- (find-preferred-file (xdg-data-pathnames more) :direction direction)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun xdg-config-pathname (&optional more (direction :input)) Err bitreich.org 70 i- (find-preferred-file (xdg-config-pathnames more) :direction direction)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun compute-user-cache () Err bitreich.org 70 i- "Compute (and return) the location of the default user-cache for translate-output Err bitreich.org 70 i-objects. Side-effects for cached file location computation." Err bitreich.org 70 i- (setf *user-cache* (xdg-cache-home "common-lisp" :implementation))) Err bitreich.org 70 i- (register-image-restore-hook 'compute-user-cache)) Err bitreich.org 70 1diff --git a/3rdparties/software/uiop-3.3.2/debug.lisp b/3rdparties/software/uiop-3.3.2/debug.lisp /scm/clic/file/3rdparties/software/uiop-3.3.2/debug.lisp.gph bitreich.org 70 i@@ -1,118 +0,0 @@ Err bitreich.org 70 i-;;;;; A few essential debugging utilities by fare@tunes.org, Err bitreich.org 70 i-;;;;; to be loaded in the *PACKAGE* that you wish to debug. Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; We want debugging utilities in the _current_ package, Err bitreich.org 70 i-;; so we don't have to either change the package structure Err bitreich.org 70 i-;; or use heavy package prefixes everywhere. Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; The short names of symbols below are unlikely to clash Err bitreich.org 70 i-;; with global bindings of any well-designed source file being debugged, Err bitreich.org 70 i-;; yet are quite practical in a debugging session. Err bitreich.org 70 i-#| Err bitreich.org 70 i-;;; If ASDF is already loaded, Err bitreich.org 70 i-;;; you can load these utilities in the current package as follows: Err bitreich.org 70 i-(uiop:uiop-debug) Err bitreich.org 70 i-;; which is the same as: Err bitreich.org 70 i-(uiop/utility:uiop-debug) Err bitreich.org 70 i- Err bitreich.org 70 i-;; The above macro can be configured to load any other debugging utility Err bitreich.org 70 i-;; that you may prefer to this one, with your customizations, Err bitreich.org 70 i-;; by setting the variable Err bitreich.org 70 i-;; uiop/utility:*uiop-debug-utility* Err bitreich.org 70 i-;; to a form that evaluates to a designator of the pathname to your file. Err bitreich.org 70 i-;; For instance, on a home directory shared via NFS with different names Err bitreich.org 70 i-;; on different machines, with your debug file in ~/lisp/debug-utils.lisp Err bitreich.org 70 i-;; you could in your ~/.sbclrc have the following configuration setting: Err bitreich.org 70 i-(require :asdf) Err bitreich.org 70 i-(setf uiop/utility:*uiop-debug-utility* Err bitreich.org 70 i- '(uiop/pathname:subpathname (uiop/os:user-homedir) "lisp/debug-utils.lisp")) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; If ASDF is not loaded (for instance, when debugging ASDF itself), Err bitreich.org 70 i-;;; Try the below, fixing the pathname to point to this file: Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (let ((kw (read-from-string (format nil ":DBG-~A" (package-name *package*))))) Err bitreich.org 70 i- (unless (member kw *features*) Err bitreich.org 70 i- (load "/home/tunes/cl/asdf/contrib/debug.lisp")))) Err bitreich.org 70 i- Err bitreich.org 70 i-|# Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Here we define the magic package-dependent feature. Err bitreich.org 70 i-;;; With it, you should be able to use #+DBG-/PACKAGE-NAME/ Err bitreich.org 70 i-;;; to annotate your debug statements, e.g. upper-case #+DBG-ASDF Err bitreich.org 70 i-;;; This will be all upper-case even in lower-case lisps. Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (let ((kw (read-from-string Err bitreich.org 70 i- (format nil ":DBG-~:@(~A~)" (package-name *package*))))) Err bitreich.org 70 i- (pushnew kw *features*))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Now for the debugging stuff itself. Err bitreich.org 70 i-;;; First, my all-purpose print-debugging macro Err bitreich.org 70 i-(defmacro DBG (tag &rest exprs) Err bitreich.org 70 i- "debug macro for print-debugging: Err bitreich.org 70 i-TAG is typically a constant string or keyword to identify who is printing, Err bitreich.org 70 i-but can be an arbitrary expression returning a tag to be princ'ed first; Err bitreich.org 70 i-if the expression returns NIL, nothing is printed. Err bitreich.org 70 i-EXPRS are expressions, which when the TAG was not NIL are evaluated in order, Err bitreich.org 70 i-with their source code then their return values being printed each time. Err bitreich.org 70 i-The last expression is *always* evaluated and its multiple values are returned, Err bitreich.org 70 i-but its source and return values are only printed if TAG was not NIL; Err bitreich.org 70 i-previous expressions are not evaluated at all if TAG was NIL. Err bitreich.org 70 i-The macro expansion has relatively low overhead in space or time." Err bitreich.org 70 i- (let* ((last-expr (car (last exprs))) Err bitreich.org 70 i- (other-exprs (butlast exprs)) Err bitreich.org 70 i- (tag-var (gensym "TAG")) Err bitreich.org 70 i- (thunk-var (gensym "THUNK"))) Err bitreich.org 70 i- `(let ((,tag-var ,tag)) Err bitreich.org 70 i- (flet ,(when exprs `((,thunk-var () ,last-expr))) Err bitreich.org 70 i- (if ,tag-var Err bitreich.org 70 i- (DBG-helper ,tag-var Err bitreich.org 70 i- (list ,@(loop :for x :in other-exprs :collect Err bitreich.org 70 i- `(cons ',x #'(lambda () ,x)))) Err bitreich.org 70 i- ',last-expr ,(if exprs `#',thunk-var nil)) Err bitreich.org 70 i- ,(if exprs `(,thunk-var) '(values))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun DBG-helper (tag expressions-thunks last-expression last-thunk) Err bitreich.org 70 i- ;; Helper for the above debugging macro Err bitreich.org 70 i- (labels Err bitreich.org 70 i- ((f (stream fmt &rest args) Err bitreich.org 70 i- (with-standard-io-syntax Err bitreich.org 70 i- (let ((*print-readably* nil) Err bitreich.org 70 i- (*package* (find-package :cl))) Err bitreich.org 70 i- (apply 'format stream fmt args) Err bitreich.org 70 i- (finish-output stream)))) Err bitreich.org 70 i- (z (stream) Err bitreich.org 70 i- (f stream "~&")) Err bitreich.org 70 i- (e (fmt arg) Err bitreich.org 70 i- (f *error-output* fmt arg)) Err bitreich.org 70 i- (x (expression thunk) Err bitreich.org 70 i- (e "~& ~S => " expression) Err bitreich.org 70 i- (let ((results (multiple-value-list (funcall thunk)))) Err bitreich.org 70 i- (e "~{~S~^ ~}~%" results) Err bitreich.org 70 i- (values-list results)))) Err bitreich.org 70 i- (map () #'z (list *standard-output* *error-output* *trace-output*)) Err bitreich.org 70 i- (e "~A~%" tag) Err bitreich.org 70 i- (loop :for (expression . thunk) :in expressions-thunks Err bitreich.org 70 i- :do (x expression thunk)) Err bitreich.org 70 i- (if last-thunk Err bitreich.org 70 i- (x last-expression last-thunk) Err bitreich.org 70 i- (values)))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Quick definitions for use at the REPL Err bitreich.org 70 i-(defun w (&rest x) (format t "~&~{~S~^ ~}~%" x)) ;Write, space separated + LF Err bitreich.org 70 i-(defun a (&rest x) (format t "~&~{~A~}~%" x)) ;print Anything, no separator, LF Err bitreich.org 70 i-(defun e (x) (cons x (ignore-errors (list (eval x))))) ;Evaluate Err bitreich.org 70 i-(defmacro x (x) `(format t "~&~S => ~S~%" ',x ,x)) ;eXamine Err bitreich.org 70 i-(defun i (&rest x) (apply (read-from-string "swank:inspect-in-emacs") x)) ; SLIME inspection Err bitreich.org 70 i-(defun ra (&rest x) (require :cl-ppcre) (apply (read-from-string "cl-ppcre:regex-apropos") x)) Err bitreich.org 70 i-(defmacro !a (&rest foo) ; define! Alias Err bitreich.org 70 i- `(progn ,@(loop :for (alias name) :on foo :by #'cddr Err bitreich.org 70 i- :collect (if (macro-function name) Err bitreich.org 70 i- `(defmacro ,alias (&rest x) `(,',name ,@x)) Err bitreich.org 70 i- `(defun ,alias (&rest x) (apply ',name x)))))) Err bitreich.org 70 i-(!a ;;; common aliases Err bitreich.org 70 i- d describe Err bitreich.org 70 i- ap apropos Err bitreich.org 70 i- !p defparameter Err bitreich.org 70 i- m1 macroexpand-1) Err bitreich.org 70 1diff --git a/3rdparties/software/uiop-3.3.2/driver.lisp b/3rdparties/software/uiop-3.3.2/driver.lisp /scm/clic/file/3rdparties/software/uiop-3.3.2/driver.lisp.gph bitreich.org 70 i@@ -1,19 +0,0 @@ Err bitreich.org 70 i-;;;; --------------------------------------------------------------------------- Err bitreich.org 70 i-;;;; Re-export all the functionality in UIOP Err bitreich.org 70 i- Err bitreich.org 70 i-(uiop/package:define-package :uiop/driver Err bitreich.org 70 i- (:nicknames :uiop :asdf/driver) ;; asdf/driver is obsolete (uiop isn't); Err bitreich.org 70 i- ;; but asdf/driver is still used by swap-bytes, static-vectors. Err bitreich.org 70 i- (:use :uiop/common-lisp) Err bitreich.org 70 i- ;; NB: not reexporting uiop/common-lisp Err bitreich.org 70 i- ;; which include all of CL with compatibility modifications on select platforms, Err bitreich.org 70 i- ;; that could cause potential conflicts for packages that would :use (cl uiop) Err bitreich.org 70 i- ;; or :use (closer-common-lisp uiop), etc. Err bitreich.org 70 i- (:use-reexport Err bitreich.org 70 i- :uiop/package :uiop/utility :uiop/version Err bitreich.org 70 i- :uiop/os :uiop/pathname :uiop/filesystem :uiop/stream :uiop/image Err bitreich.org 70 i- :uiop/launch-program :uiop/run-program Err bitreich.org 70 i- :uiop/lisp-build :uiop/configuration :uiop/backward-driver)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Provide both lowercase and uppercase, to satisfy more people. Err bitreich.org 70 i-(provide "uiop") (provide "UIOP") Err bitreich.org 70 1diff --git a/3rdparties/software/uiop-3.3.2/filesystem.lisp b/3rdparties/software/uiop-3.3.2/filesystem.lisp /scm/clic/file/3rdparties/software/uiop-3.3.2/filesystem.lisp.gph bitreich.org 70 i@@ -1,681 +0,0 @@ Err bitreich.org 70 i-;;;; ------------------------------------------------------------------------- Err bitreich.org 70 i-;;;; Portability layer around Common Lisp filesystem access Err bitreich.org 70 i- Err bitreich.org 70 i-(uiop/package:define-package :uiop/filesystem Err bitreich.org 70 i- (:use :uiop/common-lisp :uiop/package :uiop/utility :uiop/os :uiop/pathname) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- ;; Native namestrings Err bitreich.org 70 i- #:native-namestring #:parse-native-namestring Err bitreich.org 70 i- ;; Probing the filesystem Err bitreich.org 70 i- #:truename* #:safe-file-write-date #:probe-file* #:directory-exists-p #:file-exists-p Err bitreich.org 70 i- #:directory* #:filter-logical-directory-results #:directory-files #:subdirectories Err bitreich.org 70 i- #:collect-sub*directories Err bitreich.org 70 i- ;; Resolving symlinks somewhat Err bitreich.org 70 i- #:truenamize #:resolve-symlinks #:*resolve-symlinks* #:resolve-symlinks* Err bitreich.org 70 i- ;; merging with cwd Err bitreich.org 70 i- #:get-pathname-defaults #:call-with-current-directory #:with-current-directory Err bitreich.org 70 i- ;; Environment pathnames Err bitreich.org 70 i- #:inter-directory-separator #:split-native-pathnames-string Err bitreich.org 70 i- #:getenv-pathname #:getenv-pathnames Err bitreich.org 70 i- #:getenv-absolute-directory #:getenv-absolute-directories Err bitreich.org 70 i- #:lisp-implementation-directory #:lisp-implementation-pathname-p Err bitreich.org 70 i- ;; Simple filesystem operations Err bitreich.org 70 i- #:ensure-all-directories-exist Err bitreich.org 70 i- #:rename-file-overwriting-target Err bitreich.org 70 i- #:delete-file-if-exists #:delete-empty-directory #:delete-directory-tree)) Err bitreich.org 70 i-(in-package :uiop/filesystem) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Native namestrings, as seen by the operating system calls rather than Lisp Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun native-namestring (x) Err bitreich.org 70 i- "From a non-wildcard CL pathname, a return namestring suitable for passing to the operating system" Err bitreich.org 70 i- (when x Err bitreich.org 70 i- (let ((p (pathname x))) Err bitreich.org 70 i- #+clozure (with-pathname-defaults () (ccl:native-translated-namestring p)) ; see ccl bug 978 Err bitreich.org 70 i- #+(or cmucl scl) (ext:unix-namestring p nil) Err bitreich.org 70 i- #+sbcl (sb-ext:native-namestring p) Err bitreich.org 70 i- #-(or clozure cmucl sbcl scl) Err bitreich.org 70 i- (os-cond Err bitreich.org 70 i- ((os-unix-p) (unix-namestring p)) Err bitreich.org 70 i- (t (namestring p)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun parse-native-namestring (string &rest constraints &key ensure-directory &allow-other-keys) Err bitreich.org 70 i- "From a native namestring suitable for use by the operating system, return Err bitreich.org 70 i-a CL pathname satisfying all the specified constraints as per ENSURE-PATHNAME" Err bitreich.org 70 i- (check-type string (or string null)) Err bitreich.org 70 i- (let* ((pathname Err bitreich.org 70 i- (when string Err bitreich.org 70 i- (with-pathname-defaults () Err bitreich.org 70 i- #+clozure (ccl:native-to-pathname string) Err bitreich.org 70 i- #+cmucl (uiop/os::parse-unix-namestring* string) Err bitreich.org 70 i- #+sbcl (sb-ext:parse-native-namestring string) Err bitreich.org 70 i- #+scl (lisp::parse-unix-namestring string) Err bitreich.org 70 i- #-(or clozure cmucl sbcl scl) Err bitreich.org 70 i- (os-cond Err bitreich.org 70 i- ((os-unix-p) (parse-unix-namestring string :ensure-directory ensure-directory)) Err bitreich.org 70 i- (t (parse-namestring string)))))) Err bitreich.org 70 i- (pathname Err bitreich.org 70 i- (if ensure-directory Err bitreich.org 70 i- (and pathname (ensure-directory-pathname pathname)) Err bitreich.org 70 i- pathname))) Err bitreich.org 70 i- (apply 'ensure-pathname pathname constraints)))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Probing the filesystem Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun truename* (p) Err bitreich.org 70 i- "Nicer variant of TRUENAME that plays well with NIL, avoids logical pathname contexts, and tries both files and directories" Err bitreich.org 70 i- (when p Err bitreich.org 70 i- (when (stringp p) (setf p (with-pathname-defaults () (parse-namestring p)))) Err bitreich.org 70 i- (values Err bitreich.org 70 i- (or (ignore-errors (truename p)) Err bitreich.org 70 i- ;; this is here because trying to find the truename of a directory pathname WITHOUT supplying Err bitreich.org 70 i- ;; a trailing directory separator, causes an error on some lisps. Err bitreich.org 70 i- #+(or clisp gcl) (if-let (d (ensure-directory-pathname p nil)) (ignore-errors (truename d))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun safe-file-write-date (pathname) Err bitreich.org 70 i- "Safe variant of FILE-WRITE-DATE that may return NIL rather than raise an error." Err bitreich.org 70 i- ;; If FILE-WRITE-DATE returns NIL, it's possible that Err bitreich.org 70 i- ;; the user or some other agent has deleted an input file. Err bitreich.org 70 i- ;; Also, generated files will not exist at the time planning is done Err bitreich.org 70 i- ;; and calls compute-action-stamp which calls safe-file-write-date. Err bitreich.org 70 i- ;; So it is very possible that we can't get a valid file-write-date, Err bitreich.org 70 i- ;; and we can survive and we will continue the planning Err bitreich.org 70 i- ;; as if the file were very old. Err bitreich.org 70 i- ;; (or should we treat the case in a different, special way?) Err bitreich.org 70 i- (and pathname Err bitreich.org 70 i- (handler-case (file-write-date (physicalize-pathname pathname)) Err bitreich.org 70 i- (file-error () nil)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun probe-file* (p &key truename) Err bitreich.org 70 i- "when given a pathname P (designated by a string as per PARSE-NAMESTRING), Err bitreich.org 70 i-probes the filesystem for a file or directory with given pathname. Err bitreich.org 70 i-If it exists, return its truename if TRUENAME is true, Err bitreich.org 70 i-or the original (parsed) pathname if it is false (the default)." Err bitreich.org 70 i- (values Err bitreich.org 70 i- (ignore-errors Err bitreich.org 70 i- (setf p (funcall 'ensure-pathname p Err bitreich.org 70 i- :namestring :lisp Err bitreich.org 70 i- :ensure-physical t Err bitreich.org 70 i- :ensure-absolute t :defaults 'get-pathname-defaults Err bitreich.org 70 i- :want-non-wild t Err bitreich.org 70 i- :on-error nil)) Err bitreich.org 70 i- (when p Err bitreich.org 70 i- #+allegro Err bitreich.org 70 i- (probe-file p :follow-symlinks truename) Err bitreich.org 70 i- #+gcl Err bitreich.org 70 i- (if truename Err bitreich.org 70 i- (truename* p) Err bitreich.org 70 i- (let ((kind (car (si::stat p)))) Err bitreich.org 70 i- (when (eq kind :link) Err bitreich.org 70 i- (setf kind (ignore-errors (car (si::stat (truename* p)))))) Err bitreich.org 70 i- (ecase kind Err bitreich.org 70 i- ((nil) nil) Err bitreich.org 70 i- ((:file :link) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((file-pathname-p p) p) Err bitreich.org 70 i- ((directory-pathname-p p) Err bitreich.org 70 i- (subpathname p (car (last (pathname-directory p))))))) Err bitreich.org 70 i- (:directory (ensure-directory-pathname p))))) Err bitreich.org 70 i- #+clisp Err bitreich.org 70 i- #.(let* ((fs (or #-os-windows (find-symbol* '#:file-stat :posix nil))) Err bitreich.org 70 i- (pp (find-symbol* '#:probe-pathname :ext nil))) Err bitreich.org 70 i- `(if truename Err bitreich.org 70 i- ,(if pp Err bitreich.org 70 i- `(values (,pp p)) Err bitreich.org 70 i- '(or (truename* p) Err bitreich.org 70 i- (truename* (ignore-errors (ensure-directory-pathname p))))) Err bitreich.org 70 i- ,(cond Err bitreich.org 70 i- (fs `(and (,fs p) p)) Err bitreich.org 70 i- (pp `(nth-value 1 (,pp p))) Err bitreich.org 70 i- (t '(or (and (truename* p) p) Err bitreich.org 70 i- (if-let (d (ensure-directory-pathname p)) Err bitreich.org 70 i- (and (truename* d) d))))))) Err bitreich.org 70 i- #-(or allegro clisp gcl) Err bitreich.org 70 i- (if truename Err bitreich.org 70 i- (probe-file p) Err bitreich.org 70 i- (and Err bitreich.org 70 i- #+(or cmucl scl) (unix:unix-stat (ext:unix-namestring p)) Err bitreich.org 70 i- #+(and lispworks os-unix) (system:get-file-stat p) Err bitreich.org 70 i- #+sbcl (sb-unix:unix-stat (sb-ext:native-namestring p)) Err bitreich.org 70 i- #-(or cmucl (and lispworks os-unix) sbcl scl) (file-write-date p) Err bitreich.org 70 i- p)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun directory-exists-p (x) Err bitreich.org 70 i- "Is X the name of a directory that exists on the filesystem?" Err bitreich.org 70 i- #+allegro Err bitreich.org 70 i- (excl:probe-directory x) Err bitreich.org 70 i- #+clisp Err bitreich.org 70 i- (handler-case (ext:probe-directory x) Err bitreich.org 70 i- (sys::simple-file-error () Err bitreich.org 70 i- nil)) Err bitreich.org 70 i- #-(or allegro clisp) Err bitreich.org 70 i- (let ((p (probe-file* x :truename t))) Err bitreich.org 70 i- (and (directory-pathname-p p) p))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun file-exists-p (x) Err bitreich.org 70 i- "Is X the name of a file that exists on the filesystem?" Err bitreich.org 70 i- (let ((p (probe-file* x :truename t))) Err bitreich.org 70 i- (and (file-pathname-p p) p))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun directory* (pathname-spec &rest keys &key &allow-other-keys) Err bitreich.org 70 i- "Return a list of the entries in a directory by calling DIRECTORY. Err bitreich.org 70 i-Try to override the defaults to not resolving symlinks, if implementation allows." Err bitreich.org 70 i- (apply 'directory pathname-spec Err bitreich.org 70 i- (append keys '#.(or #+allegro '(:directories-are-files nil :follow-symbolic-links nil) Err bitreich.org 70 i- #+(or clozure digitool) '(:follow-links nil) Err bitreich.org 70 i- #+clisp '(:circle t :if-does-not-exist :ignore) Err bitreich.org 70 i- #+(or cmucl scl) '(:follow-links nil :truenamep nil) Err bitreich.org 70 i- #+lispworks '(:link-transparency nil) Err bitreich.org 70 i- #+sbcl (when (find-symbol* :resolve-symlinks '#:sb-impl nil) Err bitreich.org 70 i- '(:resolve-symlinks nil)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun filter-logical-directory-results (directory entries merger) Err bitreich.org 70 i- "If DIRECTORY isn't a logical pathname, return ENTRIES. If it is, Err bitreich.org 70 i-given ENTRIES in the DIRECTORY, remove the entries which are physical yet Err bitreich.org 70 i-when transformed by MERGER have a different TRUENAME. Err bitreich.org 70 i-Also remove duplicates as may appear with some translation rules. Err bitreich.org 70 i-This function is used as a helper to DIRECTORY-FILES to avoid invalid entries Err bitreich.org 70 i-when using logical-pathnames." Err bitreich.org 70 i- (if (logical-pathname-p directory) Err bitreich.org 70 i- (remove-duplicates ;; on CLISP, querying ~/ will return duplicates Err bitreich.org 70 i- ;; Try hard to not resolve logical-pathname into physical pathnames; Err bitreich.org 70 i- ;; otherwise logical-pathname users/lovers will be disappointed. Err bitreich.org 70 i- ;; If directory* could use some implementation-dependent magic, Err bitreich.org 70 i- ;; we will have logical pathnames already; otherwise, Err bitreich.org 70 i- ;; we only keep pathnames for which specifying the name and Err bitreich.org 70 i- ;; translating the LPN commute. Err bitreich.org 70 i- (loop :for f :in entries Err bitreich.org 70 i- :for p = (or (and (logical-pathname-p f) f) Err bitreich.org 70 i- (let* ((u (ignore-errors (call-function merger f)))) Err bitreich.org 70 i- ;; The first u avoids a cumbersome (truename u) error. Err bitreich.org 70 i- ;; At this point f should already be a truename, Err bitreich.org 70 i- ;; but isn't quite in CLISP, for it doesn't have :version :newest Err bitreich.org 70 i- (and u (equal (truename* u) (truename* f)) u))) Err bitreich.org 70 i- :when p :collect p) Err bitreich.org 70 i- :test 'pathname-equal) Err bitreich.org 70 i- entries)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun directory-files (directory &optional (pattern *wild-file-for-directory*)) Err bitreich.org 70 i- "Return a list of the files in a directory according to the PATTERN. Err bitreich.org 70 i-Subdirectories should NOT be returned. Err bitreich.org 70 i- PATTERN defaults to a pattern carefully chosen based on the implementation; Err bitreich.org 70 i-override the default at your own risk. Err bitreich.org 70 i- DIRECTORY-FILES tries NOT to resolve symlinks if the implementation permits this, Err bitreich.org 70 i-but the behavior in presence of symlinks is not portable. Use IOlib to handle such situations." Err bitreich.org 70 i- (let ((dir (pathname directory))) Err bitreich.org 70 i- (when (logical-pathname-p dir) Err bitreich.org 70 i- ;; Because of the filtering we do below, Err bitreich.org 70 i- ;; logical pathnames have restrictions on wild patterns. Err bitreich.org 70 i- ;; Not that the results are very portable when you use these patterns on physical pathnames. Err bitreich.org 70 i- (when (wild-pathname-p dir) Err bitreich.org 70 i- (parameter-error "~S: Invalid wild pattern in logical directory ~S" Err bitreich.org 70 i- 'directory-files directory)) Err bitreich.org 70 i- (unless (member (pathname-directory pattern) '(() (:relative)) :test 'equal) Err bitreich.org 70 i- (parameter-error "~S: Invalid file pattern ~S for logical directory ~S" 'directory-files pattern directory)) Err bitreich.org 70 i- (setf pattern (make-pathname-logical pattern (pathname-host dir)))) Err bitreich.org 70 i- (let* ((pat (merge-pathnames* pattern dir)) Err bitreich.org 70 i- (entries (ignore-errors (directory* pat)))) Err bitreich.org 70 i- (remove-if 'directory-pathname-p Err bitreich.org 70 i- (filter-logical-directory-results Err bitreich.org 70 i- directory entries Err bitreich.org 70 i- #'(lambda (f) Err bitreich.org 70 i- (make-pathname :defaults dir Err bitreich.org 70 i- :name (make-pathname-component-logical (pathname-name f)) Err bitreich.org 70 i- :type (make-pathname-component-logical (pathname-type f)) Err bitreich.org 70 i- :version (make-pathname-component-logical (pathname-version f))))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun subdirectories (directory) Err bitreich.org 70 i- "Given a DIRECTORY pathname designator, return a list of the subdirectories under it. Err bitreich.org 70 i-The behavior in presence of symlinks is not portable. Use IOlib to handle such situations." Err bitreich.org 70 i- (let* ((directory (ensure-directory-pathname directory)) Err bitreich.org 70 i- #-(or abcl cormanlisp genera xcl) Err bitreich.org 70 i- (wild (merge-pathnames* Err bitreich.org 70 i- #-(or abcl allegro cmucl lispworks sbcl scl xcl) Err bitreich.org 70 i- *wild-directory* Err bitreich.org 70 i- #+(or abcl allegro cmucl lispworks sbcl scl xcl) "*.*" Err bitreich.org 70 i- directory)) Err bitreich.org 70 i- (dirs Err bitreich.org 70 i- #-(or abcl cormanlisp genera xcl) Err bitreich.org 70 i- (ignore-errors Err bitreich.org 70 i- (directory* wild . #.(or #+clozure '(:directories t :files nil) Err bitreich.org 70 i- #+mcl '(:directories t)))) Err bitreich.org 70 i- #+(or abcl xcl) (system:list-directory directory) Err bitreich.org 70 i- #+cormanlisp (cl::directory-subdirs directory) Err bitreich.org 70 i- #+genera (handler-case (fs:directory-list directory) (fs:directory-not-found () nil))) Err bitreich.org 70 i- #+(or abcl allegro cmucl genera lispworks sbcl scl xcl) Err bitreich.org 70 i- (dirs (loop :for x :in dirs Err bitreich.org 70 i- :for d = #+(or abcl xcl) (extensions:probe-directory x) Err bitreich.org 70 i- #+allegro (excl:probe-directory x) Err bitreich.org 70 i- #+(or cmucl sbcl scl) (directory-pathname-p x) Err bitreich.org 70 i- #+genera (getf (cdr x) :directory) Err bitreich.org 70 i- #+lispworks (lw:file-directory-p x) Err bitreich.org 70 i- :when d :collect #+(or abcl allegro xcl) (ensure-directory-pathname d) Err bitreich.org 70 i- #+genera (ensure-directory-pathname (first x)) Err bitreich.org 70 i- #+(or cmucl lispworks sbcl scl) x))) Err bitreich.org 70 i- (filter-logical-directory-results Err bitreich.org 70 i- directory dirs Err bitreich.org 70 i- (let ((prefix (or (normalize-pathname-directory-component (pathname-directory directory)) Err bitreich.org 70 i- '(:absolute)))) ; because allegro returns NIL for #p"FOO:" Err bitreich.org 70 i- #'(lambda (d) Err bitreich.org 70 i- (let ((dir (normalize-pathname-directory-component (pathname-directory d)))) Err bitreich.org 70 i- (and (consp dir) (consp (cdr dir)) Err bitreich.org 70 i- (make-pathname Err bitreich.org 70 i- :defaults directory :name nil :type nil :version nil Err bitreich.org 70 i- :directory (append prefix (make-pathname-component-logical (last dir))))))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun collect-sub*directories (directory collectp recursep collector) Err bitreich.org 70 i- "Given a DIRECTORY, when COLLECTP returns true when CALL-FUNCTION'ed with the directory, Err bitreich.org 70 i-call-function the COLLECTOR function designator on the directory, Err bitreich.org 70 i-and recurse each of its subdirectories on which the RECURSEP returns true when CALL-FUNCTION'ed with them. Err bitreich.org 70 i-This function will thus let you traverse a filesystem hierarchy, Err bitreich.org 70 i-superseding the functionality of CL-FAD:WALK-DIRECTORY. Err bitreich.org 70 i-The behavior in presence of symlinks is not portable. Use IOlib to handle such situations." Err bitreich.org 70 i- (when (call-function collectp directory) Err bitreich.org 70 i- (call-function collector directory) Err bitreich.org 70 i- (dolist (subdir (subdirectories directory)) Err bitreich.org 70 i- (when (call-function recursep subdir) Err bitreich.org 70 i- (collect-sub*directories subdir collectp recursep collector)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Resolving symlinks somewhat Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun truenamize (pathname) Err bitreich.org 70 i- "Resolve as much of a pathname as possible" Err bitreich.org 70 i- (block nil Err bitreich.org 70 i- (when (typep pathname '(or null logical-pathname)) (return pathname)) Err bitreich.org 70 i- (let ((p pathname)) Err bitreich.org 70 i- (unless (absolute-pathname-p p) Err bitreich.org 70 i- (setf p (or (absolute-pathname-p (ensure-absolute-pathname p 'get-pathname-defaults nil)) Err bitreich.org 70 i- (return p)))) Err bitreich.org 70 i- (when (logical-pathname-p p) (return p)) Err bitreich.org 70 i- (let ((found (probe-file* p :truename t))) Err bitreich.org 70 i- (when found (return found))) Err bitreich.org 70 i- (let* ((directory (normalize-pathname-directory-component (pathname-directory p))) Err bitreich.org 70 i- (up-components (reverse (rest directory))) Err bitreich.org 70 i- (down-components ())) Err bitreich.org 70 i- (assert (eq :absolute (first directory))) Err bitreich.org 70 i- (loop :while up-components :do Err bitreich.org 70 i- (if-let (parent Err bitreich.org 70 i- (ignore-errors Err bitreich.org 70 i- (probe-file* (make-pathname :directory `(:absolute ,@(reverse up-components)) Err bitreich.org 70 i- :name nil :type nil :version nil :defaults p)))) Err bitreich.org 70 i- (if-let (simplified Err bitreich.org 70 i- (ignore-errors Err bitreich.org 70 i- (merge-pathnames* Err bitreich.org 70 i- (make-pathname :directory `(:relative ,@down-components) Err bitreich.org 70 i- :defaults p) Err bitreich.org 70 i- (ensure-directory-pathname parent)))) Err bitreich.org 70 i- (return simplified))) Err bitreich.org 70 i- (push (pop up-components) down-components) Err bitreich.org 70 i- :finally (return p)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun resolve-symlinks (path) Err bitreich.org 70 i- "Do a best effort at resolving symlinks in PATH, returning a partially or totally resolved PATH." Err bitreich.org 70 i- #-allegro (truenamize path) Err bitreich.org 70 i- #+allegro Err bitreich.org 70 i- (if (physical-pathname-p path) Err bitreich.org 70 i- (or (ignore-errors (excl:pathname-resolve-symbolic-links path)) path) Err bitreich.org 70 i- path)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defvar *resolve-symlinks* t Err bitreich.org 70 i- "Determine whether or not ASDF resolves symlinks when defining systems. Err bitreich.org 70 i-Defaults to T.") Err bitreich.org 70 i- Err bitreich.org 70 i- (defun resolve-symlinks* (path) Err bitreich.org 70 i- "RESOLVE-SYMLINKS in PATH iff *RESOLVE-SYMLINKS* is T (the default)." Err bitreich.org 70 i- (if *resolve-symlinks* Err bitreich.org 70 i- (and path (resolve-symlinks path)) Err bitreich.org 70 i- path))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Check pathname constraints Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun ensure-pathname Err bitreich.org 70 i- (pathname &key Err bitreich.org 70 i- on-error Err bitreich.org 70 i- defaults type dot-dot namestring Err bitreich.org 70 i- empty-is-nil Err bitreich.org 70 i- want-pathname Err bitreich.org 70 i- want-logical want-physical ensure-physical Err bitreich.org 70 i- want-relative want-absolute ensure-absolute ensure-subpath Err bitreich.org 70 i- want-non-wild want-wild wilden Err bitreich.org 70 i- want-file want-directory ensure-directory Err bitreich.org 70 i- want-existing ensure-directories-exist Err bitreich.org 70 i- truename resolve-symlinks truenamize Err bitreich.org 70 i- &aux (p pathname)) ;; mutable working copy, preserve original Err bitreich.org 70 i- "Coerces its argument into a PATHNAME, Err bitreich.org 70 i-optionally doing some transformations and checking specified constraints. Err bitreich.org 70 i- Err bitreich.org 70 i-If the argument is NIL, then NIL is returned unless the WANT-PATHNAME constraint is specified. Err bitreich.org 70 i- Err bitreich.org 70 i-If the argument is a STRING, it is first converted to a pathname via Err bitreich.org 70 i-PARSE-UNIX-NAMESTRING, PARSE-NAMESTRING or PARSE-NATIVE-NAMESTRING respectively Err bitreich.org 70 i-depending on the NAMESTRING argument being :UNIX, :LISP or :NATIVE respectively, Err bitreich.org 70 i-or else by using CALL-FUNCTION on the NAMESTRING argument; Err bitreich.org 70 i-if :UNIX is specified (or NIL, the default, which specifies the same thing), Err bitreich.org 70 i-then PARSE-UNIX-NAMESTRING it is called with the keywords Err bitreich.org 70 i-DEFAULTS TYPE DOT-DOT ENSURE-DIRECTORY WANT-RELATIVE, and Err bitreich.org 70 i-the result is optionally merged into the DEFAULTS if ENSURE-ABSOLUTE is true. Err bitreich.org 70 i- Err bitreich.org 70 i-The pathname passed or resulting from parsing the string Err bitreich.org 70 i-is then subjected to all the checks and transformations below are run. Err bitreich.org 70 i- Err bitreich.org 70 i-Each non-nil constraint argument can be one of the symbols T, ERROR, CERROR or IGNORE. Err bitreich.org 70 i-The boolean T is an alias for ERROR. Err bitreich.org 70 i-ERROR means that an error will be raised if the constraint is not satisfied. Err bitreich.org 70 i-CERROR means that an continuable error will be raised if the constraint is not satisfied. Err bitreich.org 70 i-IGNORE means just return NIL instead of the pathname. Err bitreich.org 70 i- Err bitreich.org 70 i-The ON-ERROR argument, if not NIL, is a function designator (as per CALL-FUNCTION) Err bitreich.org 70 i-that will be called with the the following arguments: Err bitreich.org 70 i-a generic format string for ensure pathname, the pathname, Err bitreich.org 70 i-the keyword argument corresponding to the failed check or transformation, Err bitreich.org 70 i-a format string for the reason ENSURE-PATHNAME failed, Err bitreich.org 70 i-and a list with arguments to that format string. Err bitreich.org 70 i-If ON-ERROR is NIL, ERROR is used instead, which does the right thing. Err bitreich.org 70 i-You could also pass (CERROR \"CONTINUE DESPITE FAILED CHECK\"). Err bitreich.org 70 i- Err bitreich.org 70 i-The transformations and constraint checks are done in this order, Err bitreich.org 70 i-which is also the order in the lambda-list: Err bitreich.org 70 i- Err bitreich.org 70 i-EMPTY-IS-NIL returns NIL if the argument is an empty string. Err bitreich.org 70 i-WANT-PATHNAME checks that pathname (after parsing if needed) is not null. Err bitreich.org 70 i-Otherwise, if the pathname is NIL, ensure-pathname returns NIL. Err bitreich.org 70 i-WANT-LOGICAL checks that pathname is a LOGICAL-PATHNAME Err bitreich.org 70 i-WANT-PHYSICAL checks that pathname is not a LOGICAL-PATHNAME Err bitreich.org 70 i-ENSURE-PHYSICAL ensures that pathname is physical via TRANSLATE-LOGICAL-PATHNAME Err bitreich.org 70 i-WANT-RELATIVE checks that pathname has a relative directory component Err bitreich.org 70 i-WANT-ABSOLUTE checks that pathname does have an absolute directory component Err bitreich.org 70 i-ENSURE-ABSOLUTE merges with the DEFAULTS, then checks again Err bitreich.org 70 i-that the result absolute is an absolute pathname indeed. Err bitreich.org 70 i-ENSURE-SUBPATH checks that the pathname is a subpath of the DEFAULTS. Err bitreich.org 70 i-WANT-FILE checks that pathname has a non-nil FILE component Err bitreich.org 70 i-WANT-DIRECTORY checks that pathname has nil FILE and TYPE components Err bitreich.org 70 i-ENSURE-DIRECTORY uses ENSURE-DIRECTORY-PATHNAME to interpret Err bitreich.org 70 i-any file and type components as being actually a last directory component. Err bitreich.org 70 i-WANT-NON-WILD checks that pathname is not a wild pathname Err bitreich.org 70 i-WANT-WILD checks that pathname is a wild pathname Err bitreich.org 70 i-WILDEN merges the pathname with **/*.*.* if it is not wild Err bitreich.org 70 i-WANT-EXISTING checks that a file (or directory) exists with that pathname. Err bitreich.org 70 i-ENSURE-DIRECTORIES-EXIST creates any parent directory with ENSURE-DIRECTORIES-EXIST. Err bitreich.org 70 i-TRUENAME replaces the pathname by its truename, or errors if not possible. Err bitreich.org 70 i-RESOLVE-SYMLINKS replaces the pathname by a variant with symlinks resolved by RESOLVE-SYMLINKS. Err bitreich.org 70 i-TRUENAMIZE uses TRUENAMIZE to resolve as many symlinks as possible." Err bitreich.org 70 i- (block nil Err bitreich.org 70 i- (flet ((report-error (keyword description &rest arguments) Err bitreich.org 70 i- (call-function (or on-error 'error) Err bitreich.org 70 i- "Invalid pathname ~S: ~*~?" Err bitreich.org 70 i- pathname keyword description arguments))) Err bitreich.org 70 i- (macrolet ((err (constraint &rest arguments) Err bitreich.org 70 i- `(report-error ',(intern* constraint :keyword) ,@arguments)) Err bitreich.org 70 i- (check (constraint condition &rest arguments) Err bitreich.org 70 i- `(when ,constraint Err bitreich.org 70 i- (unless ,condition (err ,constraint ,@arguments)))) Err bitreich.org 70 i- (transform (transform condition expr) Err bitreich.org 70 i- `(when ,transform Err bitreich.org 70 i- (,@(if condition `(when ,condition) '(progn)) Err bitreich.org 70 i- (setf p ,expr))))) Err bitreich.org 70 i- (etypecase p Err bitreich.org 70 i- ((or null pathname)) Err bitreich.org 70 i- (string Err bitreich.org 70 i- (when (and (emptyp p) empty-is-nil) Err bitreich.org 70 i- (return-from ensure-pathname nil)) Err bitreich.org 70 i- (setf p (case namestring Err bitreich.org 70 i- ((:unix nil) Err bitreich.org 70 i- (parse-unix-namestring Err bitreich.org 70 i- p :defaults defaults :type type :dot-dot dot-dot Err bitreich.org 70 i- :ensure-directory ensure-directory :want-relative want-relative)) Err bitreich.org 70 i- ((:native) Err bitreich.org 70 i- (parse-native-namestring p)) Err bitreich.org 70 i- ((:lisp) Err bitreich.org 70 i- (parse-namestring p)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (call-function namestring p)))))) Err bitreich.org 70 i- (etypecase p Err bitreich.org 70 i- (pathname) Err bitreich.org 70 i- (null Err bitreich.org 70 i- (check want-pathname (pathnamep p) "Expected a pathname, not NIL") Err bitreich.org 70 i- (return nil))) Err bitreich.org 70 i- (check want-logical (logical-pathname-p p) "Expected a logical pathname") Err bitreich.org 70 i- (check want-physical (physical-pathname-p p) "Expected a physical pathname") Err bitreich.org 70 i- (transform ensure-physical () (physicalize-pathname p)) Err bitreich.org 70 i- (check ensure-physical (physical-pathname-p p) "Could not translate to a physical pathname") Err bitreich.org 70 i- (check want-relative (relative-pathname-p p) "Expected a relative pathname") Err bitreich.org 70 i- (check want-absolute (absolute-pathname-p p) "Expected an absolute pathname") Err bitreich.org 70 i- (transform ensure-absolute (not (absolute-pathname-p p)) Err bitreich.org 70 i- (ensure-absolute-pathname p defaults (list #'report-error :ensure-absolute "~@?"))) Err bitreich.org 70 i- (check ensure-absolute (absolute-pathname-p p) Err bitreich.org 70 i- "Could not make into an absolute pathname even after merging with ~S" defaults) Err bitreich.org 70 i- (check ensure-subpath (absolute-pathname-p defaults) Err bitreich.org 70 i- "cannot be checked to be a subpath of non-absolute pathname ~S" defaults) Err bitreich.org 70 i- (check ensure-subpath (subpathp p defaults) "is not a sub pathname of ~S" defaults) Err bitreich.org 70 i- (check want-file (file-pathname-p p) "Expected a file pathname") Err bitreich.org 70 i- (check want-directory (directory-pathname-p p) "Expected a directory pathname") Err bitreich.org 70 i- (transform ensure-directory (not (directory-pathname-p p)) (ensure-directory-pathname p)) Err bitreich.org 70 i- (check want-non-wild (not (wild-pathname-p p)) "Expected a non-wildcard pathname") Err bitreich.org 70 i- (check want-wild (wild-pathname-p p) "Expected a wildcard pathname") Err bitreich.org 70 i- (transform wilden (not (wild-pathname-p p)) (wilden p)) Err bitreich.org 70 i- (when want-existing Err bitreich.org 70 i- (let ((existing (probe-file* p :truename truename))) Err bitreich.org 70 i- (if existing Err bitreich.org 70 i- (when truename Err bitreich.org 70 i- (return existing)) Err bitreich.org 70 i- (err want-existing "Expected an existing pathname")))) Err bitreich.org 70 i- (when ensure-directories-exist (ensure-directories-exist p)) Err bitreich.org 70 i- (when truename Err bitreich.org 70 i- (let ((truename (truename* p))) Err bitreich.org 70 i- (if truename Err bitreich.org 70 i- (return truename) Err bitreich.org 70 i- (err truename "Can't get a truename for pathname")))) Err bitreich.org 70 i- (transform resolve-symlinks () (resolve-symlinks p)) Err bitreich.org 70 i- (transform truenamize () (truenamize p)) Err bitreich.org 70 i- p))))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Pathname defaults Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun get-pathname-defaults (&optional (defaults *default-pathname-defaults*)) Err bitreich.org 70 i- "Find the actual DEFAULTS to use for pathnames, including Err bitreich.org 70 i-resolving them with respect to GETCWD if the DEFAULTS were relative" Err bitreich.org 70 i- (or (absolute-pathname-p defaults) Err bitreich.org 70 i- (merge-pathnames* defaults (getcwd)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun call-with-current-directory (dir thunk) Err bitreich.org 70 i- "call the THUNK in a context where the current directory was changed to DIR, if not NIL. Err bitreich.org 70 i-Note that this operation is usually NOT thread-safe." Err bitreich.org 70 i- (if dir Err bitreich.org 70 i- (let* ((dir (resolve-symlinks* (get-pathname-defaults (pathname-directory-pathname dir)))) Err bitreich.org 70 i- (cwd (getcwd)) Err bitreich.org 70 i- (*default-pathname-defaults* dir)) Err bitreich.org 70 i- (chdir dir) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (funcall thunk) Err bitreich.org 70 i- (chdir cwd))) Err bitreich.org 70 i- (funcall thunk))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmacro with-current-directory ((&optional dir) &body body) Err bitreich.org 70 i- "Call BODY while the POSIX current working directory is set to DIR" Err bitreich.org 70 i- `(call-with-current-directory ,dir #'(lambda () ,@body)))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Environment pathnames Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun inter-directory-separator () Err bitreich.org 70 i- "What character does the current OS conventionally uses to separate directories?" Err bitreich.org 70 i- (os-cond ((os-unix-p) #\:) (t #\;))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun split-native-pathnames-string (string &rest constraints &key &allow-other-keys) Err bitreich.org 70 i- "Given a string of pathnames specified in native OS syntax, separate them in a list, Err bitreich.org 70 i-check constraints and normalize each one as per ENSURE-PATHNAME, Err bitreich.org 70 i-where an empty string denotes NIL." Err bitreich.org 70 i- (loop :for namestring :in (split-string string :separator (string (inter-directory-separator))) Err bitreich.org 70 i- :collect (unless (emptyp namestring) (apply 'parse-native-namestring namestring constraints)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun getenv-pathname (x &rest constraints &key ensure-directory want-directory on-error &allow-other-keys) Err bitreich.org 70 i- "Extract a pathname from a user-configured environment variable, as per native OS, Err bitreich.org 70 i-check constraints and normalize as per ENSURE-PATHNAME." Err bitreich.org 70 i- ;; For backward compatibility with ASDF 2, want-directory implies ensure-directory Err bitreich.org 70 i- (apply 'parse-native-namestring (getenvp x) Err bitreich.org 70 i- :ensure-directory (or ensure-directory want-directory) Err bitreich.org 70 i- :on-error (or on-error Err bitreich.org 70 i- `(error "In (~S ~S), invalid pathname ~*~S: ~*~?" getenv-pathname ,x)) Err bitreich.org 70 i- constraints)) Err bitreich.org 70 i- (defun getenv-pathnames (x &rest constraints &key on-error &allow-other-keys) Err bitreich.org 70 i- "Extract a list of pathname from a user-configured environment variable, as per native OS, Err bitreich.org 70 i-check constraints and normalize each one as per ENSURE-PATHNAME. Err bitreich.org 70 i- Any empty entries in the environment variable X will be returned as NILs." Err bitreich.org 70 i- (unless (getf constraints :empty-is-nil t) Err bitreich.org 70 i- (parameter-error "Cannot have EMPTY-IS-NIL false for ~S" 'getenv-pathnames)) Err bitreich.org 70 i- (apply 'split-native-pathnames-string (getenvp x) Err bitreich.org 70 i- :on-error (or on-error Err bitreich.org 70 i- `(error "In (~S ~S), invalid pathname ~*~S: ~*~?" getenv-pathnames ,x)) Err bitreich.org 70 i- :empty-is-nil t Err bitreich.org 70 i- constraints)) Err bitreich.org 70 i- (defun getenv-absolute-directory (x) Err bitreich.org 70 i- "Extract an absolute directory pathname from a user-configured environment variable, Err bitreich.org 70 i-as per native OS" Err bitreich.org 70 i- (getenv-pathname x :want-absolute t :ensure-directory t)) Err bitreich.org 70 i- (defun getenv-absolute-directories (x) Err bitreich.org 70 i- "Extract a list of absolute directories from a user-configured environment variable, Err bitreich.org 70 i-as per native OS. Any empty entries in the environment variable X will be returned as Err bitreich.org 70 i-NILs." Err bitreich.org 70 i- (getenv-pathnames x :want-absolute t :ensure-directory t)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun lisp-implementation-directory (&key truename) Err bitreich.org 70 i- "Where are the system files of the current installation of the CL implementation?" Err bitreich.org 70 i- (declare (ignorable truename)) Err bitreich.org 70 i- (let ((dir Err bitreich.org 70 i- #+abcl extensions:*lisp-home* Err bitreich.org 70 i- #+(or allegro clasp ecl mkcl) #p"SYS:" Err bitreich.org 70 i- #+clisp custom:*lib-directory* Err bitreich.org 70 i- #+clozure #p"ccl:" Err bitreich.org 70 i- #+cmucl (ignore-errors (pathname-parent-directory-pathname (truename #p"modules:"))) Err bitreich.org 70 i- #+gcl system::*system-directory* Err bitreich.org 70 i- #+lispworks lispworks:*lispworks-directory* Err bitreich.org 70 i- #+sbcl (if-let (it (find-symbol* :sbcl-homedir-pathname :sb-int nil)) Err bitreich.org 70 i- (funcall it) Err bitreich.org 70 i- (getenv-pathname "SBCL_HOME" :ensure-directory t)) Err bitreich.org 70 i- #+scl (ignore-errors (pathname-parent-directory-pathname (truename #p"file://modules/"))) Err bitreich.org 70 i- #+xcl ext:*xcl-home*)) Err bitreich.org 70 i- (if (and dir truename) Err bitreich.org 70 i- (truename* dir) Err bitreich.org 70 i- dir))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun lisp-implementation-pathname-p (pathname) Err bitreich.org 70 i- "Is the PATHNAME under the current installation of the CL implementation?" Err bitreich.org 70 i- ;; Other builtin systems are those under the implementation directory Err bitreich.org 70 i- (and (when pathname Err bitreich.org 70 i- (if-let (impdir (lisp-implementation-directory)) Err bitreich.org 70 i- (or (subpathp pathname impdir) Err bitreich.org 70 i- (when *resolve-symlinks* Err bitreich.org 70 i- (if-let (truename (truename* pathname)) Err bitreich.org 70 i- (if-let (trueimpdir (truename* impdir)) Err bitreich.org 70 i- (subpathp truename trueimpdir))))))) Err bitreich.org 70 i- t))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Simple filesystem operations Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun ensure-all-directories-exist (pathnames) Err bitreich.org 70 i- "Ensure that for every pathname in PATHNAMES, we ensure its directories exist" Err bitreich.org 70 i- (dolist (pathname pathnames) Err bitreich.org 70 i- (when pathname Err bitreich.org 70 i- (ensure-directories-exist (physicalize-pathname pathname))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun delete-file-if-exists (x) Err bitreich.org 70 i- "Delete a file X if it already exists" Err bitreich.org 70 i- (when x (handler-case (delete-file x) (file-error () nil)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun rename-file-overwriting-target (source target) Err bitreich.org 70 i- "Rename a file, overwriting any previous file with the TARGET name, Err bitreich.org 70 i-in an atomic way if the implementation allows." Err bitreich.org 70 i- (let ((source (ensure-pathname source :namestring :lisp :ensure-physical t :want-file t)) Err bitreich.org 70 i- (target (ensure-pathname target :namestring :lisp :ensure-physical t :want-file t))) Err bitreich.org 70 i- #+clisp ;; in recent enough versions of CLISP, :if-exists :overwrite would make it atomic Err bitreich.org 70 i- (progn (funcall 'require "syscalls") Err bitreich.org 70 i- (symbol-call :posix :copy-file source target :method :rename)) Err bitreich.org 70 i- #+(and sbcl os-windows) (delete-file-if-exists target) ;; not atomic Err bitreich.org 70 i- #-clisp Err bitreich.org 70 i- (rename-file source target Err bitreich.org 70 i- #+(or clasp clozure ecl) :if-exists Err bitreich.org 70 i- #+clozure :rename-and-delete #+(or clasp ecl) t))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun delete-empty-directory (directory-pathname) Err bitreich.org 70 i- "Delete an empty directory" Err bitreich.org 70 i- #+(or abcl digitool gcl) (delete-file directory-pathname) Err bitreich.org 70 i- #+allegro (excl:delete-directory directory-pathname) Err bitreich.org 70 i- #+clisp (ext:delete-directory directory-pathname) Err bitreich.org 70 i- #+clozure (ccl::delete-empty-directory directory-pathname) Err bitreich.org 70 i- #+(or cmucl scl) (multiple-value-bind (ok errno) Err bitreich.org 70 i- (unix:unix-rmdir (native-namestring directory-pathname)) Err bitreich.org 70 i- (unless ok Err bitreich.org 70 i- #+cmucl (error "Error number ~A when trying to delete directory ~A" Err bitreich.org 70 i- errno directory-pathname) Err bitreich.org 70 i- #+scl (error "~@" Err bitreich.org 70 i- directory-pathname (unix:get-unix-error-msg errno)))) Err bitreich.org 70 i- #+cormanlisp (win32:delete-directory directory-pathname) Err bitreich.org 70 i- #+(or clasp ecl) (si:rmdir directory-pathname) Err bitreich.org 70 i- #+genera (fs:delete-directory directory-pathname) Err bitreich.org 70 i- #+lispworks (lw:delete-directory directory-pathname) Err bitreich.org 70 i- #+mkcl (mkcl:rmdir directory-pathname) Err bitreich.org 70 i- #+sbcl #.(if-let (dd (find-symbol* :delete-directory :sb-ext nil)) Err bitreich.org 70 i- `(,dd directory-pathname) ;; requires SBCL 1.0.44 or later Err bitreich.org 70 i- `(progn (require :sb-posix) (symbol-call :sb-posix :rmdir directory-pathname))) Err bitreich.org 70 i- #+xcl (symbol-call :uiop :run-program `("rmdir" ,(native-namestring directory-pathname))) Err bitreich.org 70 i- #-(or abcl allegro clasp clisp clozure cmucl cormanlisp digitool ecl gcl genera lispworks mkcl sbcl scl xcl) Err bitreich.org 70 i- (not-implemented-error 'delete-empty-directory "(on your platform)")) ; genera Err bitreich.org 70 i- Err bitreich.org 70 i- (defun delete-directory-tree (directory-pathname &key (validate nil validatep) (if-does-not-exist :error)) Err bitreich.org 70 i- "Delete a directory including all its recursive contents, aka rm -rf. Err bitreich.org 70 i- Err bitreich.org 70 i-To reduce the risk of infortunate mistakes, DIRECTORY-PATHNAME must be Err bitreich.org 70 i-a physical non-wildcard directory pathname (not namestring). Err bitreich.org 70 i- Err bitreich.org 70 i-If the directory does not exist, the IF-DOES-NOT-EXIST argument specifies what happens: Err bitreich.org 70 i-if it is :ERROR (the default), an error is signaled, whereas if it is :IGNORE, nothing is done. Err bitreich.org 70 i- Err bitreich.org 70 i-Furthermore, before any deletion is attempted, the DIRECTORY-PATHNAME must pass Err bitreich.org 70 i-the validation function designated (as per ENSURE-FUNCTION) by the VALIDATE keyword argument Err bitreich.org 70 i-which in practice is thus compulsory, and validates by returning a non-NIL result. Err bitreich.org 70 i-If you're suicidal or extremely confident, just use :VALIDATE T." Err bitreich.org 70 i- (check-type if-does-not-exist (member :error :ignore)) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((not (and (pathnamep directory-pathname) (directory-pathname-p directory-pathname) Err bitreich.org 70 i- (physical-pathname-p directory-pathname) (not (wild-pathname-p directory-pathname)))) Err bitreich.org 70 i- (parameter-error "~S was asked to delete ~S but it is not a physical non-wildcard directory pathname" Err bitreich.org 70 i- 'delete-directory-tree directory-pathname)) Err bitreich.org 70 i- ((not validatep) Err bitreich.org 70 i- (parameter-error "~S was asked to delete ~S but was not provided a validation predicate" Err bitreich.org 70 i- 'delete-directory-tree directory-pathname)) Err bitreich.org 70 i- ((not (call-function validate directory-pathname)) Err bitreich.org 70 i- (parameter-error "~S was asked to delete ~S but it is not valid ~@[according to ~S~]" Err bitreich.org 70 i- 'delete-directory-tree directory-pathname validate)) Err bitreich.org 70 i- ((not (directory-exists-p directory-pathname)) Err bitreich.org 70 i- (ecase if-does-not-exist Err bitreich.org 70 i- (:error Err bitreich.org 70 i- (error "~S was asked to delete ~S but the directory does not exist" Err bitreich.org 70 i- 'delete-directory-tree directory-pathname)) Err bitreich.org 70 i- (:ignore nil))) Err bitreich.org 70 i- #-(or allegro cmucl clozure genera sbcl scl) Err bitreich.org 70 i- ((os-unix-p) ;; On Unix, don't recursively walk the directory and delete everything in Lisp, Err bitreich.org 70 i- ;; except on implementations where we can prevent DIRECTORY from following symlinks; Err bitreich.org 70 i- ;; instead spawn a standard external program to do the dirty work. Err bitreich.org 70 i- (symbol-call :uiop :run-program `("rm" "-rf" ,(native-namestring directory-pathname)))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- ;; On supported implementation, call supported system functions Err bitreich.org 70 i- #+allegro (symbol-call :excl.osi :delete-directory-and-files Err bitreich.org 70 i- directory-pathname :if-does-not-exist if-does-not-exist) Err bitreich.org 70 i- #+clozure (ccl:delete-directory directory-pathname) Err bitreich.org 70 i- #+genera (fs:delete-directory directory-pathname :confirm nil) Err bitreich.org 70 i- #+sbcl #.(if-let (dd (find-symbol* :delete-directory :sb-ext nil)) Err bitreich.org 70 i- `(,dd directory-pathname :recursive t) ;; requires SBCL 1.0.44 or later Err bitreich.org 70 i- '(error "~S requires SBCL 1.0.44 or later" 'delete-directory-tree)) Err bitreich.org 70 i- ;; Outside Unix or on CMUCL and SCL that can avoid following symlinks, Err bitreich.org 70 i- ;; do things the hard way. Err bitreich.org 70 i- #-(or allegro clozure genera sbcl) Err bitreich.org 70 i- (let ((sub*directories Err bitreich.org 70 i- (while-collecting (c) Err bitreich.org 70 i- (collect-sub*directories directory-pathname t t #'c)))) Err bitreich.org 70 i- (dolist (d (nreverse sub*directories)) Err bitreich.org 70 i- (map () 'delete-file (directory-files d)) Err bitreich.org 70 i- (delete-empty-directory d))))))) Err bitreich.org 70 1diff --git a/3rdparties/software/uiop-3.3.2/image.lisp b/3rdparties/software/uiop-3.3.2/image.lisp /scm/clic/file/3rdparties/software/uiop-3.3.2/image.lisp.gph bitreich.org 70 i@@ -1,483 +0,0 @@ Err bitreich.org 70 i-;;;; ------------------------------------------------------------------------- Err bitreich.org 70 i-;;;; Starting, Stopping, Dumping a Lisp image Err bitreich.org 70 i- Err bitreich.org 70 i-(uiop/package:define-package :uiop/image Err bitreich.org 70 i- (:use :uiop/common-lisp :uiop/package :uiop/utility :uiop/pathname :uiop/stream :uiop/os) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- #:*image-dumped-p* #:raw-command-line-arguments #:*command-line-arguments* Err bitreich.org 70 i- #:command-line-arguments #:raw-command-line-arguments #:setup-command-line-arguments #:argv0 Err bitreich.org 70 i- #:*lisp-interaction* Err bitreich.org 70 i- #:fatal-condition #:fatal-condition-p Err bitreich.org 70 i- #:handle-fatal-condition Err bitreich.org 70 i- #:call-with-fatal-condition-handler #:with-fatal-condition-handler Err bitreich.org 70 i- #:*image-restore-hook* #:*image-prelude* #:*image-entry-point* Err bitreich.org 70 i- #:*image-postlude* #:*image-dump-hook* Err bitreich.org 70 i- #:quit #:die #:raw-print-backtrace #:print-backtrace #:print-condition-backtrace Err bitreich.org 70 i- #:shell-boolean-exit Err bitreich.org 70 i- #:register-image-restore-hook #:register-image-dump-hook Err bitreich.org 70 i- #:call-image-restore-hook #:call-image-dump-hook Err bitreich.org 70 i- #:restore-image #:dump-image #:create-image Err bitreich.org 70 i-)) Err bitreich.org 70 i-(in-package :uiop/image) Err bitreich.org 70 i- Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defvar *lisp-interaction* t Err bitreich.org 70 i- "Is this an interactive Lisp environment, or is it batch processing?") Err bitreich.org 70 i- Err bitreich.org 70 i- (defvar *command-line-arguments* nil Err bitreich.org 70 i- "Command-line arguments") Err bitreich.org 70 i- Err bitreich.org 70 i- (defvar *image-dumped-p* nil ; may matter as to how to get to command-line-arguments Err bitreich.org 70 i- "Is this a dumped image? As a standalone executable?") Err bitreich.org 70 i- Err bitreich.org 70 i- (defvar *image-restore-hook* nil Err bitreich.org 70 i- "Functions to call (in reverse order) when the image is restored") Err bitreich.org 70 i- Err bitreich.org 70 i- (defvar *image-restored-p* nil Err bitreich.org 70 i- "Has the image been restored? A boolean, or :in-progress while restoring, :in-regress while dumping") Err bitreich.org 70 i- Err bitreich.org 70 i- (defvar *image-prelude* nil Err bitreich.org 70 i- "a form to evaluate, or string containing forms to read and evaluate Err bitreich.org 70 i-when the image is restarted, but before the entry point is called.") Err bitreich.org 70 i- Err bitreich.org 70 i- (defvar *image-entry-point* nil Err bitreich.org 70 i- "a function with which to restart the dumped image when execution is restored from it.") Err bitreich.org 70 i- Err bitreich.org 70 i- (defvar *image-postlude* nil Err bitreich.org 70 i- "a form to evaluate, or string containing forms to read and evaluate Err bitreich.org 70 i-before the image dump hooks are called and before the image is dumped.") Err bitreich.org 70 i- Err bitreich.org 70 i- (defvar *image-dump-hook* nil Err bitreich.org 70 i- "Functions to call (in order) when before an image is dumped")) Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (#-lispworks :compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (deftype fatal-condition () Err bitreich.org 70 i- `(and serious-condition #+clozure (not ccl:process-reset)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Exiting properly or im- Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun quit (&optional (code 0) (finish-output t)) Err bitreich.org 70 i- "Quits from the Lisp world, with the given exit status if provided. Err bitreich.org 70 i-This is designed to abstract away the implementation specific quit forms." Err bitreich.org 70 i- (when finish-output ;; essential, for ClozureCL, and for standard compliance. Err bitreich.org 70 i- (finish-outputs)) Err bitreich.org 70 i- #+(or abcl xcl) (ext:quit :status code) Err bitreich.org 70 i- #+allegro (excl:exit code :quiet t) Err bitreich.org 70 i- #+(or clasp ecl) (si:quit code) Err bitreich.org 70 i- #+clisp (ext:quit code) Err bitreich.org 70 i- #+clozure (ccl:quit code) Err bitreich.org 70 i- #+cormanlisp (win32:exitprocess code) Err bitreich.org 70 i- #+(or cmucl scl) (unix:unix-exit code) Err bitreich.org 70 i- #+gcl (system:quit code) Err bitreich.org 70 i- #+genera (error "~S: You probably don't want to Halt Genera. (code: ~S)" 'quit code) Err bitreich.org 70 i- #+lispworks (lispworks:quit :status code :confirm nil :return nil :ignore-errors-p t) Err bitreich.org 70 i- #+mcl (progn code (ccl:quit)) ;; or should we use FFI to call libc's exit(3) ? Err bitreich.org 70 i- #+mkcl (mk-ext:quit :exit-code code) Err bitreich.org 70 i- #+sbcl #.(let ((exit (find-symbol* :exit :sb-ext nil)) Err bitreich.org 70 i- (quit (find-symbol* :quit :sb-ext nil))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- (exit `(,exit :code code :abort (not finish-output))) Err bitreich.org 70 i- (quit `(,quit :unix-status code :recklessly-p (not finish-output))))) Err bitreich.org 70 i- #-(or abcl allegro clasp clisp clozure cmucl ecl gcl genera lispworks mcl mkcl sbcl scl xcl) Err bitreich.org 70 i- (not-implemented-error 'quit "(called with exit code ~S)" code)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun die (code format &rest arguments) Err bitreich.org 70 i- "Die in error with some error message" Err bitreich.org 70 i- (with-safe-io-syntax () Err bitreich.org 70 i- (ignore-errors Err bitreich.org 70 i- (format! *stderr* "~&~?~&" format arguments))) Err bitreich.org 70 i- (quit code)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun raw-print-backtrace (&key (stream *debug-io*) count condition) Err bitreich.org 70 i- "Print a backtrace, directly accessing the implementation" Err bitreich.org 70 i- (declare (ignorable stream count condition)) Err bitreich.org 70 i- #+abcl Err bitreich.org 70 i- (loop :for i :from 0 Err bitreich.org 70 i- :for frame :in (sys:backtrace (or count most-positive-fixnum)) :do Err bitreich.org 70 i- (safe-format! stream "~&~D: ~A~%" i frame)) Err bitreich.org 70 i- #+allegro Err bitreich.org 70 i- (let ((*terminal-io* stream) Err bitreich.org 70 i- (*standard-output* stream) Err bitreich.org 70 i- (tpl:*zoom-print-circle* *print-circle*) Err bitreich.org 70 i- (tpl:*zoom-print-level* *print-level*) Err bitreich.org 70 i- (tpl:*zoom-print-length* *print-length*)) Err bitreich.org 70 i- (tpl:do-command "zoom" Err bitreich.org 70 i- :from-read-eval-print-loop nil Err bitreich.org 70 i- :count (or count t) Err bitreich.org 70 i- :all t)) Err bitreich.org 70 i- #+(or clasp ecl mkcl) Err bitreich.org 70 i- (let* ((top (si:ihs-top)) Err bitreich.org 70 i- (repeats (if count (min top count) top)) Err bitreich.org 70 i- (backtrace (loop :for ihs :from 0 :below top Err bitreich.org 70 i- :collect (list (si::ihs-fun ihs) Err bitreich.org 70 i- (si::ihs-env ihs))))) Err bitreich.org 70 i- (loop :for i :from 0 :below repeats Err bitreich.org 70 i- :for frame :in (nreverse backtrace) :do Err bitreich.org 70 i- (safe-format! stream "~&~D: ~S~%" i frame))) Err bitreich.org 70 i- #+clisp Err bitreich.org 70 i- (system::print-backtrace :out stream :limit count) Err bitreich.org 70 i- #+(or clozure mcl) Err bitreich.org 70 i- (let ((*debug-io* stream)) Err bitreich.org 70 i- #+clozure (ccl:print-call-history :count count :start-frame-number 1) Err bitreich.org 70 i- #+mcl (ccl:print-call-history :detailed-p nil) Err bitreich.org 70 i- (finish-output stream)) Err bitreich.org 70 i- #+(or cmucl scl) Err bitreich.org 70 i- (let ((debug:*debug-print-level* *print-level*) Err bitreich.org 70 i- (debug:*debug-print-length* *print-length*)) Err bitreich.org 70 i- (debug:backtrace (or count most-positive-fixnum) stream)) Err bitreich.org 70 i- #+gcl Err bitreich.org 70 i- (let ((*debug-io* stream)) Err bitreich.org 70 i- (ignore-errors Err bitreich.org 70 i- (with-safe-io-syntax () Err bitreich.org 70 i- (if condition Err bitreich.org 70 i- (conditions::condition-backtrace condition) Err bitreich.org 70 i- (system::simple-backtrace))))) Err bitreich.org 70 i- #+lispworks Err bitreich.org 70 i- (let ((dbg::*debugger-stack* Err bitreich.org 70 i- (dbg::grab-stack nil :how-many (or count most-positive-fixnum))) Err bitreich.org 70 i- (*debug-io* stream) Err bitreich.org 70 i- (dbg:*debug-print-level* *print-level*) Err bitreich.org 70 i- (dbg:*debug-print-length* *print-length*)) Err bitreich.org 70 i- (dbg:bug-backtrace nil)) Err bitreich.org 70 i- #+mezzano Err bitreich.org 70 i- (let ((*standard-output* stream)) Err bitreich.org 70 i- (sys.int::backtrace count)) Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- (sb-debug:print-backtrace :stream stream :count (or count most-positive-fixnum)) Err bitreich.org 70 i- #+xcl Err bitreich.org 70 i- (loop :for i :from 0 :below (or count most-positive-fixnum) Err bitreich.org 70 i- :for frame :in (extensions:backtrace-as-list) :do Err bitreich.org 70 i- (safe-format! stream "~&~D: ~S~%" i frame))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun print-backtrace (&rest keys &key stream count condition) Err bitreich.org 70 i- "Print a backtrace" Err bitreich.org 70 i- (declare (ignore stream count condition)) Err bitreich.org 70 i- (with-safe-io-syntax (:package :cl) Err bitreich.org 70 i- (let ((*print-readably* nil) Err bitreich.org 70 i- (*print-circle* t) Err bitreich.org 70 i- (*print-miser-width* 75) Err bitreich.org 70 i- (*print-length* nil) Err bitreich.org 70 i- (*print-level* nil) Err bitreich.org 70 i- (*print-pretty* t)) Err bitreich.org 70 i- (ignore-errors (apply 'raw-print-backtrace keys))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun print-condition-backtrace (condition &key (stream *stderr*) count) Err bitreich.org 70 i- "Print a condition after a backtrace triggered by that condition" Err bitreich.org 70 i- ;; We print the condition *after* the backtrace, Err bitreich.org 70 i- ;; for the sake of who sees the backtrace at a terminal. Err bitreich.org 70 i- ;; It is up to the caller to print the condition *before*, with some context. Err bitreich.org 70 i- (print-backtrace :stream stream :count count :condition condition) Err bitreich.org 70 i- (when condition Err bitreich.org 70 i- (safe-format! stream "~&Above backtrace due to this condition:~%~A~&" Err bitreich.org 70 i- condition))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun fatal-condition-p (condition) Err bitreich.org 70 i- "Is the CONDITION fatal?" Err bitreich.org 70 i- (typep condition 'fatal-condition)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun handle-fatal-condition (condition) Err bitreich.org 70 i- "Handle a fatal CONDITION: Err bitreich.org 70 i-depending on whether *LISP-INTERACTION* is set, enter debugger or die" Err bitreich.org 70 i- (cond Err bitreich.org 70 i- (*lisp-interaction* Err bitreich.org 70 i- (invoke-debugger condition)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (safe-format! *stderr* "~&Fatal condition:~%~A~%" condition) Err bitreich.org 70 i- (print-condition-backtrace condition :stream *stderr*) Err bitreich.org 70 i- (die 99 "~A" condition)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun call-with-fatal-condition-handler (thunk) Err bitreich.org 70 i- "Call THUNK in a context where fatal conditions are appropriately handled" Err bitreich.org 70 i- (handler-bind ((fatal-condition #'handle-fatal-condition)) Err bitreich.org 70 i- (funcall thunk))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmacro with-fatal-condition-handler ((&optional) &body body) Err bitreich.org 70 i- "Execute BODY in a context where fatal conditions are appropriately handled" Err bitreich.org 70 i- `(call-with-fatal-condition-handler #'(lambda () ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun shell-boolean-exit (x) Err bitreich.org 70 i- "Quit with a return code that is 0 iff argument X is true" Err bitreich.org 70 i- (quit (if x 0 1)))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Using image hooks Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun register-image-restore-hook (hook &optional (call-now-p t)) Err bitreich.org 70 i- "Regiter a hook function to be run when restoring a dumped image" Err bitreich.org 70 i- (register-hook-function '*image-restore-hook* hook call-now-p)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun register-image-dump-hook (hook &optional (call-now-p nil)) Err bitreich.org 70 i- "Register a the hook function to be run before to dump an image" Err bitreich.org 70 i- (register-hook-function '*image-dump-hook* hook call-now-p)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun call-image-restore-hook () Err bitreich.org 70 i- "Call the hook functions registered to be run when restoring a dumped image" Err bitreich.org 70 i- (call-functions (reverse *image-restore-hook*))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun call-image-dump-hook () Err bitreich.org 70 i- "Call the hook functions registered to be run before to dump an image" Err bitreich.org 70 i- (call-functions *image-dump-hook*))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Proper command-line arguments Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun raw-command-line-arguments () Err bitreich.org 70 i- "Find what the actual command line for this process was." Err bitreich.org 70 i- #+abcl ext:*command-line-argument-list* ; Use 1.0.0 or later! Err bitreich.org 70 i- #+allegro (sys:command-line-arguments) ; default: :application t Err bitreich.org 70 i- #+(or clasp ecl) (loop :for i :from 0 :below (si:argc) :collect (si:argv i)) Err bitreich.org 70 i- #+clisp (coerce (ext:argv) 'list) Err bitreich.org 70 i- #+clozure ccl:*command-line-argument-list* Err bitreich.org 70 i- #+(or cmucl scl) extensions:*command-line-strings* Err bitreich.org 70 i- #+gcl si:*command-args* Err bitreich.org 70 i- #+(or genera mcl mezzano) nil Err bitreich.org 70 i- #+lispworks sys:*line-arguments-list* Err bitreich.org 70 i- #+mkcl (loop :for i :from 0 :below (mkcl:argc) :collect (mkcl:argv i)) Err bitreich.org 70 i- #+sbcl sb-ext:*posix-argv* Err bitreich.org 70 i- #+xcl system:*argv* Err bitreich.org 70 i- #-(or abcl allegro clasp clisp clozure cmucl ecl gcl genera lispworks mcl mezzano mkcl sbcl scl xcl) Err bitreich.org 70 i- (not-implemented-error 'raw-command-line-arguments)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun command-line-arguments (&optional (arguments (raw-command-line-arguments))) Err bitreich.org 70 i- "Extract user arguments from command-line invocation of current process. Err bitreich.org 70 i-Assume the calling conventions of a generated script that uses -- Err bitreich.org 70 i-if we are not called from a directly executable image." Err bitreich.org 70 i- (block nil Err bitreich.org 70 i- #+abcl (return arguments) Err bitreich.org 70 i- ;; SBCL and Allegro already separate user arguments from implementation arguments. Err bitreich.org 70 i- #-(or sbcl allegro) Err bitreich.org 70 i- (unless (eq *image-dumped-p* :executable) Err bitreich.org 70 i- ;; LispWorks command-line processing isn't transparent to the user Err bitreich.org 70 i- ;; unless you create a standalone executable; in that case, Err bitreich.org 70 i- ;; we rely on cl-launch or some other script to set the arguments for us. Err bitreich.org 70 i- #+lispworks (return *command-line-arguments*) Err bitreich.org 70 i- ;; On other implementations, on non-standalone executables, Err bitreich.org 70 i- ;; we trust cl-launch or whichever script starts the program Err bitreich.org 70 i- ;; to use -- as a delimiter between implementation arguments and user arguments. Err bitreich.org 70 i- #-lispworks (setf arguments (member "--" arguments :test 'string-equal))) Err bitreich.org 70 i- (rest arguments))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun argv0 () Err bitreich.org 70 i- "On supported implementations (most that matter), or when invoked by a proper wrapper script, Err bitreich.org 70 i-return a string that for the name with which the program was invoked, i.e. argv[0] in C. Err bitreich.org 70 i-Otherwise, return NIL." Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((eq *image-dumped-p* :executable) ; yes, this ARGV0 is our argv0 ! Err bitreich.org 70 i- ;; NB: not currently available on ABCL, Corman, Genera, MCL Err bitreich.org 70 i- (or #+(or allegro clisp clozure cmucl gcl lispworks sbcl scl xcl) Err bitreich.org 70 i- (first (raw-command-line-arguments)) Err bitreich.org 70 i- #+(or clasp ecl) (si:argv 0) #+mkcl (mkcl:argv 0))) Err bitreich.org 70 i- (t ;; argv[0] is the name of the interpreter. Err bitreich.org 70 i- ;; The wrapper script can export __CL_ARGV0. cl-launch does as of 4.0.1.8. Err bitreich.org 70 i- (getenvp "__CL_ARGV0")))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun setup-command-line-arguments () Err bitreich.org 70 i- (setf *command-line-arguments* (command-line-arguments))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun restore-image (&key Err bitreich.org 70 i- (lisp-interaction *lisp-interaction*) Err bitreich.org 70 i- (restore-hook *image-restore-hook*) Err bitreich.org 70 i- (prelude *image-prelude*) Err bitreich.org 70 i- (entry-point *image-entry-point*) Err bitreich.org 70 i- (if-already-restored '(cerror "RUN RESTORE-IMAGE ANYWAY"))) Err bitreich.org 70 i- "From a freshly restarted Lisp image, restore the saved Lisp environment Err bitreich.org 70 i-by setting appropriate variables, running various hooks, and calling any specified entry point. Err bitreich.org 70 i- Err bitreich.org 70 i-If the image has already been restored or is already being restored, as per *IMAGE-RESTORED-P*, Err bitreich.org 70 i-call the IF-ALREADY-RESTORED error handler (by default, a continuable error), and do return Err bitreich.org 70 i-immediately to the surrounding restore process if allowed to continue. Err bitreich.org 70 i- Err bitreich.org 70 i-Then, comes the restore process itself: Err bitreich.org 70 i-First, call each function in the RESTORE-HOOK, Err bitreich.org 70 i-in the order they were registered with REGISTER-IMAGE-RESTORE-HOOK. Err bitreich.org 70 i-Second, evaluate the prelude, which is often Lisp text that is read, Err bitreich.org 70 i-as per EVAL-INPUT. Err bitreich.org 70 i-Third, call the ENTRY-POINT function, if any is specified, with no argument. Err bitreich.org 70 i- Err bitreich.org 70 i-The restore process happens in a WITH-FATAL-CONDITION-HANDLER, so that if LISP-INTERACTION is NIL, Err bitreich.org 70 i-any unhandled error leads to a backtrace and an exit with an error status. Err bitreich.org 70 i-If LISP-INTERACTION is NIL, the process also exits when no error occurs: Err bitreich.org 70 i-if neither restart nor entry function is provided, the program will exit with status 0 (success); Err bitreich.org 70 i-if a function was provided, the program will exit after the function returns (if it returns), Err bitreich.org 70 i-with status 0 if and only if the primary return value of result is generalized boolean true, Err bitreich.org 70 i-and with status 1 if this value is NIL. Err bitreich.org 70 i- Err bitreich.org 70 i-If LISP-INTERACTION is true, unhandled errors will take you to the debugger, and the result Err bitreich.org 70 i-of the function will be returned rather than interpreted as a boolean designating an exit code." Err bitreich.org 70 i- (when *image-restored-p* Err bitreich.org 70 i- (if if-already-restored Err bitreich.org 70 i- (call-function if-already-restored "Image already ~:[being ~;~]restored" Err bitreich.org 70 i- (eq *image-restored-p* t)) Err bitreich.org 70 i- (return-from restore-image))) Err bitreich.org 70 i- (with-fatal-condition-handler () Err bitreich.org 70 i- (setf *lisp-interaction* lisp-interaction) Err bitreich.org 70 i- (setf *image-restore-hook* restore-hook) Err bitreich.org 70 i- (setf *image-prelude* prelude) Err bitreich.org 70 i- (setf *image-restored-p* :in-progress) Err bitreich.org 70 i- (call-image-restore-hook) Err bitreich.org 70 i- (standard-eval-thunk prelude) Err bitreich.org 70 i- (setf *image-restored-p* t) Err bitreich.org 70 i- (let ((results (multiple-value-list Err bitreich.org 70 i- (if entry-point Err bitreich.org 70 i- (call-function entry-point) Err bitreich.org 70 i- t)))) Err bitreich.org 70 i- (if lisp-interaction Err bitreich.org 70 i- (values-list results) Err bitreich.org 70 i- (shell-boolean-exit (first results))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Dumping an image Err bitreich.org 70 i- Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun dump-image (filename &key output-name executable Err bitreich.org 70 i- (postlude *image-postlude*) Err bitreich.org 70 i- (dump-hook *image-dump-hook*) Err bitreich.org 70 i- #+clozure prepend-symbols #+clozure (purify t) Err bitreich.org 70 i- #+sbcl compression Err bitreich.org 70 i- #+(and sbcl os-windows) application-type) Err bitreich.org 70 i- "Dump an image of the current Lisp environment at pathname FILENAME, with various options. Err bitreich.org 70 i- Err bitreich.org 70 i-First, finalize the image, by evaluating the POSTLUDE as per EVAL-INPUT, then calling each of Err bitreich.org 70 i- the functions in DUMP-HOOK, in reverse order of registration by REGISTER-DUMP-HOOK. Err bitreich.org 70 i- Err bitreich.org 70 i-If EXECUTABLE is true, create an standalone executable program that calls RESTORE-IMAGE on startup. Err bitreich.org 70 i- Err bitreich.org 70 i-Pass various implementation-defined options, such as PREPEND-SYMBOLS and PURITY on CCL, Err bitreich.org 70 i-or COMPRESSION on SBCL, and APPLICATION-TYPE on SBCL/Windows." Err bitreich.org 70 i- ;; Note: at least SBCL saves only global values of variables in the heap image, Err bitreich.org 70 i- ;; so make sure things you want to dump are NOT just local bindings shadowing the global values. Err bitreich.org 70 i- (declare (ignorable filename output-name executable)) Err bitreich.org 70 i- (setf *image-dumped-p* (if executable :executable t)) Err bitreich.org 70 i- (setf *image-restored-p* :in-regress) Err bitreich.org 70 i- (setf *image-postlude* postlude) Err bitreich.org 70 i- (standard-eval-thunk *image-postlude*) Err bitreich.org 70 i- (setf *image-dump-hook* dump-hook) Err bitreich.org 70 i- (call-image-dump-hook) Err bitreich.org 70 i- (setf *image-restored-p* nil) Err bitreich.org 70 i- #-(or clisp clozure (and cmucl executable) lispworks sbcl scl) Err bitreich.org 70 i- (when executable Err bitreich.org 70 i- (not-implemented-error 'dump-image "dumping an executable")) Err bitreich.org 70 i- #+allegro Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (sys:resize-areas :global-gc t :pack-heap t :sift-old-areas t :tenure t) ; :new 5000000 Err bitreich.org 70 i- (excl:dumplisp :name filename :suppress-allegro-cl-banner t)) Err bitreich.org 70 i- #+clisp Err bitreich.org 70 i- (apply #'ext:saveinitmem filename Err bitreich.org 70 i- :quiet t Err bitreich.org 70 i- :start-package *package* Err bitreich.org 70 i- :keep-global-handlers nil Err bitreich.org 70 i- :executable (if executable 0 t) ;--- requires clisp 2.48 or later, still catches --clisp-x Err bitreich.org 70 i- (when executable Err bitreich.org 70 i- (list Err bitreich.org 70 i- ;; :parse-options nil ;--- requires a non-standard patch to clisp. Err bitreich.org 70 i- :norc t :script nil :init-function #'restore-image))) Err bitreich.org 70 i- #+clozure Err bitreich.org 70 i- (flet ((dump (prepend-kernel) Err bitreich.org 70 i- (ccl:save-application filename :prepend-kernel prepend-kernel :purify purify Err bitreich.org 70 i- :toplevel-function (when executable #'restore-image)))) Err bitreich.org 70 i- ;;(setf ccl::*application* (make-instance 'ccl::lisp-development-system)) Err bitreich.org 70 i- (if prepend-symbols Err bitreich.org 70 i- (with-temporary-file (:prefix "ccl-symbols-" :direction :output :pathname path) Err bitreich.org 70 i- (require 'elf) Err bitreich.org 70 i- (funcall (fdefinition 'ccl::write-elf-symbols-to-file) path) Err bitreich.org 70 i- (dump path)) Err bitreich.org 70 i- (dump t))) Err bitreich.org 70 i- #+(or cmucl scl) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (ext:gc :full t) Err bitreich.org 70 i- (setf ext:*batch-mode* nil) Err bitreich.org 70 i- (setf ext::*gc-run-time* 0) Err bitreich.org 70 i- (apply 'ext:save-lisp filename Err bitreich.org 70 i- :allow-other-keys t ;; hush SCL and old versions of CMUCL Err bitreich.org 70 i- #+(and cmucl executable) :executable #+(and cmucl executable) t Err bitreich.org 70 i- (when executable '(:init-function restore-image :process-command-line nil Err bitreich.org 70 i- :quiet t :load-init-file nil :site-init nil)))) Err bitreich.org 70 i- #+gcl Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (si::set-hole-size 500) (si::gbc nil) (si::sgc-on t) Err bitreich.org 70 i- (si::save-system filename)) Err bitreich.org 70 i- #+lispworks Err bitreich.org 70 i- (if executable Err bitreich.org 70 i- (lispworks:deliver 'restore-image filename 0 :interface nil) Err bitreich.org 70 i- (hcl:save-image filename :environment nil)) Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- (progn Err bitreich.org 70 i- ;;(sb-pcl::precompile-random-code-segments) ;--- it is ugly slow at compile-time (!) when the initial core is a big CLOS program. If you want it, do it yourself Err bitreich.org 70 i- (setf sb-ext::*gc-run-time* 0) Err bitreich.org 70 i- (apply 'sb-ext:save-lisp-and-die filename Err bitreich.org 70 i- :executable t ;--- always include the runtime that goes with the core Err bitreich.org 70 i- (append Err bitreich.org 70 i- (when compression (list :compression compression)) Err bitreich.org 70 i- ;;--- only save runtime-options for standalone executables Err bitreich.org 70 i- (when executable (list :toplevel #'restore-image :save-runtime-options t)) Err bitreich.org 70 i- #+(and sbcl os-windows) ;; passing :application-type :gui will disable the console window. Err bitreich.org 70 i- ;; the default is :console - only works with SBCL 1.1.15 or later. Err bitreich.org 70 i- (when application-type (list :application-type application-type))))) Err bitreich.org 70 i- #-(or allegro clisp clozure cmucl gcl lispworks sbcl scl) Err bitreich.org 70 i- (not-implemented-error 'dump-image)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun create-image (destination lisp-object-files Err bitreich.org 70 i- &key kind output-name prologue-code epilogue-code extra-object-files Err bitreich.org 70 i- (prelude () preludep) (postlude () postludep) Err bitreich.org 70 i- (entry-point () entry-point-p) build-args no-uiop) Err bitreich.org 70 i- (declare (ignorable destination lisp-object-files extra-object-files kind output-name Err bitreich.org 70 i- prologue-code epilogue-code prelude preludep postlude postludep Err bitreich.org 70 i- entry-point entry-point-p build-args no-uiop)) Err bitreich.org 70 i- "On ECL, create an executable at pathname DESTINATION from the specified OBJECT-FILES and options" Err bitreich.org 70 i- ;; Is it meaningful to run these in the current environment? Err bitreich.org 70 i- ;; only if we also track the object files that constitute the "current" image, Err bitreich.org 70 i- ;; and otherwise simulate dump-image, including quitting at the end. Err bitreich.org 70 i- #-(or clasp ecl mkcl) (not-implemented-error 'create-image) Err bitreich.org 70 i- #+(or clasp ecl mkcl) Err bitreich.org 70 i- (let ((epilogue-code Err bitreich.org 70 i- (if no-uiop Err bitreich.org 70 i- epilogue-code Err bitreich.org 70 i- (let ((forms Err bitreich.org 70 i- (append Err bitreich.org 70 i- (when epilogue-code `(,epilogue-code)) Err bitreich.org 70 i- (when postludep `((setf *image-postlude* ',postlude))) Err bitreich.org 70 i- (when preludep `((setf *image-prelude* ',prelude))) Err bitreich.org 70 i- (when entry-point-p `((setf *image-entry-point* ',entry-point))) Err bitreich.org 70 i- (case kind Err bitreich.org 70 i- ((:image) Err bitreich.org 70 i- (setf kind :program) ;; to ECL, it's just another program. Err bitreich.org 70 i- `((setf *image-dumped-p* t) Err bitreich.org 70 i- (si::top-level #+(or clasp ecl) t) (quit))) Err bitreich.org 70 i- ((:program) Err bitreich.org 70 i- `((setf *image-dumped-p* :executable) Err bitreich.org 70 i- (shell-boolean-exit Err bitreich.org 70 i- (restore-image)))))))) Err bitreich.org 70 i- (when forms `(progn ,@forms)))))) Err bitreich.org 70 i- #+(or clasp ecl mkcl) Err bitreich.org 70 i- (check-type kind (member :dll :shared-library :lib :static-library Err bitreich.org 70 i- :fasl :fasb :program)) Err bitreich.org 70 i- (apply #+clasp 'cmp:builder #+clasp kind Err bitreich.org 70 i- #+(or ecl mkcl) Err bitreich.org 70 i- (ecase kind Err bitreich.org 70 i- ((:dll :shared-library) Err bitreich.org 70 i- #+ecl 'c::build-shared-library #+mkcl 'compiler:build-shared-library) Err bitreich.org 70 i- ((:lib :static-library) Err bitreich.org 70 i- #+ecl 'c::build-static-library #+mkcl 'compiler:build-static-library) Err bitreich.org 70 i- ((:fasl #+ecl :fasb) Err bitreich.org 70 i- #+ecl 'c::build-fasl #+mkcl 'compiler:build-fasl) Err bitreich.org 70 i- #+mkcl ((:fasb) 'compiler:build-bundle) Err bitreich.org 70 i- ((:program) Err bitreich.org 70 i- #+ecl 'c::build-program #+mkcl 'compiler:build-program)) Err bitreich.org 70 i- (pathname destination) Err bitreich.org 70 i- #+(or clasp ecl) :lisp-files #+mkcl :lisp-object-files Err bitreich.org 70 i- (append lisp-object-files #+(or clasp ecl) extra-object-files) Err bitreich.org 70 i- #+ecl :init-name Err bitreich.org 70 i- #+ecl (getf build-args :init-name) Err bitreich.org 70 i- (append Err bitreich.org 70 i- (when prologue-code `(:prologue-code ,prologue-code)) Err bitreich.org 70 i- (when epilogue-code `(:epilogue-code ,epilogue-code)) Err bitreich.org 70 i- #+mkcl (when extra-object-files `(:object-files ,extra-object-files)) Err bitreich.org 70 i- build-args))))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Some universal image restore hooks Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (map () 'register-image-restore-hook Err bitreich.org 70 i- '(setup-stdin setup-stdout setup-stderr Err bitreich.org 70 i- setup-command-line-arguments setup-temporary-directory Err bitreich.org 70 i- #+abcl detect-os))) Err bitreich.org 70 1diff --git a/3rdparties/software/uiop-3.3.2/launch-program.lisp b/3rdparties/software/uiop-3.3.2/launch-program.lisp /scm/clic/file/3rdparties/software/uiop-3.3.2/launch-program.lisp.gph bitreich.org 70 i@@ -1,682 +0,0 @@ Err bitreich.org 70 i-;;;; ------------------------------------------------------------------------- Err bitreich.org 70 i-;;;; launch-program - semi-portably spawn asynchronous subprocesses Err bitreich.org 70 i- Err bitreich.org 70 i-(uiop/package:define-package :uiop/launch-program Err bitreich.org 70 i- (:use :uiop/common-lisp :uiop/package :uiop/utility Err bitreich.org 70 i- :uiop/pathname :uiop/os :uiop/filesystem :uiop/stream) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- ;;; Escaping the command invocation madness Err bitreich.org 70 i- #:easy-sh-character-p #:escape-sh-token #:escape-sh-command Err bitreich.org 70 i- #:escape-windows-token #:escape-windows-command Err bitreich.org 70 i- #:escape-shell-token #:escape-shell-command Err bitreich.org 70 i- #:escape-token #:escape-command Err bitreich.org 70 i- Err bitreich.org 70 i- ;;; launch-program Err bitreich.org 70 i- #:launch-program Err bitreich.org 70 i- #:close-streams #:process-alive-p #:terminate-process #:wait-process Err bitreich.org 70 i- #:process-info-error-output #:process-info-input #:process-info-output #:process-info-pid)) Err bitreich.org 70 i-(in-package :uiop/launch-program) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; ----- Escaping strings for the shell ----- Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun requires-escaping-p (token &key good-chars bad-chars) Err bitreich.org 70 i- "Does this token require escaping, given the specification of Err bitreich.org 70 i-either good chars that don't need escaping or bad chars that do need escaping, Err bitreich.org 70 i-as either a recognizing function or a sequence of characters." Err bitreich.org 70 i- (some Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((and good-chars bad-chars) Err bitreich.org 70 i- (parameter-error "~S: only one of good-chars and bad-chars can be provided" Err bitreich.org 70 i- 'requires-escaping-p)) Err bitreich.org 70 i- ((typep good-chars 'function) Err bitreich.org 70 i- (complement good-chars)) Err bitreich.org 70 i- ((typep bad-chars 'function) Err bitreich.org 70 i- bad-chars) Err bitreich.org 70 i- ((and good-chars (typep good-chars 'sequence)) Err bitreich.org 70 i- #'(lambda (c) (not (find c good-chars)))) Err bitreich.org 70 i- ((and bad-chars (typep bad-chars 'sequence)) Err bitreich.org 70 i- #'(lambda (c) (find c bad-chars))) Err bitreich.org 70 i- (t (parameter-error "~S: no good-char criterion" 'requires-escaping-p))) Err bitreich.org 70 i- token)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun escape-token (token &key stream quote good-chars bad-chars escaper) Err bitreich.org 70 i- "Call the ESCAPER function on TOKEN string if it needs escaping as per Err bitreich.org 70 i-REQUIRES-ESCAPING-P using GOOD-CHARS and BAD-CHARS, otherwise output TOKEN, Err bitreich.org 70 i-using STREAM as output (or returning result as a string if NIL)" Err bitreich.org 70 i- (if (requires-escaping-p token :good-chars good-chars :bad-chars bad-chars) Err bitreich.org 70 i- (with-output (stream) Err bitreich.org 70 i- (apply escaper token stream (when quote `(:quote ,quote)))) Err bitreich.org 70 i- (output-string token stream))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun escape-windows-token-within-double-quotes (x &optional s) Err bitreich.org 70 i- "Escape a string token X within double-quotes Err bitreich.org 70 i-for use within a MS Windows command-line, outputing to S." Err bitreich.org 70 i- (labels ((issue (c) (princ c s)) Err bitreich.org 70 i- (issue-backslash (n) (loop :repeat n :do (issue #\\)))) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- :initially (issue #\") :finally (issue #\") Err bitreich.org 70 i- :with l = (length x) :with i = 0 Err bitreich.org 70 i- :for i+1 = (1+ i) :while (< i l) :do Err bitreich.org 70 i- (case (char x i) Err bitreich.org 70 i- ((#\") (issue-backslash 1) (issue #\") (setf i i+1)) Err bitreich.org 70 i- ((#\\) Err bitreich.org 70 i- (let* ((j (and (< i+1 l) (position-if-not Err bitreich.org 70 i- #'(lambda (c) (eql c #\\)) x :start i+1))) Err bitreich.org 70 i- (n (- (or j l) i))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((null j) Err bitreich.org 70 i- (issue-backslash (* 2 n)) (setf i l)) Err bitreich.org 70 i- ((and (< j l) (eql (char x j) #\")) Err bitreich.org 70 i- (issue-backslash (1+ (* 2 n))) (issue #\") (setf i (1+ j))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (issue-backslash n) (setf i j))))) Err bitreich.org 70 i- (otherwise Err bitreich.org 70 i- (issue (char x i)) (setf i i+1)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun easy-windows-character-p (x) Err bitreich.org 70 i- "Is X an \"easy\" character that does not require quoting by the shell?" Err bitreich.org 70 i- (or (alphanumericp x) (find x "+-_.,@:/="))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun escape-windows-token (token &optional s) Err bitreich.org 70 i- "Escape a string TOKEN within double-quotes if needed Err bitreich.org 70 i-for use within a MS Windows command-line, outputing to S." Err bitreich.org 70 i- (escape-token token :stream s :good-chars #'easy-windows-character-p :quote nil Err bitreich.org 70 i- :escaper 'escape-windows-token-within-double-quotes)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun escape-sh-token-within-double-quotes (x s &key (quote t)) Err bitreich.org 70 i- "Escape a string TOKEN within double-quotes Err bitreich.org 70 i-for use within a POSIX Bourne shell, outputing to S; Err bitreich.org 70 i-omit the outer double-quotes if key argument :QUOTE is NIL" Err bitreich.org 70 i- (when quote (princ #\" s)) Err bitreich.org 70 i- (loop :for c :across x :do Err bitreich.org 70 i- (when (find c "$`\\\"") (princ #\\ s)) Err bitreich.org 70 i- (princ c s)) Err bitreich.org 70 i- (when quote (princ #\" s))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun easy-sh-character-p (x) Err bitreich.org 70 i- "Is X an \"easy\" character that does not require quoting by the shell?" Err bitreich.org 70 i- (or (alphanumericp x) (find x "+-_.,%@:/="))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun escape-sh-token (token &optional s) Err bitreich.org 70 i- "Escape a string TOKEN within double-quotes if needed Err bitreich.org 70 i-for use within a POSIX Bourne shell, outputing to S." Err bitreich.org 70 i- (escape-token token :stream s :quote #\" :good-chars #'easy-sh-character-p Err bitreich.org 70 i- :escaper 'escape-sh-token-within-double-quotes)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun escape-shell-token (token &optional s) Err bitreich.org 70 i- "Escape a token for the current operating system shell" Err bitreich.org 70 i- (os-cond Err bitreich.org 70 i- ((os-unix-p) (escape-sh-token token s)) Err bitreich.org 70 i- ((os-windows-p) (escape-windows-token token s)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun escape-command (command &optional s Err bitreich.org 70 i- (escaper 'escape-shell-token)) Err bitreich.org 70 i- "Given a COMMAND as a list of tokens, return a string of the Err bitreich.org 70 i-spaced, escaped tokens, using ESCAPER to escape." Err bitreich.org 70 i- (etypecase command Err bitreich.org 70 i- (string (output-string command s)) Err bitreich.org 70 i- (list (with-output (s) Err bitreich.org 70 i- (loop :for first = t :then nil :for token :in command :do Err bitreich.org 70 i- (unless first (princ #\space s)) Err bitreich.org 70 i- (funcall escaper token s)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun escape-windows-command (command &optional s) Err bitreich.org 70 i- "Escape a list of command-line arguments into a string suitable for parsing Err bitreich.org 70 i-by CommandLineToArgv in MS Windows" Err bitreich.org 70 i- ;; http://msdn.microsoft.com/en-us/library/bb776391(v=vs.85).aspx Err bitreich.org 70 i- ;; http://msdn.microsoft.com/en-us/library/17w5ykft(v=vs.85).aspx Err bitreich.org 70 i- (escape-command command s 'escape-windows-token)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun escape-sh-command (command &optional s) Err bitreich.org 70 i- "Escape a list of command-line arguments into a string suitable for parsing Err bitreich.org 70 i-by /bin/sh in POSIX" Err bitreich.org 70 i- (escape-command command s 'escape-sh-token)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun escape-shell-command (command &optional stream) Err bitreich.org 70 i- "Escape a command for the current operating system's shell" Err bitreich.org 70 i- (escape-command command stream 'escape-shell-token))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- ;;; Internal helpers for run-program Err bitreich.org 70 i- (defun %normalize-io-specifier (specifier &optional role) Err bitreich.org 70 i- "Normalizes a portable I/O specifier for LAUNCH-PROGRAM into an implementation-dependent Err bitreich.org 70 i-argument to pass to the internal RUN-PROGRAM" Err bitreich.org 70 i- (declare (ignorable role)) Err bitreich.org 70 i- (typecase specifier Err bitreich.org 70 i- (null (or #+(or allegro lispworks) (null-device-pathname))) Err bitreich.org 70 i- (string (parse-native-namestring specifier)) Err bitreich.org 70 i- (pathname specifier) Err bitreich.org 70 i- (stream specifier) Err bitreich.org 70 i- ((eql :stream) :stream) Err bitreich.org 70 i- ((eql :interactive) Err bitreich.org 70 i- #+(or allegro lispworks) nil Err bitreich.org 70 i- #+clisp :terminal Err bitreich.org 70 i- #+(or abcl clozure cmucl ecl mkcl sbcl scl) t Err bitreich.org 70 i- #-(or abcl clozure cmucl ecl mkcl sbcl scl allegro lispworks clisp) Err bitreich.org 70 i- (not-implemented-error :interactive-output Err bitreich.org 70 i- "On this lisp implementation, cannot interpret ~a value of ~a" Err bitreich.org 70 i- specifier role)) Err bitreich.org 70 i- ((eql :output) Err bitreich.org 70 i- (cond ((eq role :error-output) Err bitreich.org 70 i- #+(or abcl allegro clozure cmucl ecl lispworks mkcl sbcl scl) Err bitreich.org 70 i- :output Err bitreich.org 70 i- #-(or abcl allegro clozure cmucl ecl lispworks mkcl sbcl scl) Err bitreich.org 70 i- (not-implemented-error :error-output-redirect Err bitreich.org 70 i- "Can't send ~a to ~a on this lisp implementation." Err bitreich.org 70 i- role specifier)) Err bitreich.org 70 i- (t (parameter-error "~S IO specifier invalid for ~S" specifier role)))) Err bitreich.org 70 i- (otherwise Err bitreich.org 70 i- (parameter-error "Incorrect I/O specifier ~S for ~S" Err bitreich.org 70 i- specifier role)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %interactivep (input output error-output) Err bitreich.org 70 i- (member :interactive (list input output error-output))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %signal-to-exit-code (signum) Err bitreich.org 70 i- (+ 128 signum)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %code-to-status (exit-code signal-code) Err bitreich.org 70 i- (cond ((null exit-code) :running) Err bitreich.org 70 i- ((null signal-code) (values :exited exit-code)) Err bitreich.org 70 i- (t (values :signaled signal-code)))) Err bitreich.org 70 i- Err bitreich.org 70 i- #+mkcl Err bitreich.org 70 i- (defun %mkcl-signal-to-number (signal) Err bitreich.org 70 i- (require :mk-unix) Err bitreich.org 70 i- (symbol-value (find-symbol signal :mk-unix))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defclass process-info () Err bitreich.org 70 i- (;; The process field is highly platform-, implementation-, and Err bitreich.org 70 i- ;; even version-dependent. Err bitreich.org 70 i- ;; Prior to LispWorks 7, the only information that Err bitreich.org 70 i- ;; `sys:run-shell-command` with `:wait nil` was certain to return Err bitreich.org 70 i- ;; is a PID (e.g. when all streams are nil), hence we stored it Err bitreich.org 70 i- ;; and used `sys:pid-exit-status` to obtain an exit status Err bitreich.org 70 i- ;; later. That is still what we do. Err bitreich.org 70 i- ;; From LispWorks 7 on, if `sys:run-shell-command` does not Err bitreich.org 70 i- ;; return a proper stream, we are instead given a dummy stream. Err bitreich.org 70 i- ;; We can thus always store a stream and use Err bitreich.org 70 i- ;; `sys:pipe-exit-status` to obtain an exit status later. Err bitreich.org 70 i- ;; The advantage of dealing with streams instead of PID is the Err bitreich.org 70 i- ;; availability of functions like `sys:pipe-kill-process`. Err bitreich.org 70 i- (process :initform nil) Err bitreich.org 70 i- (input-stream :initform nil) Err bitreich.org 70 i- (output-stream :initform nil) Err bitreich.org 70 i- (bidir-stream :initform nil) Err bitreich.org 70 i- (error-output-stream :initform nil) Err bitreich.org 70 i- ;; For backward-compatibility, to maintain the property (zerop Err bitreich.org 70 i- ;; exit-code) <-> success, an exit in response to a signal is Err bitreich.org 70 i- ;; encoded as 128+signum. Err bitreich.org 70 i- (exit-code :initform nil) Err bitreich.org 70 i- ;; If the platform allows it, distinguish exiting with a code Err bitreich.org 70 i- ;; >128 from exiting in response to a signal by setting this code Err bitreich.org 70 i- (signal-code :initform nil))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;--------------------------------------------------------------------------- Err bitreich.org 70 i-;;; The following two helper functions take care of handling the IF-EXISTS and Err bitreich.org 70 i-;;; IF-DOES-NOT-EXIST arguments for RUN-PROGRAM. In particular, they process the Err bitreich.org 70 i-;;; :ERROR, :APPEND, and :SUPERSEDE arguments *here*, allowing the master Err bitreich.org 70 i-;;; function to treat input and output files unconditionally for reading and Err bitreich.org 70 i-;;; writing. Err bitreich.org 70 i-;;;--------------------------------------------------------------------------- Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %handle-if-exists (file if-exists) Err bitreich.org 70 i- (when (or (stringp file) (pathnamep file)) Err bitreich.org 70 i- (ecase if-exists Err bitreich.org 70 i- ((:append :supersede :error) Err bitreich.org 70 i- (with-open-file (dummy file :direction :output :if-exists if-exists) Err bitreich.org 70 i- (declare (ignorable dummy))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %handle-if-does-not-exist (file if-does-not-exist) Err bitreich.org 70 i- (when (or (stringp file) (pathnamep file)) Err bitreich.org 70 i- (ecase if-does-not-exist Err bitreich.org 70 i- ((:create :error) Err bitreich.org 70 i- (with-open-file (dummy file :direction :probe Err bitreich.org 70 i- :if-does-not-exist if-does-not-exist) Err bitreich.org 70 i- (declare (ignorable dummy))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun process-info-error-output (process-info) Err bitreich.org 70 i- (slot-value process-info 'error-output-stream)) Err bitreich.org 70 i- (defun process-info-input (process-info) Err bitreich.org 70 i- (or (slot-value process-info 'bidir-stream) Err bitreich.org 70 i- (slot-value process-info 'input-stream))) Err bitreich.org 70 i- (defun process-info-output (process-info) Err bitreich.org 70 i- (or (slot-value process-info 'bidir-stream) Err bitreich.org 70 i- (slot-value process-info 'output-stream))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun process-info-pid (process-info) Err bitreich.org 70 i- (let ((process (slot-value process-info 'process))) Err bitreich.org 70 i- (declare (ignorable process)) Err bitreich.org 70 i- #+abcl (symbol-call :sys :process-pid process) Err bitreich.org 70 i- #+allegro process Err bitreich.org 70 i- #+clozure (ccl:external-process-id process) Err bitreich.org 70 i- #+ecl (ext:external-process-pid process) Err bitreich.org 70 i- #+(or cmucl scl) (ext:process-pid process) Err bitreich.org 70 i- #+lispworks7+ (sys:pipe-pid process) Err bitreich.org 70 i- #+(and lispworks (not lispworks7+)) process Err bitreich.org 70 i- #+mkcl (mkcl:process-id process) Err bitreich.org 70 i- #+sbcl (sb-ext:process-pid process) Err bitreich.org 70 i- #-(or abcl allegro clozure cmucl ecl mkcl lispworks sbcl scl) Err bitreich.org 70 i- (not-implemented-error 'process-info-pid))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %process-status (process-info) Err bitreich.org 70 i- (if-let (exit-code (slot-value process-info 'exit-code)) Err bitreich.org 70 i- (return-from %process-status Err bitreich.org 70 i- (if-let (signal-code (slot-value process-info 'signal-code)) Err bitreich.org 70 i- (values :signaled signal-code) Err bitreich.org 70 i- (values :exited exit-code)))) Err bitreich.org 70 i- #-(or allegro clozure cmucl ecl lispworks mkcl sbcl scl) Err bitreich.org 70 i- (not-implemented-error '%process-status) Err bitreich.org 70 i- (if-let (process (slot-value process-info 'process)) Err bitreich.org 70 i- (multiple-value-bind (status code) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- #+allegro (multiple-value-bind (exit-code pid signal-code) Err bitreich.org 70 i- (sys:reap-os-subprocess :pid process :wait nil) Err bitreich.org 70 i- (assert pid) Err bitreich.org 70 i- (%code-to-status exit-code signal-code)) Err bitreich.org 70 i- #+clozure (ccl:external-process-status process) Err bitreich.org 70 i- #+(or cmucl scl) (let ((status (ext:process-status process))) Err bitreich.org 70 i- (if (member status '(:exited :signaled)) Err bitreich.org 70 i- ;; Calling ext:process-exit-code on Err bitreich.org 70 i- ;; processes that are still alive Err bitreich.org 70 i- ;; yields an undefined result Err bitreich.org 70 i- (values status (ext:process-exit-code process)) Err bitreich.org 70 i- status)) Err bitreich.org 70 i- #+ecl (ext:external-process-status process) Err bitreich.org 70 i- #+lispworks Err bitreich.org 70 i- ;; a signal is only returned on LispWorks 7+ Err bitreich.org 70 i- (multiple-value-bind (exit-code signal-code) Err bitreich.org 70 i- (symbol-call :sys Err bitreich.org 70 i- #+lispworks7+ :pipe-exit-status Err bitreich.org 70 i- #-lispworks7+ :pid-exit-status Err bitreich.org 70 i- process :wait nil) Err bitreich.org 70 i- (%code-to-status exit-code signal-code)) Err bitreich.org 70 i- #+mkcl (let ((status (mk-ext:process-status process))) Err bitreich.org 70 i- (if (eq status :exited) Err bitreich.org 70 i- ;; Only call mk-ext:process-exit-code when Err bitreich.org 70 i- ;; necessary since it leads to another waitpid() Err bitreich.org 70 i- (let ((code (mk-ext:process-exit-code process))) Err bitreich.org 70 i- (if (stringp code) Err bitreich.org 70 i- (values :signaled (%mkcl-signal-to-number code)) Err bitreich.org 70 i- (values :exited code))) Err bitreich.org 70 i- status)) Err bitreich.org 70 i- #+sbcl (let ((status (sb-ext:process-status process))) Err bitreich.org 70 i- (if (eq status :running) Err bitreich.org 70 i- :running Err bitreich.org 70 i- ;; sb-ext:process-exit-code can also be Err bitreich.org 70 i- ;; called for stopped processes to determine Err bitreich.org 70 i- ;; the signal that stopped them Err bitreich.org 70 i- (values status (sb-ext:process-exit-code process))))) Err bitreich.org 70 i- (case status Err bitreich.org 70 i- (:exited (setf (slot-value process-info 'exit-code) code)) Err bitreich.org 70 i- (:signaled (let ((%code (%signal-to-exit-code code))) Err bitreich.org 70 i- (setf (slot-value process-info 'exit-code) %code Err bitreich.org 70 i- (slot-value process-info 'signal-code) code)))) Err bitreich.org 70 i- (if code Err bitreich.org 70 i- (values status code) Err bitreich.org 70 i- status)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun process-alive-p (process-info) Err bitreich.org 70 i- "Check if a process has yet to exit." Err bitreich.org 70 i- (unless (slot-value process-info 'exit-code) Err bitreich.org 70 i- #+abcl (sys:process-alive-p (slot-value process-info 'process)) Err bitreich.org 70 i- #+(or cmucl scl) (ext:process-alive-p (slot-value process-info 'process)) Err bitreich.org 70 i- #+sbcl (sb-ext:process-alive-p (slot-value process-info 'process)) Err bitreich.org 70 i- #-(or abcl cmucl sbcl scl) (find (%process-status process-info) Err bitreich.org 70 i- '(:running :stopped :continued :resumed)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun wait-process (process-info) Err bitreich.org 70 i- "Wait for the process to terminate, if it is still running. Err bitreich.org 70 i-Otherwise, return immediately. An exit code (a number) will be Err bitreich.org 70 i-returned, with 0 indicating success, and anything else indicating Err bitreich.org 70 i-failure. If the process exits after receiving a signal, the exit code Err bitreich.org 70 i-will be the sum of 128 and the (positive) numeric signal code. A second Err bitreich.org 70 i-value may be returned in this case: the numeric signal code itself. Err bitreich.org 70 i-Any asynchronously spawned process requires this function to be run Err bitreich.org 70 i-before it is garbage-collected in order to free up resources that Err bitreich.org 70 i-might otherwise be irrevocably lost." Err bitreich.org 70 i- (if-let (exit-code (slot-value process-info 'exit-code)) Err bitreich.org 70 i- (if-let (signal-code (slot-value process-info 'signal-code)) Err bitreich.org 70 i- (values exit-code signal-code) Err bitreich.org 70 i- exit-code) Err bitreich.org 70 i- (let ((process (slot-value process-info 'process))) Err bitreich.org 70 i- #-(or abcl allegro clozure cmucl ecl lispworks mkcl sbcl scl) Err bitreich.org 70 i- (not-implemented-error 'wait-process) Err bitreich.org 70 i- (when process Err bitreich.org 70 i- ;; 1- wait Err bitreich.org 70 i- #+clozure (ccl::external-process-wait process) Err bitreich.org 70 i- #+(or cmucl scl) (ext:process-wait process) Err bitreich.org 70 i- #+sbcl (sb-ext:process-wait process) Err bitreich.org 70 i- ;; 2- extract result Err bitreich.org 70 i- (multiple-value-bind (exit-code signal-code) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- #+abcl (sys:process-wait process) Err bitreich.org 70 i- #+allegro (multiple-value-bind (exit-code pid signal) Err bitreich.org 70 i- (sys:reap-os-subprocess :pid process :wait t) Err bitreich.org 70 i- (assert pid) Err bitreich.org 70 i- (values exit-code signal)) Err bitreich.org 70 i- #+clozure (multiple-value-bind (status code) Err bitreich.org 70 i- (ccl:external-process-status process) Err bitreich.org 70 i- (if (eq status :signaled) Err bitreich.org 70 i- (values nil code) Err bitreich.org 70 i- code)) Err bitreich.org 70 i- #+(or cmucl scl) (let ((status (ext:process-status process)) Err bitreich.org 70 i- (code (ext:process-exit-code process))) Err bitreich.org 70 i- (if (eq status :signaled) Err bitreich.org 70 i- (values nil code) Err bitreich.org 70 i- code)) Err bitreich.org 70 i- #+ecl (multiple-value-bind (status code) Err bitreich.org 70 i- (ext:external-process-wait process t) Err bitreich.org 70 i- (if (eq status :signaled) Err bitreich.org 70 i- (values nil code) Err bitreich.org 70 i- code)) Err bitreich.org 70 i- #+lispworks (symbol-call :sys Err bitreich.org 70 i- #+lispworks7+ :pipe-exit-status Err bitreich.org 70 i- #-lispworks7+ :pid-exit-status Err bitreich.org 70 i- process :wait t) Err bitreich.org 70 i- #+mkcl (let ((code (mkcl:join-process process))) Err bitreich.org 70 i- (if (stringp code) Err bitreich.org 70 i- (values nil (%mkcl-signal-to-number code)) Err bitreich.org 70 i- code)) Err bitreich.org 70 i- #+sbcl (let ((status (sb-ext:process-status process)) Err bitreich.org 70 i- (code (sb-ext:process-exit-code process))) Err bitreich.org 70 i- (if (eq status :signaled) Err bitreich.org 70 i- (values nil code) Err bitreich.org 70 i- code))) Err bitreich.org 70 i- (if signal-code Err bitreich.org 70 i- (let ((%exit-code (%signal-to-exit-code signal-code))) Err bitreich.org 70 i- (setf (slot-value process-info 'exit-code) %exit-code Err bitreich.org 70 i- (slot-value process-info 'signal-code) signal-code) Err bitreich.org 70 i- (values %exit-code signal-code)) Err bitreich.org 70 i- (progn (setf (slot-value process-info 'exit-code) exit-code) Err bitreich.org 70 i- exit-code))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; WARNING: For signals other than SIGTERM and SIGKILL this may not Err bitreich.org 70 i- ;; do what you expect it to. Sending SIGSTOP to a process spawned Err bitreich.org 70 i- ;; via LAUNCH-PROGRAM, e.g., will stop the shell /bin/sh that is used Err bitreich.org 70 i- ;; to run the command (via `sh -c command`) but not the actual Err bitreich.org 70 i- ;; command. Err bitreich.org 70 i- #+os-unix Err bitreich.org 70 i- (defun %posix-send-signal (process-info signal) Err bitreich.org 70 i- #+allegro (excl.osi:kill (slot-value process-info 'process) signal) Err bitreich.org 70 i- #+clozure (ccl:signal-external-process (slot-value process-info 'process) Err bitreich.org 70 i- signal :error-if-exited nil) Err bitreich.org 70 i- #+(or cmucl scl) (ext:process-kill (slot-value process-info 'process) signal) Err bitreich.org 70 i- #+sbcl (sb-ext:process-kill (slot-value process-info 'process) signal) Err bitreich.org 70 i- #-(or allegro clozure cmucl sbcl scl) Err bitreich.org 70 i- (if-let (pid (process-info-pid process-info)) Err bitreich.org 70 i- (symbol-call :uiop :run-program Err bitreich.org 70 i- (format nil "kill -~a ~a" signal pid) :ignore-error-status t))) Err bitreich.org 70 i- Err bitreich.org 70 i- ;;; this function never gets called on Windows, but the compiler cannot tell Err bitreich.org 70 i- ;;; that. [2016/09/25:rpg] Err bitreich.org 70 i- #+os-windows Err bitreich.org 70 i- (defun %posix-send-signal (process-info signal) Err bitreich.org 70 i- (declare (ignore process-info signal)) Err bitreich.org 70 i- (values)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun terminate-process (process-info &key urgent) Err bitreich.org 70 i- "Cause the process to exit. To that end, the process may or may Err bitreich.org 70 i-not be sent a signal, which it will find harder (or even impossible) Err bitreich.org 70 i-to ignore if URGENT is T. On some platforms, it may also be subject to Err bitreich.org 70 i-race conditions." Err bitreich.org 70 i- (declare (ignorable urgent)) Err bitreich.org 70 i- #+abcl (sys:process-kill (slot-value process-info 'process)) Err bitreich.org 70 i- ;; On ECL, this will only work on versions later than 2016-09-06, Err bitreich.org 70 i- ;; but we still want to compile on earlier versions, so we use symbol-call Err bitreich.org 70 i- #+ecl (symbol-call :ext :terminate-process (slot-value process-info 'process) urgent) Err bitreich.org 70 i- #+lispworks7+ (sys:pipe-kill-process (slot-value process-info 'process)) Err bitreich.org 70 i- #+mkcl (mk-ext:terminate-process (slot-value process-info 'process) Err bitreich.org 70 i- :force urgent) Err bitreich.org 70 i- #-(or abcl ecl lispworks7+ mkcl) Err bitreich.org 70 i- (os-cond Err bitreich.org 70 i- ((os-unix-p) (%posix-send-signal process-info (if urgent 9 15))) Err bitreich.org 70 i- ((os-windows-p) (if-let (pid (process-info-pid process-info)) Err bitreich.org 70 i- (symbol-call :uiop :run-program Err bitreich.org 70 i- (format nil "taskkill ~:[~;/f ~]/pid ~a" urgent pid) Err bitreich.org 70 i- :ignore-error-status t))) Err bitreich.org 70 i- (t (not-implemented-error 'terminate-process)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun close-streams (process-info) Err bitreich.org 70 i- "Close any stream that the process might own. Needs to be run Err bitreich.org 70 i-whenever streams were requested by passing :stream to :input, :output, Err bitreich.org 70 i-or :error-output." Err bitreich.org 70 i- (dolist (stream Err bitreich.org 70 i- (cons (slot-value process-info 'error-output-stream) Err bitreich.org 70 i- (if-let (bidir-stream (slot-value process-info 'bidir-stream)) Err bitreich.org 70 i- (list bidir-stream) Err bitreich.org 70 i- (list (slot-value process-info 'input-stream) Err bitreich.org 70 i- (slot-value process-info 'output-stream))))) Err bitreich.org 70 i- (when stream (close stream)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun launch-program (command &rest keys Err bitreich.org 70 i- &key Err bitreich.org 70 i- input (if-input-does-not-exist :error) Err bitreich.org 70 i- output (if-output-exists :supersede) Err bitreich.org 70 i- error-output (if-error-output-exists :supersede) Err bitreich.org 70 i- (element-type #-clozure *default-stream-element-type* Err bitreich.org 70 i- #+clozure 'character) Err bitreich.org 70 i- (external-format *utf-8-external-format*) Err bitreich.org 70 i- directory Err bitreich.org 70 i- #+allegro separate-streams Err bitreich.org 70 i- &allow-other-keys) Err bitreich.org 70 i- "Launch program specified by COMMAND, Err bitreich.org 70 i-either a list of strings specifying a program and list of arguments, Err bitreich.org 70 i-or a string specifying a shell command (/bin/sh on Unix, CMD.EXE on Err bitreich.org 70 i-Windows) _asynchronously_. Err bitreich.org 70 i- Err bitreich.org 70 i-If OUTPUT is a pathname, a string designating a pathname, or NIL (the Err bitreich.org 70 i-default) designating the null device, the file at that path is used as Err bitreich.org 70 i-output. Err bitreich.org 70 i-If it's :INTERACTIVE, output is inherited from the current process; Err bitreich.org 70 i-beware that this may be different from your *STANDARD-OUTPUT*, and Err bitreich.org 70 i-under SLIME will be on your *inferior-lisp* buffer. If it's T, output Err bitreich.org 70 i-goes to your current *STANDARD-OUTPUT* stream. If it's :STREAM, a new Err bitreich.org 70 i-stream will be made available that can be accessed via Err bitreich.org 70 i-PROCESS-INFO-OUTPUT and read from. Otherwise, OUTPUT should be a value Err bitreich.org 70 i-that the underlying lisp implementation knows how to handle. Err bitreich.org 70 i- Err bitreich.org 70 i-IF-OUTPUT-EXISTS, which is only meaningful if OUTPUT is a string or a Err bitreich.org 70 i-pathname, can take the values :ERROR, :APPEND, and :SUPERSEDE (the Err bitreich.org 70 i-default). The meaning of these values and their effect on the case Err bitreich.org 70 i-where OUTPUT does not exist, is analogous to the IF-EXISTS parameter Err bitreich.org 70 i-to OPEN with :DIRECTION :OUTPUT. Err bitreich.org 70 i- Err bitreich.org 70 i-ERROR-OUTPUT is similar to OUTPUT. T designates the *ERROR-OUTPUT*, Err bitreich.org 70 i-:OUTPUT means redirecting the error output to the output stream, Err bitreich.org 70 i-and :STREAM causes a stream to be made available via Err bitreich.org 70 i-PROCESS-INFO-ERROR-OUTPUT. Err bitreich.org 70 i- Err bitreich.org 70 i-IF-ERROR-OUTPUT-EXISTS is similar to IF-OUTPUT-EXIST, except that it Err bitreich.org 70 i-affects ERROR-OUTPUT rather than OUTPUT. Err bitreich.org 70 i- Err bitreich.org 70 i-INPUT is similar to OUTPUT, except that T designates the Err bitreich.org 70 i-*STANDARD-INPUT* and a stream requested through the :STREAM keyword Err bitreich.org 70 i-would be available through PROCESS-INFO-INPUT. Err bitreich.org 70 i- Err bitreich.org 70 i-IF-INPUT-DOES-NOT-EXIST, which is only meaningful if INPUT is a string Err bitreich.org 70 i-or a pathname, can take the values :CREATE and :ERROR (the Err bitreich.org 70 i-default). The meaning of these values is analogous to the Err bitreich.org 70 i-IF-DOES-NOT-EXIST parameter to OPEN with :DIRECTION :INPUT. Err bitreich.org 70 i- Err bitreich.org 70 i-ELEMENT-TYPE and EXTERNAL-FORMAT are passed on to your Lisp Err bitreich.org 70 i-implementation, when applicable, for creation of the output stream. Err bitreich.org 70 i- Err bitreich.org 70 i-LAUNCH-PROGRAM returns a PROCESS-INFO object." Err bitreich.org 70 i- #-(or abcl allegro clozure cmucl ecl (and lispworks os-unix) mkcl sbcl scl) Err bitreich.org 70 i- (progn command keys input output error-output directory element-type external-format Err bitreich.org 70 i- if-input-does-not-exist if-output-exists if-error-output-exists ;; ignore Err bitreich.org 70 i- (not-implemented-error 'launch-program)) Err bitreich.org 70 i- #+allegro Err bitreich.org 70 i- (when (some #'(lambda (stream) Err bitreich.org 70 i- (and (streamp stream) Err bitreich.org 70 i- (not (file-stream-p stream)))) Err bitreich.org 70 i- (list input output error-output)) Err bitreich.org 70 i- (parameter-error "~S: Streams passed as I/O parameters need to be file streams on this lisp" Err bitreich.org 70 i- 'launch-program)) Err bitreich.org 70 i- #+(or abcl clisp lispworks) Err bitreich.org 70 i- (when (some #'streamp (list input output error-output)) Err bitreich.org 70 i- (parameter-error "~S: I/O parameters cannot be foreign streams on this lisp" Err bitreich.org 70 i- 'launch-program)) Err bitreich.org 70 i- #+clisp Err bitreich.org 70 i- (unless (eq error-output :interactive) Err bitreich.org 70 i- (parameter-error "~S: The only admissible value for ~S is ~S on this lisp" Err bitreich.org 70 i- 'launch-program :error-output :interactive)) Err bitreich.org 70 i- #+ecl Err bitreich.org 70 i- (when (some #'(lambda (stream) Err bitreich.org 70 i- (and (streamp stream) Err bitreich.org 70 i- (not (file-or-synonym-stream-p stream)))) Err bitreich.org 70 i- (list input output error-output)) Err bitreich.org 70 i- (parameter-error "~S: Streams passed as I/O parameters need to be (synonymous with) file streams on this lisp" Err bitreich.org 70 i- 'launch-program)) Err bitreich.org 70 i- #+(or abcl allegro clozure cmucl ecl (and lispworks os-unix) mkcl sbcl scl) Err bitreich.org 70 i- (nest Err bitreich.org 70 i- (progn ;; see comments for these functions Err bitreich.org 70 i- (%handle-if-does-not-exist input if-input-does-not-exist) Err bitreich.org 70 i- (%handle-if-exists output if-output-exists) Err bitreich.org 70 i- (%handle-if-exists error-output if-error-output-exists)) Err bitreich.org 70 i- #+ecl (let ((*standard-input* *stdin*) Err bitreich.org 70 i- (*standard-output* *stdout*) Err bitreich.org 70 i- (*error-output* *stderr*))) Err bitreich.org 70 i- (let ((process-info (make-instance 'process-info)) Err bitreich.org 70 i- (input (%normalize-io-specifier input :input)) Err bitreich.org 70 i- (output (%normalize-io-specifier output :output)) Err bitreich.org 70 i- (error-output (%normalize-io-specifier error-output :error-output)) Err bitreich.org 70 i- #+(and allegro os-windows) (interactive (%interactivep input output error-output)) Err bitreich.org 70 i- (command Err bitreich.org 70 i- (etypecase command Err bitreich.org 70 i- #+os-unix (string `("/bin/sh" "-c" ,command)) Err bitreich.org 70 i- #+os-unix (list command) Err bitreich.org 70 i- #+os-windows Err bitreich.org 70 i- (string Err bitreich.org 70 i- ;; NB: On other Windows implementations, this is utterly bogus Err bitreich.org 70 i- ;; except in the most trivial cases where no quoting is needed. Err bitreich.org 70 i- ;; Use at your own risk. Err bitreich.org 70 i- #-(or allegro clisp clozure ecl) Err bitreich.org 70 i- (nest Err bitreich.org 70 i- #+(or ecl sbcl) (unless (find-symbol* :escape-arguments #+ecl :ext #+sbcl :sb-impl nil)) Err bitreich.org 70 i- (parameter-error "~S doesn't support string commands on Windows on this Lisp" Err bitreich.org 70 i- 'launch-program command)) Err bitreich.org 70 i- ;; NB: We add cmd /c here. Behavior without going through cmd is not well specified Err bitreich.org 70 i- ;; when the command contains spaces or special characters: Err bitreich.org 70 i- ;; IIUC, the system will use space as a separator, Err bitreich.org 70 i- ;; but the C++ argv-decoding libraries won't, and Err bitreich.org 70 i- ;; you're supposed to use an extra argument to CreateProcess to bridge the gap, Err bitreich.org 70 i- ;; yet neither allegro nor clisp provide access to that argument. Err bitreich.org 70 i- #+(or allegro clisp) (strcat "cmd /c " command) Err bitreich.org 70 i- ;; On ClozureCL for Windows, we assume you are using Err bitreich.org 70 i- ;; r15398 or later in 1.9 or later, Err bitreich.org 70 i- ;; so that bug 858 is fixed http://trac.clozure.com/ccl/ticket/858 Err bitreich.org 70 i- ;; On ECL, commit 2040629 https://gitlab.com/embeddable-common-lisp/ecl/issues/304 Err bitreich.org 70 i- ;; On SBCL, we assume the patch from fcae0fd (to be part of SBCL 1.3.13) Err bitreich.org 70 i- #+(or clozure ecl sbcl) (cons "cmd" (strcat "/c " command))) Err bitreich.org 70 i- #+os-windows Err bitreich.org 70 i- (list Err bitreich.org 70 i- #+allegro (escape-windows-command command) Err bitreich.org 70 i- #-allegro command))))) Err bitreich.org 70 i- #+(or abcl (and allegro os-unix) clozure cmucl ecl mkcl sbcl) Err bitreich.org 70 i- (let ((program (car command)) Err bitreich.org 70 i- #-allegro (arguments (cdr command)))) Err bitreich.org 70 i- #+(and (or ecl sbcl) os-windows) Err bitreich.org 70 i- (multiple-value-bind (arguments escape-arguments) Err bitreich.org 70 i- (if (listp arguments) Err bitreich.org 70 i- (values arguments t) Err bitreich.org 70 i- (values (list arguments) nil))) Err bitreich.org 70 i- #-(or allegro mkcl sbcl) (with-current-directory (directory)) Err bitreich.org 70 i- (multiple-value-bind Err bitreich.org 70 i- #+(or abcl clozure cmucl sbcl scl) (process) Err bitreich.org 70 i- #+allegro (in-or-io out-or-err err-or-pid pid-or-nil) Err bitreich.org 70 i- #+ecl (stream code process) Err bitreich.org 70 i- #+lispworks (io-or-pid err-or-nil #-lispworks7+ pid-or-nil) Err bitreich.org 70 i- #+mkcl (stream process code) Err bitreich.org 70 i- #.`(apply Err bitreich.org 70 i- #+abcl 'sys:run-program Err bitreich.org 70 i- #+allegro ,@'('excl:run-shell-command Err bitreich.org 70 i- #+os-unix (coerce (cons program command) 'vector) Err bitreich.org 70 i- #+os-windows command) Err bitreich.org 70 i- #+clozure 'ccl:run-program Err bitreich.org 70 i- #+(or cmucl ecl scl) 'ext:run-program Err bitreich.org 70 i- #+lispworks ,@'('system:run-shell-command `("/usr/bin/env" ,@command)) ; full path needed Err bitreich.org 70 i- #+mkcl 'mk-ext:run-program Err bitreich.org 70 i- #+sbcl 'sb-ext:run-program Err bitreich.org 70 i- #+(or abcl clozure cmucl ecl mkcl sbcl) ,@'(program arguments) Err bitreich.org 70 i- #+(and (or ecl sbcl) os-windows) ,@'(:escape-arguments escape-arguments) Err bitreich.org 70 i- :input input :if-input-does-not-exist :error Err bitreich.org 70 i- :output output :if-output-exists :append Err bitreich.org 70 i- ,(or #+(or allegro lispworks) :error-output :error) error-output Err bitreich.org 70 i- ,(or #+(or allegro lispworks) :if-error-output-exists :if-error-exists) :append Err bitreich.org 70 i- :wait nil :element-type element-type :external-format external-format Err bitreich.org 70 i- :allow-other-keys t Err bitreich.org 70 i- #+allegro ,@`(:directory directory Err bitreich.org 70 i- #+os-windows ,@'(:show-window (if interactive nil :hide))) Err bitreich.org 70 i- #+lispworks ,@'(:save-exit-status t) Err bitreich.org 70 i- #+mkcl ,@'(:directory (native-namestring directory)) Err bitreich.org 70 i- #-sbcl keys ;; on SBCL, don't pass :directory nil but remove it from the keys Err bitreich.org 70 i- #+sbcl ,@'(:search t (if directory keys (remove-plist-key :directory keys))))) Err bitreich.org 70 i- (labels ((prop (key value) (setf (slot-value process-info key) value))) Err bitreich.org 70 i- #+allegro Err bitreich.org 70 i- (cond Err bitreich.org 70 i- (separate-streams Err bitreich.org 70 i- (prop 'process pid-or-nil) Err bitreich.org 70 i- (when (eq input :stream) (prop 'input-stream in-or-io)) Err bitreich.org 70 i- (when (eq output :stream) (prop 'output-stream out-or-err)) Err bitreich.org 70 i- (when (eq error-output :stream) (prop 'error-stream err-or-pid))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (prop 'process err-or-pid) Err bitreich.org 70 i- (ecase (+ (if (eq input :stream) 1 0) (if (eq output :stream) 2 0)) Err bitreich.org 70 i- (0) Err bitreich.org 70 i- (1 (prop 'input-stream in-or-io)) Err bitreich.org 70 i- (2 (prop 'output-stream in-or-io)) Err bitreich.org 70 i- (3 (prop 'bidir-stream in-or-io))) Err bitreich.org 70 i- (when (eq error-output :stream) Err bitreich.org 70 i- (prop 'error-stream out-or-err)))) Err bitreich.org 70 i- #+(or abcl clozure cmucl sbcl scl) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (prop 'process process) Err bitreich.org 70 i- (when (eq input :stream) Err bitreich.org 70 i- (nest Err bitreich.org 70 i- (prop 'input-stream) Err bitreich.org 70 i- #+abcl (symbol-call :sys :process-input) Err bitreich.org 70 i- #+clozure (ccl:external-process-input-stream) Err bitreich.org 70 i- #+(or cmucl scl) (ext:process-input) Err bitreich.org 70 i- #+sbcl (sb-ext:process-input) Err bitreich.org 70 i- process)) Err bitreich.org 70 i- (when (eq output :stream) Err bitreich.org 70 i- (nest Err bitreich.org 70 i- (prop 'output-stream) Err bitreich.org 70 i- #+abcl (symbol-call :sys :process-output) Err bitreich.org 70 i- #+clozure (ccl:external-process-output-stream) Err bitreich.org 70 i- #+(or cmucl scl) (ext:process-output) Err bitreich.org 70 i- #+sbcl (sb-ext:process-output) Err bitreich.org 70 i- process)) Err bitreich.org 70 i- (when (eq error-output :stream) Err bitreich.org 70 i- (nest Err bitreich.org 70 i- (prop 'error-output-stream) Err bitreich.org 70 i- #+abcl (symbol-call :sys :process-error) Err bitreich.org 70 i- #+clozure (ccl:external-process-error-stream) Err bitreich.org 70 i- #+(or cmucl scl) (ext:process-error) Err bitreich.org 70 i- #+sbcl (sb-ext:process-error) Err bitreich.org 70 i- process))) Err bitreich.org 70 i- #+(or ecl mkcl) Err bitreich.org 70 i- (let ((mode (+ (if (eq input :stream) 1 0) (if (eq output :stream) 2 0)))) Err bitreich.org 70 i- code ;; ignore Err bitreich.org 70 i- (unless (zerop mode) Err bitreich.org 70 i- (prop (case mode (1 'input-stream) (2 'output-stream) (3 'bidir-stream)) stream)) Err bitreich.org 70 i- (prop 'process process)) Err bitreich.org 70 i- #+lispworks Err bitreich.org 70 i- ;; See also the comments on the process-info class Err bitreich.org 70 i- (let ((mode (+ (if (eq input :stream) 1 0) (if (eq output :stream) 2 0)))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((or (plusp mode) (eq error-output :stream)) Err bitreich.org 70 i- (prop 'process #+lispworks7+ io-or-pid #-lispworks7+ pid-or-nil) Err bitreich.org 70 i- (when (plusp mode) Err bitreich.org 70 i- (prop (ecase mode (1 'input-stream) (2 'output-stream) (3 'bidir-stream)) Err bitreich.org 70 i- io-or-pid)) Err bitreich.org 70 i- (when (eq error-output :stream) Err bitreich.org 70 i- (prop 'error-stream err-or-nil))) Err bitreich.org 70 i- ;; Prior to Lispworks 7, this returned (pid); now it Err bitreich.org 70 i- ;; returns (io err pid) of which we keep io. Err bitreich.org 70 i- (t (prop 'process io-or-pid))))) Err bitreich.org 70 i- process-info))) Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/uiop-3.3.2/lisp-build.lisp b/3rdparties/software/uiop-3.3.2/lisp-build.lisp /scm/clic/file/3rdparties/software/uiop-3.3.2/lisp-build.lisp.gph bitreich.org 70 i@@ -1,800 +0,0 @@ Err bitreich.org 70 i-;;;; ------------------------------------------------------------------------- Err bitreich.org 70 i-;;;; Support to build (compile and load) Lisp files Err bitreich.org 70 i- Err bitreich.org 70 i-(uiop/package:define-package :uiop/lisp-build Err bitreich.org 70 i- (:nicknames :asdf/lisp-build) ;; OBSOLETE, used by slime/contrib/swank-asdf.lisp Err bitreich.org 70 i- (:use :uiop/common-lisp :uiop/package :uiop/utility Err bitreich.org 70 i- :uiop/os :uiop/pathname :uiop/filesystem :uiop/stream :uiop/image) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- ;; Variables Err bitreich.org 70 i- #:*compile-file-warnings-behaviour* #:*compile-file-failure-behaviour* Err bitreich.org 70 i- #:*output-translation-function* Err bitreich.org 70 i- #:*optimization-settings* #:*previous-optimization-settings* Err bitreich.org 70 i- #:*base-build-directory* Err bitreich.org 70 i- #:compile-condition #:compile-file-error #:compile-warned-error #:compile-failed-error Err bitreich.org 70 i- #:compile-warned-warning #:compile-failed-warning Err bitreich.org 70 i- #:check-lisp-compile-results #:check-lisp-compile-warnings Err bitreich.org 70 i- #:*uninteresting-conditions* #:*usual-uninteresting-conditions* Err bitreich.org 70 i- #:*uninteresting-compiler-conditions* #:*uninteresting-loader-conditions* Err bitreich.org 70 i- ;; Types Err bitreich.org 70 i- #+sbcl #:sb-grovel-unknown-constant-condition Err bitreich.org 70 i- ;; Functions & Macros Err bitreich.org 70 i- #:get-optimization-settings #:proclaim-optimization-settings #:with-optimization-settings Err bitreich.org 70 i- #:call-with-muffled-compiler-conditions #:with-muffled-compiler-conditions Err bitreich.org 70 i- #:call-with-muffled-loader-conditions #:with-muffled-loader-conditions Err bitreich.org 70 i- #:reify-simple-sexp #:unreify-simple-sexp Err bitreich.org 70 i- #:reify-deferred-warnings #:unreify-deferred-warnings Err bitreich.org 70 i- #:reset-deferred-warnings #:save-deferred-warnings #:check-deferred-warnings Err bitreich.org 70 i- #:with-saved-deferred-warnings #:warnings-file-p #:warnings-file-type #:*warnings-file-type* Err bitreich.org 70 i- #:enable-deferred-warnings-check #:disable-deferred-warnings-check Err bitreich.org 70 i- #:current-lisp-file-pathname #:load-pathname Err bitreich.org 70 i- #:lispize-pathname #:compile-file-type #:call-around-hook Err bitreich.org 70 i- #:compile-file* #:compile-file-pathname* #:*compile-check* Err bitreich.org 70 i- #:load* #:load-from-string #:combine-fasls) Err bitreich.org 70 i- (:intern #:defaults #:failure-p #:warnings-p #:s #:y #:body)) Err bitreich.org 70 i-(in-package :uiop/lisp-build) Err bitreich.org 70 i- Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defvar *compile-file-warnings-behaviour* Err bitreich.org 70 i- (or #+clisp :ignore :warn) Err bitreich.org 70 i- "How should ASDF react if it encounters a warning when compiling a file? Err bitreich.org 70 i-Valid values are :error, :warn, and :ignore.") Err bitreich.org 70 i- Err bitreich.org 70 i- (defvar *compile-file-failure-behaviour* Err bitreich.org 70 i- (or #+(or mkcl sbcl) :error #+clisp :ignore :warn) Err bitreich.org 70 i- "How should ASDF react if it encounters a failure (per the ANSI spec of COMPILE-FILE) Err bitreich.org 70 i-when compiling a file, which includes any non-style-warning warning. Err bitreich.org 70 i-Valid values are :error, :warn, and :ignore. Err bitreich.org 70 i-Note that ASDF ALWAYS raises an error if it fails to create an output file when compiling.") Err bitreich.org 70 i- Err bitreich.org 70 i- (defvar *base-build-directory* nil Err bitreich.org 70 i- "When set to a non-null value, it should be an absolute directory pathname, Err bitreich.org 70 i-which will serve as the *DEFAULT-PATHNAME-DEFAULTS* around a COMPILE-FILE, Err bitreich.org 70 i-what more while the input-file is shortened if possible to ENOUGH-PATHNAME relative to it. Err bitreich.org 70 i-This can help you produce more deterministic output for FASLs.")) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Optimization settings Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defvar *optimization-settings* nil Err bitreich.org 70 i- "Optimization settings to be used by PROCLAIM-OPTIMIZATION-SETTINGS") Err bitreich.org 70 i- (defvar *previous-optimization-settings* nil Err bitreich.org 70 i- "Optimization settings saved by PROCLAIM-OPTIMIZATION-SETTINGS") Err bitreich.org 70 i- (defparameter +optimization-variables+ Err bitreich.org 70 i- ;; TODO: allegro genera corman mcl Err bitreich.org 70 i- (or #+(or abcl xcl) '(system::*speed* system::*space* system::*safety* system::*debug*) Err bitreich.org 70 i- #+clisp '() ;; system::*optimize* is a constant hash-table! (with non-constant contents) Err bitreich.org 70 i- #+clozure '(ccl::*nx-speed* ccl::*nx-space* ccl::*nx-safety* Err bitreich.org 70 i- ccl::*nx-debug* ccl::*nx-cspeed*) Err bitreich.org 70 i- #+(or cmucl scl) '(c::*default-cookie*) Err bitreich.org 70 i- #+clasp '() Err bitreich.org 70 i- #+ecl (unless (use-ecl-byte-compiler-p) '(c::*speed* c::*space* c::*safety* c::*debug*)) Err bitreich.org 70 i- #+gcl '(compiler::*speed* compiler::*space* compiler::*compiler-new-safety* compiler::*debug*) Err bitreich.org 70 i- #+lispworks '(compiler::*optimization-level*) Err bitreich.org 70 i- #+mkcl '(si::*speed* si::*space* si::*safety* si::*debug*) Err bitreich.org 70 i- #+sbcl '(sb-c::*policy*))) Err bitreich.org 70 i- (defun get-optimization-settings () Err bitreich.org 70 i- "Get current compiler optimization settings, ready to PROCLAIM again" Err bitreich.org 70 i- #-(or abcl allegro clasp clisp clozure cmucl ecl lispworks mkcl sbcl scl xcl) Err bitreich.org 70 i- (warn "~S does not support ~S. Please help me fix that." Err bitreich.org 70 i- 'get-optimization-settings (implementation-type)) Err bitreich.org 70 i- #+(or abcl allegro clasp clisp clozure cmucl ecl lispworks mkcl sbcl scl xcl) Err bitreich.org 70 i- (let ((settings '(speed space safety debug compilation-speed #+(or cmucl scl) c::brevity))) Err bitreich.org 70 i- #.`(loop #+(or allegro clozure) Err bitreich.org 70 i- ,@'(:with info = #+allegro (sys:declaration-information 'optimize) Err bitreich.org 70 i- #+clozure (ccl:declaration-information 'optimize nil)) Err bitreich.org 70 i- :for x :in settings Err bitreich.org 70 i- ,@(or #+(or abcl clasp ecl gcl mkcl xcl) '(:for v :in +optimization-variables+)) Err bitreich.org 70 i- :for y = (or #+(or allegro clozure) (second (assoc x info)) ; normalize order Err bitreich.org 70 i- #+clisp (gethash x system::*optimize* 1) Err bitreich.org 70 i- #+(or abcl clasp ecl mkcl xcl) (symbol-value v) Err bitreich.org 70 i- #+(or cmucl scl) (slot-value c::*default-cookie* Err bitreich.org 70 i- (case x (compilation-speed 'c::cspeed) Err bitreich.org 70 i- (otherwise x))) Err bitreich.org 70 i- #+lispworks (slot-value compiler::*optimization-level* x) Err bitreich.org 70 i- #+sbcl (sb-c::policy-quality sb-c::*policy* x)) Err bitreich.org 70 i- :when y :collect (list x y)))) Err bitreich.org 70 i- (defun proclaim-optimization-settings () Err bitreich.org 70 i- "Proclaim the optimization settings in *OPTIMIZATION-SETTINGS*" Err bitreich.org 70 i- (proclaim `(optimize ,@*optimization-settings*)) Err bitreich.org 70 i- (let ((settings (get-optimization-settings))) Err bitreich.org 70 i- (unless (equal *previous-optimization-settings* settings) Err bitreich.org 70 i- (setf *previous-optimization-settings* settings)))) Err bitreich.org 70 i- (defmacro with-optimization-settings ((&optional (settings *optimization-settings*)) &body body) Err bitreich.org 70 i- #+(or allegro clisp) Err bitreich.org 70 i- (let ((previous-settings (gensym "PREVIOUS-SETTINGS"))) Err bitreich.org 70 i- `(let ((,previous-settings (get-optimization-settings))) Err bitreich.org 70 i- ,@(when settings `((proclaim `(optimize ,@,settings)))) Err bitreich.org 70 i- (unwind-protect (progn ,@body) Err bitreich.org 70 i- (proclaim `(optimize ,@,previous-settings))))) Err bitreich.org 70 i- #-(or allegro clisp) Err bitreich.org 70 i- `(let ,(loop :for v :in +optimization-variables+ :collect `(,v ,v)) Err bitreich.org 70 i- ,@(when settings `((proclaim `(optimize ,@,settings)))) Err bitreich.org 70 i- ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Condition control Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (defun sb-grovel-unknown-constant-condition-p (c) Err bitreich.org 70 i- "Detect SB-GROVEL unknown-constant conditions on older versions of SBCL" Err bitreich.org 70 i- (and (typep c 'sb-int:simple-style-warning) Err bitreich.org 70 i- (string-enclosed-p Err bitreich.org 70 i- "Couldn't grovel for " Err bitreich.org 70 i- (simple-condition-format-control c) Err bitreich.org 70 i- " (unknown to the C compiler)."))) Err bitreich.org 70 i- (deftype sb-grovel-unknown-constant-condition () Err bitreich.org 70 i- '(and style-warning (satisfies sb-grovel-unknown-constant-condition-p)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defvar *usual-uninteresting-conditions* Err bitreich.org 70 i- (append Err bitreich.org 70 i- ;;#+clozure '(ccl:compiler-warning) Err bitreich.org 70 i- #+cmucl '("Deleting unreachable code.") Err bitreich.org 70 i- #+lispworks '("~S being redefined in ~A (previously in ~A)." Err bitreich.org 70 i- "~S defined more than once in ~A.") ;; lispworks gets confused by eval-when. Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- '(sb-c::simple-compiler-note Err bitreich.org 70 i- "&OPTIONAL and &KEY found in the same lambda list: ~S" Err bitreich.org 70 i- #+sb-eval sb-kernel:lexical-environment-too-complex Err bitreich.org 70 i- sb-kernel:undefined-alien-style-warning Err bitreich.org 70 i- sb-grovel-unknown-constant-condition ; defined above. Err bitreich.org 70 i- sb-ext:implicit-generic-function-warning ;; Controversial. Err bitreich.org 70 i- sb-int:package-at-variance Err bitreich.org 70 i- sb-kernel:uninteresting-redefinition Err bitreich.org 70 i- ;; BEWARE: the below four are controversial to include here. Err bitreich.org 70 i- sb-kernel:redefinition-with-defun Err bitreich.org 70 i- sb-kernel:redefinition-with-defgeneric Err bitreich.org 70 i- sb-kernel:redefinition-with-defmethod Err bitreich.org 70 i- sb-kernel::redefinition-with-defmacro) ; not exported by old SBCLs Err bitreich.org 70 i- '("No generic function ~S present when encountering macroexpansion of defmethod. Assuming it will be an instance of standard-generic-function.")) ;; from closer2mop Err bitreich.org 70 i- "A suggested value to which to set or bind *uninteresting-conditions*.") Err bitreich.org 70 i- Err bitreich.org 70 i- (defvar *uninteresting-conditions* '() Err bitreich.org 70 i- "Conditions that may be skipped while compiling or loading Lisp code.") Err bitreich.org 70 i- (defvar *uninteresting-compiler-conditions* '() Err bitreich.org 70 i- "Additional conditions that may be skipped while compiling Lisp code.") Err bitreich.org 70 i- (defvar *uninteresting-loader-conditions* Err bitreich.org 70 i- (append Err bitreich.org 70 i- '("Overwriting already existing readtable ~S." ;; from named-readtables Err bitreich.org 70 i- #(#:finalizers-off-warning :asdf-finalizers)) ;; from asdf-finalizers Err bitreich.org 70 i- #+clisp '(clos::simple-gf-replacing-method-warning)) Err bitreich.org 70 i- "Additional conditions that may be skipped while loading Lisp code.")) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; ----- Filtering conditions while building ----- Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun call-with-muffled-compiler-conditions (thunk) Err bitreich.org 70 i- "Call given THUNK in a context where uninteresting conditions and compiler conditions are muffled" Err bitreich.org 70 i- (call-with-muffled-conditions Err bitreich.org 70 i- thunk (append *uninteresting-conditions* *uninteresting-compiler-conditions*))) Err bitreich.org 70 i- (defmacro with-muffled-compiler-conditions ((&optional) &body body) Err bitreich.org 70 i- "Trivial syntax for CALL-WITH-MUFFLED-COMPILER-CONDITIONS" Err bitreich.org 70 i- `(call-with-muffled-compiler-conditions #'(lambda () ,@body))) Err bitreich.org 70 i- (defun call-with-muffled-loader-conditions (thunk) Err bitreich.org 70 i- "Call given THUNK in a context where uninteresting conditions and loader conditions are muffled" Err bitreich.org 70 i- (call-with-muffled-conditions Err bitreich.org 70 i- thunk (append *uninteresting-conditions* *uninteresting-loader-conditions*))) Err bitreich.org 70 i- (defmacro with-muffled-loader-conditions ((&optional) &body body) Err bitreich.org 70 i- "Trivial syntax for CALL-WITH-MUFFLED-LOADER-CONDITIONS" Err bitreich.org 70 i- `(call-with-muffled-loader-conditions #'(lambda () ,@body)))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Handle warnings and failures Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (define-condition compile-condition (condition) Err bitreich.org 70 i- ((context-format Err bitreich.org 70 i- :initform nil :reader compile-condition-context-format :initarg :context-format) Err bitreich.org 70 i- (context-arguments Err bitreich.org 70 i- :initform nil :reader compile-condition-context-arguments :initarg :context-arguments) Err bitreich.org 70 i- (description Err bitreich.org 70 i- :initform nil :reader compile-condition-description :initarg :description)) Err bitreich.org 70 i- (:report (lambda (c s) Err bitreich.org 70 i- (format s (compatfmt "~@<~A~@[ while ~?~]~@:>") Err bitreich.org 70 i- (or (compile-condition-description c) (type-of c)) Err bitreich.org 70 i- (compile-condition-context-format c) Err bitreich.org 70 i- (compile-condition-context-arguments c))))) Err bitreich.org 70 i- (define-condition compile-file-error (compile-condition error) ()) Err bitreich.org 70 i- (define-condition compile-warned-warning (compile-condition warning) ()) Err bitreich.org 70 i- (define-condition compile-warned-error (compile-condition error) ()) Err bitreich.org 70 i- (define-condition compile-failed-warning (compile-condition warning) ()) Err bitreich.org 70 i- (define-condition compile-failed-error (compile-condition error) ()) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun check-lisp-compile-warnings (warnings-p failure-p Err bitreich.org 70 i- &optional context-format context-arguments) Err bitreich.org 70 i- "Given the warnings or failures as resulted from COMPILE-FILE or checking deferred warnings, Err bitreich.org 70 i-raise an error or warning as appropriate" Err bitreich.org 70 i- (when failure-p Err bitreich.org 70 i- (case *compile-file-failure-behaviour* Err bitreich.org 70 i- (:warn (warn 'compile-failed-warning Err bitreich.org 70 i- :description "Lisp compilation failed" Err bitreich.org 70 i- :context-format context-format Err bitreich.org 70 i- :context-arguments context-arguments)) Err bitreich.org 70 i- (:error (error 'compile-failed-error Err bitreich.org 70 i- :description "Lisp compilation failed" Err bitreich.org 70 i- :context-format context-format Err bitreich.org 70 i- :context-arguments context-arguments)) Err bitreich.org 70 i- (:ignore nil))) Err bitreich.org 70 i- (when warnings-p Err bitreich.org 70 i- (case *compile-file-warnings-behaviour* Err bitreich.org 70 i- (:warn (warn 'compile-warned-warning Err bitreich.org 70 i- :description "Lisp compilation had style-warnings" Err bitreich.org 70 i- :context-format context-format Err bitreich.org 70 i- :context-arguments context-arguments)) Err bitreich.org 70 i- (:error (error 'compile-warned-error Err bitreich.org 70 i- :description "Lisp compilation had style-warnings" Err bitreich.org 70 i- :context-format context-format Err bitreich.org 70 i- :context-arguments context-arguments)) Err bitreich.org 70 i- (:ignore nil)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun check-lisp-compile-results (output warnings-p failure-p Err bitreich.org 70 i- &optional context-format context-arguments) Err bitreich.org 70 i- "Given the results of COMPILE-FILE, raise an error or warning as appropriate" Err bitreich.org 70 i- (unless output Err bitreich.org 70 i- (error 'compile-file-error :context-format context-format :context-arguments context-arguments)) Err bitreich.org 70 i- (check-lisp-compile-warnings warnings-p failure-p context-format context-arguments))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Deferred-warnings treatment, originally implemented by Douglas Katzman. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; To support an implementation, three functions must be implemented: Err bitreich.org 70 i-;;; reify-deferred-warnings unreify-deferred-warnings reset-deferred-warnings Err bitreich.org 70 i-;;; See their respective docstrings. Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun reify-simple-sexp (sexp) Err bitreich.org 70 i- "Given a simple SEXP, return a representation of it as a portable SEXP. Err bitreich.org 70 i-Simple means made of symbols, numbers, characters, simple-strings, pathnames, cons cells." Err bitreich.org 70 i- (etypecase sexp Err bitreich.org 70 i- (symbol (reify-symbol sexp)) Err bitreich.org 70 i- ((or number character simple-string pathname) sexp) Err bitreich.org 70 i- (cons (cons (reify-simple-sexp (car sexp)) (reify-simple-sexp (cdr sexp)))) Err bitreich.org 70 i- (simple-vector (vector (mapcar 'reify-simple-sexp (coerce sexp 'list)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun unreify-simple-sexp (sexp) Err bitreich.org 70 i- "Given the portable output of REIFY-SIMPLE-SEXP, return the simple SEXP it represents" Err bitreich.org 70 i- (etypecase sexp Err bitreich.org 70 i- ((or symbol number character simple-string pathname) sexp) Err bitreich.org 70 i- (cons (cons (unreify-simple-sexp (car sexp)) (unreify-simple-sexp (cdr sexp)))) Err bitreich.org 70 i- ((simple-vector 2) (unreify-symbol sexp)) Err bitreich.org 70 i- ((simple-vector 1) (coerce (mapcar 'unreify-simple-sexp (aref sexp 0)) 'vector)))) Err bitreich.org 70 i- Err bitreich.org 70 i- #+clozure Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (defun reify-source-note (source-note) Err bitreich.org 70 i- (when source-note Err bitreich.org 70 i- (with-accessors ((source ccl::source-note-source) (filename ccl:source-note-filename) Err bitreich.org 70 i- (start-pos ccl:source-note-start-pos) (end-pos ccl:source-note-end-pos)) source-note Err bitreich.org 70 i- (declare (ignorable source)) Err bitreich.org 70 i- (list :filename filename :start-pos start-pos :end-pos end-pos Err bitreich.org 70 i- #|:source (reify-source-note source)|#)))) Err bitreich.org 70 i- (defun unreify-source-note (source-note) Err bitreich.org 70 i- (when source-note Err bitreich.org 70 i- (destructuring-bind (&key filename start-pos end-pos source) source-note Err bitreich.org 70 i- (ccl::make-source-note :filename filename :start-pos start-pos :end-pos end-pos Err bitreich.org 70 i- :source (unreify-source-note source))))) Err bitreich.org 70 i- (defun unsymbolify-function-name (name) Err bitreich.org 70 i- (if-let (setfed (gethash name ccl::%setf-function-name-inverses%)) Err bitreich.org 70 i- `(setf ,setfed) Err bitreich.org 70 i- name)) Err bitreich.org 70 i- (defun symbolify-function-name (name) Err bitreich.org 70 i- (if (and (consp name) (eq (first name) 'setf)) Err bitreich.org 70 i- (let ((setfed (second name))) Err bitreich.org 70 i- (gethash setfed ccl::%setf-function-names%)) Err bitreich.org 70 i- name)) Err bitreich.org 70 i- (defun reify-function-name (function-name) Err bitreich.org 70 i- (let ((name (or (first function-name) ;; defun: extract the name Err bitreich.org 70 i- (let ((sec (second function-name))) Err bitreich.org 70 i- (or (and (atom sec) sec) ; scoped method: drop scope Err bitreich.org 70 i- (first sec)))))) ; method: keep gf name, drop method specializers Err bitreich.org 70 i- (list name))) Err bitreich.org 70 i- (defun unreify-function-name (function-name) Err bitreich.org 70 i- function-name) Err bitreich.org 70 i- (defun nullify-non-literals (sexp) Err bitreich.org 70 i- (typecase sexp Err bitreich.org 70 i- ((or number character simple-string symbol pathname) sexp) Err bitreich.org 70 i- (cons (cons (nullify-non-literals (car sexp)) Err bitreich.org 70 i- (nullify-non-literals (cdr sexp)))) Err bitreich.org 70 i- (t nil))) Err bitreich.org 70 i- (defun reify-deferred-warning (deferred-warning) Err bitreich.org 70 i- (with-accessors ((warning-type ccl::compiler-warning-warning-type) Err bitreich.org 70 i- (args ccl::compiler-warning-args) Err bitreich.org 70 i- (source-note ccl:compiler-warning-source-note) Err bitreich.org 70 i- (function-name ccl:compiler-warning-function-name)) deferred-warning Err bitreich.org 70 i- (list :warning-type warning-type :function-name (reify-function-name function-name) Err bitreich.org 70 i- :source-note (reify-source-note source-note) Err bitreich.org 70 i- :args (destructuring-bind (fun &rest more) Err bitreich.org 70 i- args Err bitreich.org 70 i- (cons (unsymbolify-function-name fun) Err bitreich.org 70 i- (nullify-non-literals more)))))) Err bitreich.org 70 i- (defun unreify-deferred-warning (reified-deferred-warning) Err bitreich.org 70 i- (destructuring-bind (&key warning-type function-name source-note args) Err bitreich.org 70 i- reified-deferred-warning Err bitreich.org 70 i- (make-condition (or (cdr (ccl::assq warning-type ccl::*compiler-whining-conditions*)) Err bitreich.org 70 i- 'ccl::compiler-warning) Err bitreich.org 70 i- :function-name (unreify-function-name function-name) Err bitreich.org 70 i- :source-note (unreify-source-note source-note) Err bitreich.org 70 i- :warning-type warning-type Err bitreich.org 70 i- :args (destructuring-bind (fun . more) args Err bitreich.org 70 i- (cons (symbolify-function-name fun) more)))))) Err bitreich.org 70 i- #+(or cmucl scl) Err bitreich.org 70 i- (defun reify-undefined-warning (warning) Err bitreich.org 70 i- ;; Extracting undefined-warnings from the compilation-unit Err bitreich.org 70 i- ;; To be passed through the above reify/unreify link, it must be a "simple-sexp" Err bitreich.org 70 i- (list* Err bitreich.org 70 i- (c::undefined-warning-kind warning) Err bitreich.org 70 i- (c::undefined-warning-name warning) Err bitreich.org 70 i- (c::undefined-warning-count warning) Err bitreich.org 70 i- (mapcar Err bitreich.org 70 i- #'(lambda (frob) Err bitreich.org 70 i- ;; the lexenv slot can be ignored for reporting purposes Err bitreich.org 70 i- `(:enclosing-source ,(c::compiler-error-context-enclosing-source frob) Err bitreich.org 70 i- :source ,(c::compiler-error-context-source frob) Err bitreich.org 70 i- :original-source ,(c::compiler-error-context-original-source frob) Err bitreich.org 70 i- :context ,(c::compiler-error-context-context frob) Err bitreich.org 70 i- :file-name ,(c::compiler-error-context-file-name frob) ; a pathname Err bitreich.org 70 i- :file-position ,(c::compiler-error-context-file-position frob) ; an integer Err bitreich.org 70 i- :original-source-path ,(c::compiler-error-context-original-source-path frob))) Err bitreich.org 70 i- (c::undefined-warning-warnings warning)))) Err bitreich.org 70 i- Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- (defun reify-undefined-warning (warning) Err bitreich.org 70 i- ;; Extracting undefined-warnings from the compilation-unit Err bitreich.org 70 i- ;; To be passed through the above reify/unreify link, it must be a "simple-sexp" Err bitreich.org 70 i- (list* Err bitreich.org 70 i- (sb-c::undefined-warning-kind warning) Err bitreich.org 70 i- (sb-c::undefined-warning-name warning) Err bitreich.org 70 i- (sb-c::undefined-warning-count warning) Err bitreich.org 70 i- (mapcar Err bitreich.org 70 i- #'(lambda (frob) Err bitreich.org 70 i- ;; the lexenv slot can be ignored for reporting purposes Err bitreich.org 70 i- `(:enclosing-source ,(sb-c::compiler-error-context-enclosing-source frob) Err bitreich.org 70 i- :source ,(sb-c::compiler-error-context-source frob) Err bitreich.org 70 i- :original-source ,(sb-c::compiler-error-context-original-source frob) Err bitreich.org 70 i- :context ,(sb-c::compiler-error-context-context frob) Err bitreich.org 70 i- :file-name ,(sb-c::compiler-error-context-file-name frob) ; a pathname Err bitreich.org 70 i- :file-position ,(sb-c::compiler-error-context-file-position frob) ; an integer Err bitreich.org 70 i- :original-source-path ,(sb-c::compiler-error-context-original-source-path frob))) Err bitreich.org 70 i- (sb-c::undefined-warning-warnings warning)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun reify-deferred-warnings () Err bitreich.org 70 i- "return a portable S-expression, portably readable and writeable in any Common Lisp implementation Err bitreich.org 70 i-using READ within a WITH-SAFE-IO-SYNTAX, that represents the warnings currently deferred by Err bitreich.org 70 i-WITH-COMPILATION-UNIT. One of three functions required for deferred-warnings support in ASDF." Err bitreich.org 70 i- #+allegro Err bitreich.org 70 i- (list :functions-defined excl::.functions-defined. Err bitreich.org 70 i- :functions-called excl::.functions-called.) Err bitreich.org 70 i- #+clozure Err bitreich.org 70 i- (mapcar 'reify-deferred-warning Err bitreich.org 70 i- (if-let (dw ccl::*outstanding-deferred-warnings*) Err bitreich.org 70 i- (let ((mdw (ccl::ensure-merged-deferred-warnings dw))) Err bitreich.org 70 i- (ccl::deferred-warnings.warnings mdw)))) Err bitreich.org 70 i- #+(or cmucl scl) Err bitreich.org 70 i- (when lisp::*in-compilation-unit* Err bitreich.org 70 i- ;; Try to send nothing through the pipe if nothing needs to be accumulated Err bitreich.org 70 i- `(,@(when c::*undefined-warnings* Err bitreich.org 70 i- `((c::*undefined-warnings* Err bitreich.org 70 i- ,@(mapcar #'reify-undefined-warning c::*undefined-warnings*)))) Err bitreich.org 70 i- ,@(loop :for what :in '(c::*compiler-error-count* Err bitreich.org 70 i- c::*compiler-warning-count* Err bitreich.org 70 i- c::*compiler-note-count*) Err bitreich.org 70 i- :for value = (symbol-value what) Err bitreich.org 70 i- :when (plusp value) Err bitreich.org 70 i- :collect `(,what . ,value)))) Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- (when sb-c::*in-compilation-unit* Err bitreich.org 70 i- ;; Try to send nothing through the pipe if nothing needs to be accumulated Err bitreich.org 70 i- `(,@(when sb-c::*undefined-warnings* Err bitreich.org 70 i- `((sb-c::*undefined-warnings* Err bitreich.org 70 i- ,@(mapcar #'reify-undefined-warning sb-c::*undefined-warnings*)))) Err bitreich.org 70 i- ,@(loop :for what :in '(sb-c::*aborted-compilation-unit-count* Err bitreich.org 70 i- sb-c::*compiler-error-count* Err bitreich.org 70 i- sb-c::*compiler-warning-count* Err bitreich.org 70 i- sb-c::*compiler-style-warning-count* Err bitreich.org 70 i- sb-c::*compiler-note-count*) Err bitreich.org 70 i- :for value = (symbol-value what) Err bitreich.org 70 i- :when (plusp value) Err bitreich.org 70 i- :collect `(,what . ,value))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun unreify-deferred-warnings (reified-deferred-warnings) Err bitreich.org 70 i- "given a S-expression created by REIFY-DEFERRED-WARNINGS, reinstantiate the corresponding Err bitreich.org 70 i-deferred warnings as to be handled at the end of the current WITH-COMPILATION-UNIT. Err bitreich.org 70 i-Handle any warning that has been resolved already, Err bitreich.org 70 i-such as an undefined function that has been defined since. Err bitreich.org 70 i-One of three functions required for deferred-warnings support in ASDF." Err bitreich.org 70 i- (declare (ignorable reified-deferred-warnings)) Err bitreich.org 70 i- #+allegro Err bitreich.org 70 i- (destructuring-bind (&key functions-defined functions-called) Err bitreich.org 70 i- reified-deferred-warnings Err bitreich.org 70 i- (setf excl::.functions-defined. Err bitreich.org 70 i- (append functions-defined excl::.functions-defined.) Err bitreich.org 70 i- excl::.functions-called. Err bitreich.org 70 i- (append functions-called excl::.functions-called.))) Err bitreich.org 70 i- #+clozure Err bitreich.org 70 i- (let ((dw (or ccl::*outstanding-deferred-warnings* Err bitreich.org 70 i- (setf ccl::*outstanding-deferred-warnings* (ccl::%defer-warnings t))))) Err bitreich.org 70 i- (appendf (ccl::deferred-warnings.warnings dw) Err bitreich.org 70 i- (mapcar 'unreify-deferred-warning reified-deferred-warnings))) Err bitreich.org 70 i- #+(or cmucl scl) Err bitreich.org 70 i- (dolist (item reified-deferred-warnings) Err bitreich.org 70 i- ;; Each item is (symbol . adjustment) where the adjustment depends on the symbol. Err bitreich.org 70 i- ;; For *undefined-warnings*, the adjustment is a list of initargs. Err bitreich.org 70 i- ;; For everything else, it's an integer. Err bitreich.org 70 i- (destructuring-bind (symbol . adjustment) item Err bitreich.org 70 i- (case symbol Err bitreich.org 70 i- ((c::*undefined-warnings*) Err bitreich.org 70 i- (setf c::*undefined-warnings* Err bitreich.org 70 i- (nconc (mapcan Err bitreich.org 70 i- #'(lambda (stuff) Err bitreich.org 70 i- (destructuring-bind (kind name count . rest) stuff Err bitreich.org 70 i- (unless (case kind (:function (fboundp name))) Err bitreich.org 70 i- (list Err bitreich.org 70 i- (c::make-undefined-warning Err bitreich.org 70 i- :name name Err bitreich.org 70 i- :kind kind Err bitreich.org 70 i- :count count Err bitreich.org 70 i- :warnings Err bitreich.org 70 i- (mapcar #'(lambda (x) Err bitreich.org 70 i- (apply #'c::make-compiler-error-context x)) Err bitreich.org 70 i- rest)))))) Err bitreich.org 70 i- adjustment) Err bitreich.org 70 i- c::*undefined-warnings*))) Err bitreich.org 70 i- (otherwise Err bitreich.org 70 i- (set symbol (+ (symbol-value symbol) adjustment)))))) Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- (dolist (item reified-deferred-warnings) Err bitreich.org 70 i- ;; Each item is (symbol . adjustment) where the adjustment depends on the symbol. Err bitreich.org 70 i- ;; For *undefined-warnings*, the adjustment is a list of initargs. Err bitreich.org 70 i- ;; For everything else, it's an integer. Err bitreich.org 70 i- (destructuring-bind (symbol . adjustment) item Err bitreich.org 70 i- (case symbol Err bitreich.org 70 i- ((sb-c::*undefined-warnings*) Err bitreich.org 70 i- (setf sb-c::*undefined-warnings* Err bitreich.org 70 i- (nconc (mapcan Err bitreich.org 70 i- #'(lambda (stuff) Err bitreich.org 70 i- (destructuring-bind (kind name count . rest) stuff Err bitreich.org 70 i- (unless (case kind (:function (fboundp name))) Err bitreich.org 70 i- (list Err bitreich.org 70 i- (sb-c::make-undefined-warning Err bitreich.org 70 i- :name name Err bitreich.org 70 i- :kind kind Err bitreich.org 70 i- :count count Err bitreich.org 70 i- :warnings Err bitreich.org 70 i- (mapcar #'(lambda (x) Err bitreich.org 70 i- (apply #'sb-c::make-compiler-error-context x)) Err bitreich.org 70 i- rest)))))) Err bitreich.org 70 i- adjustment) Err bitreich.org 70 i- sb-c::*undefined-warnings*))) Err bitreich.org 70 i- (otherwise Err bitreich.org 70 i- (set symbol (+ (symbol-value symbol) adjustment))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun reset-deferred-warnings () Err bitreich.org 70 i- "Reset the set of deferred warnings to be handled at the end of the current WITH-COMPILATION-UNIT. Err bitreich.org 70 i-One of three functions required for deferred-warnings support in ASDF." Err bitreich.org 70 i- #+allegro Err bitreich.org 70 i- (setf excl::.functions-defined. nil Err bitreich.org 70 i- excl::.functions-called. nil) Err bitreich.org 70 i- #+clozure Err bitreich.org 70 i- (if-let (dw ccl::*outstanding-deferred-warnings*) Err bitreich.org 70 i- (let ((mdw (ccl::ensure-merged-deferred-warnings dw))) Err bitreich.org 70 i- (setf (ccl::deferred-warnings.warnings mdw) nil))) Err bitreich.org 70 i- #+(or cmucl scl) Err bitreich.org 70 i- (when lisp::*in-compilation-unit* Err bitreich.org 70 i- (setf c::*undefined-warnings* nil Err bitreich.org 70 i- c::*compiler-error-count* 0 Err bitreich.org 70 i- c::*compiler-warning-count* 0 Err bitreich.org 70 i- c::*compiler-note-count* 0)) Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- (when sb-c::*in-compilation-unit* Err bitreich.org 70 i- (setf sb-c::*undefined-warnings* nil Err bitreich.org 70 i- sb-c::*aborted-compilation-unit-count* 0 Err bitreich.org 70 i- sb-c::*compiler-error-count* 0 Err bitreich.org 70 i- sb-c::*compiler-warning-count* 0 Err bitreich.org 70 i- sb-c::*compiler-style-warning-count* 0 Err bitreich.org 70 i- sb-c::*compiler-note-count* 0))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun save-deferred-warnings (warnings-file) Err bitreich.org 70 i- "Save forward reference conditions so they may be issued at a latter time, Err bitreich.org 70 i-possibly in a different process." Err bitreich.org 70 i- (with-open-file (s warnings-file :direction :output :if-exists :supersede Err bitreich.org 70 i- :element-type *default-stream-element-type* Err bitreich.org 70 i- :external-format *utf-8-external-format*) Err bitreich.org 70 i- (with-safe-io-syntax () Err bitreich.org 70 i- (let ((*read-eval* t)) Err bitreich.org 70 i- (write (reify-deferred-warnings) :stream s :pretty t :readably t)) Err bitreich.org 70 i- (terpri s)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun warnings-file-type (&optional implementation-type) Err bitreich.org 70 i- "The pathname type for warnings files on given IMPLEMENTATION-TYPE, Err bitreich.org 70 i-where NIL designates the current one" Err bitreich.org 70 i- (case (or implementation-type *implementation-type*) Err bitreich.org 70 i- ((:acl :allegro) "allegro-warnings") Err bitreich.org 70 i- ;;((:clisp) "clisp-warnings") Err bitreich.org 70 i- ((:cmu :cmucl) "cmucl-warnings") Err bitreich.org 70 i- ((:sbcl) "sbcl-warnings") Err bitreich.org 70 i- ((:clozure :ccl) "ccl-warnings") Err bitreich.org 70 i- ((:scl) "scl-warnings"))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defvar *warnings-file-type* nil Err bitreich.org 70 i- "Pathname type for warnings files, or NIL if disabled") Err bitreich.org 70 i- Err bitreich.org 70 i- (defun enable-deferred-warnings-check () Err bitreich.org 70 i- "Enable the saving of deferred warnings" Err bitreich.org 70 i- (setf *warnings-file-type* (warnings-file-type))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun disable-deferred-warnings-check () Err bitreich.org 70 i- "Disable the saving of deferred warnings" Err bitreich.org 70 i- (setf *warnings-file-type* nil)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun warnings-file-p (file &optional implementation-type) Err bitreich.org 70 i- "Is FILE a saved warnings file for the given IMPLEMENTATION-TYPE? Err bitreich.org 70 i-If that given type is NIL, use the currently configured *WARNINGS-FILE-TYPE* instead." Err bitreich.org 70 i- (if-let (type (if implementation-type Err bitreich.org 70 i- (warnings-file-type implementation-type) Err bitreich.org 70 i- *warnings-file-type*)) Err bitreich.org 70 i- (equal (pathname-type file) type))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun check-deferred-warnings (files &optional context-format context-arguments) Err bitreich.org 70 i- "Given a list of FILES containing deferred warnings saved by CALL-WITH-SAVED-DEFERRED-WARNINGS, Err bitreich.org 70 i-re-intern and raise any warnings that are still meaningful." Err bitreich.org 70 i- (let ((file-errors nil) Err bitreich.org 70 i- (failure-p nil) Err bitreich.org 70 i- (warnings-p nil)) Err bitreich.org 70 i- (handler-bind Err bitreich.org 70 i- ((warning #'(lambda (c) Err bitreich.org 70 i- (setf warnings-p t) Err bitreich.org 70 i- (unless (typep c 'style-warning) Err bitreich.org 70 i- (setf failure-p t))))) Err bitreich.org 70 i- (with-compilation-unit (:override t) Err bitreich.org 70 i- (reset-deferred-warnings) Err bitreich.org 70 i- (dolist (file files) Err bitreich.org 70 i- (unreify-deferred-warnings Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (with-safe-io-syntax () Err bitreich.org 70 i- (let ((*read-eval* t)) Err bitreich.org 70 i- (read-file-form file))) Err bitreich.org 70 i- (error (c) Err bitreich.org 70 i- ;;(delete-file-if-exists file) ;; deleting forces rebuild but prevents debugging Err bitreich.org 70 i- (push c file-errors) Err bitreich.org 70 i- nil)))))) Err bitreich.org 70 i- (dolist (error file-errors) (error error)) Err bitreich.org 70 i- (check-lisp-compile-warnings Err bitreich.org 70 i- (or failure-p warnings-p) failure-p context-format context-arguments))) Err bitreich.org 70 i- Err bitreich.org 70 i- #| Err bitreich.org 70 i- Mini-guide to adding support for deferred warnings on an implementation. Err bitreich.org 70 i- Err bitreich.org 70 i- First, look at what such a warning looks like: Err bitreich.org 70 i- Err bitreich.org 70 i- (describe Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (and (eval '(lambda () (some-undefined-function))) nil) Err bitreich.org 70 i- (t (c) c))) Err bitreich.org 70 i- Err bitreich.org 70 i- Then you can grep for the condition type in your compiler sources Err bitreich.org 70 i- and see how to catch those that have been deferred, Err bitreich.org 70 i- and/or read, clear and restore the deferred list. Err bitreich.org 70 i- Err bitreich.org 70 i- Also look at Err bitreich.org 70 i- (macroexpand-1 '(with-compilation-unit () foo)) Err bitreich.org 70 i- |# Err bitreich.org 70 i- Err bitreich.org 70 i- (defun call-with-saved-deferred-warnings (thunk warnings-file &key source-namestring) Err bitreich.org 70 i- "If WARNINGS-FILE is not nil, record the deferred-warnings around a call to THUNK Err bitreich.org 70 i-and save those warnings to the given file for latter use, Err bitreich.org 70 i-possibly in a different process. Otherwise just call THUNK." Err bitreich.org 70 i- (declare (ignorable source-namestring)) Err bitreich.org 70 i- (if warnings-file Err bitreich.org 70 i- (with-compilation-unit (:override t #+sbcl :source-namestring #+sbcl source-namestring) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (let (#+sbcl (sb-c::*undefined-warnings* nil)) Err bitreich.org 70 i- (multiple-value-prog1 Err bitreich.org 70 i- (funcall thunk) Err bitreich.org 70 i- (save-deferred-warnings warnings-file))) Err bitreich.org 70 i- (reset-deferred-warnings))) Err bitreich.org 70 i- (funcall thunk))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmacro with-saved-deferred-warnings ((warnings-file &key source-namestring) &body body) Err bitreich.org 70 i- "Trivial syntax for CALL-WITH-SAVED-DEFERRED-WARNINGS" Err bitreich.org 70 i- `(call-with-saved-deferred-warnings Err bitreich.org 70 i- #'(lambda () ,@body) ,warnings-file :source-namestring ,source-namestring))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; from ASDF Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun current-lisp-file-pathname () Err bitreich.org 70 i- "Portably return the PATHNAME of the current Lisp source file being compiled or loaded" Err bitreich.org 70 i- (or *compile-file-pathname* *load-pathname*)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun load-pathname () Err bitreich.org 70 i- "Portably return the LOAD-PATHNAME of the current source file or fasl" Err bitreich.org 70 i- *load-pathname*) ;; magic no longer needed for GCL. Err bitreich.org 70 i- Err bitreich.org 70 i- (defun lispize-pathname (input-file) Err bitreich.org 70 i- "From a INPUT-FILE pathname, return a corresponding .lisp source pathname" Err bitreich.org 70 i- (make-pathname :type "lisp" :defaults input-file)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun compile-file-type (&rest keys) Err bitreich.org 70 i- "pathname TYPE for lisp FASt Loading files" Err bitreich.org 70 i- (declare (ignorable keys)) Err bitreich.org 70 i- #-(or clasp ecl mkcl) (load-time-value (pathname-type (compile-file-pathname "foo.lisp"))) Err bitreich.org 70 i- #+(or clasp ecl mkcl) (pathname-type (apply 'compile-file-pathname "foo" keys))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun call-around-hook (hook function) Err bitreich.org 70 i- "Call a HOOK around the execution of FUNCTION" Err bitreich.org 70 i- (call-function (or hook 'funcall) function)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun compile-file-pathname* (input-file &rest keys &key output-file &allow-other-keys) Err bitreich.org 70 i- "Variant of COMPILE-FILE-PATHNAME that works well with COMPILE-FILE*" Err bitreich.org 70 i- (let* ((keys Err bitreich.org 70 i- (remove-plist-keys `(#+(or (and allegro (not (version>= 8 2)))) :external-format Err bitreich.org 70 i- ,@(unless output-file '(:output-file))) keys))) Err bitreich.org 70 i- (if (absolute-pathname-p output-file) Err bitreich.org 70 i- ;; what cfp should be doing, w/ mp* instead of mp Err bitreich.org 70 i- (let* ((type (pathname-type (apply 'compile-file-type keys))) Err bitreich.org 70 i- (defaults (make-pathname Err bitreich.org 70 i- :type type :defaults (merge-pathnames* input-file)))) Err bitreich.org 70 i- (merge-pathnames* output-file defaults)) Err bitreich.org 70 i- (funcall *output-translation-function* Err bitreich.org 70 i- (apply 'compile-file-pathname input-file keys))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defvar *compile-check* nil Err bitreich.org 70 i- "A hook for user-defined compile-time invariants") Err bitreich.org 70 i- Err bitreich.org 70 i- (defun* (compile-file*) (input-file &rest keys Err bitreich.org 70 i- &key (compile-check *compile-check*) output-file warnings-file Err bitreich.org 70 i- #+clisp lib-file #+(or clasp ecl mkcl) object-file #+sbcl emit-cfasl Err bitreich.org 70 i- &allow-other-keys) Err bitreich.org 70 i- "This function provides a portable wrapper around COMPILE-FILE. Err bitreich.org 70 i-It ensures that the OUTPUT-FILE value is only returned and Err bitreich.org 70 i-the file only actually created if the compilation was successful, Err bitreich.org 70 i-even though your implementation may not do that. It also checks an optional Err bitreich.org 70 i-user-provided consistency function COMPILE-CHECK to determine success; Err bitreich.org 70 i-it will call this function if not NIL at the end of the compilation Err bitreich.org 70 i-with the arguments sent to COMPILE-FILE*, except with :OUTPUT-FILE TMP-FILE Err bitreich.org 70 i-where TMP-FILE is the name of a temporary output-file. Err bitreich.org 70 i-It also checks two flags (with legacy british spelling from ASDF1), Err bitreich.org 70 i-*COMPILE-FILE-FAILURE-BEHAVIOUR* and *COMPILE-FILE-WARNINGS-BEHAVIOUR* Err bitreich.org 70 i-with appropriate implementation-dependent defaults, Err bitreich.org 70 i-and if a failure (respectively warnings) are reported by COMPILE-FILE, Err bitreich.org 70 i-it will consider that an error unless the respective behaviour flag Err bitreich.org 70 i-is one of :SUCCESS :WARN :IGNORE. Err bitreich.org 70 i-If WARNINGS-FILE is defined, deferred warnings are saved to that file. Err bitreich.org 70 i-On ECL or MKCL, it creates both the linkable object and loadable fasl files. Err bitreich.org 70 i-On implementations that erroneously do not recognize standard keyword arguments, Err bitreich.org 70 i-it will filter them appropriately." Err bitreich.org 70 i- #+(or clasp ecl) Err bitreich.org 70 i- (when (and object-file (equal (compile-file-type) (pathname object-file))) Err bitreich.org 70 i- (format t "Whoa, some funky ASDF upgrade switched ~S calling convention for ~S and ~S~%" Err bitreich.org 70 i- 'compile-file* output-file object-file) Err bitreich.org 70 i- (rotatef output-file object-file)) Err bitreich.org 70 i- (let* ((keywords (remove-plist-keys Err bitreich.org 70 i- `(:output-file :compile-check :warnings-file Err bitreich.org 70 i- #+clisp :lib-file #+(or clasp ecl mkcl) :object-file) keys)) Err bitreich.org 70 i- (output-file Err bitreich.org 70 i- (or output-file Err bitreich.org 70 i- (apply 'compile-file-pathname* input-file :output-file output-file keywords))) Err bitreich.org 70 i- (physical-output-file (physicalize-pathname output-file)) Err bitreich.org 70 i- #+(or clasp ecl) Err bitreich.org 70 i- (object-file Err bitreich.org 70 i- (unless (use-ecl-byte-compiler-p) Err bitreich.org 70 i- (or object-file Err bitreich.org 70 i- #+ecl (compile-file-pathname output-file :type :object) Err bitreich.org 70 i- #+clasp (compile-file-pathname output-file :output-type :object)))) Err bitreich.org 70 i- #+mkcl Err bitreich.org 70 i- (object-file Err bitreich.org 70 i- (or object-file Err bitreich.org 70 i- (compile-file-pathname output-file :fasl-p nil))) Err bitreich.org 70 i- (tmp-file (tmpize-pathname physical-output-file)) Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- (cfasl-file (etypecase emit-cfasl Err bitreich.org 70 i- (null nil) Err bitreich.org 70 i- ((eql t) (make-pathname :type "cfasl" :defaults physical-output-file)) Err bitreich.org 70 i- (string (parse-namestring emit-cfasl)) Err bitreich.org 70 i- (pathname emit-cfasl))) Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- (tmp-cfasl (when cfasl-file (make-pathname :type "cfasl" :defaults tmp-file))) Err bitreich.org 70 i- #+clisp Err bitreich.org 70 i- (tmp-lib (make-pathname :type "lib" :defaults tmp-file))) Err bitreich.org 70 i- (multiple-value-bind (output-truename warnings-p failure-p) Err bitreich.org 70 i- (with-enough-pathname (input-file :defaults *base-build-directory*) Err bitreich.org 70 i- (with-saved-deferred-warnings (warnings-file :source-namestring (namestring input-file)) Err bitreich.org 70 i- (with-muffled-compiler-conditions () Err bitreich.org 70 i- (or #-(or clasp ecl mkcl) Err bitreich.org 70 i- (apply 'compile-file input-file :output-file tmp-file Err bitreich.org 70 i- #+sbcl (if emit-cfasl (list* :emit-cfasl tmp-cfasl keywords) keywords) Err bitreich.org 70 i- #-sbcl keywords) Err bitreich.org 70 i- #+ecl (apply 'compile-file input-file :output-file Err bitreich.org 70 i- (if object-file Err bitreich.org 70 i- (list* object-file :system-p t keywords) Err bitreich.org 70 i- (list* tmp-file keywords))) Err bitreich.org 70 i- #+clasp (apply 'compile-file input-file :output-file Err bitreich.org 70 i- (if object-file Err bitreich.org 70 i- (list* object-file :output-type :object #|:system-p t|# keywords) Err bitreich.org 70 i- (list* tmp-file keywords))) Err bitreich.org 70 i- #+mkcl (apply 'compile-file input-file Err bitreich.org 70 i- :output-file object-file :fasl-p nil keywords))))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((and output-truename Err bitreich.org 70 i- (flet ((check-flag (flag behaviour) Err bitreich.org 70 i- (or (not flag) (member behaviour '(:success :warn :ignore))))) Err bitreich.org 70 i- (and (check-flag failure-p *compile-file-failure-behaviour*) Err bitreich.org 70 i- (check-flag warnings-p *compile-file-warnings-behaviour*))) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- #+(or clasp ecl mkcl) Err bitreich.org 70 i- (when (and #+(or clasp ecl) object-file) Err bitreich.org 70 i- (setf output-truename Err bitreich.org 70 i- (compiler::build-fasl tmp-file Err bitreich.org 70 i- #+(or clasp ecl) :lisp-files #+mkcl :lisp-object-files (list object-file)))) Err bitreich.org 70 i- (or (not compile-check) Err bitreich.org 70 i- (apply compile-check input-file Err bitreich.org 70 i- :output-file output-truename Err bitreich.org 70 i- keywords)))) Err bitreich.org 70 i- (delete-file-if-exists physical-output-file) Err bitreich.org 70 i- (when output-truename Err bitreich.org 70 i- #+clasp (when output-truename (rename-file-overwriting-target tmp-file output-truename)) Err bitreich.org 70 i- ;; see CLISP bug 677 Err bitreich.org 70 i- #+clisp Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (setf tmp-lib (make-pathname :type "lib" :defaults output-truename)) Err bitreich.org 70 i- (unless lib-file (setf lib-file (make-pathname :type "lib" :defaults physical-output-file))) Err bitreich.org 70 i- (rename-file-overwriting-target tmp-lib lib-file)) Err bitreich.org 70 i- #+sbcl (when cfasl-file (rename-file-overwriting-target tmp-cfasl cfasl-file)) Err bitreich.org 70 i- (rename-file-overwriting-target output-truename physical-output-file) Err bitreich.org 70 i- (setf output-truename (truename physical-output-file))) Err bitreich.org 70 i- #+clasp (delete-file-if-exists tmp-file) Err bitreich.org 70 i- #+clisp (progn (delete-file-if-exists tmp-file) ;; this one works around clisp BUG 677 Err bitreich.org 70 i- (delete-file-if-exists tmp-lib))) ;; this one is "normal" defensive cleanup Err bitreich.org 70 i- (t ;; error or failed check Err bitreich.org 70 i- (delete-file-if-exists output-truename) Err bitreich.org 70 i- #+clisp (delete-file-if-exists tmp-lib) Err bitreich.org 70 i- #+sbcl (delete-file-if-exists tmp-cfasl) Err bitreich.org 70 i- (setf output-truename nil))) Err bitreich.org 70 i- (values output-truename warnings-p failure-p)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun load* (x &rest keys &key &allow-other-keys) Err bitreich.org 70 i- "Portable wrapper around LOAD that properly handles loading from a stream." Err bitreich.org 70 i- (with-muffled-loader-conditions () Err bitreich.org 70 i- (etypecase x Err bitreich.org 70 i- ((or pathname string #-(or allegro clozure genera) stream #+clozure file-stream) Err bitreich.org 70 i- (apply 'load x keys)) Err bitreich.org 70 i- ;; Genera can't load from a string-input-stream Err bitreich.org 70 i- ;; ClozureCL 1.6 can only load from file input stream Err bitreich.org 70 i- ;; Allegro 5, I don't remember but it must have been broken when I tested. Err bitreich.org 70 i- #+(or allegro clozure genera) Err bitreich.org 70 i- (stream ;; make do this way Err bitreich.org 70 i- (let ((*package* *package*) Err bitreich.org 70 i- (*readtable* *readtable*) Err bitreich.org 70 i- (*load-pathname* nil) Err bitreich.org 70 i- (*load-truename* nil)) Err bitreich.org 70 i- (eval-input x)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun load-from-string (string) Err bitreich.org 70 i- "Portably read and evaluate forms from a STRING." Err bitreich.org 70 i- (with-input-from-string (s string) (load* s)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Links FASLs together Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun combine-fasls (inputs output) Err bitreich.org 70 i- "Combine a list of FASLs INPUTS into a single FASL OUTPUT" Err bitreich.org 70 i- #-(or abcl allegro clisp clozure cmucl lispworks sbcl scl xcl) Err bitreich.org 70 i- (not-implemented-error 'combine-fasls "~%inputs: ~S~%output: ~S" inputs output) Err bitreich.org 70 i- #+abcl (funcall 'sys::concatenate-fasls inputs output) ; requires ABCL 1.2.0 Err bitreich.org 70 i- #+(or allegro clisp cmucl sbcl scl xcl) (concatenate-files inputs output) Err bitreich.org 70 i- #+clozure (ccl:fasl-concatenate output inputs :if-exists :supersede) Err bitreich.org 70 i- #+lispworks Err bitreich.org 70 i- (let (fasls) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (loop :for i :in inputs Err bitreich.org 70 i- :for n :from 1 Err bitreich.org 70 i- :for f = (add-pathname-suffix Err bitreich.org 70 i- output (format nil "-FASL~D" n)) Err bitreich.org 70 i- :do (copy-file i f) Err bitreich.org 70 i- (push f fasls)) Err bitreich.org 70 i- (ignore-errors (lispworks:delete-system :fasls-to-concatenate)) Err bitreich.org 70 i- (eval `(scm:defsystem :fasls-to-concatenate Err bitreich.org 70 i- (:default-pathname ,(pathname-directory-pathname output)) Err bitreich.org 70 i- :members Err bitreich.org 70 i- ,(loop :for f :in (reverse fasls) Err bitreich.org 70 i- :collect `(,(namestring f) :load-only t)))) Err bitreich.org 70 i- (scm:concatenate-system output :fasls-to-concatenate :force t)) Err bitreich.org 70 i- (loop :for f :in fasls :do (ignore-errors (delete-file f))) Err bitreich.org 70 i- (ignore-errors (lispworks:delete-system :fasls-to-concatenate)))))) Err bitreich.org 70 1diff --git a/3rdparties/software/uiop-3.3.2/os.lisp b/3rdparties/software/uiop-3.3.2/os.lisp /scm/clic/file/3rdparties/software/uiop-3.3.2/os.lisp.gph bitreich.org 70 i@@ -1,403 +0,0 @@ Err bitreich.org 70 i-;;;; --------------------------------------------------------------------------- Err bitreich.org 70 i-;;;; Access to the Operating System Err bitreich.org 70 i- Err bitreich.org 70 i-(uiop/package:define-package :uiop/os Err bitreich.org 70 i- (:use :uiop/common-lisp :uiop/package :uiop/utility) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- #:featurep #:os-unix-p #:os-macosx-p #:os-windows-p #:os-genera-p #:detect-os ;; features Err bitreich.org 70 i- #:os-cond Err bitreich.org 70 i- #:getenv #:getenvp ;; environment variables Err bitreich.org 70 i- #:implementation-identifier ;; implementation identifier Err bitreich.org 70 i- #:implementation-type #:*implementation-type* Err bitreich.org 70 i- #:operating-system #:architecture #:lisp-version-string Err bitreich.org 70 i- #:hostname #:getcwd #:chdir Err bitreich.org 70 i- ;; Windows shortcut support Err bitreich.org 70 i- #:read-null-terminated-string #:read-little-endian Err bitreich.org 70 i- #:parse-file-location-info #:parse-windows-shortcut)) Err bitreich.org 70 i-(in-package :uiop/os) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Features Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun featurep (x &optional (*features* *features*)) Err bitreich.org 70 i- "Checks whether a feature expression X is true with respect to the *FEATURES* set, Err bitreich.org 70 i-as per the CLHS standard for #+ and #-. Beware that just like the CLHS, Err bitreich.org 70 i-we assume symbols from the KEYWORD package are used, but that unless you're using #+/#- Err bitreich.org 70 i-your reader will not have magically used the KEYWORD package, so you need specify Err bitreich.org 70 i-keywords explicitly." Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((atom x) (and (member x *features*) t)) Err bitreich.org 70 i- ((eq :not (car x)) (assert (null (cddr x))) (not (featurep (cadr x)))) Err bitreich.org 70 i- ((eq :or (car x)) (some #'featurep (cdr x))) Err bitreich.org 70 i- ((eq :and (car x)) (every #'featurep (cdr x))) Err bitreich.org 70 i- (t (parameter-error "~S: malformed feature specification ~S" 'featurep x)))) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Starting with UIOP 3.1.5, these are runtime tests. Err bitreich.org 70 i- ;; You may bind *features* with a copy of what your target system offers to test its properties. Err bitreich.org 70 i- (defun os-macosx-p () Err bitreich.org 70 i- "Is the underlying operating system MacOS X?" Err bitreich.org 70 i- ;; OS-MACOSX is not mutually exclusive with OS-UNIX, Err bitreich.org 70 i- ;; in fact the former implies the latter. Err bitreich.org 70 i- (featurep '(:or :darwin (:and :allegro :macosx) (:and :clisp :macos)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun os-unix-p () Err bitreich.org 70 i- "Is the underlying operating system some Unix variant?" Err bitreich.org 70 i- (or (featurep '(:or :unix :cygwin)) (os-macosx-p))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun os-windows-p () Err bitreich.org 70 i- "Is the underlying operating system Microsoft Windows?" Err bitreich.org 70 i- (and (not (os-unix-p)) (featurep '(:or :win32 :windows :mswindows :mingw32 :mingw64)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun os-genera-p () Err bitreich.org 70 i- "Is the underlying operating system Genera (running on a Symbolics Lisp Machine)?" Err bitreich.org 70 i- (featurep :genera)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun os-oldmac-p () Err bitreich.org 70 i- "Is the underlying operating system an (emulated?) MacOS 9 or earlier?" Err bitreich.org 70 i- (featurep :mcl)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun os-haiku-p () Err bitreich.org 70 i- "Is the underlying operating system Haiku?" Err bitreich.org 70 i- (featurep :haiku)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun os-mezzano-p () Err bitreich.org 70 i- "Is the underlying operating system Mezzano?" Err bitreich.org 70 i- (featurep :mezzano)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun detect-os () Err bitreich.org 70 i- "Detects the current operating system. Only needs be run at compile-time, Err bitreich.org 70 i-except on ABCL where it might change between FASL compilation and runtime." Err bitreich.org 70 i- (loop* :with o Err bitreich.org 70 i- :for (feature . detect) :in '((:os-unix . os-unix-p) (:os-macosx . os-macosx-p) Err bitreich.org 70 i- (:os-windows . os-windows-p) Err bitreich.org 70 i- (:genera . os-genera-p) (:os-oldmac . os-oldmac-p) Err bitreich.org 70 i- (:haiku . os-haiku-p) Err bitreich.org 70 i- (:mezzano . os-mezzano-p)) Err bitreich.org 70 i- :when (and (or (not o) (eq feature :os-macosx)) (funcall detect)) Err bitreich.org 70 i- :do (setf o feature) (pushnew feature *features*) Err bitreich.org 70 i- :else :do (setf *features* (remove feature *features*)) Err bitreich.org 70 i- :finally Err bitreich.org 70 i- (return (or o (error "Congratulations for trying ASDF on an operating system~%~ Err bitreich.org 70 i-that is neither Unix, nor Windows, nor Genera, nor even old MacOS.~%Now you port it."))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmacro os-cond (&rest clauses) Err bitreich.org 70 i- #+abcl `(cond ,@clauses) Err bitreich.org 70 i- #-abcl (loop* :for (test . body) :in clauses :when (eval test) :return `(progn ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i- (detect-os)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Environment variables: getting them, and parsing them. Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun getenv (x) Err bitreich.org 70 i- "Query the environment, as in C getenv. Err bitreich.org 70 i-Beware: may return empty string if a variable is present but empty; Err bitreich.org 70 i-use getenvp to return NIL in such a case." Err bitreich.org 70 i- (declare (ignorable x)) Err bitreich.org 70 i- #+(or abcl clasp clisp ecl xcl) (ext:getenv x) Err bitreich.org 70 i- #+allegro (sys:getenv x) Err bitreich.org 70 i- #+clozure (ccl:getenv x) Err bitreich.org 70 i- #+cmucl (unix:unix-getenv x) Err bitreich.org 70 i- #+scl (cdr (assoc x ext:*environment-list* :test #'string=)) Err bitreich.org 70 i- #+cormanlisp Err bitreich.org 70 i- (let* ((buffer (ct:malloc 1)) Err bitreich.org 70 i- (cname (ct:lisp-string-to-c-string x)) Err bitreich.org 70 i- (needed-size (win:getenvironmentvariable cname buffer 0)) Err bitreich.org 70 i- (buffer1 (ct:malloc (1+ needed-size)))) Err bitreich.org 70 i- (prog1 (if (zerop (win:getenvironmentvariable cname buffer1 needed-size)) Err bitreich.org 70 i- nil Err bitreich.org 70 i- (ct:c-string-to-lisp-string buffer1)) Err bitreich.org 70 i- (ct:free buffer) Err bitreich.org 70 i- (ct:free buffer1))) Err bitreich.org 70 i- #+gcl (system:getenv x) Err bitreich.org 70 i- #+(or genera mezzano) nil Err bitreich.org 70 i- #+lispworks (lispworks:environment-variable x) Err bitreich.org 70 i- #+mcl (ccl:with-cstrs ((name x)) Err bitreich.org 70 i- (let ((value (_getenv name))) Err bitreich.org 70 i- (unless (ccl:%null-ptr-p value) Err bitreich.org 70 i- (ccl:%get-cstring value)))) Err bitreich.org 70 i- #+mkcl (#.(or (find-symbol* 'getenv :si nil) (find-symbol* 'getenv :mk-ext nil)) x) Err bitreich.org 70 i- #+sbcl (sb-ext:posix-getenv x) Err bitreich.org 70 i- #-(or abcl allegro clasp clisp clozure cmucl cormanlisp ecl gcl genera lispworks mcl mezzano mkcl sbcl scl xcl) Err bitreich.org 70 i- (not-implemented-error 'getenv)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defsetf getenv (x) (val) Err bitreich.org 70 i- "Set an environment variable." Err bitreich.org 70 i- (declare (ignorable x val)) Err bitreich.org 70 i- #+allegro `(setf (sys:getenv ,x) ,val) Err bitreich.org 70 i- #+clisp `(system::setenv ,x ,val) Err bitreich.org 70 i- #+clozure `(ccl:setenv ,x ,val) Err bitreich.org 70 i- #+cmucl `(unix:unix-setenv ,x ,val 1) Err bitreich.org 70 i- #+ecl `(ext:setenv ,x ,val) Err bitreich.org 70 i- #+lispworks `(hcl:setenv ,x ,val) Err bitreich.org 70 i- #+mkcl `(mkcl:setenv ,x ,val) Err bitreich.org 70 i- #+sbcl `(progn (require :sb-posix) (symbol-call :sb-posix :setenv ,x ,val 1)) Err bitreich.org 70 i- #-(or allegro clisp clozure cmucl ecl lispworks mkcl sbcl) Err bitreich.org 70 i- '(not-implemented-error '(setf getenv))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun getenvp (x) Err bitreich.org 70 i- "Predicate that is true if the named variable is present in the libc environment, Err bitreich.org 70 i-then returning the non-empty string value of the variable" Err bitreich.org 70 i- (let ((g (getenv x))) (and (not (emptyp g)) g)))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; implementation-identifier Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; produce a string to identify current implementation. Err bitreich.org 70 i-;; Initially stolen from SLIME's SWANK, completely rewritten since. Err bitreich.org 70 i-;; We're back to runtime checking, for the sake of e.g. ABCL. Err bitreich.org 70 i- Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun first-feature (feature-sets) Err bitreich.org 70 i- "A helper for various feature detection functions" Err bitreich.org 70 i- (dolist (x feature-sets) Err bitreich.org 70 i- (multiple-value-bind (short long feature-expr) Err bitreich.org 70 i- (if (consp x) Err bitreich.org 70 i- (values (first x) (second x) (cons :or (rest x))) Err bitreich.org 70 i- (values x x x)) Err bitreich.org 70 i- (when (featurep feature-expr) Err bitreich.org 70 i- (return (values short long)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun implementation-type () Err bitreich.org 70 i- "The type of Lisp implementation used, as a short UIOP-standardized keyword" Err bitreich.org 70 i- (first-feature Err bitreich.org 70 i- '(:abcl (:acl :allegro) (:ccl :clozure) :clisp (:corman :cormanlisp) Err bitreich.org 70 i- (:cmu :cmucl :cmu) :clasp :ecl :gcl Err bitreich.org 70 i- (:lwpe :lispworks-personal-edition) (:lw :lispworks) Err bitreich.org 70 i- :mcl :mezzano :mkcl :sbcl :scl (:smbx :symbolics) :xcl))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defvar *implementation-type* (implementation-type) Err bitreich.org 70 i- "The type of Lisp implementation used, as a short UIOP-standardized keyword") Err bitreich.org 70 i- Err bitreich.org 70 i- (defun operating-system () Err bitreich.org 70 i- "The operating system of the current host" Err bitreich.org 70 i- (first-feature Err bitreich.org 70 i- '(:cygwin Err bitreich.org 70 i- (:win :windows :mswindows :win32 :mingw32) ;; try cygwin first! Err bitreich.org 70 i- (:linux :linux :linux-target) ;; for GCL at least, must appear before :bsd Err bitreich.org 70 i- (:macosx :macosx :darwin :darwin-target :apple) ; also before :bsd Err bitreich.org 70 i- (:solaris :solaris :sunos) Err bitreich.org 70 i- (:bsd :bsd :freebsd :netbsd :openbsd :dragonfly) Err bitreich.org 70 i- :unix Err bitreich.org 70 i- :genera Err bitreich.org 70 i- :mezzano))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun architecture () Err bitreich.org 70 i- "The CPU architecture of the current host" Err bitreich.org 70 i- (first-feature Err bitreich.org 70 i- '((:x64 :x86-64 :x86_64 :x8664-target :amd64 (:and :word-size=64 :pc386)) Err bitreich.org 70 i- (:x86 :x86 :i386 :i486 :i586 :i686 :pentium3 :pentium4 :pc386 :iapx386 :x8632-target) Err bitreich.org 70 i- (:ppc64 :ppc64 :ppc64-target) (:ppc32 :ppc32 :ppc32-target :ppc :powerpc) Err bitreich.org 70 i- :hppa64 :hppa :sparc64 (:sparc32 :sparc32 :sparc) Err bitreich.org 70 i- :mipsel :mipseb :mips :alpha (:arm :arm :arm-target) :imach Err bitreich.org 70 i- ;; Java comes last: if someone uses C via CFFI or otherwise JNA or JNI, Err bitreich.org 70 i- ;; we may have to segregate the code still by architecture. Err bitreich.org 70 i- (:java :java :java-1.4 :java-1.5 :java-1.6 :java-1.7)))) Err bitreich.org 70 i- Err bitreich.org 70 i- #+clozure Err bitreich.org 70 i- (defun ccl-fasl-version () Err bitreich.org 70 i- ;; the fasl version is target-dependent from CCL 1.8 on. Err bitreich.org 70 i- (or (let ((s 'ccl::target-fasl-version)) Err bitreich.org 70 i- (and (fboundp s) (funcall s))) Err bitreich.org 70 i- (and (boundp 'ccl::fasl-version) Err bitreich.org 70 i- (symbol-value 'ccl::fasl-version)) Err bitreich.org 70 i- (error "Can't determine fasl version."))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun lisp-version-string () Err bitreich.org 70 i- "return a string that identifies the current Lisp implementation version" Err bitreich.org 70 i- (let ((s (lisp-implementation-version))) Err bitreich.org 70 i- (car ; as opposed to OR, this idiom prevents some unreachable code warning Err bitreich.org 70 i- (list Err bitreich.org 70 i- #+allegro Err bitreich.org 70 i- (format nil "~A~@[~A~]~@[~A~]~@[~A~]" Err bitreich.org 70 i- excl::*common-lisp-version-number* Err bitreich.org 70 i- ;; M means "modern", as opposed to ANSI-compatible mode (which I consider default) Err bitreich.org 70 i- (and (eq excl:*current-case-mode* :case-sensitive-lower) "M") Err bitreich.org 70 i- ;; Note if not using International ACL Err bitreich.org 70 i- ;; see http://www.franz.com/support/documentation/8.1/doc/operators/excl/ics-target-case.htm Err bitreich.org 70 i- (excl:ics-target-case (:-ics "8")) Err bitreich.org 70 i- (and (member :smp *features*) "S")) Err bitreich.org 70 i- #+armedbear (format nil "~a-fasl~a" s system::*fasl-version*) Err bitreich.org 70 i- #+clisp Err bitreich.org 70 i- (subseq s 0 (position #\space s)) ; strip build information (date, etc.) Err bitreich.org 70 i- #+clozure Err bitreich.org 70 i- (format nil "~d.~d-f~d" ; shorten for windows Err bitreich.org 70 i- ccl::*openmcl-major-version* Err bitreich.org 70 i- ccl::*openmcl-minor-version* Err bitreich.org 70 i- (logand (ccl-fasl-version) #xFF)) Err bitreich.org 70 i- #+cmucl (substitute #\- #\/ s) Err bitreich.org 70 i- #+scl (format nil "~A~A" s Err bitreich.org 70 i- ;; ANSI upper case vs lower case. Err bitreich.org 70 i- (ecase ext:*case-mode* (:upper "") (:lower "l"))) Err bitreich.org 70 i- #+ecl (format nil "~A~@[-~A~]" s Err bitreich.org 70 i- (let ((vcs-id (ext:lisp-implementation-vcs-id))) Err bitreich.org 70 i- (unless (equal vcs-id "UNKNOWN") Err bitreich.org 70 i- (subseq vcs-id 0 (min (length vcs-id) 8))))) Err bitreich.org 70 i- #+gcl (subseq s (1+ (position #\space s))) Err bitreich.org 70 i- #+genera Err bitreich.org 70 i- (multiple-value-bind (major minor) (sct:get-system-version "System") Err bitreich.org 70 i- (format nil "~D.~D" major minor)) Err bitreich.org 70 i- #+mcl (subseq s 8) ; strip the leading "Version " Err bitreich.org 70 i- #+mezzano (format nil "~A-~D" Err bitreich.org 70 i- (subseq s 0 (position #\space s)) ; strip commit hash Err bitreich.org 70 i- sys.int::*llf-version*) Err bitreich.org 70 i- ;; seems like there should be a shorter way to do this, like ACALL. Err bitreich.org 70 i- #+mkcl (or Err bitreich.org 70 i- (let ((fname (find-symbol* '#:git-describe-this-mkcl :mkcl nil))) Err bitreich.org 70 i- (when (and fname (fboundp fname)) Err bitreich.org 70 i- (funcall fname))) Err bitreich.org 70 i- s) Err bitreich.org 70 i- s)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun implementation-identifier () Err bitreich.org 70 i- "Return a string that identifies the ABI of the current implementation, Err bitreich.org 70 i-suitable for use as a directory name to segregate Lisp FASLs, C dynamic libraries, etc." Err bitreich.org 70 i- (substitute-if Err bitreich.org 70 i- #\_ #'(lambda (x) (find x " /:;&^\\|?<>(){}[]$#`'\"")) Err bitreich.org 70 i- (format nil "~(~a~@{~@[-~a~]~}~)" Err bitreich.org 70 i- (or (implementation-type) (lisp-implementation-type)) Err bitreich.org 70 i- (lisp-version-string) Err bitreich.org 70 i- (or (operating-system) (software-type)) Err bitreich.org 70 i- (or (architecture) (machine-type)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Other system information Err bitreich.org 70 i- Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun hostname () Err bitreich.org 70 i- "return the hostname of the current host" Err bitreich.org 70 i- #+(or abcl clasp clozure cmucl ecl genera lispworks mcl mezzano mkcl sbcl scl xcl) (machine-instance) Err bitreich.org 70 i- #+cormanlisp "localhost" ;; is there a better way? Does it matter? Err bitreich.org 70 i- #+allegro (symbol-call :excl.osi :gethostname) Err bitreich.org 70 i- #+clisp (first (split-string (machine-instance) :separator " ")) Err bitreich.org 70 i- #+gcl (system:gethostname))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Current directory Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- Err bitreich.org 70 i- #+cmucl Err bitreich.org 70 i- (defun parse-unix-namestring* (unix-namestring) Err bitreich.org 70 i- "variant of LISP::PARSE-UNIX-NAMESTRING that returns a pathname object" Err bitreich.org 70 i- (multiple-value-bind (host device directory name type version) Err bitreich.org 70 i- (lisp::parse-unix-namestring unix-namestring 0 (length unix-namestring)) Err bitreich.org 70 i- (make-pathname :host (or host lisp::*unix-host*) :device device Err bitreich.org 70 i- :directory directory :name name :type type :version version))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun getcwd () Err bitreich.org 70 i- "Get the current working directory as per POSIX getcwd(3), as a pathname object" Err bitreich.org 70 i- (or #+(or abcl genera mezzano xcl) (truename *default-pathname-defaults*) ;; d-p-d is canonical! Err bitreich.org 70 i- #+allegro (excl::current-directory) Err bitreich.org 70 i- #+clisp (ext:default-directory) Err bitreich.org 70 i- #+clozure (ccl:current-directory) Err bitreich.org 70 i- #+(or cmucl scl) (#+cmucl parse-unix-namestring* #+scl lisp::parse-unix-namestring Err bitreich.org 70 i- (strcat (nth-value 1 (unix:unix-current-directory)) "/")) Err bitreich.org 70 i- #+cormanlisp (pathname (pl::get-current-directory)) ;; Q: what type does it return? Err bitreich.org 70 i- #+(or clasp ecl) (ext:getcwd) Err bitreich.org 70 i- #+gcl (let ((*default-pathname-defaults* #p"")) (truename #p"")) Err bitreich.org 70 i- #+lispworks (hcl:get-working-directory) Err bitreich.org 70 i- #+mkcl (mk-ext:getcwd) Err bitreich.org 70 i- #+sbcl (sb-ext:parse-native-namestring (sb-unix:posix-getcwd/)) Err bitreich.org 70 i- #+xcl (extensions:current-directory) Err bitreich.org 70 i- (not-implemented-error 'getcwd))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun chdir (x) Err bitreich.org 70 i- "Change current directory, as per POSIX chdir(2), to a given pathname object" Err bitreich.org 70 i- (if-let (x (pathname x)) Err bitreich.org 70 i- #+(or abcl genera mezzano xcl) (setf *default-pathname-defaults* (truename x)) ;; d-p-d is canonical! Err bitreich.org 70 i- #+allegro (excl:chdir x) Err bitreich.org 70 i- #+clisp (ext:cd x) Err bitreich.org 70 i- #+clozure (setf (ccl:current-directory) x) Err bitreich.org 70 i- #+(or cmucl scl) (unix:unix-chdir (ext:unix-namestring x)) Err bitreich.org 70 i- #+cormanlisp (unless (zerop (win32::_chdir (namestring x))) Err bitreich.org 70 i- (error "Could not set current directory to ~A" x)) Err bitreich.org 70 i- #+(or clasp ecl) (ext:chdir x) Err bitreich.org 70 i- #+gcl (system:chdir x) Err bitreich.org 70 i- #+lispworks (hcl:change-directory x) Err bitreich.org 70 i- #+mkcl (mk-ext:chdir x) Err bitreich.org 70 i- #+sbcl (progn (require :sb-posix) (symbol-call :sb-posix :chdir (sb-ext:native-namestring x))) Err bitreich.org 70 i- #-(or abcl allegro clasp clisp clozure cmucl cormanlisp ecl gcl genera lispworks mkcl sbcl scl xcl) Err bitreich.org 70 i- (not-implemented-error 'chdir)))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; ----------------------------------------------------------------- Err bitreich.org 70 i-;;;; Windows shortcut support. Based on: Err bitreich.org 70 i-;;;; Err bitreich.org 70 i-;;;; Jesse Hager: The Windows Shortcut File Format. Err bitreich.org 70 i-;;;; http://www.wotsit.org/list.asp?fc=13 Err bitreich.org 70 i- Err bitreich.org 70 i-#-(or clisp genera) ; CLISP doesn't need it, and READ-SEQUENCE annoys old Genera that doesn't need it Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defparameter *link-initial-dword* 76) Err bitreich.org 70 i- (defparameter *link-guid* #(1 20 2 0 0 0 0 0 192 0 0 0 0 0 0 70)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun read-null-terminated-string (s) Err bitreich.org 70 i- "Read a null-terminated string from an octet stream S" Err bitreich.org 70 i- ;; note: doesn't play well with UNICODE Err bitreich.org 70 i- (with-output-to-string (out) Err bitreich.org 70 i- (loop :for code = (read-byte s) Err bitreich.org 70 i- :until (zerop code) Err bitreich.org 70 i- :do (write-char (code-char code) out)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun read-little-endian (s &optional (bytes 4)) Err bitreich.org 70 i- "Read a number in little-endian format from an byte (octet) stream S, Err bitreich.org 70 i-the number having BYTES octets (defaulting to 4)." Err bitreich.org 70 i- (loop :for i :from 0 :below bytes Err bitreich.org 70 i- :sum (ash (read-byte s) (* 8 i)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun parse-file-location-info (s) Err bitreich.org 70 i- "helper to parse-windows-shortcut" Err bitreich.org 70 i- (let ((start (file-position s)) Err bitreich.org 70 i- (total-length (read-little-endian s)) Err bitreich.org 70 i- (end-of-header (read-little-endian s)) Err bitreich.org 70 i- (fli-flags (read-little-endian s)) Err bitreich.org 70 i- (local-volume-offset (read-little-endian s)) Err bitreich.org 70 i- (local-offset (read-little-endian s)) Err bitreich.org 70 i- (network-volume-offset (read-little-endian s)) Err bitreich.org 70 i- (remaining-offset (read-little-endian s))) Err bitreich.org 70 i- (declare (ignore total-length end-of-header local-volume-offset)) Err bitreich.org 70 i- (unless (zerop fli-flags) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((logbitp 0 fli-flags) Err bitreich.org 70 i- (file-position s (+ start local-offset))) Err bitreich.org 70 i- ((logbitp 1 fli-flags) Err bitreich.org 70 i- (file-position s (+ start Err bitreich.org 70 i- network-volume-offset Err bitreich.org 70 i- #x14)))) Err bitreich.org 70 i- (strcat (read-null-terminated-string s) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (file-position s (+ start remaining-offset)) Err bitreich.org 70 i- (read-null-terminated-string s)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun parse-windows-shortcut (pathname) Err bitreich.org 70 i- "From a .lnk windows shortcut, extract the pathname linked to" Err bitreich.org 70 i- ;; NB: doesn't do much checking & doesn't look like it will work well with UNICODE. Err bitreich.org 70 i- (with-open-file (s pathname :element-type '(unsigned-byte 8)) Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (when (and (= (read-little-endian s) *link-initial-dword*) Err bitreich.org 70 i- (let ((header (make-array (length *link-guid*)))) Err bitreich.org 70 i- (read-sequence header s) Err bitreich.org 70 i- (equalp header *link-guid*))) Err bitreich.org 70 i- (let ((flags (read-little-endian s))) Err bitreich.org 70 i- (file-position s 76) ;skip rest of header Err bitreich.org 70 i- (when (logbitp 0 flags) Err bitreich.org 70 i- ;; skip shell item id list Err bitreich.org 70 i- (let ((length (read-little-endian s 2))) Err bitreich.org 70 i- (file-position s (+ length (file-position s))))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((logbitp 1 flags) Err bitreich.org 70 i- (parse-file-location-info s)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (when (logbitp 2 flags) Err bitreich.org 70 i- ;; skip description string Err bitreich.org 70 i- (let ((length (read-little-endian s 2))) Err bitreich.org 70 i- (file-position s (+ length (file-position s))))) Err bitreich.org 70 i- (when (logbitp 3 flags) Err bitreich.org 70 i- ;; finally, our pathname Err bitreich.org 70 i- (let* ((length (read-little-endian s 2)) Err bitreich.org 70 i- (buffer (make-array length))) Err bitreich.org 70 i- (read-sequence buffer s) Err bitreich.org 70 i- (map 'string #'code-char buffer))))))) Err bitreich.org 70 i- (end-of-file (c) Err bitreich.org 70 i- (declare (ignore c)) Err bitreich.org 70 i- nil))))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/uiop-3.3.2/package.lisp b/3rdparties/software/uiop-3.3.2/package.lisp /scm/clic/file/3rdparties/software/uiop-3.3.2/package.lisp.gph bitreich.org 70 i@@ -1,742 +0,0 @@ Err bitreich.org 70 i-;;;; --------------------------------------------------------------------------- Err bitreich.org 70 i-;;;; Handle ASDF package upgrade, including implementation-dependent magic. Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; See https://bugs.launchpad.net/asdf/+bug/485687 Err bitreich.org 70 i-;; Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage :uiop/package Err bitreich.org 70 i- ;; CAUTION: we must handle the first few packages specially for hot-upgrade. Err bitreich.org 70 i- ;; This package definition MUST NOT change unless its name too changes; Err bitreich.org 70 i- ;; if/when it changes, don't forget to add new functions missing from below. Err bitreich.org 70 i- ;; Until then, uiop/package is frozen to forever Err bitreich.org 70 i- ;; import and export the same exact symbols as for ASDF 2.27. Err bitreich.org 70 i- ;; Any other symbol must be import-from'ed and re-export'ed in a different package. Err bitreich.org 70 i- (:use :common-lisp) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- #:find-package* #:find-symbol* #:symbol-call Err bitreich.org 70 i- #:intern* #:export* #:import* #:shadowing-import* #:shadow* #:make-symbol* #:unintern* Err bitreich.org 70 i- #:symbol-shadowing-p #:home-package-p Err bitreich.org 70 i- #:symbol-package-name #:standard-common-lisp-symbol-p Err bitreich.org 70 i- #:reify-package #:unreify-package #:reify-symbol #:unreify-symbol Err bitreich.org 70 i- #:nuke-symbol-in-package #:nuke-symbol #:rehome-symbol Err bitreich.org 70 i- #:ensure-package-unused #:delete-package* Err bitreich.org 70 i- #:package-names #:packages-from-names #:fresh-package-name #:rename-package-away Err bitreich.org 70 i- #:package-definition-form #:parse-define-package-form Err bitreich.org 70 i- #:ensure-package #:define-package)) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :uiop/package) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; General purpose package utilities Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:load-toplevel :compile-toplevel :execute) Err bitreich.org 70 i- (defun find-package* (package-designator &optional (error t)) Err bitreich.org 70 i- (let ((package (find-package package-designator))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- (package package) Err bitreich.org 70 i- (error (error "No package named ~S" (string package-designator))) Err bitreich.org 70 i- (t nil)))) Err bitreich.org 70 i- (defun find-symbol* (name package-designator &optional (error t)) Err bitreich.org 70 i- "Find a symbol in a package of given string'ified NAME; Err bitreich.org 70 i-unlike CL:FIND-SYMBOL, work well with 'modern' case sensitive syntax Err bitreich.org 70 i-by letting you supply a symbol or keyword for the name; Err bitreich.org 70 i-also works well when the package is not present. Err bitreich.org 70 i-If optional ERROR argument is NIL, return NIL instead of an error Err bitreich.org 70 i-when the symbol is not found." Err bitreich.org 70 i- (block nil Err bitreich.org 70 i- (let ((package (find-package* package-designator error))) Err bitreich.org 70 i- (when package ;; package error handled by find-package* already Err bitreich.org 70 i- (multiple-value-bind (symbol status) (find-symbol (string name) package) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- (status (return (values symbol status))) Err bitreich.org 70 i- (error (error "There is no symbol ~S in package ~S" name (package-name package)))))) Err bitreich.org 70 i- (values nil nil)))) Err bitreich.org 70 i- (defun symbol-call (package name &rest args) Err bitreich.org 70 i- "Call a function associated with symbol of given name in given package, Err bitreich.org 70 i-with given ARGS. Useful when the call is read before the package is loaded, Err bitreich.org 70 i-or when loading the package is optional." Err bitreich.org 70 i- (apply (find-symbol* name package) args)) Err bitreich.org 70 i- (defun intern* (name package-designator &optional (error t)) Err bitreich.org 70 i- (intern (string name) (find-package* package-designator error))) Err bitreich.org 70 i- (defun export* (name package-designator) Err bitreich.org 70 i- (let* ((package (find-package* package-designator)) Err bitreich.org 70 i- (symbol (intern* name package))) Err bitreich.org 70 i- (export (or symbol (list symbol)) package))) Err bitreich.org 70 i- (defun import* (symbol package-designator) Err bitreich.org 70 i- (import (or symbol (list symbol)) (find-package* package-designator))) Err bitreich.org 70 i- (defun shadowing-import* (symbol package-designator) Err bitreich.org 70 i- (shadowing-import (or symbol (list symbol)) (find-package* package-designator))) Err bitreich.org 70 i- (defun shadow* (name package-designator) Err bitreich.org 70 i- (shadow (list (string name)) (find-package* package-designator))) Err bitreich.org 70 i- (defun make-symbol* (name) Err bitreich.org 70 i- (etypecase name Err bitreich.org 70 i- (string (make-symbol name)) Err bitreich.org 70 i- (symbol (copy-symbol name)))) Err bitreich.org 70 i- (defun unintern* (name package-designator &optional (error t)) Err bitreich.org 70 i- (block nil Err bitreich.org 70 i- (let ((package (find-package* package-designator error))) Err bitreich.org 70 i- (when package Err bitreich.org 70 i- (multiple-value-bind (symbol status) (find-symbol* name package error) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- (status (unintern symbol package) Err bitreich.org 70 i- (return (values symbol status))) Err bitreich.org 70 i- (error (error "symbol ~A not present in package ~A" Err bitreich.org 70 i- (string symbol) (package-name package)))))) Err bitreich.org 70 i- (values nil nil)))) Err bitreich.org 70 i- (defun symbol-shadowing-p (symbol package) Err bitreich.org 70 i- (and (member symbol (package-shadowing-symbols package)) t)) Err bitreich.org 70 i- (defun home-package-p (symbol package) Err bitreich.org 70 i- (and package (let ((sp (symbol-package symbol))) Err bitreich.org 70 i- (and sp (let ((pp (find-package* package))) Err bitreich.org 70 i- (and pp (eq sp pp)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:load-toplevel :compile-toplevel :execute) Err bitreich.org 70 i- (defun symbol-package-name (symbol) Err bitreich.org 70 i- (let ((package (symbol-package symbol))) Err bitreich.org 70 i- (and package (package-name package)))) Err bitreich.org 70 i- (defun standard-common-lisp-symbol-p (symbol) Err bitreich.org 70 i- (multiple-value-bind (sym status) (find-symbol* symbol :common-lisp nil) Err bitreich.org 70 i- (and (eq sym symbol) (eq status :external)))) Err bitreich.org 70 i- (defun reify-package (package &optional package-context) Err bitreich.org 70 i- (if (eq package package-context) t Err bitreich.org 70 i- (etypecase package Err bitreich.org 70 i- (null nil) Err bitreich.org 70 i- ((eql (find-package :cl)) :cl) Err bitreich.org 70 i- (package (package-name package))))) Err bitreich.org 70 i- (defun unreify-package (package &optional package-context) Err bitreich.org 70 i- (etypecase package Err bitreich.org 70 i- (null nil) Err bitreich.org 70 i- ((eql t) package-context) Err bitreich.org 70 i- ((or symbol string) (find-package package)))) Err bitreich.org 70 i- (defun reify-symbol (symbol &optional package-context) Err bitreich.org 70 i- (etypecase symbol Err bitreich.org 70 i- ((or keyword (satisfies standard-common-lisp-symbol-p)) symbol) Err bitreich.org 70 i- (symbol (vector (symbol-name symbol) Err bitreich.org 70 i- (reify-package (symbol-package symbol) package-context))))) Err bitreich.org 70 i- (defun unreify-symbol (symbol &optional package-context) Err bitreich.org 70 i- (etypecase symbol Err bitreich.org 70 i- (symbol symbol) Err bitreich.org 70 i- ((simple-vector 2) Err bitreich.org 70 i- (let* ((symbol-name (svref symbol 0)) Err bitreich.org 70 i- (package-foo (svref symbol 1)) Err bitreich.org 70 i- (package (unreify-package package-foo package-context))) Err bitreich.org 70 i- (if package (intern* symbol-name package) Err bitreich.org 70 i- (make-symbol* symbol-name))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:load-toplevel :compile-toplevel :execute) Err bitreich.org 70 i- (defvar *all-package-happiness* '()) Err bitreich.org 70 i- (defvar *all-package-fishiness* (list t)) Err bitreich.org 70 i- (defun record-fishy (info) Err bitreich.org 70 i- ;;(format t "~&FISHY: ~S~%" info) Err bitreich.org 70 i- (push info *all-package-fishiness*)) Err bitreich.org 70 i- (defmacro when-package-fishiness (&body body) Err bitreich.org 70 i- `(when *all-package-fishiness* ,@body)) Err bitreich.org 70 i- (defmacro note-package-fishiness (&rest info) Err bitreich.org 70 i- `(when-package-fishiness (record-fishy (list ,@info))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:load-toplevel :compile-toplevel :execute) Err bitreich.org 70 i- #+(or clisp clozure) Err bitreich.org 70 i- (defun get-setf-function-symbol (symbol) Err bitreich.org 70 i- #+clisp (let ((sym (get symbol 'system::setf-function))) Err bitreich.org 70 i- (if sym (values sym :setf-function) Err bitreich.org 70 i- (let ((sym (get symbol 'system::setf-expander))) Err bitreich.org 70 i- (if sym (values sym :setf-expander) Err bitreich.org 70 i- (values nil nil))))) Err bitreich.org 70 i- #+clozure (gethash symbol ccl::%setf-function-names%)) Err bitreich.org 70 i- #+(or clisp clozure) Err bitreich.org 70 i- (defun set-setf-function-symbol (new-setf-symbol symbol &optional kind) Err bitreich.org 70 i- #+clisp (assert (member kind '(:setf-function :setf-expander))) Err bitreich.org 70 i- #+clozure (assert (eq kind t)) Err bitreich.org 70 i- #+clisp Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((null new-setf-symbol) Err bitreich.org 70 i- (remprop symbol 'system::setf-function) Err bitreich.org 70 i- (remprop symbol 'system::setf-expander)) Err bitreich.org 70 i- ((eq kind :setf-function) Err bitreich.org 70 i- (setf (get symbol 'system::setf-function) new-setf-symbol)) Err bitreich.org 70 i- ((eq kind :setf-expander) Err bitreich.org 70 i- (setf (get symbol 'system::setf-expander) new-setf-symbol)) Err bitreich.org 70 i- (t (error "invalid kind of setf-function ~S for ~S to be set to ~S" Err bitreich.org 70 i- kind symbol new-setf-symbol))) Err bitreich.org 70 i- #+clozure Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (gethash symbol ccl::%setf-function-names%) new-setf-symbol Err bitreich.org 70 i- (gethash new-setf-symbol ccl::%setf-function-name-inverses%) symbol)) Err bitreich.org 70 i- #+(or clisp clozure) Err bitreich.org 70 i- (defun create-setf-function-symbol (symbol) Err bitreich.org 70 i- #+clisp (system::setf-symbol symbol) Err bitreich.org 70 i- #+clozure (ccl::construct-setf-function-name symbol)) Err bitreich.org 70 i- (defun set-dummy-symbol (symbol reason other-symbol) Err bitreich.org 70 i- (setf (get symbol 'dummy-symbol) (cons reason other-symbol))) Err bitreich.org 70 i- (defun make-dummy-symbol (symbol) Err bitreich.org 70 i- (let ((dummy (copy-symbol symbol))) Err bitreich.org 70 i- (set-dummy-symbol dummy 'replacing symbol) Err bitreich.org 70 i- (set-dummy-symbol symbol 'replaced-by dummy) Err bitreich.org 70 i- dummy)) Err bitreich.org 70 i- (defun dummy-symbol (symbol) Err bitreich.org 70 i- (get symbol 'dummy-symbol)) Err bitreich.org 70 i- (defun get-dummy-symbol (symbol) Err bitreich.org 70 i- (let ((existing (dummy-symbol symbol))) Err bitreich.org 70 i- (if existing (values (cdr existing) (car existing)) Err bitreich.org 70 i- (make-dummy-symbol symbol)))) Err bitreich.org 70 i- (defun nuke-symbol-in-package (symbol package-designator) Err bitreich.org 70 i- (let ((package (find-package* package-designator)) Err bitreich.org 70 i- (name (symbol-name symbol))) Err bitreich.org 70 i- (multiple-value-bind (sym stat) (find-symbol name package) Err bitreich.org 70 i- (when (and (member stat '(:internal :external)) (eq symbol sym)) Err bitreich.org 70 i- (if (symbol-shadowing-p symbol package) Err bitreich.org 70 i- (shadowing-import* (get-dummy-symbol symbol) package) Err bitreich.org 70 i- (unintern* symbol package)))))) Err bitreich.org 70 i- (defun nuke-symbol (symbol &optional (packages (list-all-packages))) Err bitreich.org 70 i- #+(or clisp clozure) Err bitreich.org 70 i- (multiple-value-bind (setf-symbol kind) Err bitreich.org 70 i- (get-setf-function-symbol symbol) Err bitreich.org 70 i- (when kind (nuke-symbol setf-symbol))) Err bitreich.org 70 i- (loop :for p :in packages :do (nuke-symbol-in-package symbol p))) Err bitreich.org 70 i- (defun rehome-symbol (symbol package-designator) Err bitreich.org 70 i- "Changes the home package of a symbol, also leaving it present in its old home if any" Err bitreich.org 70 i- (let* ((name (symbol-name symbol)) Err bitreich.org 70 i- (package (find-package* package-designator)) Err bitreich.org 70 i- (old-package (symbol-package symbol)) Err bitreich.org 70 i- (old-status (and old-package (nth-value 1 (find-symbol name old-package)))) Err bitreich.org 70 i- (shadowing (and old-package (symbol-shadowing-p symbol old-package) (make-symbol name)))) Err bitreich.org 70 i- (multiple-value-bind (overwritten-symbol overwritten-symbol-status) (find-symbol name package) Err bitreich.org 70 i- (unless (eq package old-package) Err bitreich.org 70 i- (let ((overwritten-symbol-shadowing-p Err bitreich.org 70 i- (and overwritten-symbol-status Err bitreich.org 70 i- (symbol-shadowing-p overwritten-symbol package)))) Err bitreich.org 70 i- (note-package-fishiness Err bitreich.org 70 i- :rehome-symbol name Err bitreich.org 70 i- (when old-package (package-name old-package)) old-status (and shadowing t) Err bitreich.org 70 i- (package-name package) overwritten-symbol-status overwritten-symbol-shadowing-p) Err bitreich.org 70 i- (when old-package Err bitreich.org 70 i- (if shadowing Err bitreich.org 70 i- (shadowing-import* shadowing old-package)) Err bitreich.org 70 i- (unintern* symbol old-package)) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- (overwritten-symbol-shadowing-p Err bitreich.org 70 i- (shadowing-import* symbol package)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (when overwritten-symbol-status Err bitreich.org 70 i- (unintern* overwritten-symbol package)) Err bitreich.org 70 i- (import* symbol package))) Err bitreich.org 70 i- (if shadowing Err bitreich.org 70 i- (shadowing-import* symbol old-package) Err bitreich.org 70 i- (import* symbol old-package)) Err bitreich.org 70 i- #+(or clisp clozure) Err bitreich.org 70 i- (multiple-value-bind (setf-symbol kind) Err bitreich.org 70 i- (get-setf-function-symbol symbol) Err bitreich.org 70 i- (when kind Err bitreich.org 70 i- (let* ((setf-function (fdefinition setf-symbol)) Err bitreich.org 70 i- (new-setf-symbol (create-setf-function-symbol symbol))) Err bitreich.org 70 i- (note-package-fishiness Err bitreich.org 70 i- :setf-function Err bitreich.org 70 i- name (package-name package) Err bitreich.org 70 i- (symbol-name setf-symbol) (symbol-package-name setf-symbol) Err bitreich.org 70 i- (symbol-name new-setf-symbol) (symbol-package-name new-setf-symbol)) Err bitreich.org 70 i- (when (symbol-package setf-symbol) Err bitreich.org 70 i- (unintern* setf-symbol (symbol-package setf-symbol))) Err bitreich.org 70 i- (setf (fdefinition new-setf-symbol) setf-function) Err bitreich.org 70 i- (set-setf-function-symbol new-setf-symbol symbol kind)))) Err bitreich.org 70 i- #+(or clisp clozure) Err bitreich.org 70 i- (multiple-value-bind (overwritten-setf foundp) Err bitreich.org 70 i- (get-setf-function-symbol overwritten-symbol) Err bitreich.org 70 i- (when foundp Err bitreich.org 70 i- (unintern overwritten-setf))) Err bitreich.org 70 i- (when (eq old-status :external) Err bitreich.org 70 i- (export* symbol old-package)) Err bitreich.org 70 i- (when (eq overwritten-symbol-status :external) Err bitreich.org 70 i- (export* symbol package)))) Err bitreich.org 70 i- (values overwritten-symbol overwritten-symbol-status)))) Err bitreich.org 70 i- (defun ensure-package-unused (package) Err bitreich.org 70 i- (loop :for p :in (package-used-by-list package) :do Err bitreich.org 70 i- (unuse-package package p))) Err bitreich.org 70 i- (defun delete-package* (package &key nuke) Err bitreich.org 70 i- (let ((p (find-package package))) Err bitreich.org 70 i- (when p Err bitreich.org 70 i- (when nuke (do-symbols (s p) (when (home-package-p s p) (nuke-symbol s)))) Err bitreich.org 70 i- (ensure-package-unused p) Err bitreich.org 70 i- (delete-package package)))) Err bitreich.org 70 i- (defun package-names (package) Err bitreich.org 70 i- (cons (package-name package) (package-nicknames package))) Err bitreich.org 70 i- (defun packages-from-names (names) Err bitreich.org 70 i- (remove-duplicates (remove nil (mapcar #'find-package names)) :from-end t)) Err bitreich.org 70 i- (defun fresh-package-name (&key (prefix :%TO-BE-DELETED) Err bitreich.org 70 i- separator Err bitreich.org 70 i- (index (random most-positive-fixnum))) Err bitreich.org 70 i- (loop :for i :from index Err bitreich.org 70 i- :for n = (format nil "~A~@[~A~D~]" prefix (and (plusp i) (or separator "")) i) Err bitreich.org 70 i- :thereis (and (not (find-package n)) n))) Err bitreich.org 70 i- (defun rename-package-away (p &rest keys &key prefix &allow-other-keys) Err bitreich.org 70 i- (let ((new-name Err bitreich.org 70 i- (apply 'fresh-package-name Err bitreich.org 70 i- :prefix (or prefix (format nil "__~A__" (package-name p))) keys))) Err bitreich.org 70 i- (record-fishy (list :rename-away (package-names p) new-name)) Err bitreich.org 70 i- (rename-package p new-name)))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Communicable representation of symbol and package information Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:load-toplevel :compile-toplevel :execute) Err bitreich.org 70 i- (defun package-definition-form (package-designator Err bitreich.org 70 i- &key (nicknamesp t) (usep t) Err bitreich.org 70 i- (shadowp t) (shadowing-import-p t) Err bitreich.org 70 i- (exportp t) (importp t) internp (error t)) Err bitreich.org 70 i- (let* ((package (or (find-package* package-designator error) Err bitreich.org 70 i- (return-from package-definition-form nil))) Err bitreich.org 70 i- (name (package-name package)) Err bitreich.org 70 i- (nicknames (package-nicknames package)) Err bitreich.org 70 i- (use (mapcar #'package-name (package-use-list package))) Err bitreich.org 70 i- (shadow ()) Err bitreich.org 70 i- (shadowing-import (make-hash-table :test 'equal)) Err bitreich.org 70 i- (import (make-hash-table :test 'equal)) Err bitreich.org 70 i- (export ()) Err bitreich.org 70 i- (intern ())) Err bitreich.org 70 i- (when package Err bitreich.org 70 i- (loop :for sym :being :the :symbols :in package Err bitreich.org 70 i- :for status = (nth-value 1 (find-symbol* sym package)) :do Err bitreich.org 70 i- (ecase status Err bitreich.org 70 i- ((nil :inherited)) Err bitreich.org 70 i- ((:internal :external) Err bitreich.org 70 i- (let* ((name (symbol-name sym)) Err bitreich.org 70 i- (external (eq status :external)) Err bitreich.org 70 i- (home (symbol-package sym)) Err bitreich.org 70 i- (home-name (package-name home)) Err bitreich.org 70 i- (imported (not (eq home package))) Err bitreich.org 70 i- (shadowing (symbol-shadowing-p sym package))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((and shadowing imported) Err bitreich.org 70 i- (push name (gethash home-name shadowing-import))) Err bitreich.org 70 i- (shadowing Err bitreich.org 70 i- (push name shadow)) Err bitreich.org 70 i- (imported Err bitreich.org 70 i- (push name (gethash home-name import)))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- (external Err bitreich.org 70 i- (push name export)) Err bitreich.org 70 i- (imported) Err bitreich.org 70 i- (t (push name intern))))))) Err bitreich.org 70 i- (labels ((sort-names (names) Err bitreich.org 70 i- (sort (copy-list names) #'string<)) Err bitreich.org 70 i- (table-keys (table) Err bitreich.org 70 i- (loop :for k :being :the :hash-keys :of table :collect k)) Err bitreich.org 70 i- (when-relevant (key value) Err bitreich.org 70 i- (when value (list (cons key value)))) Err bitreich.org 70 i- (import-options (key table) Err bitreich.org 70 i- (loop :for i :in (sort-names (table-keys table)) Err bitreich.org 70 i- :collect `(,key ,i ,@(sort-names (gethash i table)))))) Err bitreich.org 70 i- `(defpackage ,name Err bitreich.org 70 i- ,@(when-relevant :nicknames (and nicknamesp (sort-names nicknames))) Err bitreich.org 70 i- (:use ,@(and usep (sort-names use))) Err bitreich.org 70 i- ,@(when-relevant :shadow (and shadowp (sort-names shadow))) Err bitreich.org 70 i- ,@(import-options :shadowing-import-from (and shadowing-import-p shadowing-import)) Err bitreich.org 70 i- ,@(import-options :import-from (and importp import)) Err bitreich.org 70 i- ,@(when-relevant :export (and exportp (sort-names export))) Err bitreich.org 70 i- ,@(when-relevant :intern (and internp (sort-names intern))))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; ensure-package, define-package Err bitreich.org 70 i-(eval-when (:load-toplevel :compile-toplevel :execute) Err bitreich.org 70 i- (defun ensure-shadowing-import (name to-package from-package shadowed imported) Err bitreich.org 70 i- (check-type name string) Err bitreich.org 70 i- (check-type to-package package) Err bitreich.org 70 i- (check-type from-package package) Err bitreich.org 70 i- (check-type shadowed hash-table) Err bitreich.org 70 i- (check-type imported hash-table) Err bitreich.org 70 i- (let ((import-me (find-symbol* name from-package))) Err bitreich.org 70 i- (multiple-value-bind (existing status) (find-symbol name to-package) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((gethash name shadowed) Err bitreich.org 70 i- (unless (eq import-me existing) Err bitreich.org 70 i- (error "Conflicting shadowings for ~A" name))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (setf (gethash name shadowed) t) Err bitreich.org 70 i- (setf (gethash name imported) t) Err bitreich.org 70 i- (unless (or (null status) Err bitreich.org 70 i- (and (member status '(:internal :external)) Err bitreich.org 70 i- (eq existing import-me) Err bitreich.org 70 i- (symbol-shadowing-p existing to-package))) Err bitreich.org 70 i- (note-package-fishiness Err bitreich.org 70 i- :shadowing-import name Err bitreich.org 70 i- (package-name from-package) Err bitreich.org 70 i- (or (home-package-p import-me from-package) (symbol-package-name import-me)) Err bitreich.org 70 i- (package-name to-package) status Err bitreich.org 70 i- (and status (or (home-package-p existing to-package) (symbol-package-name existing))))) Err bitreich.org 70 i- (shadowing-import* import-me to-package)))))) Err bitreich.org 70 i- (defun ensure-imported (import-me into-package &optional from-package) Err bitreich.org 70 i- (check-type import-me symbol) Err bitreich.org 70 i- (check-type into-package package) Err bitreich.org 70 i- (check-type from-package (or null package)) Err bitreich.org 70 i- (let ((name (symbol-name import-me))) Err bitreich.org 70 i- (multiple-value-bind (existing status) (find-symbol name into-package) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((not status) Err bitreich.org 70 i- (import* import-me into-package)) Err bitreich.org 70 i- ((eq import-me existing)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (let ((shadowing-p (symbol-shadowing-p existing into-package))) Err bitreich.org 70 i- (note-package-fishiness Err bitreich.org 70 i- :ensure-imported name Err bitreich.org 70 i- (and from-package (package-name from-package)) Err bitreich.org 70 i- (or (home-package-p import-me from-package) (symbol-package-name import-me)) Err bitreich.org 70 i- (package-name into-package) Err bitreich.org 70 i- status Err bitreich.org 70 i- (and status (or (home-package-p existing into-package) (symbol-package-name existing))) Err bitreich.org 70 i- shadowing-p) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((or shadowing-p (eq status :inherited)) Err bitreich.org 70 i- (shadowing-import* import-me into-package)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (unintern* existing into-package) Err bitreich.org 70 i- (import* import-me into-package)))))))) Err bitreich.org 70 i- (values)) Err bitreich.org 70 i- (defun ensure-import (name to-package from-package shadowed imported) Err bitreich.org 70 i- (check-type name string) Err bitreich.org 70 i- (check-type to-package package) Err bitreich.org 70 i- (check-type from-package package) Err bitreich.org 70 i- (check-type shadowed hash-table) Err bitreich.org 70 i- (check-type imported hash-table) Err bitreich.org 70 i- (multiple-value-bind (import-me import-status) (find-symbol name from-package) Err bitreich.org 70 i- (when (null import-status) Err bitreich.org 70 i- (note-package-fishiness Err bitreich.org 70 i- :import-uninterned name (package-name from-package) (package-name to-package)) Err bitreich.org 70 i- (setf import-me (intern* name from-package))) Err bitreich.org 70 i- (multiple-value-bind (existing status) (find-symbol name to-package) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((and imported (gethash name imported)) Err bitreich.org 70 i- (unless (and status (eq import-me existing)) Err bitreich.org 70 i- (error "Can't import ~S from both ~S and ~S" Err bitreich.org 70 i- name (package-name (symbol-package existing)) (package-name from-package)))) Err bitreich.org 70 i- ((gethash name shadowed) Err bitreich.org 70 i- (error "Can't both shadow ~S and import it from ~S" name (package-name from-package))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (setf (gethash name imported) t)))) Err bitreich.org 70 i- (ensure-imported import-me to-package from-package))) Err bitreich.org 70 i- (defun ensure-inherited (name symbol to-package from-package mixp shadowed imported inherited) Err bitreich.org 70 i- (check-type name string) Err bitreich.org 70 i- (check-type symbol symbol) Err bitreich.org 70 i- (check-type to-package package) Err bitreich.org 70 i- (check-type from-package package) Err bitreich.org 70 i- (check-type mixp (member nil t)) ; no cl:boolean on Genera Err bitreich.org 70 i- (check-type shadowed hash-table) Err bitreich.org 70 i- (check-type imported hash-table) Err bitreich.org 70 i- (check-type inherited hash-table) Err bitreich.org 70 i- (multiple-value-bind (existing status) (find-symbol name to-package) Err bitreich.org 70 i- (let* ((sp (symbol-package symbol)) Err bitreich.org 70 i- (in (gethash name inherited)) Err bitreich.org 70 i- (xp (and status (symbol-package existing)))) Err bitreich.org 70 i- (when (null sp) Err bitreich.org 70 i- (note-package-fishiness Err bitreich.org 70 i- :import-uninterned name Err bitreich.org 70 i- (package-name from-package) (package-name to-package) mixp) Err bitreich.org 70 i- (import* symbol from-package) Err bitreich.org 70 i- (setf sp (package-name from-package))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((gethash name shadowed)) Err bitreich.org 70 i- (in Err bitreich.org 70 i- (unless (equal sp (first in)) Err bitreich.org 70 i- (if mixp Err bitreich.org 70 i- (ensure-shadowing-import name to-package (second in) shadowed imported) Err bitreich.org 70 i- (error "Can't inherit ~S from ~S, it is inherited from ~S" Err bitreich.org 70 i- name (package-name sp) (package-name (first in)))))) Err bitreich.org 70 i- ((gethash name imported) Err bitreich.org 70 i- (unless (eq symbol existing) Err bitreich.org 70 i- (error "Can't inherit ~S from ~S, it is imported from ~S" Err bitreich.org 70 i- name (package-name sp) (package-name xp)))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (setf (gethash name inherited) (list sp from-package)) Err bitreich.org 70 i- (when (and status (not (eq sp xp))) Err bitreich.org 70 i- (let ((shadowing (symbol-shadowing-p existing to-package))) Err bitreich.org 70 i- (note-package-fishiness Err bitreich.org 70 i- :inherited name Err bitreich.org 70 i- (package-name from-package) Err bitreich.org 70 i- (or (home-package-p symbol from-package) (symbol-package-name symbol)) Err bitreich.org 70 i- (package-name to-package) Err bitreich.org 70 i- (or (home-package-p existing to-package) (symbol-package-name existing))) Err bitreich.org 70 i- (if shadowing (ensure-shadowing-import name to-package from-package shadowed imported) Err bitreich.org 70 i- (unintern* existing to-package))))))))) Err bitreich.org 70 i- (defun ensure-mix (name symbol to-package from-package shadowed imported inherited) Err bitreich.org 70 i- (check-type name string) Err bitreich.org 70 i- (check-type symbol symbol) Err bitreich.org 70 i- (check-type to-package package) Err bitreich.org 70 i- (check-type from-package package) Err bitreich.org 70 i- (check-type shadowed hash-table) Err bitreich.org 70 i- (check-type imported hash-table) Err bitreich.org 70 i- (check-type inherited hash-table) Err bitreich.org 70 i- (unless (gethash name shadowed) Err bitreich.org 70 i- (multiple-value-bind (existing status) (find-symbol name to-package) Err bitreich.org 70 i- (let* ((sp (symbol-package symbol)) Err bitreich.org 70 i- (im (gethash name imported)) Err bitreich.org 70 i- (in (gethash name inherited))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((or (null status) Err bitreich.org 70 i- (and status (eq symbol existing)) Err bitreich.org 70 i- (and in (eq sp (first in)))) Err bitreich.org 70 i- (ensure-inherited name symbol to-package from-package t shadowed imported inherited)) Err bitreich.org 70 i- (in Err bitreich.org 70 i- (remhash name inherited) Err bitreich.org 70 i- (ensure-shadowing-import name to-package (second in) shadowed imported)) Err bitreich.org 70 i- (im Err bitreich.org 70 i- (error "Symbol ~S import from ~S~:[~; actually ~:[uninterned~;~:*from ~S~]~] conflicts with existing symbol in ~S~:[~; actually ~:[uninterned~;from ~:*~S~]~]" Err bitreich.org 70 i- name (package-name from-package) Err bitreich.org 70 i- (home-package-p symbol from-package) (symbol-package-name symbol) Err bitreich.org 70 i- (package-name to-package) Err bitreich.org 70 i- (home-package-p existing to-package) (symbol-package-name existing))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (ensure-inherited name symbol to-package from-package t shadowed imported inherited))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun recycle-symbol (name recycle exported) Err bitreich.org 70 i- ;; Takes a symbol NAME (a string), a list of package designators for RECYCLE Err bitreich.org 70 i- ;; packages, and a hash-table of names (strings) of symbols scheduled to be Err bitreich.org 70 i- ;; EXPORTED from the package being defined. It returns two values, the Err bitreich.org 70 i- ;; symbol found (if any, or else NIL), and a boolean flag indicating whether Err bitreich.org 70 i- ;; a symbol was found. The caller (DEFINE-PACKAGE) will then do the Err bitreich.org 70 i- ;; re-homing of the symbol, etc. Err bitreich.org 70 i- (check-type name string) Err bitreich.org 70 i- (check-type recycle list) Err bitreich.org 70 i- (check-type exported hash-table) Err bitreich.org 70 i- (when (gethash name exported) ;; don't bother recycling private symbols Err bitreich.org 70 i- (let (recycled foundp) Err bitreich.org 70 i- (dolist (r recycle (values recycled foundp)) Err bitreich.org 70 i- (multiple-value-bind (symbol status) (find-symbol name r) Err bitreich.org 70 i- (when (and status (home-package-p symbol r)) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- (foundp Err bitreich.org 70 i- ;; (nuke-symbol symbol)) -- even simple variable names like O or C will do that. Err bitreich.org 70 i- (note-package-fishiness :recycled-duplicate name (package-name foundp) (package-name r))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (setf recycled symbol foundp r))))))))) Err bitreich.org 70 i- (defun symbol-recycled-p (sym recycle) Err bitreich.org 70 i- (check-type sym symbol) Err bitreich.org 70 i- (check-type recycle list) Err bitreich.org 70 i- (and (member (symbol-package sym) recycle) t)) Err bitreich.org 70 i- (defun ensure-symbol (name package intern recycle shadowed imported inherited exported) Err bitreich.org 70 i- (check-type name string) Err bitreich.org 70 i- (check-type package package) Err bitreich.org 70 i- (check-type intern (member nil t)) ; no cl:boolean on Genera Err bitreich.org 70 i- (check-type shadowed hash-table) Err bitreich.org 70 i- (check-type imported hash-table) Err bitreich.org 70 i- (check-type inherited hash-table) Err bitreich.org 70 i- (unless (or (gethash name shadowed) Err bitreich.org 70 i- (gethash name imported) Err bitreich.org 70 i- (gethash name inherited)) Err bitreich.org 70 i- (multiple-value-bind (existing status) Err bitreich.org 70 i- (find-symbol name package) Err bitreich.org 70 i- (multiple-value-bind (recycled previous) (recycle-symbol name recycle exported) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((and status (eq existing recycled) (eq previous package))) Err bitreich.org 70 i- (previous Err bitreich.org 70 i- (rehome-symbol recycled package)) Err bitreich.org 70 i- ((and status (eq package (symbol-package existing)))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (when status Err bitreich.org 70 i- (note-package-fishiness Err bitreich.org 70 i- :ensure-symbol name Err bitreich.org 70 i- (reify-package (symbol-package existing) package) Err bitreich.org 70 i- status intern) Err bitreich.org 70 i- (unintern existing)) Err bitreich.org 70 i- (when intern Err bitreich.org 70 i- (intern* name package)))))))) Err bitreich.org 70 i- (declaim (ftype (function (t t t &optional t) t) ensure-exported)) Err bitreich.org 70 i- (defun ensure-exported-to-user (name symbol to-package &optional recycle) Err bitreich.org 70 i- (check-type name string) Err bitreich.org 70 i- (check-type symbol symbol) Err bitreich.org 70 i- (check-type to-package package) Err bitreich.org 70 i- (check-type recycle list) Err bitreich.org 70 i- (assert (equal name (symbol-name symbol))) Err bitreich.org 70 i- (multiple-value-bind (existing status) (find-symbol name to-package) Err bitreich.org 70 i- (unless (and status (eq symbol existing)) Err bitreich.org 70 i- (let ((accessible Err bitreich.org 70 i- (or (null status) Err bitreich.org 70 i- (let ((shadowing (symbol-shadowing-p existing to-package)) Err bitreich.org 70 i- (recycled (symbol-recycled-p existing recycle))) Err bitreich.org 70 i- (unless (and shadowing (not recycled)) Err bitreich.org 70 i- (note-package-fishiness Err bitreich.org 70 i- :ensure-export name (symbol-package-name symbol) Err bitreich.org 70 i- (package-name to-package) Err bitreich.org 70 i- (or (home-package-p existing to-package) (symbol-package-name existing)) Err bitreich.org 70 i- status shadowing) Err bitreich.org 70 i- (if (or (eq status :inherited) shadowing) Err bitreich.org 70 i- (shadowing-import* symbol to-package) Err bitreich.org 70 i- (unintern existing to-package)) Err bitreich.org 70 i- t))))) Err bitreich.org 70 i- (when (and accessible (eq status :external)) Err bitreich.org 70 i- (ensure-exported name symbol to-package recycle)))))) Err bitreich.org 70 i- (defun ensure-exported (name symbol from-package &optional recycle) Err bitreich.org 70 i- (dolist (to-package (package-used-by-list from-package)) Err bitreich.org 70 i- (ensure-exported-to-user name symbol to-package recycle)) Err bitreich.org 70 i- (unless (eq from-package (symbol-package symbol)) Err bitreich.org 70 i- (ensure-imported symbol from-package)) Err bitreich.org 70 i- (export* name from-package)) Err bitreich.org 70 i- (defun ensure-export (name from-package &optional recycle) Err bitreich.org 70 i- (multiple-value-bind (symbol status) (find-symbol* name from-package) Err bitreich.org 70 i- (unless (eq status :external) Err bitreich.org 70 i- (ensure-exported name symbol from-package recycle)))) Err bitreich.org 70 i- (defun ensure-package (name &key Err bitreich.org 70 i- nicknames documentation use Err bitreich.org 70 i- shadow shadowing-import-from Err bitreich.org 70 i- import-from export intern Err bitreich.org 70 i- recycle mix reexport Err bitreich.org 70 i- unintern) Err bitreich.org 70 i- #+genera (declare (ignore documentation)) Err bitreich.org 70 i- (let* ((package-name (string name)) Err bitreich.org 70 i- (nicknames (mapcar #'string nicknames)) Err bitreich.org 70 i- (names (cons package-name nicknames)) Err bitreich.org 70 i- (previous (packages-from-names names)) Err bitreich.org 70 i- (discarded (cdr previous)) Err bitreich.org 70 i- (to-delete ()) Err bitreich.org 70 i- (package (or (first previous) (make-package package-name :nicknames nicknames))) Err bitreich.org 70 i- (recycle (packages-from-names recycle)) Err bitreich.org 70 i- (use (mapcar 'find-package* use)) Err bitreich.org 70 i- (mix (mapcar 'find-package* mix)) Err bitreich.org 70 i- (reexport (mapcar 'find-package* reexport)) Err bitreich.org 70 i- (shadow (mapcar 'string shadow)) Err bitreich.org 70 i- (export (mapcar 'string export)) Err bitreich.org 70 i- (intern (mapcar 'string intern)) Err bitreich.org 70 i- (unintern (mapcar 'string unintern)) Err bitreich.org 70 i- (shadowed (make-hash-table :test 'equal)) ; string to bool Err bitreich.org 70 i- (imported (make-hash-table :test 'equal)) ; string to bool Err bitreich.org 70 i- (exported (make-hash-table :test 'equal)) ; string to bool Err bitreich.org 70 i- ;; string to list home package and use package: Err bitreich.org 70 i- (inherited (make-hash-table :test 'equal))) Err bitreich.org 70 i- (when-package-fishiness (record-fishy package-name)) Err bitreich.org 70 i- #-genera Err bitreich.org 70 i- (when documentation (setf (documentation package t) documentation)) Err bitreich.org 70 i- (loop :for p :in (set-difference (package-use-list package) (append mix use)) Err bitreich.org 70 i- :do (note-package-fishiness :over-use name (package-names p)) Err bitreich.org 70 i- (unuse-package p package)) Err bitreich.org 70 i- (loop :for p :in discarded Err bitreich.org 70 i- :for n = (remove-if #'(lambda (x) (member x names :test 'equal)) Err bitreich.org 70 i- (package-names p)) Err bitreich.org 70 i- :do (note-package-fishiness :nickname name (package-names p)) Err bitreich.org 70 i- (cond (n (rename-package p (first n) (rest n))) Err bitreich.org 70 i- (t (rename-package-away p) Err bitreich.org 70 i- (push p to-delete)))) Err bitreich.org 70 i- (rename-package package package-name nicknames) Err bitreich.org 70 i- (dolist (name unintern) Err bitreich.org 70 i- (multiple-value-bind (existing status) (find-symbol name package) Err bitreich.org 70 i- (when status Err bitreich.org 70 i- (unless (eq status :inherited) Err bitreich.org 70 i- (note-package-fishiness Err bitreich.org 70 i- :unintern (package-name package) name (symbol-package-name existing) status) Err bitreich.org 70 i- (unintern* name package nil))))) Err bitreich.org 70 i- (dolist (name export) Err bitreich.org 70 i- (setf (gethash name exported) t)) Err bitreich.org 70 i- (dolist (p reexport) Err bitreich.org 70 i- (do-external-symbols (sym p) Err bitreich.org 70 i- (setf (gethash (string sym) exported) t))) Err bitreich.org 70 i- (do-external-symbols (sym package) Err bitreich.org 70 i- (let ((name (symbol-name sym))) Err bitreich.org 70 i- (unless (gethash name exported) Err bitreich.org 70 i- (note-package-fishiness Err bitreich.org 70 i- :over-export (package-name package) name Err bitreich.org 70 i- (or (home-package-p sym package) (symbol-package-name sym))) Err bitreich.org 70 i- (unexport sym package)))) Err bitreich.org 70 i- (dolist (name shadow) Err bitreich.org 70 i- (setf (gethash name shadowed) t) Err bitreich.org 70 i- (multiple-value-bind (existing status) (find-symbol name package) Err bitreich.org 70 i- (multiple-value-bind (recycled previous) (recycle-symbol name recycle exported) Err bitreich.org 70 i- (let ((shadowing (and status (symbol-shadowing-p existing package)))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((eq previous package)) Err bitreich.org 70 i- (previous Err bitreich.org 70 i- (rehome-symbol recycled package)) Err bitreich.org 70 i- ((or (member status '(nil :inherited)) Err bitreich.org 70 i- (home-package-p existing package))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (let ((dummy (make-symbol name))) Err bitreich.org 70 i- (note-package-fishiness Err bitreich.org 70 i- :shadow-imported (package-name package) name Err bitreich.org 70 i- (symbol-package-name existing) status shadowing) Err bitreich.org 70 i- (shadowing-import* dummy package) Err bitreich.org 70 i- (import* dummy package))))))) Err bitreich.org 70 i- (shadow* name package)) Err bitreich.org 70 i- (loop :for (p . syms) :in shadowing-import-from Err bitreich.org 70 i- :for pp = (find-package* p) :do Err bitreich.org 70 i- (dolist (sym syms) (ensure-shadowing-import (string sym) package pp shadowed imported))) Err bitreich.org 70 i- (loop :for p :in mix Err bitreich.org 70 i- :for pp = (find-package* p) :do Err bitreich.org 70 i- (do-external-symbols (sym pp) (ensure-mix (symbol-name sym) sym package pp shadowed imported inherited))) Err bitreich.org 70 i- (loop :for (p . syms) :in import-from Err bitreich.org 70 i- :for pp = (find-package p) :do Err bitreich.org 70 i- (dolist (sym syms) (ensure-import (symbol-name sym) package pp shadowed imported))) Err bitreich.org 70 i- (dolist (p (append use mix)) Err bitreich.org 70 i- (do-external-symbols (sym p) (ensure-inherited (string sym) sym package p nil shadowed imported inherited)) Err bitreich.org 70 i- (use-package p package)) Err bitreich.org 70 i- (loop :for name :being :the :hash-keys :of exported :do Err bitreich.org 70 i- (ensure-symbol name package t recycle shadowed imported inherited exported) Err bitreich.org 70 i- (ensure-export name package recycle)) Err bitreich.org 70 i- (dolist (name intern) Err bitreich.org 70 i- (ensure-symbol name package t recycle shadowed imported inherited exported)) Err bitreich.org 70 i- (do-symbols (sym package) Err bitreich.org 70 i- (ensure-symbol (symbol-name sym) package nil recycle shadowed imported inherited exported)) Err bitreich.org 70 i- (map () 'delete-package* to-delete) Err bitreich.org 70 i- package))) Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:load-toplevel :compile-toplevel :execute) Err bitreich.org 70 i- (defun parse-define-package-form (package clauses) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- :with use-p = nil :with recycle-p = nil Err bitreich.org 70 i- :with documentation = nil Err bitreich.org 70 i- :for (kw . args) :in clauses Err bitreich.org 70 i- :when (eq kw :nicknames) :append args :into nicknames :else Err bitreich.org 70 i- :when (eq kw :documentation) Err bitreich.org 70 i- :do (cond Err bitreich.org 70 i- (documentation (error "define-package: can't define documentation twice")) Err bitreich.org 70 i- ((or (atom args) (cdr args)) (error "define-package: bad documentation")) Err bitreich.org 70 i- (t (setf documentation (car args)))) :else Err bitreich.org 70 i- :when (eq kw :use) :append args :into use :and :do (setf use-p t) :else Err bitreich.org 70 i- :when (eq kw :shadow) :append args :into shadow :else Err bitreich.org 70 i- :when (eq kw :shadowing-import-from) :collect args :into shadowing-import-from :else Err bitreich.org 70 i- :when (eq kw :import-from) :collect args :into import-from :else Err bitreich.org 70 i- :when (eq kw :export) :append args :into export :else Err bitreich.org 70 i- :when (eq kw :intern) :append args :into intern :else Err bitreich.org 70 i- :when (eq kw :recycle) :append args :into recycle :and :do (setf recycle-p t) :else Err bitreich.org 70 i- :when (eq kw :mix) :append args :into mix :else Err bitreich.org 70 i- :when (eq kw :reexport) :append args :into reexport :else Err bitreich.org 70 i- :when (eq kw :use-reexport) :append args :into use :and :append args :into reexport Err bitreich.org 70 i- :and :do (setf use-p t) :else Err bitreich.org 70 i- :when (eq kw :mix-reexport) :append args :into mix :and :append args :into reexport Err bitreich.org 70 i- :and :do (setf use-p t) :else Err bitreich.org 70 i- :when (eq kw :unintern) :append args :into unintern :else Err bitreich.org 70 i- :do (error "unrecognized define-package keyword ~S" kw) Err bitreich.org 70 i- :finally (return `(',package Err bitreich.org 70 i- :nicknames ',nicknames :documentation ',documentation Err bitreich.org 70 i- :use ',(if use-p use '(:common-lisp)) Err bitreich.org 70 i- :shadow ',shadow :shadowing-import-from ',shadowing-import-from Err bitreich.org 70 i- :import-from ',import-from :export ',export :intern ',intern Err bitreich.org 70 i- :recycle ',(if recycle-p recycle (cons package nicknames)) Err bitreich.org 70 i- :mix ',mix :reexport ',reexport :unintern ',unintern))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro define-package (package &rest clauses) Err bitreich.org 70 i- "DEFINE-PACKAGE takes a PACKAGE and a number of CLAUSES, of the form Err bitreich.org 70 i-\(KEYWORD . ARGS\). Err bitreich.org 70 i-DEFINE-PACKAGE supports the following keywords: Err bitreich.org 70 i-USE, SHADOW, SHADOWING-IMPORT-FROM, IMPORT-FROM, EXPORT, INTERN -- as per CL:DEFPACKAGE. Err bitreich.org 70 i-RECYCLE -- Recycle the package's exported symbols from the specified packages, Err bitreich.org 70 i-in order. For every symbol scheduled to be exported by the DEFINE-PACKAGE, Err bitreich.org 70 i-either through an :EXPORT option or a :REEXPORT option, if the symbol exists in Err bitreich.org 70 i-one of the :RECYCLE packages, the first such symbol is re-homed to the package Err bitreich.org 70 i-being defined. Err bitreich.org 70 i-For the sake of idempotence, it is important that the package being defined Err bitreich.org 70 i-should appear in first position if it already exists, and even if it doesn't, Err bitreich.org 70 i-ahead of any package that is not going to be deleted afterwards and never Err bitreich.org 70 i-created again. In short, except for special cases, always make it the first Err bitreich.org 70 i-package on the list if the list is not empty. Err bitreich.org 70 i-MIX -- Takes a list of package designators. MIX behaves like Err bitreich.org 70 i-\(:USE PKG1 PKG2 ... PKGn\) but additionally uses :SHADOWING-IMPORT-FROM to Err bitreich.org 70 i-resolve conflicts in favor of the first found symbol. It may still yield Err bitreich.org 70 i-an error if there is a conflict with an explicitly :IMPORT-FROM symbol. Err bitreich.org 70 i-REEXPORT -- Takes a list of package designators. For each package, p, in the list, Err bitreich.org 70 i-export symbols with the same name as those exported from p. Note that in the case Err bitreich.org 70 i-of shadowing, etc. the symbols with the same name may not be the same symbols. Err bitreich.org 70 i-UNINTERN -- Remove symbols here from PACKAGE." Err bitreich.org 70 i- (let ((ensure-form Err bitreich.org 70 i- `(prog1 Err bitreich.org 70 i- (funcall 'ensure-package ,@(parse-define-package-form package clauses)) Err bitreich.org 70 i- #+sbcl (setf (sb-impl::package-source-location (find-package ',package)) Err bitreich.org 70 i- (sb-c:source-location))))) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- #+(or clasp ecl gcl mkcl) (defpackage ,package (:use)) Err bitreich.org 70 i- (eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- ,ensure-form)))) Err bitreich.org 70 1diff --git a/3rdparties/software/uiop-3.3.2/pathname.lisp b/3rdparties/software/uiop-3.3.2/pathname.lisp /scm/clic/file/3rdparties/software/uiop-3.3.2/pathname.lisp.gph bitreich.org 70 i@@ -1,741 +0,0 @@ Err bitreich.org 70 i-;;;; ------------------------------------------------------------------------- Err bitreich.org 70 i-;;;; Portability layer around Common Lisp pathnames Err bitreich.org 70 i-;; This layer allows for portable manipulation of pathname objects themselves, Err bitreich.org 70 i-;; which all is necessary prior to any access the filesystem or environment. Err bitreich.org 70 i- Err bitreich.org 70 i-(uiop/package:define-package :uiop/pathname Err bitreich.org 70 i- (:nicknames :asdf/pathname) ;; deprecated. Used by ceramic Err bitreich.org 70 i- (:use :uiop/common-lisp :uiop/package :uiop/utility :uiop/os) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- ;; Making and merging pathnames, portably Err bitreich.org 70 i- #:normalize-pathname-directory-component #:denormalize-pathname-directory-component Err bitreich.org 70 i- #:merge-pathname-directory-components #:*unspecific-pathname-type* #:make-pathname* Err bitreich.org 70 i- #:make-pathname-component-logical #:make-pathname-logical Err bitreich.org 70 i- #:merge-pathnames* Err bitreich.org 70 i- #:nil-pathname #:*nil-pathname* #:with-pathname-defaults Err bitreich.org 70 i- ;; Predicates Err bitreich.org 70 i- #:pathname-equal #:logical-pathname-p #:physical-pathname-p #:physicalize-pathname Err bitreich.org 70 i- #:absolute-pathname-p #:relative-pathname-p #:hidden-pathname-p #:file-pathname-p Err bitreich.org 70 i- ;; Directories Err bitreich.org 70 i- #:pathname-directory-pathname #:pathname-parent-directory-pathname Err bitreich.org 70 i- #:directory-pathname-p #:ensure-directory-pathname Err bitreich.org 70 i- ;; Parsing filenames Err bitreich.org 70 i- #:split-name-type #:parse-unix-namestring #:unix-namestring Err bitreich.org 70 i- #:split-unix-namestring-directory-components Err bitreich.org 70 i- ;; Absolute and relative pathnames Err bitreich.org 70 i- #:subpathname #:subpathname* Err bitreich.org 70 i- #:ensure-absolute-pathname Err bitreich.org 70 i- #:pathname-root #:pathname-host-pathname Err bitreich.org 70 i- #:subpathp #:enough-pathname #:with-enough-pathname #:call-with-enough-pathname Err bitreich.org 70 i- ;; Checking constraints Err bitreich.org 70 i- #:ensure-pathname ;; implemented in filesystem.lisp to accommodate for existence constraints Err bitreich.org 70 i- ;; Wildcard pathnames Err bitreich.org 70 i- #:*wild* #:*wild-file* #:*wild-file-for-directory* #:*wild-directory* Err bitreich.org 70 i- #:*wild-inferiors* #:*wild-path* #:wilden Err bitreich.org 70 i- ;; Translate a pathname Err bitreich.org 70 i- #:relativize-directory-component #:relativize-pathname-directory Err bitreich.org 70 i- #:directory-separator-for-host #:directorize-pathname-host-device Err bitreich.org 70 i- #:translate-pathname* Err bitreich.org 70 i- #:*output-translation-function*)) Err bitreich.org 70 i-(in-package :uiop/pathname) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Normalizing pathnames across implementations Err bitreich.org 70 i- Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun normalize-pathname-directory-component (directory) Err bitreich.org 70 i- "Convert the DIRECTORY component from a format usable by the underlying Err bitreich.org 70 i-implementation's MAKE-PATHNAME and other primitives to a CLHS-standard format Err bitreich.org 70 i-that is a list and not a string." Err bitreich.org 70 i- (cond Err bitreich.org 70 i- #-(or cmucl sbcl scl) ;; these implementations already normalize directory components. Err bitreich.org 70 i- ((stringp directory) `(:absolute ,directory)) Err bitreich.org 70 i- ((or (null directory) Err bitreich.org 70 i- (and (consp directory) (member (first directory) '(:absolute :relative)))) Err bitreich.org 70 i- directory) Err bitreich.org 70 i- #+gcl Err bitreich.org 70 i- ((consp directory) Err bitreich.org 70 i- (cons :relative directory)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (parameter-error (compatfmt "~@<~S: Unrecognized pathname directory component ~S~@:>") Err bitreich.org 70 i- 'normalize-pathname-directory-component directory)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun denormalize-pathname-directory-component (directory-component) Err bitreich.org 70 i- "Convert the DIRECTORY-COMPONENT from a CLHS-standard format to a format usable Err bitreich.org 70 i-by the underlying implementation's MAKE-PATHNAME and other primitives" Err bitreich.org 70 i- directory-component) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun merge-pathname-directory-components (specified defaults) Err bitreich.org 70 i- "Helper for MERGE-PATHNAMES* that handles directory components" Err bitreich.org 70 i- (let ((directory (normalize-pathname-directory-component specified))) Err bitreich.org 70 i- (ecase (first directory) Err bitreich.org 70 i- ((nil) defaults) Err bitreich.org 70 i- (:absolute specified) Err bitreich.org 70 i- (:relative Err bitreich.org 70 i- (let ((defdir (normalize-pathname-directory-component defaults)) Err bitreich.org 70 i- (reldir (cdr directory))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((null defdir) Err bitreich.org 70 i- directory) Err bitreich.org 70 i- ((not (eq :back (first reldir))) Err bitreich.org 70 i- (append defdir reldir)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (loop :with defabs = (first defdir) Err bitreich.org 70 i- :with defrev = (reverse (rest defdir)) Err bitreich.org 70 i- :while (and (eq :back (car reldir)) Err bitreich.org 70 i- (or (and (eq :absolute defabs) (null defrev)) Err bitreich.org 70 i- (stringp (car defrev)))) Err bitreich.org 70 i- :do (pop reldir) (pop defrev) Err bitreich.org 70 i- :finally (return (cons defabs (append (reverse defrev) reldir))))))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Giving :unspecific as :type argument to make-pathname is not portable. Err bitreich.org 70 i- ;; See CLHS make-pathname and 19.2.2.2.3. Err bitreich.org 70 i- ;; This will be :unspecific if supported, or NIL if not. Err bitreich.org 70 i- (defparameter *unspecific-pathname-type* Err bitreich.org 70 i- #+(or abcl allegro clozure cmucl genera lispworks sbcl scl) :unspecific Err bitreich.org 70 i- #+(or clasp clisp ecl mkcl gcl xcl #|These haven't been tested:|# cormanlisp mcl mezzano) nil Err bitreich.org 70 i- "Unspecific type component to use with the underlying implementation's MAKE-PATHNAME") Err bitreich.org 70 i- Err bitreich.org 70 i- (defun make-pathname* (&rest keys &key directory host device name type version defaults Err bitreich.org 70 i- #+scl &allow-other-keys) Err bitreich.org 70 i- "Takes arguments like CL:MAKE-PATHNAME in the CLHS, and Err bitreich.org 70 i- tries hard to make a pathname that will actually behave as documented, Err bitreich.org 70 i- despite the peculiarities of each implementation. DEPRECATED: just use MAKE-PATHNAME." Err bitreich.org 70 i- (declare (ignore host device directory name type version defaults)) Err bitreich.org 70 i- (apply 'make-pathname keys)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun make-pathname-component-logical (x) Err bitreich.org 70 i- "Make a pathname component suitable for use in a logical-pathname" Err bitreich.org 70 i- (typecase x Err bitreich.org 70 i- ((eql :unspecific) nil) Err bitreich.org 70 i- #+clisp (string (string-upcase x)) Err bitreich.org 70 i- #+clisp (cons (mapcar 'make-pathname-component-logical x)) Err bitreich.org 70 i- (t x))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun make-pathname-logical (pathname host) Err bitreich.org 70 i- "Take a PATHNAME's directory, name, type and version components, Err bitreich.org 70 i-and make a new pathname with corresponding components and specified logical HOST" Err bitreich.org 70 i- (make-pathname Err bitreich.org 70 i- :host host Err bitreich.org 70 i- :directory (make-pathname-component-logical (pathname-directory pathname)) Err bitreich.org 70 i- :name (make-pathname-component-logical (pathname-name pathname)) Err bitreich.org 70 i- :type (make-pathname-component-logical (pathname-type pathname)) Err bitreich.org 70 i- :version (make-pathname-component-logical (pathname-version pathname)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun merge-pathnames* (specified &optional (defaults *default-pathname-defaults*)) Err bitreich.org 70 i- "MERGE-PATHNAMES* is like MERGE-PATHNAMES except that Err bitreich.org 70 i-if the SPECIFIED pathname does not have an absolute directory, Err bitreich.org 70 i-then the HOST and DEVICE both come from the DEFAULTS, whereas Err bitreich.org 70 i-if the SPECIFIED pathname does have an absolute directory, Err bitreich.org 70 i-then the HOST and DEVICE both come from the SPECIFIED pathname. Err bitreich.org 70 i-This is what users want on a modern Unix or Windows operating system, Err bitreich.org 70 i-unlike the MERGE-PATHNAMES behavior. Err bitreich.org 70 i-Also, if either argument is NIL, then the other argument is returned unmodified; Err bitreich.org 70 i-this is unlike MERGE-PATHNAMES which always merges with a pathname, Err bitreich.org 70 i-by default *DEFAULT-PATHNAME-DEFAULTS*, which cannot be NIL." Err bitreich.org 70 i- (when (null specified) (return-from merge-pathnames* defaults)) Err bitreich.org 70 i- (when (null defaults) (return-from merge-pathnames* specified)) Err bitreich.org 70 i- #+scl Err bitreich.org 70 i- (ext:resolve-pathname specified defaults) Err bitreich.org 70 i- #-scl Err bitreich.org 70 i- (let* ((specified (pathname specified)) Err bitreich.org 70 i- (defaults (pathname defaults)) Err bitreich.org 70 i- (directory (normalize-pathname-directory-component (pathname-directory specified))) Err bitreich.org 70 i- (name (or (pathname-name specified) (pathname-name defaults))) Err bitreich.org 70 i- (type (or (pathname-type specified) (pathname-type defaults))) Err bitreich.org 70 i- (version (or (pathname-version specified) (pathname-version defaults)))) Err bitreich.org 70 i- (labels ((unspecific-handler (p) Err bitreich.org 70 i- (if (typep p 'logical-pathname) #'make-pathname-component-logical #'identity))) Err bitreich.org 70 i- (multiple-value-bind (host device directory unspecific-handler) Err bitreich.org 70 i- (ecase (first directory) Err bitreich.org 70 i- ((:absolute) Err bitreich.org 70 i- (values (pathname-host specified) Err bitreich.org 70 i- (pathname-device specified) Err bitreich.org 70 i- directory Err bitreich.org 70 i- (unspecific-handler specified))) Err bitreich.org 70 i- ((nil :relative) Err bitreich.org 70 i- (values (pathname-host defaults) Err bitreich.org 70 i- (pathname-device defaults) Err bitreich.org 70 i- (merge-pathname-directory-components directory (pathname-directory defaults)) Err bitreich.org 70 i- (unspecific-handler defaults)))) Err bitreich.org 70 i- (make-pathname :host host :device device :directory directory Err bitreich.org 70 i- :name (funcall unspecific-handler name) Err bitreich.org 70 i- :type (funcall unspecific-handler type) Err bitreich.org 70 i- :version (funcall unspecific-handler version)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun logical-pathname-p (x) Err bitreich.org 70 i- "is X a logical-pathname?" Err bitreich.org 70 i- (typep x 'logical-pathname)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun physical-pathname-p (x) Err bitreich.org 70 i- "is X a pathname that is not a logical-pathname?" Err bitreich.org 70 i- (and (pathnamep x) (not (logical-pathname-p x)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun physicalize-pathname (x) Err bitreich.org 70 i- "if X is a logical pathname, use translate-logical-pathname on it." Err bitreich.org 70 i- ;; Ought to be the same as translate-logical-pathname, except the latter borks on CLISP Err bitreich.org 70 i- (let ((p (when x (pathname x)))) Err bitreich.org 70 i- (if (logical-pathname-p p) (translate-logical-pathname p) p))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun nil-pathname (&optional (defaults *default-pathname-defaults*)) Err bitreich.org 70 i- "A pathname that is as neutral as possible for use as defaults Err bitreich.org 70 i-when merging, making or parsing pathnames" Err bitreich.org 70 i- ;; 19.2.2.2.1 says a NIL host can mean a default host; Err bitreich.org 70 i- ;; see also "valid physical pathname host" in the CLHS glossary, that suggests Err bitreich.org 70 i- ;; strings and lists of strings or :unspecific Err bitreich.org 70 i- ;; But CMUCL decides to die on NIL. Err bitreich.org 70 i- ;; MCL has issues with make-pathname, nil and defaulting Err bitreich.org 70 i- (declare (ignorable defaults)) Err bitreich.org 70 i- #.`(make-pathname :directory nil :name nil :type nil :version nil Err bitreich.org 70 i- :device (or #+(and mkcl os-unix) :unspecific) Err bitreich.org 70 i- :host (or #+cmucl lisp::*unix-host* #+(and mkcl os-unix) "localhost") Err bitreich.org 70 i- #+scl ,@'(:scheme nil :scheme-specific-part nil Err bitreich.org 70 i- :username nil :password nil :parameters nil :query nil :fragment nil) Err bitreich.org 70 i- ;; the default shouldn't matter, but we really want something physical Err bitreich.org 70 i- #-mcl ,@'(:defaults defaults))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defvar *nil-pathname* (nil-pathname (physicalize-pathname (user-homedir-pathname))) Err bitreich.org 70 i- "A pathname that is as neutral as possible for use as defaults Err bitreich.org 70 i-when merging, making or parsing pathnames") Err bitreich.org 70 i- Err bitreich.org 70 i- (defmacro with-pathname-defaults ((&optional defaults) &body body) Err bitreich.org 70 i- "Execute BODY in a context where the *DEFAULT-PATHNAME-DEFAULTS* is as specified, Err bitreich.org 70 i-where leaving the defaults NIL or unspecified means a (NIL-PATHNAME), except Err bitreich.org 70 i-on ABCL, Genera and XCL, where it remains unchanged for it doubles as current-directory." Err bitreich.org 70 i- `(let ((*default-pathname-defaults* Err bitreich.org 70 i- ,(or defaults Err bitreich.org 70 i- #-(or abcl genera xcl) '*nil-pathname* Err bitreich.org 70 i- #+(or abcl genera xcl) '*default-pathname-defaults*))) Err bitreich.org 70 i- ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Some pathname predicates Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun pathname-equal (p1 p2) Err bitreich.org 70 i- "Are the two pathnames P1 and P2 reasonably equal in the paths they denote?" Err bitreich.org 70 i- (when (stringp p1) (setf p1 (pathname p1))) Err bitreich.org 70 i- (when (stringp p2) (setf p2 (pathname p2))) Err bitreich.org 70 i- (flet ((normalize-component (x) Err bitreich.org 70 i- (unless (member x '(nil :unspecific :newest (:relative)) :test 'equal) Err bitreich.org 70 i- x))) Err bitreich.org 70 i- (macrolet ((=? (&rest accessors) Err bitreich.org 70 i- (flet ((frob (x) Err bitreich.org 70 i- (reduce 'list (cons 'normalize-component accessors) Err bitreich.org 70 i- :initial-value x :from-end t))) Err bitreich.org 70 i- `(equal ,(frob 'p1) ,(frob 'p2))))) Err bitreich.org 70 i- (or (and (null p1) (null p2)) Err bitreich.org 70 i- (and (pathnamep p1) (pathnamep p2) Err bitreich.org 70 i- (and (=? pathname-host) Err bitreich.org 70 i- #-(and mkcl os-unix) (=? pathname-device) Err bitreich.org 70 i- (=? normalize-pathname-directory-component pathname-directory) Err bitreich.org 70 i- (=? pathname-name) Err bitreich.org 70 i- (=? pathname-type) Err bitreich.org 70 i- #-mkcl (=? pathname-version))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun absolute-pathname-p (pathspec) Err bitreich.org 70 i- "If PATHSPEC is a pathname or namestring object that parses as a pathname Err bitreich.org 70 i-possessing an :ABSOLUTE directory component, return the (parsed) pathname. Err bitreich.org 70 i-Otherwise return NIL" Err bitreich.org 70 i- (and pathspec Err bitreich.org 70 i- (typep pathspec '(or null pathname string)) Err bitreich.org 70 i- (let ((pathname (pathname pathspec))) Err bitreich.org 70 i- (and (eq :absolute (car (normalize-pathname-directory-component Err bitreich.org 70 i- (pathname-directory pathname)))) Err bitreich.org 70 i- pathname)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun relative-pathname-p (pathspec) Err bitreich.org 70 i- "If PATHSPEC is a pathname or namestring object that parses as a pathname Err bitreich.org 70 i-possessing a :RELATIVE or NIL directory component, return the (parsed) pathname. Err bitreich.org 70 i-Otherwise return NIL" Err bitreich.org 70 i- (and pathspec Err bitreich.org 70 i- (typep pathspec '(or null pathname string)) Err bitreich.org 70 i- (let* ((pathname (pathname pathspec)) Err bitreich.org 70 i- (directory (normalize-pathname-directory-component Err bitreich.org 70 i- (pathname-directory pathname)))) Err bitreich.org 70 i- (when (or (null directory) (eq :relative (car directory))) Err bitreich.org 70 i- pathname)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun hidden-pathname-p (pathname) Err bitreich.org 70 i- "Return a boolean that is true if the pathname is hidden as per Unix style, Err bitreich.org 70 i-i.e. its name starts with a dot." Err bitreich.org 70 i- (and pathname (equal (first-char (pathname-name pathname)) #\.))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun file-pathname-p (pathname) Err bitreich.org 70 i- "Does PATHNAME represent a file, i.e. has a non-null NAME component? Err bitreich.org 70 i- Err bitreich.org 70 i-Accepts NIL, a string (converted through PARSE-NAMESTRING) or a PATHNAME. Err bitreich.org 70 i- Err bitreich.org 70 i-Note that this does _not_ check to see that PATHNAME points to an Err bitreich.org 70 i-actually-existing file. Err bitreich.org 70 i- Err bitreich.org 70 i-Returns the (parsed) PATHNAME when true" Err bitreich.org 70 i- (when pathname Err bitreich.org 70 i- (let ((pathname (pathname pathname))) Err bitreich.org 70 i- (unless (and (member (pathname-name pathname) '(nil :unspecific "") :test 'equal) Err bitreich.org 70 i- (member (pathname-type pathname) '(nil :unspecific "") :test 'equal)) Err bitreich.org 70 i- pathname))))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Directory pathnames Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun pathname-directory-pathname (pathname) Err bitreich.org 70 i- "Returns a new pathname with same HOST, DEVICE, DIRECTORY as PATHNAME, Err bitreich.org 70 i-and NIL NAME, TYPE and VERSION components" Err bitreich.org 70 i- (when pathname Err bitreich.org 70 i- (make-pathname :name nil :type nil :version nil :defaults pathname))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun pathname-parent-directory-pathname (pathname) Err bitreich.org 70 i- "Returns a new pathname that corresponds to the parent of the current pathname's directory, Err bitreich.org 70 i-i.e. removing one level of depth in the DIRECTORY component. e.g. if pathname is Err bitreich.org 70 i-Unix pathname /foo/bar/baz/file.type then return /foo/bar/" Err bitreich.org 70 i- (when pathname Err bitreich.org 70 i- (make-pathname :name nil :type nil :version nil Err bitreich.org 70 i- :directory (merge-pathname-directory-components Err bitreich.org 70 i- '(:relative :back) (pathname-directory pathname)) Err bitreich.org 70 i- :defaults pathname))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun directory-pathname-p (pathname) Err bitreich.org 70 i- "Does PATHNAME represent a directory? Err bitreich.org 70 i- Err bitreich.org 70 i-A directory-pathname is a pathname _without_ a filename. The three Err bitreich.org 70 i-ways that the filename components can be missing are for it to be NIL, Err bitreich.org 70 i-:UNSPECIFIC or the empty string. Err bitreich.org 70 i- Err bitreich.org 70 i-Note that this does _not_ check to see that PATHNAME points to an Err bitreich.org 70 i-actually-existing directory." Err bitreich.org 70 i- (when pathname Err bitreich.org 70 i- ;; I tried using Allegro's excl:file-directory-p, but this cannot be done, Err bitreich.org 70 i- ;; because it rejects apparently legal pathnames as Err bitreich.org 70 i- ;; ill-formed. [2014/02/10:rpg] Err bitreich.org 70 i- (let ((pathname (pathname pathname))) Err bitreich.org 70 i- (flet ((check-one (x) Err bitreich.org 70 i- (member x '(nil :unspecific) :test 'equal))) Err bitreich.org 70 i- (and (not (wild-pathname-p pathname)) Err bitreich.org 70 i- (check-one (pathname-name pathname)) Err bitreich.org 70 i- (check-one (pathname-type pathname)) Err bitreich.org 70 i- t))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun ensure-directory-pathname (pathspec &optional (on-error 'error)) Err bitreich.org 70 i- "Converts the non-wild pathname designator PATHSPEC to directory form." Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((stringp pathspec) Err bitreich.org 70 i- (ensure-directory-pathname (pathname pathspec))) Err bitreich.org 70 i- ((not (pathnamep pathspec)) Err bitreich.org 70 i- (call-function on-error (compatfmt "~@") pathspec)) Err bitreich.org 70 i- ((wild-pathname-p pathspec) Err bitreich.org 70 i- (call-function on-error (compatfmt "~@") pathspec)) Err bitreich.org 70 i- ((directory-pathname-p pathspec) Err bitreich.org 70 i- pathspec) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (make-pathname :directory (append (or (normalize-pathname-directory-component Err bitreich.org 70 i- (pathname-directory pathspec)) Err bitreich.org 70 i- (list :relative)) Err bitreich.org 70 i- (list (file-namestring pathspec))) Err bitreich.org 70 i- :name nil :type nil :version nil :defaults pathspec) Err bitreich.org 70 i- (error (c) (call-function on-error (compatfmt "~@") pathspec c))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Parsing filenames Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (declaim (ftype function ensure-pathname)) ; forward reference Err bitreich.org 70 i- Err bitreich.org 70 i- (defun split-unix-namestring-directory-components Err bitreich.org 70 i- (unix-namestring &key ensure-directory dot-dot) Err bitreich.org 70 i- "Splits the path string UNIX-NAMESTRING, returning four values: Err bitreich.org 70 i-A flag that is either :absolute or :relative, indicating Err bitreich.org 70 i- how the rest of the values are to be interpreted. Err bitreich.org 70 i-A directory path --- a list of strings and keywords, suitable for Err bitreich.org 70 i- use with MAKE-PATHNAME when prepended with the flag value. Err bitreich.org 70 i- Directory components with an empty name or the name . are removed. Err bitreich.org 70 i- Any directory named .. is read as DOT-DOT, or :BACK if it's NIL (not :UP). Err bitreich.org 70 i-A last-component, either a file-namestring including type extension, Err bitreich.org 70 i- or NIL in the case of a directory pathname. Err bitreich.org 70 i-A flag that is true iff the unix-style-pathname was just Err bitreich.org 70 i- a file-namestring without / path specification. Err bitreich.org 70 i-ENSURE-DIRECTORY forces the namestring to be interpreted as a directory pathname: Err bitreich.org 70 i-the third return value will be NIL, and final component of the namestring Err bitreich.org 70 i-will be treated as part of the directory path. Err bitreich.org 70 i- Err bitreich.org 70 i-An empty string is thus read as meaning a pathname object with all fields nil. Err bitreich.org 70 i- Err bitreich.org 70 i-Note that colon characters #\: will NOT be interpreted as host specification. Err bitreich.org 70 i-Absolute pathnames are only appropriate on Unix-style systems. Err bitreich.org 70 i- Err bitreich.org 70 i-The intention of this function is to support structured component names, Err bitreich.org 70 i-e.g., \(:file \"foo/bar\"\), which will be unpacked to relative pathnames." Err bitreich.org 70 i- (check-type unix-namestring string) Err bitreich.org 70 i- (check-type dot-dot (member nil :back :up)) Err bitreich.org 70 i- (if (and (not (find #\/ unix-namestring)) (not ensure-directory) Err bitreich.org 70 i- (plusp (length unix-namestring))) Err bitreich.org 70 i- (values :relative () unix-namestring t) Err bitreich.org 70 i- (let* ((components (split-string unix-namestring :separator "/")) Err bitreich.org 70 i- (last-comp (car (last components)))) Err bitreich.org 70 i- (multiple-value-bind (relative components) Err bitreich.org 70 i- (if (equal (first components) "") Err bitreich.org 70 i- (if (equal (first-char unix-namestring) #\/) Err bitreich.org 70 i- (values :absolute (cdr components)) Err bitreich.org 70 i- (values :relative nil)) Err bitreich.org 70 i- (values :relative components)) Err bitreich.org 70 i- (setf components (remove-if #'(lambda (x) (member x '("" ".") :test #'equal)) Err bitreich.org 70 i- components)) Err bitreich.org 70 i- (setf components (substitute (or dot-dot :back) ".." components :test #'equal)) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((equal last-comp "") Err bitreich.org 70 i- (values relative components nil nil)) ; "" already removed from components Err bitreich.org 70 i- (ensure-directory Err bitreich.org 70 i- (values relative components nil nil)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (values relative (butlast components) last-comp nil))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun split-name-type (filename) Err bitreich.org 70 i- "Split a filename into two values NAME and TYPE that are returned. Err bitreich.org 70 i-We assume filename has no directory component. Err bitreich.org 70 i-The last . if any separates name and type from from type, Err bitreich.org 70 i-except that if there is only one . and it is in first position, Err bitreich.org 70 i-the whole filename is the NAME with an empty type. Err bitreich.org 70 i-NAME is always a string. Err bitreich.org 70 i-For an empty type, *UNSPECIFIC-PATHNAME-TYPE* is returned." Err bitreich.org 70 i- (check-type filename string) Err bitreich.org 70 i- (assert (plusp (length filename))) Err bitreich.org 70 i- (destructuring-bind (name &optional (type *unspecific-pathname-type*)) Err bitreich.org 70 i- (split-string filename :max 2 :separator ".") Err bitreich.org 70 i- (if (equal name "") Err bitreich.org 70 i- (values filename *unspecific-pathname-type*) Err bitreich.org 70 i- (values name type)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun parse-unix-namestring (name &rest keys &key type defaults dot-dot ensure-directory Err bitreich.org 70 i- &allow-other-keys) Err bitreich.org 70 i- "Coerce NAME into a PATHNAME using standard Unix syntax. Err bitreich.org 70 i- Err bitreich.org 70 i-Unix syntax is used whether or not the underlying system is Unix; Err bitreich.org 70 i-on such non-Unix systems it is reliably usable only for relative pathnames. Err bitreich.org 70 i-This function is especially useful to manipulate relative pathnames portably, Err bitreich.org 70 i-where it is of crucial to possess a portable pathname syntax independent of the underlying OS. Err bitreich.org 70 i-This is what PARSE-UNIX-NAMESTRING provides, and why we use it in ASDF. Err bitreich.org 70 i- Err bitreich.org 70 i-When given a PATHNAME object, just return it untouched. Err bitreich.org 70 i-When given NIL, just return NIL. Err bitreich.org 70 i-When given a non-null SYMBOL, first downcase its name and treat it as a string. Err bitreich.org 70 i-When given a STRING, portably decompose it into a pathname as below. Err bitreich.org 70 i- Err bitreich.org 70 i-#\\/ separates directory components. Err bitreich.org 70 i- Err bitreich.org 70 i-The last #\\/-separated substring is interpreted as follows: Err bitreich.org 70 i-1- If TYPE is :DIRECTORY or ENSURE-DIRECTORY is true, Err bitreich.org 70 i- the string is made the last directory component, and NAME and TYPE are NIL. Err bitreich.org 70 i- if the string is empty, it's the empty pathname with all slots NIL. Err bitreich.org 70 i-2- If TYPE is NIL, the substring is a file-namestring, and its NAME and TYPE Err bitreich.org 70 i- are separated by SPLIT-NAME-TYPE. Err bitreich.org 70 i-3- If TYPE is a string, it is the given TYPE, and the whole string is the NAME. Err bitreich.org 70 i- Err bitreich.org 70 i-Directory components with an empty name or the name \".\" are removed. Err bitreich.org 70 i-Any directory named \"..\" is read as DOT-DOT, Err bitreich.org 70 i-which must be one of :BACK or :UP and defaults to :BACK. Err bitreich.org 70 i- Err bitreich.org 70 i-HOST, DEVICE and VERSION components are taken from DEFAULTS, Err bitreich.org 70 i-which itself defaults to *NIL-PATHNAME*, also used if DEFAULTS is NIL. Err bitreich.org 70 i-No host or device can be specified in the string itself, Err bitreich.org 70 i-which makes it unsuitable for absolute pathnames outside Unix. Err bitreich.org 70 i- Err bitreich.org 70 i-For relative pathnames, these components (and hence the defaults) won't matter Err bitreich.org 70 i-if you use MERGE-PATHNAMES* but will matter if you use MERGE-PATHNAMES, Err bitreich.org 70 i-which is an important reason to always use MERGE-PATHNAMES*. Err bitreich.org 70 i- Err bitreich.org 70 i-Arbitrary keys are accepted, and the parse result is passed to ENSURE-PATHNAME Err bitreich.org 70 i-with those keys, removing TYPE DEFAULTS and DOT-DOT. Err bitreich.org 70 i-When you're manipulating pathnames that are supposed to make sense portably Err bitreich.org 70 i-even though the OS may not be Unixish, we recommend you use :WANT-RELATIVE T Err bitreich.org 70 i-to throw an error if the pathname is absolute" Err bitreich.org 70 i- (block nil Err bitreich.org 70 i- (check-type type (or null string (eql :directory))) Err bitreich.org 70 i- (when ensure-directory Err bitreich.org 70 i- (setf type :directory)) Err bitreich.org 70 i- (etypecase name Err bitreich.org 70 i- ((or null pathname) (return name)) Err bitreich.org 70 i- (symbol Err bitreich.org 70 i- (setf name (string-downcase name))) Err bitreich.org 70 i- (string)) Err bitreich.org 70 i- (multiple-value-bind (relative path filename file-only) Err bitreich.org 70 i- (split-unix-namestring-directory-components Err bitreich.org 70 i- name :dot-dot dot-dot :ensure-directory (eq type :directory)) Err bitreich.org 70 i- (multiple-value-bind (name type) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((or (eq type :directory) (null filename)) Err bitreich.org 70 i- (values nil nil)) Err bitreich.org 70 i- (type Err bitreich.org 70 i- (values filename type)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (split-name-type filename))) Err bitreich.org 70 i- (apply 'ensure-pathname Err bitreich.org 70 i- (make-pathname Err bitreich.org 70 i- :directory (unless file-only (cons relative path)) Err bitreich.org 70 i- :name name :type type Err bitreich.org 70 i- :defaults (or #-mcl defaults *nil-pathname*)) Err bitreich.org 70 i- (remove-plist-keys '(:type :dot-dot :defaults) keys)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun unix-namestring (pathname) Err bitreich.org 70 i- "Given a non-wild PATHNAME, return a Unix-style namestring for it. Err bitreich.org 70 i-If the PATHNAME is NIL or a STRING, return it unchanged. Err bitreich.org 70 i- Err bitreich.org 70 i-This only considers the DIRECTORY, NAME and TYPE components of the pathname. Err bitreich.org 70 i-This is a portable solution for representing relative pathnames, Err bitreich.org 70 i-But unless you are running on a Unix system, it is not a general solution Err bitreich.org 70 i-to representing native pathnames. Err bitreich.org 70 i- Err bitreich.org 70 i-An error is signaled if the argument is not NULL, a STRING or a PATHNAME, Err bitreich.org 70 i-or if it is a PATHNAME but some of its components are not recognized." Err bitreich.org 70 i- (etypecase pathname Err bitreich.org 70 i- ((or null string) pathname) Err bitreich.org 70 i- (pathname Err bitreich.org 70 i- (with-output-to-string (s) Err bitreich.org 70 i- (flet ((err () (parameter-error "~S: invalid unix-namestring ~S" Err bitreich.org 70 i- 'unix-namestring pathname))) Err bitreich.org 70 i- (let* ((dir (normalize-pathname-directory-component (pathname-directory pathname))) Err bitreich.org 70 i- (name (pathname-name pathname)) Err bitreich.org 70 i- (name (and (not (eq name :unspecific)) name)) Err bitreich.org 70 i- (type (pathname-type pathname)) Err bitreich.org 70 i- (type (and (not (eq type :unspecific)) type))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((member dir '(nil :unspecific))) Err bitreich.org 70 i- ((eq dir '(:relative)) (princ "./" s)) Err bitreich.org 70 i- ((consp dir) Err bitreich.org 70 i- (destructuring-bind (relabs &rest dirs) dir Err bitreich.org 70 i- (or (member relabs '(:relative :absolute)) (err)) Err bitreich.org 70 i- (when (eq relabs :absolute) (princ #\/ s)) Err bitreich.org 70 i- (loop :for x :in dirs :do Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((member x '(:back :up)) (princ "../" s)) Err bitreich.org 70 i- ((equal x "") (err)) Err bitreich.org 70 i- ;;((member x '("." "..") :test 'equal) (err)) Err bitreich.org 70 i- ((stringp x) (format s "~A/" x)) Err bitreich.org 70 i- (t (err)))))) Err bitreich.org 70 i- (t (err))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- (name Err bitreich.org 70 i- (unless (and (stringp name) (or (null type) (stringp type))) (err)) Err bitreich.org 70 i- (format s "~A~@[.~A~]" name type)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (or (null type) (err))))))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Absolute and relative pathnames Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun subpathname (pathname subpath &key type) Err bitreich.org 70 i- "This function takes a PATHNAME and a SUBPATH and a TYPE. Err bitreich.org 70 i-If SUBPATH is already a PATHNAME object (not namestring), Err bitreich.org 70 i-and is an absolute pathname at that, it is returned unchanged; Err bitreich.org 70 i-otherwise, SUBPATH is turned into a relative pathname with given TYPE Err bitreich.org 70 i-as per PARSE-UNIX-NAMESTRING with :WANT-RELATIVE T :TYPE TYPE, Err bitreich.org 70 i-then it is merged with the PATHNAME-DIRECTORY-PATHNAME of PATHNAME." Err bitreich.org 70 i- (or (and (pathnamep subpath) (absolute-pathname-p subpath)) Err bitreich.org 70 i- (merge-pathnames* (parse-unix-namestring subpath :type type :want-relative t) Err bitreich.org 70 i- (pathname-directory-pathname pathname)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun subpathname* (pathname subpath &key type) Err bitreich.org 70 i- "returns NIL if the base pathname is NIL, otherwise like SUBPATHNAME." Err bitreich.org 70 i- (and pathname Err bitreich.org 70 i- (subpathname (ensure-directory-pathname pathname) subpath :type type))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun pathname-root (pathname) Err bitreich.org 70 i- "return the root directory for the host and device of given PATHNAME" Err bitreich.org 70 i- (make-pathname :directory '(:absolute) Err bitreich.org 70 i- :name nil :type nil :version nil Err bitreich.org 70 i- :defaults pathname ;; host device, and on scl, *some* Err bitreich.org 70 i- ;; scheme-specific parts: port username password, not others: Err bitreich.org 70 i- . #.(or #+scl '(:parameters nil :query nil :fragment nil)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun pathname-host-pathname (pathname) Err bitreich.org 70 i- "return a pathname with the same host as given PATHNAME, and all other fields NIL" Err bitreich.org 70 i- (make-pathname :directory nil Err bitreich.org 70 i- :name nil :type nil :version nil :device nil Err bitreich.org 70 i- :defaults pathname ;; host device, and on scl, *some* Err bitreich.org 70 i- ;; scheme-specific parts: port username password, not others: Err bitreich.org 70 i- . #.(or #+scl '(:parameters nil :query nil :fragment nil)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun ensure-absolute-pathname (path &optional defaults (on-error 'error)) Err bitreich.org 70 i- "Given a pathname designator PATH, return an absolute pathname as specified by PATH Err bitreich.org 70 i-considering the DEFAULTS, or, if not possible, use CALL-FUNCTION on the specified ON-ERROR behavior, Err bitreich.org 70 i-with a format control-string and other arguments as arguments" Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((absolute-pathname-p path)) Err bitreich.org 70 i- ((stringp path) (ensure-absolute-pathname (pathname path) defaults on-error)) Err bitreich.org 70 i- ((not (pathnamep path)) (call-function on-error "not a valid pathname designator ~S" path)) Err bitreich.org 70 i- ((let ((default-pathname (if (pathnamep defaults) defaults (call-function defaults)))) Err bitreich.org 70 i- (or (if (absolute-pathname-p default-pathname) Err bitreich.org 70 i- (absolute-pathname-p (merge-pathnames* path default-pathname)) Err bitreich.org 70 i- (call-function on-error "Default pathname ~S is not an absolute pathname" Err bitreich.org 70 i- default-pathname)) Err bitreich.org 70 i- (call-function on-error "Failed to merge ~S with ~S into an absolute pathname" Err bitreich.org 70 i- path default-pathname)))) Err bitreich.org 70 i- (t (call-function on-error Err bitreich.org 70 i- "Cannot ensure ~S is evaluated as an absolute pathname with defaults ~S" Err bitreich.org 70 i- path defaults)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun subpathp (maybe-subpath base-pathname) Err bitreich.org 70 i- "if MAYBE-SUBPATH is a pathname that is under BASE-PATHNAME, return a pathname object that Err bitreich.org 70 i-when used with MERGE-PATHNAMES* with defaults BASE-PATHNAME, returns MAYBE-SUBPATH." Err bitreich.org 70 i- (and (pathnamep maybe-subpath) (pathnamep base-pathname) Err bitreich.org 70 i- (absolute-pathname-p maybe-subpath) (absolute-pathname-p base-pathname) Err bitreich.org 70 i- (directory-pathname-p base-pathname) (not (wild-pathname-p base-pathname)) Err bitreich.org 70 i- (pathname-equal (pathname-root maybe-subpath) (pathname-root base-pathname)) Err bitreich.org 70 i- (with-pathname-defaults (*nil-pathname*) Err bitreich.org 70 i- (let ((enough (enough-namestring maybe-subpath base-pathname))) Err bitreich.org 70 i- (and (relative-pathname-p enough) (pathname enough)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun enough-pathname (maybe-subpath base-pathname) Err bitreich.org 70 i- "if MAYBE-SUBPATH is a pathname that is under BASE-PATHNAME, return a pathname object that Err bitreich.org 70 i-when used with MERGE-PATHNAMES* with defaults BASE-PATHNAME, returns MAYBE-SUBPATH." Err bitreich.org 70 i- (let ((sub (when maybe-subpath (pathname maybe-subpath))) Err bitreich.org 70 i- (base (when base-pathname (ensure-absolute-pathname (pathname base-pathname))))) Err bitreich.org 70 i- (or (and base (subpathp sub base)) sub))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun call-with-enough-pathname (maybe-subpath defaults-pathname thunk) Err bitreich.org 70 i- "In a context where *DEFAULT-PATHNAME-DEFAULTS* is bound to DEFAULTS-PATHNAME (if not null, Err bitreich.org 70 i-or else to its current value), call THUNK with ENOUGH-PATHNAME for MAYBE-SUBPATH Err bitreich.org 70 i-given DEFAULTS-PATHNAME as a base pathname." Err bitreich.org 70 i- (let ((enough (enough-pathname maybe-subpath defaults-pathname)) Err bitreich.org 70 i- (*default-pathname-defaults* (or defaults-pathname *default-pathname-defaults*))) Err bitreich.org 70 i- (funcall thunk enough))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmacro with-enough-pathname ((pathname-var &key (pathname pathname-var) Err bitreich.org 70 i- (defaults *default-pathname-defaults*)) Err bitreich.org 70 i- &body body) Err bitreich.org 70 i- "Shorthand syntax for CALL-WITH-ENOUGH-PATHNAME" Err bitreich.org 70 i- `(call-with-enough-pathname ,pathname ,defaults #'(lambda (,pathname-var) ,@body)))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Wildcard pathnames Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defparameter *wild* (or #+cormanlisp "*" :wild) Err bitreich.org 70 i- "Wild component for use with MAKE-PATHNAME") Err bitreich.org 70 i- (defparameter *wild-directory-component* (or :wild) Err bitreich.org 70 i- "Wild directory component for use with MAKE-PATHNAME") Err bitreich.org 70 i- (defparameter *wild-inferiors-component* (or :wild-inferiors) Err bitreich.org 70 i- "Wild-inferiors directory component for use with MAKE-PATHNAME") Err bitreich.org 70 i- (defparameter *wild-file* Err bitreich.org 70 i- (make-pathname :directory nil :name *wild* :type *wild* Err bitreich.org 70 i- :version (or #-(or allegro abcl xcl) *wild*)) Err bitreich.org 70 i- "A pathname object with wildcards for matching any file with TRANSLATE-PATHNAME") Err bitreich.org 70 i- (defparameter *wild-file-for-directory* Err bitreich.org 70 i- (make-pathname :directory nil :name *wild* :type (or #-(or clisp gcl) *wild*) Err bitreich.org 70 i- :version (or #-(or allegro abcl clisp gcl xcl) *wild*)) Err bitreich.org 70 i- "A pathname object with wildcards for matching any file with DIRECTORY") Err bitreich.org 70 i- (defparameter *wild-directory* Err bitreich.org 70 i- (make-pathname :directory `(:relative ,*wild-directory-component*) Err bitreich.org 70 i- :name nil :type nil :version nil) Err bitreich.org 70 i- "A pathname object with wildcards for matching any subdirectory") Err bitreich.org 70 i- (defparameter *wild-inferiors* Err bitreich.org 70 i- (make-pathname :directory `(:relative ,*wild-inferiors-component*) Err bitreich.org 70 i- :name nil :type nil :version nil) Err bitreich.org 70 i- "A pathname object with wildcards for matching any recursive subdirectory") Err bitreich.org 70 i- (defparameter *wild-path* Err bitreich.org 70 i- (merge-pathnames* *wild-file* *wild-inferiors*) Err bitreich.org 70 i- "A pathname object with wildcards for matching any file in any recursive subdirectory") Err bitreich.org 70 i- Err bitreich.org 70 i- (defun wilden (path) Err bitreich.org 70 i- "From a pathname, return a wildcard pathname matching any file in any subdirectory of given pathname's directory" Err bitreich.org 70 i- (merge-pathnames* *wild-path* path))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Translate a pathname Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun relativize-directory-component (directory-component) Err bitreich.org 70 i- "Given the DIRECTORY-COMPONENT of a pathname, return an otherwise similar relative directory component" Err bitreich.org 70 i- (let ((directory (normalize-pathname-directory-component directory-component))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((stringp directory) Err bitreich.org 70 i- (list :relative directory)) Err bitreich.org 70 i- ((eq (car directory) :absolute) Err bitreich.org 70 i- (cons :relative (cdr directory))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- directory)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun relativize-pathname-directory (pathspec) Err bitreich.org 70 i- "Given a PATHNAME, return a relative pathname with otherwise the same components" Err bitreich.org 70 i- (let ((p (pathname pathspec))) Err bitreich.org 70 i- (make-pathname Err bitreich.org 70 i- :directory (relativize-directory-component (pathname-directory p)) Err bitreich.org 70 i- :defaults p))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun directory-separator-for-host (&optional (pathname *default-pathname-defaults*)) Err bitreich.org 70 i- "Given a PATHNAME, return the character used to delimit directory names on this host and device." Err bitreich.org 70 i- (let ((foo (make-pathname :directory '(:absolute "FOO") :defaults pathname))) Err bitreich.org 70 i- (last-char (namestring foo)))) Err bitreich.org 70 i- Err bitreich.org 70 i- #-scl Err bitreich.org 70 i- (defun directorize-pathname-host-device (pathname) Err bitreich.org 70 i- "Given a PATHNAME, return a pathname that has representations of its HOST and DEVICE components Err bitreich.org 70 i-added to its DIRECTORY component. This is useful for output translations." Err bitreich.org 70 i- (os-cond Err bitreich.org 70 i- ((os-unix-p) Err bitreich.org 70 i- (when (physical-pathname-p pathname) Err bitreich.org 70 i- (return-from directorize-pathname-host-device pathname)))) Err bitreich.org 70 i- (let* ((root (pathname-root pathname)) Err bitreich.org 70 i- (wild-root (wilden root)) Err bitreich.org 70 i- (absolute-pathname (merge-pathnames* pathname root)) Err bitreich.org 70 i- (separator (directory-separator-for-host root)) Err bitreich.org 70 i- (root-namestring (namestring root)) Err bitreich.org 70 i- (root-string Err bitreich.org 70 i- (substitute-if #\/ Err bitreich.org 70 i- #'(lambda (x) (or (eql x #\:) Err bitreich.org 70 i- (eql x separator))) Err bitreich.org 70 i- root-namestring))) Err bitreich.org 70 i- (multiple-value-bind (relative path filename) Err bitreich.org 70 i- (split-unix-namestring-directory-components root-string :ensure-directory t) Err bitreich.org 70 i- (declare (ignore relative filename)) Err bitreich.org 70 i- (let ((new-base (make-pathname :defaults root :directory `(:absolute ,@path)))) Err bitreich.org 70 i- (translate-pathname absolute-pathname wild-root (wilden new-base)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- #+scl Err bitreich.org 70 i- (defun directorize-pathname-host-device (pathname) Err bitreich.org 70 i- (let ((scheme (ext:pathname-scheme pathname)) Err bitreich.org 70 i- (host (pathname-host pathname)) Err bitreich.org 70 i- (port (ext:pathname-port pathname)) Err bitreich.org 70 i- (directory (pathname-directory pathname))) Err bitreich.org 70 i- (flet ((specificp (x) (and x (not (eq x :unspecific))))) Err bitreich.org 70 i- (if (or (specificp port) Err bitreich.org 70 i- (and (specificp host) (plusp (length host))) Err bitreich.org 70 i- (specificp scheme)) Err bitreich.org 70 i- (let ((prefix "")) Err bitreich.org 70 i- (when (specificp port) Err bitreich.org 70 i- (setf prefix (format nil ":~D" port))) Err bitreich.org 70 i- (when (and (specificp host) (plusp (length host))) Err bitreich.org 70 i- (setf prefix (strcat host prefix))) Err bitreich.org 70 i- (setf prefix (strcat ":" prefix)) Err bitreich.org 70 i- (when (specificp scheme) Err bitreich.org 70 i- (setf prefix (strcat scheme prefix))) Err bitreich.org 70 i- (assert (and directory (eq (first directory) :absolute))) Err bitreich.org 70 i- (make-pathname :directory `(:absolute ,prefix ,@(rest directory)) Err bitreich.org 70 i- :defaults pathname))) Err bitreich.org 70 i- pathname))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun* (translate-pathname*) (path absolute-source destination &optional root source) Err bitreich.org 70 i- "A wrapper around TRANSLATE-PATHNAME to be used by the ASDF output-translations facility. Err bitreich.org 70 i-PATH is the pathname to be translated. Err bitreich.org 70 i-ABSOLUTE-SOURCE is an absolute pathname to use as source for translate-pathname, Err bitreich.org 70 i-DESTINATION is either a function, to be called with PATH and ABSOLUTE-SOURCE, Err bitreich.org 70 i-or a relative pathname, to be merged with ROOT and used as destination for translate-pathname Err bitreich.org 70 i-or an absolute pathname, to be used as destination for translate-pathname. Err bitreich.org 70 i-In that last case, if ROOT is non-NIL, PATH is first transformated by DIRECTORIZE-PATHNAME-HOST-DEVICE." Err bitreich.org 70 i- (declare (ignore source)) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((functionp destination) Err bitreich.org 70 i- (funcall destination path absolute-source)) Err bitreich.org 70 i- ((eq destination t) Err bitreich.org 70 i- path) Err bitreich.org 70 i- ((not (pathnamep destination)) Err bitreich.org 70 i- (parameter-error "~S: Invalid destination" 'translate-pathname*)) Err bitreich.org 70 i- ((not (absolute-pathname-p destination)) Err bitreich.org 70 i- (translate-pathname path absolute-source (merge-pathnames* destination root))) Err bitreich.org 70 i- (root Err bitreich.org 70 i- (translate-pathname (directorize-pathname-host-device path) absolute-source destination)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (translate-pathname path absolute-source destination)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defvar *output-translation-function* 'identity Err bitreich.org 70 i- "Hook for output translations. Err bitreich.org 70 i- Err bitreich.org 70 i-This function needs to be idempotent, so that actions can work Err bitreich.org 70 i-whether their inputs were translated or not, Err bitreich.org 70 i-which they will be if we are composing operations. e.g. if some Err bitreich.org 70 i-create-lisp-op creates a lisp file from some higher-level input, Err bitreich.org 70 i-you need to still be able to use compile-op on that lisp file.")) Err bitreich.org 70 1diff --git a/3rdparties/software/uiop-3.3.2/run-program.lisp b/3rdparties/software/uiop-3.3.2/run-program.lisp /scm/clic/file/3rdparties/software/uiop-3.3.2/run-program.lisp.gph bitreich.org 70 i@@ -1,578 +0,0 @@ Err bitreich.org 70 i-;;;; ------------------------------------------------------------------------- Err bitreich.org 70 i-;;;; run-program initially from xcvb-driver. Err bitreich.org 70 i- Err bitreich.org 70 i-(uiop/package:define-package :uiop/run-program Err bitreich.org 70 i- (:nicknames :asdf/run-program) ; OBSOLETE. Used by cl-sane, printv. Err bitreich.org 70 i- (:use :uiop/common-lisp :uiop/package :uiop/utility :uiop/version Err bitreich.org 70 i- :uiop/pathname :uiop/os :uiop/filesystem :uiop/stream :uiop/launch-program) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- #:run-program Err bitreich.org 70 i- #:slurp-input-stream #:vomit-output-stream Err bitreich.org 70 i- #:subprocess-error Err bitreich.org 70 i- #:subprocess-error-code #:subprocess-error-command #:subprocess-error-process) Err bitreich.org 70 i- (:import-from :uiop/launch-program Err bitreich.org 70 i- #:%handle-if-does-not-exist #:%handle-if-exists #:%interactivep Err bitreich.org 70 i- #:input-stream #:output-stream #:error-output-stream)) Err bitreich.org 70 i-(in-package :uiop/run-program) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Slurping a stream, typically the output of another program Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun call-stream-processor (fun processor stream) Err bitreich.org 70 i- "Given FUN (typically SLURP-INPUT-STREAM or VOMIT-OUTPUT-STREAM, Err bitreich.org 70 i-a PROCESSOR specification which is either an atom or a list specifying Err bitreich.org 70 i-a processor an keyword arguments, call the specified processor with Err bitreich.org 70 i-the given STREAM as input" Err bitreich.org 70 i- (if (consp processor) Err bitreich.org 70 i- (apply fun (first processor) stream (rest processor)) Err bitreich.org 70 i- (funcall fun processor stream))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defgeneric slurp-input-stream (processor input-stream &key) Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "SLURP-INPUT-STREAM is a generic function with two positional arguments Err bitreich.org 70 i-PROCESSOR and INPUT-STREAM and additional keyword arguments, that consumes (slurps) Err bitreich.org 70 i-the contents of the INPUT-STREAM and processes them according to a method Err bitreich.org 70 i-specified by PROCESSOR. Err bitreich.org 70 i- Err bitreich.org 70 i-Built-in methods include the following: Err bitreich.org 70 i-* if PROCESSOR is a function, it is called with the INPUT-STREAM as its argument Err bitreich.org 70 i-* if PROCESSOR is a list, its first element should be a function. It will be applied to a cons of the Err bitreich.org 70 i- INPUT-STREAM and the rest of the list. That is (x . y) will be treated as Err bitreich.org 70 i- \(APPLY x y\) Err bitreich.org 70 i-* if PROCESSOR is an output-stream, the contents of INPUT-STREAM is copied to the output-stream, Err bitreich.org 70 i- per copy-stream-to-stream, with appropriate keyword arguments. Err bitreich.org 70 i-* if PROCESSOR is the symbol CL:STRING or the keyword :STRING, then the contents of INPUT-STREAM Err bitreich.org 70 i- are returned as a string, as per SLURP-STREAM-STRING. Err bitreich.org 70 i-* if PROCESSOR is the keyword :LINES then the INPUT-STREAM will be handled by SLURP-STREAM-LINES. Err bitreich.org 70 i-* if PROCESSOR is the keyword :LINE then the INPUT-STREAM will be handled by SLURP-STREAM-LINE. Err bitreich.org 70 i-* if PROCESSOR is the keyword :FORMS then the INPUT-STREAM will be handled by SLURP-STREAM-FORMS. Err bitreich.org 70 i-* if PROCESSOR is the keyword :FORM then the INPUT-STREAM will be handled by SLURP-STREAM-FORM. Err bitreich.org 70 i-* if PROCESSOR is T, it is treated the same as *standard-output*. If it is NIL, NIL is returned. Err bitreich.org 70 i- Err bitreich.org 70 i-Programmers are encouraged to define their own methods for this generic function.")) Err bitreich.org 70 i- Err bitreich.org 70 i- #-genera Err bitreich.org 70 i- (defmethod slurp-input-stream ((function function) input-stream &key) Err bitreich.org 70 i- (funcall function input-stream)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod slurp-input-stream ((list cons) input-stream &key) Err bitreich.org 70 i- (apply (first list) input-stream (rest list))) Err bitreich.org 70 i- Err bitreich.org 70 i- #-genera Err bitreich.org 70 i- (defmethod slurp-input-stream ((output-stream stream) input-stream Err bitreich.org 70 i- &key linewise prefix (element-type 'character) buffer-size) Err bitreich.org 70 i- (copy-stream-to-stream Err bitreich.org 70 i- input-stream output-stream Err bitreich.org 70 i- :linewise linewise :prefix prefix :element-type element-type :buffer-size buffer-size)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod slurp-input-stream ((x (eql 'string)) stream &key stripped) Err bitreich.org 70 i- (slurp-stream-string stream :stripped stripped)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod slurp-input-stream ((x (eql :string)) stream &key stripped) Err bitreich.org 70 i- (slurp-stream-string stream :stripped stripped)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod slurp-input-stream ((x (eql :lines)) stream &key count) Err bitreich.org 70 i- (slurp-stream-lines stream :count count)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod slurp-input-stream ((x (eql :line)) stream &key (at 0)) Err bitreich.org 70 i- (slurp-stream-line stream :at at)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod slurp-input-stream ((x (eql :forms)) stream &key count) Err bitreich.org 70 i- (slurp-stream-forms stream :count count)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod slurp-input-stream ((x (eql :form)) stream &key (at 0)) Err bitreich.org 70 i- (slurp-stream-form stream :at at)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod slurp-input-stream ((x (eql t)) stream &rest keys &key &allow-other-keys) Err bitreich.org 70 i- (apply 'slurp-input-stream *standard-output* stream keys)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod slurp-input-stream ((x null) (stream t) &key) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod slurp-input-stream ((pathname pathname) input Err bitreich.org 70 i- &key Err bitreich.org 70 i- (element-type *default-stream-element-type*) Err bitreich.org 70 i- (external-format *utf-8-external-format*) Err bitreich.org 70 i- (if-exists :rename-and-delete) Err bitreich.org 70 i- (if-does-not-exist :create) Err bitreich.org 70 i- buffer-size Err bitreich.org 70 i- linewise) Err bitreich.org 70 i- (with-output-file (output pathname Err bitreich.org 70 i- :element-type element-type Err bitreich.org 70 i- :external-format external-format Err bitreich.org 70 i- :if-exists if-exists Err bitreich.org 70 i- :if-does-not-exist if-does-not-exist) Err bitreich.org 70 i- (copy-stream-to-stream Err bitreich.org 70 i- input output Err bitreich.org 70 i- :element-type element-type :buffer-size buffer-size :linewise linewise))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod slurp-input-stream (x stream Err bitreich.org 70 i- &key linewise prefix (element-type 'character) buffer-size) Err bitreich.org 70 i- (declare (ignorable stream linewise prefix element-type buffer-size)) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- #+genera Err bitreich.org 70 i- ((functionp x) (funcall x stream)) Err bitreich.org 70 i- #+genera Err bitreich.org 70 i- ((output-stream-p x) Err bitreich.org 70 i- (copy-stream-to-stream Err bitreich.org 70 i- stream x Err bitreich.org 70 i- :linewise linewise :prefix prefix :element-type element-type :buffer-size buffer-size)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (parameter-error "Invalid ~S destination ~S" 'slurp-input-stream x))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Vomiting a stream, typically into the input of another program. Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defgeneric vomit-output-stream (processor output-stream &key) Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "VOMIT-OUTPUT-STREAM is a generic function with two positional arguments Err bitreich.org 70 i-PROCESSOR and OUTPUT-STREAM and additional keyword arguments, that produces (vomits) Err bitreich.org 70 i-some content onto the OUTPUT-STREAM, according to a method specified by PROCESSOR. Err bitreich.org 70 i- Err bitreich.org 70 i-Built-in methods include the following: Err bitreich.org 70 i-* if PROCESSOR is a function, it is called with the OUTPUT-STREAM as its argument Err bitreich.org 70 i-* if PROCESSOR is a list, its first element should be a function. Err bitreich.org 70 i- It will be applied to a cons of the OUTPUT-STREAM and the rest of the list. Err bitreich.org 70 i- That is (x . y) will be treated as \(APPLY x y\) Err bitreich.org 70 i-* if PROCESSOR is an input-stream, its contents will be copied the OUTPUT-STREAM, Err bitreich.org 70 i- per copy-stream-to-stream, with appropriate keyword arguments. Err bitreich.org 70 i-* if PROCESSOR is a string, its contents will be printed to the OUTPUT-STREAM. Err bitreich.org 70 i-* if PROCESSOR is T, it is treated the same as *standard-input*. If it is NIL, nothing is done. Err bitreich.org 70 i- Err bitreich.org 70 i-Programmers are encouraged to define their own methods for this generic function.")) Err bitreich.org 70 i- Err bitreich.org 70 i- #-genera Err bitreich.org 70 i- (defmethod vomit-output-stream ((function function) output-stream &key) Err bitreich.org 70 i- (funcall function output-stream)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod vomit-output-stream ((list cons) output-stream &key) Err bitreich.org 70 i- (apply (first list) output-stream (rest list))) Err bitreich.org 70 i- Err bitreich.org 70 i- #-genera Err bitreich.org 70 i- (defmethod vomit-output-stream ((input-stream stream) output-stream Err bitreich.org 70 i- &key linewise prefix (element-type 'character) buffer-size) Err bitreich.org 70 i- (copy-stream-to-stream Err bitreich.org 70 i- input-stream output-stream Err bitreich.org 70 i- :linewise linewise :prefix prefix :element-type element-type :buffer-size buffer-size)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod vomit-output-stream ((x string) stream &key fresh-line terpri) Err bitreich.org 70 i- (princ x stream) Err bitreich.org 70 i- (when fresh-line (fresh-line stream)) Err bitreich.org 70 i- (when terpri (terpri stream)) Err bitreich.org 70 i- (values)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod vomit-output-stream ((x (eql t)) stream &rest keys &key &allow-other-keys) Err bitreich.org 70 i- (apply 'vomit-output-stream *standard-input* stream keys)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod vomit-output-stream ((x null) (stream t) &key) Err bitreich.org 70 i- (values)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod vomit-output-stream ((pathname pathname) input Err bitreich.org 70 i- &key Err bitreich.org 70 i- (element-type *default-stream-element-type*) Err bitreich.org 70 i- (external-format *utf-8-external-format*) Err bitreich.org 70 i- (if-exists :rename-and-delete) Err bitreich.org 70 i- (if-does-not-exist :create) Err bitreich.org 70 i- buffer-size Err bitreich.org 70 i- linewise) Err bitreich.org 70 i- (with-output-file (output pathname Err bitreich.org 70 i- :element-type element-type Err bitreich.org 70 i- :external-format external-format Err bitreich.org 70 i- :if-exists if-exists Err bitreich.org 70 i- :if-does-not-exist if-does-not-exist) Err bitreich.org 70 i- (copy-stream-to-stream Err bitreich.org 70 i- input output Err bitreich.org 70 i- :element-type element-type :buffer-size buffer-size :linewise linewise))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod vomit-output-stream (x stream Err bitreich.org 70 i- &key linewise prefix (element-type 'character) buffer-size) Err bitreich.org 70 i- (declare (ignorable stream linewise prefix element-type buffer-size)) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- #+genera Err bitreich.org 70 i- ((functionp x) (funcall x stream)) Err bitreich.org 70 i- #+genera Err bitreich.org 70 i- ((input-stream-p x) Err bitreich.org 70 i- (copy-stream-to-stream Err bitreich.org 70 i- x stream Err bitreich.org 70 i- :linewise linewise :prefix prefix :element-type element-type :buffer-size buffer-size)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (parameter-error "Invalid ~S source ~S" 'vomit-output-stream x))))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Run-program: synchronously run a program in a subprocess, handling input, output and error-output. Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (define-condition subprocess-error (error) Err bitreich.org 70 i- ((code :initform nil :initarg :code :reader subprocess-error-code) Err bitreich.org 70 i- (command :initform nil :initarg :command :reader subprocess-error-command) Err bitreich.org 70 i- (process :initform nil :initarg :process :reader subprocess-error-process)) Err bitreich.org 70 i- (:report (lambda (condition stream) Err bitreich.org 70 i- (format stream "Subprocess ~@[~S~% ~]~@[with command ~S~% ~]exited with error~@[ code ~D~]" Err bitreich.org 70 i- (subprocess-error-process condition) Err bitreich.org 70 i- (subprocess-error-command condition) Err bitreich.org 70 i- (subprocess-error-code condition))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %check-result (exit-code &key command process ignore-error-status) Err bitreich.org 70 i- (unless ignore-error-status Err bitreich.org 70 i- (unless (eql exit-code 0) Err bitreich.org 70 i- (cerror "IGNORE-ERROR-STATUS" Err bitreich.org 70 i- 'subprocess-error :command command :code exit-code :process process))) Err bitreich.org 70 i- exit-code) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %active-io-specifier-p (specifier) Err bitreich.org 70 i- "Determines whether a run-program I/O specifier requires Lisp-side processing Err bitreich.org 70 i-via SLURP-INPUT-STREAM or VOMIT-OUTPUT-STREAM (return T), Err bitreich.org 70 i-or whether it's already taken care of by the implementation's underlying run-program." Err bitreich.org 70 i- (not (typep specifier '(or null string pathname (member :interactive :output) Err bitreich.org 70 i- #+(or cmucl (and sbcl os-unix) scl) (or stream (eql t)) Err bitreich.org 70 i- #+lispworks file-stream)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %run-program (command &rest keys &key &allow-other-keys) Err bitreich.org 70 i- "DEPRECATED. Use LAUNCH-PROGRAM instead." Err bitreich.org 70 i- (apply 'launch-program command keys)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %call-with-program-io (gf tval stream-easy-p fun direction spec activep returner Err bitreich.org 70 i- &key Err bitreich.org 70 i- (element-type #-clozure *default-stream-element-type* #+clozure 'character) Err bitreich.org 70 i- (external-format *utf-8-external-format*) &allow-other-keys) Err bitreich.org 70 i- ;; handle redirection for run-program and system Err bitreich.org 70 i- ;; SPEC is the specification for the subprocess's input or output or error-output Err bitreich.org 70 i- ;; TVAL is the value used if the spec is T Err bitreich.org 70 i- ;; GF is the generic function to call to handle arbitrary values of SPEC Err bitreich.org 70 i- ;; STREAM-EASY-P is T if we're going to use a RUN-PROGRAM that copies streams in the background Err bitreich.org 70 i- ;; (it's only meaningful on CMUCL, SBCL, SCL that actually do it) Err bitreich.org 70 i- ;; DIRECTION is :INPUT, :OUTPUT or :ERROR-OUTPUT for the direction of this io argument Err bitreich.org 70 i- ;; FUN is a function of the new reduced spec and an activity function to call with a stream Err bitreich.org 70 i- ;; when the subprocess is active and communicating through that stream. Err bitreich.org 70 i- ;; ACTIVEP is a boolean true if we will get to run code while the process is running Err bitreich.org 70 i- ;; ELEMENT-TYPE and EXTERNAL-FORMAT control what kind of temporary file we may open. Err bitreich.org 70 i- ;; RETURNER is a function called with the value of the activity. Err bitreich.org 70 i- ;; --- TODO (fare@tunes.org): handle if-output-exists and such when doing it the hard way. Err bitreich.org 70 i- (declare (ignorable stream-easy-p)) Err bitreich.org 70 i- (let* ((actual-spec (if (eq spec t) tval spec)) Err bitreich.org 70 i- (activity-spec (if (eq actual-spec :output) Err bitreich.org 70 i- (ecase direction Err bitreich.org 70 i- ((:input :output) Err bitreich.org 70 i- (parameter-error "~S does not allow ~S as a ~S spec" Err bitreich.org 70 i- 'run-program :output direction)) Err bitreich.org 70 i- ((:error-output) Err bitreich.org 70 i- nil)) Err bitreich.org 70 i- actual-spec))) Err bitreich.org 70 i- (labels ((activity (stream) Err bitreich.org 70 i- (call-function returner (call-stream-processor gf activity-spec stream))) Err bitreich.org 70 i- (easy-case () Err bitreich.org 70 i- (funcall fun actual-spec nil)) Err bitreich.org 70 i- (hard-case () Err bitreich.org 70 i- (if activep Err bitreich.org 70 i- (funcall fun :stream #'activity) Err bitreich.org 70 i- (with-temporary-file (:pathname tmp) Err bitreich.org 70 i- (ecase direction Err bitreich.org 70 i- (:input Err bitreich.org 70 i- (with-output-file (s tmp :if-exists :overwrite Err bitreich.org 70 i- :external-format external-format Err bitreich.org 70 i- :element-type element-type) Err bitreich.org 70 i- (activity s)) Err bitreich.org 70 i- (funcall fun tmp nil)) Err bitreich.org 70 i- ((:output :error-output) Err bitreich.org 70 i- (multiple-value-prog1 (funcall fun tmp nil) Err bitreich.org 70 i- (with-input-file (s tmp Err bitreich.org 70 i- :external-format external-format Err bitreich.org 70 i- :element-type element-type) Err bitreich.org 70 i- (activity s))))))))) Err bitreich.org 70 i- (typecase activity-spec Err bitreich.org 70 i- ((or null string pathname (eql :interactive)) Err bitreich.org 70 i- (easy-case)) Err bitreich.org 70 i- #+(or cmucl (and sbcl os-unix) scl) ;; streams are only easy on implementations that try very hard Err bitreich.org 70 i- (stream Err bitreich.org 70 i- (if stream-easy-p (easy-case) (hard-case))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (hard-case)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmacro place-setter (place) Err bitreich.org 70 i- (when place Err bitreich.org 70 i- (let ((value (gensym))) Err bitreich.org 70 i- `#'(lambda (,value) (setf ,place ,value))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmacro with-program-input (((reduced-input-var Err bitreich.org 70 i- &optional (input-activity-var (gensym) iavp)) Err bitreich.org 70 i- input-form &key setf stream-easy-p active keys) &body body) Err bitreich.org 70 i- `(apply '%call-with-program-io 'vomit-output-stream *standard-input* ,stream-easy-p Err bitreich.org 70 i- #'(lambda (,reduced-input-var ,input-activity-var) Err bitreich.org 70 i- ,@(unless iavp `((declare (ignore ,input-activity-var)))) Err bitreich.org 70 i- ,@body) Err bitreich.org 70 i- :input ,input-form ,active (place-setter ,setf) ,keys)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmacro with-program-output (((reduced-output-var Err bitreich.org 70 i- &optional (output-activity-var (gensym) oavp)) Err bitreich.org 70 i- output-form &key setf stream-easy-p active keys) &body body) Err bitreich.org 70 i- `(apply '%call-with-program-io 'slurp-input-stream *standard-output* ,stream-easy-p Err bitreich.org 70 i- #'(lambda (,reduced-output-var ,output-activity-var) Err bitreich.org 70 i- ,@(unless oavp `((declare (ignore ,output-activity-var)))) Err bitreich.org 70 i- ,@body) Err bitreich.org 70 i- :output ,output-form ,active (place-setter ,setf) ,keys)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmacro with-program-error-output (((reduced-error-output-var Err bitreich.org 70 i- &optional (error-output-activity-var (gensym) eoavp)) Err bitreich.org 70 i- error-output-form &key setf stream-easy-p active keys) Err bitreich.org 70 i- &body body) Err bitreich.org 70 i- `(apply '%call-with-program-io 'slurp-input-stream *error-output* ,stream-easy-p Err bitreich.org 70 i- #'(lambda (,reduced-error-output-var ,error-output-activity-var) Err bitreich.org 70 i- ,@(unless eoavp `((declare (ignore ,error-output-activity-var)))) Err bitreich.org 70 i- ,@body) Err bitreich.org 70 i- :error-output ,error-output-form ,active (place-setter ,setf) ,keys)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %use-launch-program (command &rest keys Err bitreich.org 70 i- &key input output error-output ignore-error-status &allow-other-keys) Err bitreich.org 70 i- ;; helper for RUN-PROGRAM when using LAUNCH-PROGRAM Err bitreich.org 70 i- #+(or cormanlisp gcl (and lispworks os-windows) mcl xcl) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- command keys input output error-output ignore-error-status ;; ignore Err bitreich.org 70 i- (not-implemented-error '%use-launch-program)) Err bitreich.org 70 i- (when (member :stream (list input output error-output)) Err bitreich.org 70 i- (parameter-error "~S: ~S is not allowed as synchronous I/O redirection argument" Err bitreich.org 70 i- 'run-program :stream)) Err bitreich.org 70 i- (let* ((active-input-p (%active-io-specifier-p input)) Err bitreich.org 70 i- (active-output-p (%active-io-specifier-p output)) Err bitreich.org 70 i- (active-error-output-p (%active-io-specifier-p error-output)) Err bitreich.org 70 i- (activity Err bitreich.org 70 i- (cond Err bitreich.org 70 i- (active-output-p :output) Err bitreich.org 70 i- (active-input-p :input) Err bitreich.org 70 i- (active-error-output-p :error-output) Err bitreich.org 70 i- (t nil))) Err bitreich.org 70 i- output-result error-output-result exit-code process-info) Err bitreich.org 70 i- (with-program-output ((reduced-output output-activity) Err bitreich.org 70 i- output :keys keys :setf output-result Err bitreich.org 70 i- :stream-easy-p t :active (eq activity :output)) Err bitreich.org 70 i- (with-program-error-output ((reduced-error-output error-output-activity) Err bitreich.org 70 i- error-output :keys keys :setf error-output-result Err bitreich.org 70 i- :stream-easy-p t :active (eq activity :error-output)) Err bitreich.org 70 i- (with-program-input ((reduced-input input-activity) Err bitreich.org 70 i- input :keys keys Err bitreich.org 70 i- :stream-easy-p t :active (eq activity :input)) Err bitreich.org 70 i- (setf process-info Err bitreich.org 70 i- (apply 'launch-program command Err bitreich.org 70 i- :input reduced-input :output reduced-output Err bitreich.org 70 i- :error-output (if (eq error-output :output) :output reduced-error-output) Err bitreich.org 70 i- keys)) Err bitreich.org 70 i- (labels ((get-stream (stream-name &optional fallbackp) Err bitreich.org 70 i- (or (slot-value process-info stream-name) Err bitreich.org 70 i- (when fallbackp Err bitreich.org 70 i- (slot-value process-info 'bidir-stream)))) Err bitreich.org 70 i- (run-activity (activity stream-name &optional fallbackp) Err bitreich.org 70 i- (if-let (stream (get-stream stream-name fallbackp)) Err bitreich.org 70 i- (funcall activity stream) Err bitreich.org 70 i- (error 'subprocess-error Err bitreich.org 70 i- :code `(:missing ,stream-name) Err bitreich.org 70 i- :command command :process process-info)))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (ecase activity Err bitreich.org 70 i- ((nil)) Err bitreich.org 70 i- (:input (run-activity input-activity 'input-stream t)) Err bitreich.org 70 i- (:output (run-activity output-activity 'output-stream t)) Err bitreich.org 70 i- (:error-output (run-activity error-output-activity 'error-output-stream))) Err bitreich.org 70 i- (close-streams process-info) Err bitreich.org 70 i- (setf exit-code (wait-process process-info))))))) Err bitreich.org 70 i- (%check-result exit-code Err bitreich.org 70 i- :command command :process process-info Err bitreich.org 70 i- :ignore-error-status ignore-error-status) Err bitreich.org 70 i- (values output-result error-output-result exit-code))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %normalize-system-command (command) ;; helper for %USE-SYSTEM Err bitreich.org 70 i- (etypecase command Err bitreich.org 70 i- (string command) Err bitreich.org 70 i- (list (escape-shell-command Err bitreich.org 70 i- (os-cond Err bitreich.org 70 i- ((os-unix-p) (cons "exec" command)) Err bitreich.org 70 i- (t command)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %redirected-system-command (command in out err directory) ;; helper for %USE-SYSTEM Err bitreich.org 70 i- (flet ((redirect (spec operator) Err bitreich.org 70 i- (let ((pathname Err bitreich.org 70 i- (typecase spec Err bitreich.org 70 i- (null (null-device-pathname)) Err bitreich.org 70 i- (string (parse-native-namestring spec)) Err bitreich.org 70 i- (pathname spec) Err bitreich.org 70 i- ((eql :output) Err bitreich.org 70 i- (unless (equal operator " 2>>") Err bitreich.org 70 i- (parameter-error "~S: only the ~S argument can be ~S" Err bitreich.org 70 i- 'run-program :error-output :output)) Err bitreich.org 70 i- (return-from redirect '(" 2>&1")))))) Err bitreich.org 70 i- (when pathname Err bitreich.org 70 i- (list operator " " Err bitreich.org 70 i- (escape-shell-token (native-namestring pathname))))))) Err bitreich.org 70 i- (let* ((redirections (append (redirect in " <") (redirect out " >>") (redirect err " 2>>"))) Err bitreich.org 70 i- (normalized (%normalize-system-command command)) Err bitreich.org 70 i- (directory (or directory #+(or abcl xcl) (getcwd))) Err bitreich.org 70 i- (chdir (when directory Err bitreich.org 70 i- (let ((dir-arg (escape-shell-token (native-namestring directory)))) Err bitreich.org 70 i- (os-cond Err bitreich.org 70 i- ((os-unix-p) `("cd " ,dir-arg " ; ")) Err bitreich.org 70 i- ((os-windows-p) `("cd /d " ,dir-arg " & "))))))) Err bitreich.org 70 i- (reduce/strcat Err bitreich.org 70 i- (os-cond Err bitreich.org 70 i- ((os-unix-p) `(,@(when redirections `("exec " ,@redirections " ; ")) ,@chdir ,normalized)) Err bitreich.org 70 i- ((os-windows-p) `(,@redirections " (" ,@chdir ,normalized ")"))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %system (command &rest keys &key directory Err bitreich.org 70 i- input (if-input-does-not-exist :error) Err bitreich.org 70 i- output (if-output-exists :supersede) Err bitreich.org 70 i- error-output (if-error-output-exists :supersede) Err bitreich.org 70 i- &allow-other-keys) Err bitreich.org 70 i- "A portable abstraction of a low-level call to libc's system()." Err bitreich.org 70 i- (declare (ignorable keys directory input if-input-does-not-exist output Err bitreich.org 70 i- if-output-exists error-output if-error-output-exists)) Err bitreich.org 70 i- (when (member :stream (list input output error-output)) Err bitreich.org 70 i- (parameter-error "~S: ~S is not allowed as synchronous I/O redirection argument" Err bitreich.org 70 i- 'run-program :stream)) Err bitreich.org 70 i- #+(or abcl allegro clozure cmucl ecl (and lispworks os-unix) mkcl sbcl scl) Err bitreich.org 70 i- (let (#+(or abcl ecl mkcl) Err bitreich.org 70 i- (version (parse-version Err bitreich.org 70 i- #-abcl Err bitreich.org 70 i- (lisp-implementation-version) Err bitreich.org 70 i- #+abcl Err bitreich.org 70 i- (second (split-string (implementation-identifier) :separator '(#\-)))))) Err bitreich.org 70 i- (nest Err bitreich.org 70 i- #+abcl (unless (lexicographic< '< version '(1 4 0))) Err bitreich.org 70 i- #+ecl (unless (lexicographic<= '< version '(16 0 0))) Err bitreich.org 70 i- #+mkcl (unless (lexicographic<= '< version '(1 1 9))) Err bitreich.org 70 i- (return-from %system Err bitreich.org 70 i- (wait-process Err bitreich.org 70 i- (apply 'launch-program (%normalize-system-command command) keys))))) Err bitreich.org 70 i- #+(or abcl clasp clisp cormanlisp ecl gcl genera (and lispworks os-windows) mkcl xcl) Err bitreich.org 70 i- (let ((%command (%redirected-system-command command input output error-output directory))) Err bitreich.org 70 i- ;; see comments for these functions Err bitreich.org 70 i- (%handle-if-does-not-exist input if-input-does-not-exist) Err bitreich.org 70 i- (%handle-if-exists output if-output-exists) Err bitreich.org 70 i- (%handle-if-exists error-output if-error-output-exists) Err bitreich.org 70 i- #+abcl (ext:run-shell-command %command) Err bitreich.org 70 i- #+(or clasp ecl) (let ((*standard-input* *stdin*) Err bitreich.org 70 i- (*standard-output* *stdout*) Err bitreich.org 70 i- (*error-output* *stderr*)) Err bitreich.org 70 i- (ext:system %command)) Err bitreich.org 70 i- #+clisp Err bitreich.org 70 i- (let ((raw-exit-code Err bitreich.org 70 i- (or Err bitreich.org 70 i- #.`(#+os-windows ,@'(ext:run-shell-command %command) Err bitreich.org 70 i- #+os-unix ,@'(ext:run-program "/bin/sh" :arguments `("-c" ,%command)) Err bitreich.org 70 i- :wait t :input :terminal :output :terminal) Err bitreich.org 70 i- 0))) Err bitreich.org 70 i- (if (minusp raw-exit-code) Err bitreich.org 70 i- (- 128 raw-exit-code) Err bitreich.org 70 i- raw-exit-code)) Err bitreich.org 70 i- #+cormanlisp (win32:system %command) Err bitreich.org 70 i- #+gcl (system:system %command) Err bitreich.org 70 i- #+genera (not-implemented-error '%system) Err bitreich.org 70 i- #+(and lispworks os-windows) Err bitreich.org 70 i- (system:call-system %command :current-directory directory :wait t) Err bitreich.org 70 i- #+mcl (ccl::with-cstrs ((%%command %command)) (_system %%command)) Err bitreich.org 70 i- #+mkcl (mkcl:system %command) Err bitreich.org 70 i- #+xcl (system:%run-shell-command %command))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %use-system (command &rest keys Err bitreich.org 70 i- &key input output error-output ignore-error-status &allow-other-keys) Err bitreich.org 70 i- ;; helper for RUN-PROGRAM when using %system Err bitreich.org 70 i- (let (output-result error-output-result exit-code) Err bitreich.org 70 i- (with-program-output ((reduced-output) Err bitreich.org 70 i- output :keys keys :setf output-result) Err bitreich.org 70 i- (with-program-error-output ((reduced-error-output) Err bitreich.org 70 i- error-output :keys keys :setf error-output-result) Err bitreich.org 70 i- (with-program-input ((reduced-input) input :keys keys) Err bitreich.org 70 i- (setf exit-code (apply '%system command Err bitreich.org 70 i- :input reduced-input :output reduced-output Err bitreich.org 70 i- :error-output reduced-error-output keys))))) Err bitreich.org 70 i- (%check-result exit-code Err bitreich.org 70 i- :command command Err bitreich.org 70 i- :ignore-error-status ignore-error-status) Err bitreich.org 70 i- (values output-result error-output-result exit-code))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun run-program (command &rest keys Err bitreich.org 70 i- &key ignore-error-status (force-shell nil force-shell-suppliedp) Err bitreich.org 70 i- input (if-input-does-not-exist :error) Err bitreich.org 70 i- output (if-output-exists :supersede) Err bitreich.org 70 i- error-output (if-error-output-exists :supersede) Err bitreich.org 70 i- (element-type #-clozure *default-stream-element-type* #+clozure 'character) Err bitreich.org 70 i- (external-format *utf-8-external-format*) Err bitreich.org 70 i- &allow-other-keys) Err bitreich.org 70 i- "Run program specified by COMMAND, Err bitreich.org 70 i-either a list of strings specifying a program and list of arguments, Err bitreich.org 70 i-or a string specifying a shell command (/bin/sh on Unix, CMD.EXE on Windows); Err bitreich.org 70 i-_synchronously_ process its output as specified and return the processing results Err bitreich.org 70 i-when the program and its output processing are complete. Err bitreich.org 70 i- Err bitreich.org 70 i-Always call a shell (rather than directly execute the command when possible) Err bitreich.org 70 i-if FORCE-SHELL is specified. Similarly, never call a shell if FORCE-SHELL is Err bitreich.org 70 i-specified to be NIL. Err bitreich.org 70 i- Err bitreich.org 70 i-Signal a continuable SUBPROCESS-ERROR if the process wasn't successful (exit-code 0), Err bitreich.org 70 i-unless IGNORE-ERROR-STATUS is specified. Err bitreich.org 70 i- Err bitreich.org 70 i-If OUTPUT is a pathname, a string designating a pathname, or NIL (the default) Err bitreich.org 70 i-designating the null device, the file at that path is used as output. Err bitreich.org 70 i-If it's :INTERACTIVE, output is inherited from the current process; Err bitreich.org 70 i-beware that this may be different from your *STANDARD-OUTPUT*, Err bitreich.org 70 i-and under SLIME will be on your *inferior-lisp* buffer. Err bitreich.org 70 i-If it's T, output goes to your current *STANDARD-OUTPUT* stream. Err bitreich.org 70 i-Otherwise, OUTPUT should be a value that is a suitable first argument to Err bitreich.org 70 i-SLURP-INPUT-STREAM (qv.), or a list of such a value and keyword arguments. Err bitreich.org 70 i-In this case, RUN-PROGRAM will create a temporary stream for the program output; Err bitreich.org 70 i-the program output, in that stream, will be processed by a call to SLURP-INPUT-STREAM, Err bitreich.org 70 i-using OUTPUT as the first argument (or the first element of OUTPUT, and the rest as keywords). Err bitreich.org 70 i-The primary value resulting from that call (or NIL if no call was needed) Err bitreich.org 70 i-will be the first value returned by RUN-PROGRAM. Err bitreich.org 70 i-E.g., using :OUTPUT :STRING will have it return the entire output stream as a string. Err bitreich.org 70 i-And using :OUTPUT '(:STRING :STRIPPED T) will have it return the same string Err bitreich.org 70 i-stripped of any ending newline. Err bitreich.org 70 i- Err bitreich.org 70 i-IF-OUTPUT-EXISTS, which is only meaningful if OUTPUT is a string or a Err bitreich.org 70 i-pathname, can take the values :ERROR, :APPEND, and :SUPERSEDE (the Err bitreich.org 70 i-default). The meaning of these values and their effect on the case Err bitreich.org 70 i-where OUTPUT does not exist, is analogous to the IF-EXISTS parameter Err bitreich.org 70 i-to OPEN with :DIRECTION :OUTPUT. Err bitreich.org 70 i- Err bitreich.org 70 i-ERROR-OUTPUT is similar to OUTPUT, except that the resulting value is returned Err bitreich.org 70 i-as the second value of RUN-PROGRAM. T designates the *ERROR-OUTPUT*. Err bitreich.org 70 i-Also :OUTPUT means redirecting the error output to the output stream, Err bitreich.org 70 i-in which case NIL is returned. Err bitreich.org 70 i- Err bitreich.org 70 i-IF-ERROR-OUTPUT-EXISTS is similar to IF-OUTPUT-EXIST, except that it Err bitreich.org 70 i-affects ERROR-OUTPUT rather than OUTPUT. Err bitreich.org 70 i- Err bitreich.org 70 i-INPUT is similar to OUTPUT, except that VOMIT-OUTPUT-STREAM is used, Err bitreich.org 70 i-no value is returned, and T designates the *STANDARD-INPUT*. Err bitreich.org 70 i- Err bitreich.org 70 i-IF-INPUT-DOES-NOT-EXIST, which is only meaningful if INPUT is a string Err bitreich.org 70 i-or a pathname, can take the values :CREATE and :ERROR (the Err bitreich.org 70 i-default). The meaning of these values is analogous to the Err bitreich.org 70 i-IF-DOES-NOT-EXIST parameter to OPEN with :DIRECTION :INPUT. Err bitreich.org 70 i- Err bitreich.org 70 i-ELEMENT-TYPE and EXTERNAL-FORMAT are passed on Err bitreich.org 70 i-to your Lisp implementation, when applicable, for creation of the output stream. Err bitreich.org 70 i- Err bitreich.org 70 i-One and only one of the stream slurping or vomiting may or may not happen Err bitreich.org 70 i-in parallel in parallel with the subprocess, Err bitreich.org 70 i-depending on options and implementation, Err bitreich.org 70 i-and with priority being given to output processing. Err bitreich.org 70 i-Other streams are completely produced or consumed Err bitreich.org 70 i-before or after the subprocess is spawned, using temporary files. Err bitreich.org 70 i- Err bitreich.org 70 i-RUN-PROGRAM returns 3 values: Err bitreich.org 70 i-0- the result of the OUTPUT slurping if any, or NIL Err bitreich.org 70 i-1- the result of the ERROR-OUTPUT slurping if any, or NIL Err bitreich.org 70 i-2- either 0 if the subprocess exited with success status, Err bitreich.org 70 i-or an indication of failure via the EXIT-CODE of the process" Err bitreich.org 70 i- (declare (ignorable input output error-output if-input-does-not-exist if-output-exists Err bitreich.org 70 i- if-error-output-exists element-type external-format ignore-error-status)) Err bitreich.org 70 i- #-(or abcl allegro clasp clisp clozure cmucl cormanlisp ecl gcl lispworks mcl mkcl sbcl scl xcl) Err bitreich.org 70 i- (not-implemented-error 'run-program) Err bitreich.org 70 i- (apply (if (or force-shell Err bitreich.org 70 i- ;; Per doc string, set FORCE-SHELL to T if we get command as a string. Err bitreich.org 70 i- ;; But don't override user's specified preference. [2015/06/29:rpg] Err bitreich.org 70 i- (and (stringp command) Err bitreich.org 70 i- (or (not force-shell-suppliedp) Err bitreich.org 70 i- #-(or allegro clisp clozure sbcl) (os-cond ((os-windows-p) t)))) Err bitreich.org 70 i- #+(or clasp clisp cormanlisp gcl (and lispworks os-windows) mcl xcl) t Err bitreich.org 70 i- ;; A race condition in ECL <= 16.0.0 prevents using ext:run-program Err bitreich.org 70 i- #+ecl #.(if-let (ver (parse-version (lisp-implementation-version))) Err bitreich.org 70 i- (lexicographic<= '< ver '(16 0 0))) Err bitreich.org 70 i- #+(and lispworks os-unix) (%interactivep input output error-output)) Err bitreich.org 70 i- '%use-system '%use-launch-program) Err bitreich.org 70 i- command keys))) Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/uiop-3.3.2/stream.lisp b/3rdparties/software/uiop-3.3.2/stream.lisp /scm/clic/file/3rdparties/software/uiop-3.3.2/stream.lisp.gph bitreich.org 70 i@@ -1,718 +0,0 @@ Err bitreich.org 70 i-;;;; --------------------------------------------------------------------------- Err bitreich.org 70 i-;;;; Utilities related to streams Err bitreich.org 70 i- Err bitreich.org 70 i-(uiop/package:define-package :uiop/stream Err bitreich.org 70 i- (:use :uiop/common-lisp :uiop/package :uiop/utility :uiop/os :uiop/pathname :uiop/filesystem) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- #:*default-stream-element-type* Err bitreich.org 70 i- #:*stdin* #:setup-stdin #:*stdout* #:setup-stdout #:*stderr* #:setup-stderr Err bitreich.org 70 i- #:detect-encoding #:*encoding-detection-hook* #:always-default-encoding Err bitreich.org 70 i- #:encoding-external-format #:*encoding-external-format-hook* #:default-encoding-external-format Err bitreich.org 70 i- #:*default-encoding* #:*utf-8-external-format* Err bitreich.org 70 i- #:with-safe-io-syntax #:call-with-safe-io-syntax #:safe-read-from-string Err bitreich.org 70 i- #:with-output #:output-string #:with-input #:input-string Err bitreich.org 70 i- #:with-input-file #:call-with-input-file #:with-output-file #:call-with-output-file Err bitreich.org 70 i- #:null-device-pathname #:call-with-null-input #:with-null-input Err bitreich.org 70 i- #:call-with-null-output #:with-null-output Err bitreich.org 70 i- #:finish-outputs #:format! #:safe-format! Err bitreich.org 70 i- #:copy-stream-to-stream #:concatenate-files #:copy-file Err bitreich.org 70 i- #:slurp-stream-string #:slurp-stream-lines #:slurp-stream-line Err bitreich.org 70 i- #:slurp-stream-forms #:slurp-stream-form Err bitreich.org 70 i- #:read-file-string #:read-file-line #:read-file-lines #:safe-read-file-line Err bitreich.org 70 i- #:read-file-forms #:read-file-form #:safe-read-file-form Err bitreich.org 70 i- #:eval-input #:eval-thunk #:standard-eval-thunk Err bitreich.org 70 i- #:println #:writeln Err bitreich.org 70 i- #:file-stream-p #:file-or-synonym-stream-p Err bitreich.org 70 i- ;; Temporary files Err bitreich.org 70 i- #:*temporary-directory* #:temporary-directory #:default-temporary-directory Err bitreich.org 70 i- #:setup-temporary-directory Err bitreich.org 70 i- #:call-with-temporary-file #:with-temporary-file Err bitreich.org 70 i- #:add-pathname-suffix #:tmpize-pathname Err bitreich.org 70 i- #:call-with-staging-pathname #:with-staging-pathname)) Err bitreich.org 70 i-(in-package :uiop/stream) Err bitreich.org 70 i- Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defvar *default-stream-element-type* Err bitreich.org 70 i- (or #+(or abcl cmucl cormanlisp scl xcl) 'character Err bitreich.org 70 i- #+lispworks 'lw:simple-char Err bitreich.org 70 i- :default) Err bitreich.org 70 i- "default element-type for open (depends on the current CL implementation)") Err bitreich.org 70 i- Err bitreich.org 70 i- (defvar *stdin* *standard-input* Err bitreich.org 70 i- "the original standard input stream at startup") Err bitreich.org 70 i- Err bitreich.org 70 i- (defun setup-stdin () Err bitreich.org 70 i- (setf *stdin* Err bitreich.org 70 i- #.(or #+clozure 'ccl::*stdin* Err bitreich.org 70 i- #+(or cmucl scl) 'system:*stdin* Err bitreich.org 70 i- #+(or clasp ecl) 'ext::+process-standard-input+ Err bitreich.org 70 i- #+sbcl 'sb-sys:*stdin* Err bitreich.org 70 i- '*standard-input*))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defvar *stdout* *standard-output* Err bitreich.org 70 i- "the original standard output stream at startup") Err bitreich.org 70 i- Err bitreich.org 70 i- (defun setup-stdout () Err bitreich.org 70 i- (setf *stdout* Err bitreich.org 70 i- #.(or #+clozure 'ccl::*stdout* Err bitreich.org 70 i- #+(or cmucl scl) 'system:*stdout* Err bitreich.org 70 i- #+(or clasp ecl) 'ext::+process-standard-output+ Err bitreich.org 70 i- #+sbcl 'sb-sys:*stdout* Err bitreich.org 70 i- '*standard-output*))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defvar *stderr* *error-output* Err bitreich.org 70 i- "the original error output stream at startup") Err bitreich.org 70 i- Err bitreich.org 70 i- (defun setup-stderr () Err bitreich.org 70 i- (setf *stderr* Err bitreich.org 70 i- #.(or #+allegro 'excl::*stderr* Err bitreich.org 70 i- #+clozure 'ccl::*stderr* Err bitreich.org 70 i- #+(or cmucl scl) 'system:*stderr* Err bitreich.org 70 i- #+(or clasp ecl) 'ext::+process-error-output+ Err bitreich.org 70 i- #+sbcl 'sb-sys:*stderr* Err bitreich.org 70 i- '*error-output*))) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Run them now. In image.lisp, we'll register them to be run at image restart. Err bitreich.org 70 i- (setup-stdin) (setup-stdout) (setup-stderr)) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Encodings (mostly hooks only; full support requires asdf-encodings) Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defparameter *default-encoding* Err bitreich.org 70 i- ;; preserve explicit user changes to something other than the legacy default :default Err bitreich.org 70 i- (or (if-let (previous (and (boundp '*default-encoding*) (symbol-value '*default-encoding*))) Err bitreich.org 70 i- (unless (eq previous :default) previous)) Err bitreich.org 70 i- :utf-8) Err bitreich.org 70 i- "Default encoding for source files. Err bitreich.org 70 i-The default value :utf-8 is the portable thing. Err bitreich.org 70 i-The legacy behavior was :default. Err bitreich.org 70 i-If you (asdf:load-system :asdf-encodings) then Err bitreich.org 70 i-you will have autodetection via *encoding-detection-hook* below, Err bitreich.org 70 i-reading emacs-style -*- coding: utf-8 -*- specifications, Err bitreich.org 70 i-and falling back to utf-8 or latin1 if nothing is specified.") Err bitreich.org 70 i- Err bitreich.org 70 i- (defparameter *utf-8-external-format* Err bitreich.org 70 i- (if (featurep :asdf-unicode) Err bitreich.org 70 i- (or #+clisp charset:utf-8 :utf-8) Err bitreich.org 70 i- :default) Err bitreich.org 70 i- "Default :external-format argument to pass to CL:OPEN and also Err bitreich.org 70 i-CL:LOAD or CL:COMPILE-FILE to best process a UTF-8 encoded file. Err bitreich.org 70 i-On modern implementations, this will decode UTF-8 code points as CL characters. Err bitreich.org 70 i-On legacy implementations, it may fall back on some 8-bit encoding, Err bitreich.org 70 i-with non-ASCII code points being read as several CL characters; Err bitreich.org 70 i-hopefully, if done consistently, that won't affect program behavior too much.") Err bitreich.org 70 i- Err bitreich.org 70 i- (defun always-default-encoding (pathname) Err bitreich.org 70 i- "Trivial function to use as *encoding-detection-hook*, Err bitreich.org 70 i-always 'detects' the *default-encoding*" Err bitreich.org 70 i- (declare (ignore pathname)) Err bitreich.org 70 i- *default-encoding*) Err bitreich.org 70 i- Err bitreich.org 70 i- (defvar *encoding-detection-hook* #'always-default-encoding Err bitreich.org 70 i- "Hook for an extension to define a function to automatically detect a file's encoding") Err bitreich.org 70 i- Err bitreich.org 70 i- (defun detect-encoding (pathname) Err bitreich.org 70 i- "Detects the encoding of a specified file, going through user-configurable hooks" Err bitreich.org 70 i- (if (and pathname (not (directory-pathname-p pathname)) (probe-file* pathname)) Err bitreich.org 70 i- (funcall *encoding-detection-hook* pathname) Err bitreich.org 70 i- *default-encoding*)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun default-encoding-external-format (encoding) Err bitreich.org 70 i- "Default, ignorant, function to transform a character ENCODING as a Err bitreich.org 70 i-portable keyword to an implementation-dependent EXTERNAL-FORMAT specification. Err bitreich.org 70 i-Load system ASDF-ENCODINGS to hook in a better one." Err bitreich.org 70 i- (case encoding Err bitreich.org 70 i- (:default :default) ;; for backward-compatibility only. Explicit usage discouraged. Err bitreich.org 70 i- (:utf-8 *utf-8-external-format*) Err bitreich.org 70 i- (otherwise Err bitreich.org 70 i- (cerror "Continue using :external-format :default" (compatfmt "~@") encoding) Err bitreich.org 70 i- :default))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defvar *encoding-external-format-hook* Err bitreich.org 70 i- #'default-encoding-external-format Err bitreich.org 70 i- "Hook for an extension (e.g. ASDF-ENCODINGS) to define a better mapping Err bitreich.org 70 i-from non-default encodings to and implementation-defined external-format's") Err bitreich.org 70 i- Err bitreich.org 70 i- (defun encoding-external-format (encoding) Err bitreich.org 70 i- "Transform a portable ENCODING keyword to an implementation-dependent EXTERNAL-FORMAT, Err bitreich.org 70 i-going through all the proper hooks." Err bitreich.org 70 i- (funcall *encoding-external-format-hook* (or encoding *default-encoding*)))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Safe syntax Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defvar *standard-readtable* (with-standard-io-syntax *readtable*) Err bitreich.org 70 i- "The standard readtable, implementing the syntax specified by the CLHS. Err bitreich.org 70 i-It must never be modified, though only good implementations will even enforce that.") Err bitreich.org 70 i- Err bitreich.org 70 i- (defmacro with-safe-io-syntax ((&key (package :cl)) &body body) Err bitreich.org 70 i- "Establish safe CL reader options around the evaluation of BODY" Err bitreich.org 70 i- `(call-with-safe-io-syntax #'(lambda () (let ((*package* (find-package ,package))) ,@body)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun call-with-safe-io-syntax (thunk &key (package :cl)) Err bitreich.org 70 i- (with-standard-io-syntax Err bitreich.org 70 i- (let ((*package* (find-package package)) Err bitreich.org 70 i- (*read-default-float-format* 'double-float) Err bitreich.org 70 i- (*print-readably* nil) Err bitreich.org 70 i- (*read-eval* nil)) Err bitreich.org 70 i- (funcall thunk)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun safe-read-from-string (string &key (package :cl) (eof-error-p t) eof-value (start 0) end preserve-whitespace) Err bitreich.org 70 i- "Read from STRING using a safe syntax, as per WITH-SAFE-IO-SYNTAX" Err bitreich.org 70 i- (with-safe-io-syntax (:package package) Err bitreich.org 70 i- (read-from-string string eof-error-p eof-value :start start :end end :preserve-whitespace preserve-whitespace)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Output helpers Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun call-with-output-file (pathname thunk Err bitreich.org 70 i- &key Err bitreich.org 70 i- (element-type *default-stream-element-type*) Err bitreich.org 70 i- (external-format *utf-8-external-format*) Err bitreich.org 70 i- (if-exists :error) Err bitreich.org 70 i- (if-does-not-exist :create)) Err bitreich.org 70 i- "Open FILE for input with given recognizes options, call THUNK with the resulting stream. Err bitreich.org 70 i-Other keys are accepted but discarded." Err bitreich.org 70 i- (with-open-file (s pathname :direction :output Err bitreich.org 70 i- :element-type element-type Err bitreich.org 70 i- :external-format external-format Err bitreich.org 70 i- :if-exists if-exists Err bitreich.org 70 i- :if-does-not-exist if-does-not-exist) Err bitreich.org 70 i- (funcall thunk s))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmacro with-output-file ((var pathname &rest keys Err bitreich.org 70 i- &key element-type external-format if-exists if-does-not-exist) Err bitreich.org 70 i- &body body) Err bitreich.org 70 i- (declare (ignore element-type external-format if-exists if-does-not-exist)) Err bitreich.org 70 i- `(call-with-output-file ,pathname #'(lambda (,var) ,@body) ,@keys)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun call-with-output (output function &key keys) Err bitreich.org 70 i- "Calls FUNCTION with an actual stream argument, Err bitreich.org 70 i-behaving like FORMAT with respect to how stream designators are interpreted: Err bitreich.org 70 i-If OUTPUT is a STREAM, use it as the stream. Err bitreich.org 70 i-If OUTPUT is NIL, use a STRING-OUTPUT-STREAM as the stream, and return the resulting string. Err bitreich.org 70 i-If OUTPUT is T, use *STANDARD-OUTPUT* as the stream. Err bitreich.org 70 i-If OUTPUT is a STRING with a fill-pointer, use it as a string-output-stream. Err bitreich.org 70 i-If OUTPUT is a PATHNAME, open the file and write to it, passing KEYS to WITH-OUTPUT-FILE Err bitreich.org 70 i--- this latter as an extension since ASDF 3.1. Err bitreich.org 70 i-Otherwise, signal an error." Err bitreich.org 70 i- (etypecase output Err bitreich.org 70 i- (null Err bitreich.org 70 i- (with-output-to-string (stream) (funcall function stream))) Err bitreich.org 70 i- ((eql t) Err bitreich.org 70 i- (funcall function *standard-output*)) Err bitreich.org 70 i- (stream Err bitreich.org 70 i- (funcall function output)) Err bitreich.org 70 i- (string Err bitreich.org 70 i- (assert (fill-pointer output)) Err bitreich.org 70 i- (with-output-to-string (stream output) (funcall function stream))) Err bitreich.org 70 i- (pathname Err bitreich.org 70 i- (apply 'call-with-output-file output function keys)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmacro with-output ((output-var &optional (value output-var)) &body body) Err bitreich.org 70 i- "Bind OUTPUT-VAR to an output stream, coercing VALUE (default: previous binding of OUTPUT-VAR) Err bitreich.org 70 i-as per FORMAT, and evaluate BODY within the scope of this binding." Err bitreich.org 70 i- `(call-with-output ,value #'(lambda (,output-var) ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun output-string (string &optional output) Err bitreich.org 70 i- "If the desired OUTPUT is not NIL, print the string to the output; otherwise return the string" Err bitreich.org 70 i- (if output Err bitreich.org 70 i- (with-output (output) (princ string output)) Err bitreich.org 70 i- string))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Input helpers Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun call-with-input-file (pathname thunk Err bitreich.org 70 i- &key Err bitreich.org 70 i- (element-type *default-stream-element-type*) Err bitreich.org 70 i- (external-format *utf-8-external-format*) Err bitreich.org 70 i- (if-does-not-exist :error)) Err bitreich.org 70 i- "Open FILE for input with given recognizes options, call THUNK with the resulting stream. Err bitreich.org 70 i-Other keys are accepted but discarded." Err bitreich.org 70 i- (with-open-file (s pathname :direction :input Err bitreich.org 70 i- :element-type element-type Err bitreich.org 70 i- :external-format external-format Err bitreich.org 70 i- :if-does-not-exist if-does-not-exist) Err bitreich.org 70 i- (funcall thunk s))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmacro with-input-file ((var pathname &rest keys Err bitreich.org 70 i- &key element-type external-format if-does-not-exist) Err bitreich.org 70 i- &body body) Err bitreich.org 70 i- (declare (ignore element-type external-format if-does-not-exist)) Err bitreich.org 70 i- `(call-with-input-file ,pathname #'(lambda (,var) ,@body) ,@keys)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun call-with-input (input function &key keys) Err bitreich.org 70 i- "Calls FUNCTION with an actual stream argument, interpreting Err bitreich.org 70 i-stream designators like READ, but also coercing strings to STRING-INPUT-STREAM, Err bitreich.org 70 i-and PATHNAME to FILE-STREAM. Err bitreich.org 70 i-If INPUT is a STREAM, use it as the stream. Err bitreich.org 70 i-If INPUT is NIL, use a *STANDARD-INPUT* as the stream. Err bitreich.org 70 i-If INPUT is T, use *TERMINAL-IO* as the stream. Err bitreich.org 70 i-If INPUT is a STRING, use it as a string-input-stream. Err bitreich.org 70 i-If INPUT is a PATHNAME, open it, passing KEYS to WITH-INPUT-FILE Err bitreich.org 70 i--- the latter is an extension since ASDF 3.1. Err bitreich.org 70 i-Otherwise, signal an error." Err bitreich.org 70 i- (etypecase input Err bitreich.org 70 i- (null (funcall function *standard-input*)) Err bitreich.org 70 i- ((eql t) (funcall function *terminal-io*)) Err bitreich.org 70 i- (stream (funcall function input)) Err bitreich.org 70 i- (string (with-input-from-string (stream input) (funcall function stream))) Err bitreich.org 70 i- (pathname (apply 'call-with-input-file input function keys)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmacro with-input ((input-var &optional (value input-var)) &body body) Err bitreich.org 70 i- "Bind INPUT-VAR to an input stream, coercing VALUE (default: previous binding of INPUT-VAR) Err bitreich.org 70 i-as per CALL-WITH-INPUT, and evaluate BODY within the scope of this binding." Err bitreich.org 70 i- `(call-with-input ,value #'(lambda (,input-var) ,@body))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun input-string (&optional input) Err bitreich.org 70 i- "If the desired INPUT is a string, return that string; otherwise slurp the INPUT into a string Err bitreich.org 70 i-and return that" Err bitreich.org 70 i- (if (stringp input) Err bitreich.org 70 i- input Err bitreich.org 70 i- (with-input (input) (funcall 'slurp-stream-string input))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Null device Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun null-device-pathname () Err bitreich.org 70 i- "Pathname to a bit bucket device that discards any information written to it Err bitreich.org 70 i-and always returns EOF when read from" Err bitreich.org 70 i- (os-cond Err bitreich.org 70 i- ((os-unix-p) #p"/dev/null") Err bitreich.org 70 i- ((os-windows-p) #p"NUL") ;; Q: how many Lisps accept the #p"NUL:" syntax? Err bitreich.org 70 i- (t (error "No /dev/null on your OS")))) Err bitreich.org 70 i- (defun call-with-null-input (fun &rest keys &key element-type external-format if-does-not-exist) Err bitreich.org 70 i- "Call FUN with an input stream from the null device; pass keyword arguments to OPEN." Err bitreich.org 70 i- (declare (ignore element-type external-format if-does-not-exist)) Err bitreich.org 70 i- (apply 'call-with-input-file (null-device-pathname) fun keys)) Err bitreich.org 70 i- (defmacro with-null-input ((var &rest keys Err bitreich.org 70 i- &key element-type external-format if-does-not-exist) Err bitreich.org 70 i- &body body) Err bitreich.org 70 i- (declare (ignore element-type external-format if-does-not-exist)) Err bitreich.org 70 i- "Evaluate BODY in a context when VAR is bound to an input stream accessing the null device. Err bitreich.org 70 i-Pass keyword arguments to OPEN." Err bitreich.org 70 i- `(call-with-null-input #'(lambda (,var) ,@body) ,@keys)) Err bitreich.org 70 i- (defun call-with-null-output (fun Err bitreich.org 70 i- &key (element-type *default-stream-element-type*) Err bitreich.org 70 i- (external-format *utf-8-external-format*) Err bitreich.org 70 i- (if-exists :overwrite) Err bitreich.org 70 i- (if-does-not-exist :error)) Err bitreich.org 70 i- "Call FUN with an output stream to the null device; pass keyword arguments to OPEN." Err bitreich.org 70 i- (call-with-output-file Err bitreich.org 70 i- (null-device-pathname) fun Err bitreich.org 70 i- :element-type element-type :external-format external-format Err bitreich.org 70 i- :if-exists if-exists :if-does-not-exist if-does-not-exist)) Err bitreich.org 70 i- (defmacro with-null-output ((var &rest keys Err bitreich.org 70 i- &key element-type external-format if-does-not-exist if-exists) Err bitreich.org 70 i- &body body) Err bitreich.org 70 i- "Evaluate BODY in a context when VAR is bound to an output stream accessing the null device. Err bitreich.org 70 i-Pass keyword arguments to OPEN." Err bitreich.org 70 i- (declare (ignore element-type external-format if-exists if-does-not-exist)) Err bitreich.org 70 i- `(call-with-null-output #'(lambda (,var) ,@body) ,@keys))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Ensure output buffers are flushed Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun finish-outputs (&rest streams) Err bitreich.org 70 i- "Finish output on the main output streams as well as any specified one. Err bitreich.org 70 i-Useful for portably flushing I/O before user input or program exit." Err bitreich.org 70 i- ;; CCL notably buffers its stream output by default. Err bitreich.org 70 i- (dolist (s (append streams Err bitreich.org 70 i- (list *stdout* *stderr* *error-output* *standard-output* *trace-output* Err bitreich.org 70 i- *debug-io* *terminal-io* *query-io*))) Err bitreich.org 70 i- (ignore-errors (finish-output s))) Err bitreich.org 70 i- (values)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun format! (stream format &rest args) Err bitreich.org 70 i- "Just like format, but call finish-outputs before and after the output." Err bitreich.org 70 i- (finish-outputs stream) Err bitreich.org 70 i- (apply 'format stream format args) Err bitreich.org 70 i- (finish-outputs stream)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun safe-format! (stream format &rest args) Err bitreich.org 70 i- "Variant of FORMAT that is safe against both Err bitreich.org 70 i-dangerous syntax configuration and errors while printing." Err bitreich.org 70 i- (with-safe-io-syntax () Err bitreich.org 70 i- (ignore-errors (apply 'format! stream format args)) Err bitreich.org 70 i- (finish-outputs stream)))) ; just in case format failed Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Simple Whole-Stream processing Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun copy-stream-to-stream (input output &key element-type buffer-size linewise prefix) Err bitreich.org 70 i- "Copy the contents of the INPUT stream into the OUTPUT stream. Err bitreich.org 70 i-If LINEWISE is true, then read and copy the stream line by line, with an optional PREFIX. Err bitreich.org 70 i-Otherwise, using WRITE-SEQUENCE using a buffer of size BUFFER-SIZE." Err bitreich.org 70 i- (with-open-stream (input input) Err bitreich.org 70 i- (if linewise Err bitreich.org 70 i- (loop* :for (line eof) = (multiple-value-list (read-line input nil nil)) Err bitreich.org 70 i- :while line :do Err bitreich.org 70 i- (when prefix (princ prefix output)) Err bitreich.org 70 i- (princ line output) Err bitreich.org 70 i- (unless eof (terpri output)) Err bitreich.org 70 i- (finish-output output) Err bitreich.org 70 i- (when eof (return))) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- :with buffer-size = (or buffer-size 8192) Err bitreich.org 70 i- :with buffer = (make-array (list buffer-size) :element-type (or element-type 'character)) Err bitreich.org 70 i- :for end = (read-sequence buffer input) Err bitreich.org 70 i- :until (zerop end) Err bitreich.org 70 i- :do (write-sequence buffer output :end end) Err bitreich.org 70 i- (when (< end buffer-size) (return)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun concatenate-files (inputs output) Err bitreich.org 70 i- "create a new OUTPUT file the contents of which a the concatenate of the INPUTS files." Err bitreich.org 70 i- (with-open-file (o output :element-type '(unsigned-byte 8) Err bitreich.org 70 i- :direction :output :if-exists :rename-and-delete) Err bitreich.org 70 i- (dolist (input inputs) Err bitreich.org 70 i- (with-open-file (i input :element-type '(unsigned-byte 8) Err bitreich.org 70 i- :direction :input :if-does-not-exist :error) Err bitreich.org 70 i- (copy-stream-to-stream i o :element-type '(unsigned-byte 8)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun copy-file (input output) Err bitreich.org 70 i- "Copy contents of the INPUT file to the OUTPUT file" Err bitreich.org 70 i- ;; Not available on LW personal edition or LW 6.0 on Mac: (lispworks:copy-file i f) Err bitreich.org 70 i- #+allegro Err bitreich.org 70 i- (excl.osi:copy-file input output) Err bitreich.org 70 i- #+ecl Err bitreich.org 70 i- (ext:copy-file input output) Err bitreich.org 70 i- #-(or allegro ecl) Err bitreich.org 70 i- (concatenate-files (list input) output)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun slurp-stream-string (input &key (element-type 'character) stripped) Err bitreich.org 70 i- "Read the contents of the INPUT stream as a string" Err bitreich.org 70 i- (let ((string Err bitreich.org 70 i- (with-open-stream (input input) Err bitreich.org 70 i- (with-output-to-string (output) Err bitreich.org 70 i- (copy-stream-to-stream input output :element-type element-type))))) Err bitreich.org 70 i- (if stripped (stripln string) string))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun slurp-stream-lines (input &key count) Err bitreich.org 70 i- "Read the contents of the INPUT stream as a list of lines, return those lines. Err bitreich.org 70 i- Err bitreich.org 70 i-Note: relies on the Lisp's READ-LINE, but additionally removes any remaining CR Err bitreich.org 70 i-from the line-ending if the file or stream had CR+LF but Lisp only removed LF. Err bitreich.org 70 i- Err bitreich.org 70 i-Read no more than COUNT lines." Err bitreich.org 70 i- (check-type count (or null integer)) Err bitreich.org 70 i- (with-open-stream (input input) Err bitreich.org 70 i- (loop :for n :from 0 Err bitreich.org 70 i- :for l = (and (or (not count) (< n count)) Err bitreich.org 70 i- (read-line input nil nil)) Err bitreich.org 70 i- ;; stripln: to remove CR when the OS sends CRLF and Lisp only remove LF Err bitreich.org 70 i- :while l :collect (stripln l)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun slurp-stream-line (input &key (at 0)) Err bitreich.org 70 i- "Read the contents of the INPUT stream as a list of lines, Err bitreich.org 70 i-then return the ACCESS-AT of that list of lines using the AT specifier. Err bitreich.org 70 i-PATH defaults to 0, i.e. return the first line. Err bitreich.org 70 i-PATH is typically an integer, or a list of an integer and a function. Err bitreich.org 70 i-If PATH is NIL, it will return all the lines in the file. Err bitreich.org 70 i- Err bitreich.org 70 i-The stream will not be read beyond the Nth lines, Err bitreich.org 70 i-where N is the index specified by path Err bitreich.org 70 i-if path is either an integer or a list that starts with an integer." Err bitreich.org 70 i- (access-at (slurp-stream-lines input :count (access-at-count at)) at)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun slurp-stream-forms (input &key count) Err bitreich.org 70 i- "Read the contents of the INPUT stream as a list of forms, Err bitreich.org 70 i-and return those forms. Err bitreich.org 70 i- Err bitreich.org 70 i-If COUNT is null, read to the end of the stream; Err bitreich.org 70 i-if COUNT is an integer, stop after COUNT forms were read. Err bitreich.org 70 i- Err bitreich.org 70 i-BEWARE: be sure to use WITH-SAFE-IO-SYNTAX, or some variant thereof" Err bitreich.org 70 i- (check-type count (or null integer)) Err bitreich.org 70 i- (loop :with eof = '#:eof Err bitreich.org 70 i- :for n :from 0 Err bitreich.org 70 i- :for form = (if (and count (>= n count)) Err bitreich.org 70 i- eof Err bitreich.org 70 i- (read-preserving-whitespace input nil eof)) Err bitreich.org 70 i- :until (eq form eof) :collect form)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun slurp-stream-form (input &key (at 0)) Err bitreich.org 70 i- "Read the contents of the INPUT stream as a list of forms, Err bitreich.org 70 i-then return the ACCESS-AT of these forms following the AT. Err bitreich.org 70 i-AT defaults to 0, i.e. return the first form. Err bitreich.org 70 i-AT is typically a list of integers. Err bitreich.org 70 i-If AT is NIL, it will return all the forms in the file. Err bitreich.org 70 i- Err bitreich.org 70 i-The stream will not be read beyond the Nth form, Err bitreich.org 70 i-where N is the index specified by path, Err bitreich.org 70 i-if path is either an integer or a list that starts with an integer. Err bitreich.org 70 i- Err bitreich.org 70 i-BEWARE: be sure to use WITH-SAFE-IO-SYNTAX, or some variant thereof" Err bitreich.org 70 i- (access-at (slurp-stream-forms input :count (access-at-count at)) at)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun read-file-string (file &rest keys) Err bitreich.org 70 i- "Open FILE with option KEYS, read its contents as a string" Err bitreich.org 70 i- (apply 'call-with-input-file file 'slurp-stream-string keys)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun read-file-lines (file &rest keys) Err bitreich.org 70 i- "Open FILE with option KEYS, read its contents as a list of lines Err bitreich.org 70 i-BEWARE: be sure to use WITH-SAFE-IO-SYNTAX, or some variant thereof" Err bitreich.org 70 i- (apply 'call-with-input-file file 'slurp-stream-lines keys)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun read-file-line (file &rest keys &key (at 0) &allow-other-keys) Err bitreich.org 70 i- "Open input FILE with option KEYS (except AT), Err bitreich.org 70 i-and read its contents as per SLURP-STREAM-LINE with given AT specifier. Err bitreich.org 70 i-BEWARE: be sure to use WITH-SAFE-IO-SYNTAX, or some variant thereof" Err bitreich.org 70 i- (apply 'call-with-input-file file Err bitreich.org 70 i- #'(lambda (input) (slurp-stream-line input :at at)) Err bitreich.org 70 i- (remove-plist-key :at keys))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun read-file-forms (file &rest keys &key count &allow-other-keys) Err bitreich.org 70 i- "Open input FILE with option KEYS (except COUNT), Err bitreich.org 70 i-and read its contents as per SLURP-STREAM-FORMS with given COUNT. Err bitreich.org 70 i-BEWARE: be sure to use WITH-SAFE-IO-SYNTAX, or some variant thereof" Err bitreich.org 70 i- (apply 'call-with-input-file file Err bitreich.org 70 i- #'(lambda (input) (slurp-stream-forms input :count count)) Err bitreich.org 70 i- (remove-plist-key :count keys))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun read-file-form (file &rest keys &key (at 0) &allow-other-keys) Err bitreich.org 70 i- "Open input FILE with option KEYS (except AT), Err bitreich.org 70 i-and read its contents as per SLURP-STREAM-FORM with given AT specifier. Err bitreich.org 70 i-BEWARE: be sure to use WITH-SAFE-IO-SYNTAX, or some variant thereof" Err bitreich.org 70 i- (apply 'call-with-input-file file Err bitreich.org 70 i- #'(lambda (input) (slurp-stream-form input :at at)) Err bitreich.org 70 i- (remove-plist-key :at keys))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun safe-read-file-line (pathname &rest keys &key (package :cl) &allow-other-keys) Err bitreich.org 70 i- "Reads the specified line from the top of a file using a safe standardized syntax. Err bitreich.org 70 i-Extracts the line using READ-FILE-LINE, Err bitreich.org 70 i-within an WITH-SAFE-IO-SYNTAX using the specified PACKAGE." Err bitreich.org 70 i- (with-safe-io-syntax (:package package) Err bitreich.org 70 i- (apply 'read-file-line pathname (remove-plist-key :package keys)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun safe-read-file-form (pathname &rest keys &key (package :cl) &allow-other-keys) Err bitreich.org 70 i- "Reads the specified form from the top of a file using a safe standardized syntax. Err bitreich.org 70 i-Extracts the form using READ-FILE-FORM, Err bitreich.org 70 i-within an WITH-SAFE-IO-SYNTAX using the specified PACKAGE." Err bitreich.org 70 i- (with-safe-io-syntax (:package package) Err bitreich.org 70 i- (apply 'read-file-form pathname (remove-plist-key :package keys)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun eval-input (input) Err bitreich.org 70 i- "Portably read and evaluate forms from INPUT, return the last values." Err bitreich.org 70 i- (with-input (input) Err bitreich.org 70 i- (loop :with results :with eof ='#:eof Err bitreich.org 70 i- :for form = (read input nil eof) Err bitreich.org 70 i- :until (eq form eof) Err bitreich.org 70 i- :do (setf results (multiple-value-list (eval form))) Err bitreich.org 70 i- :finally (return (values-list results))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun eval-thunk (thunk) Err bitreich.org 70 i- "Evaluate a THUNK of code: Err bitreich.org 70 i-If a function, FUNCALL it without arguments. Err bitreich.org 70 i-If a constant literal and not a sequence, return it. Err bitreich.org 70 i-If a cons or a symbol, EVAL it. Err bitreich.org 70 i-If a string, repeatedly read and evaluate from it, returning the last values." Err bitreich.org 70 i- (etypecase thunk Err bitreich.org 70 i- ((or boolean keyword number character pathname) thunk) Err bitreich.org 70 i- ((or cons symbol) (eval thunk)) Err bitreich.org 70 i- (function (funcall thunk)) Err bitreich.org 70 i- (string (eval-input thunk)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun standard-eval-thunk (thunk &key (package :cl)) Err bitreich.org 70 i- "Like EVAL-THUNK, but in a more standardized evaluation context." Err bitreich.org 70 i- ;; Note: it's "standard-" not "safe-", because evaluation is never safe. Err bitreich.org 70 i- (when thunk Err bitreich.org 70 i- (with-safe-io-syntax (:package package) Err bitreich.org 70 i- (let ((*read-eval* t)) Err bitreich.org 70 i- (eval-thunk thunk)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun println (x &optional (stream *standard-output*)) Err bitreich.org 70 i- "Variant of PRINC that also calls TERPRI afterwards" Err bitreich.org 70 i- (princ x stream) (terpri stream) (finish-output stream) (values)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun writeln (x &rest keys &key (stream *standard-output*) &allow-other-keys) Err bitreich.org 70 i- "Variant of WRITE that also calls TERPRI afterwards" Err bitreich.org 70 i- (apply 'write x keys) (terpri stream) (finish-output stream) (values))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Using temporary files Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun default-temporary-directory () Err bitreich.org 70 i- "Return a default directory to use for temporary files" Err bitreich.org 70 i- (os-cond Err bitreich.org 70 i- ((os-unix-p) Err bitreich.org 70 i- (or (getenv-pathname "TMPDIR" :ensure-directory t) Err bitreich.org 70 i- (parse-native-namestring "/tmp/"))) Err bitreich.org 70 i- ((os-windows-p) Err bitreich.org 70 i- (getenv-pathname "TEMP" :ensure-directory t)) Err bitreich.org 70 i- (t (subpathname (user-homedir-pathname) "tmp/")))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defvar *temporary-directory* nil "User-configurable location for temporary files") Err bitreich.org 70 i- Err bitreich.org 70 i- (defun temporary-directory () Err bitreich.org 70 i- "Return a directory to use for temporary files" Err bitreich.org 70 i- (or *temporary-directory* (default-temporary-directory))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun setup-temporary-directory () Err bitreich.org 70 i- "Configure a default temporary directory to use." Err bitreich.org 70 i- (setf *temporary-directory* (default-temporary-directory)) Err bitreich.org 70 i- #+gcl (setf system::*tmp-dir* *temporary-directory*)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun call-with-temporary-file Err bitreich.org 70 i- (thunk &key Err bitreich.org 70 i- (want-stream-p t) (want-pathname-p t) (direction :io) keep after Err bitreich.org 70 i- directory (type "tmp" typep) prefix (suffix (when typep "-tmp")) Err bitreich.org 70 i- (element-type *default-stream-element-type*) Err bitreich.org 70 i- (external-format *utf-8-external-format*)) Err bitreich.org 70 i- "Call a THUNK with stream and/or pathname arguments identifying a temporary file. Err bitreich.org 70 i- Err bitreich.org 70 i-The temporary file's pathname will be based on concatenating Err bitreich.org 70 i-PREFIX (or \"tmp\" if it's NIL), a random alphanumeric string, Err bitreich.org 70 i-and optional SUFFIX (defaults to \"-tmp\" if a type was provided) Err bitreich.org 70 i-and TYPE (defaults to \"tmp\", using a dot as separator if not NIL), Err bitreich.org 70 i-within DIRECTORY (defaulting to the TEMPORARY-DIRECTORY) if the PREFIX isn't absolute. Err bitreich.org 70 i- Err bitreich.org 70 i-The file will be open with specified DIRECTION (defaults to :IO), Err bitreich.org 70 i-ELEMENT-TYPE (defaults to *DEFAULT-STREAM-ELEMENT-TYPE*) and Err bitreich.org 70 i-EXTERNAL-FORMAT (defaults to *UTF-8-EXTERNAL-FORMAT*). Err bitreich.org 70 i-If WANT-STREAM-P is true (the defaults to T), then THUNK will then be CALL-FUNCTION'ed Err bitreich.org 70 i-with the stream and the pathname (if WANT-PATHNAME-P is true, defaults to T), Err bitreich.org 70 i-and stream will be closed after the THUNK exits (either normally or abnormally). Err bitreich.org 70 i-If WANT-STREAM-P is false, then WANT-PATHAME-P must be true, and then Err bitreich.org 70 i-THUNK is only CALL-FUNCTION'ed after the stream is closed, with the pathname as argument. Err bitreich.org 70 i-Upon exit of THUNK, the AFTER thunk if defined is CALL-FUNCTION'ed with the pathname as argument. Err bitreich.org 70 i-If AFTER is defined, its results are returned, otherwise, the results of THUNK are returned. Err bitreich.org 70 i-Finally, the file will be deleted, unless the KEEP argument when CALL-FUNCTION'ed returns true." Err bitreich.org 70 i- #+xcl (declare (ignorable typep)) Err bitreich.org 70 i- (check-type direction (member :output :io)) Err bitreich.org 70 i- (assert (or want-stream-p want-pathname-p)) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- :with prefix-pn = (ensure-absolute-pathname Err bitreich.org 70 i- (or prefix "tmp") Err bitreich.org 70 i- (or (ensure-pathname Err bitreich.org 70 i- directory Err bitreich.org 70 i- :namestring :native Err bitreich.org 70 i- :ensure-directory t Err bitreich.org 70 i- :ensure-physical t) Err bitreich.org 70 i- #'temporary-directory)) Err bitreich.org 70 i- :with prefix-nns = (native-namestring prefix-pn) Err bitreich.org 70 i- :with results = (progn (ensure-directories-exist prefix-pn) Err bitreich.org 70 i- ()) Err bitreich.org 70 i- :for counter :from (random (expt 36 #-gcl 8 #+gcl 5)) Err bitreich.org 70 i- :for pathname = (parse-native-namestring Err bitreich.org 70 i- (format nil "~A~36R~@[~A~]~@[.~A~]" Err bitreich.org 70 i- prefix-nns counter suffix (unless (eq type :unspecific) type))) Err bitreich.org 70 i- :for okp = nil :do Err bitreich.org 70 i- ;; TODO: on Unix, do something about umask Err bitreich.org 70 i- ;; TODO: on Unix, audit the code so we make sure it uses O_CREAT|O_EXCL Err bitreich.org 70 i- ;; TODO: on Unix, use CFFI and mkstemp -- Err bitreich.org 70 i- ;; except UIOP is precisely meant to not depend on CFFI or on anything! Grrrr. Err bitreich.org 70 i- ;; Can we at least design some hook? Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (ensure-directories-exist pathname) Err bitreich.org 70 i- (with-open-file (stream pathname Err bitreich.org 70 i- :direction direction Err bitreich.org 70 i- :element-type element-type Err bitreich.org 70 i- :external-format external-format Err bitreich.org 70 i- :if-exists nil :if-does-not-exist :create) Err bitreich.org 70 i- (when stream Err bitreich.org 70 i- (setf okp pathname) Err bitreich.org 70 i- (when want-stream-p Err bitreich.org 70 i- ;; Note: can't return directly from within with-open-file Err bitreich.org 70 i- ;; or the non-local return causes the file creation to be undone. Err bitreich.org 70 i- (setf results (multiple-value-list Err bitreich.org 70 i- (if want-pathname-p Err bitreich.org 70 i- (funcall thunk stream pathname) Err bitreich.org 70 i- (funcall thunk stream))))))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((not okp) nil) Err bitreich.org 70 i- (after (return (call-function after okp))) Err bitreich.org 70 i- ((and want-pathname-p (not want-stream-p)) (return (call-function thunk okp))) Err bitreich.org 70 i- (t (return (values-list results))))) Err bitreich.org 70 i- (when (and okp (not (call-function keep))) Err bitreich.org 70 i- (ignore-errors (delete-file-if-exists okp)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmacro with-temporary-file ((&key (stream (gensym "STREAM") streamp) Err bitreich.org 70 i- (pathname (gensym "PATHNAME") pathnamep) Err bitreich.org 70 i- directory prefix suffix type Err bitreich.org 70 i- keep direction element-type external-format) Err bitreich.org 70 i- &body body) Err bitreich.org 70 i- "Evaluate BODY where the symbols specified by keyword arguments Err bitreich.org 70 i-STREAM and PATHNAME (if respectively specified) are bound corresponding Err bitreich.org 70 i-to a newly created temporary file ready for I/O, as per CALL-WITH-TEMPORARY-FILE. Err bitreich.org 70 i-At least one of STREAM or PATHNAME must be specified. Err bitreich.org 70 i-If the STREAM is not specified, it will be closed before the BODY is evaluated. Err bitreich.org 70 i-If STREAM is specified, then the :CLOSE-STREAM label if it appears in the BODY, Err bitreich.org 70 i-separates forms run before and after the stream is closed. Err bitreich.org 70 i-The values of the last form of the BODY (not counting the separating :CLOSE-STREAM) are returned. Err bitreich.org 70 i-Upon success, the KEEP form is evaluated and the file is is deleted unless it evaluates to TRUE." Err bitreich.org 70 i- (check-type stream symbol) Err bitreich.org 70 i- (check-type pathname symbol) Err bitreich.org 70 i- (assert (or streamp pathnamep)) Err bitreich.org 70 i- (let* ((afterp (position :close-stream body)) Err bitreich.org 70 i- (before (if afterp (subseq body 0 afterp) body)) Err bitreich.org 70 i- (after (when afterp (subseq body (1+ afterp)))) Err bitreich.org 70 i- (beforef (gensym "BEFORE")) Err bitreich.org 70 i- (afterf (gensym "AFTER"))) Err bitreich.org 70 i- `(flet (,@(when before Err bitreich.org 70 i- `((,beforef (,@(when streamp `(,stream)) ,@(when pathnamep `(,pathname))) Err bitreich.org 70 i- ,@(when after `((declare (ignorable ,pathname)))) Err bitreich.org 70 i- ,@before))) Err bitreich.org 70 i- ,@(when after Err bitreich.org 70 i- (assert pathnamep) Err bitreich.org 70 i- `((,afterf (,pathname) ,@after)))) Err bitreich.org 70 i- #-gcl (declare (dynamic-extent ,@(when before `(#',beforef)) ,@(when after `(#',afterf)))) Err bitreich.org 70 i- (call-with-temporary-file Err bitreich.org 70 i- ,(when before `#',beforef) Err bitreich.org 70 i- :want-stream-p ,streamp Err bitreich.org 70 i- :want-pathname-p ,pathnamep Err bitreich.org 70 i- ,@(when direction `(:direction ,direction)) Err bitreich.org 70 i- ,@(when directory `(:directory ,directory)) Err bitreich.org 70 i- ,@(when prefix `(:prefix ,prefix)) Err bitreich.org 70 i- ,@(when suffix `(:suffix ,suffix)) Err bitreich.org 70 i- ,@(when type `(:type ,type)) Err bitreich.org 70 i- ,@(when keep `(:keep ,keep)) Err bitreich.org 70 i- ,@(when after `(:after #',afterf)) Err bitreich.org 70 i- ,@(when element-type `(:element-type ,element-type)) Err bitreich.org 70 i- ,@(when external-format `(:external-format ,external-format)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun get-temporary-file (&key directory prefix suffix type) Err bitreich.org 70 i- (with-temporary-file (:pathname pn :keep t Err bitreich.org 70 i- :directory directory :prefix prefix :suffix suffix :type type) Err bitreich.org 70 i- pn)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Temporary pathnames in simple cases where no contention is assumed Err bitreich.org 70 i- (defun add-pathname-suffix (pathname suffix &rest keys) Err bitreich.org 70 i- "Add a SUFFIX to the name of a PATHNAME, return a new pathname. Err bitreich.org 70 i-Further KEYS can be passed to MAKE-PATHNAME." Err bitreich.org 70 i- (apply 'make-pathname :name (strcat (pathname-name pathname) suffix) Err bitreich.org 70 i- :defaults pathname keys)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun tmpize-pathname (x) Err bitreich.org 70 i- "Return a new pathname modified from X by adding a trivial random suffix. Err bitreich.org 70 i-A new empty file with said temporary pathname is created, to ensure there is no Err bitreich.org 70 i-clash with any concurrent process attempting the same thing." Err bitreich.org 70 i- (let* ((px (ensure-pathname x :ensure-physical t)) Err bitreich.org 70 i- (prefix (if-let (n (pathname-name px)) (strcat n "-tmp") "tmp")) Err bitreich.org 70 i- (directory (pathname-directory-pathname px))) Err bitreich.org 70 i- (get-temporary-file :directory directory :prefix prefix :type (pathname-type px)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun call-with-staging-pathname (pathname fun) Err bitreich.org 70 i- "Calls FUN with a staging pathname, and atomically Err bitreich.org 70 i-renames the staging pathname to the PATHNAME in the end. Err bitreich.org 70 i-NB: this protects only against failure of the program, not against concurrent attempts. Err bitreich.org 70 i-For the latter case, we ought pick a random suffix and atomically open it." Err bitreich.org 70 i- (let* ((pathname (pathname pathname)) Err bitreich.org 70 i- (staging (tmpize-pathname pathname))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (multiple-value-prog1 Err bitreich.org 70 i- (funcall fun staging) Err bitreich.org 70 i- (rename-file-overwriting-target staging pathname)) Err bitreich.org 70 i- (delete-file-if-exists staging)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmacro with-staging-pathname ((pathname-var &optional (pathname-value pathname-var)) &body body) Err bitreich.org 70 i- "Trivial syntax wrapper for CALL-WITH-STAGING-PATHNAME" Err bitreich.org 70 i- `(call-with-staging-pathname ,pathname-value #'(lambda (,pathname-var) ,@body)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun file-stream-p (stream) Err bitreich.org 70 i- (typep stream 'file-stream)) Err bitreich.org 70 i- (defun file-or-synonym-stream-p (stream) Err bitreich.org 70 i- (or (file-stream-p stream) Err bitreich.org 70 i- (and (typep stream 'synonym-stream) Err bitreich.org 70 i- (file-or-synonym-stream-p Err bitreich.org 70 i- (symbol-value (synonym-stream-symbol stream))))))) Err bitreich.org 70 1diff --git a/3rdparties/software/uiop-3.3.2/uiop.asd b/3rdparties/software/uiop-3.3.2/uiop.asd /scm/clic/file/3rdparties/software/uiop-3.3.2/uiop.asd.gph bitreich.org 70 i@@ -1,50 +0,0 @@ Err bitreich.org 70 i-;;; -*- mode: lisp -*- Err bitreich.org 70 i-(in-package :asdf) Err bitreich.org 70 i- Err bitreich.org 70 i-#-asdf3 Err bitreich.org 70 i-(unless (or #+asdf2 (version-satisfies (asdf:asdf-version) "2.11.4")) Err bitreich.org 70 i- (error "UIOP requires ASDF 2.011.4 or later.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun call-without-redefinition-warnings (thunk) Err bitreich.org 70 i- (handler-bind (((or Err bitreich.org 70 i- #+allegro simple-warning Err bitreich.org 70 i- #+clozure ccl:compiler-warning Err bitreich.org 70 i- #+cmucl kernel:simple-style-warning Err bitreich.org 70 i- #-(or allegro clozure cmucl) warning) Err bitreich.org 70 i- #'muffle-warning)) Err bitreich.org 70 i- (funcall thunk))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defsystem "uiop" Err bitreich.org 70 i- #+asdf3 :long-name #+asdf3 "Utilities for Implementation- and OS- Portability" Err bitreich.org 70 i- :description "Portability library for Common Lisp programs" Err bitreich.org 70 i- :long-description "UIOP provides runtime support for Common Lisp programs: Err bitreich.org 70 i-Basic general-purpose utilities that are in such a need that you can't portably construct a Err bitreich.org 70 i-complete program without using some of them. UIOP replaces ASDF/DRIVER and ASDF-UTILS, and offers a Err bitreich.org 70 i-superset of the functionality provided by CL-FAD, EXTERNAL-PROGRAM, TRIVIAL-SHELL, TRIVIAL-BACKTRACE Err bitreich.org 70 i-and a lot of the functionality formerly provided by CL-LAUNCH, XCVB-DRIVER, TRIVIAL-FEATURES, Err bitreich.org 70 i-plus a tiny subset of functionality from ALEXANDRIA and FARE-UTILS. Err bitreich.org 70 i-It is transcluded into asdf.lisp together with ASDF/DEFSYSTEM, so if you did (require \"asdf\") Err bitreich.org 70 i-you already have a matching UIOP loaded." Err bitreich.org 70 i- :author "Francois-Rene Rideau" Err bitreich.org 70 i- :licence "MIT" Err bitreich.org 70 i- :class #+asdf3.1 package-system #-asdf3.1 system Err bitreich.org 70 i- #+asdf3.1 :version #+asdf3.1 (:read-file-form "version.lisp" :at (2 2 2)) Err bitreich.org 70 i- #+asdf3 :encoding #+asdf3 :utf-8 Err bitreich.org 70 i- #+asdf3 :around-compile #+asdf3 call-without-redefinition-warnings Err bitreich.org 70 i- :components Err bitreich.org 70 i- ((:static-file "contrib/debug.lisp") Err bitreich.org 70 i- (:file "package") Err bitreich.org 70 i- (:file "common-lisp" :depends-on ("package")) Err bitreich.org 70 i- (:file "utility" :depends-on ("common-lisp")) Err bitreich.org 70 i- (:file "version" :depends-on ("utility")) Err bitreich.org 70 i- (:file "os" :depends-on ("utility")) Err bitreich.org 70 i- (:file "pathname" :depends-on ("utility" "os")) Err bitreich.org 70 i- (:file "filesystem" :depends-on ("os" "pathname")) Err bitreich.org 70 i- (:file "stream" :depends-on ("filesystem")) Err bitreich.org 70 i- (:file "image" :depends-on ("stream")) Err bitreich.org 70 i- (:file "lisp-build" :depends-on ("image")) Err bitreich.org 70 i- (:file "launch-program" :depends-on ("stream")) Err bitreich.org 70 i- (:file "run-program" :depends-on ("launch-program" "version")) Err bitreich.org 70 i- (:file "configuration" :depends-on ("image")) Err bitreich.org 70 i- (:file "backward-driver" :depends-on ("lisp-build" "run-program" "configuration" "version")) Err bitreich.org 70 i- (:file "driver" :depends-on ("backward-driver")))) Err bitreich.org 70 1diff --git a/3rdparties/software/uiop-3.3.2/utility.lisp b/3rdparties/software/uiop-3.3.2/utility.lisp /scm/clic/file/3rdparties/software/uiop-3.3.2/utility.lisp.gph bitreich.org 70 i@@ -1,652 +0,0 @@ Err bitreich.org 70 i-;;;; ------------------------------------------------------------------------- Err bitreich.org 70 i-;;;; General Purpose Utilities for ASDF Err bitreich.org 70 i- Err bitreich.org 70 i-(uiop/package:define-package :uiop/utility Err bitreich.org 70 i- (:use :uiop/common-lisp :uiop/package) Err bitreich.org 70 i- ;; import and reexport a few things defined in :uiop/common-lisp Err bitreich.org 70 i- (:import-from :uiop/common-lisp #:compatfmt #:loop* #:frob-substrings Err bitreich.org 70 i- #+(or clasp ecl) #:use-ecl-byte-compiler-p #+mcl #:probe-posix) Err bitreich.org 70 i- (:export #:compatfmt #:loop* #:frob-substrings #:compatfmt Err bitreich.org 70 i- #+(or clasp ecl) #:use-ecl-byte-compiler-p #+mcl #:probe-posix) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- ;; magic helper to define debugging functions: Err bitreich.org 70 i- #:uiop-debug #:load-uiop-debug-utility #:*uiop-debug-utility* Err bitreich.org 70 i- #:with-upgradability ;; (un)defining functions in an upgrade-friendly way Err bitreich.org 70 i- #:defun* #:defgeneric* Err bitreich.org 70 i- #:nest #:if-let ;; basic flow control Err bitreich.org 70 i- #:parse-body ;; macro definition helper Err bitreich.org 70 i- #:while-collecting #:appendf #:length=n-p #:ensure-list ;; lists Err bitreich.org 70 i- #:remove-plist-keys #:remove-plist-key ;; plists Err bitreich.org 70 i- #:emptyp ;; sequences Err bitreich.org 70 i- #:+non-base-chars-exist-p+ ;; characters Err bitreich.org 70 i- #:+max-character-type-index+ #:character-type-index #:+character-types+ Err bitreich.org 70 i- #:base-string-p #:strings-common-element-type #:reduce/strcat #:strcat ;; strings Err bitreich.org 70 i- #:first-char #:last-char #:split-string #:stripln #:+cr+ #:+lf+ #:+crlf+ Err bitreich.org 70 i- #:string-prefix-p #:string-enclosed-p #:string-suffix-p Err bitreich.org 70 i- #:standard-case-symbol-name #:find-standard-case-symbol ;; symbols Err bitreich.org 70 i- #:coerce-class ;; CLOS Err bitreich.org 70 i- #:timestamp< #:timestamps< #:timestamp*< #:timestamp<= ;; timestamps Err bitreich.org 70 i- #:earlier-timestamp #:timestamps-earliest #:earliest-timestamp Err bitreich.org 70 i- #:later-timestamp #:timestamps-latest #:latest-timestamp #:latest-timestamp-f Err bitreich.org 70 i- #:list-to-hash-set #:ensure-gethash ;; hash-table Err bitreich.org 70 i- #:ensure-function #:access-at #:access-at-count ;; functions Err bitreich.org 70 i- #:call-function #:call-functions #:register-hook-function Err bitreich.org 70 i- #:lexicographic< #:lexicographic<= ;; version Err bitreich.org 70 i- #:simple-style-warning #:style-warn ;; simple style warnings Err bitreich.org 70 i- #:match-condition-p #:match-any-condition-p ;; conditions Err bitreich.org 70 i- #:call-with-muffled-conditions #:with-muffled-conditions Err bitreich.org 70 i- #:not-implemented-error #:parameter-error)) Err bitreich.org 70 i-(in-package :uiop/utility) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Defining functions in a way compatible with hot-upgrade: Err bitreich.org 70 i-;; DEFUN* and DEFGENERIC* use FMAKUNBOUND to delete any previous fdefinition, Err bitreich.org 70 i-;; thus replacing the function without warning or error Err bitreich.org 70 i-;; even if the signature and/or generic-ness of the function has changed. Err bitreich.org 70 i-;; For a generic function, this invalidates any previous DEFMETHOD. Err bitreich.org 70 i-(eval-when (:load-toplevel :compile-toplevel :execute) Err bitreich.org 70 i- (macrolet Err bitreich.org 70 i- ((defdef (def* def) Err bitreich.org 70 i- `(defmacro ,def* (name formals &rest rest) Err bitreich.org 70 i- (destructuring-bind (name &key (supersede t)) Err bitreich.org 70 i- (if (or (atom name) (eq (car name) 'setf)) Err bitreich.org 70 i- (list name :supersede nil) Err bitreich.org 70 i- name) Err bitreich.org 70 i- (declare (ignorable supersede)) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- ;; We usually try to do it only for the functions that need it, Err bitreich.org 70 i- ;; which happens in asdf/upgrade - however, for ECL, we need this hammer. Err bitreich.org 70 i- ,@(when supersede Err bitreich.org 70 i- `((fmakunbound ',name))) Err bitreich.org 70 i- ,@(when (and #+(or clasp ecl) (symbolp name)) ; fails for setf functions on ecl Err bitreich.org 70 i- `((declaim (notinline ,name)))) Err bitreich.org 70 i- (,',def ,name ,formals ,@rest)))))) Err bitreich.org 70 i- (defdef defgeneric* defgeneric) Err bitreich.org 70 i- (defdef defun* defun)) Err bitreich.org 70 i- (defmacro with-upgradability ((&optional) &body body) Err bitreich.org 70 i- "Evaluate BODY at compile- load- and run- times, with DEFUN and DEFGENERIC modified Err bitreich.org 70 i-to also declare the functions NOTINLINE and to accept a wrapping the function name Err bitreich.org 70 i-specification into a list with keyword argument SUPERSEDE (which defaults to T if the name Err bitreich.org 70 i-is not wrapped, and NIL if it is wrapped). If SUPERSEDE is true, call UNDEFINE-FUNCTION Err bitreich.org 70 i-to supersede any previous definition." Err bitreich.org 70 i- `(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- ,@(loop :for form :in body :collect Err bitreich.org 70 i- (if (consp form) Err bitreich.org 70 i- (destructuring-bind (car . cdr) form Err bitreich.org 70 i- (case car Err bitreich.org 70 i- ((defun) `(defun* ,@cdr)) Err bitreich.org 70 i- ((defgeneric) `(defgeneric* ,@cdr)) Err bitreich.org 70 i- (otherwise form))) Err bitreich.org 70 i- form))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Magic debugging help. See contrib/debug.lisp Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defvar *uiop-debug-utility* Err bitreich.org 70 i- '(or (ignore-errors Err bitreich.org 70 i- (probe-file (symbol-call :asdf :system-relative-pathname :uiop "contrib/debug.lisp"))) Err bitreich.org 70 i- (probe-file (symbol-call :uiop/pathname :subpathname Err bitreich.org 70 i- (user-homedir-pathname) "common-lisp/asdf/uiop/contrib/debug.lisp"))) Err bitreich.org 70 i- "form that evaluates to the pathname to your favorite debugging utilities") Err bitreich.org 70 i- Err bitreich.org 70 i- (defmacro uiop-debug (&rest keys) Err bitreich.org 70 i- `(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (load-uiop-debug-utility ,@keys))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun load-uiop-debug-utility (&key package utility-file) Err bitreich.org 70 i- (let* ((*package* (if package (find-package package) *package*)) Err bitreich.org 70 i- (keyword (read-from-string Err bitreich.org 70 i- (format nil ":DBG-~:@(~A~)" (package-name *package*))))) Err bitreich.org 70 i- (unless (member keyword *features*) Err bitreich.org 70 i- (let* ((utility-file (or utility-file *uiop-debug-utility*)) Err bitreich.org 70 i- (file (ignore-errors (probe-file (eval utility-file))))) Err bitreich.org 70 i- (if file (load file) Err bitreich.org 70 i- (error "Failed to locate debug utility file: ~S" utility-file))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Flow control Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defmacro nest (&rest things) Err bitreich.org 70 i- "Macro to keep code nesting and indentation under control." ;; Thanks to mbaringer Err bitreich.org 70 i- (reduce #'(lambda (outer inner) `(,@outer ,inner)) Err bitreich.org 70 i- things :from-end t)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmacro if-let (bindings &body (then-form &optional else-form)) ;; from alexandria Err bitreich.org 70 i- ;; bindings can be (var form) or ((var1 form1) ...) Err bitreich.org 70 i- (let* ((binding-list (if (and (consp bindings) (symbolp (car bindings))) Err bitreich.org 70 i- (list bindings) Err bitreich.org 70 i- bindings)) Err bitreich.org 70 i- (variables (mapcar #'car binding-list))) Err bitreich.org 70 i- `(let ,binding-list Err bitreich.org 70 i- (if (and ,@variables) Err bitreich.org 70 i- ,then-form Err bitreich.org 70 i- ,else-form))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Macro definition helper Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun parse-body (body &key documentation whole) ;; from alexandria Err bitreich.org 70 i- "Parses BODY into (values remaining-forms declarations doc-string). Err bitreich.org 70 i-Documentation strings are recognized only if DOCUMENTATION is true. Err bitreich.org 70 i-Syntax errors in body are signalled and WHOLE is used in the signal Err bitreich.org 70 i-arguments when given." Err bitreich.org 70 i- (let ((doc nil) Err bitreich.org 70 i- (decls nil) Err bitreich.org 70 i- (current nil)) Err bitreich.org 70 i- (tagbody Err bitreich.org 70 i- :declarations Err bitreich.org 70 i- (setf current (car body)) Err bitreich.org 70 i- (when (and documentation (stringp current) (cdr body)) Err bitreich.org 70 i- (if doc Err bitreich.org 70 i- (error "Too many documentation strings in ~S." (or whole body)) Err bitreich.org 70 i- (setf doc (pop body))) Err bitreich.org 70 i- (go :declarations)) Err bitreich.org 70 i- (when (and (listp current) (eql (first current) 'declare)) Err bitreich.org 70 i- (push (pop body) decls) Err bitreich.org 70 i- (go :declarations))) Err bitreich.org 70 i- (values body (nreverse decls) doc)))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; List manipulation Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defmacro while-collecting ((&rest collectors) &body body) Err bitreich.org 70 i- "COLLECTORS should be a list of names for collections. A collector Err bitreich.org 70 i-defines a function that, when applied to an argument inside BODY, will Err bitreich.org 70 i-add its argument to the corresponding collection. Returns multiple values, Err bitreich.org 70 i-a list for each collection, in order. Err bitreich.org 70 i- E.g., Err bitreich.org 70 i-\(while-collecting \(foo bar\) Err bitreich.org 70 i- \(dolist \(x '\(\(a 1\) \(b 2\) \(c 3\)\)\) Err bitreich.org 70 i- \(foo \(first x\)\) Err bitreich.org 70 i- \(bar \(second x\)\)\)\) Err bitreich.org 70 i-Returns two values: \(A B C\) and \(1 2 3\)." Err bitreich.org 70 i- (let ((vars (mapcar #'(lambda (x) (gensym (symbol-name x))) collectors)) Err bitreich.org 70 i- (initial-values (mapcar (constantly nil) collectors))) Err bitreich.org 70 i- `(let ,(mapcar #'list vars initial-values) Err bitreich.org 70 i- (flet ,(mapcar #'(lambda (c v) `(,c (x) (push x ,v) (values))) collectors vars) Err bitreich.org 70 i- ,@body Err bitreich.org 70 i- (values ,@(mapcar #'(lambda (v) `(reverse ,v)) vars)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (define-modify-macro appendf (&rest args) Err bitreich.org 70 i- append "Append onto list") ;; only to be used on short lists. Err bitreich.org 70 i- Err bitreich.org 70 i- (defun length=n-p (x n) ;is it that (= (length x) n) ? Err bitreich.org 70 i- (check-type n (integer 0 *)) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- :for l = x :then (cdr l) Err bitreich.org 70 i- :for i :downfrom n :do Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((zerop i) (return (null l))) Err bitreich.org 70 i- ((not (consp l)) (return nil))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun ensure-list (x) Err bitreich.org 70 i- (if (listp x) x (list x)))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Remove a key from a plist, i.e. for keyword argument cleanup Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun remove-plist-key (key plist) Err bitreich.org 70 i- "Remove a single key from a plist" Err bitreich.org 70 i- (loop* :for (k v) :on plist :by #'cddr Err bitreich.org 70 i- :unless (eq k key) Err bitreich.org 70 i- :append (list k v))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun remove-plist-keys (keys plist) Err bitreich.org 70 i- "Remove a list of keys from a plist" Err bitreich.org 70 i- (loop* :for (k v) :on plist :by #'cddr Err bitreich.org 70 i- :unless (member k keys) Err bitreich.org 70 i- :append (list k v)))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Sequences Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun emptyp (x) Err bitreich.org 70 i- "Predicate that is true for an empty sequence" Err bitreich.org 70 i- (or (null x) (and (vectorp x) (zerop (length x)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Characters Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- ;; base-char != character on ECL, LW, SBCL, Genera. Err bitreich.org 70 i- ;; NB: We assume a total order on character types. Err bitreich.org 70 i- ;; If that's not true... this code will need to be updated. Err bitreich.org 70 i- (defparameter +character-types+ ;; assuming a simple hierarchy Err bitreich.org 70 i- #.(coerce (loop* :for (type next) :on Err bitreich.org 70 i- '(;; In SCL, all characters seem to be 16-bit base-char Err bitreich.org 70 i- ;; Yet somehow character fails to be a subtype of base-char Err bitreich.org 70 i- #-scl base-char Err bitreich.org 70 i- ;; LW6 has BASE-CHAR < SIMPLE-CHAR < CHARACTER Err bitreich.org 70 i- ;; LW7 has BASE-CHAR < BMP-CHAR < SIMPLE-CHAR = CHARACTER Err bitreich.org 70 i- #+lispworks7+ lw:bmp-char Err bitreich.org 70 i- #+lispworks lw:simple-char Err bitreich.org 70 i- character) Err bitreich.org 70 i- :unless (and next (subtypep next type)) Err bitreich.org 70 i- :collect type) 'vector)) Err bitreich.org 70 i- (defparameter +max-character-type-index+ (1- (length +character-types+))) Err bitreich.org 70 i- (defconstant +non-base-chars-exist-p+ (plusp +max-character-type-index+)) Err bitreich.org 70 i- (when +non-base-chars-exist-p+ (pushnew :non-base-chars-exist-p *features*))) Err bitreich.org 70 i- Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun character-type-index (x) Err bitreich.org 70 i- (declare (ignorable x)) Err bitreich.org 70 i- #.(case +max-character-type-index+ Err bitreich.org 70 i- (0 0) Err bitreich.org 70 i- (1 '(etypecase x Err bitreich.org 70 i- (character (if (typep x 'base-char) 0 1)) Err bitreich.org 70 i- (symbol (if (subtypep x 'base-char) 0 1)))) Err bitreich.org 70 i- (otherwise Err bitreich.org 70 i- '(or (position-if (etypecase x Err bitreich.org 70 i- (character #'(lambda (type) (typep x type))) Err bitreich.org 70 i- (symbol #'(lambda (type) (subtypep x type)))) Err bitreich.org 70 i- +character-types+) Err bitreich.org 70 i- (error "Not a character or character type: ~S" x)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Strings Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun base-string-p (string) Err bitreich.org 70 i- "Does the STRING only contain BASE-CHARs?" Err bitreich.org 70 i- (declare (ignorable string)) Err bitreich.org 70 i- (and #+non-base-chars-exist-p (eq 'base-char (array-element-type string)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun strings-common-element-type (strings) Err bitreich.org 70 i- "What least subtype of CHARACTER can contain all the elements of all the STRINGS?" Err bitreich.org 70 i- (declare (ignorable strings)) Err bitreich.org 70 i- #.(if +non-base-chars-exist-p+ Err bitreich.org 70 i- `(aref +character-types+ Err bitreich.org 70 i- (loop :with index = 0 :for s :in strings :do Err bitreich.org 70 i- (flet ((consider (i) Err bitreich.org 70 i- (cond ((= i ,+max-character-type-index+) (return i)) Err bitreich.org 70 i- ,@(when (> +max-character-type-index+ 1) `(((> i index) (setf index i))))))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((emptyp s)) ;; NIL or empty string Err bitreich.org 70 i- ((characterp s) (consider (character-type-index s))) Err bitreich.org 70 i- ((stringp s) (let ((string-type-index Err bitreich.org 70 i- (character-type-index (array-element-type s)))) Err bitreich.org 70 i- (unless (>= index string-type-index) Err bitreich.org 70 i- (loop :for c :across s :for i = (character-type-index c) Err bitreich.org 70 i- :do (consider i) Err bitreich.org 70 i- ,@(when (> +max-character-type-index+ 1) Err bitreich.org 70 i- `((when (= i string-type-index) (return)))))))) Err bitreich.org 70 i- (t (error "Invalid string designator ~S for ~S" s 'strings-common-element-type)))) Err bitreich.org 70 i- :finally (return index))) Err bitreich.org 70 i- ''character)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun reduce/strcat (strings &key key start end) Err bitreich.org 70 i- "Reduce a list as if by STRCAT, accepting KEY START and END keywords like REDUCE. Err bitreich.org 70 i-NIL is interpreted as an empty string. A character is interpreted as a string of length one." Err bitreich.org 70 i- (when (or start end) (setf strings (subseq strings start end))) Err bitreich.org 70 i- (when key (setf strings (mapcar key strings))) Err bitreich.org 70 i- (loop :with output = (make-string (loop :for s :in strings Err bitreich.org 70 i- :sum (if (characterp s) 1 (length s))) Err bitreich.org 70 i- :element-type (strings-common-element-type strings)) Err bitreich.org 70 i- :with pos = 0 Err bitreich.org 70 i- :for input :in strings Err bitreich.org 70 i- :do (etypecase input Err bitreich.org 70 i- (null) Err bitreich.org 70 i- (character (setf (char output pos) input) (incf pos)) Err bitreich.org 70 i- (string (replace output input :start1 pos) (incf pos (length input)))) Err bitreich.org 70 i- :finally (return output))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun strcat (&rest strings) Err bitreich.org 70 i- "Concatenate strings. Err bitreich.org 70 i-NIL is interpreted as an empty string, a character as a string of length one." Err bitreich.org 70 i- (reduce/strcat strings)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun first-char (s) Err bitreich.org 70 i- "Return the first character of a non-empty string S, or NIL" Err bitreich.org 70 i- (and (stringp s) (plusp (length s)) (char s 0))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun last-char (s) Err bitreich.org 70 i- "Return the last character of a non-empty string S, or NIL" Err bitreich.org 70 i- (and (stringp s) (plusp (length s)) (char s (1- (length s))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun split-string (string &key max (separator '(#\Space #\Tab))) Err bitreich.org 70 i- "Split STRING into a list of components separated by Err bitreich.org 70 i-any of the characters in the sequence SEPARATOR. Err bitreich.org 70 i-If MAX is specified, then no more than max(1,MAX) components will be returned, Err bitreich.org 70 i-starting the separation from the end, e.g. when called with arguments Err bitreich.org 70 i- \"a.b.c.d.e\" :max 3 :separator \".\" it will return (\"a.b.c\" \"d\" \"e\")." Err bitreich.org 70 i- (block () Err bitreich.org 70 i- (let ((list nil) (words 0) (end (length string))) Err bitreich.org 70 i- (when (zerop end) (return nil)) Err bitreich.org 70 i- (flet ((separatorp (char) (find char separator)) Err bitreich.org 70 i- (done () (return (cons (subseq string 0 end) list)))) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- :for start = (if (and max (>= words (1- max))) Err bitreich.org 70 i- (done) Err bitreich.org 70 i- (position-if #'separatorp string :end end :from-end t)) Err bitreich.org 70 i- :do (when (null start) (done)) Err bitreich.org 70 i- (push (subseq string (1+ start) end) list) Err bitreich.org 70 i- (incf words) Err bitreich.org 70 i- (setf end start)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun string-prefix-p (prefix string) Err bitreich.org 70 i- "Does STRING begin with PREFIX?" Err bitreich.org 70 i- (let* ((x (string prefix)) Err bitreich.org 70 i- (y (string string)) Err bitreich.org 70 i- (lx (length x)) Err bitreich.org 70 i- (ly (length y))) Err bitreich.org 70 i- (and (<= lx ly) (string= x y :end2 lx)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun string-suffix-p (string suffix) Err bitreich.org 70 i- "Does STRING end with SUFFIX?" Err bitreich.org 70 i- (let* ((x (string string)) Err bitreich.org 70 i- (y (string suffix)) Err bitreich.org 70 i- (lx (length x)) Err bitreich.org 70 i- (ly (length y))) Err bitreich.org 70 i- (and (<= ly lx) (string= x y :start1 (- lx ly))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun string-enclosed-p (prefix string suffix) Err bitreich.org 70 i- "Does STRING begin with PREFIX and end with SUFFIX?" Err bitreich.org 70 i- (and (string-prefix-p prefix string) Err bitreich.org 70 i- (string-suffix-p string suffix))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defvar +cr+ (coerce #(#\Return) 'string)) Err bitreich.org 70 i- (defvar +lf+ (coerce #(#\Linefeed) 'string)) Err bitreich.org 70 i- (defvar +crlf+ (coerce #(#\Return #\Linefeed) 'string)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun stripln (x) Err bitreich.org 70 i- "Strip a string X from any ending CR, LF or CRLF. Err bitreich.org 70 i-Return two values, the stripped string and the ending that was stripped, Err bitreich.org 70 i-or the original value and NIL if no stripping took place. Err bitreich.org 70 i-Since our STRCAT accepts NIL as empty string designator, Err bitreich.org 70 i-the two results passed to STRCAT always reconstitute the original string" Err bitreich.org 70 i- (check-type x string) Err bitreich.org 70 i- (block nil Err bitreich.org 70 i- (flet ((c (end) (when (string-suffix-p x end) Err bitreich.org 70 i- (return (values (subseq x 0 (- (length x) (length end))) end))))) Err bitreich.org 70 i- (when x (c +crlf+) (c +lf+) (c +cr+) (values x nil))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun standard-case-symbol-name (name-designator) Err bitreich.org 70 i- "Given a NAME-DESIGNATOR for a symbol, if it is a symbol, convert it to a string using STRING; Err bitreich.org 70 i-if it is a string, use STRING-UPCASE on an ANSI CL platform, or STRING on a so-called \"modern\" Err bitreich.org 70 i-platform such as Allegro with modern syntax." Err bitreich.org 70 i- (check-type name-designator (or string symbol)) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((or (symbolp name-designator) #+allegro (eq excl:*current-case-mode* :case-sensitive-lower)) Err bitreich.org 70 i- (string name-designator)) Err bitreich.org 70 i- ;; Should we be doing something on CLISP? Err bitreich.org 70 i- (t (string-upcase name-designator)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun find-standard-case-symbol (name-designator package-designator &optional (error t)) Err bitreich.org 70 i- "Find a symbol designated by NAME-DESIGNATOR in a package designated by PACKAGE-DESIGNATOR, Err bitreich.org 70 i-where STANDARD-CASE-SYMBOL-NAME is used to transform them if these designators are strings. Err bitreich.org 70 i-If optional ERROR argument is NIL, return NIL instead of an error when the symbol is not found." Err bitreich.org 70 i- (find-symbol* (standard-case-symbol-name name-designator) Err bitreich.org 70 i- (etypecase package-designator Err bitreich.org 70 i- ((or package symbol) package-designator) Err bitreich.org 70 i- (string (standard-case-symbol-name package-designator))) Err bitreich.org 70 i- error))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; timestamps: a REAL or a boolean where T=-infinity, NIL=+infinity Err bitreich.org 70 i-(eval-when (#-lispworks :compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (deftype timestamp () '(or real boolean))) Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun timestamp< (x y) Err bitreich.org 70 i- (etypecase x Err bitreich.org 70 i- ((eql t) (not (eql y t))) Err bitreich.org 70 i- (real (etypecase y Err bitreich.org 70 i- ((eql t) nil) Err bitreich.org 70 i- (real (< x y)) Err bitreich.org 70 i- (null t))) Err bitreich.org 70 i- (null nil))) Err bitreich.org 70 i- (defun timestamps< (list) (loop :for y :in list :for x = nil :then y :always (timestamp< x y))) Err bitreich.org 70 i- (defun timestamp*< (&rest list) (timestamps< list)) Err bitreich.org 70 i- (defun timestamp<= (x y) (not (timestamp< y x))) Err bitreich.org 70 i- (defun earlier-timestamp (x y) (if (timestamp< x y) x y)) Err bitreich.org 70 i- (defun timestamps-earliest (list) (reduce 'earlier-timestamp list :initial-value nil)) Err bitreich.org 70 i- (defun earliest-timestamp (&rest list) (timestamps-earliest list)) Err bitreich.org 70 i- (defun later-timestamp (x y) (if (timestamp< x y) y x)) Err bitreich.org 70 i- (defun timestamps-latest (list) (reduce 'later-timestamp list :initial-value t)) Err bitreich.org 70 i- (defun latest-timestamp (&rest list) (timestamps-latest list)) Err bitreich.org 70 i- (define-modify-macro latest-timestamp-f (&rest timestamps) latest-timestamp)) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Function designators Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun ensure-function (fun &key (package :cl)) Err bitreich.org 70 i- "Coerce the object FUN into a function. Err bitreich.org 70 i- Err bitreich.org 70 i-If FUN is a FUNCTION, return it. Err bitreich.org 70 i-If the FUN is a non-sequence literal constant, return constantly that, Err bitreich.org 70 i-i.e. for a boolean keyword character number or pathname. Err bitreich.org 70 i-Otherwise if FUN is a non-literally constant symbol, return its FDEFINITION. Err bitreich.org 70 i-If FUN is a CONS, return the function that applies its CAR Err bitreich.org 70 i-to the appended list of the rest of its CDR and the arguments, Err bitreich.org 70 i-unless the CAR is LAMBDA, in which case the expression is evaluated. Err bitreich.org 70 i-If FUN is a string, READ a form from it in the specified PACKAGE (default: CL) Err bitreich.org 70 i-and EVAL that in a (FUNCTION ...) context." Err bitreich.org 70 i- (etypecase fun Err bitreich.org 70 i- (function fun) Err bitreich.org 70 i- ((or boolean keyword character number pathname) (constantly fun)) Err bitreich.org 70 i- (hash-table #'(lambda (x) (gethash x fun))) Err bitreich.org 70 i- (symbol (fdefinition fun)) Err bitreich.org 70 i- (cons (if (eq 'lambda (car fun)) Err bitreich.org 70 i- (eval fun) Err bitreich.org 70 i- #'(lambda (&rest args) (apply (car fun) (append (cdr fun) args))))) Err bitreich.org 70 i- (string (eval `(function ,(with-standard-io-syntax Err bitreich.org 70 i- (let ((*package* (find-package package))) Err bitreich.org 70 i- (read-from-string fun)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun access-at (object at) Err bitreich.org 70 i- "Given an OBJECT and an AT specifier, list of successive accessors, Err bitreich.org 70 i-call each accessor on the result of the previous calls. Err bitreich.org 70 i-An accessor may be an integer, meaning a call to ELT, Err bitreich.org 70 i-a keyword, meaning a call to GETF, Err bitreich.org 70 i-NIL, meaning identity, Err bitreich.org 70 i-a function or other symbol, meaning itself, Err bitreich.org 70 i-or a list of a function designator and arguments, interpreted as per ENSURE-FUNCTION. Err bitreich.org 70 i-As a degenerate case, the AT specifier may be an atom of a single such accessor Err bitreich.org 70 i-instead of a list." Err bitreich.org 70 i- (flet ((access (object accessor) Err bitreich.org 70 i- (etypecase accessor Err bitreich.org 70 i- (function (funcall accessor object)) Err bitreich.org 70 i- (integer (elt object accessor)) Err bitreich.org 70 i- (keyword (getf object accessor)) Err bitreich.org 70 i- (null object) Err bitreich.org 70 i- (symbol (funcall accessor object)) Err bitreich.org 70 i- (cons (funcall (ensure-function accessor) object))))) Err bitreich.org 70 i- (if (listp at) Err bitreich.org 70 i- (dolist (accessor at object) Err bitreich.org 70 i- (setf object (access object accessor))) Err bitreich.org 70 i- (access object at)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun access-at-count (at) Err bitreich.org 70 i- "From an AT specification, extract a COUNT of maximum number Err bitreich.org 70 i-of sub-objects to read as per ACCESS-AT" Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((integerp at) Err bitreich.org 70 i- (1+ at)) Err bitreich.org 70 i- ((and (consp at) (integerp (first at))) Err bitreich.org 70 i- (1+ (first at))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun call-function (function-spec &rest arguments) Err bitreich.org 70 i- "Call the function designated by FUNCTION-SPEC as per ENSURE-FUNCTION, Err bitreich.org 70 i-with the given ARGUMENTS" Err bitreich.org 70 i- (apply (ensure-function function-spec) arguments)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun call-functions (function-specs) Err bitreich.org 70 i- "For each function in the list FUNCTION-SPECS, in order, call the function as per CALL-FUNCTION" Err bitreich.org 70 i- (map () 'call-function function-specs)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun register-hook-function (variable hook &optional call-now-p) Err bitreich.org 70 i- "Push the HOOK function (a designator as per ENSURE-FUNCTION) onto the hook VARIABLE. Err bitreich.org 70 i-When CALL-NOW-P is true, also call the function immediately." Err bitreich.org 70 i- (pushnew hook (symbol-value variable) :test 'equal) Err bitreich.org 70 i- (when call-now-p (call-function hook)))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; CLOS Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun coerce-class (class &key (package :cl) (super t) (error 'error)) Err bitreich.org 70 i- "Coerce CLASS to a class that is subclass of SUPER if specified, Err bitreich.org 70 i-or invoke ERROR handler as per CALL-FUNCTION. Err bitreich.org 70 i- Err bitreich.org 70 i-A keyword designates the name a symbol, which when found in either PACKAGE, designates a class. Err bitreich.org 70 i--- for backward compatibility, *PACKAGE* is also accepted for now, but this may go in the future. Err bitreich.org 70 i-A string is read as a symbol while in PACKAGE, the symbol designates a class. Err bitreich.org 70 i- Err bitreich.org 70 i-A class object designates itself. Err bitreich.org 70 i-NIL designates itself (no class). Err bitreich.org 70 i-A symbol otherwise designates a class by name." Err bitreich.org 70 i- (let* ((normalized Err bitreich.org 70 i- (typecase class Err bitreich.org 70 i- (keyword (or (find-symbol* class package nil) Err bitreich.org 70 i- (find-symbol* class *package* nil))) Err bitreich.org 70 i- (string (symbol-call :uiop :safe-read-from-string class :package package)) Err bitreich.org 70 i- (t class))) Err bitreich.org 70 i- (found Err bitreich.org 70 i- (etypecase normalized Err bitreich.org 70 i- ((or standard-class built-in-class) normalized) Err bitreich.org 70 i- ((or null keyword) nil) Err bitreich.org 70 i- (symbol (find-class normalized nil nil)))) Err bitreich.org 70 i- (super-class Err bitreich.org 70 i- (etypecase super Err bitreich.org 70 i- ((or standard-class built-in-class) super) Err bitreich.org 70 i- ((or null keyword) nil) Err bitreich.org 70 i- (symbol (find-class super nil nil))))) Err bitreich.org 70 i- #+allegro (when found (mop:finalize-inheritance found)) Err bitreich.org 70 i- (or (and found Err bitreich.org 70 i- (or (eq super t) (#-cormanlisp subtypep #+cormanlisp cl::subclassp found super-class)) Err bitreich.org 70 i- found) Err bitreich.org 70 i- (call-function error "Can't coerce ~S to a ~:[class~;subclass of ~:*~S~]" class super))))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Hash-tables Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun ensure-gethash (key table default) Err bitreich.org 70 i- "Lookup the TABLE for a KEY as by GETHASH, but if not present, Err bitreich.org 70 i-call the (possibly constant) function designated by DEFAULT as per CALL-FUNCTION, Err bitreich.org 70 i-set the corresponding entry to the result in the table. Err bitreich.org 70 i-Return two values: the entry after its optional computation, and whether it was found" Err bitreich.org 70 i- (multiple-value-bind (value foundp) (gethash key table) Err bitreich.org 70 i- (values Err bitreich.org 70 i- (if foundp Err bitreich.org 70 i- value Err bitreich.org 70 i- (setf (gethash key table) (call-function default))) Err bitreich.org 70 i- foundp))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun list-to-hash-set (list &aux (h (make-hash-table :test 'equal))) Err bitreich.org 70 i- "Convert a LIST into hash-table that has the same elements when viewed as a set, Err bitreich.org 70 i-up to the given equality TEST" Err bitreich.org 70 i- (dolist (x list h) (setf (gethash x h) t)))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Lexicographic comparison of lists of numbers Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defun lexicographic< (element< x y) Err bitreich.org 70 i- "Lexicographically compare two lists of using the function element< to compare elements. Err bitreich.org 70 i-element< is a strict total order; the resulting order on X and Y will also be strict." Err bitreich.org 70 i- (cond ((null y) nil) Err bitreich.org 70 i- ((null x) t) Err bitreich.org 70 i- ((funcall element< (car x) (car y)) t) Err bitreich.org 70 i- ((funcall element< (car y) (car x)) nil) Err bitreich.org 70 i- (t (lexicographic< element< (cdr x) (cdr y))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun lexicographic<= (element< x y) Err bitreich.org 70 i- "Lexicographically compare two lists of using the function element< to compare elements. Err bitreich.org 70 i-element< is a strict total order; the resulting order on X and Y will be a non-strict total order." Err bitreich.org 70 i- (not (lexicographic< element< y x)))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Simple style warnings Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (define-condition simple-style-warning Err bitreich.org 70 i- #+sbcl (sb-int:simple-style-warning) #-sbcl (simple-condition style-warning) Err bitreich.org 70 i- ()) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun style-warn (datum &rest arguments) Err bitreich.org 70 i- (etypecase datum Err bitreich.org 70 i- (string (warn (make-condition 'simple-style-warning :format-control datum :format-arguments arguments))) Err bitreich.org 70 i- (symbol (assert (subtypep datum 'style-warning)) (apply 'warn datum arguments)) Err bitreich.org 70 i- (style-warning (apply 'warn datum arguments))))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Condition control Err bitreich.org 70 i- Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defparameter +simple-condition-format-control-slot+ Err bitreich.org 70 i- #+abcl 'system::format-control Err bitreich.org 70 i- #+allegro 'excl::format-control Err bitreich.org 70 i- #+(or clasp ecl mkcl) 'si::format-control Err bitreich.org 70 i- #+clisp 'system::$format-control Err bitreich.org 70 i- #+clozure 'ccl::format-control Err bitreich.org 70 i- #+(or cmucl scl) 'conditions::format-control Err bitreich.org 70 i- #+(or gcl lispworks) 'conditions::format-string Err bitreich.org 70 i- #+sbcl 'sb-kernel:format-control Err bitreich.org 70 i- #-(or abcl allegro clasp clisp clozure cmucl ecl gcl lispworks mkcl sbcl scl) nil Err bitreich.org 70 i- "Name of the slot for FORMAT-CONTROL in simple-condition") Err bitreich.org 70 i- Err bitreich.org 70 i- (defun match-condition-p (x condition) Err bitreich.org 70 i- "Compare received CONDITION to some pattern X: Err bitreich.org 70 i-a symbol naming a condition class, Err bitreich.org 70 i-a simple vector of length 2, arguments to find-symbol* with result as above, Err bitreich.org 70 i-or a string describing the format-control of a simple-condition." Err bitreich.org 70 i- (etypecase x Err bitreich.org 70 i- (symbol (typep condition x)) Err bitreich.org 70 i- ((simple-vector 2) Err bitreich.org 70 i- (ignore-errors (typep condition (find-symbol* (svref x 0) (svref x 1) nil)))) Err bitreich.org 70 i- (function (funcall x condition)) Err bitreich.org 70 i- (string (and (typep condition 'simple-condition) Err bitreich.org 70 i- ;; On SBCL, it's always set and the check triggers a warning Err bitreich.org 70 i- #+(or allegro clozure cmucl lispworks scl) Err bitreich.org 70 i- (slot-boundp condition +simple-condition-format-control-slot+) Err bitreich.org 70 i- (ignore-errors (equal (simple-condition-format-control condition) x)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun match-any-condition-p (condition conditions) Err bitreich.org 70 i- "match CONDITION against any of the patterns of CONDITIONS supplied" Err bitreich.org 70 i- (loop :for x :in conditions :thereis (match-condition-p x condition))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun call-with-muffled-conditions (thunk conditions) Err bitreich.org 70 i- "calls the THUNK in a context where the CONDITIONS are muffled" Err bitreich.org 70 i- (handler-bind ((t #'(lambda (c) (when (match-any-condition-p c conditions) Err bitreich.org 70 i- (muffle-warning c))))) Err bitreich.org 70 i- (funcall thunk))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmacro with-muffled-conditions ((conditions) &body body) Err bitreich.org 70 i- "Shorthand syntax for CALL-WITH-MUFFLED-CONDITIONS" Err bitreich.org 70 i- `(call-with-muffled-conditions #'(lambda () ,@body) ,conditions))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Conditions Err bitreich.org 70 i- Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (define-condition not-implemented-error (error) Err bitreich.org 70 i- ((functionality :initarg :functionality) Err bitreich.org 70 i- (format-control :initarg :format-control) Err bitreich.org 70 i- (format-arguments :initarg :format-arguments)) Err bitreich.org 70 i- (:report (lambda (condition stream) Err bitreich.org 70 i- (format stream "Not (currently) implemented on ~A: ~S~@[ ~?~]" Err bitreich.org 70 i- (nth-value 1 (symbol-call :uiop :implementation-type)) Err bitreich.org 70 i- (slot-value condition 'functionality) Err bitreich.org 70 i- (slot-value condition 'format-control) Err bitreich.org 70 i- (slot-value condition 'format-arguments))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun not-implemented-error (functionality &optional format-control &rest format-arguments) Err bitreich.org 70 i- "Signal an error because some FUNCTIONALITY is not implemented in the current version Err bitreich.org 70 i-of the software on the current platform; it may or may not be implemented in different combinations Err bitreich.org 70 i-of version of the software and of the underlying platform. Optionally, report a formatted error Err bitreich.org 70 i-message." Err bitreich.org 70 i- (error 'not-implemented-error Err bitreich.org 70 i- :functionality functionality Err bitreich.org 70 i- :format-control format-control Err bitreich.org 70 i- :format-arguments format-arguments)) Err bitreich.org 70 i- Err bitreich.org 70 i- (define-condition parameter-error (error) Err bitreich.org 70 i- ((functionality :initarg :functionality) Err bitreich.org 70 i- (format-control :initarg :format-control) Err bitreich.org 70 i- (format-arguments :initarg :format-arguments)) Err bitreich.org 70 i- (:report (lambda (condition stream) Err bitreich.org 70 i- (apply 'format stream Err bitreich.org 70 i- (slot-value condition 'format-control) Err bitreich.org 70 i- (slot-value condition 'functionality) Err bitreich.org 70 i- (slot-value condition 'format-arguments))))) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Note that functionality MUST be passed as the second argument to parameter-error, just after Err bitreich.org 70 i- ;; the format-control. If you want it to not appear in first position in actual message, use Err bitreich.org 70 i- ;; ~* and ~:* to adjust parameter order. Err bitreich.org 70 i- (defun parameter-error (format-control functionality &rest format-arguments) Err bitreich.org 70 i- "Signal an error because some FUNCTIONALITY or its specific implementation on a given underlying Err bitreich.org 70 i-platform does not accept a given parameter or combination of parameters. Report a formatted error Err bitreich.org 70 i-message, that takes the functionality as its first argument (that can be skipped with ~*)." Err bitreich.org 70 i- (error 'parameter-error Err bitreich.org 70 i- :functionality functionality Err bitreich.org 70 i- :format-control format-control Err bitreich.org 70 i- :format-arguments format-arguments))) Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/uiop-3.3.2/version.lisp b/3rdparties/software/uiop-3.3.2/version.lisp /scm/clic/file/3rdparties/software/uiop-3.3.2/version.lisp.gph bitreich.org 70 i@@ -1,181 +0,0 @@ Err bitreich.org 70 i-(uiop/package:define-package :uiop/version Err bitreich.org 70 i- (:recycle :uiop/version :uiop/utility :asdf) Err bitreich.org 70 i- (:use :uiop/common-lisp :uiop/package :uiop/utility) Err bitreich.org 70 i- (:export Err bitreich.org 70 i- #:*uiop-version* Err bitreich.org 70 i- #:parse-version #:unparse-version #:version< #:version<= ;; version support, moved from uiop/utility Err bitreich.org 70 i- #:next-version Err bitreich.org 70 i- #:deprecated-function-condition #:deprecated-function-name ;; deprecation control Err bitreich.org 70 i- #:deprecated-function-style-warning #:deprecated-function-warning Err bitreich.org 70 i- #:deprecated-function-error #:deprecated-function-should-be-deleted Err bitreich.org 70 i- #:version-deprecation #:with-deprecation)) Err bitreich.org 70 i-(in-package :uiop/version) Err bitreich.org 70 i- Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (defparameter *uiop-version* "3.3.2") Err bitreich.org 70 i- Err bitreich.org 70 i- (defun unparse-version (version-list) Err bitreich.org 70 i- "From a parsed version (a list of natural numbers), compute the version string" Err bitreich.org 70 i- (format nil "~{~D~^.~}" version-list)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun parse-version (version-string &optional on-error) Err bitreich.org 70 i- "Parse a VERSION-STRING as a series of natural numbers separated by dots. Err bitreich.org 70 i-Return a (non-null) list of integers if the string is valid; Err bitreich.org 70 i-otherwise return NIL. Err bitreich.org 70 i- Err bitreich.org 70 i-When invalid, ON-ERROR is called as per CALL-FUNCTION before to return NIL, Err bitreich.org 70 i-with format arguments explaining why the version is invalid. Err bitreich.org 70 i-ON-ERROR is also called if the version is not canonical Err bitreich.org 70 i-in that it doesn't print back to itself, but the list is returned anyway." Err bitreich.org 70 i- (block nil Err bitreich.org 70 i- (unless (stringp version-string) Err bitreich.org 70 i- (call-function on-error "~S: ~S is not a string" 'parse-version version-string) Err bitreich.org 70 i- (return)) Err bitreich.org 70 i- (unless (loop :for prev = nil :then c :for c :across version-string Err bitreich.org 70 i- :always (or (digit-char-p c) Err bitreich.org 70 i- (and (eql c #\.) prev (not (eql prev #\.)))) Err bitreich.org 70 i- :finally (return (and c (digit-char-p c)))) Err bitreich.org 70 i- (call-function on-error "~S: ~S doesn't follow asdf version numbering convention" Err bitreich.org 70 i- 'parse-version version-string) Err bitreich.org 70 i- (return)) Err bitreich.org 70 i- (let* ((version-list Err bitreich.org 70 i- (mapcar #'parse-integer (split-string version-string :separator "."))) Err bitreich.org 70 i- (normalized-version (unparse-version version-list))) Err bitreich.org 70 i- (unless (equal version-string normalized-version) Err bitreich.org 70 i- (call-function on-error "~S: ~S contains leading zeros" 'parse-version version-string)) Err bitreich.org 70 i- version-list))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun next-version (version) Err bitreich.org 70 i- "When VERSION is not nil, it is a string, then parse it as a version, compute the next version Err bitreich.org 70 i-and return it as a string." Err bitreich.org 70 i- (when version Err bitreich.org 70 i- (let ((version-list (parse-version version))) Err bitreich.org 70 i- (incf (car (last version-list))) Err bitreich.org 70 i- (unparse-version version-list)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun version< (version1 version2) Err bitreich.org 70 i- "Given two version strings, return T if the second is strictly newer" Err bitreich.org 70 i- (let ((v1 (parse-version version1 nil)) Err bitreich.org 70 i- (v2 (parse-version version2 nil))) Err bitreich.org 70 i- (lexicographic< '< v1 v2))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun version<= (version1 version2) Err bitreich.org 70 i- "Given two version strings, return T if the second is newer or the same" Err bitreich.org 70 i- (not (version< version2 version1)))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(with-upgradability () Err bitreich.org 70 i- (define-condition deprecated-function-condition (condition) Err bitreich.org 70 i- ((name :initarg :name :reader deprecated-function-name))) Err bitreich.org 70 i- (define-condition deprecated-function-style-warning (deprecated-function-condition style-warning) ()) Err bitreich.org 70 i- (define-condition deprecated-function-warning (deprecated-function-condition warning) ()) Err bitreich.org 70 i- (define-condition deprecated-function-error (deprecated-function-condition error) ()) Err bitreich.org 70 i- (define-condition deprecated-function-should-be-deleted (deprecated-function-condition error) ()) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun deprecated-function-condition-kind (type) Err bitreich.org 70 i- (ecase type Err bitreich.org 70 i- ((deprecated-function-style-warning) :style-warning) Err bitreich.org 70 i- ((deprecated-function-warning) :warning) Err bitreich.org 70 i- ((deprecated-function-error) :error) Err bitreich.org 70 i- ((deprecated-function-should-be-deleted) :delete))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod print-object ((c deprecated-function-condition) stream) Err bitreich.org 70 i- (let ((name (deprecated-function-name c))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- (*print-readably* Err bitreich.org 70 i- (let ((fmt "#.(make-condition '~S :name ~S)") Err bitreich.org 70 i- (args (list (type-of c) name))) Err bitreich.org 70 i- (if *read-eval* Err bitreich.org 70 i- (apply 'format stream fmt args) Err bitreich.org 70 i- (error "Can't print ~?" fmt args)))) Err bitreich.org 70 i- (*print-escape* Err bitreich.org 70 i- (print-unreadable-object (c stream :type t) (format stream ":name ~S" name))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (let ((*package* (find-package :cl)) Err bitreich.org 70 i- (type (type-of c))) Err bitreich.org 70 i- (format stream Err bitreich.org 70 i- (if (eq type 'deprecated-function-should-be-deleted) Err bitreich.org 70 i- "~A: Still defining deprecated function~:P ~{~S~^ ~} that promised to delete" Err bitreich.org 70 i- "~A: Using deprecated function ~S -- please update your code to use a newer API.~ Err bitreich.org 70 i-~@[~%The docstring for this function says:~%~A~%~]") Err bitreich.org 70 i- type name (when (symbolp name) (documentation name 'function)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun notify-deprecated-function (status name) Err bitreich.org 70 i- (ecase status Err bitreich.org 70 i- ((nil) nil) Err bitreich.org 70 i- ((:style-warning) (style-warn 'deprecated-function-style-warning :name name)) Err bitreich.org 70 i- ((:warning) (warn 'deprecated-function-warning :name name)) Err bitreich.org 70 i- ((:error) (cerror "USE FUNCTION ANYWAY" 'deprecated-function-error :name name)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun version-deprecation (version &key (style-warning nil) Err bitreich.org 70 i- (warning (next-version style-warning)) Err bitreich.org 70 i- (error (next-version warning)) Err bitreich.org 70 i- (delete (next-version error))) Err bitreich.org 70 i- "Given a VERSION string, and the starting versions for notifying the programmer of Err bitreich.org 70 i-various levels of deprecation, return the current level of deprecation as per WITH-DEPRECATION Err bitreich.org 70 i-that is the highest level that has a declared version older than the specified version. Err bitreich.org 70 i-Each start version for a level of deprecation can be specified by a keyword argument, or Err bitreich.org 70 i-if left unspecified, will be the NEXT-VERSION of the immediate lower level of deprecation." Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((and delete (version<= delete version)) :delete) Err bitreich.org 70 i- ((and error (version<= error version)) :error) Err bitreich.org 70 i- ((and warning (version<= warning version)) :warning) Err bitreich.org 70 i- ((and style-warning (version<= style-warning version)) :style-warning))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmacro with-deprecation ((level) &body definitions) Err bitreich.org 70 i- "Given a deprecation LEVEL (a form to be EVAL'ed at macro-expansion time), instrument the Err bitreich.org 70 i-DEFUN and DEFMETHOD forms in DEFINITIONS to notify the programmer of the deprecation of the function Err bitreich.org 70 i-when it is compiled or called. Err bitreich.org 70 i- Err bitreich.org 70 i-Increasing levels (as result from evaluating LEVEL) are: NIL (not deprecated yet), Err bitreich.org 70 i-:STYLE-WARNING (a style warning is issued when used), :WARNING (a full warning is issued when used), Err bitreich.org 70 i-:ERROR (a continuable error instead), and :DELETE (it's an error if the code is still there while Err bitreich.org 70 i-at that level). Err bitreich.org 70 i- Err bitreich.org 70 i-Forms other than DEFUN and DEFMETHOD are not instrumented, and you can protect a DEFUN or DEFMETHOD Err bitreich.org 70 i-from instrumentation by enclosing it in a PROGN." Err bitreich.org 70 i- (let ((level (eval level))) Err bitreich.org 70 i- (check-type level (member nil :style-warning :warning :error :delete)) Err bitreich.org 70 i- (when (eq level :delete) Err bitreich.org 70 i- (error 'deprecated-function-should-be-deleted :name Err bitreich.org 70 i- (mapcar 'second Err bitreich.org 70 i- (remove-if-not #'(lambda (x) (member x '(defun defmethod))) Err bitreich.org 70 i- definitions :key 'first)))) Err bitreich.org 70 i- (labels ((instrument (name head body whole) Err bitreich.org 70 i- (if level Err bitreich.org 70 i- (let ((notifiedp Err bitreich.org 70 i- (intern (format nil "*~A-~A-~A-~A*" Err bitreich.org 70 i- :deprecated-function level name :notified-p)))) Err bitreich.org 70 i- (multiple-value-bind (remaining-forms declarations doc-string) Err bitreich.org 70 i- (parse-body body :documentation t :whole whole) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (defparameter ,notifiedp nil) Err bitreich.org 70 i- ;; tell some implementations to use the compiler-macro Err bitreich.org 70 i- (declaim (inline ,name)) Err bitreich.org 70 i- (define-compiler-macro ,name (&whole form &rest args) Err bitreich.org 70 i- (declare (ignore args)) Err bitreich.org 70 i- (notify-deprecated-function ,level ',name) Err bitreich.org 70 i- form) Err bitreich.org 70 i- (,@head ,@(when doc-string (list doc-string)) ,@declarations Err bitreich.org 70 i- (unless ,notifiedp Err bitreich.org 70 i- (setf ,notifiedp t) Err bitreich.org 70 i- (notify-deprecated-function ,level ',name)) Err bitreich.org 70 i- ,@remaining-forms)))) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (setf (compiler-macro-function ',name) nil)) Err bitreich.org 70 i- (declaim (notinline ,name)) Err bitreich.org 70 i- (,@head ,@body))))) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- ,@(loop :for form :in definitions :collect Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((and (consp form) (eq (car form) 'defun)) Err bitreich.org 70 i- (instrument (second form) (subseq form 0 3) (subseq form 3) form)) Err bitreich.org 70 i- ((and (consp form) (eq (car form) 'defmethod)) Err bitreich.org 70 i- (let ((body-start (if (listp (third form)) 3 4))) Err bitreich.org 70 i- (instrument (second form) Err bitreich.org 70 i- (subseq form 0 body-start) Err bitreich.org 70 i- (subseq form body-start) Err bitreich.org 70 i- form))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- form)))))))) Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/.gitignore b/3rdparties/software/usocket-0.7.1/.gitignore /scm/clic/file/3rdparties/software/usocket-0.7.1/.gitignore.gph bitreich.org 70 i@@ -1 +0,0 @@ Err bitreich.org 70 i-*~ Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/CHANGES b/3rdparties/software/usocket-0.7.1/CHANGES /scm/clic/file/3rdparties/software/usocket-0.7.1/CHANGES.gph bitreich.org 70 i@@ -1,187 +0,0 @@ Err bitreich.org 70 i--*- Mode: Change-Log; Coding: utf-8 -*- Err bitreich.org 70 i- Err bitreich.org 70 i-0.7.1: (Aug 31, 2018) Err bitreich.org 70 i- Err bitreich.org 70 i-* New feature: GET-(RANDOM)-HOST-BY-NAME (now exported) prefer IPv4 on mixed IPv4/IPv6 (suggested by Mark H. David) Err bitreich.org 70 i-* New backend: Symbolics Open Genera (Lisp machine) (patch from @Symbolics, #33) Err bitreich.org 70 i-* Bugfix: [CLISP] fixed issues in server sockets and error handling. (patch from @vibs29, #28, #29) Err bitreich.org 70 i-* Bugfix: [SBCL, ECL] Fix wait-for-input on Windows SBCL and ECL. (patch from Stas Boukarev, #30) Err bitreich.org 70 i-* Bugfix: [LW] fixed non-existing system calls in LW 5.0 (comm::socket-set-tcp-nodelay) Err bitreich.org 70 i- Err bitreich.org 70 i-0.7.0: (Oct 25, 2016) Err bitreich.org 70 i- Err bitreich.org 70 i-* General: Separated USOCKET and USOCKET-SERVER systems (only the server part depends on Portable-threads) Err bitreich.org 70 i-* General: USOCKET now depends on SPLIT-SEQUENCE (the exactly same vendor code is removed from usocket code base) Err bitreich.org 70 i-* New feature: [LW] (SOCKET-OPTION :TCP-NODELAY) and its SETF version now works on LispWorks 4/5/6/7. Err bitreich.org 70 i-* New feature: [LW] SOCKET-CONNECT now supports setting "tcp_nodelay" in version 4.x and 5.0. Err bitreich.org 70 i-* Bugfix: [CCL] fixed issues in SOCKET-SHUTDOWN Err bitreich.org 70 i-* Bugfix: [CLISP] fixed issues in WAIT-FOR-INPUT (Thanks to a patch by @vibs29, #27) Err bitreich.org 70 i-* Bugfix: [LW] fixed loading in version <= 6.0 (actually 0.6.5 only fixed loading in LW 6.1) Err bitreich.org 70 i-* Bugfix: [ECL] all compilation warnings were checked and fixed. Err bitreich.org 70 i- Err bitreich.org 70 i-0.6.5: (Oct 19, 2016) Err bitreich.org 70 i- Err bitreich.org 70 i-* New feature: SOCKET-OPTION and (setf SOCKET-OPTION) for :SEND-TIMEOUT (thanks to John Pallister) Err bitreich.org 70 i-* Bugfix: Let (WAIT-FOR-INPUT NIL &TIMEOUT) return NIL with respect to TIMEOUT. Err bitreich.org 70 i-* Bugfix: [LW] fixed loading in LispWorks 5.x & 6.x. Err bitreich.org 70 i-* Bugfix: [LW] fixed SOCKET-SHUTDOWN in all versions. Err bitreich.org 70 i-* Bugfix: [ABCL] Fixed incorrect IPv6 addresses (#26), patch from Elias Mårtenson (lokedhs) Err bitreich.org 70 i- Err bitreich.org 70 i-0.6.4: (Mar 17, 2016) Err bitreich.org 70 i- Err bitreich.org 70 i-* New feature: [SBCL] IPv6 support (patch from Guillaume LE VAILLANT, #15) Err bitreich.org 70 i-* New feature: [API] SOCKET-SHUTDOWN added (patch from Thayne McCombs #9) Err bitreich.org 70 i-* New feature: [Corman] minimal initial support of this platform Err bitreich.org 70 i-* Bugfix: [SBCL/win32] wait-for-input nil-timeout bug (patch from Michal Herda, #13) Err bitreich.org 70 i-* Bugfix: [ECL] included unistd.h for gethostname() (patch from Daniel Kochmanski, #7) Err bitreich.org 70 i-* Bugfix: [LispWorks] SOCKET-RECEIVE now updates %READ-P (patch from Frank James) Err bitreich.org 70 i- Err bitreich.org 70 i-0.6.3: (May 23, 2015) Err bitreich.org 70 i- Err bitreich.org 70 i-* Bugfix: [CCL] Further fixed CCL-1.11 compatibility and a typo in SOCKET-CONNECT for CCL-1.10. Err bitreich.org 70 i-* Bugfix: [ECL] Fixed build in some versions. Err bitreich.org 70 i-* Bugfix: [LispWorks] SOCKET-SEND and SOCKET-RECEIVE now throw conditions if something goes wrong. Err bitreich.org 70 i- Err bitreich.org 70 i-0.6.2: (Apr 20, 2015) Err bitreich.org 70 i- Err bitreich.org 70 i-* Bugfix: [CCL] Fixed CCL-1.11 compatibility. Err bitreich.org 70 i-* Bugfix: [ECL] Fixed compatibility on recent versions. Err bitreich.org 70 i-* Bugfix: [LispWorks] Added support address-in-use-error condition on LW/Win32. (patch from Sergey Katrevich). Err bitreich.org 70 i- Err bitreich.org 70 i-0.6.1: (Jun 21, 2013) Err bitreich.org 70 i- Err bitreich.org 70 i-* New feature: [MOCL] Initial MOCL support (TCP only, no W-F-I, patch from github.com/Wukix/usocket). Err bitreich.org 70 i-* New feature: [MCL] Initial UDP support for Macintosh Common Lisp (MCL/RMCL). Err bitreich.org 70 i-* New feature: Added TCP-NO-DELAY (TCP_NODELAY) support in SOCKET-OPTION, for TCP client Err bitreich.org 70 i-* Bugfix: [CCL] Added (:external-format ccl:*default-external-format*) to SOCKET-CONNECT, to prevent it fallback to ISO-8859-1 on NIL. (Patch from Vsevolod Dyomkin) Err bitreich.org 70 i-* Bugfix: [CCL] Performance improved WAIT-FOR-INPUT and other fixes. (patch from Faré ) Err bitreich.org 70 i- Err bitreich.org 70 i-0.6.0: (Dec 26, 2012) Err bitreich.org 70 i- Err bitreich.org 70 i-* New feature: SOCKET-OPTION and (setf SOCKET-OPTION) for seting and geting various socket options. Err bitreich.org 70 i-* New feature: SOCKET-SEND now support an CCL-like OFFSET keyword for sending only parts of the whole buffer. Err bitreich.org 70 i-* New feature: [ECL] Added support for ECL DFFI mode on Windows. (no need for C compilers now) Err bitreich.org 70 i-* Bugfix: [ECL] ECL now list sb-bsd-sockets as a dependency but relies on REQUIRE. (patched by Juanjo) Err bitreich.org 70 i-* Bugfix: [ABCL] Make USOCKET compile warning-free on ABCL again: MAKE-IMMEDIATE-OBJECT was deprecated a while ago in favor of 2 predefined constants. Err bitreich.org 70 i-* Bugfix: [LispWorks] remove redundant call to hcl:flag-special-free-action. (reported by Kamil Shakirov) Err bitreich.org 70 i-* Bugfix: [CLISP] improved HANDLE-CONDITION for more CLISP environments. Err bitreich.org 70 i- Err bitreich.org 70 i-0.5.5: (Feb 27, 2012) Err bitreich.org 70 i- Err bitreich.org 70 i-* Enhancement: SOCKET-CONNECT argument :nodelay can now set to :if-supported (patch from Anton Vodonosov). Err bitreich.org 70 i-* Enhancement: [Server] adding *remote-host* *remote-port* to socket-server stream handler functions (suggested by Matthew Curry) Err bitreich.org 70 i-* Bugfix: [LispWorks] Fixed UDP support for LispWorks 6.1 (patch from Camille Troillard by Martin Simmons). Err bitreich.org 70 i-* Bugfix: [LispWorks] Stop using hcl:add-special-free-action for reclaiming unused UDP socket fds to improve multi-threading stablity (suggested by Camille Troillard). Err bitreich.org 70 i-* Bugfix: [LispWorks] Fixed SOCKET-CONNECT on Windows, now LOCAL-PORT never have *auto-port* (0) as default value. Err bitreich.org 70 i- Err bitreich.org 70 i-0.5.4: (Oct 1, 2011) Err bitreich.org 70 i- Err bitreich.org 70 i-* Bugfix: [ECL] Fixed for ECL's MAKE-BUILD by removing some unecessary code (reported by Juan Jose Garcia-Ripoll, the ECL maintainer) Err bitreich.org 70 i-* Bugfix: [ACL] Fixed for Allegro CL modern mode. Err bitreich.org 70 i-* Bugfix: [SBCL] SOCKET-CONNECT on TCP won't call bind() when keyword arguments LOCAL-HOST or LOCAL-PORT is not set. (reported by Robert Brown) Err bitreich.org 70 i- Err bitreich.org 70 i-0.5.3: (Aug 13, 2011) Err bitreich.org 70 i- Err bitreich.org 70 i-* Bugfix: [MCL] Fixed SOCKET-LISTEN on vector addresses like #(0 0 0 0) Err bitreich.org 70 i-* Bugfix: [MCL] Fixed WAIT-FOR-INPUT on passive sockets (stream-server-usocket) Err bitreich.org 70 i-* Bugfix: [LispWorks] Fixed using OPEN-UDP-SOCKET in delivered applications (thanks to Camille Troillard and Martin Simmons, this fix is from LispWorks-UDP project). Err bitreich.org 70 i-* Bugfix: [SBCL] Fixed for "SBCL data flush problem", reported by Robert Brown and confirmed by Nikodemus Siivola. Err bitreich.org 70 i- Err bitreich.org 70 i-0.5.2: (May 11, 2011) Err bitreich.org 70 i- Err bitreich.org 70 i-* General: [SBCL] SOCKET-CONNECT's TIMEOUT argument was limited on non-Windows platforms. Err bitreich.org 70 i-* Bugfix: [CLISP] WAIT-FOR-INPUT now functions right (with/without READY-ONLY), this made Hunchentoot working on CLISP. (Thanks to Anton Vodonosov ) Err bitreich.org 70 i-* Bugfix: [ABCL] Fix SOCKET-ACCEPT to follow the documented API so that when called without an :ELEMENT-TYPE argument. (Thanks to Mark Evenson, the ABCL developer) Err bitreich.org 70 i-* Bugfix: [LispWorks] Fixed SOCKET-ACCEPT (Windows only) on WAIT-FOR-INPUTed sockets. Err bitreich.org 70 i-* Bugfix: [SBCL, ECL] Fixed wrongly STATE set/unset for WAIT-FOR-INPUT on Windows (report by Elliott Slaughter) Err bitreich.org 70 i-* Enhancement: Additional NAME keyword argument for SOCKET-SERVER for setting the server thread name. Err bitreich.org 70 i-* Enhancement: [ABCL] GET-ADDRESS now works with underlying IPv6 addresses. Err bitreich.org 70 i-* Enhancement: [CLISP] missing GET-LOCAL-* methods for STREAM-SERVER-USOCKET was now added. Err bitreich.org 70 i- Err bitreich.org 70 i-0.5.1: (Apr 2, 2011) Err bitreich.org 70 i- Err bitreich.org 70 i-* New feature: [CLISP] UDP (Datagram) support based on FFI (Win/Mac/Linux), no RAWSOCK needed. Err bitreich.org 70 i-* Enhancement: SOCKET-SERVER return a second value (socket) when calling in new-thread mode. Err bitreich.org 70 i-* Enhancement: [CLISP] Full support of DNS helper functions (GET-HOST-BY-NAME, ...) added. Err bitreich.org 70 i-* Enhancement: [CLISP] Better network error type detection based on OS error code. Err bitreich.org 70 i-* Enhancement: [LispWorks] Better network error type detection based on OS error code. Err bitreich.org 70 i-* Bugfix: Fixed wrong macro expansions of {IP|PORT}-{FROM|TO}-OCTET-BUFFER functions (since 0.4.0) Err bitreich.org 70 i-* Bugfix: SOCKET-CONNECT didn't set CONNECTED-P for datagram usockets on most backends. Err bitreich.org 70 i-* Bugfix: [SBCL] Fixes for "SBCL/Win32: finalizer problem, etc", by Anton Kovalenko Err bitreich.org 70 i-* Bugfix: [SBCL] Fixed SOCKET-SERVER (UDP) on SBCL due to a issue in SOCKET-CONNECT when HOST is NIL. Err bitreich.org 70 i-* Bugfix: [SBCL] SOCKET-CONNECT's TIMEOUT argument now works as a "connection timeout". Err bitreich.org 70 i-* Bugfix: [CMUCL] Fixed SOCKET-SEND on unconnected usockets under Unicode version of CMUCL. Err bitreich.org 70 i-* Bugfix: [CLISP] Fixed and confirmed UDP (Datagram) support (RAWSOCK version). Err bitreich.org 70 i- Err bitreich.org 70 i-0.5.0: (Mar 12, 2011) Err bitreich.org 70 i- Err bitreich.org 70 i-* New supported platform: Macintosh Common Lisp (5.0 and up, plus RMCL) Err bitreich.org 70 i-* Support for UDP (datagram-usocket) was added (for all supported platform except MCL) Err bitreich.org 70 i-* Add WAIT-FOR-INPUT support for SBCL and ECL on win32. Err bitreich.org 70 i-* Simple TCP and UDP server API: SOCKET-SERVER Err bitreich.org 70 i-* Completely rewritten full-feature ABCL backends using latest Java interfaces Err bitreich.org 70 i-* Lots of bug fixed since 0.4.1 Err bitreich.org 70 i- Err bitreich.org 70 i-0.4.1: (Dec 27, 2008) Err bitreich.org 70 i- Err bitreich.org 70 i-* fixes for ECL, LispWorks, SBCL, SCL Err bitreich.org 70 i- Err bitreich.org 70 i-0.4.0: (Oct 28, 2008) Err bitreich.org 70 i- Err bitreich.org 70 i-* select()-like api: make a single thread wait for multiple sockets. Err bitreich.org 70 i-* various socket options for socket-creation with SOCKET-CONNECT. Err bitreich.org 70 i- Err bitreich.org 70 i-0.3.6: (Jun 21, 2008) Err bitreich.org 70 i- Err bitreich.org 70 i-* Code fixups based on advice from the ECL and OpenMCL maintainers. Err bitreich.org 70 i-* New exported symbols: WITH-MAPPED-CONDITIONS, NS-CONDITION, NS-ERROR, NS-UNKNOWN-ERROR and NS-UNKNOWN-CONDITION. Err bitreich.org 70 i- Err bitreich.org 70 i-0.3.4: (Jul 25, 2007) Err bitreich.org 70 i- Err bitreich.org 70 i-* Fix clisp get-host-name, multiple ECL fixes. Err bitreich.org 70 i- Err bitreich.org 70 i-0.3.3: (Jun 05, 2007) Err bitreich.org 70 i- Err bitreich.org 70 i-* Fix where host resolution routine was unable to resolve would return NIL instead of erroring. Err bitreich.org 70 i- Err bitreich.org 70 i-0.3.2: (Mar 04, 2007) Err bitreich.org 70 i- Err bitreich.org 70 i-* Fixes for many backends related to closing sockets. Err bitreich.org 70 i-* LispWorks fix for broken server sockets. Err bitreich.org 70 i-* API guarantee adjustments in preparation of porting Drakma. Err bitreich.org 70 i- Err bitreich.org 70 i-0.3.1: (Feb 28, 2007) Err bitreich.org 70 i- Err bitreich.org 70 i-* fixed with-server-socket; prevent creation of invalid sockets; 2 more convenience macros. Err bitreich.org 70 i- Err bitreich.org 70 i-0.3.0: (Jan 21, 2007) Err bitreich.org 70 i- Err bitreich.org 70 i-* Server sockets Err bitreich.org 70 i- Err bitreich.org 70 i-0.2.5: (Jan 19, 2007) Err bitreich.org 70 i- Err bitreich.org 70 i-* Allegro compilation fix. Err bitreich.org 70 i- Err bitreich.org 70 i-0.2.4: (Jan 17, 2007) Err bitreich.org 70 i- Err bitreich.org 70 i-* Various fixes for CMUCL, OpenMCL, Allegro and LispWorks. Err bitreich.org 70 i- Err bitreich.org 70 i-0.2.3: (Jan 04, 2007) Err bitreich.org 70 i- Err bitreich.org 70 i-* Add :element-type support to support stacking flexi-streams on socket streams for portable :external-format support. Err bitreich.org 70 i- Err bitreich.org 70 i-0.2.2: (Jan 03, 2007) Err bitreich.org 70 i- Err bitreich.org 70 i-* Add ECL support and a small SBCL bugfix. Err bitreich.org 70 i- Err bitreich.org 70 i-0.2.1: (Dec 21, 2006) Err bitreich.org 70 i- Err bitreich.org 70 i-* Remove 'open-stream' interface which is supposed to be provided by the 'trivial-usocket' package. Err bitreich.org 70 i- Err bitreich.org 70 i-0.2.0: (Dec 18, 2006) Err bitreich.org 70 i- Err bitreich.org 70 i-* Add support for Scieneer Common Lisp, fix issue #6 and API preparation for server side sockets (not in this release) Err bitreich.org 70 i- Err bitreich.org 70 i-0.1.0: (Feb 13, 2006) Err bitreich.org 70 i- Err bitreich.org 70 i-* Initial release Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/CONTRIBUTORS b/3rdparties/software/usocket-0.7.1/CONTRIBUTORS /scm/clic/file/3rdparties/software/usocket-0.7.1/CONTRIBUTORS.gph bitreich.org 70 i@@ -1,35 +0,0 @@ Err bitreich.org 70 i--*- Mode: outline -*- Err bitreich.org 70 i- Err bitreich.org 70 i-List of USOCKET Contributors (incomplete) Err bitreich.org 70 i- Err bitreich.org 70 i-* Attila Lendvai Err bitreich.org 70 i- - better handling of unsupported Lisps Err bitreich.org 70 i- Err bitreich.org 70 i-* Vladimir Sekissov Err bitreich.org 70 i- - fixes for CMUCL implementation Err bitreich.org 70 i- Err bitreich.org 70 i-* Pierre Thierry Err bitreich.org 70 i- - added license information Err bitreich.org 70 i- Err bitreich.org 70 i-* Stelian Ionescu Err bitreich.org 70 i- - finished conversion from generic functions Err bitreich.org 70 i- - enabled running thread-safe code in unthreaded lisps Err bitreich.org 70 i- Err bitreich.org 70 i-* Douglas Crosher Err bitreich.org 70 i- - added Scieneer Common Lisp support Err bitreich.org 70 i- Err bitreich.org 70 i-* Frank James Err bitreich.org 70 i- - UDP fixes and test cases Err bitreich.org 70 i- Err bitreich.org 70 i-* Mark H. David Err bitreich.org 70 i- - UDP test cases Err bitreich.org 70 i- - Suggestions on fixing GET-HOST-BY-NAME and HOST-TO-HBO Err bitreich.org 70 i- Err bitreich.org 70 i-* Elliott Slaughter Err bitreich.org 70 i- - Advanced WAIT-FOR-INPUT test case Err bitreich.org 70 i- Err bitreich.org 70 i-* Anton Vodonosov Err bitreich.org 70 i- - CLISP fixes Err bitreich.org 70 i- Err bitreich.org 70 i-* Terje Norderhaug Err bitreich.org 70 i- - MCL vendor code Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/LICENSE b/3rdparties/software/usocket-0.7.1/LICENSE /scm/clic/file/3rdparties/software/usocket-0.7.1/LICENSE.gph bitreich.org 70 i@@ -1,25 +0,0 @@ Err bitreich.org 70 i-(This is the MIT / X Consortium license as taken from Err bitreich.org 70 i- http://www.opensource.org/licenses/mit-license.html) Err bitreich.org 70 i- Err bitreich.org 70 i-Copyright (c) 2003 Erik Enge Err bitreich.org 70 i-Copyright (c) 2006-2007 Erik Huelsmann Err bitreich.org 70 i-Copyright (c) 2008-2018 Hans Hueber and Chun Tian Err bitreich.org 70 i- Err bitreich.org 70 i-Permission is hereby granted, free of charge, to any person obtaining Err bitreich.org 70 i-a copy of this software and associated documentation files (the Err bitreich.org 70 i-"Software"), to deal in the Software without restriction, including Err bitreich.org 70 i-without limitation the rights to use, copy, modify, merge, publish, Err bitreich.org 70 i-distribute, sublicense, and/or sell copies of the Software, and to Err bitreich.org 70 i-permit persons to whom the Software is furnished to do so, subject to Err bitreich.org 70 i-the following conditions: Err bitreich.org 70 i- Err bitreich.org 70 i-The above copyright notice and this permission notice shall be Err bitreich.org 70 i-included in all copies or substantial portions of the Software. Err bitreich.org 70 i- Err bitreich.org 70 i-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Err bitreich.org 70 i-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Err bitreich.org 70 i-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Err bitreich.org 70 i-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE Err bitreich.org 70 i-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION Err bitreich.org 70 i-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION Err bitreich.org 70 i-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/README.md b/3rdparties/software/usocket-0.7.1/README.md /scm/clic/file/3rdparties/software/usocket-0.7.1/README.md.gph bitreich.org 70 i@@ -1,144 +0,0 @@ Err bitreich.org 70 i-# Introduction Err bitreich.org 70 i- Err bitreich.org 70 i-This is the usocket Common Lisp sockets library: a library to bring Err bitreich.org 70 i-sockets access to the broadest of common lisp implementations as possible. Err bitreich.org 70 i- Err bitreich.org 70 i-## The library currently supports: Err bitreich.org 70 i- Err bitreich.org 70 i- 1. Allegro CL Err bitreich.org 70 i- 2. ABCL (ArmedBear) Err bitreich.org 70 i- 3. Clozure CL Err bitreich.org 70 i- 4. Corman Lisp Err bitreich.org 70 i- 5. GNU CLISP Err bitreich.org 70 i- 6. CMUCL Err bitreich.org 70 i- 7. ECL Err bitreich.org 70 i- 8. LispWorks (4.3 and up) Err bitreich.org 70 i- 9. Digitool MCL and RMCL (5.0 and up) Err bitreich.org 70 i- 10. MOCL Err bitreich.org 70 i- 11. SBCL Err bitreich.org 70 i- 12. Scieneer CL Err bitreich.org 70 i- 13. Symbolics Genera Err bitreich.org 70 i- Err bitreich.org 70 i-If your favorite common lisp misses in the list above, please contact Err bitreich.org 70 i-usocket-devel@common-lisp.net and submit a request. Please include Err bitreich.org 70 i-references to available sockets functions in your lisp implementation. Err bitreich.org 70 i- Err bitreich.org 70 i-The library has been ASDF (http://cliki.net/ASDF) enabled, meaning Err bitreich.org 70 i-that you can tar up a checkout and use that to ASDF-INSTALL:INSTALL Err bitreich.org 70 i-the package in your system package site. (Or use your usual ASDF Err bitreich.org 70 i-tricks to use the checkout directly.) Err bitreich.org 70 i- Err bitreich.org 70 i-## Remarks on licensing Err bitreich.org 70 i- Err bitreich.org 70 i-Even though the source code has an MIT style license attached to it, Err bitreich.org 70 i-when compiling this code with some of the supported lisp implementations Err bitreich.org 70 i-you may not end up with an MIT style binary version due to the licensing Err bitreich.org 70 i-of the implementations themselves. ECL is such an example and - when Err bitreich.org 70 i-it will become supported - GCL is like that too. Err bitreich.org 70 i- Err bitreich.org 70 i-## Non-support of :external-format Err bitreich.org 70 i- Err bitreich.org 70 i-Because of its definition in the hyperspec, there's no common Err bitreich.org 70 i-external-format between lisp implementations: every vendor has chosen Err bitreich.org 70 i-a different way to solve the problem of newline translation or Err bitreich.org 70 i-character set recoding. Err bitreich.org 70 i- Err bitreich.org 70 i-Because there's no way to avoid platform specific code in the application Err bitreich.org 70 i-when using external-format, the purpose of a portability layer gets Err bitreich.org 70 i-defeated. So, for now, usocket doesn't support external-format. Err bitreich.org 70 i- Err bitreich.org 70 i-The workaround to get reasonably portable external-format support is to Err bitreich.org 70 i-layer a flexi-stream (from flexi-streams) on top of a usocket stream. Err bitreich.org 70 i- Err bitreich.org 70 i-## API definition Err bitreich.org 70 i- Err bitreich.org 70 i- - usocket (class) Err bitreich.org 70 i- - stream-usocket (class; usocket derivative) Err bitreich.org 70 i- - stream-server-usocket (class; usocket derivative) Err bitreich.org 70 i- - socket-connect (function) [ to create an active/connected socket ] Err bitreich.org 70 i- socket-connect host port &key element-type Err bitreich.org 70 i- where `host' is a vectorized ip Err bitreich.org 70 i- or a string representation of a dotted ip address Err bitreich.org 70 i- or a hostname for lookup in the DNS system Err bitreich.org 70 i- - socket-listen (function) [ to create a passive/listening socket ] Err bitreich.org 70 i- socket-listen host port &key reuseaddress backlog element-type Err bitreich.org 70 i- where `host' has the same definition as above Err bitreich.org 70 i- - socket-accept (method) [ to create an active/connected socket ] Err bitreich.org 70 i- socket-accept socket &key element-type Err bitreich.org 70 i- returns (server side) a connected socket derived from a Err bitreich.org 70 i- listening/passive socket. Err bitreich.org 70 i- - socket-close (method) Err bitreich.org 70 i- socket-close socket Err bitreich.org 70 i- where socket a previously returned socket Err bitreich.org 70 i- - socket (usocket slot accessor), Err bitreich.org 70 i- the internal/implementation defined socket representation Err bitreich.org 70 i- - socket-stream (usocket slot accessor), Err bitreich.org 70 i- socket-stream socket Err bitreich.org 70 i- the return value of which satisfies the normal stream interface Err bitreich.org 70 i- - socket-shutdown Err bitreich.org 70 i- Err bitreich.org 70 i-### Errors: Err bitreich.org 70 i- - address-in-use-error Err bitreich.org 70 i- - address-not-available-error Err bitreich.org 70 i- - bad-file-descriptor-error Err bitreich.org 70 i- - connection-refused-error Err bitreich.org 70 i- - connection-aborted-error Err bitreich.org 70 i- - connection-reset-error Err bitreich.org 70 i- - invalid-argument-error Err bitreich.org 70 i- - no-buffers-error Err bitreich.org 70 i- - operation-not-supported-error Err bitreich.org 70 i- - operation-not-permitted-error Err bitreich.org 70 i- - protocol-not-supported-error Err bitreich.org 70 i- - socket-type-not-supported-error Err bitreich.org 70 i- - network-unreachable-error Err bitreich.org 70 i- - network-down-error Err bitreich.org 70 i- - network-reset-error Err bitreich.org 70 i- - host-down-error Err bitreich.org 70 i- - host-unreachable-error Err bitreich.org 70 i- - shutdown-error Err bitreich.org 70 i- - timeout-error Err bitreich.org 70 i- - unkown-error Err bitreich.org 70 i- Err bitreich.org 70 i-### Non-fatal conditions: Err bitreich.org 70 i- - interrupted-condition Err bitreich.org 70 i- - unkown-condition Err bitreich.org 70 i- Err bitreich.org 70 i-(for a description of the API methods and functions see Err bitreich.org 70 i- https://common-lisp.net/project/usocket/api-docs.shtml) Err bitreich.org 70 i- Err bitreich.org 70 i-## Test suite Err bitreich.org 70 i- Err bitreich.org 70 i-The test suite unfortunately isn't mature enough yet to run without Err bitreich.org 70 i-some manual configuration. Several elements are required which are Err bitreich.org 70 i-hard to programatically detect. Please adjust the test file before Err bitreich.org 70 i-running the tests, for these variables: Err bitreich.org 70 i- Err bitreich.org 70 i-- +non-existing-host+: The stringified IP address of a host on the Err bitreich.org 70 i- same subnet. No physical host may be present. Err bitreich.org 70 i-- +unused-local-port+: A port number of a port not in use on the Err bitreich.org 70 i- machine the tests run on. Err bitreich.org 70 i-- +common-lisp-net+: A vector with 4 integer elements which make up Err bitreich.org 70 i- an IP address. This must be the IP "common-lisp.net" resolves to. Err bitreich.org 70 i- Err bitreich.org 70 i-## Known problems Err bitreich.org 70 i- Err bitreich.org 70 i-- CMUCL error reporting wrt sockets raises only simple-errors Err bitreich.org 70 i- meaning there's no way to tell different error conditions apart. Err bitreich.org 70 i- All errors are mapped to unknown-error on CMUCL. Err bitreich.org 70 i- Err bitreich.org 70 i-- The ArmedBear backend doesn't do any error mapping (yet). Java Err bitreich.org 70 i- defines exceptions at the wrong level (IMO), since the exception Err bitreich.org 70 i- reported bares a relation to the function failing, not the actual Err bitreich.org 70 i- error that occurred: for example 'Address already in use' (when Err bitreich.org 70 i- creating a passive socket) is reported as a BindException with Err bitreich.org 70 i- an error text of 'Address already in use'. There's no way to sanely Err bitreich.org 70 i- map 'BindException' to a meaningfull error in usocket. [This does not Err bitreich.org 70 i- mean the backend should not at least map to 'unknown-error'!] Err bitreich.org 70 i- Err bitreich.org 70 i-- When using the library with ECL, you need the C compiler installed Err bitreich.org 70 i- to be able to compile and load the Foreign Function Interface. Err bitreich.org 70 i- Not all ECL targets support DFFI yet, so on some targets this would Err bitreich.org 70 i- be the case anyway. By depending on this technique, usocket can Err bitreich.org 70 i- reuse the FFI code on all platforms (including Windows). This benefit Err bitreich.org 70 i- currently outweighs the additional requirement. (hey, it's *Embeddable* Err bitreich.org 70 i- Common Lisp, so, you probably wanted to embed it all along, right?) Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/TODO b/3rdparties/software/usocket-0.7.1/TODO /scm/clic/file/3rdparties/software/usocket-0.7.1/TODO.gph bitreich.org 70 i@@ -1,5 +0,0 @@ Err bitreich.org 70 i-- Fix condition systems (making all implementation generate same error) Err bitreich.org 70 i-- Add INET6 support. Err bitreich.org 70 i-- IOlib backend Err bitreich.org 70 i- Err bitreich.org 70 i-For more TODO items, see http://trac.common-lisp.net/usocket/report. Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/backend/.gitignore b/3rdparties/software/usocket-0.7.1/backend/.gitignore /scm/clic/file/3rdparties/software/usocket-0.7.1/backend/.gitignore.gph bitreich.org 70 i@@ -1 +0,0 @@ Err bitreich.org 70 i-*~ Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/backend/abcl.lisp b/3rdparties/software/usocket-0.7.1/backend/abcl.lisp /scm/clic/file/3rdparties/software/usocket-0.7.1/backend/abcl.lisp.gph bitreich.org 70 i@@ -1,440 +0,0 @@ Err bitreich.org 70 i-;;;; New ABCL networking support (replacement to old armedbear.lisp) Err bitreich.org 70 i-;;;; Author: Chun Tian (binghe) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; See LICENSE for licensing information. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :usocket) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Java Classes ($*...) Err bitreich.org 70 i-(defvar $*boolean (jclass "boolean")) Err bitreich.org 70 i-(defvar $*byte (jclass "byte")) Err bitreich.org 70 i-(defvar $*byte[] (jclass "[B")) Err bitreich.org 70 i-(defvar $*int (jclass "int")) Err bitreich.org 70 i-(defvar $*long (jclass "long")) Err bitreich.org 70 i-(defvar $*|Byte| (jclass "java.lang.Byte")) Err bitreich.org 70 i-(defvar $*DatagramChannel (jclass "java.nio.channels.DatagramChannel")) Err bitreich.org 70 i-(defvar $*DatagramPacket (jclass "java.net.DatagramPacket")) Err bitreich.org 70 i-(defvar $*DatagramSocket (jclass "java.net.DatagramSocket")) Err bitreich.org 70 i-(defvar $*Inet4Address (jclass "java.net.Inet4Address")) Err bitreich.org 70 i-(defvar $*InetAddress (jclass "java.net.InetAddress")) Err bitreich.org 70 i-(defvar $*InetSocketAddress (jclass "java.net.InetSocketAddress")) Err bitreich.org 70 i-(defvar $*Iterator (jclass "java.util.Iterator")) Err bitreich.org 70 i-(defvar $*SelectableChannel (jclass "java.nio.channels.SelectableChannel")) Err bitreich.org 70 i-(defvar $*SelectionKey (jclass "java.nio.channels.SelectionKey")) Err bitreich.org 70 i-(defvar $*Selector (jclass "java.nio.channels.Selector")) Err bitreich.org 70 i-(defvar $*ServerSocket (jclass "java.net.ServerSocket")) Err bitreich.org 70 i-(defvar $*ServerSocketChannel (jclass "java.nio.channels.ServerSocketChannel")) Err bitreich.org 70 i-(defvar $*Set (jclass "java.util.Set")) Err bitreich.org 70 i-(defvar $*Socket (jclass "java.net.Socket")) Err bitreich.org 70 i-(defvar $*SocketAddress (jclass "java.net.SocketAddress")) Err bitreich.org 70 i-(defvar $*SocketChannel (jclass "java.nio.channels.SocketChannel")) Err bitreich.org 70 i-(defvar $*String (jclass "java.lang.String")) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Java Constructor ($%.../n) Err bitreich.org 70 i-(defvar $%Byte/0 (jconstructor $*|Byte| $*byte)) Err bitreich.org 70 i-(defvar $%DatagramPacket/3 (jconstructor $*DatagramPacket $*byte[] $*int $*int)) Err bitreich.org 70 i-(defvar $%DatagramPacket/5 (jconstructor $*DatagramPacket $*byte[] $*int $*int $*InetAddress $*int)) Err bitreich.org 70 i-(defvar $%DatagramSocket/0 (jconstructor $*DatagramSocket)) Err bitreich.org 70 i-(defvar $%DatagramSocket/1 (jconstructor $*DatagramSocket $*int)) Err bitreich.org 70 i-(defvar $%DatagramSocket/2 (jconstructor $*DatagramSocket $*int $*InetAddress)) Err bitreich.org 70 i-(defvar $%InetSocketAddress/1 (jconstructor $*InetSocketAddress $*int)) Err bitreich.org 70 i-(defvar $%InetSocketAddress/2 (jconstructor $*InetSocketAddress $*InetAddress $*int)) Err bitreich.org 70 i-(defvar $%ServerSocket/0 (jconstructor $*ServerSocket)) Err bitreich.org 70 i-(defvar $%ServerSocket/1 (jconstructor $*ServerSocket $*int)) Err bitreich.org 70 i-(defvar $%ServerSocket/2 (jconstructor $*ServerSocket $*int $*int)) Err bitreich.org 70 i-(defvar $%ServerSocket/3 (jconstructor $*ServerSocket $*int $*int $*InetAddress)) Err bitreich.org 70 i-(defvar $%Socket/0 (jconstructor $*Socket)) Err bitreich.org 70 i-(defvar $%Socket/2 (jconstructor $*Socket $*InetAddress $*int)) Err bitreich.org 70 i-(defvar $%Socket/4 (jconstructor $*Socket $*InetAddress $*int $*InetAddress $*int)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Java Methods ($@...[/Class]/n) Err bitreich.org 70 i-(defvar $@accept/0 (jmethod $*ServerSocket "accept")) Err bitreich.org 70 i-(defvar $@bind/DatagramSocket/1 (jmethod $*DatagramSocket "bind" $*SocketAddress)) Err bitreich.org 70 i-(defvar $@bind/ServerSocket/1 (jmethod $*ServerSocket "bind" $*SocketAddress)) Err bitreich.org 70 i-(defvar $@bind/ServerSocket/2 (jmethod $*ServerSocket "bind" $*SocketAddress $*int)) Err bitreich.org 70 i-(defvar $@bind/Socket/1 (jmethod $*Socket "bind" $*SocketAddress)) Err bitreich.org 70 i-(defvar $@byteValue/0 (jmethod $*|Byte| "byteValue")) Err bitreich.org 70 i-(defvar $@channel/0 (jmethod $*SelectionKey "channel")) Err bitreich.org 70 i-(defvar $@close/DatagramSocket/0 (jmethod $*DatagramSocket "close")) Err bitreich.org 70 i-(defvar $@close/Selector/0 (jmethod $*Selector "close")) Err bitreich.org 70 i-(defvar $@close/ServerSocket/0 (jmethod $*ServerSocket "close")) Err bitreich.org 70 i-(defvar $@close/Socket/0 (jmethod $*Socket "close")) Err bitreich.org 70 i-(defvar $@shutdownInput/Socket/0 (jmethod $*Socket "shutdownInput")) Err bitreich.org 70 i-(defvar $@shutdownOutput/Socket/0 (jmethod $*Socket "shutdownOutput")) Err bitreich.org 70 i-(defvar $@configureBlocking/1 (jmethod $*SelectableChannel "configureBlocking" $*boolean)) Err bitreich.org 70 i-(defvar $@connect/DatagramChannel/1 (jmethod $*DatagramChannel "connect" $*SocketAddress)) Err bitreich.org 70 i-(defvar $@connect/Socket/1 (jmethod $*Socket "connect" $*SocketAddress)) Err bitreich.org 70 i-(defvar $@connect/Socket/2 (jmethod $*Socket "connect" $*SocketAddress $*int)) Err bitreich.org 70 i-(defvar $@connect/SocketChannel/1 (jmethod $*SocketChannel "connect" $*SocketAddress)) Err bitreich.org 70 i-(defvar $@getAddress/0 (jmethod $*InetAddress "getAddress")) Err bitreich.org 70 i-(defvar $@getAllByName/1 (jmethod $*InetAddress "getAllByName" $*String)) Err bitreich.org 70 i-(defvar $@getByName/1 (jmethod $*InetAddress "getByName" $*String)) Err bitreich.org 70 i-(defvar $@getChannel/DatagramSocket/0 (jmethod $*DatagramSocket "getChannel")) Err bitreich.org 70 i-(defvar $@getChannel/ServerSocket/0 (jmethod $*ServerSocket "getChannel")) Err bitreich.org 70 i-(defvar $@getChannel/Socket/0 (jmethod $*Socket "getChannel")) Err bitreich.org 70 i-(defvar $@getAddress/DatagramPacket/0 (jmethod $*DatagramPacket "getAddress")) Err bitreich.org 70 i-(defvar $@getHostName/0 (jmethod $*InetAddress "getHostName")) Err bitreich.org 70 i-(defvar $@getInetAddress/DatagramSocket/0 (jmethod $*DatagramSocket "getInetAddress")) Err bitreich.org 70 i-(defvar $@getInetAddress/ServerSocket/0 (jmethod $*ServerSocket "getInetAddress")) Err bitreich.org 70 i-(defvar $@getInetAddress/Socket/0 (jmethod $*Socket "getInetAddress")) Err bitreich.org 70 i-(defvar $@getLength/DatagramPacket/0 (jmethod $*DatagramPacket "getLength")) Err bitreich.org 70 i-(defvar $@getLocalAddress/DatagramSocket/0 (jmethod $*DatagramSocket "getLocalAddress")) Err bitreich.org 70 i-(defvar $@getLocalAddress/Socket/0 (jmethod $*Socket "getLocalAddress")) Err bitreich.org 70 i-(defvar $@getLocalPort/DatagramSocket/0 (jmethod $*DatagramSocket "getLocalPort")) Err bitreich.org 70 i-(defvar $@getLocalPort/ServerSocket/0 (jmethod $*ServerSocket "getLocalPort")) Err bitreich.org 70 i-(defvar $@getLocalPort/Socket/0 (jmethod $*Socket "getLocalPort")) Err bitreich.org 70 i-(defvar $@getOffset/DatagramPacket/0 (jmethod $*DatagramPacket "getOffset")) Err bitreich.org 70 i-(defvar $@getPort/DatagramPacket/0 (jmethod $*DatagramPacket "getPort")) Err bitreich.org 70 i-(defvar $@getPort/DatagramSocket/0 (jmethod $*DatagramSocket "getPort")) Err bitreich.org 70 i-(defvar $@getPort/Socket/0 (jmethod $*Socket "getPort")) Err bitreich.org 70 i-(defvar $@hasNext/0 (jmethod $*Iterator "hasNext")) Err bitreich.org 70 i-(defvar $@iterator/0 (jmethod $*Set "iterator")) Err bitreich.org 70 i-(defvar $@next/0 (jmethod $*Iterator "next")) Err bitreich.org 70 i-(defvar $@open/DatagramChannel/0 (jmethod $*DatagramChannel "open")) Err bitreich.org 70 i-(defvar $@open/Selector/0 (jmethod $*Selector "open")) Err bitreich.org 70 i-(defvar $@open/ServerSocketChannel/0 (jmethod $*ServerSocketChannel "open")) Err bitreich.org 70 i-(defvar $@open/SocketChannel/0 (jmethod $*SocketChannel "open")) Err bitreich.org 70 i-(defvar $@receive/1 (jmethod $*DatagramSocket "receive" $*DatagramPacket)) Err bitreich.org 70 i-(defvar $@register/2 (jmethod $*SelectableChannel "register" $*Selector $*int)) Err bitreich.org 70 i-(defvar $@select/0 (jmethod $*Selector "select")) Err bitreich.org 70 i-(defvar $@select/1 (jmethod $*Selector "select" $*long)) Err bitreich.org 70 i-(defvar $@selectedKeys/0 (jmethod $*Selector "selectedKeys")) Err bitreich.org 70 i-(defvar $@send/1 (jmethod $*DatagramSocket "send" $*DatagramPacket)) Err bitreich.org 70 i-(defvar $@setReuseAddress/1 (jmethod $*ServerSocket "setReuseAddress" $*boolean)) Err bitreich.org 70 i-(defvar $@setSoTimeout/DatagramSocket/1 (jmethod $*DatagramSocket "setSoTimeout" $*int)) Err bitreich.org 70 i-(defvar $@setSoTimeout/Socket/1 (jmethod $*Socket "setSoTimeout" $*int)) Err bitreich.org 70 i-(defvar $@setTcpNoDelay/1 (jmethod $*Socket "setTcpNoDelay" $*boolean)) Err bitreich.org 70 i-(defvar $@socket/DatagramChannel/0 (jmethod $*DatagramChannel "socket")) Err bitreich.org 70 i-(defvar $@socket/ServerSocketChannel/0 (jmethod $*ServerSocketChannel "socket")) Err bitreich.org 70 i-(defvar $@socket/SocketChannel/0 (jmethod $*SocketChannel "socket")) Err bitreich.org 70 i-(defvar $@validOps/0 (jmethod $*SelectableChannel "validOps")) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Java Field Variables ($+...) Err bitreich.org 70 i-(defvar $+op-accept (jfield $*SelectionKey "OP_ACCEPT")) Err bitreich.org 70 i-(defvar $+op-connect (jfield $*SelectionKey "OP_CONNECT")) Err bitreich.org 70 i-(defvar $+op-read (jfield $*SelectionKey "OP_READ")) Err bitreich.org 70 i-(defvar $+op-write (jfield $*SelectionKey "OP_WRITE")) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Wrapper functions (return-type: java-object) Err bitreich.org 70 i-(defun %get-address (address) Err bitreich.org 70 i- (jcall $@getAddress/0 address)) Err bitreich.org 70 i-(defun %get-all-by-name (string) ; return a simple vector Err bitreich.org 70 i- (jstatic $@getAllByName/1 $*InetAddress string)) Err bitreich.org 70 i-(defun %get-by-name (string) Err bitreich.org 70 i- (jstatic $@getByName/1 $*InetAddress string)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun host-to-inet4 (host) Err bitreich.org 70 i- "USOCKET host formats to Java Inet4Address, used internally." Err bitreich.org 70 i- (%get-by-name (host-to-hostname host))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; HANDLE-CONTITION Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter +abcl-error-map+ Err bitreich.org 70 i- `(("java.net.BindException" . operation-not-permitted-error) Err bitreich.org 70 i- ("java.net.ConnectException" . connection-refused-error) Err bitreich.org 70 i- ("java.net.NoRouteToHostException" . network-unreachable-error) ; untested Err bitreich.org 70 i- ("java.net.PortUnreachableException" . protocol-not-supported-error) ; untested Err bitreich.org 70 i- ("java.net.ProtocolException" . protocol-not-supported-error) ; untested Err bitreich.org 70 i- ("java.net.SocketException" . socket-type-not-supported-error) ; untested Err bitreich.org 70 i- ("java.net.SocketTimeoutException" . timeout-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter +abcl-nameserver-error-map+ Err bitreich.org 70 i- `(("java.net.UnknownHostException" . ns-host-not-found-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun handle-condition (condition &optional (socket nil)) Err bitreich.org 70 i- (typecase condition Err bitreich.org 70 i- (java-exception Err bitreich.org 70 i- (let ((java-cause (java-exception-cause condition))) Err bitreich.org 70 i- (let* ((usock-error (cdr (assoc (jclass-of java-cause) +abcl-error-map+ Err bitreich.org 70 i- :test #'string=))) Err bitreich.org 70 i- (usock-error (if (functionp usock-error) Err bitreich.org 70 i- (funcall usock-error condition) Err bitreich.org 70 i- usock-error)) Err bitreich.org 70 i- (nameserver-error (cdr (assoc (jclass-of java-cause) +abcl-nameserver-error-map+ Err bitreich.org 70 i- :test #'string=)))) Err bitreich.org 70 i- (if nameserver-error Err bitreich.org 70 i- (error nameserver-error :host-or-ip nil) Err bitreich.org 70 i- (when usock-error Err bitreich.org 70 i- (error usock-error :socket socket)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; GET-HOSTS-BY-NAME Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-address (address) Err bitreich.org 70 i- (when address Err bitreich.org 70 i- (let* ((array (%get-address address)) Err bitreich.org 70 i- (length (jarray-length array))) Err bitreich.org 70 i- (labels ((jbyte (n) Err bitreich.org 70 i- (let ((byte (jarray-ref array n))) Err bitreich.org 70 i- (if (minusp byte) (+ 256 byte) byte)))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((= 4 length) Err bitreich.org 70 i- (vector (jbyte 0) (jbyte 1) (jbyte 2) (jbyte 3))) Err bitreich.org 70 i- ((= 16 length) Err bitreich.org 70 i- (vector (jbyte 0) (jbyte 1) (jbyte 2) (jbyte 3) Err bitreich.org 70 i- (jbyte 4) (jbyte 5) (jbyte 6) (jbyte 7) Err bitreich.org 70 i- (jbyte 8) (jbyte 9) (jbyte 10) (jbyte 11) Err bitreich.org 70 i- (jbyte 12) (jbyte 13) (jbyte 14) (jbyte 15))) Err bitreich.org 70 i- (t nil)))))) ; neither a IPv4 nor IPv6 address?! Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-hosts-by-name (name) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (map 'list #'get-address (%get-all-by-name name)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; GET-HOST-BY-ADDRESS Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-host-by-address (host) Err bitreich.org 70 i- (let ((inet4 (host-to-inet4 host))) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (jcall $@getHostName/0 inet4)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; SOCKET-CONNECT Err bitreich.org 70 i- Err bitreich.org 70 i-(defun socket-connect (host port &key (protocol :stream) (element-type 'character) Err bitreich.org 70 i- timeout deadline (nodelay t nodelay-supplied-p) Err bitreich.org 70 i- local-host local-port) Err bitreich.org 70 i- (when deadline (unsupported 'deadline 'socket-connect)) Err bitreich.org 70 i- (let (socket stream usocket) Err bitreich.org 70 i- (ecase protocol Err bitreich.org 70 i- (:stream ; TCP Err bitreich.org 70 i- (let ((channel (jstatic $@open/SocketChannel/0 $*SocketChannel)) Err bitreich.org 70 i- (address (jnew $%InetSocketAddress/2 (host-to-inet4 host) port))) Err bitreich.org 70 i- (setq socket (jcall $@socket/SocketChannel/0 channel)) Err bitreich.org 70 i- ;; bind to local address if needed Err bitreich.org 70 i- (when (or local-host local-port) Err bitreich.org 70 i- (let ((local-address (jnew $%InetSocketAddress/2 (host-to-inet4 local-host) (or local-port 0)))) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (jcall $@bind/Socket/1 socket local-address)))) Err bitreich.org 70 i- ;; connect to dest address Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (jcall $@connect/SocketChannel/1 channel address)) Err bitreich.org 70 i- (setq stream (ext:get-socket-stream socket :element-type element-type) Err bitreich.org 70 i- usocket (make-stream-socket :stream stream :socket socket)) Err bitreich.org 70 i- (when nodelay-supplied-p Err bitreich.org 70 i- (jcall $@setTcpNoDelay/1 socket (if nodelay ;; both t and :if-supported mean java:+true+ Err bitreich.org 70 i- java:+true+ java:+false+))) Err bitreich.org 70 i- (when timeout Err bitreich.org 70 i- (jcall $@setSoTimeout/Socket/1 socket (truncate (* 1000 timeout)))))) Err bitreich.org 70 i- (:datagram ; UDP Err bitreich.org 70 i- (let ((channel (jstatic $@open/DatagramChannel/0 $*DatagramChannel))) Err bitreich.org 70 i- (setq socket (jcall $@socket/DatagramChannel/0 channel)) Err bitreich.org 70 i- ;; bind to local address if needed Err bitreich.org 70 i- (when (or local-host local-port) Err bitreich.org 70 i- (let ((local-address (jnew $%InetSocketAddress/2 (host-to-inet4 local-host) (or local-port 0)))) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (jcall $@bind/DatagramSocket/1 socket local-address)))) Err bitreich.org 70 i- ;; connect to dest address if needed Err bitreich.org 70 i- (when (and host port) Err bitreich.org 70 i- (let ((address (jnew $%InetSocketAddress/2 (host-to-inet4 host) port))) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (jcall $@connect/DatagramChannel/1 channel address)))) Err bitreich.org 70 i- (setq usocket (make-datagram-socket socket :connected-p (if (and host port) t nil))) Err bitreich.org 70 i- (when timeout Err bitreich.org 70 i- (jcall $@setSoTimeout/DatagramSocket/1 socket (truncate (* 1000 timeout))))))) Err bitreich.org 70 i- usocket)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; SOCKET-LISTEN Err bitreich.org 70 i- Err bitreich.org 70 i-(defun socket-listen (host port &key reuseaddress Err bitreich.org 70 i- (reuse-address nil reuse-address-supplied-p) Err bitreich.org 70 i- (backlog 5 backlog-supplied-p) Err bitreich.org 70 i- (element-type 'character)) Err bitreich.org 70 i- (declare (type boolean reuse-address)) Err bitreich.org 70 i- (let* ((reuseaddress (if reuse-address-supplied-p reuse-address reuseaddress)) Err bitreich.org 70 i- (channel (jstatic $@open/ServerSocketChannel/0 $*ServerSocketChannel)) Err bitreich.org 70 i- (socket (jcall $@socket/ServerSocketChannel/0 channel)) Err bitreich.org 70 i- (endpoint (jnew $%InetSocketAddress/2 (host-to-inet4 host) (or port 0)))) Err bitreich.org 70 i- (jcall $@setReuseAddress/1 socket (if reuseaddress java:+true+ java:+false+)) Err bitreich.org 70 i- (with-mapped-conditions (socket) Err bitreich.org 70 i- (if backlog-supplied-p Err bitreich.org 70 i- (jcall $@bind/ServerSocket/2 socket endpoint backlog) Err bitreich.org 70 i- (jcall $@bind/ServerSocket/1 socket endpoint))) Err bitreich.org 70 i- (make-stream-server-socket socket :element-type element-type))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; SOCKET-ACCEPT Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-accept ((usocket stream-server-usocket) Err bitreich.org 70 i- &key (element-type 'character element-type-p)) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (let* ((client-socket (jcall $@accept/0 (socket usocket))) Err bitreich.org 70 i- (element-type (if element-type-p Err bitreich.org 70 i- element-type Err bitreich.org 70 i- (element-type usocket))) Err bitreich.org 70 i- (stream (ext:get-socket-stream client-socket :element-type element-type))) Err bitreich.org 70 i- (make-stream-socket :stream stream :socket client-socket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; SOCKET-CLOSE Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-close :before ((usocket usocket)) Err bitreich.org 70 i- (when (wait-list usocket) Err bitreich.org 70 i- (remove-waiter (wait-list usocket) usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-close ((usocket stream-server-usocket)) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (jcall $@close/ServerSocket/0 (socket usocket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-close ((usocket stream-usocket)) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (close (socket-stream usocket)) Err bitreich.org 70 i- (jcall $@close/Socket/0 (socket usocket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-close ((usocket datagram-usocket)) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (jcall $@close/DatagramSocket/0 (socket usocket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-shutdown ((usocket stream-usocket) direction) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (ecase direction Err bitreich.org 70 i- (:input Err bitreich.org 70 i- (jcall $@shutdownInput/Socket/0 (socket usocket))) Err bitreich.org 70 i- (:output Err bitreich.org 70 i- (jcall $@shutdownOutput/Socket/0 (socket usocket)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; GET-LOCAL/PEER-NAME/ADDRESS/PORT Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-name ((usocket usocket)) Err bitreich.org 70 i- (values (get-local-address usocket) Err bitreich.org 70 i- (get-local-port usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-name ((usocket usocket)) Err bitreich.org 70 i- (values (get-peer-address usocket) Err bitreich.org 70 i- (get-peer-port usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-address ((usocket stream-usocket)) Err bitreich.org 70 i- (get-address (jcall $@getLocalAddress/Socket/0 (socket usocket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-address ((usocket stream-server-usocket)) Err bitreich.org 70 i- (get-address (jcall $@getInetAddress/ServerSocket/0 (socket usocket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-address ((usocket datagram-usocket)) Err bitreich.org 70 i- (get-address (jcall $@getLocalAddress/DatagramSocket/0 (socket usocket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-address ((usocket stream-usocket)) Err bitreich.org 70 i- (get-address (jcall $@getInetAddress/Socket/0 (socket usocket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-address ((usocket datagram-usocket)) Err bitreich.org 70 i- (get-address (jcall $@getInetAddress/DatagramSocket/0 (socket usocket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-port ((usocket stream-usocket)) Err bitreich.org 70 i- (jcall $@getLocalPort/Socket/0 (socket usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-port ((usocket stream-server-usocket)) Err bitreich.org 70 i- (jcall $@getLocalPort/ServerSocket/0 (socket usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-port ((usocket datagram-usocket)) Err bitreich.org 70 i- (jcall $@getLocalPort/DatagramSocket/0 (socket usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-port ((usocket stream-usocket)) Err bitreich.org 70 i- (jcall $@getPort/Socket/0 (socket usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-port ((usocket datagram-usocket)) Err bitreich.org 70 i- (jcall $@getPort/DatagramSocket/0 (socket usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; SOCKET-SEND & SOCKET-RECEIVE Err bitreich.org 70 i- Err bitreich.org 70 i-(defun *->byte (data) Err bitreich.org 70 i- (declare (type (unsigned-byte 8) data)) ; required by SOCKET-SEND Err bitreich.org 70 i- (jnew $%Byte/0 (if (> data 127) (- data 256) data))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun byte->* (byte &optional (element-type '(unsigned-byte 8))) Err bitreich.org 70 i- (let* ((ub8 (if (minusp byte) (+ 256 byte) byte))) Err bitreich.org 70 i- (if (eq element-type 'character) Err bitreich.org 70 i- (code-char ub8) Err bitreich.org 70 i- ub8))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-send ((usocket datagram-usocket) buffer size &key host port (offset 0)) Err bitreich.org 70 i- (let* ((socket (socket usocket)) Err bitreich.org 70 i- (byte-array (jnew-array $*byte size)) Err bitreich.org 70 i- (packet (if (and host port) Err bitreich.org 70 i- (jnew $%DatagramPacket/5 byte-array 0 size (host-to-inet4 host) port) Err bitreich.org 70 i- (jnew $%DatagramPacket/3 byte-array 0 size)))) Err bitreich.org 70 i- ;; prepare sending data Err bitreich.org 70 i- (loop for i from offset below (+ size offset) Err bitreich.org 70 i- do (setf (jarray-ref byte-array i) (*->byte (aref buffer i)))) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (jcall $@send/1 socket packet)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; TODO: return-host and return-port cannot be get ... Err bitreich.org 70 i-(defmethod socket-receive ((usocket datagram-usocket) buffer length Err bitreich.org 70 i- &key (element-type '(unsigned-byte 8))) Err bitreich.org 70 i- (declare (values (simple-array (unsigned-byte 8) (*)) ; buffer Err bitreich.org 70 i- (integer 0) ; size Err bitreich.org 70 i- (unsigned-byte 32) ; host Err bitreich.org 70 i- (unsigned-byte 16))) ; port Err bitreich.org 70 i- (let* ((socket (socket usocket)) Err bitreich.org 70 i- (real-length (or length +max-datagram-packet-size+)) Err bitreich.org 70 i- (byte-array (jnew-array $*byte real-length)) Err bitreich.org 70 i- (packet (jnew $%DatagramPacket/3 byte-array 0 real-length))) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (jcall $@receive/1 socket packet)) Err bitreich.org 70 i- (let* ((receive-length (jcall $@getLength/DatagramPacket/0 packet)) Err bitreich.org 70 i- (return-buffer (or buffer (make-array receive-length :element-type element-type)))) Err bitreich.org 70 i- (loop for i from 0 below receive-length Err bitreich.org 70 i- do (setf (aref return-buffer i) Err bitreich.org 70 i- (byte->* (jarray-ref byte-array i) element-type))) Err bitreich.org 70 i- (let ((return-host (if (connected-p usocket) Err bitreich.org 70 i- (get-peer-address usocket) Err bitreich.org 70 i- (get-address (jcall $@getAddress/DatagramPacket/0 packet)))) Err bitreich.org 70 i- (return-port (if (connected-p usocket) Err bitreich.org 70 i- (get-peer-port usocket) Err bitreich.org 70 i- (jcall $@getPort/DatagramPacket/0 packet)))) Err bitreich.org 70 i- (values return-buffer Err bitreich.org 70 i- receive-length Err bitreich.org 70 i- return-host Err bitreich.org 70 i- return-port))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; WAIT-FOR-INPUT Err bitreich.org 70 i- Err bitreich.org 70 i-(defun socket-channel-class (usocket) Err bitreich.org 70 i- (cond ((stream-usocket-p usocket) $*SocketChannel) Err bitreich.org 70 i- ((stream-server-usocket-p usocket) $*ServerSocketChannel) Err bitreich.org 70 i- ((datagram-usocket-p usocket) $*DatagramChannel))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-socket-channel (usocket) Err bitreich.org 70 i- (let ((method (cond ((stream-usocket-p usocket) $@getChannel/Socket/0) Err bitreich.org 70 i- ((stream-server-usocket-p usocket) $@getChannel/ServerSocket/0) Err bitreich.org 70 i- ((datagram-usocket-p usocket) $@getChannel/DatagramSocket/0)))) Err bitreich.org 70 i- (jcall method (socket usocket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun wait-for-input-internal (wait-list &key timeout) Err bitreich.org 70 i- (let* ((sockets (wait-list-waiters wait-list)) Err bitreich.org 70 i- (ops (logior $+op-read $+op-accept)) Err bitreich.org 70 i- (selector (jstatic $@open/Selector/0 $*Selector)) Err bitreich.org 70 i- (channels (mapcar #'get-socket-channel sockets))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (dolist (channel channels) Err bitreich.org 70 i- (jcall $@configureBlocking/1 channel java:+false+) Err bitreich.org 70 i- (jcall $@register/2 channel selector (logand ops (jcall $@validOps/0 channel)))) Err bitreich.org 70 i- (let ((ready-count (if timeout Err bitreich.org 70 i- (jcall $@select/1 selector (truncate (* timeout 1000))) Err bitreich.org 70 i- (jcall $@select/0 selector)))) Err bitreich.org 70 i- (when (plusp ready-count) Err bitreich.org 70 i- (let* ((keys (jcall $@selectedKeys/0 selector)) Err bitreich.org 70 i- (iterator (jcall $@iterator/0 keys)) Err bitreich.org 70 i- (%wait (wait-list-%wait wait-list))) Err bitreich.org 70 i- (loop while (jcall $@hasNext/0 iterator) Err bitreich.org 70 i- do (let* ((key (jcall $@next/0 iterator)) Err bitreich.org 70 i- (channel (jcall $@channel/0 key))) Err bitreich.org 70 i- (setf (state (gethash channel %wait)) :read))))))) Err bitreich.org 70 i- (jcall $@close/Selector/0 selector) Err bitreich.org 70 i- (dolist (channel channels) Err bitreich.org 70 i- (jcall $@configureBlocking/1 channel java:+true+))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; WAIT-LIST Err bitreich.org 70 i- Err bitreich.org 70 i-;;; NOTE from original worker (Erik): Err bitreich.org 70 i-;;; Note that even though Java has the concept of the Selector class, which Err bitreich.org 70 i-;;; remotely looks like a wait-list, it requires the sockets to be non-blocking. Err bitreich.org 70 i-;;; usocket however doesn't make any such guarantees and is therefore unable to Err bitreich.org 70 i-;;; use the concept outside of the waiting routine itself (blergh!). Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %setup-wait-list (wl) Err bitreich.org 70 i- (setf (wait-list-%wait wl) Err bitreich.org 70 i- (make-hash-table :test #'equal :rehash-size 1.3d0))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %add-waiter (wl w) Err bitreich.org 70 i- (setf (gethash (get-socket-channel w) (wait-list-%wait wl)) w)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %remove-waiter (wl w) Err bitreich.org 70 i- (remhash (get-socket-channel w) (wait-list-%wait wl))) Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/backend/allegro.lisp b/3rdparties/software/usocket-0.7.1/backend/allegro.lisp /scm/clic/file/3rdparties/software/usocket-0.7.1/backend/allegro.lisp.gph bitreich.org 70 i@@ -1,225 +0,0 @@ Err bitreich.org 70 i-;;;; See LICENSE for licensing information. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :usocket) Err bitreich.org 70 i- Err bitreich.org 70 i-#+cormanlisp Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (require :acl-socket)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+allegro Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (require :sock) Err bitreich.org 70 i- ;; for wait-for-input: Err bitreich.org 70 i- (require :process) Err bitreich.org 70 i- ;; note: the line below requires ACL 6.2+ Err bitreich.org 70 i- (require :osi)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-host-name () Err bitreich.org 70 i- ;; note: the line below requires ACL 7.0+ to actually *work* on windows Err bitreich.org 70 i- #+allegro (excl.osi:gethostname) Err bitreich.org 70 i- #+cormanlisp "") Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter +allegro-identifier-error-map+ Err bitreich.org 70 i- '((:address-in-use . address-in-use-error) Err bitreich.org 70 i- (:address-not-available . address-not-available-error) Err bitreich.org 70 i- (:network-down . network-down-error) Err bitreich.org 70 i- (:network-reset . network-reset-error) Err bitreich.org 70 i- (:network-unreachable . network-unreachable-error) Err bitreich.org 70 i- (:connection-aborted . connection-aborted-error) Err bitreich.org 70 i- (:connection-reset . connection-reset-error) Err bitreich.org 70 i- (:no-buffer-space . no-buffers-error) Err bitreich.org 70 i- (:shutdown . shutdown-error) Err bitreich.org 70 i- (:connection-timed-out . timeout-error) Err bitreich.org 70 i- (:connection-refused . connection-refused-error) Err bitreich.org 70 i- (:host-down . host-down-error) Err bitreich.org 70 i- (:host-unreachable . host-unreachable-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun handle-condition (condition &optional (socket nil)) Err bitreich.org 70 i- "Dispatch correct usocket condition." Err bitreich.org 70 i- (typecase condition Err bitreich.org 70 i- #+allegro Err bitreich.org 70 i- (excl:socket-error Err bitreich.org 70 i- (let ((usock-err Err bitreich.org 70 i- (cdr (assoc (excl:stream-error-identifier condition) Err bitreich.org 70 i- +allegro-identifier-error-map+)))) Err bitreich.org 70 i- (if usock-err Err bitreich.org 70 i- (error usock-err :socket socket) Err bitreich.org 70 i- (error 'unknown-error Err bitreich.org 70 i- :real-error condition Err bitreich.org 70 i- :socket socket)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun to-format (element-type) Err bitreich.org 70 i- (if (subtypep element-type 'character) Err bitreich.org 70 i- :text Err bitreich.org 70 i- :binary)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun socket-connect (host port &key (protocol :stream) (element-type 'character) Err bitreich.org 70 i- timeout deadline Err bitreich.org 70 i- (nodelay t) ;; nodelay == t is the ACL default Err bitreich.org 70 i- local-host local-port) Err bitreich.org 70 i- (when timeout (unsupported 'timeout 'socket-connect)) Err bitreich.org 70 i- (when deadline (unsupported 'deadline 'socket-connect)) Err bitreich.org 70 i- (when (eq nodelay :if-supported) Err bitreich.org 70 i- (setf nodelay t)) Err bitreich.org 70 i- Err bitreich.org 70 i- (let ((socket)) Err bitreich.org 70 i- (setf socket Err bitreich.org 70 i- (with-mapped-conditions (socket) Err bitreich.org 70 i- (ecase protocol Err bitreich.org 70 i- (:stream Err bitreich.org 70 i- (labels ((make-socket () Err bitreich.org 70 i- (socket:make-socket :remote-host (host-to-hostname host) Err bitreich.org 70 i- :remote-port port Err bitreich.org 70 i- :local-host (when local-host Err bitreich.org 70 i- (host-to-hostname local-host)) Err bitreich.org 70 i- :local-port local-port Err bitreich.org 70 i- :format (to-format element-type) Err bitreich.org 70 i- :nodelay nodelay))) Err bitreich.org 70 i- #+allegro Err bitreich.org 70 i- (if timeout Err bitreich.org 70 i- (mp:with-timeout (timeout nil) Err bitreich.org 70 i- (make-socket)) Err bitreich.org 70 i- (make-socket)) Err bitreich.org 70 i- #+cormanlisp (make-socket))) Err bitreich.org 70 i- (:datagram Err bitreich.org 70 i- (apply #'socket:make-socket Err bitreich.org 70 i- (nconc (list :type protocol Err bitreich.org 70 i- :address-family :internet Err bitreich.org 70 i- :local-host (when local-host Err bitreich.org 70 i- (host-to-hostname local-host)) Err bitreich.org 70 i- :local-port local-port Err bitreich.org 70 i- :format (to-format element-type)) Err bitreich.org 70 i- (if (and host port) Err bitreich.org 70 i- (list :connect :active Err bitreich.org 70 i- :remote-host (host-to-hostname host) Err bitreich.org 70 i- :remote-port port) Err bitreich.org 70 i- (list :connect :passive)))))))) Err bitreich.org 70 i- (ecase protocol Err bitreich.org 70 i- (:stream Err bitreich.org 70 i- (make-stream-socket :socket socket :stream socket)) Err bitreich.org 70 i- (:datagram Err bitreich.org 70 i- (make-datagram-socket socket :connected-p (and host port t)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; One socket close method is sufficient, Err bitreich.org 70 i-;; because socket-streams are also sockets. Err bitreich.org 70 i-(defmethod socket-close ((usocket usocket)) Err bitreich.org 70 i- "Close socket." Err bitreich.org 70 i- (when (wait-list usocket) Err bitreich.org 70 i- (remove-waiter (wait-list usocket) usocket)) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (close (socket usocket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-shutdown ((usocket stream-usocket) direction) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (socket:shutdown (socket usocket) :direction direction))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun socket-listen (host port Err bitreich.org 70 i- &key reuseaddress Err bitreich.org 70 i- (reuse-address nil reuse-address-supplied-p) Err bitreich.org 70 i- (backlog 5) Err bitreich.org 70 i- (element-type 'character)) Err bitreich.org 70 i- ;; Allegro and OpenMCL socket interfaces bear very strong resemblence Err bitreich.org 70 i- ;; whatever you change here, change it also for OpenMCL Err bitreich.org 70 i- (let* ((reuseaddress (if reuse-address-supplied-p reuse-address reuseaddress)) Err bitreich.org 70 i- (sock (with-mapped-conditions () Err bitreich.org 70 i- (apply #'socket:make-socket Err bitreich.org 70 i- (append (list :connect :passive Err bitreich.org 70 i- :reuse-address reuseaddress Err bitreich.org 70 i- :local-port port Err bitreich.org 70 i- :backlog backlog Err bitreich.org 70 i- :format (to-format element-type) Err bitreich.org 70 i- ;; allegro now ignores :format Err bitreich.org 70 i- ) Err bitreich.org 70 i- (when (ip/= host *wildcard-host*) Err bitreich.org 70 i- (list :local-host host))))))) Err bitreich.org 70 i- (make-stream-server-socket sock :element-type element-type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-accept ((socket stream-server-usocket) &key element-type) Err bitreich.org 70 i- (declare (ignore element-type)) ;; allegro streams are multivalent Err bitreich.org 70 i- (let ((stream-sock Err bitreich.org 70 i- (with-mapped-conditions (socket) Err bitreich.org 70 i- (socket:accept-connection (socket socket))))) Err bitreich.org 70 i- (make-stream-socket :socket stream-sock :stream stream-sock))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-address ((usocket usocket)) Err bitreich.org 70 i- (hbo-to-vector-quad (socket:local-host (socket usocket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-address ((usocket stream-usocket)) Err bitreich.org 70 i- (hbo-to-vector-quad (socket:remote-host (socket usocket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-port ((usocket usocket)) Err bitreich.org 70 i- (socket:local-port (socket usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-port ((usocket stream-usocket)) Err bitreich.org 70 i- #+allegro Err bitreich.org 70 i- (socket:remote-port (socket usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-name ((usocket usocket)) Err bitreich.org 70 i- (values (get-local-address usocket) Err bitreich.org 70 i- (get-local-port usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-name ((usocket stream-usocket)) Err bitreich.org 70 i- (values (get-peer-address usocket) Err bitreich.org 70 i- (get-peer-port usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+allegro Err bitreich.org 70 i-(defmethod socket-send ((usocket datagram-usocket) buffer size &key host port (offset 0)) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (let ((s (socket usocket))) Err bitreich.org 70 i- (socket:send-to s Err bitreich.org 70 i- (if (zerop offset) Err bitreich.org 70 i- buffer Err bitreich.org 70 i- (subseq buffer offset (+ offset size))) Err bitreich.org 70 i- size Err bitreich.org 70 i- :remote-host host Err bitreich.org 70 i- :remote-port port)))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+allegro Err bitreich.org 70 i-(defmethod socket-receive ((socket datagram-usocket) buffer length &key) Err bitreich.org 70 i- (declare (values (simple-array (unsigned-byte 8) (*)) ; buffer Err bitreich.org 70 i- (integer 0) ; size Err bitreich.org 70 i- (unsigned-byte 32) ; host Err bitreich.org 70 i- (unsigned-byte 16))) ; port Err bitreich.org 70 i- (with-mapped-conditions (socket) Err bitreich.org 70 i- (let ((s (socket socket))) Err bitreich.org 70 i- (socket:receive-from s length :buffer buffer :extract t)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-host-by-address (address) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (socket:ipaddr-to-hostname (host-to-hbo address)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-hosts-by-name (name) Err bitreich.org 70 i- ;;###FIXME: ACL has the acldns module which returns all A records Err bitreich.org 70 i- ;; only problem: it doesn't fall back to tcp (from udp) if the returned Err bitreich.org 70 i- ;; structure is too long. Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (list (hbo-to-vector-quad (socket:lookup-hostname Err bitreich.org 70 i- (host-to-hostname name)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %setup-wait-list (wait-list) Err bitreich.org 70 i- (declare (ignore wait-list))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %add-waiter (wait-list waiter) Err bitreich.org 70 i- (push (socket waiter) (wait-list-%wait wait-list))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %remove-waiter (wait-list waiter) Err bitreich.org 70 i- (setf (wait-list-%wait wait-list) Err bitreich.org 70 i- (remove (socket waiter) (wait-list-%wait wait-list)))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+allegro Err bitreich.org 70 i-(defun wait-for-input-internal (wait-list &key timeout) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (let ((active-internal-sockets Err bitreich.org 70 i- (if timeout Err bitreich.org 70 i- (mp:wait-for-input-available (wait-list-%wait wait-list) Err bitreich.org 70 i- :timeout timeout) Err bitreich.org 70 i- (mp:wait-for-input-available (wait-list-%wait wait-list))))) Err bitreich.org 70 i- ;; this is quadratic, but hey, the active-internal-sockets Err bitreich.org 70 i- ;; list is very short and it's only quadratic in the length of that one. Err bitreich.org 70 i- ;; When I have more time I could recode it to something of linear Err bitreich.org 70 i- ;; complexity. Err bitreich.org 70 i- ;; [Same code is also used in openmcl.lisp] Err bitreich.org 70 i- (dolist (x active-internal-sockets) Err bitreich.org 70 i- (setf (state (gethash x (wait-list-map wait-list))) Err bitreich.org 70 i- :read)) Err bitreich.org 70 i- wait-list))) Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/backend/clisp.lisp b/3rdparties/software/usocket-0.7.1/backend/clisp.lisp /scm/clic/file/3rdparties/software/usocket-0.7.1/backend/clisp.lisp.gph bitreich.org 70 i@@ -1,716 +0,0 @@ Err bitreich.org 70 i-;;;; See LICENSE for licensing information. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :usocket) Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- #-ffi Err bitreich.org 70 i- (warn "This image doesn't contain FFI package, GET-HOST-NAME won't work.") Err bitreich.org 70 i- #-(or ffi rawsock) Err bitreich.org 70 i- (warn "This image doesn't contain either FFI or RAWSOCK package, no UDP support.")) Err bitreich.org 70 i- Err bitreich.org 70 i-;; utility routine for looking up the current host name Err bitreich.org 70 i-#+ffi Err bitreich.org 70 i-(ffi:def-call-out get-host-name-internal Err bitreich.org 70 i- (:name "gethostname") Err bitreich.org 70 i- (:arguments (name (FFI:C-PTR (FFI:C-ARRAY-MAX ffi:character 256)) Err bitreich.org 70 i- :OUT :ALLOCA) Err bitreich.org 70 i- (len ffi:int)) Err bitreich.org 70 i- #+win32 (:library "WS2_32") Err bitreich.org 70 i- #-win32 (:library :default) Err bitreich.org 70 i- (:language #-win32 :stdc Err bitreich.org 70 i- #+win32 :stdc-stdcall) Err bitreich.org 70 i- (:return-type ffi:int)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-host-name () Err bitreich.org 70 i- #+ffi Err bitreich.org 70 i- (multiple-value-bind (retcode name) Err bitreich.org 70 i- (get-host-name-internal 256) Err bitreich.org 70 i- (when (= retcode 0) Err bitreich.org 70 i- name)) Err bitreich.org 70 i- #-ffi Err bitreich.org 70 i- "localhost") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-host-by-address (address) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (let ((hostent (posix:resolve-host-ipaddr (host-to-hostname address)))) Err bitreich.org 70 i- (posix:hostent-name hostent)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-hosts-by-name (name) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (let ((hostent (posix:resolve-host-ipaddr name))) Err bitreich.org 70 i- (mapcar #'host-to-vector-quad Err bitreich.org 70 i- (posix:hostent-addr-list hostent))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Format: ((UNIX Windows) . CONDITION) Err bitreich.org 70 i-(defparameter +clisp-error-map+ Err bitreich.org 70 i- #-win32 Err bitreich.org 70 i- `((:EADDRINUSE . address-in-use-error) Err bitreich.org 70 i- (:EADDRNOTAVAIL . address-not-available-error) Err bitreich.org 70 i- (:EBADF . bad-file-descriptor-error) Err bitreich.org 70 i- (:ECONNREFUSED . connection-refused-error) Err bitreich.org 70 i- (:ECONNRESET . connection-reset-error) Err bitreich.org 70 i- (:ECONNABORTED . connection-aborted-error) Err bitreich.org 70 i- (:EINVAL . invalid-argument-error) Err bitreich.org 70 i- (:ENOBUFS . no-buffers-error) Err bitreich.org 70 i- (:ENOMEM . out-of-memory-error) Err bitreich.org 70 i- (:ENOTSUP . operation-not-supported-error) Err bitreich.org 70 i- (:EPERM . operation-not-permitted-error) Err bitreich.org 70 i- (:EPROTONOSUPPORT . protocol-not-supported-error) Err bitreich.org 70 i- (:ESOCKTNOSUPPORT . socket-type-not-supported-error) Err bitreich.org 70 i- (:ENETUNREACH . network-unreachable-error) Err bitreich.org 70 i- (:ENETDOWN . network-down-error) Err bitreich.org 70 i- (:ENETRESET . network-reset-error) Err bitreich.org 70 i- (:ESHUTDOWN . already-shutdown-error) Err bitreich.org 70 i- (:ETIMEDOUT . timeout-error) Err bitreich.org 70 i- (:EHOSTDOWN . host-down-error) Err bitreich.org 70 i- (:EHOSTUNREACH . host-unreachable-error) Err bitreich.org 70 i- ;; when blocked reading, and we close our socket due to a timeout. Err bitreich.org 70 i- ;; POSIX.1 says that EAGAIN and EWOULDBLOCK may have the same values. Err bitreich.org 70 i- (:EAGAIN . timeout-error) Err bitreich.org 70 i- (:EWOULDBLOCK . timeout-error)) ;linux Err bitreich.org 70 i- #+win32 Err bitreich.org 70 i- `((:WSAEADDRINUSE . address-in-use-error) Err bitreich.org 70 i- (:WSAEADDRNOTAVAIL . address-not-available-error) Err bitreich.org 70 i- (:WSAEBADF . bad-file-descriptor-error) Err bitreich.org 70 i- (:WSAECONNREFUSED . connection-refused-error) Err bitreich.org 70 i- (:WSAECONNRESET . connection-reset-error) Err bitreich.org 70 i- (:WSAECONNABORTED . connection-aborted-error) Err bitreich.org 70 i- (:WSAEINVAL . invalid-argument-error) Err bitreich.org 70 i- (:WSAENOBUFS . no-buffers-error) Err bitreich.org 70 i- (:WSAENOMEM . out-of-memory-error) Err bitreich.org 70 i- (:WSAENOTSUP . operation-not-supported-error) Err bitreich.org 70 i- (:WSAEPERM . operation-not-permitted-error) Err bitreich.org 70 i- (:WSAEPROTONOSUPPORT . protocol-not-supported-error) Err bitreich.org 70 i- (:WSAESOCKTNOSUPPORT . socket-type-not-supported-error) Err bitreich.org 70 i- (:WSAENETUNREACH . network-unreachable-error) Err bitreich.org 70 i- (:WSAENETDOWN . network-down-error) Err bitreich.org 70 i- (:WSAENETRESET . network-reset-error) Err bitreich.org 70 i- (:WSAESHUTDOWN . already-shutdown-error) Err bitreich.org 70 i- (:WSAETIMEDOUT . timeout-error) Err bitreich.org 70 i- (:WSAEHOSTDOWN . host-down-error) Err bitreich.org 70 i- (:WSAEHOSTUNREACH . host-unreachable-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun parse-errno (condition) Err bitreich.org 70 i- "Returns a number or keyword if it can parse what is within parens, else NIL" Err bitreich.org 70 i- (let ((s (princ-to-string condition))) Err bitreich.org 70 i- (let ((pos1 (position #\( s)) Err bitreich.org 70 i- (pos2 (position #\) s))) Err bitreich.org 70 i- ;mac: number, linux: keyword Err bitreich.org 70 i- (ignore-errors Err bitreich.org 70 i- (if (digit-char-p (char s (1+ pos1))) Err bitreich.org 70 i- (parse-integer s :start (1+ pos1) :end pos2) Err bitreich.org 70 i- (let ((*package* (find-package "KEYWORD"))) Err bitreich.org 70 i- (car (read-from-string s t nil :start pos1 :end (1+ pos2))))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun handle-condition (condition &optional (socket nil)) Err bitreich.org 70 i- "Dispatch a usocket condition instead of a CLISP specific one, if we can." Err bitreich.org 70 i- (let ((errno Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ;clisp 2.49+ Err bitreich.org 70 i- ((typep condition (find-symbol "OS-STREAM-ERROR" "EXT")) Err bitreich.org 70 i- (parse-errno condition)) Err bitreich.org 70 i- ;clisp 2.49 Err bitreich.org 70 i- ((typep condition (find-symbol "SIMPLE-STREAM-ERROR" "SYSTEM")) Err bitreich.org 70 i- (car (simple-condition-format-arguments condition)))))) Err bitreich.org 70 i- (when errno Err bitreich.org 70 i- (let ((error-keyword (if (keywordp errno) errno #+ffi(os:errno errno)))) Err bitreich.org 70 i- (let ((usocket-error (cdr (assoc error-keyword +clisp-error-map+)))) Err bitreich.org 70 i- (when usocket-error Err bitreich.org 70 i- (if (subtypep usocket-error 'error) Err bitreich.org 70 i- (error usocket-error :socket socket) Err bitreich.org 70 i- (signal usocket-error :socket socket)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun socket-connect (host port &key (protocol :stream) (element-type 'character) Err bitreich.org 70 i- timeout deadline (nodelay t nodelay-specified) Err bitreich.org 70 i- local-host local-port) Err bitreich.org 70 i- (declare (ignorable timeout local-host local-port)) Err bitreich.org 70 i- (when deadline (unsupported 'deadline 'socket-connect)) Err bitreich.org 70 i- (when (and nodelay-specified Err bitreich.org 70 i- (not (eq nodelay :if-supported))) Err bitreich.org 70 i- (unsupported 'nodelay 'socket-connect)) Err bitreich.org 70 i- (case protocol Err bitreich.org 70 i- (:stream Err bitreich.org 70 i- (let ((socket) Err bitreich.org 70 i- (hostname (host-to-hostname host))) Err bitreich.org 70 i- (with-mapped-conditions (socket) Err bitreich.org 70 i- (setf socket Err bitreich.org 70 i- (if timeout Err bitreich.org 70 i- (socket:socket-connect port hostname Err bitreich.org 70 i- :element-type element-type Err bitreich.org 70 i- :buffered t Err bitreich.org 70 i- :timeout timeout) Err bitreich.org 70 i- (socket:socket-connect port hostname Err bitreich.org 70 i- :element-type element-type Err bitreich.org 70 i- :buffered t)))) Err bitreich.org 70 i- (make-stream-socket :socket socket Err bitreich.org 70 i- :stream socket))) ;; the socket is a stream too Err bitreich.org 70 i- (:datagram Err bitreich.org 70 i- #+(or rawsock ffi) Err bitreich.org 70 i- (socket-create-datagram (or local-port *auto-port*) Err bitreich.org 70 i- :local-host (or local-host *wildcard-host*) Err bitreich.org 70 i- :remote-host (and host (host-to-vector-quad host)) Err bitreich.org 70 i- :remote-port port) Err bitreich.org 70 i- #-(or rawsock ffi) Err bitreich.org 70 i- (unsupported '(protocol :datagram) 'socket-connect)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun socket-listen (host port Err bitreich.org 70 i- &key reuseaddress Err bitreich.org 70 i- (reuse-address nil reuse-address-supplied-p) Err bitreich.org 70 i- (backlog 5) Err bitreich.org 70 i- (element-type 'character)) Err bitreich.org 70 i- ;; clisp 2.39 sets SO_REUSEADDRESS to 1 by default; no need to Err bitreich.org 70 i- ;; to explicitly turn it on; unfortunately, there's no way to turn it off... Err bitreich.org 70 i- (declare (ignore reuseaddress reuse-address reuse-address-supplied-p)) Err bitreich.org 70 i- (let ((sock (apply #'socket:socket-server Err bitreich.org 70 i- (append (list port Err bitreich.org 70 i- :backlog backlog) Err bitreich.org 70 i- (when (ip/= host *wildcard-host*) Err bitreich.org 70 i- (list :interface host)))))) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (make-stream-server-socket sock :element-type element-type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-accept ((socket stream-server-usocket) &key element-type) Err bitreich.org 70 i- (let ((stream Err bitreich.org 70 i- (with-mapped-conditions (socket) Err bitreich.org 70 i- (socket:socket-accept (socket socket) Err bitreich.org 70 i- :element-type (or element-type Err bitreich.org 70 i- (element-type socket)))))) Err bitreich.org 70 i- (make-stream-socket :socket stream Err bitreich.org 70 i- :stream stream))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Only one close method required: Err bitreich.org 70 i-;; sockets and their associated streams Err bitreich.org 70 i-;; are the same object Err bitreich.org 70 i-(defmethod socket-close ((usocket usocket)) Err bitreich.org 70 i- "Close socket." Err bitreich.org 70 i- (when (wait-list usocket) Err bitreich.org 70 i- (remove-waiter (wait-list usocket) usocket)) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (close (socket usocket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-close ((usocket stream-server-usocket)) Err bitreich.org 70 i- (when (wait-list usocket) Err bitreich.org 70 i- (remove-waiter (wait-list usocket) usocket)) Err bitreich.org 70 i- (socket:socket-server-close (socket usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-shutdown ((usocket stream-usocket) direction) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (socket:socket-stream-shutdown (socket usocket) direction))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-name ((usocket stream-usocket)) Err bitreich.org 70 i- (multiple-value-bind Err bitreich.org 70 i- (address port) Err bitreich.org 70 i- (socket:socket-stream-local (socket usocket) t) Err bitreich.org 70 i- (values (dotted-quad-to-vector-quad address) port))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-name ((usocket stream-server-usocket)) Err bitreich.org 70 i- (values (get-local-address usocket) Err bitreich.org 70 i- (get-local-port usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-name ((usocket stream-usocket)) Err bitreich.org 70 i- (multiple-value-bind Err bitreich.org 70 i- (address port) Err bitreich.org 70 i- (socket:socket-stream-peer (socket usocket) t) Err bitreich.org 70 i- (values (dotted-quad-to-vector-quad address) port))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-address ((usocket usocket)) Err bitreich.org 70 i- (nth-value 0 (get-local-name usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-address ((usocket stream-server-usocket)) Err bitreich.org 70 i- (dotted-quad-to-vector-quad Err bitreich.org 70 i- (socket:socket-server-host (socket usocket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-address ((usocket usocket)) Err bitreich.org 70 i- (nth-value 0 (get-peer-name usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-port ((usocket usocket)) Err bitreich.org 70 i- (nth-value 1 (get-local-name usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-port ((usocket stream-server-usocket)) Err bitreich.org 70 i- (socket:socket-server-port (socket usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-port ((usocket usocket)) Err bitreich.org 70 i- (nth-value 1 (get-peer-name usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %setup-wait-list (wait-list) Err bitreich.org 70 i- (declare (ignore wait-list))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %add-waiter (wait-list waiter) Err bitreich.org 70 i- ;; clisp's #'socket-status takes a list whose elts look either like, Err bitreich.org 70 i- ;; (socket-stream direction . x) or like, Err bitreich.org 70 i- ;; (socket-server . x) Err bitreich.org 70 i- ;; and it replaces the x's. Err bitreich.org 70 i- (push (cons (socket waiter) Err bitreich.org 70 i- (cond ((stream-usocket-p waiter) (cons NIL NIL)) Err bitreich.org 70 i- (t NIL))) Err bitreich.org 70 i- (wait-list-%wait wait-list))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %remove-waiter (wait-list waiter) Err bitreich.org 70 i- (setf (wait-list-%wait wait-list) Err bitreich.org 70 i- (remove (socket waiter) (wait-list-%wait wait-list) :key #'car))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod wait-for-input-internal (wait-list &key timeout) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (multiple-value-bind Err bitreich.org 70 i- (secs musecs) Err bitreich.org 70 i- (split-timeout (or timeout 1)) Err bitreich.org 70 i- (dolist (x (wait-list-%wait wait-list)) Err bitreich.org 70 i- (when (consp (cdr x)) ;it's a socket-stream not socket-server Err bitreich.org 70 i- (setf (cadr x) :INPUT))) Err bitreich.org 70 i- (let* ((request-list (wait-list-%wait wait-list)) Err bitreich.org 70 i- (status-list (if timeout Err bitreich.org 70 i- (socket:socket-status request-list secs musecs) Err bitreich.org 70 i- (socket:socket-status request-list))) Err bitreich.org 70 i- (sockets (wait-list-waiters wait-list))) Err bitreich.org 70 i- (do* ((x (pop sockets) (pop sockets)) Err bitreich.org 70 i- (y (cdr (last (pop status-list))) (cdr (last (pop status-list))))) Err bitreich.org 70 i- ((null x)) Err bitreich.org 70 i- (when (member y '(T :INPUT :EOF)) Err bitreich.org 70 i- (setf (state x) :READ))) Err bitreich.org 70 i- wait-list)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; UDP/Datagram sockets (RAWSOCK version) Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-#+rawsock Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (defun make-sockaddr_in () Err bitreich.org 70 i- (make-array 16 :element-type '(unsigned-byte 8) :initial-element 0)) Err bitreich.org 70 i- Err bitreich.org 70 i- (declaim (inline fill-sockaddr_in)) Err bitreich.org 70 i- (defun fill-sockaddr_in (sockaddr_in ip port) Err bitreich.org 70 i- (port-to-octet-buffer port sockaddr_in) Err bitreich.org 70 i- (ip-to-octet-buffer ip sockaddr_in :start 2) Err bitreich.org 70 i- sockaddr_in) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun socket-create-datagram (local-port Err bitreich.org 70 i- &key (local-host *wildcard-host*) Err bitreich.org 70 i- remote-host Err bitreich.org 70 i- remote-port) Err bitreich.org 70 i- (let ((sock (rawsock:socket :inet :dgram 0)) Err bitreich.org 70 i- (lsock_addr (fill-sockaddr_in (make-sockaddr_in) Err bitreich.org 70 i- local-host local-port)) Err bitreich.org 70 i- (rsock_addr (when remote-host Err bitreich.org 70 i- (fill-sockaddr_in (make-sockaddr_in) Err bitreich.org 70 i- remote-host (or remote-port Err bitreich.org 70 i- local-port))))) Err bitreich.org 70 i- (rawsock:bind sock (rawsock:make-sockaddr :inet lsock_addr)) Err bitreich.org 70 i- (when rsock_addr Err bitreich.org 70 i- (rawsock:connect sock (rawsock:make-sockaddr :inet rsock_addr))) Err bitreich.org 70 i- (make-datagram-socket sock :connected-p (if rsock_addr t nil)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod socket-receive ((socket datagram-usocket) buffer length &key) Err bitreich.org 70 i- "Returns the buffer, the number of octets copied into the buffer (received) Err bitreich.org 70 i-and the address of the sender as values." Err bitreich.org 70 i- (let* ((sock (socket socket)) Err bitreich.org 70 i- (sockaddr (rawsock:make-sockaddr :inet)) Err bitreich.org 70 i- (real-length (or length +max-datagram-packet-size+)) Err bitreich.org 70 i- (real-buffer (or buffer Err bitreich.org 70 i- (make-array real-length Err bitreich.org 70 i- :element-type '(unsigned-byte 8))))) Err bitreich.org 70 i- (let ((rv (rawsock:recvfrom sock real-buffer sockaddr Err bitreich.org 70 i- :start 0 :end real-length)) Err bitreich.org 70 i- (host 0) (port 0)) Err bitreich.org 70 i- (unless (connected-p socket) Err bitreich.org 70 i- (let ((data (rawsock:sockaddr-data sockaddr))) Err bitreich.org 70 i- (setq host (ip-from-octet-buffer data :start 4) Err bitreich.org 70 i- port (port-from-octet-buffer data :start 2)))) Err bitreich.org 70 i- (values (if buffer real-buffer (subseq real-buffer 0 rv)) Err bitreich.org 70 i- rv Err bitreich.org 70 i- host Err bitreich.org 70 i- port)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod socket-send ((socket datagram-usocket) buffer size &key host port (offset 0)) Err bitreich.org 70 i- "Returns the number of octets sent." Err bitreich.org 70 i- (let* ((sock (socket socket)) Err bitreich.org 70 i- (sockaddr (when (and host port) Err bitreich.org 70 i- (rawsock:make-sockaddr :inet Err bitreich.org 70 i- (fill-sockaddr_in Err bitreich.org 70 i- (make-sockaddr_in) Err bitreich.org 70 i- (host-byte-order host) Err bitreich.org 70 i- port)))) Err bitreich.org 70 i- (real-size (min size +max-datagram-packet-size+)) Err bitreich.org 70 i- (real-buffer (if (typep buffer '(simple-array (unsigned-byte 8) (*))) Err bitreich.org 70 i- buffer Err bitreich.org 70 i- (make-array real-size Err bitreich.org 70 i- :element-type '(unsigned-byte 8) Err bitreich.org 70 i- :initial-contents (subseq buffer 0 real-size)))) Err bitreich.org 70 i- (rv (if (and host port) Err bitreich.org 70 i- (rawsock:sendto sock real-buffer sockaddr Err bitreich.org 70 i- :start offset Err bitreich.org 70 i- :end (+ offset real-size)) Err bitreich.org 70 i- (rawsock:send sock real-buffer Err bitreich.org 70 i- :start offset Err bitreich.org 70 i- :end (+ offset real-size))))) Err bitreich.org 70 i- rv)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod socket-close ((usocket datagram-usocket)) Err bitreich.org 70 i- (when (wait-list usocket) Err bitreich.org 70 i- (remove-waiter (wait-list usocket) usocket)) Err bitreich.org 70 i- (rawsock:sock-close (socket usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i- (declaim (inline get-socket-name)) Err bitreich.org 70 i- (defun get-socket-name (socket function) Err bitreich.org 70 i- (let ((sockaddr (rawsock:make-sockaddr :inet (make-sockaddr_in)))) Err bitreich.org 70 i- (funcall function socket sockaddr) Err bitreich.org 70 i- (let ((data (rawsock:sockaddr-data sockaddr))) Err bitreich.org 70 i- (values (hbo-to-vector-quad (ip-from-octet-buffer data :start 2)) Err bitreich.org 70 i- (port-from-octet-buffer data :start 0))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod get-local-name ((usocket datagram-usocket)) Err bitreich.org 70 i- (get-socket-name (socket usocket) 'rawsock:getsockname)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod get-peer-name ((usocket datagram-usocket)) Err bitreich.org 70 i- (get-socket-name (socket usocket) 'rawsock:getpeername)) Err bitreich.org 70 i- Err bitreich.org 70 i-) ; progn Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; UDP/Datagram sockets (FFI version) Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and ffi (not rawsock)) Err bitreich.org 70 i-(progn Err bitreich.org 70 i- ;; C primitive types Err bitreich.org 70 i- (ffi:def-c-type socklen_t ffi:uint32) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; C structures Err bitreich.org 70 i- (ffi:def-c-struct sockaddr Err bitreich.org 70 i- #+macos (sa_len ffi:uint8) Err bitreich.org 70 i- (sa_family #-macos ffi:ushort Err bitreich.org 70 i- #+macos ffi:uint8) Err bitreich.org 70 i- (sa_data (ffi:c-array ffi:char 14))) Err bitreich.org 70 i- Err bitreich.org 70 i- (ffi:def-c-struct sockaddr_in Err bitreich.org 70 i- #+macos (sin_len ffi:uint8) Err bitreich.org 70 i- (sin_family #-macos ffi:short Err bitreich.org 70 i- #+macos ffi:uint8) Err bitreich.org 70 i- (sin_port #-macos ffi:ushort Err bitreich.org 70 i- #+macos ffi:uint16) Err bitreich.org 70 i- (sin_addr ffi:uint32) Err bitreich.org 70 i- (sin_zero (ffi:c-array ffi:char 8))) Err bitreich.org 70 i- Err bitreich.org 70 i- (ffi:def-c-struct timeval Err bitreich.org 70 i- (tv_sec ffi:long) Err bitreich.org 70 i- (tv_usec ffi:long)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; foreign functions Err bitreich.org 70 i- (ffi:def-call-out %sendto (:name "sendto") Err bitreich.org 70 i- (:arguments (socket ffi:int) Err bitreich.org 70 i- (buffer ffi:c-pointer) Err bitreich.org 70 i- (length ffi:int) Err bitreich.org 70 i- (flags ffi:int) Err bitreich.org 70 i- (address (ffi:c-ptr sockaddr)) Err bitreich.org 70 i- (address-len ffi:int)) Err bitreich.org 70 i- #+win32 (:library "WS2_32") Err bitreich.org 70 i- #-win32 (:library :default) Err bitreich.org 70 i- (:language #-win32 :stdc Err bitreich.org 70 i- #+win32 :stdc-stdcall) Err bitreich.org 70 i- (:return-type ffi:int)) Err bitreich.org 70 i- Err bitreich.org 70 i- (ffi:def-call-out %send (:name "send") Err bitreich.org 70 i- (:arguments (socket ffi:int) Err bitreich.org 70 i- (buffer ffi:c-pointer) Err bitreich.org 70 i- (length ffi:int) Err bitreich.org 70 i- (flags ffi:int)) Err bitreich.org 70 i- #+win32 (:library "WS2_32") Err bitreich.org 70 i- #-win32 (:library :default) Err bitreich.org 70 i- (:language #-win32 :stdc Err bitreich.org 70 i- #+win32 :stdc-stdcall) Err bitreich.org 70 i- (:return-type ffi:int)) Err bitreich.org 70 i- Err bitreich.org 70 i- (ffi:def-call-out %recvfrom (:name "recvfrom") Err bitreich.org 70 i- (:arguments (socket ffi:int) Err bitreich.org 70 i- (buffer ffi:c-pointer) Err bitreich.org 70 i- (length ffi:int) Err bitreich.org 70 i- (flags ffi:int) Err bitreich.org 70 i- (address (ffi:c-ptr sockaddr) :in-out) Err bitreich.org 70 i- (address-len (ffi:c-ptr ffi:int) :in-out)) Err bitreich.org 70 i- #+win32 (:library "WS2_32") Err bitreich.org 70 i- #-win32 (:library :default) Err bitreich.org 70 i- (:language #-win32 :stdc Err bitreich.org 70 i- #+win32 :stdc-stdcall) Err bitreich.org 70 i- (:return-type ffi:int)) Err bitreich.org 70 i- Err bitreich.org 70 i- (ffi:def-call-out %socket (:name "socket") Err bitreich.org 70 i- (:arguments (family ffi:int) Err bitreich.org 70 i- (type ffi:int) Err bitreich.org 70 i- (protocol ffi:int)) Err bitreich.org 70 i- #+win32 (:library "WS2_32") Err bitreich.org 70 i- #-win32 (:library :default) Err bitreich.org 70 i- (:language #-win32 :stdc Err bitreich.org 70 i- #+win32 :stdc-stdcall) Err bitreich.org 70 i- (:return-type ffi:int)) Err bitreich.org 70 i- Err bitreich.org 70 i- (ffi:def-call-out %connect (:name "connect") Err bitreich.org 70 i- (:arguments (socket ffi:int) Err bitreich.org 70 i- (address (ffi:c-ptr sockaddr) :in) Err bitreich.org 70 i- (address_len socklen_t)) Err bitreich.org 70 i- #+win32 (:library "WS2_32") Err bitreich.org 70 i- #-win32 (:library :default) Err bitreich.org 70 i- (:language #-win32 :stdc Err bitreich.org 70 i- #+win32 :stdc-stdcall) Err bitreich.org 70 i- (:return-type ffi:int)) Err bitreich.org 70 i- Err bitreich.org 70 i- (ffi:def-call-out %bind (:name "bind") Err bitreich.org 70 i- (:arguments (socket ffi:int) Err bitreich.org 70 i- (address (ffi:c-ptr sockaddr) :in) Err bitreich.org 70 i- (address_len socklen_t)) Err bitreich.org 70 i- #+win32 (:library "WS2_32") Err bitreich.org 70 i- #-win32 (:library :default) Err bitreich.org 70 i- (:language #-win32 :stdc Err bitreich.org 70 i- #+win32 :stdc-stdcall) Err bitreich.org 70 i- (:return-type ffi:int)) Err bitreich.org 70 i- Err bitreich.org 70 i- (ffi:def-call-out %close (:name #-win32 "close" #+win32 "closesocket") Err bitreich.org 70 i- (:arguments (socket ffi:int)) Err bitreich.org 70 i- #+win32 (:library "WS2_32") Err bitreich.org 70 i- #-win32 (:library :default) Err bitreich.org 70 i- (:language #-win32 :stdc Err bitreich.org 70 i- #+win32 :stdc-stdcall) Err bitreich.org 70 i- (:return-type ffi:int)) Err bitreich.org 70 i- Err bitreich.org 70 i- (ffi:def-call-out %getsockopt (:name "getsockopt") Err bitreich.org 70 i- (:arguments (sockfd ffi:int) Err bitreich.org 70 i- (level ffi:int) Err bitreich.org 70 i- (optname ffi:int) Err bitreich.org 70 i- (optval ffi:c-pointer) Err bitreich.org 70 i- (optlen (ffi:c-ptr socklen_t) :out)) Err bitreich.org 70 i- #+win32 (:library "WS2_32") Err bitreich.org 70 i- #-win32 (:library :default) Err bitreich.org 70 i- (:language #-win32 :stdc Err bitreich.org 70 i- #+win32 :stdc-stdcall) Err bitreich.org 70 i- (:return-type ffi:int)) Err bitreich.org 70 i- Err bitreich.org 70 i- (ffi:def-call-out %setsockopt (:name "setsockopt") Err bitreich.org 70 i- (:arguments (sockfd ffi:int) Err bitreich.org 70 i- (level ffi:int) Err bitreich.org 70 i- (optname ffi:int) Err bitreich.org 70 i- (optval ffi:c-pointer) Err bitreich.org 70 i- (optlen socklen_t)) Err bitreich.org 70 i- #+win32 (:library "WS2_32") Err bitreich.org 70 i- #-win32 (:library :default) Err bitreich.org 70 i- (:language #-win32 :stdc Err bitreich.org 70 i- #+win32 :stdc-stdcall) Err bitreich.org 70 i- (:return-type ffi:int)) Err bitreich.org 70 i- Err bitreich.org 70 i- (ffi:def-call-out %htonl (:name "htonl") Err bitreich.org 70 i- (:arguments (hostlong ffi:uint32)) Err bitreich.org 70 i- #+win32 (:library "WS2_32") Err bitreich.org 70 i- #-win32 (:library :default) Err bitreich.org 70 i- (:language #-win32 :stdc Err bitreich.org 70 i- #+win32 :stdc-stdcall) Err bitreich.org 70 i- (:return-type ffi:uint32)) Err bitreich.org 70 i- Err bitreich.org 70 i- (ffi:def-call-out %htons (:name "htons") Err bitreich.org 70 i- (:arguments (hostshort ffi:uint16)) Err bitreich.org 70 i- #+win32 (:library "WS2_32") Err bitreich.org 70 i- #-win32 (:library :default) Err bitreich.org 70 i- (:language #-win32 :stdc Err bitreich.org 70 i- #+win32 :stdc-stdcall) Err bitreich.org 70 i- (:return-type ffi:uint16)) Err bitreich.org 70 i- Err bitreich.org 70 i- (ffi:def-call-out %ntohl (:name "ntohl") Err bitreich.org 70 i- (:arguments (netlong ffi:uint32)) Err bitreich.org 70 i- #+win32 (:library "WS2_32") Err bitreich.org 70 i- #-win32 (:library :default) Err bitreich.org 70 i- (:language #-win32 :stdc Err bitreich.org 70 i- #+win32 :stdc-stdcall) Err bitreich.org 70 i- (:return-type ffi:uint32)) Err bitreich.org 70 i- Err bitreich.org 70 i- (ffi:def-call-out %ntohs (:name "ntohs") Err bitreich.org 70 i- (:arguments (netshort ffi:uint16)) Err bitreich.org 70 i- #+win32 (:library "WS2_32") Err bitreich.org 70 i- #-win32 (:library :default) Err bitreich.org 70 i- (:language #-win32 :stdc Err bitreich.org 70 i- #+win32 :stdc-stdcall) Err bitreich.org 70 i- (:return-type ffi:uint16)) Err bitreich.org 70 i- Err bitreich.org 70 i- (ffi:def-call-out %getsockname (:name "getsockname") Err bitreich.org 70 i- (:arguments (sockfd ffi:int) Err bitreich.org 70 i- (localaddr (ffi:c-ptr sockaddr) :in-out) Err bitreich.org 70 i- (addrlen (ffi:c-ptr socklen_t) :in-out)) Err bitreich.org 70 i- #+win32 (:library "WS2_32") Err bitreich.org 70 i- #-win32 (:library :default) Err bitreich.org 70 i- (:language #-win32 :stdc Err bitreich.org 70 i- #+win32 :stdc-stdcall) Err bitreich.org 70 i- (:return-type ffi:int)) Err bitreich.org 70 i- Err bitreich.org 70 i- (ffi:def-call-out %getpeername (:name "getpeername") Err bitreich.org 70 i- (:arguments (sockfd ffi:int) Err bitreich.org 70 i- (peeraddr (ffi:c-ptr sockaddr) :in-out) Err bitreich.org 70 i- (addrlen (ffi:c-ptr socklen_t) :in-out)) Err bitreich.org 70 i- #+win32 (:library "WS2_32") Err bitreich.org 70 i- #-win32 (:library :default) Err bitreich.org 70 i- (:language #-win32 :stdc Err bitreich.org 70 i- #+win32 :stdc-stdcall) Err bitreich.org 70 i- (:return-type ffi:int)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; socket constants Err bitreich.org 70 i- (defconstant +socket-af-inet+ 2) Err bitreich.org 70 i- (defconstant +socket-sock-dgram+ 2) Err bitreich.org 70 i- (defconstant +socket-ip-proto-udp+ 17) Err bitreich.org 70 i- Err bitreich.org 70 i- (defconstant +sockopt-so-rcvtimeo+ #-linux #x1006 #+linux 20 "Socket receive timeout") Err bitreich.org 70 i- Err bitreich.org 70 i- (defparameter *length-of-sockaddr_in* (ffi:sizeof 'sockaddr_in)) Err bitreich.org 70 i- Err bitreich.org 70 i- (declaim (inline fill-sockaddr_in)) Err bitreich.org 70 i- (defun fill-sockaddr_in (sockaddr host port) Err bitreich.org 70 i- (let ((hbo (host-to-hbo host))) Err bitreich.org 70 i- (ffi:with-c-place (place sockaddr) Err bitreich.org 70 i- #+macos Err bitreich.org 70 i- (setf (ffi:slot place 'sin_len) *length-of-sockaddr_in*) Err bitreich.org 70 i- (setf (ffi:slot place 'sin_family) +socket-af-inet+ Err bitreich.org 70 i- (ffi:slot place 'sin_port) (%htons port) Err bitreich.org 70 i- (ffi:slot place 'sin_addr) (%htonl hbo))) Err bitreich.org 70 i- sockaddr)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun socket-create-datagram (local-port Err bitreich.org 70 i- &key (local-host *wildcard-host*) Err bitreich.org 70 i- remote-host Err bitreich.org 70 i- remote-port) Err bitreich.org 70 i- (let ((sock (%socket +socket-af-inet+ +socket-sock-dgram+ +socket-ip-proto-udp+)) Err bitreich.org 70 i- (lsock_addr (fill-sockaddr_in (ffi:allocate-shallow 'sockaddr_in) Err bitreich.org 70 i- local-host local-port)) Err bitreich.org 70 i- (rsock_addr (when remote-host Err bitreich.org 70 i- (fill-sockaddr_in (ffi:allocate-shallow 'sockaddr_in) Err bitreich.org 70 i- remote-host (or remote-port local-port))))) Err bitreich.org 70 i- (unless (plusp sock) Err bitreich.org 70 i- (error "SOCKET-CREATE-DATAGRAM ERROR (socket): ~A" (os:errno))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (let ((rv (%bind sock (ffi:cast (ffi:foreign-value lsock_addr) 'sockaddr) Err bitreich.org 70 i- *length-of-sockaddr_in*))) Err bitreich.org 70 i- (unless (zerop rv) Err bitreich.org 70 i- (error "SOCKET-CREATE-DATAGRAM ERROR (bind): ~A" (os:errno))) Err bitreich.org 70 i- (when rsock_addr Err bitreich.org 70 i- (let ((rv (%connect sock Err bitreich.org 70 i- (ffi:cast (ffi:foreign-value rsock_addr) 'sockaddr) Err bitreich.org 70 i- *length-of-sockaddr_in*))) Err bitreich.org 70 i- (unless (zerop rv) Err bitreich.org 70 i- (error "SOCKET-CREATE-DATAGRAM ERROR (connect): ~A" (os:errno)))))) Err bitreich.org 70 i- (ffi:foreign-free lsock_addr) Err bitreich.org 70 i- (when remote-host Err bitreich.org 70 i- (ffi:foreign-free rsock_addr))) Err bitreich.org 70 i- (make-datagram-socket sock :connected-p (if rsock_addr t nil)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun finalize-datagram-usocket (object) Err bitreich.org 70 i- (when (datagram-usocket-p object) Err bitreich.org 70 i- (socket-close object))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod initialize-instance :after ((usocket datagram-usocket) &key) Err bitreich.org 70 i- (setf (slot-value usocket 'recv-buffer) Err bitreich.org 70 i- (ffi:allocate-shallow 'ffi:uint8 :count +max-datagram-packet-size+)) Err bitreich.org 70 i- ;; finalize the object Err bitreich.org 70 i- (ext:finalize usocket 'finalize-datagram-usocket)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod socket-close ((usocket datagram-usocket)) Err bitreich.org 70 i- (when (wait-list usocket) Err bitreich.org 70 i- (remove-waiter (wait-list usocket) usocket)) Err bitreich.org 70 i- (with-slots (recv-buffer socket) usocket Err bitreich.org 70 i- (ffi:foreign-free recv-buffer) Err bitreich.org 70 i- (zerop (%close socket)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod socket-receive ((usocket datagram-usocket) buffer length &key) Err bitreich.org 70 i- (let ((remote-address (ffi:allocate-shallow 'sockaddr_in)) Err bitreich.org 70 i- (remote-address-length (ffi:allocate-shallow 'ffi:int)) Err bitreich.org 70 i- nbytes (host 0) (port 0)) Err bitreich.org 70 i- (setf (ffi:foreign-value remote-address-length) Err bitreich.org 70 i- *length-of-sockaddr_in*) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (multiple-value-bind (n address address-length) Err bitreich.org 70 i- (%recvfrom (socket usocket) Err bitreich.org 70 i- (ffi:foreign-address (slot-value usocket 'recv-buffer)) Err bitreich.org 70 i- +max-datagram-packet-size+ Err bitreich.org 70 i- 0 ; flags Err bitreich.org 70 i- (ffi:cast (ffi:foreign-value remote-address) 'sockaddr) Err bitreich.org 70 i- (ffi:foreign-value remote-address-length)) Err bitreich.org 70 i- (when (minusp n) Err bitreich.org 70 i- (error "SOCKET-RECEIVE ERROR: ~A" (os:errno))) Err bitreich.org 70 i- (setq nbytes n) Err bitreich.org 70 i- (when (= address-length *length-of-sockaddr_in*) Err bitreich.org 70 i- (let ((data (sockaddr-sa_data address))) Err bitreich.org 70 i- (setq host (ip-from-octet-buffer data :start 2) Err bitreich.org 70 i- port (port-from-octet-buffer data)))) Err bitreich.org 70 i- (cond ((plusp n) Err bitreich.org 70 i- (let ((return-buffer (ffi:foreign-value (slot-value usocket 'recv-buffer)))) Err bitreich.org 70 i- (if buffer ; replace exist buffer of create new return buffer Err bitreich.org 70 i- (let ((end-1 (min (or length (length buffer)) +max-datagram-packet-size+)) Err bitreich.org 70 i- (end-2 (min n +max-datagram-packet-size+))) Err bitreich.org 70 i- (replace buffer return-buffer :end1 end-1 :end2 end-2)) Err bitreich.org 70 i- (setq buffer (subseq return-buffer 0 (min n +max-datagram-packet-size+)))))) Err bitreich.org 70 i- ((zerop n)))) Err bitreich.org 70 i- (ffi:foreign-free remote-address) Err bitreich.org 70 i- (ffi:foreign-free remote-address-length)) Err bitreich.org 70 i- (values buffer nbytes host port))) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; implementation note: different from socket-receive, we know how many bytes we want to send everytime, Err bitreich.org 70 i- ;; so, a send buffer will not needed, and if there is a buffer, it's hard to fill its content like those Err bitreich.org 70 i- ;; in LispWorks. So, we allocate new foreign buffer for holding data (unknown sequence subtype) every time. Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; I don't know if anyone is watching my coding work, but I think this design is reasonable for CLISP. Err bitreich.org 70 i- (defmethod socket-send ((usocket datagram-usocket) buffer size &key host port (offset 0)) Err bitreich.org 70 i- (declare (type sequence buffer) Err bitreich.org 70 i- (type (integer 0 *) size offset)) Err bitreich.org 70 i- (let ((remote-address Err bitreich.org 70 i- (when (and host port) Err bitreich.org 70 i- (fill-sockaddr_in (ffi:allocate-shallow 'sockaddr_in) host port))) Err bitreich.org 70 i- (send-buffer Err bitreich.org 70 i- (ffi:allocate-deep 'ffi:uint8 Err bitreich.org 70 i- (if (zerop offset) Err bitreich.org 70 i- buffer Err bitreich.org 70 i- (subseq buffer offset (+ offset size))) Err bitreich.org 70 i- :count size :read-only t)) Err bitreich.org 70 i- (real-size (min size +max-datagram-packet-size+)) Err bitreich.org 70 i- (nbytes 0)) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (let ((n (if remote-address Err bitreich.org 70 i- (%sendto (socket usocket) Err bitreich.org 70 i- (ffi:foreign-address send-buffer) Err bitreich.org 70 i- real-size Err bitreich.org 70 i- 0 ; flags Err bitreich.org 70 i- (ffi:cast (ffi:foreign-value remote-address) 'sockaddr) Err bitreich.org 70 i- *length-of-sockaddr_in*) Err bitreich.org 70 i- (%send (socket usocket) Err bitreich.org 70 i- (ffi:foreign-address send-buffer) Err bitreich.org 70 i- real-size Err bitreich.org 70 i- 0)))) Err bitreich.org 70 i- (cond ((plusp n) Err bitreich.org 70 i- (setq nbytes n)) Err bitreich.org 70 i- ((zerop n) Err bitreich.org 70 i- (setq nbytes n)) Err bitreich.org 70 i- (t (error "SOCKET-SEND ERROR: ~A" (os:errno))))) Err bitreich.org 70 i- (ffi:foreign-free send-buffer) Err bitreich.org 70 i- (when remote-address Err bitreich.org 70 i- (ffi:foreign-free remote-address)) Err bitreich.org 70 i- nbytes))) Err bitreich.org 70 i- Err bitreich.org 70 i- (declaim (inline get-socket-name)) Err bitreich.org 70 i- (defun get-socket-name (socket function) Err bitreich.org 70 i- (let ((address (ffi:allocate-shallow 'sockaddr_in)) Err bitreich.org 70 i- (address-length (ffi:allocate-shallow 'ffi:int)) Err bitreich.org 70 i- (host 0) (port 0)) Err bitreich.org 70 i- (setf (ffi:foreign-value address-length) *length-of-sockaddr_in*) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (multiple-value-bind (rv return-address return-address-length) Err bitreich.org 70 i- (funcall function socket Err bitreich.org 70 i- (ffi:cast (ffi:foreign-value address) 'sockaddr) Err bitreich.org 70 i- (ffi:foreign-value address-length)) Err bitreich.org 70 i- (declare (ignore return-address-length)) Err bitreich.org 70 i- (if (zerop rv) Err bitreich.org 70 i- (let ((data (sockaddr-sa_data return-address))) Err bitreich.org 70 i- (setq host (ip-from-octet-buffer data :start 2) Err bitreich.org 70 i- port (port-from-octet-buffer data))) Err bitreich.org 70 i- (error "GET-SOCKET-NAME ERROR: ~A" (os:errno)))) Err bitreich.org 70 i- (ffi:foreign-free address) Err bitreich.org 70 i- (ffi:foreign-free address-length)) Err bitreich.org 70 i- (values (hbo-to-vector-quad host) port))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod get-local-name ((usocket datagram-usocket)) Err bitreich.org 70 i- (get-socket-name (socket usocket) '%getsockname)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defmethod get-peer-name ((usocket datagram-usocket)) Err bitreich.org 70 i- (get-socket-name (socket usocket) '%getpeername)) Err bitreich.org 70 i- Err bitreich.org 70 i-) ; progn Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/backend/clozure.lisp b/3rdparties/software/usocket-0.7.1/backend/clozure.lisp /scm/clic/file/3rdparties/software/usocket-0.7.1/backend/clozure.lisp.gph bitreich.org 70 i@@ -1,73 +0,0 @@ Err bitreich.org 70 i-;;;; See LICENSE for licensing information. Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Functions for CCL 1.11 (IPv6) only, see openmcl.lisp for rest of functions. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :usocket) Err bitreich.org 70 i- Err bitreich.org 70 i-#+ipv6 Err bitreich.org 70 i-(defun socket-connect (host port &key (protocol :stream) element-type Err bitreich.org 70 i- timeout deadline nodelay Err bitreich.org 70 i- local-host local-port) Err bitreich.org 70 i- (when (eq nodelay :if-supported) Err bitreich.org 70 i- (setf nodelay t)) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (let* ((remote (when (and host port) Err bitreich.org 70 i- (openmcl-socket:resolve-address :host (host-to-hostname host) Err bitreich.org 70 i- :port port Err bitreich.org 70 i- :socket-type protocol))) Err bitreich.org 70 i- (local (when (and local-host local-port) Err bitreich.org 70 i- (openmcl-socket:resolve-address :host (host-to-hostname local-host) Err bitreich.org 70 i- :port local-port Err bitreich.org 70 i- :socket-type protocol))) Err bitreich.org 70 i- (mcl-sock (apply #'openmcl-socket:make-socket Err bitreich.org 70 i- `(:type ,protocol Err bitreich.org 70 i- ,@(when (or remote local) Err bitreich.org 70 i- `(:address-family ,(openmcl-socket:socket-address-family (or remote local)))) Err bitreich.org 70 i- ,@(when remote Err bitreich.org 70 i- `(:remote-address ,remote)) Err bitreich.org 70 i- ,@(when local Err bitreich.org 70 i- `(:local-address ,local)) Err bitreich.org 70 i- :format ,(to-format element-type protocol) Err bitreich.org 70 i- :external-format ,ccl:*default-external-format* Err bitreich.org 70 i- :deadline ,deadline Err bitreich.org 70 i- :nodelay ,nodelay Err bitreich.org 70 i- :connect-timeout ,timeout Err bitreich.org 70 i- :input-timeout ,timeout)))) Err bitreich.org 70 i- (ecase protocol Err bitreich.org 70 i- (:stream Err bitreich.org 70 i- (make-stream-socket :stream mcl-sock :socket mcl-sock)) Err bitreich.org 70 i- (:datagram Err bitreich.org 70 i- (make-datagram-socket mcl-sock :connected-p (and remote t))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+ipv6 Err bitreich.org 70 i-(defun socket-listen (host port Err bitreich.org 70 i- &key Err bitreich.org 70 i- (reuse-address nil reuse-address-supplied-p) Err bitreich.org 70 i- (reuseaddress (when reuse-address-supplied-p reuse-address)) Err bitreich.org 70 i- (backlog 5) Err bitreich.org 70 i- (element-type 'character)) Err bitreich.org 70 i- (let ((local-address (openmcl-socket:resolve-address :host (host-to-hostname host) Err bitreich.org 70 i- :port port :connect :passive))) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (make-stream-server-socket Err bitreich.org 70 i- (openmcl-socket:make-socket :connect :passive Err bitreich.org 70 i- :address-family (openmcl-socket:socket-address-family local-address) Err bitreich.org 70 i- :local-address local-address Err bitreich.org 70 i- :reuse-address reuseaddress Err bitreich.org 70 i- :backlog backlog Err bitreich.org 70 i- :format (to-format element-type :stream)) Err bitreich.org 70 i- :element-type element-type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+ipv6 Err bitreich.org 70 i-(defmethod socket-send ((usocket datagram-usocket) buffer size &key host port (offset 0)) Err bitreich.org 70 i- (let* ((ccl-socket (socket usocket)) Err bitreich.org 70 i- (socket-keys (ccl::socket-keys ccl-socket))) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (if (and host port) Err bitreich.org 70 i- (openmcl-socket:send-to ccl-socket buffer size Err bitreich.org 70 i- :remote-host (host-to-hostname host) Err bitreich.org 70 i- :remote-port port Err bitreich.org 70 i- :offset offset) Err bitreich.org 70 i- (openmcl-socket:send-to ccl-socket buffer size Err bitreich.org 70 i- :remote-address (getf socket-keys :remote-address) Err bitreich.org 70 i- :offset offset))))) Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/backend/cmucl.lisp b/3rdparties/software/usocket-0.7.1/backend/cmucl.lisp /scm/clic/file/3rdparties/software/usocket-0.7.1/backend/cmucl.lisp.gph bitreich.org 70 i@@ -1,295 +0,0 @@ Err bitreich.org 70 i-;;;; See LICENSE for licensing information. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :usocket) Err bitreich.org 70 i- Err bitreich.org 70 i-#+win32 Err bitreich.org 70 i-(defun remap-for-win32 (z) Err bitreich.org 70 i- (mapcar #'(lambda (x) Err bitreich.org 70 i- (cons (mapcar #'(lambda (y) Err bitreich.org 70 i- (+ 10000 y)) Err bitreich.org 70 i- (car x)) Err bitreich.org 70 i- (cdr x))) Err bitreich.org 70 i- z)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter +cmucl-error-map+ Err bitreich.org 70 i- #+win32 Err bitreich.org 70 i- (append (remap-for-win32 +unix-errno-condition-map+) Err bitreich.org 70 i- (remap-for-win32 +unix-errno-error-map+)) Err bitreich.org 70 i- #-win32 Err bitreich.org 70 i- (append +unix-errno-condition-map+ Err bitreich.org 70 i- +unix-errno-error-map+)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun cmucl-map-socket-error (err &key condition socket) Err bitreich.org 70 i- (let ((usock-err Err bitreich.org 70 i- (cdr (assoc err +cmucl-error-map+ :test #'member)))) Err bitreich.org 70 i- (if usock-err Err bitreich.org 70 i- (if (subtypep usock-err 'error) Err bitreich.org 70 i- (error usock-err :socket socket) Err bitreich.org 70 i- (signal usock-err :socket socket)) Err bitreich.org 70 i- (error 'unknown-error Err bitreich.org 70 i- :socket socket Err bitreich.org 70 i- :real-error condition)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; CMUCL error handling is brain-dead: it doesn't preserve any Err bitreich.org 70 i-;; information other than the OS error string from which the Err bitreich.org 70 i-;; error can be determined. The OS error string isn't good enough Err bitreich.org 70 i-;; given that it may have been localized (l10n). Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; The above applies to versions pre 19b; 19d and newer are expected to Err bitreich.org 70 i-;; contain even better error reporting. Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; Just catch the errors and encapsulate them in an unknown-error Err bitreich.org 70 i-(defun handle-condition (condition &optional (socket nil)) Err bitreich.org 70 i- "Dispatch correct usocket condition." Err bitreich.org 70 i- (typecase condition Err bitreich.org 70 i- (ext::socket-error (cmucl-map-socket-error (ext::socket-errno condition) Err bitreich.org 70 i- :socket socket Err bitreich.org 70 i- :condition condition)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun socket-connect (host port &key (protocol :stream) (element-type 'character) Err bitreich.org 70 i- timeout deadline (nodelay t nodelay-specified) Err bitreich.org 70 i- (local-host nil local-host-p) Err bitreich.org 70 i- (local-port nil local-port-p) Err bitreich.org 70 i- &aux Err bitreich.org 70 i- (local-bind-p (fboundp 'ext::bind-inet-socket))) Err bitreich.org 70 i- (when timeout (unsupported 'timeout 'socket-connect)) Err bitreich.org 70 i- (when deadline (unsupported 'deadline 'socket-connect)) Err bitreich.org 70 i- (when (and nodelay-specified Err bitreich.org 70 i- (not (eq nodelay :if-supported))) Err bitreich.org 70 i- (unsupported 'nodelay 'socket-connect)) Err bitreich.org 70 i- (when (and local-host-p (not local-bind-p)) Err bitreich.org 70 i- (unsupported 'local-host 'socket-connect :minimum "Snapshot 2008-08 (19E)")) Err bitreich.org 70 i- (when (and local-port-p (not local-bind-p)) Err bitreich.org 70 i- (unsupported 'local-port 'socket-connect :minimum "Snapshot 2008-08 (19E)")) Err bitreich.org 70 i- Err bitreich.org 70 i- (let ((socket)) Err bitreich.org 70 i- (ecase protocol Err bitreich.org 70 i- (:stream Err bitreich.org 70 i- (setf socket Err bitreich.org 70 i- (let ((args (list (host-to-hbo host) port protocol))) Err bitreich.org 70 i- (when (and local-bind-p (or local-host-p local-port-p)) Err bitreich.org 70 i- (nconc args (list :local-host (when local-host Err bitreich.org 70 i- (host-to-hbo local-host)) Err bitreich.org 70 i- :local-port local-port))) Err bitreich.org 70 i- (with-mapped-conditions (socket) Err bitreich.org 70 i- (apply #'ext:connect-to-inet-socket args)))) Err bitreich.org 70 i- (if socket Err bitreich.org 70 i- (let* ((stream (sys:make-fd-stream socket :input t :output t Err bitreich.org 70 i- :element-type element-type Err bitreich.org 70 i- :buffering :full)) Err bitreich.org 70 i- ;;###FIXME the above line probably needs an :external-format Err bitreich.org 70 i- (usocket (make-stream-socket :socket socket Err bitreich.org 70 i- :stream stream))) Err bitreich.org 70 i- usocket) Err bitreich.org 70 i- (let ((err (unix:unix-errno))) Err bitreich.org 70 i- (when err (cmucl-map-socket-error err))))) Err bitreich.org 70 i- (:datagram Err bitreich.org 70 i- (setf socket Err bitreich.org 70 i- (if (and host port) Err bitreich.org 70 i- (let ((args (list (host-to-hbo host) port protocol))) Err bitreich.org 70 i- (when (and local-bind-p (or local-host-p local-port-p)) Err bitreich.org 70 i- (nconc args (list :local-host (when local-host Err bitreich.org 70 i- (host-to-hbo local-host)) Err bitreich.org 70 i- :local-port local-port))) Err bitreich.org 70 i- (with-mapped-conditions (socket) Err bitreich.org 70 i- (apply #'ext:connect-to-inet-socket args))) Err bitreich.org 70 i- (if (or local-host-p local-port-p) Err bitreich.org 70 i- (with-mapped-conditions (socket) Err bitreich.org 70 i- (apply #'ext:create-inet-listener Err bitreich.org 70 i- (nconc (list (or local-port 0) protocol) Err bitreich.org 70 i- (when (and local-host-p Err bitreich.org 70 i- (ip/= local-host *wildcard-host*)) Err bitreich.org 70 i- (list :host (host-to-hbo local-host)))))) Err bitreich.org 70 i- (with-mapped-conditions (socket) Err bitreich.org 70 i- (ext:create-inet-socket protocol))))) Err bitreich.org 70 i- (if socket Err bitreich.org 70 i- (let ((usocket (make-datagram-socket socket :connected-p (and host port t)))) Err bitreich.org 70 i- (ext:finalize usocket #'(lambda () (when (%open-p usocket) Err bitreich.org 70 i- (ext:close-socket socket)))) Err bitreich.org 70 i- usocket) Err bitreich.org 70 i- (let ((err (unix:unix-errno))) Err bitreich.org 70 i- (when err (cmucl-map-socket-error err)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun socket-listen (host port Err bitreich.org 70 i- &key reuseaddress Err bitreich.org 70 i- (reuse-address nil reuse-address-supplied-p) Err bitreich.org 70 i- (backlog 5) Err bitreich.org 70 i- (element-type 'character)) Err bitreich.org 70 i- (let* ((reuseaddress (if reuse-address-supplied-p reuse-address reuseaddress)) Err bitreich.org 70 i- (server-sock Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (apply #'ext:create-inet-listener Err bitreich.org 70 i- (nconc (list port :stream Err bitreich.org 70 i- :backlog backlog Err bitreich.org 70 i- :reuse-address reuseaddress) Err bitreich.org 70 i- (when (ip/= host *wildcard-host*) Err bitreich.org 70 i- (list :host Err bitreich.org 70 i- (host-to-hbo host)))))))) Err bitreich.org 70 i- (make-stream-server-socket server-sock :element-type element-type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-accept ((usocket stream-server-usocket) &key element-type) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (let* ((sock (ext:accept-tcp-connection (socket usocket))) Err bitreich.org 70 i- (stream (sys:make-fd-stream sock :input t :output t Err bitreich.org 70 i- :element-type (or element-type Err bitreich.org 70 i- (element-type usocket)) Err bitreich.org 70 i- :buffering :full))) Err bitreich.org 70 i- (make-stream-socket :socket sock :stream stream)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Sockets and socket streams are represented Err bitreich.org 70 i-;; by different objects. Be sure to close the Err bitreich.org 70 i-;; socket stream when closing a stream socket. Err bitreich.org 70 i-(defmethod socket-close ((usocket stream-usocket)) Err bitreich.org 70 i- "Close socket." Err bitreich.org 70 i- (when (wait-list usocket) Err bitreich.org 70 i- (remove-waiter (wait-list usocket) usocket)) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (close (socket-stream usocket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-close ((usocket usocket)) Err bitreich.org 70 i- "Close socket." Err bitreich.org 70 i- (when (wait-list usocket) Err bitreich.org 70 i- (remove-waiter (wait-list usocket) usocket)) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (ext:close-socket (socket usocket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-close :after ((socket datagram-usocket)) Err bitreich.org 70 i- (setf (%open-p socket) nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+unicode Err bitreich.org 70 i-(defun %unix-send (fd buffer length flags) Err bitreich.org 70 i- (alien:alien-funcall Err bitreich.org 70 i- (alien:extern-alien "send" Err bitreich.org 70 i- (function c-call:int Err bitreich.org 70 i- c-call:int Err bitreich.org 70 i- system:system-area-pointer Err bitreich.org 70 i- c-call:int Err bitreich.org 70 i- c-call:int)) Err bitreich.org 70 i- fd Err bitreich.org 70 i- (system:vector-sap buffer) Err bitreich.org 70 i- length Err bitreich.org 70 i- flags)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-shutdown ((usocket usocket) direction) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (ext:inet-shutdown (socket usocket) (ecase direction Err bitreich.org 70 i- (:input ext:shut-rd) Err bitreich.org 70 i- (:output ext:shut-wr))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-send ((usocket datagram-usocket) buffer size &key host port (offset 0) Err bitreich.org 70 i- &aux (real-buffer (if (zerop offset) Err bitreich.org 70 i- buffer Err bitreich.org 70 i- (subseq buffer offset (+ offset size))))) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (if (and host port) Err bitreich.org 70 i- (ext:inet-sendto (socket usocket) real-buffer size (host-to-hbo host) port) Err bitreich.org 70 i- #-unicode Err bitreich.org 70 i- (unix:unix-send (socket usocket) real-buffer size 0) Err bitreich.org 70 i- #+unicode Err bitreich.org 70 i- (%unix-send (socket usocket) real-buffer size 0)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-receive ((usocket datagram-usocket) buffer length &key) Err bitreich.org 70 i- (declare (values (simple-array (unsigned-byte 8) (*)) ; buffer Err bitreich.org 70 i- (integer 0) ; size Err bitreich.org 70 i- (unsigned-byte 32) ; host Err bitreich.org 70 i- (unsigned-byte 16))) ; port Err bitreich.org 70 i- (let ((real-buffer (or buffer Err bitreich.org 70 i- (make-array length :element-type '(unsigned-byte 8)))) Err bitreich.org 70 i- (real-length (or length Err bitreich.org 70 i- (length buffer)))) Err bitreich.org 70 i- (multiple-value-bind (nbytes remote-host remote-port) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (ext:inet-recvfrom (socket usocket) real-buffer real-length)) Err bitreich.org 70 i- (values real-buffer nbytes remote-host remote-port)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-name ((usocket usocket)) Err bitreich.org 70 i- (multiple-value-bind Err bitreich.org 70 i- (address port) Err bitreich.org 70 i- (ext:get-socket-host-and-port (socket usocket)) Err bitreich.org 70 i- (values (hbo-to-vector-quad address) port))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-name ((usocket stream-usocket)) Err bitreich.org 70 i- (multiple-value-bind Err bitreich.org 70 i- (address port) Err bitreich.org 70 i- (ext:get-peer-host-and-port (socket usocket)) Err bitreich.org 70 i- (values (hbo-to-vector-quad address) port))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-address ((usocket usocket)) Err bitreich.org 70 i- (nth-value 0 (get-local-name usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-address ((usocket stream-usocket)) Err bitreich.org 70 i- (nth-value 0 (get-peer-name usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-port ((usocket usocket)) Err bitreich.org 70 i- (nth-value 1 (get-local-name usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-port ((usocket stream-usocket)) Err bitreich.org 70 i- (nth-value 1 (get-peer-name usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defun lookup-host-entry (host) Err bitreich.org 70 i- (multiple-value-bind Err bitreich.org 70 i- (entry errno) Err bitreich.org 70 i- (ext:lookup-host-entry host) Err bitreich.org 70 i- (if entry Err bitreich.org 70 i- entry Err bitreich.org 70 i- ;;###The constants below work on *most* OSes, but are defined as the Err bitreich.org 70 i- ;; constants mentioned in C Err bitreich.org 70 i- (let ((exception Err bitreich.org 70 i- (second (assoc errno Err bitreich.org 70 i- '((1 ns-host-not-found-error) ;; HOST_NOT_FOUND Err bitreich.org 70 i- (2 ns-no-recovery-error) ;; NO_DATA Err bitreich.org 70 i- (3 ns-no-recovery-error) ;; NO_RECOVERY Err bitreich.org 70 i- (4 ns-try-again-condition)))))) ;; TRY_AGAIN Err bitreich.org 70 i- (when exception Err bitreich.org 70 i- (error exception)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-host-by-address (address) Err bitreich.org 70 i- (handler-case (ext:host-entry-name Err bitreich.org 70 i- (lookup-host-entry (host-byte-order address))) Err bitreich.org 70 i- (condition (condition) (handle-condition condition)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-hosts-by-name (name) Err bitreich.org 70 i- (handler-case (mapcar #'hbo-to-vector-quad Err bitreich.org 70 i- (ext:host-entry-addr-list Err bitreich.org 70 i- (lookup-host-entry name))) Err bitreich.org 70 i- (condition (condition) (handle-condition condition)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-host-name () Err bitreich.org 70 i- (unix:unix-gethostname)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %setup-wait-list (wait-list) Err bitreich.org 70 i- (declare (ignore wait-list))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %add-waiter (wait-list waiter) Err bitreich.org 70 i- (push (socket waiter) (wait-list-%wait wait-list))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %remove-waiter (wait-list waiter) Err bitreich.org 70 i- (setf (wait-list-%wait wait-list) Err bitreich.org 70 i- (remove (socket waiter) (wait-list-%wait wait-list)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun wait-for-input-internal (wait-list &key timeout) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (alien:with-alien ((rfds (alien:struct unix:fd-set))) Err bitreich.org 70 i- (unix:fd-zero rfds) Err bitreich.org 70 i- (dolist (socket (wait-list-%wait wait-list)) Err bitreich.org 70 i- (unix:fd-set socket rfds)) Err bitreich.org 70 i- (multiple-value-bind Err bitreich.org 70 i- (secs musecs) Err bitreich.org 70 i- (split-timeout (or timeout 1)) Err bitreich.org 70 i- (multiple-value-bind (count err) Err bitreich.org 70 i- (unix:unix-fast-select (1+ (reduce #'max Err bitreich.org 70 i- (wait-list-%wait wait-list))) Err bitreich.org 70 i- (alien:addr rfds) nil nil Err bitreich.org 70 i- (when timeout secs) musecs) Err bitreich.org 70 i- (declare (ignore err)) Err bitreich.org 70 i- (if (<= 0 count) Err bitreich.org 70 i- ;; process the result... Err bitreich.org 70 i- (dolist (x (wait-list-waiters wait-list)) Err bitreich.org 70 i- (when (unix:fd-isset (socket x) rfds) Err bitreich.org 70 i- (setf (state x) :READ))) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- ;;###FIXME generate an error, except for EINTR Err bitreich.org 70 i- ))))))) Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/backend/ecl.lisp b/3rdparties/software/usocket-0.7.1/backend/ecl.lisp /scm/clic/file/3rdparties/software/usocket-0.7.1/backend/ecl.lisp.gph bitreich.org 70 i@@ -1,152 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: Lisp -*- Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Foreign functions defined by ECL's DFFI, used for #+ecl-bytecmp only. Err bitreich.org 70 i-;;;; See LICENSE for licensing information. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :usocket) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and ecl-bytecmp windows) Err bitreich.org 70 i-(eval-when (:load-toplevel :execute) Err bitreich.org 70 i- (ffi:load-foreign-library "ws2_32.dll" :module "ws2_32")) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and ecl-bytecmp windows) Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (ffi:def-function ("gethostname" c-gethostname) Err bitreich.org 70 i- ((name (* :unsigned-char)) Err bitreich.org 70 i- (len :int)) Err bitreich.org 70 i- :returning :int Err bitreich.org 70 i- :module "ws2_32") Err bitreich.org 70 i- Err bitreich.org 70 i- (defun get-host-name () Err bitreich.org 70 i- "Returns the hostname" Err bitreich.org 70 i- (ffi:with-foreign-object (name '(:array :unsigned-char 256)) Err bitreich.org 70 i- (when (zerop (c-gethostname (ffi:char-array-to-pointer name) 256)) Err bitreich.org 70 i- (ffi:convert-from-foreign-string name)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (ffi:def-foreign-type ws-socket :unsigned-int) Err bitreich.org 70 i- (ffi:def-foreign-type ws-dword :unsigned-long) Err bitreich.org 70 i- (ffi:def-foreign-type ws-event :unsigned-int) Err bitreich.org 70 i- Err bitreich.org 70 i- (ffi:def-struct wsa-network-events Err bitreich.org 70 i- (network-events :long) Err bitreich.org 70 i- (error-code (:array :int 10))) Err bitreich.org 70 i- Err bitreich.org 70 i- (ffi:def-function ("WSACreateEvent" wsa-event-create) Err bitreich.org 70 i- () Err bitreich.org 70 i- :returning ws-event Err bitreich.org 70 i- :module "ws2_32") Err bitreich.org 70 i- Err bitreich.org 70 i- (ffi:def-function ("WSACloseEvent" c-wsa-event-close) Err bitreich.org 70 i- ((event-object ws-event)) Err bitreich.org 70 i- :returning :int Err bitreich.org 70 i- :module "ws2_32") Err bitreich.org 70 i- Err bitreich.org 70 i- (defun wsa-event-close (ws-event) Err bitreich.org 70 i- (not (zerop (c-wsa-event-close ws-event)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (ffi:def-function ("WSAEnumNetworkEvents" wsa-enum-network-events) Err bitreich.org 70 i- ((socket ws-socket) Err bitreich.org 70 i- (event-object ws-event) Err bitreich.org 70 i- (network-events (* wsa-network-events))) Err bitreich.org 70 i- :returning :int Err bitreich.org 70 i- :module "ws2_32") Err bitreich.org 70 i- Err bitreich.org 70 i- (ffi:def-function ("WSAEventSelect" wsa-event-select) Err bitreich.org 70 i- ((socket ws-socket) Err bitreich.org 70 i- (event-object ws-event) Err bitreich.org 70 i- (network-events :long)) Err bitreich.org 70 i- :returning :int Err bitreich.org 70 i- :module "ws2_32") Err bitreich.org 70 i- Err bitreich.org 70 i- (ffi:def-function ("WSAWaitForMultipleEvents" c-wsa-wait-for-multiple-events) Err bitreich.org 70 i- ((number-of-events ws-dword) Err bitreich.org 70 i- (events (* ws-event)) Err bitreich.org 70 i- (wait-all-p :int) Err bitreich.org 70 i- (timeout ws-dword) Err bitreich.org 70 i- (alertable-p :int)) Err bitreich.org 70 i- :returning ws-dword Err bitreich.org 70 i- :module "ws2_32") Err bitreich.org 70 i- Err bitreich.org 70 i- (defun wsa-wait-for-multiple-events (number-of-events events wait-all-p timeout alertable-p) Err bitreich.org 70 i- (c-wsa-wait-for-multiple-events number-of-events Err bitreich.org 70 i- events Err bitreich.org 70 i- (if wait-all-p -1 0) Err bitreich.org 70 i- timeout Err bitreich.org 70 i- (if alertable-p -1 0))) Err bitreich.org 70 i- Err bitreich.org 70 i- (ffi:def-function ("ioctlsocket" wsa-ioctlsocket) Err bitreich.org 70 i- ((socket ws-socket) Err bitreich.org 70 i- (cmd :long) Err bitreich.org 70 i- (argp (* :unsigned-long))) Err bitreich.org 70 i- :returning :int Err bitreich.org 70 i- :module "ws2_32") Err bitreich.org 70 i- Err bitreich.org 70 i- (ffi:def-function ("WSAGetLastError" wsa-get-last-error) Err bitreich.org 70 i- () Err bitreich.org 70 i- :returning :int Err bitreich.org 70 i- :module "ws2_32") Err bitreich.org 70 i- Err bitreich.org 70 i- (defun maybe-wsa-error (rv &optional socket) Err bitreich.org 70 i- (unless (zerop rv) Err bitreich.org 70 i- (raise-usock-err (wsa-get-last-error) socket))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun bytes-available-for-read (socket) Err bitreich.org 70 i- (ffi:with-foreign-object (int-ptr :unsigned-long) Err bitreich.org 70 i- (maybe-wsa-error (wsa-ioctlsocket (socket-handle socket) fionread int-ptr) Err bitreich.org 70 i- socket) Err bitreich.org 70 i- (let ((int (ffi:deref-pointer int-ptr :unsigned-long))) Err bitreich.org 70 i- (prog1 int Err bitreich.org 70 i- (when (plusp int) Err bitreich.org 70 i- (setf (state socket) :read)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun map-network-events (func network-events) Err bitreich.org 70 i- (let ((event-map (ffi:get-slot-value network-events 'wsa-network-events 'network-events)) Err bitreich.org 70 i- (error-array (ffi:get-slot-pointer network-events 'wsa-network-events 'error-code))) Err bitreich.org 70 i- (unless (zerop event-map) Err bitreich.org 70 i- (dotimes (i fd-max-events) Err bitreich.org 70 i- (unless (zerop (ldb (byte 1 i) event-map)) Err bitreich.org 70 i- (funcall func (ffi:deref-array error-array '(:array :int 10) i))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun update-ready-and-state-slots (sockets) Err bitreich.org 70 i- (dolist (socket sockets) Err bitreich.org 70 i- (if (%ready-p socket) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (setf (state socket) :READ)) Err bitreich.org 70 i- (ffi:with-foreign-object (network-events 'wsa-network-events) Err bitreich.org 70 i- (let ((rv (wsa-enum-network-events (socket-handle socket) 0 network-events))) Err bitreich.org 70 i- (if (zerop rv) Err bitreich.org 70 i- (map-network-events Err bitreich.org 70 i- #'(lambda (err-code) Err bitreich.org 70 i- (if (zerop err-code) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (setf (state socket) :READ) Err bitreich.org 70 i- (when (stream-server-usocket-p socket) Err bitreich.org 70 i- (setf (%ready-p socket) t))) Err bitreich.org 70 i- (raise-usock-err err-code socket))) Err bitreich.org 70 i- network-events) Err bitreich.org 70 i- (maybe-wsa-error rv socket))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun os-wait-list-%wait (wait-list) Err bitreich.org 70 i- (ffi:deref-pointer (wait-list-%wait wait-list) 'ws-event)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun (setf os-wait-list-%wait) (value wait-list) Err bitreich.org 70 i- (setf (ffi:deref-pointer (wait-list-%wait wait-list) 'ws-event) value)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun free-wait-list (wl) Err bitreich.org 70 i- (when (wait-list-p wl) Err bitreich.org 70 i- (unless (null (wait-list-%wait wl)) Err bitreich.org 70 i- (wsa-event-close (os-wait-list-%wait wl)) Err bitreich.org 70 i- (ffi:free-foreign-object (wait-list-%wait wl)) Err bitreich.org 70 i- (setf (wait-list-%wait wl) nil)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %setup-wait-list (wait-list) Err bitreich.org 70 i- (setf (wait-list-%wait wait-list) Err bitreich.org 70 i- (ffi:allocate-foreign-object 'ws-event)) Err bitreich.org 70 i- (setf (os-wait-list-%wait wait-list) Err bitreich.org 70 i- (wsa-event-create)) Err bitreich.org 70 i- (ext:set-finalizer wait-list #'free-wait-list)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun os-socket-handle (usocket) Err bitreich.org 70 i- (socket-handle usocket)) Err bitreich.org 70 i- Err bitreich.org 70 i-) ; #+(and ecl-bytecmp windows) Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/backend/genera.lisp b/3rdparties/software/usocket-0.7.1/backend/genera.lisp /scm/clic/file/3rdparties/software/usocket-0.7.1/backend/genera.lisp.gph bitreich.org 70 i@@ -1,265 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: USOCKET; Base: 10 -*- Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; See LICENSE for licensing information. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :usocket) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass genera-socket () Err bitreich.org 70 i- ((foreign-address :initform 0 :initarg :foreign-address :accessor gs-foreign-address) Err bitreich.org 70 i- (foreign-port :initform 0 :initarg :foreign-port :accessor gs-foreign-port) Err bitreich.org 70 i- (local-address :initform 0 :initarg :local-address :accessor gs-local-address) Err bitreich.org 70 i- (local-port :initform 0 :initarg :local-port :accessor gs-local-port)) Err bitreich.org 70 i- ) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass genera-stream-socket (genera-socket) Err bitreich.org 70 i- ((stream :initform nil :initarg :stream :accessor gs-stream)) Err bitreich.org 70 i- ) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass genera-stream-server-socket (genera-socket) Err bitreich.org 70 i- ((backlog :initform nil :initarg :backlog :accessor gs-backlog) Err bitreich.org 70 i- (element-type :initform nil :initarg :element-type :accessor gs-element-type) Err bitreich.org 70 i- (pending-connections :initform nil :accessor gs-pending-connections)) Err bitreich.org 70 i- ) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass genera-datagram-socket (genera-socket) Err bitreich.org 70 i- ((connection :initform nil :initarg :connection :accessor gs-connection)) Err bitreich.org 70 i- ) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun host-to-host-object (host) Err bitreich.org 70 i- (let ((host (host-to-hostname host))) Err bitreich.org 70 i- (cond ((string-equal host "localhost") Err bitreich.org 70 i- net:*local-host*) Err bitreich.org 70 i- ((ip-address-string-p host) Err bitreich.org 70 i- (let ((quad (dotted-quad-to-vector-quad host))) Err bitreich.org 70 i- ;;---*** NOTE: This test is temporary until we have a loopback interface Err bitreich.org 70 i- (if (= (aref quad 0) 127) Err bitreich.org 70 i- net:*local-host* Err bitreich.org 70 i- (net:parse-host (format nil "INTERNET|~A" host))))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (net:parse-host host))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun element-type-to-format (element-type protocol) Err bitreich.org 70 i- (cond ((null element-type) Err bitreich.org 70 i- (ecase protocol Err bitreich.org 70 i- (:stream :text) Err bitreich.org 70 i- (:datagram :binary))) Err bitreich.org 70 i- ((subtypep element-type 'character) Err bitreich.org 70 i- :text) Err bitreich.org 70 i- (t :binary))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun handle-condition (condition &optional (socket nil)) Err bitreich.org 70 i- (typecase condition Err bitreich.org 70 i- ;;---*** TODO: Add additional conditions as appropriate Err bitreich.org 70 i- (sys:connection-refused Err bitreich.org 70 i- (error 'connection-refused-error :socket socket)) Err bitreich.org 70 i- ((or tcp::tcp-destination-unreachable-during-connection tcp::udp-destination-unreachable) Err bitreich.org 70 i- (error 'host-unreachable-error :socket socket)) Err bitreich.org 70 i- (sys:host-not-responding-during-connection Err bitreich.org 70 i- (error 'timeout-error :socket socket)) Err bitreich.org 70 i- (sys:unknown-host-name Err bitreich.org 70 i- (error 'ns-host-not-found-error :host-or-ip nil)) Err bitreich.org 70 i- (sys:network-error Err bitreich.org 70 i- (error 'unknown-error :socket socket :real-error condition :errno -1)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun socket-connect (host port &key (protocol :stream) element-type Err bitreich.org 70 i- timeout deadline (nodelay nil nodelay-p) Err bitreich.org 70 i- local-host local-port) Err bitreich.org 70 i- (declare (ignore local-host)) Err bitreich.org 70 i- (when deadline Err bitreich.org 70 i- (unsupported 'deadline 'socket-connect)) Err bitreich.org 70 i- (when (and nodelay-p (not (eq nodelay :if-supported))) Err bitreich.org 70 i- (unsupported 'nodelay 'socket-connect)) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (ecase protocol Err bitreich.org 70 i- (:stream Err bitreich.org 70 i- (let* ((host-object (host-to-host-object host)) Err bitreich.org 70 i- (format (element-type-to-format element-type protocol)) Err bitreich.org 70 i- (characters (eq format :text)) Err bitreich.org 70 i- (timeout (if timeout Err bitreich.org 70 i- (* 60 timeout) Err bitreich.org 70 i- tcp:*tcp-connect-timeout*)) Err bitreich.org 70 i- (stream (tcp:open-tcp-stream host-object port local-port Err bitreich.org 70 i- :characters characters Err bitreich.org 70 i- :ascii-translation characters Err bitreich.org 70 i- :timeout timeout)) Err bitreich.org 70 i- (gs (make-instance 'genera-stream-socket Err bitreich.org 70 i- :stream stream))) Err bitreich.org 70 i- (setf (gs-foreign-address gs) (scl:send stream :foreign-address)) Err bitreich.org 70 i- (setf (gs-foreign-port gs) (scl:send stream :foreign-port)) Err bitreich.org 70 i- (setf (gs-local-address gs) (scl:send stream :local-address)) Err bitreich.org 70 i- (setf (gs-local-port gs) (scl:send stream :local-port)) Err bitreich.org 70 i- (make-stream-socket :socket gs :stream stream))) Err bitreich.org 70 i- (:datagram Err bitreich.org 70 i- ;;---*** TODO Err bitreich.org 70 i- (unsupported 'datagram 'socket-connect))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-close ((usocket usocket)) Err bitreich.org 70 i- (when (wait-list usocket) Err bitreich.org 70 i- (remove-waiter (wait-list usocket) usocket)) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (socket-close (socket usocket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-close ((socket genera-stream-socket)) Err bitreich.org 70 i- (with-slots (stream) socket Err bitreich.org 70 i- (when stream Err bitreich.org 70 i- (scl:send (shiftf stream nil) :close nil)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-close ((socket genera-stream-server-socket)) Err bitreich.org 70 i- (with-slots (local-port pending-connections) socket Err bitreich.org 70 i- (when local-port Err bitreich.org 70 i- (tcp:remove-tcp-port-listener local-port)) Err bitreich.org 70 i- (dolist (tcb pending-connections) Err bitreich.org 70 i- (tcp::reject-tcb tcb)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-close ((socket genera-datagram-socket)) Err bitreich.org 70 i- (with-slots (connection) socket Err bitreich.org 70 i- (when connection Err bitreich.org 70 i- (scl:send (shiftf connection nil) :close nil)) Err bitreich.org 70 i- ;;---*** TODO: listening? Err bitreich.org 70 i- )) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Cribbed from TCP::MAKE-TCB Err bitreich.org 70 i-(defun gensym-tcp-port () Err bitreich.org 70 i- (loop as number = (incf tcp::*last-gensym-port-number*) then tcp::*last-gensym-port-number* Err bitreich.org 70 i- do (cond ((loop for existing-tcb in tcp::*tcb-list* Err bitreich.org 70 i- thereis (= number (tcp::tcb-local-port existing-tcb)))) Err bitreich.org 70 i- ((and (<= #.(expt 2 10) number) (< number #.(expt 2 16))) Err bitreich.org 70 i- (return number)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (setq tcp::*last-gensym-port-number* #.(expt 2 10)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun socket-listen (host port &key (reuse-address nil reuse-address-p) Err bitreich.org 70 i- (reuseaddress nil reuseaddress-p) Err bitreich.org 70 i- (backlog 5) (element-type 'character)) Err bitreich.org 70 i- (let ((host-object (host-to-host-object host)) Err bitreich.org 70 i- (port (if (zerop port) (gensym-tcp-port) port)) Err bitreich.org 70 i- (reuse-address (cond (reuse-address-p reuse-address) Err bitreich.org 70 i- (reuseaddress-p reuseaddress) Err bitreich.org 70 i- (t nil)))) Err bitreich.org 70 i- (when (<= port 1024) Err bitreich.org 70 i- ;; Don't allow listening on "privileged" ports to mimic Unix/Linux semantics Err bitreich.org 70 i- (error 'operation-not-permitted-error :socket nil)) Err bitreich.org 70 i- (when (tcp:tcp-port-protocol-name port) Err bitreich.org 70 i- ;; Can't replace a Genera server Err bitreich.org 70 i- (error 'address-in-use-error :socket nil)) Err bitreich.org 70 i- (when (tcp:tcp-port-listener port) Err bitreich.org 70 i- (unless reuse-address Err bitreich.org 70 i- (error 'address-in-use-error :socket nil))) Err bitreich.org 70 i- (let ((gs (make-instance 'genera-stream-server-socket Err bitreich.org 70 i- :backlog backlog Err bitreich.org 70 i- :element-type element-type))) Err bitreich.org 70 i- (setf (gs-local-address gs) Err bitreich.org 70 i- (loop for (network address) in (scl:send host-object :network-addresses) Err bitreich.org 70 i- when (typep network 'tcp:internet-network) Err bitreich.org 70 i- return address)) Err bitreich.org 70 i- (setf (gs-local-port gs) port) Err bitreich.org 70 i- (flet ((add-to-queue (tcb) Err bitreich.org 70 i- (cond ((and (not (zerop (gs-local-address gs))) Err bitreich.org 70 i- (not (= (gs-local-address gs) (tcp::tcb-local-address tcb)))) Err bitreich.org 70 i- ;; Reject if not destined for the proper address Err bitreich.org 70 i- (tcp::reject-tcb tcb)) Err bitreich.org 70 i- ((<= (length (gs-pending-connections gs)) (gs-backlog gs)) Err bitreich.org 70 i- (tcp::accept-tcb tcb) Err bitreich.org 70 i- (tcp::tcb-travel-through-states tcb "Accept" nil :listen :syn-received) Err bitreich.org 70 i- (setf (gs-pending-connections gs) Err bitreich.org 70 i- (append (gs-pending-connections gs) (list tcb)))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- ;; Reject if backlog is full Err bitreich.org 70 i- (tcp::reject-tcb tcb))))) Err bitreich.org 70 i- (tcp:add-tcp-port-listener port #'add-to-queue)) Err bitreich.org 70 i- (make-stream-server-socket gs :element-type element-type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-accept ((socket stream-server-usocket) &key element-type) Err bitreich.org 70 i- (with-slots (pending-connections) (socket socket) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- (process:process-block "Wait for connection" #'(lambda () Err bitreich.org 70 i- (not (null pending-connections)))) Err bitreich.org 70 i- (let ((tcb (pop pending-connections))) Err bitreich.org 70 i- (when tcb Err bitreich.org 70 i- (let* ((format (element-type-to-format (or element-type (element-type socket)) Err bitreich.org 70 i- :stream)) Err bitreich.org 70 i- (characters (eq format :text)) Err bitreich.org 70 i- (stream (tcp::make-tcp-stream tcb Err bitreich.org 70 i- :characters characters Err bitreich.org 70 i- :ascii-translation characters)) Err bitreich.org 70 i- (gs (make-instance 'genera-stream-socket Err bitreich.org 70 i- :stream stream))) Err bitreich.org 70 i- (setf (gs-foreign-address gs) (scl:send stream :foreign-address)) Err bitreich.org 70 i- (setf (gs-foreign-port gs) (scl:send stream :foreign-port)) Err bitreich.org 70 i- (setf (gs-local-address gs) (scl:send stream :local-address)) Err bitreich.org 70 i- (setf (gs-local-port gs) (scl:send stream :local-port)) Err bitreich.org 70 i- (return (make-stream-socket :socket gs :stream stream)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-address ((usocket usocket)) Err bitreich.org 70 i- (hbo-to-vector-quad (gs-local-address (socket usocket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-address ((usocket stream-usocket)) Err bitreich.org 70 i- (hbo-to-vector-quad (gs-foreign-address (socket usocket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-port ((usocket usocket)) Err bitreich.org 70 i- (gs-local-port (socket usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-port ((usocket stream-usocket)) Err bitreich.org 70 i- (gs-foreign-port (socket usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-name ((usocket usocket)) Err bitreich.org 70 i- (values (get-local-address usocket) Err bitreich.org 70 i- (get-local-port usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-name ((usocket stream-usocket)) Err bitreich.org 70 i- (values (get-peer-address usocket) Err bitreich.org 70 i- (get-peer-port usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-send ((usocket datagram-usocket) buffer size &key host port (offset 0)) Err bitreich.org 70 i- ;;---*** TODO Err bitreich.org 70 i- (unsupported 'datagram 'socket-send)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-receive ((socket datagram-usocket) buffer length &key) Err bitreich.org 70 i- ;;---*** TODO Err bitreich.org 70 i- (unsupported 'datagram 'socket-receive)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-host-by-address (address) Err bitreich.org 70 i- ) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-hosts-by-name (name) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (let ((host-object (host-to-host-object name))) Err bitreich.org 70 i- (loop for (network address) in (scl:send host-object :network-addresses) Err bitreich.org 70 i- when (typep network 'tcp:internet-network) Err bitreich.org 70 i- collect (hbo-to-vector-quad address))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %setup-wait-list (wait-list) Err bitreich.org 70 i- (declare (ignore wait-list))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %add-waiter (wait-list waiter) Err bitreich.org 70 i- (declare (ignore wait-list waiter))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %remove-waiter (wait-list waiter) Err bitreich.org 70 i- (declare (ignore wait-list waiter))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun wait-for-input-internal (wait-list &key timeout) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (process:process-block-with-timeout timeout "Wait for input" Err bitreich.org 70 i- #'(lambda (wait-list) Err bitreich.org 70 i- (let ((ready-sockets nil)) Err bitreich.org 70 i- (dolist (waiter (wait-list-waiters wait-list) ready-sockets) Err bitreich.org 70 i- (setf (state waiter) Err bitreich.org 70 i- (cond ((stream-usocket-p waiter) Err bitreich.org 70 i- (if (listen (socket-stream waiter)) Err bitreich.org 70 i- :read Err bitreich.org 70 i- nil)) Err bitreich.org 70 i- ((datagram-usocket-p waiter) Err bitreich.org 70 i- (let ((connection (gs-connection (socket waiter)))) Err bitreich.org 70 i- (if (and connection Err bitreich.org 70 i- (not (scl:send connection :connection-pending-p))) Err bitreich.org 70 i- :read Err bitreich.org 70 i- nil))) Err bitreich.org 70 i- ((stream-server-usocket-p waiter) Err bitreich.org 70 i- (if (gs-pending-connections (socket waiter)) Err bitreich.org 70 i- :read Err bitreich.org 70 i- nil)))) Err bitreich.org 70 i- (when (not (null (state waiter))) Err bitreich.org 70 i- (setf ready-sockets t))))) Err bitreich.org 70 i- wait-list) Err bitreich.org 70 i- wait-list)) Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/backend/lispworks.lisp b/3rdparties/software/usocket-0.7.1/backend/lispworks.lisp /scm/clic/file/3rdparties/software/usocket-0.7.1/backend/lispworks.lisp.gph bitreich.org 70 i@@ -1,986 +0,0 @@ Err bitreich.org 70 i-;;;; See LICENSE for licensing information. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :usocket) Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (require "comm") Err bitreich.org 70 i- Err bitreich.org 70 i- #+lispworks3 Err bitreich.org 70 i- (error "LispWorks 3 is not supported")) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; --------------------------------------------------------------------------- Err bitreich.org 70 i-;;; Warn if multiprocessing is not running on Lispworks Err bitreich.org 70 i- Err bitreich.org 70 i-(defun check-for-multiprocessing-started (&optional errorp) Err bitreich.org 70 i- (unless mp:*current-process* Err bitreich.org 70 i- (funcall (if errorp 'error 'warn) Err bitreich.org 70 i- "You must start multiprocessing on Lispworks by calling~ Err bitreich.org 70 i- ~%~3t(~s)~ Err bitreich.org 70 i- ~%for ~s function properly." Err bitreich.org 70 i- 'mp:initialize-multiprocessing Err bitreich.org 70 i- 'wait-for-input))) Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:load-toplevel :execute) Err bitreich.org 70 i- (check-for-multiprocessing-started)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+win32 Err bitreich.org 70 i-(eval-when (:load-toplevel :execute) Err bitreich.org 70 i- (fli:register-module "ws2_32")) Err bitreich.org 70 i- Err bitreich.org 70 i-(fli:define-foreign-function (get-host-name-internal "gethostname" :source) Err bitreich.org 70 i- ((return-string (:reference-return (:ef-mb-string :limit 257))) Err bitreich.org 70 i- (namelen :int)) Err bitreich.org 70 i- :lambda-list (&aux (namelen 256) return-string) Err bitreich.org 70 i- :result-type :int Err bitreich.org 70 i- #+win32 :module Err bitreich.org 70 i- #+win32 "ws2_32") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-host-name () Err bitreich.org 70 i- (multiple-value-bind (return-code name) Err bitreich.org 70 i- (get-host-name-internal) Err bitreich.org 70 i- (when (zerop return-code) Err bitreich.org 70 i- name))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+win32 Err bitreich.org 70 i-(defun remap-maybe-for-win32 (z) Err bitreich.org 70 i- (mapcar #'(lambda (x) Err bitreich.org 70 i- (cons (mapcar #'(lambda (y) (+ 10000 y)) (car x)) Err bitreich.org 70 i- (cdr x))) Err bitreich.org 70 i- z)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter +lispworks-error-map+ Err bitreich.org 70 i- #+win32 Err bitreich.org 70 i- (append (remap-maybe-for-win32 +unix-errno-condition-map+) Err bitreich.org 70 i- (remap-maybe-for-win32 +unix-errno-error-map+)) Err bitreich.org 70 i- #-win32 Err bitreich.org 70 i- (append +unix-errno-condition-map+ Err bitreich.org 70 i- +unix-errno-error-map+)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun raise-usock-err (errno socket &optional condition) Err bitreich.org 70 i- (let ((usock-err Err bitreich.org 70 i- (cdr (assoc errno +lispworks-error-map+ :test #'member)))) Err bitreich.org 70 i- (if usock-err Err bitreich.org 70 i- (if (subtypep usock-err 'error) Err bitreich.org 70 i- (error usock-err :socket socket) Err bitreich.org 70 i- (signal usock-err)) Err bitreich.org 70 i- (error 'unknown-error Err bitreich.org 70 i- :socket socket Err bitreich.org 70 i- :real-error condition Err bitreich.org 70 i- :errno errno)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun handle-condition (condition &optional (socket nil)) Err bitreich.org 70 i- "Dispatch correct usocket condition." Err bitreich.org 70 i- (typecase condition Err bitreich.org 70 i- (condition (let ((errno #-win32 (lw:errno-value) Err bitreich.org 70 i- #+win32 (wsa-get-last-error))) Err bitreich.org 70 i- (unless (zerop errno) Err bitreich.org 70 i- (raise-usock-err errno socket condition)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant *socket_sock_dgram* 2 Err bitreich.org 70 i- "Connectionless, unreliable datagrams of fixed maximum length.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant *socket_ip_proto_udp* 17) Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant *sockopt_so_rcvtimeo* Err bitreich.org 70 i- #-linux #x1006 Err bitreich.org 70 i- #+linux 20 Err bitreich.org 70 i- "Socket receive timeout") Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant *sockopt_so_sndtimeo* Err bitreich.org 70 i- #-linux #x1007 Err bitreich.org 70 i- #+linux 21 Err bitreich.org 70 i- "Socket send timeout") Err bitreich.org 70 i- Err bitreich.org 70 i-(fli:define-c-struct timeval Err bitreich.org 70 i- (tv-sec :long) Err bitreich.org 70 i- (tv-usec :long)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; ssize_t Err bitreich.org 70 i-;;; recvfrom(int socket, void *restrict buffer, size_t length, int flags, Err bitreich.org 70 i-;;; struct sockaddr *restrict address, socklen_t *restrict address_len); Err bitreich.org 70 i-(fli:define-foreign-function (%recvfrom "recvfrom" :source) Err bitreich.org 70 i- ((socket :int) Err bitreich.org 70 i- (buffer (:pointer (:unsigned :byte))) Err bitreich.org 70 i- (length :int) Err bitreich.org 70 i- (flags :int) Err bitreich.org 70 i- (address (:pointer (:struct comm::sockaddr))) Err bitreich.org 70 i- (address-len (:pointer :int))) Err bitreich.org 70 i- :result-type :int Err bitreich.org 70 i- #+win32 :module Err bitreich.org 70 i- #+win32 "ws2_32") Err bitreich.org 70 i- Err bitreich.org 70 i-;;; ssize_t Err bitreich.org 70 i-;;; sendto(int socket, const void *buffer, size_t length, int flags, Err bitreich.org 70 i-;;; const struct sockaddr *dest_addr, socklen_t dest_len); Err bitreich.org 70 i-(fli:define-foreign-function (%sendto "sendto" :source) Err bitreich.org 70 i- ((socket :int) Err bitreich.org 70 i- (buffer (:pointer (:unsigned :byte))) Err bitreich.org 70 i- (length :int) Err bitreich.org 70 i- (flags :int) Err bitreich.org 70 i- (address (:pointer (:struct comm::sockaddr))) Err bitreich.org 70 i- (address-len :int)) Err bitreich.org 70 i- :result-type :int Err bitreich.org 70 i- #+win32 :module Err bitreich.org 70 i- #+win32 "ws2_32") Err bitreich.org 70 i- Err bitreich.org 70 i-#-win32 Err bitreich.org 70 i-(defun set-socket-receive-timeout (socket-fd seconds) Err bitreich.org 70 i- "Set socket option: RCVTIMEO, argument seconds can be a float number" Err bitreich.org 70 i- (declare (type integer socket-fd) Err bitreich.org 70 i- (type number seconds)) Err bitreich.org 70 i- (multiple-value-bind (sec usec) (truncate seconds) Err bitreich.org 70 i- (fli:with-dynamic-foreign-objects ((timeout (:struct timeval))) Err bitreich.org 70 i- (fli:with-foreign-slots (tv-sec tv-usec) timeout Err bitreich.org 70 i- (setf tv-sec sec Err bitreich.org 70 i- tv-usec (truncate (* 1000000 usec))) Err bitreich.org 70 i- (if (zerop (comm::setsockopt socket-fd Err bitreich.org 70 i- comm::*sockopt_sol_socket* Err bitreich.org 70 i- *sockopt_so_rcvtimeo* Err bitreich.org 70 i- (fli:copy-pointer timeout Err bitreich.org 70 i- :type '(:pointer :void)) Err bitreich.org 70 i- (fli:size-of '(:struct timeval)))) Err bitreich.org 70 i- seconds))))) Err bitreich.org 70 i- Err bitreich.org 70 i-#-win32 Err bitreich.org 70 i-(defun set-socket-send-timeout (socket-fd seconds) Err bitreich.org 70 i- "Set socket option: SNDTIMEO, argument seconds can be a float number" Err bitreich.org 70 i- (declare (type integer socket-fd) Err bitreich.org 70 i- (type number seconds)) Err bitreich.org 70 i- (multiple-value-bind (sec usec) (truncate seconds) Err bitreich.org 70 i- (fli:with-dynamic-foreign-objects ((timeout (:struct timeval))) Err bitreich.org 70 i- (fli:with-foreign-slots (tv-sec tv-usec) timeout Err bitreich.org 70 i- (setf tv-sec sec Err bitreich.org 70 i- tv-usec (truncate (* 1000000 usec))) Err bitreich.org 70 i- (if (zerop (comm::setsockopt socket-fd Err bitreich.org 70 i- comm::*sockopt_sol_socket* Err bitreich.org 70 i- *sockopt_so_sndtimeo* Err bitreich.org 70 i- (fli:copy-pointer timeout Err bitreich.org 70 i- :type '(:pointer :void)) Err bitreich.org 70 i- (fli:size-of '(:struct timeval)))) Err bitreich.org 70 i- seconds))))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+win32 Err bitreich.org 70 i-(defun set-socket-receive-timeout (socket-fd seconds) Err bitreich.org 70 i- "Set socket option: RCVTIMEO, argument seconds can be a float number. Err bitreich.org 70 i- On win32, you must bind the socket before use this function." Err bitreich.org 70 i- (declare (type integer socket-fd) Err bitreich.org 70 i- (type number seconds)) Err bitreich.org 70 i- (fli:with-dynamic-foreign-objects ((timeout :int)) Err bitreich.org 70 i- (setf (fli:dereference timeout) Err bitreich.org 70 i- (truncate (* 1000 seconds))) Err bitreich.org 70 i- (if (zerop (comm::setsockopt socket-fd Err bitreich.org 70 i- comm::*sockopt_sol_socket* Err bitreich.org 70 i- *sockopt_so_rcvtimeo* Err bitreich.org 70 i- (fli:copy-pointer timeout Err bitreich.org 70 i- :type '(:pointer :char)) Err bitreich.org 70 i- (fli:size-of :int))) Err bitreich.org 70 i- seconds))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+win32 Err bitreich.org 70 i-(defun set-socket-send-timeout (socket-fd seconds) Err bitreich.org 70 i- "Set socket option: SNDTIMEO, argument seconds can be a float number. Err bitreich.org 70 i- On win32, you must bind the socket before use this function." Err bitreich.org 70 i- (declare (type integer socket-fd) Err bitreich.org 70 i- (type number seconds)) Err bitreich.org 70 i- (fli:with-dynamic-foreign-objects ((timeout :int)) Err bitreich.org 70 i- (setf (fli:dereference timeout) Err bitreich.org 70 i- (truncate (* 1000 seconds))) Err bitreich.org 70 i- (if (zerop (comm::setsockopt socket-fd Err bitreich.org 70 i- comm::*sockopt_sol_socket* Err bitreich.org 70 i- *sockopt_so_sndtimeo* Err bitreich.org 70 i- (fli:copy-pointer timeout Err bitreich.org 70 i- :type '(:pointer :char)) Err bitreich.org 70 i- (fli:size-of :int))) Err bitreich.org 70 i- seconds))) Err bitreich.org 70 i- Err bitreich.org 70 i-#-win32 Err bitreich.org 70 i-(defun get-socket-receive-timeout (socket-fd) Err bitreich.org 70 i- "Get socket option: RCVTIMEO, return value is a float number" Err bitreich.org 70 i- (declare (type integer socket-fd)) Err bitreich.org 70 i- (fli:with-dynamic-foreign-objects ((timeout (:struct timeval)) Err bitreich.org 70 i- (len :int)) Err bitreich.org 70 i- (comm::getsockopt socket-fd Err bitreich.org 70 i- comm::*sockopt_sol_socket* Err bitreich.org 70 i- *sockopt_so_rcvtimeo* Err bitreich.org 70 i- (fli:copy-pointer timeout Err bitreich.org 70 i- :type '(:pointer :void)) Err bitreich.org 70 i- len) Err bitreich.org 70 i- (fli:with-foreign-slots (tv-sec tv-usec) timeout Err bitreich.org 70 i- (float (+ tv-sec (/ tv-usec 1000000)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-#-win32 Err bitreich.org 70 i-(defun get-socket-send-timeout (socket-fd) Err bitreich.org 70 i- "Get socket option: SNDTIMEO, return value is a float number" Err bitreich.org 70 i- (declare (type integer socket-fd)) Err bitreich.org 70 i- (fli:with-dynamic-foreign-objects ((timeout (:struct timeval)) Err bitreich.org 70 i- (len :int)) Err bitreich.org 70 i- (comm::getsockopt socket-fd Err bitreich.org 70 i- comm::*sockopt_sol_socket* Err bitreich.org 70 i- *sockopt_so_sndtimeo* Err bitreich.org 70 i- (fli:copy-pointer timeout Err bitreich.org 70 i- :type '(:pointer :void)) Err bitreich.org 70 i- len) Err bitreich.org 70 i- (fli:with-foreign-slots (tv-sec tv-usec) timeout Err bitreich.org 70 i- (float (+ tv-sec (/ tv-usec 1000000)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+win32 Err bitreich.org 70 i-(defun get-socket-receive-timeout (socket-fd) Err bitreich.org 70 i- "Get socket option: RCVTIMEO, return value is a float number" Err bitreich.org 70 i- (declare (type integer socket-fd)) Err bitreich.org 70 i- (fli:with-dynamic-foreign-objects ((timeout :int) Err bitreich.org 70 i- (len :int)) Err bitreich.org 70 i- (comm::getsockopt socket-fd Err bitreich.org 70 i- comm::*sockopt_sol_socket* Err bitreich.org 70 i- *sockopt_so_rcvtimeo* Err bitreich.org 70 i- (fli:copy-pointer timeout Err bitreich.org 70 i- :type '(:pointer :void)) Err bitreich.org 70 i- len) Err bitreich.org 70 i- (float (/ (fli:dereference timeout) 1000)))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+win32 Err bitreich.org 70 i-(defun get-socket-send-timeout (socket-fd) Err bitreich.org 70 i- "Get socket option: SNDTIMEO, return value is a float number" Err bitreich.org 70 i- (declare (type integer socket-fd)) Err bitreich.org 70 i- (fli:with-dynamic-foreign-objects ((timeout :int) Err bitreich.org 70 i- (len :int)) Err bitreich.org 70 i- (comm::getsockopt socket-fd Err bitreich.org 70 i- comm::*sockopt_sol_socket* Err bitreich.org 70 i- *sockopt_so_sndtimeo* Err bitreich.org 70 i- (fli:copy-pointer timeout Err bitreich.org 70 i- :type '(:pointer :void)) Err bitreich.org 70 i- len) Err bitreich.org 70 i- (float (/ (fli:dereference timeout) 1000)))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(or lispworks4 lispworks5.0) Err bitreich.org 70 i-(defun set-socket-tcp-nodelay (socket-fd new-value) Err bitreich.org 70 i- "Set socket option: TCP_NODELAY, argument is a fixnum (0 or 1)" Err bitreich.org 70 i- (declare (type integer socket-fd) Err bitreich.org 70 i- (type (integer 0 1) new-value)) Err bitreich.org 70 i- (fli:with-dynamic-foreign-objects ((zero-or-one :int)) Err bitreich.org 70 i- (setf (fli:dereference zero-or-one) new-value) Err bitreich.org 70 i- (when (zerop (comm::setsockopt socket-fd Err bitreich.org 70 i- comm::*sockopt_sol_socket* Err bitreich.org 70 i- comm::*sockopt_tcp_nodelay* Err bitreich.org 70 i- (fli:copy-pointer zero-or-one Err bitreich.org 70 i- :type '(:pointer #+win32 :char #-win32 :void)) Err bitreich.org 70 i- (fli:size-of :int))) Err bitreich.org 70 i- new-value))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-socket-tcp-nodelay (socket-fd) Err bitreich.org 70 i- "Get socket option: TCP_NODELAY, return value is a fixnum (0 or 1)" Err bitreich.org 70 i- (declare (type integer socket-fd)) Err bitreich.org 70 i- (fli:with-dynamic-foreign-objects ((zero-or-one :int) Err bitreich.org 70 i- (len :int)) Err bitreich.org 70 i- (if (zerop (comm::getsockopt socket-fd Err bitreich.org 70 i- comm::*sockopt_sol_socket* Err bitreich.org 70 i- comm::*sockopt_tcp_nodelay* Err bitreich.org 70 i- (fli:copy-pointer zero-or-one Err bitreich.org 70 i- :type '(:pointer #+win32 :char #-win32 :void)) Err bitreich.org 70 i- len)) Err bitreich.org 70 i- zero-or-one 0))) ; on error, return 0 Err bitreich.org 70 i- Err bitreich.org 70 i-(defun initialize-dynamic-sockaddr (hostname service protocol &aux (original-hostname hostname)) Err bitreich.org 70 i- (declare (ignorable original-hostname)) Err bitreich.org 70 i- #+(or lispworks4 lispworks5 lispworks6.0) Err bitreich.org 70 i- (let ((server-addr (fli:allocate-dynamic-foreign-object Err bitreich.org 70 i- :type '(:struct comm::sockaddr_in)))) Err bitreich.org 70 i- (values (comm::initialize-sockaddr_in Err bitreich.org 70 i- server-addr Err bitreich.org 70 i- comm::*socket_af_inet* Err bitreich.org 70 i- hostname Err bitreich.org 70 i- service protocol) Err bitreich.org 70 i- comm::*socket_af_inet* Err bitreich.org 70 i- server-addr Err bitreich.org 70 i- (fli:pointer-element-size server-addr))) Err bitreich.org 70 i- #-(or lispworks4 lispworks5 lispworks6.0) ; version>=6.1 Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (when (stringp hostname) Err bitreich.org 70 i- (setq hostname (comm:string-ip-address hostname)) Err bitreich.org 70 i- (unless hostname Err bitreich.org 70 i- (let ((resolved-hostname (comm:get-host-entry original-hostname :fields '(:address)))) Err bitreich.org 70 i- (unless resolved-hostname Err bitreich.org 70 i- (return-from initialize-dynamic-sockaddr :unknown-host)) Err bitreich.org 70 i- (setq hostname resolved-hostname)))) Err bitreich.org 70 i- (if (or (null hostname) Err bitreich.org 70 i- (integerp hostname) Err bitreich.org 70 i- (comm:ipv6-address-p hostname)) Err bitreich.org 70 i- (let ((server-addr (fli:allocate-dynamic-foreign-object Err bitreich.org 70 i- :type '(:struct comm::lw-sockaddr)))) Err bitreich.org 70 i- (multiple-value-bind (error family) Err bitreich.org 70 i- (comm::initialize-sockaddr_in Err bitreich.org 70 i- server-addr Err bitreich.org 70 i- hostname Err bitreich.org 70 i- service protocol) Err bitreich.org 70 i- (values error family Err bitreich.org 70 i- server-addr Err bitreich.org 70 i- (if (eql family comm::*socket_af_inet*) Err bitreich.org 70 i- (fli:size-of '(:struct comm::sockaddr_in)) Err bitreich.org 70 i- (fli:size-of '(:struct comm::sockaddr_in6)))))) Err bitreich.org 70 i- :bad-host))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun open-udp-socket (&key local-address local-port read-timeout Err bitreich.org 70 i- (address-family comm::*socket_af_inet*)) Err bitreich.org 70 i- "Open a unconnected UDP socket. Err bitreich.org 70 i- For binding on address ANY(*), just not set LOCAL-ADDRESS (NIL), Err bitreich.org 70 i- for binding on random free unused port, set LOCAL-PORT to 0." Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Note: move (ensure-sockets) here to make sure delivered applications Err bitreich.org 70 i- ;; correctly have networking support initialized. Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; Following words was from Martin Simmons, forwarded by Camille Troillard: Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Calling comm::ensure-sockets at load time looks like a bug in Lispworks-udp Err bitreich.org 70 i- ;; (it is too early and also unnecessary). Err bitreich.org 70 i- Err bitreich.org 70 i- ;; The LispWorks comm package calls comm::ensure-sockets when it is needed, so I Err bitreich.org 70 i- ;; think open-udp-socket should probably do it too. Calling it more than once is Err bitreich.org 70 i- ;; safe and it will be very fast after the first time. Err bitreich.org 70 i- #+win32 (comm::ensure-sockets) Err bitreich.org 70 i- Err bitreich.org 70 i- (let ((socket-fd (comm::socket address-family *socket_sock_dgram* *socket_ip_proto_udp*))) Err bitreich.org 70 i- (if socket-fd Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (when read-timeout (set-socket-receive-timeout socket-fd read-timeout)) Err bitreich.org 70 i- (if local-port Err bitreich.org 70 i- (fli:with-dynamic-foreign-objects () Err bitreich.org 70 i- (multiple-value-bind (error local-address-family Err bitreich.org 70 i- client-addr client-addr-length) Err bitreich.org 70 i- (initialize-dynamic-sockaddr local-address local-port "udp") Err bitreich.org 70 i- (if (or error (not (eql address-family local-address-family))) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (comm::close-socket socket-fd) Err bitreich.org 70 i- (error "cannot resolve hostname ~S, service ~S: ~A" Err bitreich.org 70 i- local-address local-port (or error "address family mismatch"))) Err bitreich.org 70 i- (if (comm::bind socket-fd client-addr client-addr-length) Err bitreich.org 70 i- ;; success, return socket fd Err bitreich.org 70 i- socket-fd Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (comm::close-socket socket-fd) Err bitreich.org 70 i- (error "cannot bind")))))) Err bitreich.org 70 i- socket-fd)) Err bitreich.org 70 i- (error "cannot create socket")))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun connect-to-udp-server (hostname service Err bitreich.org 70 i- &key local-address local-port read-timeout) Err bitreich.org 70 i- "Something like CONNECT-TO-TCP-SERVER" Err bitreich.org 70 i- (fli:with-dynamic-foreign-objects () Err bitreich.org 70 i- (multiple-value-bind (error address-family server-addr server-addr-length) Err bitreich.org 70 i- (initialize-dynamic-sockaddr hostname service "udp") Err bitreich.org 70 i- (when error Err bitreich.org 70 i- (error "cannot resolve hostname ~S, service ~S: ~A" Err bitreich.org 70 i- hostname service error)) Err bitreich.org 70 i- (let ((socket-fd (open-udp-socket :local-address local-address Err bitreich.org 70 i- :local-port local-port Err bitreich.org 70 i- :read-timeout read-timeout Err bitreich.org 70 i- :address-family address-family))) Err bitreich.org 70 i- (if socket-fd Err bitreich.org 70 i- (if (comm::connect socket-fd server-addr server-addr-length) Err bitreich.org 70 i- ;; success, return socket fd Err bitreich.org 70 i- socket-fd Err bitreich.org 70 i- ;; fail, close socket and return nil Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (comm::close-socket socket-fd) Err bitreich.org 70 i- (error "cannot connect"))) Err bitreich.org 70 i- (error "cannot create socket")))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun socket-connect (host port &key (protocol :stream) (element-type 'base-char) Err bitreich.org 70 i- timeout deadline (nodelay t) Err bitreich.org 70 i- local-host local-port) Err bitreich.org 70 i- ;; What's the meaning of this keyword? Err bitreich.org 70 i- (when deadline Err bitreich.org 70 i- (unimplemented 'deadline 'socket-connect)) Err bitreich.org 70 i- Err bitreich.org 70 i- #+(and lispworks4 (not lispworks4.4)) ; < 4.4.5 Err bitreich.org 70 i- (when timeout Err bitreich.org 70 i- (unsupported 'timeout 'socket-connect :minimum "LispWorks 4.4.5")) Err bitreich.org 70 i- Err bitreich.org 70 i- #+lispworks4 Err bitreich.org 70 i- (when local-host Err bitreich.org 70 i- (unsupported 'local-host 'socket-connect :minimum "LispWorks 5.0")) Err bitreich.org 70 i- #+lispworks4 Err bitreich.org 70 i- (when local-port Err bitreich.org 70 i- (unsupported 'local-port 'socket-connect :minimum "LispWorks 5.0")) Err bitreich.org 70 i- Err bitreich.org 70 i- (ecase protocol Err bitreich.org 70 i- (:stream Err bitreich.org 70 i- (let ((hostname (host-to-hostname host)) Err bitreich.org 70 i- (stream)) Err bitreich.org 70 i- (setq stream Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (comm:open-tcp-stream hostname port Err bitreich.org 70 i- :element-type element-type Err bitreich.org 70 i- #-(and lispworks4 (not lispworks4.4)) ; >= 4.4.5 Err bitreich.org 70 i- #-(and lispworks4 (not lispworks4.4)) Err bitreich.org 70 i- :timeout timeout Err bitreich.org 70 i- #-lispworks4 #-lispworks4 Err bitreich.org 70 i- #-lispworks4 #-lispworks4 Err bitreich.org 70 i- :local-address (when local-host (host-to-hostname local-host)) Err bitreich.org 70 i- :local-port local-port Err bitreich.org 70 i- #-(or lispworks4 lispworks5.0) ; >= 5.1 Err bitreich.org 70 i- #-(or lispworks4 lispworks5.0) Err bitreich.org 70 i- :nodelay nodelay))) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Then handle `nodelay' separately for older versions <= 5.0 Err bitreich.org 70 i- #+(or lispworks4 lispworks5.0) Err bitreich.org 70 i- (when (and stream nodelay) Err bitreich.org 70 i- (set-socket-tcp-nodelay Err bitreich.org 70 i- (comm:socket-stream-socket stream) Err bitreich.org 70 i- (bool->int nodelay))) ; ":if-supported" maps to 1 too. Err bitreich.org 70 i- Err bitreich.org 70 i- (if stream Err bitreich.org 70 i- (make-stream-socket :socket (comm:socket-stream-socket stream) Err bitreich.org 70 i- :stream stream) Err bitreich.org 70 i- ;; if no other error catched by above with-mapped-conditions and still fails, then it's a timeout Err bitreich.org 70 i- (error 'timeout-error)))) Err bitreich.org 70 i- (:datagram Err bitreich.org 70 i- (let ((usocket (make-datagram-socket Err bitreich.org 70 i- (if (and host port) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (connect-to-udp-server (host-to-hostname host) port Err bitreich.org 70 i- :local-address (and local-host (host-to-hostname local-host)) Err bitreich.org 70 i- :local-port local-port Err bitreich.org 70 i- :read-timeout timeout)) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (open-udp-socket :local-address (and local-host (host-to-hostname local-host)) Err bitreich.org 70 i- :local-port local-port Err bitreich.org 70 i- :read-timeout timeout))) Err bitreich.org 70 i- :connected-p (and host port t)))) Err bitreich.org 70 i- usocket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun socket-listen (host port Err bitreich.org 70 i- &key reuseaddress Err bitreich.org 70 i- (reuse-address nil reuse-address-supplied-p) Err bitreich.org 70 i- (backlog 5) Err bitreich.org 70 i- (element-type 'base-char)) Err bitreich.org 70 i- #+lispworks4.1 Err bitreich.org 70 i- (unsupported 'host 'socket-listen :minimum "LispWorks 4.0 or newer than 4.1") Err bitreich.org 70 i- #+lispworks4.1 Err bitreich.org 70 i- (unsupported 'backlog 'socket-listen :minimum "LispWorks 4.0 or newer than 4.1") Err bitreich.org 70 i- Err bitreich.org 70 i- (let* ((reuseaddress (if reuse-address-supplied-p reuse-address reuseaddress)) Err bitreich.org 70 i- (comm::*use_so_reuseaddr* reuseaddress) Err bitreich.org 70 i- (hostname (host-to-hostname host)) Err bitreich.org 70 i- (socket-res-list (with-mapped-conditions () Err bitreich.org 70 i- (multiple-value-list Err bitreich.org 70 i- #-lispworks4.1 (comm::create-tcp-socket-for-service Err bitreich.org 70 i- port :address hostname :backlog backlog) Err bitreich.org 70 i- #+lispworks4.1 (comm::create-tcp-socket-for-service port)))) Err bitreich.org 70 i- (sock (if (not (or (second socket-res-list) (third socket-res-list))) Err bitreich.org 70 i- (first socket-res-list) Err bitreich.org 70 i- (when (eq (second socket-res-list) :bind) Err bitreich.org 70 i- (error 'address-in-use-error))))) Err bitreich.org 70 i- (make-stream-server-socket sock :element-type element-type))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Note: COMM::GET-FD-FROM-SOCKET contains addition socket wait operations, which Err bitreich.org 70 i-;; should NOT be applied on socket FDs who have already been called on W-F-I, Err bitreich.org 70 i-;; so we have to check the %READY-P slot to decide if this waiting is necessary, Err bitreich.org 70 i-;; or SOCKET-ACCEPT will just hang. -- Chun Tian (binghe), May 1, 2011 Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-accept ((usocket stream-server-usocket) &key element-type) Err bitreich.org 70 i- (let* ((socket (with-mapped-conditions (usocket) Err bitreich.org 70 i- #+win32 Err bitreich.org 70 i- (if (%ready-p usocket) Err bitreich.org 70 i- (comm::accept-connection-to-socket (socket usocket)) Err bitreich.org 70 i- (comm::get-fd-from-socket (socket usocket))) Err bitreich.org 70 i- #-win32 Err bitreich.org 70 i- (comm::get-fd-from-socket (socket usocket)))) Err bitreich.org 70 i- (stream (make-instance 'comm:socket-stream Err bitreich.org 70 i- :socket socket Err bitreich.org 70 i- :direction :io Err bitreich.org 70 i- :element-type (or element-type Err bitreich.org 70 i- (element-type usocket))))) Err bitreich.org 70 i- #+win32 Err bitreich.org 70 i- (when socket Err bitreich.org 70 i- (setf (%ready-p usocket) nil)) Err bitreich.org 70 i- (make-stream-socket :socket socket :stream stream))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Sockets and their streams are different objects Err bitreich.org 70 i-;; close the stream in order to make sure buffers Err bitreich.org 70 i-;; are correctly flushed and the socket closed. Err bitreich.org 70 i-(defmethod socket-close ((usocket stream-usocket)) Err bitreich.org 70 i- "Close socket." Err bitreich.org 70 i- (when (wait-list usocket) Err bitreich.org 70 i- (remove-waiter (wait-list usocket) usocket)) Err bitreich.org 70 i- (close (socket-stream usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-close ((usocket usocket)) Err bitreich.org 70 i- (when (wait-list usocket) Err bitreich.org 70 i- (remove-waiter (wait-list usocket) usocket)) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (comm::close-socket (socket usocket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-close :after ((socket datagram-usocket)) Err bitreich.org 70 i- "Additional socket-close method for datagram-usocket" Err bitreich.org 70 i- (setf (%open-p socket) nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +shutdown-read+ 0) Err bitreich.org 70 i-(defconstant +shutdown-write+ 1) Err bitreich.org 70 i-(defconstant +shutdown-read-write+ 2) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; int Err bitreich.org 70 i-;;; shutdown(int socket, int what); Err bitreich.org 70 i-(fli:define-foreign-function (%shutdown "shutdown" :source) Err bitreich.org 70 i- ((socket :int) Err bitreich.org 70 i- (what :int)) Err bitreich.org 70 i- :result-type :int Err bitreich.org 70 i- #+win32 :module Err bitreich.org 70 i- #+win32 "ws2_32") Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-shutdown ((usocket datagram-usocket) direction) Err bitreich.org 70 i- (unless (member direction '(:input :output :io)) Err bitreich.org 70 i- (error 'invalid-argument-error)) Err bitreich.org 70 i- (let ((what (case direction Err bitreich.org 70 i- (:input +shutdown-read+) Err bitreich.org 70 i- (:output +shutdown-write+) Err bitreich.org 70 i- (:io +shutdown-read-write+)))) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- #-(or lispworks4 lispworks5 lispworks6) ; lispworks 7.0+ Err bitreich.org 70 i- (comm::shutdown (socket usocket) what) Err bitreich.org 70 i- #+(or lispworks4 lispworks5 lispworks6) Err bitreich.org 70 i- (= 0 (%shutdown (socket usocket) what))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-shutdown ((usocket stream-usocket) direction) Err bitreich.org 70 i- (unless (member direction '(:input :output :io)) Err bitreich.org 70 i- (error 'invalid-argument-error)) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- #-(or lispworks4 lispworks5 lispworks6) Err bitreich.org 70 i- (comm:socket-stream-shutdown (socket usocket) direction) Err bitreich.org 70 i- #+(or lispworks4 lispworks5 lispworks6) Err bitreich.org 70 i- (let ((what (case direction Err bitreich.org 70 i- (:input +shutdown-read+) Err bitreich.org 70 i- (:output +shutdown-write+) Err bitreich.org 70 i- (:io +shutdown-read-write+)))) Err bitreich.org 70 i- (= 0 (%shutdown (comm:socket-stream-socket (socket usocket)) what))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod initialize-instance :after ((socket datagram-usocket) &key) Err bitreich.org 70 i- (setf (slot-value socket 'send-buffer) Err bitreich.org 70 i- (make-array +max-datagram-packet-size+ Err bitreich.org 70 i- :element-type '(unsigned-byte 8) Err bitreich.org 70 i- :allocation :static)) Err bitreich.org 70 i- (setf (slot-value socket 'recv-buffer) Err bitreich.org 70 i- (make-array +max-datagram-packet-size+ Err bitreich.org 70 i- :element-type '(unsigned-byte 8) Err bitreich.org 70 i- :allocation :static))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *length-of-sockaddr_in* Err bitreich.org 70 i- (fli:size-of '(:struct comm::sockaddr_in))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-send ((usocket datagram-usocket) buffer size &key host port (offset 0) Err bitreich.org 70 i- &aux (socket-fd (socket usocket)) Err bitreich.org 70 i- (message (slot-value usocket 'send-buffer))) ; TODO: multiple threads send together? Err bitreich.org 70 i- "Send message to a socket, using sendto()/send()" Err bitreich.org 70 i- (declare (type integer socket-fd) Err bitreich.org 70 i- (type sequence buffer)) Err bitreich.org 70 i- (when host (setq host (host-to-hostname host))) Err bitreich.org 70 i- (fli:with-dynamic-lisp-array-pointer (ptr message :type '(:unsigned :byte)) Err bitreich.org 70 i- (replace message buffer :start2 offset :end2 (+ offset size)) Err bitreich.org 70 i- (let ((n (if (and host port) Err bitreich.org 70 i- (fli:with-dynamic-foreign-objects () Err bitreich.org 70 i- (multiple-value-bind (error family client-addr client-addr-length) Err bitreich.org 70 i- (initialize-dynamic-sockaddr host port "udp") Err bitreich.org 70 i- (declare (ignore family)) Err bitreich.org 70 i- (when error Err bitreich.org 70 i- (error "cannot resolve hostname ~S, port ~S: ~A" Err bitreich.org 70 i- host port error)) Err bitreich.org 70 i- (%sendto socket-fd ptr (min size +max-datagram-packet-size+) 0 Err bitreich.org 70 i- (fli:copy-pointer client-addr :type '(:struct comm::sockaddr)) Err bitreich.org 70 i- client-addr-length))) Err bitreich.org 70 i- (comm::%send socket-fd ptr (min size +max-datagram-packet-size+) 0)))) Err bitreich.org 70 i- (declare (type fixnum n)) Err bitreich.org 70 i- (if (plusp n) Err bitreich.org 70 i- n Err bitreich.org 70 i- (let ((errno #-win32 (lw:errno-value) Err bitreich.org 70 i- #+win32 (wsa-get-last-error))) Err bitreich.org 70 i- (if (zerop errno) Err bitreich.org 70 i- n Err bitreich.org 70 i- (raise-usock-err errno socket-fd))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-receive ((socket datagram-usocket) buffer length &key timeout (max-buffer-size +max-datagram-packet-size+)) Err bitreich.org 70 i- "Receive message from socket, read-timeout is a float number in seconds. Err bitreich.org 70 i- Err bitreich.org 70 i- This function will return 4 values: Err bitreich.org 70 i- 1. receive buffer Err bitreich.org 70 i- 2. number of receive bytes Err bitreich.org 70 i- 3. remote address Err bitreich.org 70 i- 4. remote port" Err bitreich.org 70 i- (declare (values (simple-array (unsigned-byte 8) (*)) ; buffer Err bitreich.org 70 i- (integer 0) ; size Err bitreich.org 70 i- (unsigned-byte 32) ; host Err bitreich.org 70 i- (unsigned-byte 16)) ; port Err bitreich.org 70 i- (type sequence buffer)) Err bitreich.org 70 i- (let ((socket-fd (socket socket)) Err bitreich.org 70 i- (message (slot-value socket 'recv-buffer)) ; TODO: how multiple threads do this in parallel? Err bitreich.org 70 i- (read-timeout timeout) Err bitreich.org 70 i- old-timeout) Err bitreich.org 70 i- (declare (type integer socket-fd)) Err bitreich.org 70 i- (fli:with-dynamic-foreign-objects ((client-addr (:struct comm::sockaddr_in)) Err bitreich.org 70 i- (len :int Err bitreich.org 70 i- #-(or lispworks4 lispworks5.0) ; <= 5.0 Err bitreich.org 70 i- :initial-element *length-of-sockaddr_in*)) Err bitreich.org 70 i- #+(or lispworks4 lispworks5.0) ; <= 5.0 Err bitreich.org 70 i- (setf (fli:dereference len) *length-of-sockaddr_in*) Err bitreich.org 70 i- (fli:with-dynamic-lisp-array-pointer (ptr message :type '(:unsigned :byte)) Err bitreich.org 70 i- ;; setup new read timeout Err bitreich.org 70 i- (when read-timeout Err bitreich.org 70 i- (setf old-timeout (get-socket-receive-timeout socket-fd)) Err bitreich.org 70 i- (set-socket-receive-timeout socket-fd read-timeout)) Err bitreich.org 70 i- (let ((n (%recvfrom socket-fd ptr max-buffer-size 0 Err bitreich.org 70 i- (fli:copy-pointer client-addr :type '(:struct comm::sockaddr)) Err bitreich.org 70 i- len))) Err bitreich.org 70 i- (declare (type fixnum n)) Err bitreich.org 70 i- ;; restore old read timeout Err bitreich.org 70 i- (when (and read-timeout (/= old-timeout read-timeout)) Err bitreich.org 70 i- (set-socket-receive-timeout socket-fd old-timeout)) Err bitreich.org 70 i- ;; Frank James' patch: reset the %read-p for WAIT-FOR-INPUT Err bitreich.org 70 i- #+win32 (setf (%ready-p socket) nil) Err bitreich.org 70 i- (if (plusp n) Err bitreich.org 70 i- (values (if buffer Err bitreich.org 70 i- (replace buffer message Err bitreich.org 70 i- :end1 (min length max-buffer-size) Err bitreich.org 70 i- :end2 (min n max-buffer-size)) Err bitreich.org 70 i- (subseq message 0 (min n max-buffer-size))) Err bitreich.org 70 i- (min n max-buffer-size) Err bitreich.org 70 i- (comm::ntohl (fli:foreign-slot-value Err bitreich.org 70 i- (fli:foreign-slot-value client-addr Err bitreich.org 70 i- 'comm::sin_addr Err bitreich.org 70 i- :object-type '(:struct comm::sockaddr_in) Err bitreich.org 70 i- :type '(:struct comm::in_addr) Err bitreich.org 70 i- :copy-foreign-object nil) Err bitreich.org 70 i- 'comm::s_addr Err bitreich.org 70 i- :object-type '(:struct comm::in_addr))) Err bitreich.org 70 i- (comm::ntohs (fli:foreign-slot-value client-addr Err bitreich.org 70 i- 'comm::sin_port Err bitreich.org 70 i- :object-type '(:struct comm::sockaddr_in) Err bitreich.org 70 i- :type '(:unsigned :short) Err bitreich.org 70 i- :copy-foreign-object nil))) Err bitreich.org 70 i- (let ((errno #-win32 (lw:errno-value) Err bitreich.org 70 i- #+win32 (wsa-get-last-error))) Err bitreich.org 70 i- (if (zerop errno) Err bitreich.org 70 i- (values nil n 0 0) Err bitreich.org 70 i- (raise-usock-err errno socket-fd))))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-name ((usocket usocket)) Err bitreich.org 70 i- (multiple-value-bind Err bitreich.org 70 i- (address port) Err bitreich.org 70 i- (comm:get-socket-address (socket usocket)) Err bitreich.org 70 i- (values (hbo-to-vector-quad address) port))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-name ((usocket stream-usocket)) Err bitreich.org 70 i- (multiple-value-bind Err bitreich.org 70 i- (address port) Err bitreich.org 70 i- (comm:get-socket-peer-address (socket usocket)) Err bitreich.org 70 i- (values (hbo-to-vector-quad address) port))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-address ((usocket usocket)) Err bitreich.org 70 i- (nth-value 0 (get-local-name usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-address ((usocket stream-usocket)) Err bitreich.org 70 i- (nth-value 0 (get-peer-name usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-port ((usocket usocket)) Err bitreich.org 70 i- (nth-value 1 (get-local-name usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-port ((usocket stream-usocket)) Err bitreich.org 70 i- (nth-value 1 (get-peer-name usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-#-(or lispworks4 lispworks5 lispworks6.0) ; version>= 6.1 Err bitreich.org 70 i-(defun ipv6-address-p (hostname) Err bitreich.org 70 i- (when (stringp hostname) Err bitreich.org 70 i- (setq hostname (comm:string-ip-address hostname)) Err bitreich.org 70 i- (unless hostname Err bitreich.org 70 i- (let ((resolved-hostname (comm:get-host-entry hostname :fields '(:address)))) Err bitreich.org 70 i- (unless resolved-hostname Err bitreich.org 70 i- (return-from ipv6-address-p nil)) Err bitreich.org 70 i- (setq hostname resolved-hostname)))) Err bitreich.org 70 i- (comm:ipv6-address-p hostname)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun lw-hbo-to-vector-quad (hbo) Err bitreich.org 70 i- #+(or lispworks4 lispworks5 lispworks6.0) Err bitreich.org 70 i- (hbo-to-vector-quad hbo) Err bitreich.org 70 i- #-(or lispworks4 lispworks5 lispworks6.0) ; version>= 6.1 Err bitreich.org 70 i- (if (comm:ipv6-address-p hbo) Err bitreich.org 70 i- (ipv6-host-to-vector (comm:ipv6-address-string hbo)) Err bitreich.org 70 i- (hbo-to-vector-quad hbo))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-hosts-by-name (name) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (mapcar #'lw-hbo-to-vector-quad Err bitreich.org 70 i- (comm:get-host-entry name :fields '(:addresses))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun os-socket-handle (usocket) Err bitreich.org 70 i- (socket usocket)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun usocket-listen (usocket) Err bitreich.org 70 i- (if (stream-usocket-p usocket) Err bitreich.org 70 i- (when (listen (socket-stream usocket)) Err bitreich.org 70 i- usocket) Err bitreich.org 70 i- (when (comm::socket-listen (socket usocket)) Err bitreich.org 70 i- usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; Non Windows implementation Err bitreich.org 70 i-;;; The Windows implementation needs to resort to the Windows API in order Err bitreich.org 70 i-;;; to achieve what we want (what we want is waiting without busy-looping) Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i-#-win32 Err bitreich.org 70 i-(progn Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %setup-wait-list (wait-list) Err bitreich.org 70 i- (declare (ignore wait-list))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %add-waiter (wait-list waiter) Err bitreich.org 70 i- (declare (ignore wait-list waiter))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %remove-waiter (wait-list waiter) Err bitreich.org 70 i- (declare (ignore wait-list waiter))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun wait-for-input-internal (wait-list &key timeout) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- ;; unfortunately, it's impossible to share code between Err bitreich.org 70 i- ;; non-win32 and win32 platforms... Err bitreich.org 70 i- ;; Can we have a sane -pref. complete [UDP!?]- API next time, please? Err bitreich.org 70 i- (dolist (x (wait-list-waiters wait-list)) Err bitreich.org 70 i- (mp:notice-fd (os-socket-handle x))) Err bitreich.org 70 i- (labels ((wait-function (socks) Err bitreich.org 70 i- (let (rv) Err bitreich.org 70 i- (dolist (x socks rv) Err bitreich.org 70 i- (when (usocket-listen x) Err bitreich.org 70 i- (setf (state x) :READ Err bitreich.org 70 i- rv t)))))) Err bitreich.org 70 i- (if timeout Err bitreich.org 70 i- (mp:process-wait-with-timeout "Waiting for a socket to become active" Err bitreich.org 70 i- (truncate timeout) Err bitreich.org 70 i- #'wait-function Err bitreich.org 70 i- (wait-list-waiters wait-list)) Err bitreich.org 70 i- (mp:process-wait "Waiting for a socket to become active" Err bitreich.org 70 i- #'wait-function Err bitreich.org 70 i- (wait-list-waiters wait-list)))) Err bitreich.org 70 i- (dolist (x (wait-list-waiters wait-list)) Err bitreich.org 70 i- (mp:unnotice-fd (os-socket-handle x))) Err bitreich.org 70 i- wait-list)) Err bitreich.org 70 i- Err bitreich.org 70 i-) ; end of block Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; The Windows side of the story Err bitreich.org 70 i-;;; We want to wait without busy looping Err bitreich.org 70 i-;;; This code only works in threads which don't have (hidden) Err bitreich.org 70 i-;;; windows which need to receive messages. There are workarounds in the Windows API Err bitreich.org 70 i-;;; but are those available to 'us'. Err bitreich.org 70 i-;;; Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-#+win32 Err bitreich.org 70 i-(progn Err bitreich.org 70 i- Err bitreich.org 70 i- ;; LispWorks doesn't provide an interface to wait for a socket Err bitreich.org 70 i- ;; to become ready (under Win32, that is) meaning that we need Err bitreich.org 70 i- ;; to resort to system calls to achieve the same thing. Err bitreich.org 70 i- ;; Luckily, it provides us access to the raw socket handles (as we Err bitreich.org 70 i- ;; wrote the code above. Err bitreich.org 70 i- Err bitreich.org 70 i- (defconstant fd-read 1) Err bitreich.org 70 i- (defconstant fd-read-bit 0) Err bitreich.org 70 i- (defconstant fd-write 2) Err bitreich.org 70 i- (defconstant fd-write-bit 1) Err bitreich.org 70 i- (defconstant fd-oob 4) Err bitreich.org 70 i- (defconstant fd-oob-bit 2) Err bitreich.org 70 i- (defconstant fd-accept 8) Err bitreich.org 70 i- (defconstant fd-accept-bit 3) Err bitreich.org 70 i- (defconstant fd-connect 16) Err bitreich.org 70 i- (defconstant fd-connect-bit 4) Err bitreich.org 70 i- (defconstant fd-close 32) Err bitreich.org 70 i- (defconstant fd-close-bit 5) Err bitreich.org 70 i- (defconstant fd-qos 64) Err bitreich.org 70 i- (defconstant fd-qos-bit 6) Err bitreich.org 70 i- (defconstant fd-group-qos 128) Err bitreich.org 70 i- (defconstant fd-group-qos-bit 7) Err bitreich.org 70 i- (defconstant fd-routing-interface 256) Err bitreich.org 70 i- (defconstant fd-routing-interface-bit 8) Err bitreich.org 70 i- (defconstant fd-address-list-change 512) Err bitreich.org 70 i- (defconstant fd-address-list-change-bit 9) Err bitreich.org 70 i- Err bitreich.org 70 i- (defconstant fd-max-events 10) Err bitreich.org 70 i- Err bitreich.org 70 i- (defconstant fionread 1074030207) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Note: Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; If special finalization has to occur for a given Err bitreich.org 70 i- ;; system resource (handle), an associated object should Err bitreich.org 70 i- ;; be created. A special cleanup action should be added Err bitreich.org 70 i- ;; to the system and a special cleanup action should Err bitreich.org 70 i- ;; be flagged on all objects created for resources like it Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; We have 2 functions to do so: Err bitreich.org 70 i- ;; * hcl:add-special-free-action (function-symbol) Err bitreich.org 70 i- ;; * hcl:flag-special-free-action (object) Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; Note that the special free action will be called on all Err bitreich.org 70 i- ;; objects which have been flagged for special free, so be Err bitreich.org 70 i- ;; sure to check for the right argument type! Err bitreich.org 70 i- Err bitreich.org 70 i- (fli:define-foreign-type ws-socket () '(:unsigned :int)) Err bitreich.org 70 i- (fli:define-foreign-type win32-handle () '(:unsigned :int)) Err bitreich.org 70 i- (fli:define-c-struct wsa-network-events Err bitreich.org 70 i- (network-events :long) Err bitreich.org 70 i- (error-code (:c-array :int 10))) Err bitreich.org 70 i- Err bitreich.org 70 i- (fli:define-foreign-function (wsa-event-create "WSACreateEvent" :source) Err bitreich.org 70 i- () Err bitreich.org 70 i- :lambda-list nil Err bitreich.org 70 i- :result-type :int Err bitreich.org 70 i- :module "ws2_32") Err bitreich.org 70 i- Err bitreich.org 70 i- (fli:define-foreign-function (wsa-event-close "WSACloseEvent" :source) Err bitreich.org 70 i- ((event-object win32-handle)) Err bitreich.org 70 i- :result-type :int Err bitreich.org 70 i- :module "ws2_32") Err bitreich.org 70 i- Err bitreich.org 70 i- (fli:define-foreign-function (wsa-enum-network-events "WSAEnumNetworkEvents" :source) Err bitreich.org 70 i- ((socket ws-socket) Err bitreich.org 70 i- (event-object win32-handle) Err bitreich.org 70 i- (network-events (:reference-return wsa-network-events))) Err bitreich.org 70 i- :result-type :int Err bitreich.org 70 i- :module "ws2_32") Err bitreich.org 70 i- Err bitreich.org 70 i- (fli:define-foreign-function (wsa-event-select "WSAEventSelect" :source) Err bitreich.org 70 i- ((socket ws-socket) Err bitreich.org 70 i- (event-object win32-handle) Err bitreich.org 70 i- (network-events :long)) Err bitreich.org 70 i- :result-type :int Err bitreich.org 70 i- :module "ws2_32") Err bitreich.org 70 i- Err bitreich.org 70 i- (fli:define-foreign-function (wsa-get-last-error "WSAGetLastError" :source) Err bitreich.org 70 i- () Err bitreich.org 70 i- :result-type :int Err bitreich.org 70 i- :module "ws2_32") Err bitreich.org 70 i- Err bitreich.org 70 i- (fli:define-foreign-function (wsa-ioctlsocket "ioctlsocket" :source) Err bitreich.org 70 i- ((socket :long) (cmd :long) (argp (:ptr :long))) Err bitreich.org 70 i- :result-type :int Err bitreich.org 70 i- :module "ws2_32") Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- ;; The Windows system Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Now that we have access to the system calls, this is the plan: Err bitreich.org 70 i- Err bitreich.org 70 i- ;; 1. Receive a wait-list with associated sockets to wait for Err bitreich.org 70 i- ;; 2. Add all those sockets to an event handle Err bitreich.org 70 i- ;; 3. Listen for an event on that handle (we have a LispWorks system:: internal for that) Err bitreich.org 70 i- ;; 4. After listening, detect if there are errors Err bitreich.org 70 i- ;; (this step is different from Unix, where we can have only one error) Err bitreich.org 70 i- ;; 5. If so, raise one of them Err bitreich.org 70 i- ;; 6. If not so, return the sockets which have input waiting for them Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- (defun maybe-wsa-error (rv &optional socket) Err bitreich.org 70 i- (unless (zerop rv) Err bitreich.org 70 i- (raise-usock-err (wsa-get-last-error) socket))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun bytes-available-for-read (socket) Err bitreich.org 70 i- (fli:with-dynamic-foreign-objects ((int-ptr :long)) Err bitreich.org 70 i- (let ((rv (wsa-ioctlsocket (os-socket-handle socket) fionread int-ptr))) Err bitreich.org 70 i- (if (= 0 rv) Err bitreich.org 70 i- (fli:dereference int-ptr) Err bitreich.org 70 i- 0)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun socket-ready-p (socket) Err bitreich.org 70 i- (if (typep socket 'stream-usocket) Err bitreich.org 70 i- (< 0 (bytes-available-for-read socket)) Err bitreich.org 70 i- (%ready-p socket))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun waiting-required (sockets) Err bitreich.org 70 i- (notany #'socket-ready-p sockets)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun wait-for-input-internal (wait-list &key timeout) Err bitreich.org 70 i- (when (waiting-required (wait-list-waiters wait-list)) Err bitreich.org 70 i- (system:wait-for-single-object (wait-list-%wait wait-list) Err bitreich.org 70 i- "Waiting for socket activity" timeout)) Err bitreich.org 70 i- (update-ready-and-state-slots (wait-list-waiters wait-list))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun map-network-events (func network-events) Err bitreich.org 70 i- (let ((event-map (fli:foreign-slot-value network-events 'network-events)) Err bitreich.org 70 i- (error-array (fli:foreign-slot-pointer network-events 'error-code))) Err bitreich.org 70 i- (unless (zerop event-map) Err bitreich.org 70 i- (dotimes (i fd-max-events) Err bitreich.org 70 i- (unless (zerop (ldb (byte 1 i) event-map)) ;;### could be faster with ash and logand? Err bitreich.org 70 i- (funcall func (fli:foreign-aref error-array i))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun update-ready-and-state-slots (sockets) Err bitreich.org 70 i- (dolist (socket sockets) Err bitreich.org 70 i- (if (or (and (stream-usocket-p socket) Err bitreich.org 70 i- (listen (socket-stream socket))) Err bitreich.org 70 i- (%ready-p socket)) Err bitreich.org 70 i- (setf (state socket) :READ) Err bitreich.org 70 i- (multiple-value-bind Err bitreich.org 70 i- (rv network-events) Err bitreich.org 70 i- (wsa-enum-network-events (os-socket-handle socket) 0 t) Err bitreich.org 70 i- (if (zerop rv) Err bitreich.org 70 i- (map-network-events #'(lambda (err-code) Err bitreich.org 70 i- (if (zerop err-code) Err bitreich.org 70 i- (setf (%ready-p socket) t Err bitreich.org 70 i- (state socket) :READ) Err bitreich.org 70 i- (raise-usock-err err-code socket))) Err bitreich.org 70 i- network-events) Err bitreich.org 70 i- (maybe-wsa-error rv socket)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; The wait-list part Err bitreich.org 70 i- Err bitreich.org 70 i- (defun free-wait-list (wl) Err bitreich.org 70 i- (when (wait-list-p wl) Err bitreich.org 70 i- (unless (null (wait-list-%wait wl)) Err bitreich.org 70 i- (wsa-event-close (wait-list-%wait wl)) Err bitreich.org 70 i- (setf (wait-list-%wait wl) nil)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (eval-when (:load-toplevel :execute) Err bitreich.org 70 i- (hcl:add-special-free-action 'free-wait-list)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %setup-wait-list (wait-list) Err bitreich.org 70 i- (hcl:flag-special-free-action wait-list) Err bitreich.org 70 i- (setf (wait-list-%wait wait-list) (wsa-event-create))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %add-waiter (wait-list waiter) Err bitreich.org 70 i- (let ((events (etypecase waiter Err bitreich.org 70 i- (stream-server-usocket (logior fd-connect fd-accept fd-close)) Err bitreich.org 70 i- (stream-usocket (logior fd-connect fd-read fd-oob fd-close)) Err bitreich.org 70 i- (datagram-usocket (logior fd-read))))) Err bitreich.org 70 i- (maybe-wsa-error Err bitreich.org 70 i- (wsa-event-select (os-socket-handle waiter) (wait-list-%wait wait-list) events) Err bitreich.org 70 i- waiter))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %remove-waiter (wait-list waiter) Err bitreich.org 70 i- (maybe-wsa-error Err bitreich.org 70 i- (wsa-event-select (os-socket-handle waiter) (wait-list-%wait wait-list) 0) Err bitreich.org 70 i- waiter)) Err bitreich.org 70 i- Err bitreich.org 70 i-) ; end of WIN32-block Err bitreich.org 70 i- Err bitreich.org 70 i-(defun set-socket-reuse-address (socket-fd reuse-address-p) Err bitreich.org 70 i- (declare (type integer socket-fd) Err bitreich.org 70 i- (type boolean reuse-address-p)) Err bitreich.org 70 i- (fli:with-dynamic-foreign-objects ((value :int)) Err bitreich.org 70 i- (setf (fli:dereference value) (if reuse-address-p 1 0)) Err bitreich.org 70 i- (if (zerop (comm::setsockopt socket-fd Err bitreich.org 70 i- comm::*sockopt_sol_socket* Err bitreich.org 70 i- comm::*sockopt_so_reuseaddr* Err bitreich.org 70 i- (fli:copy-pointer value Err bitreich.org 70 i- :type '(:pointer :void)) Err bitreich.org 70 i- (fli:size-of :int))) Err bitreich.org 70 i- reuse-address-p))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-socket-reuse-address (socket-fd) Err bitreich.org 70 i- (declare (type integer socket-fd)) Err bitreich.org 70 i- (fli:with-dynamic-foreign-objects ((value :int) (len :int)) Err bitreich.org 70 i- (if (zerop (comm::getsockopt socket-fd Err bitreich.org 70 i- comm::*sockopt_sol_socket* Err bitreich.org 70 i- comm::*sockopt_so_reuseaddr* Err bitreich.org 70 i- (fli:copy-pointer value Err bitreich.org 70 i- :type '(:pointer :void)) Err bitreich.org 70 i- len)) Err bitreich.org 70 i- (= 1 (fli:dereference value))))) Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/backend/mcl.lisp b/3rdparties/software/usocket-0.7.1/backend/mcl.lisp /scm/clic/file/3rdparties/software/usocket-0.7.1/backend/mcl.lisp.gph bitreich.org 70 i@@ -1,269 +0,0 @@ Err bitreich.org 70 i-;; MCL backend for USOCKET 0.4.1 Err bitreich.org 70 i-;; Terje Norderhaug , January 1, 2009 Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :usocket) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun handle-condition (condition &optional socket) Err bitreich.org 70 i- ; incomplete, needs to handle additional conditions Err bitreich.org 70 i- (flet ((raise-error (&optional socket-condition) Err bitreich.org 70 i- (if socket-condition Err bitreich.org 70 i- (error socket-condition :socket socket) Err bitreich.org 70 i- (error 'unknown-error :socket socket :real-error condition)))) Err bitreich.org 70 i- (typecase condition Err bitreich.org 70 i- (ccl:host-stopped-responding Err bitreich.org 70 i- (raise-error 'host-down-error)) Err bitreich.org 70 i- (ccl:host-not-responding Err bitreich.org 70 i- (raise-error 'host-unreachable-error)) Err bitreich.org 70 i- (ccl:connection-reset Err bitreich.org 70 i- (raise-error 'connection-reset-error)) Err bitreich.org 70 i- (ccl:connection-timed-out Err bitreich.org 70 i- (raise-error 'timeout-error)) Err bitreich.org 70 i- (ccl:opentransport-protocol-error Err bitreich.org 70 i- (raise-error 'protocol-not-supported-error)) Err bitreich.org 70 i- (otherwise Err bitreich.org 70 i- (raise-error))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun socket-connect (host port &key (element-type 'character) timeout deadline nodelay Err bitreich.org 70 i- local-host local-port (protocol :stream)) Err bitreich.org 70 i- (when (eq nodelay :if-supported) Err bitreich.org 70 i- (setf nodelay t)) Err bitreich.org 70 i- (ecase protocol Err bitreich.org 70 i- (:stream Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (let* ((socket Err bitreich.org 70 i- (make-instance 'active-socket Err bitreich.org 70 i- :remote-host (when host (host-to-hostname host)) Err bitreich.org 70 i- :remote-port port Err bitreich.org 70 i- :local-host (when local-host (host-to-hostname local-host)) Err bitreich.org 70 i- :local-port local-port Err bitreich.org 70 i- :deadline deadline Err bitreich.org 70 i- :nodelay nodelay Err bitreich.org 70 i- :connect-timeout (and timeout (round (* timeout 60))) Err bitreich.org 70 i- :element-type element-type)) Err bitreich.org 70 i- (stream (socket-open-stream socket))) Err bitreich.org 70 i- (make-stream-socket :socket socket :stream stream)))) Err bitreich.org 70 i- (:datagram Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (make-datagram-socket Err bitreich.org 70 i- (ccl::open-udp-socket :local-address (and local-host (host-to-hbo local-host)) Err bitreich.org 70 i- :local-port local-port)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun socket-listen (host port Err bitreich.org 70 i- &key reuseaddress Err bitreich.org 70 i- (reuse-address nil reuse-address-supplied-p) Err bitreich.org 70 i- (backlog 5) Err bitreich.org 70 i- (element-type 'character)) Err bitreich.org 70 i- (let* ((reuseaddress (if reuse-address-supplied-p reuse-address reuseaddress)) Err bitreich.org 70 i- (socket (with-mapped-conditions () Err bitreich.org 70 i- (make-instance 'passive-socket Err bitreich.org 70 i- :local-port port Err bitreich.org 70 i- :local-host (host-to-hbo host) Err bitreich.org 70 i- :reuse-address reuseaddress Err bitreich.org 70 i- :backlog backlog)))) Err bitreich.org 70 i- (make-stream-server-socket socket :element-type element-type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-accept ((usocket stream-server-usocket) &key element-type) Err bitreich.org 70 i- (let* ((socket (socket usocket)) Err bitreich.org 70 i- (stream (with-mapped-conditions (usocket) Err bitreich.org 70 i- (socket-accept socket :element-type element-type)))) Err bitreich.org 70 i- (make-stream-socket :socket socket :stream stream))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-close ((usocket usocket)) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (socket-close (socket usocket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-shutdown ((usocket usocket) direction) Err bitreich.org 70 i- (declare (ignore usocket direction)) Err bitreich.org 70 i- ;; As far as I can tell there isn't a way to shutdown a socket in mcl. Err bitreich.org 70 i- (unsupported "shutdown" 'socket-shutdown)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod ccl::stream-close ((usocket usocket)) Err bitreich.org 70 i- (socket-close usocket)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-hosts-by-name (name) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (list (hbo-to-vector-quad (ccl::get-host-address Err bitreich.org 70 i- (host-to-hostname name)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-host-by-address (address) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (ccl::inet-host-name (host-to-hbo address)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-name ((usocket usocket)) Err bitreich.org 70 i- (values (get-local-address usocket) Err bitreich.org 70 i- (get-local-port usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-name ((usocket stream-usocket)) Err bitreich.org 70 i- (values (get-peer-address usocket) Err bitreich.org 70 i- (get-peer-port usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-address ((usocket usocket)) Err bitreich.org 70 i- (hbo-to-vector-quad (ccl::get-host-address (or (local-host (socket usocket)) "")))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-port ((usocket usocket)) Err bitreich.org 70 i- (local-port (socket usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-address ((usocket stream-usocket)) Err bitreich.org 70 i- (hbo-to-vector-quad (ccl::get-host-address (remote-host (socket usocket))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-port ((usocket stream-usocket)) Err bitreich.org 70 i- (remote-port (socket usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %setup-wait-list (wait-list) Err bitreich.org 70 i- (declare (ignore wait-list))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %add-waiter (wait-list waiter) Err bitreich.org 70 i- (declare (ignore wait-list waiter))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %remove-waiter (wait-list waiter) Err bitreich.org 70 i- (declare (ignore wait-list waiter))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Err bitreich.org 70 i-;; BASIC MCL SOCKET IMPLEMENTATION Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass socket () Err bitreich.org 70 i- ((local-port :reader local-port :initarg :local-port) Err bitreich.org 70 i- (local-host :reader local-host :initarg :local-host) Err bitreich.org 70 i- (element-type :reader element-type :initform 'ccl::base-character :initarg :element-type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass active-socket (socket) Err bitreich.org 70 i- ((remote-host :reader remote-host :initarg :remote-host) Err bitreich.org 70 i- (remote-port :reader remote-port :initarg :remote-port) Err bitreich.org 70 i- (deadline :initarg :deadline) Err bitreich.org 70 i- (nodelay :initarg :nodelay) Err bitreich.org 70 i- (connect-timeout :reader connect-timeout :initform NIL :initarg :connect-timeout Err bitreich.org 70 i- :type (or null fixnum) :documentation "ticks (60th of a second)"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-open-stream ((socket active-socket)) Err bitreich.org 70 i- (ccl::open-tcp-stream (or (remote-host socket)(ccl::local-interface-ip-address)) (remote-port socket) Err bitreich.org 70 i- :element-type (if (subtypep (element-type socket) 'character) 'ccl::base-character 'unsigned-byte) Err bitreich.org 70 i- :connect-timeout (connect-timeout socket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-close ((socket active-socket)) Err bitreich.org 70 i- NIL) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass passive-socket (socket) Err bitreich.org 70 i- ((streams :accessor socket-streams :type list :initform NIL Err bitreich.org 70 i- :documentation "Circular list of streams with first element the next to open") Err bitreich.org 70 i- (reuse-address :reader reuse-address :initarg :reuse-address) Err bitreich.org 70 i- (lock :reader socket-lock :initform (ccl:make-lock "Socket")))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod initialize-instance :after ((socket passive-socket) &key backlog) Err bitreich.org 70 i- (loop repeat backlog Err bitreich.org 70 i- collect (socket-open-listener socket) into streams Err bitreich.org 70 i- finally (setf (socket-streams socket) Err bitreich.org 70 i- (cdr (rplacd (last streams) streams)))) Err bitreich.org 70 i- (when (zerop (local-port socket)) Err bitreich.org 70 i- (setf (slot-value socket 'local-port) Err bitreich.org 70 i- (or (ccl::process-wait-with-timeout "binding port" (* 10 60) Err bitreich.org 70 i- #'ccl::stream-local-port (car (socket-streams socket))) Err bitreich.org 70 i- (error "timeout"))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-accept ((socket passive-socket) &key element-type &aux (lock (socket-lock socket))) Err bitreich.org 70 i- (flet ((connection-established-p (stream) Err bitreich.org 70 i- (ccl::with-io-buffer-locked ((ccl::stream-io-buffer stream nil)) Err bitreich.org 70 i- (let ((state (ccl::opentransport-stream-connection-state stream))) Err bitreich.org 70 i- (not (eq :unbnd state)))))) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (ccl:with-lock-grabbed (lock nil "Socket Lock") Err bitreich.org 70 i- (let ((connection (shiftf (car (socket-streams socket)) Err bitreich.org 70 i- (socket-open-listener socket element-type)))) Err bitreich.org 70 i- (pop (socket-streams socket)) Err bitreich.org 70 i- (ccl:process-wait "Accepting" #'connection-established-p connection) Err bitreich.org 70 i- connection))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-close ((socket passive-socket)) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- with streams = (socket-streams socket) Err bitreich.org 70 i- for (stream tail) on streams Err bitreich.org 70 i- do (close stream :abort T) Err bitreich.org 70 i- until (eq tail streams) Err bitreich.org 70 i- finally (setf (socket-streams socket) NIL))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-open-listener (socket &optional element-type) Err bitreich.org 70 i- ; see http://code.google.com/p/mcl/issues/detail?id=28 Err bitreich.org 70 i- (let* ((ccl::*passive-interface-address* (local-host socket)) Err bitreich.org 70 i- (new (ccl::open-tcp-stream NIL (or (local-port socket) #$kOTAnyInetAddress) Err bitreich.org 70 i- :reuse-local-port-p (reuse-address socket) Err bitreich.org 70 i- :element-type (if (subtypep (or element-type (element-type socket)) Err bitreich.org 70 i- 'character) Err bitreich.org 70 i- 'ccl::base-character Err bitreich.org 70 i- 'unsigned-byte)))) Err bitreich.org 70 i- (declare (special ccl::*passive-interface-address*)) Err bitreich.org 70 i- new)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod input-available-p ((stream ccl::opentransport-stream)) Err bitreich.org 70 i- (macrolet ((when-io-buffer-lock-grabbed ((lock &optional multiple-value-p) &body body) Err bitreich.org 70 i- "Evaluates the body if and only if the lock is successfully grabbed" Err bitreich.org 70 i- ;; like with-io-buffer-lock-grabbed but returns immediately instead of polling the lock Err bitreich.org 70 i- (let ((needs-unlocking-p (gensym)) Err bitreich.org 70 i- (lock-var (gensym))) Err bitreich.org 70 i- `(let* ((,lock-var ,lock) Err bitreich.org 70 i- (ccl::*grabbed-io-buffer-locks* (cons ,lock-var ccl::*grabbed-io-buffer-locks*)) Err bitreich.org 70 i- (,needs-unlocking-p (needs-unlocking-p ,lock-var))) Err bitreich.org 70 i- (declare (dynamic-extent ccl::*grabbed-io-buffer-locks*)) Err bitreich.org 70 i- (when ,needs-unlocking-p Err bitreich.org 70 i- (,(if multiple-value-p 'multiple-value-prog1 'prog1) Err bitreich.org 70 i- (progn ,@body) Err bitreich.org 70 i- (ccl::%release-io-buffer-lock ,lock-var))))))) Err bitreich.org 70 i- (labels ((needs-unlocking-p (lock) Err bitreich.org 70 i- (declare (type ccl::lock lock)) Err bitreich.org 70 i- ;; crucial - clears bogus lock.value as in grab-io-buffer-lock-out-of-line: Err bitreich.org 70 i- (ccl::%io-buffer-lock-really-grabbed-p lock) Err bitreich.org 70 i- (ccl:store-conditional lock nil ccl:*current-process*))) Err bitreich.org 70 i- "similar to stream-listen on buffered-input-stream-mixin but without waiting for lock" Err bitreich.org 70 i- (let ((io-buffer (ccl::stream-io-buffer stream))) Err bitreich.org 70 i- (or (not (eql 0 (ccl::io-buffer-incount io-buffer))) Err bitreich.org 70 i- (ccl::io-buffer-untyi-char io-buffer) Err bitreich.org 70 i- (locally (declare (optimize (speed 3) (safety 0))) Err bitreich.org 70 i- (when-io-buffer-lock-grabbed ((ccl::io-buffer-lock io-buffer)) Err bitreich.org 70 i- (funcall (ccl::io-buffer-listen-function io-buffer) stream io-buffer)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod connection-established-p ((stream ccl::opentransport-stream)) Err bitreich.org 70 i- (ccl::with-io-buffer-locked ((ccl::stream-io-buffer stream nil)) Err bitreich.org 70 i- (let ((state (ccl::opentransport-stream-connection-state stream))) Err bitreich.org 70 i- (not (eq :unbnd state))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun wait-for-input-internal (wait-list &key timeout &aux result) Err bitreich.org 70 i- (labels ((ready-sockets (sockets) Err bitreich.org 70 i- (dolist (sock sockets result) Err bitreich.org 70 i- (when (cond ((stream-usocket-p sock) Err bitreich.org 70 i- (input-available-p (socket-stream sock))) Err bitreich.org 70 i- ((stream-server-usocket-p sock) Err bitreich.org 70 i- (let ((ot-stream (first (socket-streams (socket sock))))) Err bitreich.org 70 i- (or (input-available-p ot-stream) Err bitreich.org 70 i- (connection-established-p ot-stream))))) Err bitreich.org 70 i- (push sock result))))) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (ccl:process-wait-with-timeout Err bitreich.org 70 i- "socket input" Err bitreich.org 70 i- (when timeout (truncate (* timeout 60))) Err bitreich.org 70 i- #'ready-sockets Err bitreich.org 70 i- (wait-list-waiters wait-list))) Err bitreich.org 70 i- (nreverse result))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; datagram socket methods Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod initialize-instance :after ((usocket datagram-usocket) &key) Err bitreich.org 70 i- (with-slots (socket send-buffer recv-buffer) usocket Err bitreich.org 70 i- (setq send-buffer Err bitreich.org 70 i- (ccl::make-TUnitData (ccl::ot-conn-endpoint socket))) Err bitreich.org 70 i- (setq recv-buffer Err bitreich.org 70 i- (ccl::make-TUnitData (ccl::ot-conn-endpoint socket))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-send ((usocket datagram-usocket) buffer size &key host port (offset 0)) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (with-slots (socket send-buffer) usocket Err bitreich.org 70 i- (unless (and host port) Err bitreich.org 70 i- (unsupported 'host 'socket-send)) Err bitreich.org 70 i- (ccl::send-message socket send-buffer buffer size host port offset)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-receive ((usocket datagram-usocket) buffer length &key) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (with-slots (socket recv-buffer) usocket Err bitreich.org 70 i- (ccl::receive-message socket recv-buffer buffer length)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-close ((socket datagram-usocket)) Err bitreich.org 70 i- nil) ; TODO Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/backend/mocl.lisp b/3rdparties/software/usocket-0.7.1/backend/mocl.lisp /scm/clic/file/3rdparties/software/usocket-0.7.1/backend/mocl.lisp.gph bitreich.org 70 i@@ -1,159 +0,0 @@ Err bitreich.org 70 i-;;;; See LICENSE for licensing information. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :usocket) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun handle-condition (condition &optional (socket nil)) Err bitreich.org 70 i- "Dispatch correct usocket condition." Err bitreich.org 70 i- (declare (ignore socket)) Err bitreich.org 70 i- (signal condition)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun socket-connect (host port &key (protocol :stream) (element-type 'character) Err bitreich.org 70 i- timeout deadline (nodelay t nodelay-specified) Err bitreich.org 70 i- (local-host nil local-host-p) Err bitreich.org 70 i- (local-port nil local-port-p)) Err bitreich.org 70 i- (when (and nodelay-specified Err bitreich.org 70 i- (not (eq nodelay :if-supported))) Err bitreich.org 70 i- (unsupported 'nodelay 'socket-connect)) Err bitreich.org 70 i- (when deadline (unsupported 'deadline 'socket-connect)) Err bitreich.org 70 i- (when timeout (unimplemented 'timeout 'socket-connect)) Err bitreich.org 70 i- (when local-host-p Err bitreich.org 70 i- (unimplemented 'local-host 'socket-connect)) Err bitreich.org 70 i- (when local-port-p Err bitreich.org 70 i- (unimplemented 'local-port 'socket-connect)) Err bitreich.org 70 i- Err bitreich.org 70 i- (let (socket) Err bitreich.org 70 i- (ecase protocol Err bitreich.org 70 i- (:stream Err bitreich.org 70 i- (setf socket (rt::socket-connect host port)) Err bitreich.org 70 i- (let ((stream (rt::make-socket-stream socket :binaryp (not (eq element-type 'character))))) Err bitreich.org 70 i- (make-stream-socket :socket socket :stream stream))) Err bitreich.org 70 i- (:datagram Err bitreich.org 70 i- (error 'unsupported Err bitreich.org 70 i- :feature '(protocol :datagram) Err bitreich.org 70 i- :context 'socket-connect))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun socket-listen (host port Err bitreich.org 70 i- &key reuseaddress Err bitreich.org 70 i- (reuse-address nil reuse-address-supplied-p) Err bitreich.org 70 i- (backlog 5) Err bitreich.org 70 i- (element-type 'character)) Err bitreich.org 70 i- (unimplemented 'socket-listen 'mocl)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-accept ((usocket stream-server-usocket) &key element-type) Err bitreich.org 70 i- (unimplemented 'socket-accept 'mocl)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Sockets and their associated streams are modelled as Err bitreich.org 70 i-;; different objects. Be sure to close the socket stream Err bitreich.org 70 i-;; when closing stream-sockets; it makes sure buffers Err bitreich.org 70 i-;; are flushed and the socket is closed correctly afterwards. Err bitreich.org 70 i-(defmethod socket-close ((usocket usocket)) Err bitreich.org 70 i- "Close socket." Err bitreich.org 70 i- (when (wait-list usocket) Err bitreich.org 70 i- (remove-waiter (wait-list usocket) usocket)) Err bitreich.org 70 i- (rt::socket-shutdown usocket) Err bitreich.org 70 i- (rt::c-fclose usocket)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-close ((usocket stream-usocket)) Err bitreich.org 70 i- "Close socket." Err bitreich.org 70 i- (when (wait-list usocket) Err bitreich.org 70 i- (remove-waiter (wait-list usocket) usocket)) Err bitreich.org 70 i- (close (socket-stream usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; (defmethod socket-close :after ((socket datagram-usocket)) Err bitreich.org 70 i-;; (setf (%open-p socket) nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-shutdown ((usocket stream-usocket) direction) Err bitreich.org 70 i- (declare (ignore usocket direction)) Err bitreich.org 70 i- ;; sure would be nice if there was some documentation for mocl... Err bitreich.org 70 i- (unimplemented "shutdown" 'socket-shutdown)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; (defmethod socket-send ((usocket datagram-usocket) buffer size &key host port) Err bitreich.org 70 i-;; (let ((s (socket usocket)) Err bitreich.org 70 i-;; (host (if host (host-to-hbo host))) Err bitreich.org 70 i-;; (real-buffer (if (zerop offset) Err bitreich.org 70 i-;; buffer Err bitreich.org 70 i-;; (subseq buffer offset (+ offset size))))) Err bitreich.org 70 i-;; (multiple-value-bind (result errno) Err bitreich.org 70 i-;; (ext:inet-socket-send-to s real-buffer size Err bitreich.org 70 i-;; :remote-host host :remote-port port) Err bitreich.org 70 i-;; (or result Err bitreich.org 70 i-;; (mocl-map-socket-error errno :socket usocket))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; (defmethod socket-receive ((socket datagram-usocket) buffer length &key) Err bitreich.org 70 i-;; (declare (values (simple-array (unsigned-byte 8) (*)) ; buffer Err bitreich.org 70 i-;; (integer 0) ; size Err bitreich.org 70 i-;; (unsigned-byte 32) ; host Err bitreich.org 70 i-;; (unsigned-byte 16))) ; port Err bitreich.org 70 i-;; (let ((s (socket socket))) Err bitreich.org 70 i-;; (let ((real-buffer (or buffer Err bitreich.org 70 i-;; (make-array length :element-type '(unsigned-byte 8)))) Err bitreich.org 70 i-;; (real-length (or length Err bitreich.org 70 i-;; (length buffer)))) Err bitreich.org 70 i-;; (multiple-value-bind (result errno remote-host remote-port) Err bitreich.org 70 i-;; (ext:inet-socket-receive-from s real-buffer real-length) Err bitreich.org 70 i-;; (if result Err bitreich.org 70 i-;; (values real-buffer result remote-host remote-port) Err bitreich.org 70 i-;; (mocl-map-socket-error errno :socket socket)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; (defmethod get-local-name ((usocket usocket)) Err bitreich.org 70 i-;; (multiple-value-bind (address port) Err bitreich.org 70 i-;; (with-mapped-conditions (usocket) Err bitreich.org 70 i-;; (ext:get-socket-host-and-port (socket usocket))) Err bitreich.org 70 i-;; (values (hbo-to-vector-quad address) port))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; (defmethod get-peer-name ((usocket stream-usocket)) Err bitreich.org 70 i-;; (multiple-value-bind (address port) Err bitreich.org 70 i-;; (with-mapped-conditions (usocket) Err bitreich.org 70 i-;; (ext:get-peer-host-and-port (socket usocket))) Err bitreich.org 70 i-;; (values (hbo-to-vector-quad address) port))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; (defmethod get-local-address ((usocket usocket)) Err bitreich.org 70 i-;; (nth-value 0 (get-local-name usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; (defmethod get-peer-address ((usocket stream-usocket)) Err bitreich.org 70 i-;; (nth-value 0 (get-peer-name usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; (defmethod get-local-port ((usocket usocket)) Err bitreich.org 70 i-;; (nth-value 1 (get-local-name usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; (defmethod get-peer-port ((usocket stream-usocket)) Err bitreich.org 70 i-;; (nth-value 1 (get-peer-name usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;; (defun get-host-by-address (address) Err bitreich.org 70 i-;; (multiple-value-bind (host errno) Err bitreich.org 70 i-;; (ext:lookup-host-entry (host-byte-order address)) Err bitreich.org 70 i-;; (cond (host Err bitreich.org 70 i-;; (ext:host-entry-name host)) Err bitreich.org 70 i-;; (t Err bitreich.org 70 i-;; (let ((condition (cdr (assoc errno +unix-ns-error-map+)))) Err bitreich.org 70 i-;; (cond (condition Err bitreich.org 70 i-;; (error condition :host-or-ip address)) Err bitreich.org 70 i-;; (t Err bitreich.org 70 i-;; (error 'ns-unknown-error :host-or-ip address Err bitreich.org 70 i-;; :real-error errno)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-hosts-by-name (name) Err bitreich.org 70 i- (rt::lookup-host name)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; (defun get-host-name () Err bitreich.org 70 i-;; (unix:unix-gethostname)) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; WAIT-LIST part Err bitreich.org 70 i-;; Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %add-waiter (wl waiter) Err bitreich.org 70 i- (declare (ignore wl waiter))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %remove-waiter (wl waiter) Err bitreich.org 70 i- (declare (ignore wl waiter))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %setup-wait-list (wl) Err bitreich.org 70 i- (declare (ignore wl))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun wait-for-input-internal (wait-list &key timeout) Err bitreich.org 70 i- (unimplemented 'wait-for-input-internal 'mocl)) Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/backend/openmcl.lisp b/3rdparties/software/usocket-0.7.1/backend/openmcl.lisp /scm/clic/file/3rdparties/software/usocket-0.7.1/backend/openmcl.lisp.gph bitreich.org 70 i@@ -1,270 +0,0 @@ Err bitreich.org 70 i-;;;; See LICENSE for licensing information. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :usocket) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-host-name () Err bitreich.org 70 i- (ccl::%stack-block ((resultbuf 256)) Err bitreich.org 70 i- (when (zerop (#_gethostname resultbuf 256)) Err bitreich.org 70 i- (ccl::%get-cstring resultbuf)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter +openmcl-error-map+ Err bitreich.org 70 i- '((:address-in-use . address-in-use-error) Err bitreich.org 70 i- (:connection-aborted . connection-aborted-error) Err bitreich.org 70 i- (:no-buffer-space . no-buffers-error) Err bitreich.org 70 i- (:connection-timed-out . timeout-error) Err bitreich.org 70 i- (:connection-refused . connection-refused-error) Err bitreich.org 70 i- (:host-unreachable . host-unreachable-error) Err bitreich.org 70 i- (:host-down . host-down-error) Err bitreich.org 70 i- (:network-down . network-down-error) Err bitreich.org 70 i- (:address-not-available . address-not-available-error) Err bitreich.org 70 i- (:network-reset . network-reset-error) Err bitreich.org 70 i- (:connection-reset . connection-reset-error) Err bitreich.org 70 i- (:shutdown . shutdown-error) Err bitreich.org 70 i- (:access-denied . operation-not-permitted-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter +openmcl-nameserver-error-map+ Err bitreich.org 70 i- '((:no-recovery . ns-no-recovery-error) Err bitreich.org 70 i- (:try-again . ns-try-again-condition) Err bitreich.org 70 i- (:host-not-found . ns-host-not-found-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; we need something which the openmcl implementors 'forgot' to do: Err bitreich.org 70 i-;; wait for more than one socket-or-fd Err bitreich.org 70 i- Err bitreich.org 70 i-(defun input-available-p (sockets &optional ticks-to-wait) Err bitreich.org 70 i- (ccl::rletZ ((tv :timeval)) Err bitreich.org 70 i- (ccl::ticks-to-timeval ticks-to-wait tv) Err bitreich.org 70 i- ;;### The trickery below can be moved to the wait-list now... Err bitreich.org 70 i- (ccl::%stack-block ((infds ccl::*fd-set-size*)) Err bitreich.org 70 i- (ccl::fd-zero infds) Err bitreich.org 70 i- (let ((max-fd -1)) Err bitreich.org 70 i- (dolist (sock sockets) Err bitreich.org 70 i- (let ((fd (openmcl-socket:socket-os-fd (socket sock)))) Err bitreich.org 70 i- (when fd ;; may be NIL if closed Err bitreich.org 70 i- (setf max-fd (max max-fd fd)) Err bitreich.org 70 i- (ccl::fd-set fd infds)))) Err bitreich.org 70 i- (let ((res (#_select (1+ max-fd) Err bitreich.org 70 i- infds (ccl::%null-ptr) (ccl::%null-ptr) Err bitreich.org 70 i- (if ticks-to-wait tv (ccl::%null-ptr))))) Err bitreich.org 70 i- (when (> res 0) Err bitreich.org 70 i- (dolist (sock sockets) Err bitreich.org 70 i- (let ((fd (openmcl-socket:socket-os-fd (socket sock)))) Err bitreich.org 70 i- (when (and fd (ccl::fd-is-set fd infds)) Err bitreich.org 70 i- (setf (state sock) :READ))))) Err bitreich.org 70 i- sockets))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun raise-error-from-id (condition-id socket real-condition) Err bitreich.org 70 i- (let ((usock-err (cdr (assoc condition-id +openmcl-error-map+)))) Err bitreich.org 70 i- (if usock-err Err bitreich.org 70 i- (error usock-err :socket socket) Err bitreich.org 70 i- (error 'unknown-error :socket socket :real-error real-condition)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun handle-condition (condition &optional socket) Err bitreich.org 70 i- (typecase condition Err bitreich.org 70 i- (openmcl-socket:socket-error Err bitreich.org 70 i- (raise-error-from-id (openmcl-socket:socket-error-identifier condition) Err bitreich.org 70 i- socket condition)) Err bitreich.org 70 i- (ccl:input-timeout Err bitreich.org 70 i- (error 'timeout-error :socket socket)) Err bitreich.org 70 i- (ccl:communication-deadline-expired Err bitreich.org 70 i- (error 'deadline-timeout-error :socket socket)) Err bitreich.org 70 i- (ccl::socket-creation-error #| ugh! |# Err bitreich.org 70 i- (let* ((condition-id (ccl::socket-creation-error-identifier condition)) Err bitreich.org 70 i- (nameserver-error (cdr (assoc condition-id Err bitreich.org 70 i- +openmcl-nameserver-error-map+)))) Err bitreich.org 70 i- (if nameserver-error Err bitreich.org 70 i- (if (typep nameserver-error 'serious-condition) Err bitreich.org 70 i- (error nameserver-error :host-or-ip nil) Err bitreich.org 70 i- (signal nameserver-error :host-or-ip nil)) Err bitreich.org 70 i- (raise-error-from-id condition-id socket condition)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun to-format (element-type protocol) Err bitreich.org 70 i- (cond ((null element-type) Err bitreich.org 70 i- (ecase protocol ; default value of different protocol Err bitreich.org 70 i- (:stream :text) Err bitreich.org 70 i- (:datagram :binary))) Err bitreich.org 70 i- ((subtypep element-type 'character) Err bitreich.org 70 i- :text) Err bitreich.org 70 i- (t :binary))) Err bitreich.org 70 i- Err bitreich.org 70 i-#-ipv6 Err bitreich.org 70 i-(defun socket-connect (host port &key (protocol :stream) element-type Err bitreich.org 70 i- timeout deadline nodelay Err bitreich.org 70 i- local-host local-port) Err bitreich.org 70 i- (when (eq nodelay :if-supported) Err bitreich.org 70 i- (setf nodelay t)) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (ecase protocol Err bitreich.org 70 i- (:stream Err bitreich.org 70 i- (let ((mcl-sock Err bitreich.org 70 i- (openmcl-socket:make-socket :remote-host (host-to-hostname host) Err bitreich.org 70 i- :remote-port port Err bitreich.org 70 i- :local-host local-host Err bitreich.org 70 i- :local-port local-port Err bitreich.org 70 i- :format (to-format element-type protocol) Err bitreich.org 70 i- :external-format ccl:*default-external-format* Err bitreich.org 70 i- :deadline deadline Err bitreich.org 70 i- :nodelay nodelay Err bitreich.org 70 i- :connect-timeout timeout))) Err bitreich.org 70 i- (make-stream-socket :stream mcl-sock :socket mcl-sock))) Err bitreich.org 70 i- (:datagram Err bitreich.org 70 i- (let* ((mcl-sock Err bitreich.org 70 i- (openmcl-socket:make-socket :address-family :internet Err bitreich.org 70 i- :type :datagram Err bitreich.org 70 i- :local-host local-host Err bitreich.org 70 i- :local-port local-port Err bitreich.org 70 i- :input-timeout timeout Err bitreich.org 70 i- :format (to-format element-type protocol) Err bitreich.org 70 i- :external-format ccl:*default-external-format*)) Err bitreich.org 70 i- (usocket (make-datagram-socket mcl-sock))) Err bitreich.org 70 i- (when (and host port) Err bitreich.org 70 i- (ccl::inet-connect (ccl::socket-device mcl-sock) Err bitreich.org 70 i- (ccl::host-as-inet-host host) Err bitreich.org 70 i- (ccl::port-as-inet-port port "udp"))) Err bitreich.org 70 i- (setf (connected-p usocket) t) Err bitreich.org 70 i- usocket))))) Err bitreich.org 70 i- Err bitreich.org 70 i-#-ipv6 Err bitreich.org 70 i-(defun socket-listen (host port Err bitreich.org 70 i- &key reuseaddress Err bitreich.org 70 i- (reuse-address nil reuse-address-supplied-p) Err bitreich.org 70 i- (backlog 5) Err bitreich.org 70 i- (element-type 'character)) Err bitreich.org 70 i- (let* ((reuseaddress (if reuse-address-supplied-p reuse-address reuseaddress)) Err bitreich.org 70 i- (real-host (host-to-hostname host)) Err bitreich.org 70 i- (sock (with-mapped-conditions () Err bitreich.org 70 i- (apply #'openmcl-socket:make-socket Err bitreich.org 70 i- (append (list :connect :passive Err bitreich.org 70 i- :reuse-address reuseaddress Err bitreich.org 70 i- :local-port port Err bitreich.org 70 i- :backlog backlog Err bitreich.org 70 i- :format (to-format element-type :stream)) Err bitreich.org 70 i- (unless (eq host *wildcard-host*) Err bitreich.org 70 i- (list :local-host real-host))))))) Err bitreich.org 70 i- (make-stream-server-socket sock :element-type element-type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-accept ((usocket stream-server-usocket) &key element-type) Err bitreich.org 70 i- (declare (ignore element-type)) ;; openmcl streams are bi/multivalent Err bitreich.org 70 i- (let ((sock (with-mapped-conditions (usocket) Err bitreich.org 70 i- (openmcl-socket:accept-connection (socket usocket))))) Err bitreich.org 70 i- (make-stream-socket :socket sock :stream sock))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; One close method is sufficient because sockets Err bitreich.org 70 i-;; and their associated objects are represented Err bitreich.org 70 i-;; by the same object. Err bitreich.org 70 i-(defmethod socket-close ((usocket usocket)) Err bitreich.org 70 i- (when (wait-list usocket) Err bitreich.org 70 i- (remove-waiter (wait-list usocket) usocket)) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (close (socket usocket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-shutdown ((usocket usocket) direction) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (openmcl-socket:shutdown (socket usocket) :direction direction))) Err bitreich.org 70 i- Err bitreich.org 70 i-#-ipv6 Err bitreich.org 70 i-(defmethod socket-send ((usocket datagram-usocket) buffer size &key host port (offset 0)) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (if (and host port) Err bitreich.org 70 i- (openmcl-socket:send-to (socket usocket) buffer size Err bitreich.org 70 i- :remote-host (host-to-hbo host) Err bitreich.org 70 i- :remote-port port Err bitreich.org 70 i- :offset offset) Err bitreich.org 70 i- ;; Clozure CL's socket function SEND-TO doesn't support operations on connected UDP sockets, Err bitreich.org 70 i- ;; so we have to define our own. Err bitreich.org 70 i- (let* ((socket (socket usocket)) Err bitreich.org 70 i- (fd (ccl::socket-device socket))) Err bitreich.org 70 i- (multiple-value-setq (buffer offset) Err bitreich.org 70 i- (ccl::verify-socket-buffer buffer offset size)) Err bitreich.org 70 i- (ccl::%stack-block ((bufptr size)) Err bitreich.org 70 i- (ccl::%copy-ivector-to-ptr buffer offset bufptr 0 size) Err bitreich.org 70 i- (ccl::socket-call socket "send" Err bitreich.org 70 i- (ccl::with-eagain fd :output Err bitreich.org 70 i- (ccl::ignoring-eintr Err bitreich.org 70 i- (ccl::check-socket-error (#_send fd bufptr size 0)))))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-receive ((usocket datagram-usocket) buffer length &key) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (openmcl-socket:receive-from (socket usocket) length :buffer buffer))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun usocket-host-address (address) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((integerp address) Err bitreich.org 70 i- (hbo-to-vector-quad address)) Err bitreich.org 70 i- ((and (arrayp address) Err bitreich.org 70 i- (= (length address) 16) Err bitreich.org 70 i- (every #'= address #(0 0 0 0 0 0 0 0 0 0 #xff #xff))) Err bitreich.org 70 i- (make-array 4 :displaced-to address :displaced-index-offset 12)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- address))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-address ((usocket usocket)) Err bitreich.org 70 i- (usocket-host-address (openmcl-socket:local-host (socket usocket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-address ((usocket stream-usocket)) Err bitreich.org 70 i- (usocket-host-address (openmcl-socket:remote-host (socket usocket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-port ((usocket usocket)) Err bitreich.org 70 i- (openmcl-socket:local-port (socket usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-port ((usocket stream-usocket)) Err bitreich.org 70 i- (openmcl-socket:remote-port (socket usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-name ((usocket usocket)) Err bitreich.org 70 i- (values (get-local-address usocket) Err bitreich.org 70 i- (get-local-port usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-name ((usocket stream-usocket)) Err bitreich.org 70 i- (values (get-peer-address usocket) Err bitreich.org 70 i- (get-peer-port usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-host-by-address (address) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (openmcl-socket:ipaddr-to-hostname (host-to-hbo address)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-hosts-by-name (name) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (list (hbo-to-vector-quad (openmcl-socket:lookup-hostname Err bitreich.org 70 i- (host-to-hostname name)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %setup-wait-list (wait-list) Err bitreich.org 70 i- (declare (ignore wait-list))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %add-waiter (wait-list waiter) Err bitreich.org 70 i- (declare (ignore wait-list waiter))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %remove-waiter (wait-list waiter) Err bitreich.org 70 i- (declare (ignore wait-list waiter))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun wait-for-input-internal (wait-list &key timeout) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (let* ((ticks-timeout (truncate (* (or timeout 1) Err bitreich.org 70 i- ccl::*ticks-per-second*)))) Err bitreich.org 70 i- (input-available-p (wait-list-waiters wait-list) Err bitreich.org 70 i- (when timeout ticks-timeout)) Err bitreich.org 70 i- wait-list))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Helper functions for option.lisp Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-socket-option-reuseaddr (socket) Err bitreich.org 70 i- (ccl::int-getsockopt (ccl::socket-device socket) Err bitreich.org 70 i- #$SOL_SOCKET #$SO_REUSEADDR)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun set-socket-option-reuseaddr (socket value) Err bitreich.org 70 i- (ccl::int-setsockopt (ccl::socket-device socket) Err bitreich.org 70 i- #$SOL_SOCKET #$SO_REUSEADDR value)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-socket-option-broadcast (socket) Err bitreich.org 70 i- (ccl::int-getsockopt (ccl::socket-device socket) Err bitreich.org 70 i- #$SOL_SOCKET #$SO_BROADCAST)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun set-socket-option-broadcast (socket value) Err bitreich.org 70 i- (ccl::int-setsockopt (ccl::socket-device socket) Err bitreich.org 70 i- #$SOL_SOCKET #$SO_BROADCAST value)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-socket-option-tcp-nodelay (socket) Err bitreich.org 70 i- (ccl::int-getsockopt (ccl::socket-device socket) Err bitreich.org 70 i- #$IPPROTO_TCP #$TCP_NODELAY)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun set-socket-option-tcp-nodelay (socket value) Err bitreich.org 70 i- (ccl::int-setsockopt (ccl::socket-device socket) Err bitreich.org 70 i- #$IPPROTO_TCP #$TCP_NODELAY value)) Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/backend/sbcl.lisp b/3rdparties/software/usocket-0.7.1/backend/sbcl.lisp /scm/clic/file/3rdparties/software/usocket-0.7.1/backend/sbcl.lisp.gph bitreich.org 70 i@@ -1,876 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: Common-Lisp -*- Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; See LICENSE for licensing information. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :usocket) Err bitreich.org 70 i- Err bitreich.org 70 i-#+sbcl Err bitreich.org 70 i-(progn Err bitreich.org 70 i- #-win32 Err bitreich.org 70 i- (defun get-host-name () Err bitreich.org 70 i- (sb-unix:unix-gethostname)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; we assume winsock has already been loaded, after all, Err bitreich.org 70 i- ;; we already loaded sb-bsd-sockets and sb-alien Err bitreich.org 70 i- #+win32 Err bitreich.org 70 i- (defun get-host-name () Err bitreich.org 70 i- (sb-alien:with-alien ((buf (sb-alien:array sb-alien:char 256))) Err bitreich.org 70 i- (let ((result (sb-alien:alien-funcall Err bitreich.org 70 i- (sb-alien:extern-alien "gethostname" Err bitreich.org 70 i- (sb-alien:function sb-alien:int Err bitreich.org 70 i- (* sb-alien:char) Err bitreich.org 70 i- sb-alien:int)) Err bitreich.org 70 i- (sb-alien:cast buf (* sb-alien:char)) Err bitreich.org 70 i- 256))) Err bitreich.org 70 i- (when (= result 0) Err bitreich.org 70 i- (sb-alien:cast buf sb-alien:c-string)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and ecl (not ecl-bytecmp)) Err bitreich.org 70 i-(progn Err bitreich.org 70 i- #-:wsock Err bitreich.org 70 i- (ffi:clines Err bitreich.org 70 i- "#include " Err bitreich.org 70 i- "#include " Err bitreich.org 70 i- "#include ") Err bitreich.org 70 i- #+:wsock Err bitreich.org 70 i- (ffi:clines Err bitreich.org 70 i- "#ifndef FD_SETSIZE" Err bitreich.org 70 i- "#define FD_SETSIZE 1024" Err bitreich.org 70 i- "#endif" Err bitreich.org 70 i- "#include ") Err bitreich.org 70 i- Err bitreich.org 70 i- (ffi:clines Err bitreich.org 70 i- #+:msvc "#include " Err bitreich.org 70 i- #-:msvc "#include " Err bitreich.org 70 i- "#include ") Err bitreich.org 70 i-#| Err bitreich.org 70 i- #+:prefixed-api Err bitreich.org 70 i- (ffi:clines Err bitreich.org 70 i- "#define CONS(x, y) ecl_cons((x), (y))" Err bitreich.org 70 i- "#define MAKE_INTEGER(x) ecl_make_integer((x))") Err bitreich.org 70 i- #-:prefixed-api Err bitreich.org 70 i- (ffi:clines Err bitreich.org 70 i- "#define CONS(x, y) make_cons((x), (y))" Err bitreich.org 70 i- "#define MAKE_INTEGER(x) make_integer((x))") Err bitreich.org 70 i-|# Err bitreich.org 70 i- Err bitreich.org 70 i- (defun cerrno () Err bitreich.org 70 i- (ffi:c-inline () () :int Err bitreich.org 70 i- "errno" :one-liner t)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun fd-setsize () Err bitreich.org 70 i- (ffi:c-inline () () :fixnum Err bitreich.org 70 i- "FD_SETSIZE" :one-liner t)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun fdset-alloc () Err bitreich.org 70 i- (ffi:c-inline () () :pointer-void Err bitreich.org 70 i- "ecl_alloc_atomic(sizeof(fd_set))" :one-liner t)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun fdset-zero (fdset) Err bitreich.org 70 i- (ffi:c-inline (fdset) (:pointer-void) :void Err bitreich.org 70 i- "FD_ZERO((fd_set*)#0)" :one-liner t)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun fdset-set (fdset fd) Err bitreich.org 70 i- (ffi:c-inline (fdset fd) (:pointer-void :fixnum) :void Err bitreich.org 70 i- "FD_SET(#1,(fd_set*)#0)" :one-liner t)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun fdset-clr (fdset fd) Err bitreich.org 70 i- (ffi:c-inline (fdset fd) (:pointer-void :fixnum) :void Err bitreich.org 70 i- "FD_CLR(#1,(fd_set*)#0)" :one-liner t)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun fdset-fd-isset (fdset fd) Err bitreich.org 70 i- (ffi:c-inline (fdset fd) (:pointer-void :fixnum) :bool Err bitreich.org 70 i- "FD_ISSET(#1,(fd_set*)#0)" :one-liner t)) Err bitreich.org 70 i- Err bitreich.org 70 i- (declaim (inline cerrno Err bitreich.org 70 i- fd-setsize Err bitreich.org 70 i- fdset-alloc Err bitreich.org 70 i- fdset-zero Err bitreich.org 70 i- fdset-set Err bitreich.org 70 i- fdset-clr Err bitreich.org 70 i- fdset-fd-isset)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun get-host-name () Err bitreich.org 70 i- (ffi:c-inline Err bitreich.org 70 i- () () :object Err bitreich.org 70 i- "{ char *buf = (char *) ecl_alloc_atomic(257); Err bitreich.org 70 i- Err bitreich.org 70 i- if (gethostname(buf,256) == 0) Err bitreich.org 70 i- @(return) = make_simple_base_string(buf); Err bitreich.org 70 i- else Err bitreich.org 70 i- @(return) = Cnil; Err bitreich.org 70 i- }" :one-liner nil :side-effects nil)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun read-select (wl to-secs &optional (to-musecs 0)) Err bitreich.org 70 i- (let* ((sockets (wait-list-waiters wl)) Err bitreich.org 70 i- (rfds (wait-list-%wait wl)) Err bitreich.org 70 i- (max-fd (reduce #'(lambda (x y) Err bitreich.org 70 i- (let ((sy (sb-bsd-sockets:socket-file-descriptor Err bitreich.org 70 i- (socket y)))) Err bitreich.org 70 i- (if (< x sy) sy x))) Err bitreich.org 70 i- (cdr sockets) Err bitreich.org 70 i- :initial-value (sb-bsd-sockets:socket-file-descriptor Err bitreich.org 70 i- (socket (car sockets)))))) Err bitreich.org 70 i- (fdset-zero rfds) Err bitreich.org 70 i- (dolist (sock sockets) Err bitreich.org 70 i- (fdset-set rfds (sb-bsd-sockets:socket-file-descriptor Err bitreich.org 70 i- (socket sock)))) Err bitreich.org 70 i- (let ((count Err bitreich.org 70 i- (ffi:c-inline (to-secs to-musecs rfds max-fd) Err bitreich.org 70 i- (t :unsigned-int :pointer-void :int) Err bitreich.org 70 i- :int Err bitreich.org 70 i- " Err bitreich.org 70 i- int count; Err bitreich.org 70 i- struct timeval tv; Err bitreich.org 70 i- Err bitreich.org 70 i- if (#0 != Cnil) { Err bitreich.org 70 i- tv.tv_sec = fixnnint(#0); Err bitreich.org 70 i- tv.tv_usec = #1; Err bitreich.org 70 i- } Err bitreich.org 70 i- @(return) = select(#3 + 1, (fd_set*)#2, NULL, NULL, Err bitreich.org 70 i- (#0 != Cnil) ? &tv : NULL); Err bitreich.org 70 i-" :one-liner nil))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((= 0 count) Err bitreich.org 70 i- (values nil nil)) Err bitreich.org 70 i- ((< count 0) Err bitreich.org 70 i- ;; check for EINTR and EAGAIN; these should not err Err bitreich.org 70 i- (values nil (cerrno))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (dolist (sock sockets) Err bitreich.org 70 i- (when (fdset-fd-isset rfds (sb-bsd-sockets:socket-file-descriptor Err bitreich.org 70 i- (socket sock))) Err bitreich.org 70 i- (setf (state sock) :READ)))))))) Err bitreich.org 70 i-) ; progn Err bitreich.org 70 i- Err bitreich.org 70 i-(defun map-socket-error (sock-err) Err bitreich.org 70 i- (map-errno-error (sb-bsd-sockets::socket-error-errno sock-err))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter +sbcl-condition-map+ Err bitreich.org 70 i- '((interrupted-error . interrupted-condition))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter +sbcl-error-map+ Err bitreich.org 70 i- `((sb-bsd-sockets:address-in-use-error . address-in-use-error) Err bitreich.org 70 i- (sb-bsd-sockets::no-address-error . address-not-available-error) Err bitreich.org 70 i- (sb-bsd-sockets:bad-file-descriptor-error . bad-file-descriptor-error) Err bitreich.org 70 i- (sb-bsd-sockets:connection-refused-error . connection-refused-error) Err bitreich.org 70 i- (sb-bsd-sockets:invalid-argument-error . invalid-argument-error) Err bitreich.org 70 i- (sb-bsd-sockets:no-buffers-error . no-buffers-error) Err bitreich.org 70 i- (sb-bsd-sockets:operation-not-supported-error Err bitreich.org 70 i- . operation-not-supported-error) Err bitreich.org 70 i- (sb-bsd-sockets:operation-not-permitted-error Err bitreich.org 70 i- . operation-not-permitted-error) Err bitreich.org 70 i- (sb-bsd-sockets:protocol-not-supported-error Err bitreich.org 70 i- . protocol-not-supported-error) Err bitreich.org 70 i- #-ecl Err bitreich.org 70 i- (sb-bsd-sockets:unknown-protocol Err bitreich.org 70 i- . protocol-not-supported-error) Err bitreich.org 70 i- (sb-bsd-sockets:socket-type-not-supported-error Err bitreich.org 70 i- . socket-type-not-supported-error) Err bitreich.org 70 i- (sb-bsd-sockets:network-unreachable-error . network-unreachable-error) Err bitreich.org 70 i- (sb-bsd-sockets:operation-timeout-error . timeout-error) Err bitreich.org 70 i- #-ecl Err bitreich.org 70 i- (sb-sys:io-timeout . timeout-error) Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- (sb-ext:timeout . timeout-error) Err bitreich.org 70 i- (sb-bsd-sockets:socket-error . ,#'map-socket-error) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Nameservice errors: mapped to unknown-error Err bitreich.org 70 i- #-ecl Err bitreich.org 70 i- (sb-bsd-sockets:no-recovery-error . ns-no-recovery-error) Err bitreich.org 70 i- #-ecl Err bitreich.org 70 i- (sb-bsd-sockets:try-again-error . ns-try-again-condition) Err bitreich.org 70 i- #-ecl Err bitreich.org 70 i- (sb-bsd-sockets:host-not-found-error . ns-host-not-found-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun handle-condition (condition &optional (socket nil)) Err bitreich.org 70 i- "Dispatch correct usocket condition." Err bitreich.org 70 i- (typecase condition Err bitreich.org 70 i- (serious-condition Err bitreich.org 70 i- (let* ((usock-error (cdr (assoc (type-of condition) +sbcl-error-map+))) Err bitreich.org 70 i- (usock-error (if (functionp usock-error) Err bitreich.org 70 i- (funcall usock-error condition) Err bitreich.org 70 i- usock-error))) Err bitreich.org 70 i- (when usock-error Err bitreich.org 70 i- (error usock-error :socket socket)))) Err bitreich.org 70 i- (condition (let* ((usock-cond (cdr (assoc (type-of condition) Err bitreich.org 70 i- +sbcl-condition-map+))) Err bitreich.org 70 i- (usock-cond (if (functionp usock-cond) Err bitreich.org 70 i- (funcall usock-cond condition) Err bitreich.org 70 i- usock-cond))) Err bitreich.org 70 i- (if usock-cond Err bitreich.org 70 i- (signal usock-cond :socket socket)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; "The socket stream ends up with a bogus name as it is created before Err bitreich.org 70 i-;;; the socket is connected, making things harder to debug than they need Err bitreich.org 70 i-;;; to be." -- Nikodemus Siivola Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *dummy-stream* Err bitreich.org 70 i- (let ((stream (make-broadcast-stream))) Err bitreich.org 70 i- (close stream) Err bitreich.org 70 i- stream)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Amusingly, neither SBCL's own, nor GBBopen's WITH-TIMEOUT is asynch Err bitreich.org 70 i-;;; unwind safe. The one I posted is -- that's what the WITHOUT-INTERRUPTS Err bitreich.org 70 i-;;; and WITH-LOCAL-INTERRUPTS were for. :) But yeah, it's miles saner than Err bitreich.org 70 i-;;; the SB-EXT:WITH-TIMEOUT. -- Nikodemus Siivola Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and sbcl (not win32)) Err bitreich.org 70 i-(defmacro %with-timeout ((seconds timeout-form) &body body) Err bitreich.org 70 i- "Runs BODY as an implicit PROGN with timeout of SECONDS. If Err bitreich.org 70 i-timeout occurs before BODY has finished, BODY is unwound and Err bitreich.org 70 i-TIMEOUT-FORM is executed with its values returned instead. Err bitreich.org 70 i- Err bitreich.org 70 i-Note that BODY is unwound asynchronously when a timeout occurs, Err bitreich.org 70 i-so unless all code executed during it -- including anything Err bitreich.org 70 i-down the call chain -- is asynch unwind safe, bad things will Err bitreich.org 70 i-happen. Use with care." Err bitreich.org 70 i- (let ((exec (gensym)) (unwind (gensym)) (timer (gensym)) Err bitreich.org 70 i- (timeout (gensym)) (block (gensym))) Err bitreich.org 70 i- `(block ,block Err bitreich.org 70 i- (tagbody Err bitreich.org 70 i- (flet ((,unwind () Err bitreich.org 70 i- (go ,timeout)) Err bitreich.org 70 i- (,exec () Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- (declare (dynamic-extent #',exec #',unwind)) Err bitreich.org 70 i- (let ((,timer (sb-ext:make-timer #',unwind))) Err bitreich.org 70 i- (declare (dynamic-extent ,timer)) Err bitreich.org 70 i- (sb-sys:without-interrupts Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (sb-ext:schedule-timer ,timer ,seconds) Err bitreich.org 70 i- (return-from ,block Err bitreich.org 70 i- (sb-sys:with-local-interrupts Err bitreich.org 70 i- (,exec)))) Err bitreich.org 70 i- (sb-ext:unschedule-timer ,timer))))) Err bitreich.org 70 i- ,timeout Err bitreich.org 70 i- (return-from ,block ,timeout-form))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-hosts-by-name (name) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (multiple-value-bind (host4 host6) Err bitreich.org 70 i- (sb-bsd-sockets:get-host-by-name name) Err bitreich.org 70 i- (let ((addr4 (when host4 Err bitreich.org 70 i- (sb-bsd-sockets::host-ent-addresses host4))) Err bitreich.org 70 i- (addr6 (when host6 Err bitreich.org 70 i- (sb-bsd-sockets::host-ent-addresses host6)))) Err bitreich.org 70 i- (append addr4 addr6))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun socket-connect (host port &key (protocol :stream) (element-type 'character) Err bitreich.org 70 i- timeout deadline (nodelay t nodelay-specified) Err bitreich.org 70 i- local-host local-port Err bitreich.org 70 i- &aux Err bitreich.org 70 i- (sockopt-tcp-nodelay-p Err bitreich.org 70 i- (fboundp 'sb-bsd-sockets::sockopt-tcp-nodelay))) Err bitreich.org 70 i- (when deadline (unsupported 'deadline 'socket-connect)) Err bitreich.org 70 i- #+ecl Err bitreich.org 70 i- (when timeout (unsupported 'timeout 'socket-connect)) Err bitreich.org 70 i- (when (and nodelay-specified Err bitreich.org 70 i- ;; 20080802: ECL added this function to its sockets Err bitreich.org 70 i- ;; package today. There's no guarantee the functions Err bitreich.org 70 i- ;; we need are available, but we can make sure not to Err bitreich.org 70 i- ;; call them if they aren't Err bitreich.org 70 i- (not (eq nodelay :if-supported)) Err bitreich.org 70 i- (not sockopt-tcp-nodelay-p)) Err bitreich.org 70 i- (unsupported 'nodelay 'socket-connect)) Err bitreich.org 70 i- (when (eq nodelay :if-supported) Err bitreich.org 70 i- (setf nodelay t)) Err bitreich.org 70 i- Err bitreich.org 70 i- (let* ((remote (when host Err bitreich.org 70 i- (car (get-hosts-by-name (host-to-hostname host))))) Err bitreich.org 70 i- (local (when local-host Err bitreich.org 70 i- (car (get-hosts-by-name (host-to-hostname local-host))))) Err bitreich.org 70 i- (ipv6 (or (and remote (= 16 (length remote))) Err bitreich.org 70 i- (and local (= 16 (length local))))) Err bitreich.org 70 i- (socket (make-instance #+sbcl (if ipv6 Err bitreich.org 70 i- 'sb-bsd-sockets::inet6-socket Err bitreich.org 70 i- 'sb-bsd-sockets:inet-socket) Err bitreich.org 70 i- #+ecl 'sb-bsd-sockets:inet-socket Err bitreich.org 70 i- :type protocol Err bitreich.org 70 i- :protocol (case protocol Err bitreich.org 70 i- (:stream :tcp) Err bitreich.org 70 i- (:datagram :udp)))) Err bitreich.org 70 i- usocket Err bitreich.org 70 i- ok) Err bitreich.org 70 i- Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (ecase protocol Err bitreich.org 70 i- (:stream Err bitreich.org 70 i- ;; If make a real socket stream before the socket is Err bitreich.org 70 i- ;; connected, it gets a misleading name so supply a Err bitreich.org 70 i- ;; dummy value to start with. Err bitreich.org 70 i- (setf usocket (make-stream-socket :socket socket :stream *dummy-stream*)) Err bitreich.org 70 i- ;; binghe: use SOCKOPT-TCP-NODELAY as internal symbol Err bitreich.org 70 i- ;; to pass compilation on ECL without it. Err bitreich.org 70 i- (when (and nodelay-specified sockopt-tcp-nodelay-p) Err bitreich.org 70 i- (setf (sb-bsd-sockets::sockopt-tcp-nodelay socket) nodelay)) Err bitreich.org 70 i- (when (or local-host local-port) Err bitreich.org 70 i- (sb-bsd-sockets:socket-bind socket Err bitreich.org 70 i- (if ipv6 Err bitreich.org 70 i- (or local (ipv6-host-to-vector "::0")) Err bitreich.org 70 i- (or local (host-to-vector-quad *wildcard-host*))) Err bitreich.org 70 i- (or local-port *auto-port*))) Err bitreich.org 70 i- Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- #+(and sbcl (not win32)) Err bitreich.org 70 i- (labels ((connect () Err bitreich.org 70 i- (sb-bsd-sockets:socket-connect socket remote port))) Err bitreich.org 70 i- (if timeout Err bitreich.org 70 i- (%with-timeout (timeout (error 'sb-ext:timeout)) (connect)) Err bitreich.org 70 i- (connect))) Err bitreich.org 70 i- #+(or ecl (and sbcl win32)) Err bitreich.org 70 i- (sb-bsd-sockets:socket-connect socket remote port) Err bitreich.org 70 i- ;; Now that we're connected make the stream. Err bitreich.org 70 i- (setf (socket-stream usocket) Err bitreich.org 70 i- (sb-bsd-sockets:socket-make-stream socket Err bitreich.org 70 i- :input t :output t :buffering :full Err bitreich.org 70 i- :element-type element-type Err bitreich.org 70 i- ;; Robert Brown said on Aug 4, 2011: Err bitreich.org 70 i- ;; ... This means that SBCL streams created by usocket have a true Err bitreich.org 70 i- ;; serve-events property. When writing large amounts of data to several Err bitreich.org 70 i- ;; streams, the kernel will eventually stop accepting data from SBCL. Err bitreich.org 70 i- ;; When this happens, SBCL either waits for I/O to be possible on Err bitreich.org 70 i- ;; the file descriptor it's writing to or queues the data to be flushed later. Err bitreich.org 70 i- ;; Because usocket streams specify serve-events as true, SBCL Err bitreich.org 70 i- ;; always queues. Instead, it should wait for I/O to be available and Err bitreich.org 70 i- ;; write the remaining data to the socket. That's what serve-events Err bitreich.org 70 i- ;; equal to NIL gets you. Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; Nikodemus Siivola said on Aug 8, 2011: Err bitreich.org 70 i- ;; It's set to T for purely historical reasons, and will soon change to Err bitreich.org 70 i- ;; NIL in SBCL. (The docstring has warned of T being a temporary default Err bitreich.org 70 i- ;; for as long as the :SERVE-EVENTS keyword argument has existed.) Err bitreich.org 70 i- :serve-events nil)))) Err bitreich.org 70 i- (:datagram Err bitreich.org 70 i- (when (or local-host local-port) Err bitreich.org 70 i- (sb-bsd-sockets:socket-bind socket Err bitreich.org 70 i- (if ipv6 Err bitreich.org 70 i- (or local (ipv6-host-to-vector "::0")) Err bitreich.org 70 i- (or local (host-to-vector-quad *wildcard-host*))) Err bitreich.org 70 i- (or local-port *auto-port*))) Err bitreich.org 70 i- (setf usocket (make-datagram-socket socket)) Err bitreich.org 70 i- (when (and host port) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (sb-bsd-sockets:socket-connect socket remote port) Err bitreich.org 70 i- (setf (connected-p usocket) t))))) Err bitreich.org 70 i- (setf ok t)) Err bitreich.org 70 i- ;; Clean up in case of an error. Err bitreich.org 70 i- (unless ok Err bitreich.org 70 i- (sb-bsd-sockets:socket-close socket :abort t))) Err bitreich.org 70 i- usocket)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun socket-listen (host port Err bitreich.org 70 i- &key reuseaddress Err bitreich.org 70 i- (reuse-address nil reuse-address-supplied-p) Err bitreich.org 70 i- (backlog 5) Err bitreich.org 70 i- (element-type 'character)) Err bitreich.org 70 i- (let* (#+sbcl Err bitreich.org 70 i- (local (when host Err bitreich.org 70 i- (car (get-hosts-by-name (host-to-hostname host))))) Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- (ipv6 (and local (= 16 (length local)))) Err bitreich.org 70 i- (reuseaddress (if reuse-address-supplied-p reuse-address reuseaddress)) Err bitreich.org 70 i- (ip #+sbcl (if (and local (not (eq host *wildcard-host*))) Err bitreich.org 70 i- local Err bitreich.org 70 i- (hbo-to-vector-quad sb-bsd-sockets-internal::inaddr-any)) Err bitreich.org 70 i- #+ecl (host-to-vector-quad host)) Err bitreich.org 70 i- (sock (make-instance #+sbcl (if ipv6 Err bitreich.org 70 i- 'sb-bsd-sockets::inet6-socket Err bitreich.org 70 i- 'sb-bsd-sockets:inet-socket) Err bitreich.org 70 i- #+ecl 'sb-bsd-sockets:inet-socket Err bitreich.org 70 i- :type :stream Err bitreich.org 70 i- :protocol :tcp))) Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (setf (sb-bsd-sockets:sockopt-reuse-address sock) reuseaddress) Err bitreich.org 70 i- (sb-bsd-sockets:socket-bind sock ip port) Err bitreich.org 70 i- (sb-bsd-sockets:socket-listen sock backlog) Err bitreich.org 70 i- (make-stream-server-socket sock :element-type element-type)) Err bitreich.org 70 i- (t (c) Err bitreich.org 70 i- ;; Make sure we don't leak filedescriptors Err bitreich.org 70 i- (sb-bsd-sockets:socket-close sock) Err bitreich.org 70 i- (error c))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; "2. SB-BSD-SOCKETS:SOCKET-ACCEPT method returns NIL for EAGAIN/EINTR, Err bitreich.org 70 i-;;; instead of raising a condition. It's always possible for Err bitreich.org 70 i-;;; SOCKET-ACCEPT on non-blocking socket to fail, even after the socket Err bitreich.org 70 i-;;; was detected to be ready: connection might be reset, for example. Err bitreich.org 70 i-;;; Err bitreich.org 70 i-;;; "I had to redefine SOCKET-ACCEPT method of STREAM-SERVER-USOCKET to Err bitreich.org 70 i-;;; handle this situation. Here is the redefinition:" -- Anton Kovalenko Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-accept ((usocket stream-server-usocket) &key element-type) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (let ((socket (sb-bsd-sockets:socket-accept (socket usocket)))) Err bitreich.org 70 i- (when socket Err bitreich.org 70 i- (prog1 Err bitreich.org 70 i- (make-stream-socket Err bitreich.org 70 i- :socket socket Err bitreich.org 70 i- :stream (sb-bsd-sockets:socket-make-stream Err bitreich.org 70 i- socket Err bitreich.org 70 i- :input t :output t :buffering :full Err bitreich.org 70 i- :element-type (or element-type Err bitreich.org 70 i- (element-type usocket)))) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; next time wait for event again if we had EAGAIN/EINTR Err bitreich.org 70 i- ;; or else we'd enter a tight loop of failed accepts Err bitreich.org 70 i- #+win32 Err bitreich.org 70 i- (setf (%ready-p usocket) nil)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Sockets and their associated streams are modelled as Err bitreich.org 70 i-;; different objects. Be sure to close the stream (which Err bitreich.org 70 i-;; closes the socket too) when closing a stream-socket. Err bitreich.org 70 i-(defmethod socket-close ((usocket usocket)) Err bitreich.org 70 i- (when (wait-list usocket) Err bitreich.org 70 i- (remove-waiter (wait-list usocket) usocket)) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (sb-bsd-sockets:socket-close (socket usocket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-close ((usocket stream-usocket)) Err bitreich.org 70 i- (when (wait-list usocket) Err bitreich.org 70 i- (remove-waiter (wait-list usocket) usocket)) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (close (socket-stream usocket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+sbcl Err bitreich.org 70 i-(defmethod socket-shutdown ((usocket stream-usocket) direction) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (sb-bsd-sockets::socket-shutdown (socket usocket) :direction direction))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+ecl Err bitreich.org 70 i-(defmethod socket-shutdown ((usocket stream-usocket) direction) Err bitreich.org 70 i- (let ((sock-fd (sb-bsd-sockets:socket-file-descriptor (socket usocket))) Err bitreich.org 70 i- (direction-flag (ecase direction Err bitreich.org 70 i- (:input 0) Err bitreich.org 70 i- (:output 1)))) Err bitreich.org 70 i- (unless (zerop (ffi:c-inline (sock-fd direction-flag) (:int :int) :int Err bitreich.org 70 i- "shutdown(#0, #1)" :one-liner t)) Err bitreich.org 70 i- (error (map-errno-error (cerrno)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-send ((usocket datagram-usocket) buffer size &key host port (offset 0)) Err bitreich.org 70 i- (let ((remote (when host Err bitreich.org 70 i- (car (get-hosts-by-name (host-to-hostname host)))))) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (let* ((s (socket usocket)) Err bitreich.org 70 i- (dest (if (and host port) (list remote port) nil)) Err bitreich.org 70 i- (real-buffer (if (zerop offset) Err bitreich.org 70 i- buffer Err bitreich.org 70 i- (subseq buffer offset (+ offset size))))) Err bitreich.org 70 i- (sb-bsd-sockets:socket-send s real-buffer size :address dest))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-receive ((socket datagram-usocket) buffer length Err bitreich.org 70 i- &key (element-type '(unsigned-byte 8))) Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- (declare (values (simple-array (unsigned-byte 8) (*)) ; buffer Err bitreich.org 70 i- (integer 0) ; size Err bitreich.org 70 i- (simple-array (unsigned-byte 8) (*)) ; host Err bitreich.org 70 i- (unsigned-byte 16))) ; port Err bitreich.org 70 i- (with-mapped-conditions (socket) Err bitreich.org 70 i- (let ((s (socket socket))) Err bitreich.org 70 i- (sb-bsd-sockets:socket-receive s buffer length :element-type element-type)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-name ((usocket usocket)) Err bitreich.org 70 i- (sb-bsd-sockets:socket-name (socket usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-name ((usocket stream-usocket)) Err bitreich.org 70 i- (sb-bsd-sockets:socket-peername (socket usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-address ((usocket usocket)) Err bitreich.org 70 i- (nth-value 0 (get-local-name usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-address ((usocket stream-usocket)) Err bitreich.org 70 i- (nth-value 0 (get-peer-name usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-port ((usocket usocket)) Err bitreich.org 70 i- (nth-value 1 (get-local-name usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-port ((usocket stream-usocket)) Err bitreich.org 70 i- (nth-value 1 (get-peer-name usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-host-by-address (address) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (sb-bsd-sockets::host-ent-name Err bitreich.org 70 i- (sb-bsd-sockets:get-host-by-address address)))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and sbcl (not win32)) Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (defun %setup-wait-list (wait-list) Err bitreich.org 70 i- (declare (ignore wait-list))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %add-waiter (wait-list waiter) Err bitreich.org 70 i- (push (socket waiter) (wait-list-%wait wait-list))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %remove-waiter (wait-list waiter) Err bitreich.org 70 i- (setf (wait-list-%wait wait-list) Err bitreich.org 70 i- (remove (socket waiter) (wait-list-%wait wait-list)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun wait-for-input-internal (sockets &key timeout) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (sb-alien:with-alien ((rfds (sb-alien:struct sb-unix:fd-set))) Err bitreich.org 70 i- (sb-unix:fd-zero rfds) Err bitreich.org 70 i- (dolist (socket (wait-list-%wait sockets)) Err bitreich.org 70 i- (sb-unix:fd-set Err bitreich.org 70 i- (sb-bsd-sockets:socket-file-descriptor socket) Err bitreich.org 70 i- rfds)) Err bitreich.org 70 i- (multiple-value-bind Err bitreich.org 70 i- (secs musecs) Err bitreich.org 70 i- (split-timeout (or timeout 1)) Err bitreich.org 70 i- (multiple-value-bind Err bitreich.org 70 i- (count err) Err bitreich.org 70 i- (sb-unix:unix-fast-select Err bitreich.org 70 i- (1+ (reduce #'max (wait-list-%wait sockets) Err bitreich.org 70 i- :key #'sb-bsd-sockets:socket-file-descriptor)) Err bitreich.org 70 i- (sb-alien:addr rfds) nil nil Err bitreich.org 70 i- (when timeout secs) (when timeout musecs)) Err bitreich.org 70 i- (if (null count) Err bitreich.org 70 i- (unless (= err sb-unix:EINTR) Err bitreich.org 70 i- (error (map-errno-error err))) Err bitreich.org 70 i- (when (< 0 count) Err bitreich.org 70 i- ;; process the result... Err bitreich.org 70 i- (dolist (x (wait-list-waiters sockets)) Err bitreich.org 70 i- (when (sb-unix:fd-isset Err bitreich.org 70 i- (sb-bsd-sockets:socket-file-descriptor Err bitreich.org 70 i- (socket x)) Err bitreich.org 70 i- rfds) Err bitreich.org 70 i- (setf (state x) :READ)))))))))) Err bitreich.org 70 i-) ; progn Err bitreich.org 70 i- Err bitreich.org 70 i-;;; WAIT-FOR-INPUT support for SBCL on Windows platform (Chun Tian (binghe)) Err bitreich.org 70 i-;;; Based on LispWorks version written by Erik Huelsmann. Err bitreich.org 70 i- Err bitreich.org 70 i-#+win32 ; shared by ECL and SBCL Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (defconstant +wsa-wait-failed+ #xffffffff) Err bitreich.org 70 i- (defconstant +wsa-infinite+ #xffffffff) Err bitreich.org 70 i- (defconstant +wsa-wait-event-0+ 0) Err bitreich.org 70 i- (defconstant +wsa-wait-timeout+ 258)) Err bitreich.org 70 i- Err bitreich.org 70 i-#+win32 ; shared by ECL and SBCL Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (defconstant fd-read 1) Err bitreich.org 70 i- (defconstant fd-read-bit 0) Err bitreich.org 70 i- (defconstant fd-write 2) Err bitreich.org 70 i- (defconstant fd-write-bit 1) Err bitreich.org 70 i- (defconstant fd-oob 4) Err bitreich.org 70 i- (defconstant fd-oob-bit 2) Err bitreich.org 70 i- (defconstant fd-accept 8) Err bitreich.org 70 i- (defconstant fd-accept-bit 3) Err bitreich.org 70 i- (defconstant fd-connect 16) Err bitreich.org 70 i- (defconstant fd-connect-bit 4) Err bitreich.org 70 i- (defconstant fd-close 32) Err bitreich.org 70 i- (defconstant fd-close-bit 5) Err bitreich.org 70 i- (defconstant fd-qos 64) Err bitreich.org 70 i- (defconstant fd-qos-bit 6) Err bitreich.org 70 i- (defconstant fd-group-qos 128) Err bitreich.org 70 i- (defconstant fd-group-qos-bit 7) Err bitreich.org 70 i- (defconstant fd-routing-interface 256) Err bitreich.org 70 i- (defconstant fd-routing-interface-bit 8) Err bitreich.org 70 i- (defconstant fd-address-list-change 512) Err bitreich.org 70 i- (defconstant fd-address-list-change-bit 9) Err bitreich.org 70 i- (defconstant fd-max-events 10) Err bitreich.org 70 i- (defconstant fionread 1074030207) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; Note: for ECL, socket-handle will return raw Windows Handle, Err bitreich.org 70 i- ;; while SBCL returns OSF Handle instead. Err bitreich.org 70 i- (defun socket-handle (usocket) Err bitreich.org 70 i- (sb-bsd-sockets:socket-file-descriptor (socket usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun socket-ready-p (socket) Err bitreich.org 70 i- (if (typep socket 'stream-usocket) Err bitreich.org 70 i- (plusp (bytes-available-for-read socket)) Err bitreich.org 70 i- (%ready-p socket))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun waiting-required (sockets) Err bitreich.org 70 i- (notany #'socket-ready-p sockets)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun raise-usock-err (errno &optional socket) Err bitreich.org 70 i- (error 'unknown-error Err bitreich.org 70 i- :socket socket Err bitreich.org 70 i- :real-error errno)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun wait-for-input-internal (wait-list &key timeout) Err bitreich.org 70 i- (when (waiting-required (wait-list-waiters wait-list)) Err bitreich.org 70 i- (let ((rv (wsa-wait-for-multiple-events 1 (wait-list-%wait wait-list) Err bitreich.org 70 i- nil Err bitreich.org 70 i- (if timeout Err bitreich.org 70 i- (truncate (* 1000 timeout)) Err bitreich.org 70 i- +wsa-infinite+) Err bitreich.org 70 i- nil))) Err bitreich.org 70 i- (ecase rv Err bitreich.org 70 i- ((#.+wsa-wait-event-0+) Err bitreich.org 70 i- (update-ready-and-state-slots (wait-list-waiters wait-list))) Err bitreich.org 70 i- ((#.+wsa-wait-timeout+)) ; do nothing here Err bitreich.org 70 i- ((#.+wsa-wait-failed+) Err bitreich.org 70 i- (maybe-wsa-error rv)))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %add-waiter (wait-list waiter) Err bitreich.org 70 i- (let ((events (etypecase waiter Err bitreich.org 70 i- (stream-server-usocket (logior fd-connect fd-accept fd-close)) Err bitreich.org 70 i- (stream-usocket (logior fd-read)) Err bitreich.org 70 i- (datagram-usocket (logior fd-read))))) Err bitreich.org 70 i- (maybe-wsa-error Err bitreich.org 70 i- (wsa-event-select (os-socket-handle waiter) (os-wait-list-%wait wait-list) events) Err bitreich.org 70 i- waiter))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %remove-waiter (wait-list waiter) Err bitreich.org 70 i- (maybe-wsa-error Err bitreich.org 70 i- (wsa-event-select (os-socket-handle waiter) (os-wait-list-%wait wait-list) 0) Err bitreich.org 70 i- waiter)) Err bitreich.org 70 i-) ; progn Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and sbcl win32) Err bitreich.org 70 i-(progn Err bitreich.org 70 i- ;; "SOCKET is defined as intptr_t in Windows headers; however, WS-SOCKET Err bitreich.org 70 i- ;; is defined as unsigned-int, i.e. 32-bit even on 64-bit platform. It Err bitreich.org 70 i- ;; seems to be a good thing to redefine WS-SOCKET as SB-ALIEN:SIGNED, Err bitreich.org 70 i- ;; which is always machine word-sized (exactly as intptr_t; Err bitreich.org 70 i- ;; N.B. as of Windows/x64, long and signed-long are 32-bit, and thus not Err bitreich.org 70 i- ;; enough -- potentially)." Err bitreich.org 70 i- ;; -- Anton Kovalenko , Mar 22, 2011 Err bitreich.org 70 i- (sb-alien:define-alien-type ws-socket sb-alien:signed) Err bitreich.org 70 i- Err bitreich.org 70 i- (sb-alien:define-alien-type ws-dword sb-alien:unsigned-long) Err bitreich.org 70 i- (sb-alien:define-alien-type ws-event sb-alien::hinstance) Err bitreich.org 70 i- Err bitreich.org 70 i- (sb-alien:define-alien-type nil Err bitreich.org 70 i- (sb-alien:struct wsa-network-events Err bitreich.org 70 i- (network-events sb-alien:long) Err bitreich.org 70 i- (error-code (array sb-alien:int 10)))) ; 10 = fd-max-events Err bitreich.org 70 i- Err bitreich.org 70 i- (sb-alien:define-alien-routine ("WSACreateEvent" wsa-event-create) Err bitreich.org 70 i- ws-event) ; return type only Err bitreich.org 70 i- Err bitreich.org 70 i- (sb-alien:define-alien-routine ("WSACloseEvent" wsa-event-close) Err bitreich.org 70 i- (boolean #.sb-vm::n-machine-word-bits) Err bitreich.org 70 i- (event-object ws-event)) Err bitreich.org 70 i- Err bitreich.org 70 i- (sb-alien:define-alien-routine ("WSAEnumNetworkEvents" wsa-enum-network-events) Err bitreich.org 70 i- sb-alien:int Err bitreich.org 70 i- (socket ws-socket) Err bitreich.org 70 i- (event-object ws-event) Err bitreich.org 70 i- (network-events (* (sb-alien:struct wsa-network-events)))) Err bitreich.org 70 i- Err bitreich.org 70 i- (sb-alien:define-alien-routine ("WSAEventSelect" wsa-event-select) Err bitreich.org 70 i- sb-alien:int Err bitreich.org 70 i- (socket ws-socket) Err bitreich.org 70 i- (event-object ws-event) Err bitreich.org 70 i- (network-events sb-alien:long)) Err bitreich.org 70 i- Err bitreich.org 70 i- (sb-alien:define-alien-routine ("WSAWaitForMultipleEvents" wsa-wait-for-multiple-events) Err bitreich.org 70 i- ws-dword Err bitreich.org 70 i- (number-of-events ws-dword) Err bitreich.org 70 i- (events (* ws-event)) Err bitreich.org 70 i- (wait-all-p (boolean #.sb-vm::n-machine-word-bits)) Err bitreich.org 70 i- (timeout ws-dword) Err bitreich.org 70 i- (alertable-p (boolean #.sb-vm::n-machine-word-bits))) Err bitreich.org 70 i- Err bitreich.org 70 i- (sb-alien:define-alien-routine ("ioctlsocket" wsa-ioctlsocket) Err bitreich.org 70 i- sb-alien:int Err bitreich.org 70 i- (socket ws-socket) Err bitreich.org 70 i- (cmd sb-alien:long) Err bitreich.org 70 i- (argp (* sb-alien:unsigned-long))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun maybe-wsa-error (rv &optional socket) Err bitreich.org 70 i- (unless (zerop rv) Err bitreich.org 70 i- (raise-usock-err (sockint::wsa-get-last-error) socket))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun os-socket-handle (usocket) Err bitreich.org 70 i- (sb-bsd-sockets:socket-file-descriptor (socket usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun bytes-available-for-read (socket) Err bitreich.org 70 i- (sb-alien:with-alien ((int-ptr sb-alien:unsigned-long)) Err bitreich.org 70 i- (maybe-wsa-error (wsa-ioctlsocket (os-socket-handle socket) fionread (sb-alien:addr int-ptr)) Err bitreich.org 70 i- socket) Err bitreich.org 70 i- (prog1 int-ptr Err bitreich.org 70 i- (when (plusp int-ptr) Err bitreich.org 70 i- (setf (state socket) :read))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun map-network-events (func network-events) Err bitreich.org 70 i- (let ((event-map (sb-alien:slot network-events 'network-events)) Err bitreich.org 70 i- (error-array (sb-alien:slot network-events 'error-code))) Err bitreich.org 70 i- (unless (zerop event-map) Err bitreich.org 70 i- (dotimes (i fd-max-events) Err bitreich.org 70 i- (unless (zerop (ldb (byte 1 i) event-map)) ;;### could be faster with ash and logand? Err bitreich.org 70 i- (funcall func (sb-alien:deref error-array i))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun update-ready-and-state-slots (sockets) Err bitreich.org 70 i- (dolist (socket sockets) Err bitreich.org 70 i- (if (%ready-p socket) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (setf (state socket) :READ)) Err bitreich.org 70 i- (sb-alien:with-alien ((network-events (sb-alien:struct wsa-network-events))) Err bitreich.org 70 i- (let ((rv (wsa-enum-network-events (os-socket-handle socket) 0 Err bitreich.org 70 i- (sb-alien:addr network-events)))) Err bitreich.org 70 i- (if (zerop rv) Err bitreich.org 70 i- (map-network-events Err bitreich.org 70 i- #'(lambda (err-code) Err bitreich.org 70 i- (if (zerop err-code) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (setf (state socket) :READ) Err bitreich.org 70 i- (when (stream-server-usocket-p socket) Err bitreich.org 70 i- (setf (%ready-p socket) t))) Err bitreich.org 70 i- (raise-usock-err err-code socket))) Err bitreich.org 70 i- network-events) Err bitreich.org 70 i- (maybe-wsa-error rv socket))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun os-wait-list-%wait (wait-list) Err bitreich.org 70 i- (sb-alien:deref (wait-list-%wait wait-list))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun (setf os-wait-list-%wait) (value wait-list) Err bitreich.org 70 i- (setf (sb-alien:deref (wait-list-%wait wait-list)) value)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; "Event handles are leaking in current SBCL backend implementation, Err bitreich.org 70 i- ;; because of SBCL-unfriendly usage of finalizers. Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; "SBCL never calls a finalizer that closes over a finalized object: a Err bitreich.org 70 i- ;; reference from that closure prevents its collection forever. That's Err bitreich.org 70 i- ;; the case with USOCKET in %SETUP-WAIT-LIST. Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; "I use the following redefinition of %SETUP-WAIT-LIST: Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; "Of course it may be rewritten with more clarity, but you can see the Err bitreich.org 70 i- ;; core idea: I'm closing over those components of WAIT-LIST that I need Err bitreich.org 70 i- ;; for finalization, not the wait-list itself. With the original Err bitreich.org 70 i- ;; %SETUP-WAIT-LIST, hunchentoot stops working after ~100k accepted Err bitreich.org 70 i- ;; connections; it doesn't happen with redefined %SETUP-WAIT-LIST." Err bitreich.org 70 i- ;; Err bitreich.org 70 i- ;; -- Anton Kovalenko , Mar 22, 2011 Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %setup-wait-list (wait-list) Err bitreich.org 70 i- (setf (wait-list-%wait wait-list) (sb-alien:make-alien ws-event)) Err bitreich.org 70 i- (setf (os-wait-list-%wait wait-list) (wsa-event-create)) Err bitreich.org 70 i- (sb-ext:finalize wait-list Err bitreich.org 70 i- (let ((event-handle (os-wait-list-%wait wait-list)) Err bitreich.org 70 i- (alien (wait-list-%wait wait-list))) Err bitreich.org 70 i- #'(lambda () Err bitreich.org 70 i- (wsa-event-close event-handle) Err bitreich.org 70 i- (unless (null alien) Err bitreich.org 70 i- (sb-alien:free-alien alien)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-) ; progn Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and ecl (not win32)) Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (defun wait-for-input-internal (wl &key timeout) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (multiple-value-bind (secs usecs) Err bitreich.org 70 i- (split-timeout (or timeout 1)) Err bitreich.org 70 i- (multiple-value-bind (result-fds err) Err bitreich.org 70 i- (read-select wl (when timeout secs) usecs) Err bitreich.org 70 i- (declare (ignore result-fds)) Err bitreich.org 70 i- (unless (null err) Err bitreich.org 70 i- (error (map-errno-error err))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %setup-wait-list (wl) Err bitreich.org 70 i- (setf (wait-list-%wait wl) Err bitreich.org 70 i- (fdset-alloc))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %add-waiter (wl w) Err bitreich.org 70 i- (declare (ignore wl w))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %remove-waiter (wl w) Err bitreich.org 70 i- (declare (ignore wl w))) Err bitreich.org 70 i-) ; progn Err bitreich.org 70 i- Err bitreich.org 70 i-#+(and ecl win32 (not ecl-bytecmp)) Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (defun maybe-wsa-error (rv &optional syscall) Err bitreich.org 70 i- (unless (zerop rv) Err bitreich.org 70 i- (sb-bsd-sockets::socket-error syscall))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %setup-wait-list (wl) Err bitreich.org 70 i- (setf (wait-list-%wait wl) Err bitreich.org 70 i- (ffi:c-inline () () :int Err bitreich.org 70 i- "WSAEVENT event; Err bitreich.org 70 i- event = WSACreateEvent(); Err bitreich.org 70 i- @(return) = event;"))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %add-waiter (wait-list waiter) Err bitreich.org 70 i- (let ((events (etypecase waiter Err bitreich.org 70 i- (stream-server-usocket (logior fd-connect fd-accept fd-close)) Err bitreich.org 70 i- (stream-usocket (logior fd-read)) Err bitreich.org 70 i- (datagram-usocket (logior fd-read))))) Err bitreich.org 70 i- (maybe-wsa-error Err bitreich.org 70 i- (ffi:c-inline ((socket-handle waiter) (wait-list-%wait wait-list) events) Err bitreich.org 70 i- (:fixnum :fixnum :fixnum) :fixnum Err bitreich.org 70 i- "int result; Err bitreich.org 70 i- result = WSAEventSelect((SOCKET)#0, (WSAEVENT)#1, (long)#2); Err bitreich.org 70 i- @(return) = result;") Err bitreich.org 70 i- '%add-waiter))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun %remove-waiter (wait-list waiter) Err bitreich.org 70 i- (maybe-wsa-error Err bitreich.org 70 i- (ffi:c-inline ((socket-handle waiter) (wait-list-%wait wait-list)) Err bitreich.org 70 i- (:fixnum :fixnum) :fixnum Err bitreich.org 70 i- "int result; Err bitreich.org 70 i- result = WSAEventSelect((SOCKET)#0, (WSAEVENT)#1, 0L); Err bitreich.org 70 i- @(return) = result;") Err bitreich.org 70 i- '%remove-waiter)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; TODO: how to handle error (result) in this call? Err bitreich.org 70 i- (declaim (inline %bytes-available-for-read)) Err bitreich.org 70 i- (defun %bytes-available-for-read (socket) Err bitreich.org 70 i- (ffi:c-inline ((socket-handle socket)) (:fixnum) :fixnum Err bitreich.org 70 i- "u_long nbytes; Err bitreich.org 70 i- int result; Err bitreich.org 70 i- nbytes = 0L; Err bitreich.org 70 i- result = ioctlsocket((SOCKET)#0, FIONREAD, &nbytes); Err bitreich.org 70 i- @(return) = nbytes;")) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun bytes-available-for-read (socket) Err bitreich.org 70 i- (let ((nbytes (%bytes-available-for-read socket))) Err bitreich.org 70 i- (when (plusp nbytes) Err bitreich.org 70 i- (setf (state socket) :read)) Err bitreich.org 70 i- nbytes)) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun update-ready-and-state-slots (sockets) Err bitreich.org 70 i- (dolist (socket sockets) Err bitreich.org 70 i- (if (%ready-p socket) Err bitreich.org 70 i- (setf (state socket) :READ) Err bitreich.org 70 i- (let ((events (etypecase socket Err bitreich.org 70 i- (stream-server-usocket (logior fd-connect fd-accept fd-close)) Err bitreich.org 70 i- (stream-usocket (logior fd-read)) Err bitreich.org 70 i- (datagram-usocket (logior fd-read))))) Err bitreich.org 70 i- ;; TODO: check the iErrorCode array Err bitreich.org 70 i- (multiple-value-bind (valid-p ready-p) Err bitreich.org 70 i- (ffi:c-inline ((socket-handle socket) events) (:fixnum :fixnum) Err bitreich.org 70 i- (values :bool :bool) Err bitreich.org 70 i- "WSANETWORKEVENTS network_events; Err bitreich.org 70 i- int i, result; Err bitreich.org 70 i- result = WSAEnumNetworkEvents((SOCKET)#0, 0, &network_events); Err bitreich.org 70 i- if (!result) { Err bitreich.org 70 i- @(return 0) = Ct; Err bitreich.org 70 i- @(return 1) = (#1 & network_events.lNetworkEvents)? Ct : Cnil; Err bitreich.org 70 i- } else { Err bitreich.org 70 i- @(return 0) = Cnil; Err bitreich.org 70 i- @(return 1) = Cnil; Err bitreich.org 70 i- }") Err bitreich.org 70 i- (if valid-p Err bitreich.org 70 i- (when ready-p Err bitreich.org 70 i- (setf (state socket) :READ) Err bitreich.org 70 i- (when (stream-server-usocket-p socket) Err bitreich.org 70 i- (setf (%ready-p socket) t))) Err bitreich.org 70 i- (sb-bsd-sockets::socket-error 'update-ready-and-state-slots))))))) Err bitreich.org 70 i- Err bitreich.org 70 i- (defun wait-for-input-internal (wait-list &key timeout) Err bitreich.org 70 i- (when (waiting-required (wait-list-waiters wait-list)) Err bitreich.org 70 i- (let ((rv (ffi:c-inline ((wait-list-%wait wait-list) Err bitreich.org 70 i- (if timeout Err bitreich.org 70 i- (truncate (* 1000 timeout)) Err bitreich.org 70 i- +wsa-infinite+)) Err bitreich.org 70 i- (:fixnum :fixnum) :fixnum Err bitreich.org 70 i- "DWORD result; Err bitreich.org 70 i- WSAEVENT events[1]; Err bitreich.org 70 i- events[0] = (WSAEVENT)#0; Err bitreich.org 70 i- result = WSAWaitForMultipleEvents(1, events, NULL, #1, NULL); Err bitreich.org 70 i- @(return) = result;"))) Err bitreich.org 70 i- (ecase rv Err bitreich.org 70 i- ((#.+wsa-wait-event-0+) Err bitreich.org 70 i- (update-ready-and-state-slots (wait-list-waiters wait-list))) Err bitreich.org 70 i- ((#.+wsa-wait-timeout+)) ; do nothing here Err bitreich.org 70 i- ((#.+wsa-wait-failed+) Err bitreich.org 70 i- (sb-bsd-sockets::socket-error 'wait-for-input-internal)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-) ; progn Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/backend/scl.lisp b/3rdparties/software/usocket-0.7.1/backend/scl.lisp /scm/clic/file/3rdparties/software/usocket-0.7.1/backend/scl.lisp.gph bitreich.org 70 i@@ -1,270 +0,0 @@ Err bitreich.org 70 i-;;;; See LICENSE for licensing information. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :usocket) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter +scl-error-map+ Err bitreich.org 70 i- (append +unix-errno-condition-map+ Err bitreich.org 70 i- +unix-errno-error-map+)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun scl-map-socket-error (err &key condition socket) Err bitreich.org 70 i- (let ((usock-err (cdr (assoc err +scl-error-map+ :test #'member)))) Err bitreich.org 70 i- (cond (usock-err Err bitreich.org 70 i- (if (subtypep usock-err 'error) Err bitreich.org 70 i- (error usock-err :socket socket) Err bitreich.org 70 i- (signal usock-err :socket socket))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (error 'unknown-error Err bitreich.org 70 i- :socket socket Err bitreich.org 70 i- :real-error condition))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun handle-condition (condition &optional (socket nil)) Err bitreich.org 70 i- "Dispatch correct usocket condition." Err bitreich.org 70 i- (typecase condition Err bitreich.org 70 i- (ext::socket-error Err bitreich.org 70 i- (scl-map-socket-error (ext::socket-errno condition) Err bitreich.org 70 i- :socket socket Err bitreich.org 70 i- :condition condition)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun socket-connect (host port &key (protocol :stream) (element-type 'character) Err bitreich.org 70 i- timeout deadline (nodelay t nodelay-specified) Err bitreich.org 70 i- (local-host nil local-host-p) Err bitreich.org 70 i- (local-port nil local-port-p) Err bitreich.org 70 i- &aux Err bitreich.org 70 i- (patch-udp-p (fboundp 'ext::inet-socket-send-to))) Err bitreich.org 70 i- (when (and nodelay-specified Err bitreich.org 70 i- (not (eq nodelay :if-supported))) Err bitreich.org 70 i- (unsupported 'nodelay 'socket-connect)) Err bitreich.org 70 i- (when deadline (unsupported 'deadline 'socket-connect)) Err bitreich.org 70 i- (when timeout (unsupported 'timeout 'socket-connect)) Err bitreich.org 70 i- (when (and local-host-p (not patch-udp-p)) Err bitreich.org 70 i- (unsupported 'local-host 'socket-connect :minimum "1.3.9")) Err bitreich.org 70 i- (when (and local-port-p (not patch-udp-p)) Err bitreich.org 70 i- (unsupported 'local-port 'socket-connect :minimum "1.3.9")) Err bitreich.org 70 i- Err bitreich.org 70 i- (let ((socket)) Err bitreich.org 70 i- (ecase protocol Err bitreich.org 70 i- (:stream Err bitreich.org 70 i- (setf socket (let ((args (list (host-to-hbo host) port :kind protocol))) Err bitreich.org 70 i- (when (and patch-udp-p (or local-host-p local-port-p)) Err bitreich.org 70 i- (nconc args (list :local-host (when local-host Err bitreich.org 70 i- (host-to-hbo local-host)) Err bitreich.org 70 i- :local-port local-port))) Err bitreich.org 70 i- (with-mapped-conditions (socket) Err bitreich.org 70 i- (apply #'ext:connect-to-inet-socket args)))) Err bitreich.org 70 i- (let ((stream (sys:make-fd-stream socket :input t :output t Err bitreich.org 70 i- :element-type element-type Err bitreich.org 70 i- :buffering :full))) Err bitreich.org 70 i- (make-stream-socket :socket socket :stream stream))) Err bitreich.org 70 i- (:datagram Err bitreich.org 70 i- (when (not patch-udp-p) Err bitreich.org 70 i- (error 'unsupported Err bitreich.org 70 i- :feature '(protocol :datagram) Err bitreich.org 70 i- :context 'socket-connect Err bitreich.org 70 i- :minumum "1.3.9")) Err bitreich.org 70 i- (setf socket Err bitreich.org 70 i- (if (and host port) Err bitreich.org 70 i- (let ((args (list (host-to-hbo host) port :kind protocol))) Err bitreich.org 70 i- (when (and patch-udp-p (or local-host-p local-port-p)) Err bitreich.org 70 i- (nconc args (list :local-host (when local-host Err bitreich.org 70 i- (host-to-hbo local-host)) Err bitreich.org 70 i- :local-port local-port))) Err bitreich.org 70 i- (with-mapped-conditions (socket) Err bitreich.org 70 i- (apply #'ext:connect-to-inet-socket args))) Err bitreich.org 70 i- (if (or local-host-p local-port-p) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (ext:create-inet-listener (or local-port 0) Err bitreich.org 70 i- protocol Err bitreich.org 70 i- :host (when local-host Err bitreich.org 70 i- (if (ip= local-host *wildcard-host*) Err bitreich.org 70 i- 0 Err bitreich.org 70 i- (host-to-hbo local-host))))) Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (ext:create-inet-socket protocol))))) Err bitreich.org 70 i- (let ((usocket (make-datagram-socket socket :connected-p (and host port t)))) Err bitreich.org 70 i- (ext:finalize usocket #'(lambda () Err bitreich.org 70 i- (when (%open-p usocket) Err bitreich.org 70 i- (ext:close-socket socket)))) Err bitreich.org 70 i- usocket))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun socket-listen (host port Err bitreich.org 70 i- &key reuseaddress Err bitreich.org 70 i- (reuse-address nil reuse-address-supplied-p) Err bitreich.org 70 i- (backlog 5) Err bitreich.org 70 i- (element-type 'character)) Err bitreich.org 70 i- (let* ((reuseaddress (if reuse-address-supplied-p reuse-address reuseaddress)) Err bitreich.org 70 i- (host (if (ip= host *wildcard-host*) Err bitreich.org 70 i- 0 Err bitreich.org 70 i- (host-to-hbo host))) Err bitreich.org 70 i- (server-sock Err bitreich.org 70 i- (with-mapped-conditions () Err bitreich.org 70 i- (ext:create-inet-listener port :stream Err bitreich.org 70 i- :host host Err bitreich.org 70 i- :reuse-address reuseaddress Err bitreich.org 70 i- :backlog backlog)))) Err bitreich.org 70 i- (make-stream-server-socket server-sock :element-type element-type))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-accept ((usocket stream-server-usocket) &key element-type) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (let* ((sock (ext:accept-tcp-connection (socket usocket))) Err bitreich.org 70 i- (stream (sys:make-fd-stream sock :input t :output t Err bitreich.org 70 i- :element-type (or element-type Err bitreich.org 70 i- (element-type usocket)) Err bitreich.org 70 i- :buffering :full))) Err bitreich.org 70 i- (make-stream-socket :socket sock :stream stream)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Sockets and their associated streams are modelled as Err bitreich.org 70 i-;; different objects. Be sure to close the socket stream Err bitreich.org 70 i-;; when closing stream-sockets; it makes sure buffers Err bitreich.org 70 i-;; are flushed and the socket is closed correctly afterwards. Err bitreich.org 70 i-(defmethod socket-close ((usocket usocket)) Err bitreich.org 70 i- "Close socket." Err bitreich.org 70 i- (when (wait-list usocket) Err bitreich.org 70 i- (remove-waiter (wait-list usocket) usocket)) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (ext:close-socket (socket usocket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-close ((usocket stream-usocket)) Err bitreich.org 70 i- "Close socket." Err bitreich.org 70 i- (when (wait-list usocket) Err bitreich.org 70 i- (remove-waiter (wait-list usocket) usocket)) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (close (socket-stream usocket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-close :after ((socket datagram-usocket)) Err bitreich.org 70 i- (setf (%open-p socket) nil)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-shutdown ((usocket usocket) direction) Err bitreich.org 70 i- (declare (ignore usocket direction)) Err bitreich.org 70 i- (unsupported "shutdown" 'socket-shutdown)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-send ((usocket datagram-usocket) buffer size &key host port) Err bitreich.org 70 i- (let ((s (socket usocket)) Err bitreich.org 70 i- (host (if host (host-to-hbo host))) Err bitreich.org 70 i- (real-buffer (if (zerop offset) Err bitreich.org 70 i- buffer Err bitreich.org 70 i- (subseq buffer offset (+ offset size))))) Err bitreich.org 70 i- (multiple-value-bind (result errno) Err bitreich.org 70 i- (ext:inet-socket-send-to s real-buffer size Err bitreich.org 70 i- :remote-host host :remote-port port) Err bitreich.org 70 i- (or result Err bitreich.org 70 i- (scl-map-socket-error errno :socket usocket))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-receive ((socket datagram-usocket) buffer length &key) Err bitreich.org 70 i- (declare (values (simple-array (unsigned-byte 8) (*)) ; buffer Err bitreich.org 70 i- (integer 0) ; size Err bitreich.org 70 i- (unsigned-byte 32) ; host Err bitreich.org 70 i- (unsigned-byte 16))) ; port Err bitreich.org 70 i- (let ((s (socket socket))) Err bitreich.org 70 i- (let ((real-buffer (or buffer Err bitreich.org 70 i- (make-array length :element-type '(unsigned-byte 8)))) Err bitreich.org 70 i- (real-length (or length Err bitreich.org 70 i- (length buffer)))) Err bitreich.org 70 i- (multiple-value-bind (result errno remote-host remote-port) Err bitreich.org 70 i- (ext:inet-socket-receive-from s real-buffer real-length) Err bitreich.org 70 i- (if result Err bitreich.org 70 i- (values real-buffer result remote-host remote-port) Err bitreich.org 70 i- (scl-map-socket-error errno :socket socket)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-name ((usocket usocket)) Err bitreich.org 70 i- (multiple-value-bind (address port) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (ext:get-socket-host-and-port (socket usocket))) Err bitreich.org 70 i- (values (hbo-to-vector-quad address) port))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-name ((usocket stream-usocket)) Err bitreich.org 70 i- (multiple-value-bind (address port) Err bitreich.org 70 i- (with-mapped-conditions (usocket) Err bitreich.org 70 i- (ext:get-peer-host-and-port (socket usocket))) Err bitreich.org 70 i- (values (hbo-to-vector-quad address) port))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-address ((usocket usocket)) Err bitreich.org 70 i- (nth-value 0 (get-local-name usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-address ((usocket stream-usocket)) Err bitreich.org 70 i- (nth-value 0 (get-peer-name usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-local-port ((usocket usocket)) Err bitreich.org 70 i- (nth-value 1 (get-local-name usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod get-peer-port ((usocket stream-usocket)) Err bitreich.org 70 i- (nth-value 1 (get-peer-name usocket))) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-host-by-address (address) Err bitreich.org 70 i- (multiple-value-bind (host errno) Err bitreich.org 70 i- (ext:lookup-host-entry (host-byte-order address)) Err bitreich.org 70 i- (cond (host Err bitreich.org 70 i- (ext:host-entry-name host)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (let ((condition (cdr (assoc errno +unix-ns-error-map+)))) Err bitreich.org 70 i- (cond (condition Err bitreich.org 70 i- (error condition :host-or-ip address)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (error 'ns-unknown-error :host-or-ip address Err bitreich.org 70 i- :real-error errno)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-hosts-by-name (name) Err bitreich.org 70 i- (multiple-value-bind (host errno) Err bitreich.org 70 i- (ext:lookup-host-entry name) Err bitreich.org 70 i- (cond (host Err bitreich.org 70 i- (mapcar #'hbo-to-vector-quad Err bitreich.org 70 i- (ext:host-entry-addr-list host))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (let ((condition (cdr (assoc errno +unix-ns-error-map+)))) Err bitreich.org 70 i- (cond (condition Err bitreich.org 70 i- (error condition :host-or-ip name)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (error 'ns-unknown-error :host-or-ip name Err bitreich.org 70 i- :real-error errno)))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-host-name () Err bitreich.org 70 i- (unix:unix-gethostname)) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; WAIT-LIST part Err bitreich.org 70 i-;; Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %add-waiter (wl waiter) Err bitreich.org 70 i- (declare (ignore wl waiter))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %remove-waiter (wl waiter) Err bitreich.org 70 i- (declare (ignore wl waiter))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %setup-wait-list (wl) Err bitreich.org 70 i- (declare (ignore wl))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun wait-for-input-internal (wait-list &key timeout) Err bitreich.org 70 i- (let* ((sockets (wait-list-waiters wait-list)) Err bitreich.org 70 i- (pollfd-size (alien:alien-size (alien:struct unix::pollfd) :bytes)) Err bitreich.org 70 i- (nfds (length sockets)) Err bitreich.org 70 i- (bytes (* nfds pollfd-size))) Err bitreich.org 70 i- (alien:with-bytes (fds-sap bytes) Err bitreich.org 70 i- (do ((sockets sockets (rest sockets)) Err bitreich.org 70 i- (base 0 (+ base 8))) Err bitreich.org 70 i- ((endp sockets)) Err bitreich.org 70 i- (let ((fd (socket (first sockets)))) Err bitreich.org 70 i- (setf (sys:sap-ref-32 fds-sap base) fd) Err bitreich.org 70 i- (setf (sys:sap-ref-16 fds-sap (+ base 4)) unix::pollin))) Err bitreich.org 70 i- (multiple-value-bind (result errno) Err bitreich.org 70 i- (let ((thread:*thread-whostate* "Poll wait") Err bitreich.org 70 i- (timeout (if timeout Err bitreich.org 70 i- (truncate (* timeout 1000)) Err bitreich.org 70 i- -1))) Err bitreich.org 70 i- (declare (inline unix:unix-poll)) Err bitreich.org 70 i- (unix:unix-poll (alien:sap-alien fds-sap Err bitreich.org 70 i- (* (alien:struct unix::pollfd))) Err bitreich.org 70 i- nfds timeout)) Err bitreich.org 70 i- (cond ((not result) Err bitreich.org 70 i- (error "~@" Err bitreich.org 70 i- (unix:get-unix-error-msg errno))) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (do ((sockets sockets (rest sockets)) Err bitreich.org 70 i- (base 0 (+ base 8))) Err bitreich.org 70 i- ((endp sockets)) Err bitreich.org 70 i- (let ((flags (sys:sap-ref-16 fds-sap (+ base 6)))) Err bitreich.org 70 i- (unless (zerop (logand flags unix::pollin)) Err bitreich.org 70 i- (setf (state (first sockets)) :READ)))))))))) Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/condition.lisp b/3rdparties/software/usocket-0.7.1/condition.lisp /scm/clic/file/3rdparties/software/usocket-0.7.1/condition.lisp.gph bitreich.org 70 i@@ -1,234 +0,0 @@ Err bitreich.org 70 i-;;;; See LICENSE for licensing information. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :usocket) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Condition signalled by operations with unsupported arguments Err bitreich.org 70 i-;; For trivial-sockets compatibility. Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition insufficient-implementation (error) Err bitreich.org 70 i- ((feature :initarg :feature :reader feature) Err bitreich.org 70 i- (context :initarg :context :reader context Err bitreich.org 70 i- :documentation "String designator of the public API function which Err bitreich.org 70 i-the feature belongs to.")) Err bitreich.org 70 i- (:documentation "The ancestor of all errors usocket may generate Err bitreich.org 70 i-because of insufficient support from the underlying implementation Err bitreich.org 70 i-with respect to the arguments given to `function'. Err bitreich.org 70 i- Err bitreich.org 70 i-One call may signal several errors, if the caller allows processing Err bitreich.org 70 i-to continue. Err bitreich.org 70 i-")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition unsupported (insufficient-implementation) Err bitreich.org 70 i- ((minimum :initarg :minimum :reader minimum Err bitreich.org 70 i- :documentation "Indicates the minimal version of the Err bitreich.org 70 i-implementation required to support the requested feature.")) Err bitreich.org 70 i- (:report (lambda (c stream) Err bitreich.org 70 i- (format stream "~A in ~A is unsupported." Err bitreich.org 70 i- (feature c) (context c)) Err bitreich.org 70 i- (when (minimum c) Err bitreich.org 70 i- (format stream " Minimum version (~A) is required." Err bitreich.org 70 i- (minimum c))))) Err bitreich.org 70 i- (:documentation "Signalled when the underlying implementation Err bitreich.org 70 i-doesn't allow supporting the requested feature. Err bitreich.org 70 i- Err bitreich.org 70 i-When you see this error, go bug your vendor/implementation developer!")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition unimplemented (insufficient-implementation) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:report (lambda (c stream) Err bitreich.org 70 i- (format stream "~A in ~A is unimplemented." Err bitreich.org 70 i- (feature c) (context c)))) Err bitreich.org 70 i- (:documentation "Signalled if a certain feature might be implemented, Err bitreich.org 70 i-based on the features of the underlying implementation, but hasn't Err bitreich.org 70 i-been implemented yet.")) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Conditions raised by sockets operations Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition socket-condition (condition) Err bitreich.org 70 i- ((socket :initarg :socket Err bitreich.org 70 i- :accessor usocket-socket)) Err bitreich.org 70 i- ;;###FIXME: no slots (yet); should at least be the affected usocket... Err bitreich.org 70 i- (:documentation "Parent condition for all socket related conditions.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition socket-error (socket-condition error) Err bitreich.org 70 i- () ;; no slots (yet) Err bitreich.org 70 i- (:documentation "Parent error for all socket related errors")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition ns-condition (condition) Err bitreich.org 70 i- ((host-or-ip :initarg :host-or-ip Err bitreich.org 70 i- :accessor host-or-ip)) Err bitreich.org 70 i- (:documentation "Parent condition for all name resolution conditions.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition ns-error (ns-condition error) Err bitreich.org 70 i- () Err bitreich.org 70 i- (:documentation "Parent error for all name resolution errors.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (defun define-usocket-condition-class (class &rest parents) Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (define-condition ,class ,parents ()) Err bitreich.org 70 i- (export ',class)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro define-usocket-condition-classes (class-list parents) Err bitreich.org 70 i- `(progn ,@(mapcar #'(lambda (x) Err bitreich.org 70 i- (apply #'define-usocket-condition-class Err bitreich.org 70 i- x parents)) Err bitreich.org 70 i- class-list))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Mass define and export our conditions Err bitreich.org 70 i-(define-usocket-condition-classes Err bitreich.org 70 i- (interrupted-condition) Err bitreich.org 70 i- (socket-condition)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition unknown-condition (socket-condition) Err bitreich.org 70 i- ((real-condition :initarg :real-condition Err bitreich.org 70 i- :accessor usocket-real-condition)) Err bitreich.org 70 i- (:documentation "Condition raised when there's no other - more applicable - Err bitreich.org 70 i-condition available.")) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;; Mass define and export our errors Err bitreich.org 70 i-(define-usocket-condition-classes Err bitreich.org 70 i- (address-in-use-error Err bitreich.org 70 i- address-not-available-error Err bitreich.org 70 i- bad-file-descriptor-error Err bitreich.org 70 i- connection-refused-error Err bitreich.org 70 i- connection-aborted-error Err bitreich.org 70 i- connection-reset-error Err bitreich.org 70 i- invalid-argument-error Err bitreich.org 70 i- no-buffers-error Err bitreich.org 70 i- operation-not-supported-error Err bitreich.org 70 i- operation-not-permitted-error Err bitreich.org 70 i- protocol-not-supported-error Err bitreich.org 70 i- socket-type-not-supported-error Err bitreich.org 70 i- network-unreachable-error Err bitreich.org 70 i- network-down-error Err bitreich.org 70 i- network-reset-error Err bitreich.org 70 i- host-down-error Err bitreich.org 70 i- host-unreachable-error Err bitreich.org 70 i- shutdown-error Err bitreich.org 70 i- timeout-error Err bitreich.org 70 i- deadline-timeout-error Err bitreich.org 70 i- invalid-socket-error Err bitreich.org 70 i- invalid-socket-stream-error) Err bitreich.org 70 i- (socket-error)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition unknown-error (socket-error) Err bitreich.org 70 i- ((real-error :initarg :real-error Err bitreich.org 70 i- :accessor usocket-real-error Err bitreich.org 70 i- :initform nil) Err bitreich.org 70 i- (errno :initarg :errno Err bitreich.org 70 i- :reader usocket-errno Err bitreich.org 70 i- :initform 0)) Err bitreich.org 70 i- (:report (lambda (c stream) Err bitreich.org 70 i- (typecase c Err bitreich.org 70 i- (simple-condition Err bitreich.org 70 i- (format stream Err bitreich.org 70 i- (simple-condition-format-control (usocket-real-error c)) Err bitreich.org 70 i- (simple-condition-format-arguments (usocket-real-error c)))) Err bitreich.org 70 i- (otherwise Err bitreich.org 70 i- (format stream "The condition ~A occurred with errno: ~D." Err bitreich.org 70 i- (usocket-real-error c) Err bitreich.org 70 i- (usocket-errno c)))))) Err bitreich.org 70 i- (:documentation "Error raised when there's no other - more applicable - Err bitreich.org 70 i-error available.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-usocket-condition-classes Err bitreich.org 70 i- (ns-try-again-condition) Err bitreich.org 70 i- (ns-condition)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition ns-unknown-condition (ns-condition) Err bitreich.org 70 i- ((real-condition :initarg :real-condition Err bitreich.org 70 i- :accessor ns-real-condition Err bitreich.org 70 i- :initform nil)) Err bitreich.org 70 i- (:documentation "Condition raised when there's no other - more applicable - Err bitreich.org 70 i-condition available.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-usocket-condition-classes Err bitreich.org 70 i- ;; the no-data error code in the Unix 98 api Err bitreich.org 70 i- ;; isn't really an error: there's just no data to return. Err bitreich.org 70 i- ;; with lisp, we just return NIL (indicating no data) instead of Err bitreich.org 70 i- ;; raising an exception... Err bitreich.org 70 i- (ns-host-not-found-error Err bitreich.org 70 i- ns-no-recovery-error) Err bitreich.org 70 i- (ns-error)) Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition ns-unknown-error (ns-error) Err bitreich.org 70 i- ((real-error :initarg :real-error Err bitreich.org 70 i- :accessor ns-real-error Err bitreich.org 70 i- :initform nil)) Err bitreich.org 70 i- (:report (lambda (c stream) Err bitreich.org 70 i- (typecase c Err bitreich.org 70 i- (simple-condition Err bitreich.org 70 i- (format stream Err bitreich.org 70 i- (simple-condition-format-control (usocket-real-error c)) Err bitreich.org 70 i- (simple-condition-format-arguments (usocket-real-error c)))) Err bitreich.org 70 i- (otherwise Err bitreich.org 70 i- (format stream "The condition ~A occurred." (usocket-real-error c)))))) Err bitreich.org 70 i- (:documentation "Error raised when there's no other - more applicable - Err bitreich.org 70 i-error available.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-mapped-conditions ((&optional socket) &body body) Err bitreich.org 70 i- `(handler-bind ((condition #'(lambda (c) (handle-condition c ,socket)))) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter +unix-errno-condition-map+ Err bitreich.org 70 i- `(((11) . ns-try-again-condition) ;; EAGAIN Err bitreich.org 70 i- ((35) . ns-try-again-condition) ;; EDEADLCK Err bitreich.org 70 i- ((4) . interrupted-condition))) ;; EINTR Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter +unix-errno-error-map+ Err bitreich.org 70 i- ;;### the first column is for non-(linux or srv4) systems Err bitreich.org 70 i- ;; the second for linux Err bitreich.org 70 i- ;; the third for srv4 Err bitreich.org 70 i- ;;###FIXME: How do I determine on which Unix we're running Err bitreich.org 70 i- ;; (at least in clisp and sbcl; I know about cmucl...) Err bitreich.org 70 i- ;; The table below works under the assumption we'll *only* see Err bitreich.org 70 i- ;; socket associated errors... Err bitreich.org 70 i- `(((48 98) . address-in-use-error) Err bitreich.org 70 i- ((49 99) . address-not-available-error) Err bitreich.org 70 i- ((9) . bad-file-descriptor-error) Err bitreich.org 70 i- ((61 111) . connection-refused-error) Err bitreich.org 70 i- ((54 104) . connection-reset-error) Err bitreich.org 70 i- ((53 103) . connection-aborted-error) Err bitreich.org 70 i- ((22) . invalid-argument-error) Err bitreich.org 70 i- ((55 105) . no-buffers-error) Err bitreich.org 70 i- ((12) . out-of-memory-error) Err bitreich.org 70 i- ((45 95) . operation-not-supported-error) Err bitreich.org 70 i- ((1) . operation-not-permitted-error) Err bitreich.org 70 i- ((43 92) . protocol-not-supported-error) Err bitreich.org 70 i- ((44 93) . socket-type-not-supported-error) Err bitreich.org 70 i- ((51 101) . network-unreachable-error) Err bitreich.org 70 i- ((50 100) . network-down-error) Err bitreich.org 70 i- ((52 102) . network-reset-error) Err bitreich.org 70 i- ((58 108) . already-shutdown-error) Err bitreich.org 70 i- ((60 110) . timeout-error) Err bitreich.org 70 i- ((64 112) . host-down-error) Err bitreich.org 70 i- ((65 113) . host-unreachable-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun map-errno-condition (errno) Err bitreich.org 70 i- (cdr (assoc errno +unix-errno-error-map+ :test #'member))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun map-errno-error (errno) Err bitreich.org 70 i- (cdr (assoc errno +unix-errno-error-map+ :test #'member))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter +unix-ns-error-map+ Err bitreich.org 70 i- `((1 . ns-host-not-found-error) Err bitreich.org 70 i- (2 . ns-try-again-condition) Err bitreich.org 70 i- (3 . ns-no-recovery-error))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro unsupported (feature context &key minimum) Err bitreich.org 70 i- `(cerror "Ignore it and continue" 'unsupported Err bitreich.org 70 i- :feature ,feature Err bitreich.org 70 i- :context ,context Err bitreich.org 70 i- :minimum ,minimum)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro unimplemented (feature context) Err bitreich.org 70 i- `(signal 'unimplemented :feature ,feature :context ,context)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; People may want to ignore all unsupported warnings, here it is. Err bitreich.org 70 i-(defmacro ignore-unsupported-warnings (&body body) Err bitreich.org 70 i- `(handler-bind ((unsupported Err bitreich.org 70 i- #'(lambda (c) Err bitreich.org 70 i- (declare (ignore c)) (continue)))) Err bitreich.org 70 i- (progn ,@body))) Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/notes/abcl-socket.txt b/3rdparties/software/usocket-0.7.1/notes/abcl-socket.txt /scm/clic/file/3rdparties/software/usocket-0.7.1/notes/abcl-socket.txt.gph bitreich.org 70 i@@ -1,18 +0,0 @@ Err bitreich.org 70 i- Err bitreich.org 70 i-ABCL provides a callback interface to java objects, next to these calls: Err bitreich.org 70 i- Err bitreich.org 70 i- - ext:make-socket Err bitreich.org 70 i- - ext:socket-close Err bitreich.org 70 i- - ext:make-server-socket Err bitreich.org 70 i- - ext:socket-accept Err bitreich.org 70 i- - ext:get-socket-stream (returning an io-stream) Err bitreich.org 70 i- Err bitreich.org 70 i-abcl-swank (see SLIME) shows how to call directly into java. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-See for the sockets implementation: Err bitreich.org 70 i- Err bitreich.org 70 i- - src/org/armedbear/lisp Err bitreich.org 70 i- * socket.lisp Err bitreich.org 70 i- * socket_stream.java Err bitreich.org 70 i- * SocketStream.java Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/notes/active-sockets-apis.txt b/3rdparties/software/usocket-0.7.1/notes/active-sockets-apis.txt /scm/clic/file/3rdparties/software/usocket-0.7.1/notes/active-sockets-apis.txt.gph bitreich.org 70 i@@ -1,75 +0,0 @@ Err bitreich.org 70 i- -*- text -*- Err bitreich.org 70 i- Err bitreich.org 70 i-A document to summarizing which API's of the different implementations Err bitreich.org 70 i-are associated with 'Step 1'. Err bitreich.org 70 i- Err bitreich.org 70 i-Interface to be implemented in step 1: Err bitreich.org 70 i- Err bitreich.org 70 i- - socket-connect Err bitreich.org 70 i- - socket-close Err bitreich.org 70 i- - get-host-by-address Err bitreich.org 70 i- - get-hosts-by-name Err bitreich.org 70 i- Err bitreich.org 70 i-(and something to do with errors; maybe move this to step 1a?) Err bitreich.org 70 i- Err bitreich.org 70 i-SBCL Err bitreich.org 70 i-==== Err bitreich.org 70 i- Err bitreich.org 70 i- sockets: Err bitreich.org 70 i- - socket-bind Err bitreich.org 70 i- - make-instance 'inet-socket Err bitreich.org 70 i- - socket-make-stream Err bitreich.org 70 i- - socket-connect (ip vector-quad) port Err bitreich.org 70 i- - socket-close Err bitreich.org 70 i- Err bitreich.org 70 i- DNS name resolution: Err bitreich.org 70 i- - get-host-by-name Err bitreich.org 70 i- - get-host-by-address Err bitreich.org 70 i- - ::host-ent-addresses Err bitreich.org 70 i- - host-ent-name Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-CMUCL Err bitreich.org 70 i-===== Err bitreich.org 70 i- Err bitreich.org 70 i- sockets: Err bitreich.org 70 i- - ext:connect-to-inet-socket (ip integer) port Err bitreich.org 70 i- - sys:make-fd-stream Err bitreich.org 70 i- - ext:close-socket Err bitreich.org 70 i- Err bitreich.org 70 i- DNS name resolution: Err bitreich.org 70 i- - ext:host-entry-name Err bitreich.org 70 i- - ext::lookup-host-entry Err bitreich.org 70 i- - ext:host-entry-addr-list Err bitreich.org 70 i- - ext:lookup-host-entry Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-ABCL Err bitreich.org 70 i-==== Err bitreich.org 70 i- Err bitreich.org 70 i- sockets Err bitreich.org 70 i- - ext:socket-connect (hostname string) port Err bitreich.org 70 i- - ext:get-socket-stream Err bitreich.org 70 i- - ext:socket-close Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-clisp Err bitreich.org 70 i-===== Err bitreich.org 70 i- Err bitreich.org 70 i- sockets Err bitreich.org 70 i- - socket-connect port (hostname string) Err bitreich.org 70 i- - close (socket) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Allegro Err bitreich.org 70 i-======= Err bitreich.org 70 i- Err bitreich.org 70 i- sockets Err bitreich.org 70 i- - make-socket Err bitreich.org 70 i- - socket-connect Err bitreich.org 70 i- - close Err bitreich.org 70 i- Err bitreich.org 70 i- DNS resolution Err bitreich.org 70 i- - lookup-hostname Err bitreich.org 70 i- - ipaddr-to-hostname Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/notes/address-apis.txt b/3rdparties/software/usocket-0.7.1/notes/address-apis.txt /scm/clic/file/3rdparties/software/usocket-0.7.1/notes/address-apis.txt.gph bitreich.org 70 i@@ -1,73 +0,0 @@ Err bitreich.org 70 i- Err bitreich.org 70 i- -*- text -*- Err bitreich.org 70 i- Err bitreich.org 70 i-Step 2 of the master plan: Implementing (get-local-address sock) and Err bitreich.org 70 i-(get-peer-address sock). Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Step 2 is about implementing: Err bitreich.org 70 i- Err bitreich.org 70 i- (get-local-address sock) -> ip Err bitreich.org 70 i- (get-peer-address sock) -> ip Err bitreich.org 70 i- (get-local-port sock) -> port Err bitreich.org 70 i- (get-peer-port sock) -> port Err bitreich.org 70 i- (get-local-name sock) -> ip, port Err bitreich.org 70 i- (get-peer-name sock) -> ip, port Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-ABCL Err bitreich.org 70 i-==== Err bitreich.org 70 i- Err bitreich.org 70 i- FFI / J-calls to "getLocalAddress"+"getAddress", "getLocalPort" (local) Err bitreich.org 70 i- FFI / J-calls to "getInetAddress"+"getAddress", "getPort" (peer) Err bitreich.org 70 i- Err bitreich.org 70 i- (see SLIME / swank-abcl.lisp for an example on how to do that) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Allegro Err bitreich.org 70 i-======= Err bitreich.org 70 i- Err bitreich.org 70 i- (values (socket:remote-host sock) Err bitreich.org 70 i- (socket:remote-port)) -> 32bit ip, port Err bitreich.org 70 i- Err bitreich.org 70 i- (values (socket:local-host sock) Err bitreich.org 70 i- (socket:local-port sock)) -> 32bit ip, port Err bitreich.org 70 i- Err bitreich.org 70 i-CLISP Err bitreich.org 70 i-===== Err bitreich.org 70 i- Err bitreich.org 70 i- (socket:socket-stream-local sock nil) -> address (as dotted quad), port Err bitreich.org 70 i- (socket:socket-stream-peer sock nil) -> address (as dotted quad), port Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-CMUCL Err bitreich.org 70 i-===== Err bitreich.org 70 i- Err bitreich.org 70 i- (ext:get-peer-host-and-port sock-fd) -> 32-bit-addr, port (peer) Err bitreich.org 70 i- (ext:get-socket-host-and-port sock-fd) -> 32-bit-addr, port (local) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-LispWorks Err bitreich.org 70 i-========= Err bitreich.org 70 i- Err bitreich.org 70 i- (comm:socket-stream-address sock-stream) -> 32-bit-addr, port Err bitreich.org 70 i- or: (comm:get-socket-address sock) -> 32-bit-addr, port Err bitreich.org 70 i- Err bitreich.org 70 i- (comm:socket-stream-peer-address sock-stream) -> 32-bit-addr, port Err bitreich.org 70 i- or: (comm:get-socket-peer-address sock) -> 32-bit-addr, port Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-OpenMCL Err bitreich.org 70 i-======= Err bitreich.org 70 i- Err bitreich.org 70 i- (values (ccl:local-host sock) (ccl:local-port sock)) -> 32-bit ip, port Err bitreich.org 70 i- (values (ccl:remote-host sock) (ccl:remote-port sock)) -> 32-bit ip, port Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-SBCL Err bitreich.org 70 i-==== Err bitreich.org 70 i- Err bitreich.org 70 i- (sb-bsd-sockets:socket-name sock) -> vector-quad, port Err bitreich.org 70 i- (sb-bsd-sockets:socket-peer-name sock) -> vector-quad, port Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/notes/allegro-socket.txt b/3rdparties/software/usocket-0.7.1/notes/allegro-socket.txt /scm/clic/file/3rdparties/software/usocket-0.7.1/notes/allegro-socket.txt.gph bitreich.org 70 i@@ -1,46 +0,0 @@ Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(require :sock) Err bitreich.org 70 i- Err bitreich.org 70 i-accept-connection (sock passive-socket) &key wait Generic function. Err bitreich.org 70 i-dotted-to-ipaddr dotted &key errorp Function. Err bitreich.org 70 i-ipaddr-to-dotted ipaddr &key values Function. Err bitreich.org 70 i-ipaddr-to-hostname ipaddr Function. Err bitreich.org 70 i-lookup-hostname hostname Err bitreich.org 70 i-lookup-port portname protocol Function. Err bitreich.org 70 i-make-socket &key type format address-family connect &allow-other-keys Function. Err bitreich.org 70 i-with-pending-connect &body body Macro. Err bitreich.org 70 i-receive-from (sock datagram-socket) size &key buffer extract Generic function. Err bitreich.org 70 i-send-to sock &key Err bitreich.org 70 i-shutdown sock &key direction Err bitreich.org 70 i-socket-control stream &key output-chunking output-chunking-eof input-chunking Err bitreich.org 70 i-socket-os-fd sock Generic function. Err bitreich.org 70 i- Err bitreich.org 70 i-remote-host socket Generic function. Err bitreich.org 70 i-local-host socket Generic function. Err bitreich.org 70 i-local-port socket Err bitreich.org 70 i- Err bitreich.org 70 i-remote-filename socket Err bitreich.org 70 i-local-filename socket Err bitreich.org 70 i-remote-port socket Err bitreich.org 70 i-socket-address-family socket Err bitreich.org 70 i-socket-connect socket Err bitreich.org 70 i-socket-format socket Err bitreich.org 70 i-socket-type socket Err bitreich.org 70 i- Err bitreich.org 70 i-errors Err bitreich.org 70 i- Err bitreich.org 70 i-:address-in-use Local socket address already in use Err bitreich.org 70 i-:address-not-available Local socket address not available Err bitreich.org 70 i-:network-down Network is down Err bitreich.org 70 i-:network-reset Network has been reset Err bitreich.org 70 i-:connection-aborted Connection aborted Err bitreich.org 70 i-:connection-reset Connection reset by peer Err bitreich.org 70 i-:no-buffer-space No buffer space Err bitreich.org 70 i-:shutdown Connection shut down Err bitreich.org 70 i-:connection-timed-out Connection timed out Err bitreich.org 70 i-:connection-refused Connection refused Err bitreich.org 70 i-:host-down Host is down Err bitreich.org 70 i-:host-unreachable Host is unreachable Err bitreich.org 70 i-:unknown Unknown error Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/notes/backends.txt b/3rdparties/software/usocket-0.7.1/notes/backends.txt /scm/clic/file/3rdparties/software/usocket-0.7.1/notes/backends.txt.gph bitreich.org 70 i@@ -1,60 +0,0 @@ Err bitreich.org 70 i- -*- text -*- Err bitreich.org 70 i- Err bitreich.org 70 i-$Id$ Err bitreich.org 70 i- Err bitreich.org 70 i-A document to describe which APIs a backend should implement. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Each backend should implement: Err bitreich.org 70 i- Err bitreich.org 70 i-Functions: Err bitreich.org 70 i- Err bitreich.org 70 i- - handle-condition Err bitreich.org 70 i- - socket-connect Err bitreich.org 70 i- - socket-listen Err bitreich.org 70 i- - get-hosts-by-name [ optional ] Err bitreich.org 70 i- - get-host-by-address [ optional ] Err bitreich.org 70 i- Err bitreich.org 70 i- - wait-for-input-internal (new in 0.4.x) Err bitreich.org 70 i- Err bitreich.org 70 i-Methods: Err bitreich.org 70 i- Err bitreich.org 70 i- - socket-close Err bitreich.org 70 i- - socket-accept Err bitreich.org 70 i- - get-local-name Err bitreich.org 70 i- - get-peer-name Err bitreich.org 70 i- Err bitreich.org 70 i- and - for ip sockets - these methods: Err bitreich.org 70 i- Err bitreich.org 70 i- - get-local-address Err bitreich.org 70 i- - get-local-port Err bitreich.org 70 i- - get-peer-address Err bitreich.org 70 i- - get-peer-port Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-An error-handling function, resolving implementation specific errors Err bitreich.org 70 i-to this list of errors: Err bitreich.org 70 i- Err bitreich.org 70 i- - address-in-use-error Err bitreich.org 70 i- - address-not-available-error Err bitreich.org 70 i- - bad-file-descriptor-error Err bitreich.org 70 i- - connection-refused-error Err bitreich.org 70 i- - invalid-argument-error Err bitreich.org 70 i- - no-buffers-error Err bitreich.org 70 i- - operation-not-supported-error Err bitreich.org 70 i- - operation-not-permitted-error Err bitreich.org 70 i- - protocol-not-supported-error Err bitreich.org 70 i- - socket-type-not-supported-error Err bitreich.org 70 i- - network-unreachable-error Err bitreich.org 70 i- - network-down-error Err bitreich.org 70 i- - network-reset-error Err bitreich.org 70 i- - host-down-error Err bitreich.org 70 i- - host-unreachable-error Err bitreich.org 70 i- - shutdown-error Err bitreich.org 70 i- - timeout-error Err bitreich.org 70 i- - unkown-error Err bitreich.org 70 i- Err bitreich.org 70 i-and these conditions: Err bitreich.org 70 i- Err bitreich.org 70 i- - interrupted-condition Err bitreich.org 70 i- - unkown-condition Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/notes/clisp-sockets.txt b/3rdparties/software/usocket-0.7.1/notes/clisp-sockets.txt /scm/clic/file/3rdparties/software/usocket-0.7.1/notes/clisp-sockets.txt.gph bitreich.org 70 i@@ -1,38 +0,0 @@ Err bitreich.org 70 i-http://clisp.cons.org/impnotes.html#socket Err bitreich.org 70 i- Err bitreich.org 70 i-(SOCKET:SOCKET-SERVER &OPTIONAL [port-or-socket]) Err bitreich.org 70 i-(SOCKET:SOCKET-SERVER-HOST socket-server) Err bitreich.org 70 i-(SOCKET:SOCKET-SERVER-PORT socket-server) Err bitreich.org 70 i-(SOCKET:SOCKET-WAIT socket-server &OPTIONAL [seconds [microseconds]]) Err bitreich.org 70 i-(SOCKET:SOCKET-ACCEPT socket-server &KEY :ELEMENT-TYPE :EXTERNAL-FORMAT :BUFFERED :TIMEOUT) Err bitreich.org 70 i-(SOCKET:SOCKET-CONNECT port &OPTIONAL [host] &KEY :ELEMENT-TYPE :EXTERNAL-FORMAT :BUFFERED :TIMEOUT) Err bitreich.org 70 i-(SOCKET:SOCKET-STATUS socket-stream-or-list &OPTIONAL [seconds [microseconds]]) Err bitreich.org 70 i-(SOCKET:SOCKET-STREAM-HOST socket-stream) Err bitreich.org 70 i-(SOCKET:SOCKET-STREAM-PORT socket-stream) Err bitreich.org 70 i-(SOCKET:SOCKET-SERVICE-PORT &OPTIONAL service-name (protocol "tcp")) Err bitreich.org 70 i-(SOCKET:SOCKET-STREAM-PEER socket-stream [do-not-resolve-p]) Err bitreich.org 70 i-(SOCKET:SOCKET-STREAM-LOCAL socket-stream [do-not-resolve-p]) Err bitreich.org 70 i-(SOCKET:SOCKET-STREAM-SHUTDOWN socket-stream direction) Err bitreich.org 70 i-(SOCKET:SOCKET-OPTIONS socket-server &REST {option}*) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(posix:resolve-host-ipaddr &optional host) Err bitreich.org 70 i- Err bitreich.org 70 i-with the host-ent structure: Err bitreich.org 70 i- Err bitreich.org 70 i- name - host name Err bitreich.org 70 i- aliases - LIST of aliases Err bitreich.org 70 i- addr-list - LIST of IPs as dotted quads (IPv4) or coloned octets (IPv6) Err bitreich.org 70 i- addrtype - INTEGER address type IPv4 or IPv6 Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Errors are of type Err bitreich.org 70 i- Err bitreich.org 70 i-SYSTEM::SIMPLE-OS-ERROR Err bitreich.org 70 i- with a 1 element (integer) SYSTEM::$FORMAT-ARGUMENTS list Err bitreich.org 70 i- Err bitreich.org 70 i-This integer stores the OS error reported; meaning WSA* codes on Win32 Err bitreich.org 70 i-and E* codes on *nix, only: unix.lisp in CMUCL shows Err bitreich.org 70 i-BSD, Linux and SRV4 have different number assignments for the same Err bitreich.org 70 i-E* constant names :-( Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/notes/cmucl-sockets.txt b/3rdparties/software/usocket-0.7.1/notes/cmucl-sockets.txt /scm/clic/file/3rdparties/software/usocket-0.7.1/notes/cmucl-sockets.txt.gph bitreich.org 70 i@@ -1,69 +0,0 @@ Err bitreich.org 70 i-http://cvs2.cons.org/ftp-area/cmucl/doc/cmu-user/internet.html Err bitreich.org 70 i- Err bitreich.org 70 i-$Id$ Err bitreich.org 70 i- Err bitreich.org 70 i-extensions:lookup-host-entry host Err bitreich.org 70 i- Err bitreich.org 70 i-[structure] Err bitreich.org 70 i-host-entry Err bitreich.org 70 i- Err bitreich.org 70 i- name aliases addr-type addr-list Err bitreich.org 70 i- Err bitreich.org 70 i-[Function] Err bitreich.org 70 i-extensions:create-inet-listener port &optional kind &key :reuse-address :backlog :interface Err bitreich.org 70 i- => socket fd Err bitreich.org 70 i- Err bitreich.org 70 i-[Function] Err bitreich.org 70 i-extensions:accept-tcp-connection unconnected Err bitreich.org 70 i- => socket fd, address Err bitreich.org 70 i- Err bitreich.org 70 i-[Function] Err bitreich.org 70 i-extensions:connect-to-inet-socket host port &optional kind Err bitreich.org 70 i- => socket fd Err bitreich.org 70 i- Err bitreich.org 70 i-[Function] Err bitreich.org 70 i-extensions:close-socket socket Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-[Private function] Err bitreich.org 70 i-extensions::get-peer-host-and-port socket-fd Err bitreich.org 70 i- Err bitreich.org 70 i-[Private function] Err bitreich.org 70 i-extentsions::get-socket-host-and-port socket-fd Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-There's currently only 1 condition to be raised: Err bitreich.org 70 i- Err bitreich.org 70 i- SOCKET-ERROR (derived from SIMPLE-ERROR) Err bitreich.org 70 i- which has a SOCKET-ERRNO slot containing the unix error number. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-[Function] Err bitreich.org 70 i-extensions:add-oob-handler fd char handler Err bitreich.org 70 i- Err bitreich.org 70 i-[Function] Err bitreich.org 70 i-extensions:remove-oob-handler fd char Err bitreich.org 70 i- Err bitreich.org 70 i-[Function] Err bitreich.org 70 i-extensions:remove-all-oob-handlers fd Err bitreich.org 70 i- Err bitreich.org 70 i-[Function] Err bitreich.org 70 i-extensions:send-character-out-of-band fd char Err bitreich.org 70 i- Err bitreich.org 70 i-[Function] Err bitreich.org 70 i-extensions:create-inet-socket &optional type Err bitreich.org 70 i- => socket fd Err bitreich.org 70 i- Err bitreich.org 70 i-[Function] Err bitreich.org 70 i-extensions:get-socket-option socket level optname Err bitreich.org 70 i- Err bitreich.org 70 i-[Function] Err bitreich.org 70 i-extensions:set-socket-option socket level optname optval Err bitreich.org 70 i- Err bitreich.org 70 i-[Function] Err bitreich.org 70 i-extensions:ip-string addr Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/notes/design.txt b/3rdparties/software/usocket-0.7.1/notes/design.txt /scm/clic/file/3rdparties/software/usocket-0.7.1/notes/design.txt.gph bitreich.org 70 i@@ -1,136 +0,0 @@ Err bitreich.org 70 i- Err bitreich.org 70 i- -*- text -*- Err bitreich.org 70 i- Err bitreich.org 70 i-$Id$ Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- usocket: Universal sockets library Err bitreich.org 70 i- ================================== Err bitreich.org 70 i- Err bitreich.org 70 i-Contents Err bitreich.org 70 i-======== Err bitreich.org 70 i- Err bitreich.org 70 i- * Motivation Err bitreich.org 70 i- * Design goal Err bitreich.org 70 i- * Functional requirements Err bitreich.org 70 i- * Class structure Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Motivation Err bitreich.org 70 i-========== Err bitreich.org 70 i- Err bitreich.org 70 i-There are 2 other portability sockets packages [that I know of] Err bitreich.org 70 i-out there: Err bitreich.org 70 i- Err bitreich.org 70 i- 1) trivial-sockets Err bitreich.org 70 i- 2) acl-compat (which is a *lot* broader, but contains sockets too) Err bitreich.org 70 i- Err bitreich.org 70 i-The first misses some functionality which is fundamental when Err bitreich.org 70 i-the requirements stop being 'trivial', such as finding out the Err bitreich.org 70 i-addresses of either side connected to the tcp/ip stream. Err bitreich.org 70 i- Err bitreich.org 70 i-The second, being a complete compatibility library for Allegro, Err bitreich.org 70 i-contains much more than only sockets. Next to that, as the docs Err bitreich.org 70 i-say, is it mainly directed at providing the functionality required Err bitreich.org 70 i-to port portable-allegroserve - meaning it may be (very) incomplete Err bitreich.org 70 i-on some platforms. Err bitreich.org 70 i- Err bitreich.org 70 i-So, that's why I decided to inherit Erik Enge's project to build Err bitreich.org 70 i-a library with the intention to provide portability code in only Err bitreich.org 70 i-1 area of programming, targeted at 'not so trivial' programming. Err bitreich.org 70 i- Err bitreich.org 70 i-Also, I need this library to extend cl-irc with full DCC functionality. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Design goal Err bitreich.org 70 i-=========== Err bitreich.org 70 i- Err bitreich.org 70 i-To provide a portable TCP/IP socket interface for as many Err bitreich.org 70 i-implementations as possible, while keeping the portability layer Err bitreich.org 70 i-as thin as possible. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Functional requirements Err bitreich.org 70 i-======================= Err bitreich.org 70 i- Err bitreich.org 70 i-The interface provided should allow: Err bitreich.org 70 i- - 'client'/active sockets Err bitreich.org 70 i- - 'server'/listening sockets Err bitreich.org 70 i- - provide the usual stream methods to operate on the connection stream Err bitreich.org 70 i- (not necessarily the socket itself; maybe a socket slot too) Err bitreich.org 70 i- Err bitreich.org 70 i-For now, as long as there are no possibilities to have UDP sockets Err bitreich.org 70 i-to write a DNS client library: (which in the end may work better, Err bitreich.org 70 i-because in this respect all implementations are different...) Err bitreich.org 70 i- - retrieve IP addresses/ports for both sides of the connection Err bitreich.org 70 i- Err bitreich.org 70 i-Several relevant support functionalities will have to be provided too: Err bitreich.org 70 i- - long <-> quad-vector operators Err bitreich.org 70 i- - quad-vector <-> string operators Err bitreich.org 70 i- - hostname <-> quad-vector operators (hostname resolution) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Minimally, I'd like to support: Err bitreich.org 70 i- - SBCL Err bitreich.org 70 i- - CMUCL Err bitreich.org 70 i- - ABCL (ArmedBear) Err bitreich.org 70 i- - clisp Err bitreich.org 70 i- - Allegro Err bitreich.org 70 i- - LispWorks Err bitreich.org 70 i- - OpenMCL Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Comments on the design above Err bitreich.org 70 i-============================ Err bitreich.org 70 i- Err bitreich.org 70 i-I don't think it's a good idea to implement name lookup in the Err bitreich.org 70 i-very first of steps: we'll see if this is required to get the Err bitreich.org 70 i-package accepted; not all implementations support it. Err bitreich.org 70 i- Err bitreich.org 70 i-Name resolution errors ... Err bitreich.org 70 i-Since there is no name resolution library (yet), nor standardized Err bitreich.org 70 i-hooks into the standard C library to do it the same way on Err bitreich.org 70 i-all platforms, name resolution errors can manifest themselves Err bitreich.org 70 i-in a lot of different ways. How to marshall these to the Err bitreich.org 70 i-library users? Err bitreich.org 70 i- Err bitreich.org 70 i-Several solutions come to mind: Err bitreich.org 70 i- Err bitreich.org 70 i-1) Map them to 'unknown-error Err bitreich.org 70 i-2) Give them their own errors and map to those Err bitreich.org 70 i- ... which implies that they are actually supported atm. Err bitreich.org 70 i-3) ... Err bitreich.org 70 i- Err bitreich.org 70 i-Given that the library doesn't now, but may in the future, Err bitreich.org 70 i-include name resolution officially, I tend to think (1) is the Err bitreich.org 70 i-right answer: it leaves it all undecided. Err bitreich.org 70 i- Err bitreich.org 70 i-These errors can be raised by the nameresolution service Err bitreich.org 70 i-(netdb.h) as values for 'int h_errno': Err bitreich.org 70 i- Err bitreich.org 70 i-- HOST_NOT_FOUND (1) Err bitreich.org 70 i-- TRY_AGAIN (2) /* Server fail or non-authoritive Host not found */ Err bitreich.org 70 i-- NO_RECOVERY (3) /* Failed permanently */ Err bitreich.org 70 i-- NO_DATA (4) /* Valid address, no data for requested record */ Err bitreich.org 70 i- Err bitreich.org 70 i-int *__h_errno_location(void) points to thread local h_errno on Err bitreich.org 70 i-threaded glibc2 systems. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Class structure Err bitreich.org 70 i-=============== Err bitreich.org 70 i- Err bitreich.org 70 i- usocket Err bitreich.org 70 i- | Err bitreich.org 70 i- +- datagram-usocket Err bitreich.org 70 i- +- stream-usocket Err bitreich.org 70 i- \- stream-server-usocket Err bitreich.org 70 i- Err bitreich.org 70 i-The usocket class will have methods to query local properties, such Err bitreich.org 70 i-as: Err bitreich.org 70 i- Err bitreich.org 70 i- - get-local-name: to query to which interface the socket is bound Err bitreich.org 70 i- - Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/notes/errors.txt b/3rdparties/software/usocket-0.7.1/notes/errors.txt /scm/clic/file/3rdparties/software/usocket-0.7.1/notes/errors.txt.gph bitreich.org 70 i@@ -1,20 +0,0 @@ Err bitreich.org 70 i-EADDRINUSE 48 address-in-use-error Err bitreich.org 70 i-EADDRNOTAVAIL 49 address-not-available-error Err bitreich.org 70 i-EAGAIN interrupted-error ;; not 1 error code: bsd == 11; non-bsd == 35 Err bitreich.org 70 i-EBADF 9 bad-file-descriptor-error Err bitreich.org 70 i-ECONNREFUSED 61 connection-refused-error Err bitreich.org 70 i-EINTR 4 interrupted-error Err bitreich.org 70 i-EINVAL 22 invalid-argument-error Err bitreich.org 70 i-ENOBUFS 55 no-buffers-error Err bitreich.org 70 i-ENOMEM 12 out-of-memory-error Err bitreich.org 70 i-EOPNOTSUPP 45 operation-not-supported-error Err bitreich.org 70 i-EPERM 1 operation-not-permitted-error Err bitreich.org 70 i-EPROTONOSUPPORT 43 protocol-not-supported-error Err bitreich.org 70 i-ESOCKTNOSUPPORT 44 socket-type-not-supported-error Err bitreich.org 70 i-ENETUNREACH 51 network-unreachable-error Err bitreich.org 70 i-ENETDOWN 50 network-down-error Err bitreich.org 70 i-ENETRESET 52 network-reset-error Err bitreich.org 70 i-ESHUTDOWN 58 already-shutdown-error Err bitreich.org 70 i-ETIMEDOUT 60 connection-timeout-error Err bitreich.org 70 i-EHOSTDOWN 64 host-down-error Err bitreich.org 70 i-EHOSTUNREACH 65 host-unreachable-error Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/notes/lw-sockets.txt b/3rdparties/software/usocket-0.7.1/notes/lw-sockets.txt /scm/clic/file/3rdparties/software/usocket-0.7.1/notes/lw-sockets.txt.gph bitreich.org 70 i@@ -1,41 +0,0 @@ Err bitreich.org 70 i- Err bitreich.org 70 i-$Id$ Err bitreich.org 70 i- Err bitreich.org 70 i-http://www.lispworks.com/reference/lwu41/lwref/LWRM_37.HTM Err bitreich.org 70 i- Err bitreich.org 70 i-Package: COMM Err bitreich.org 70 i- Err bitreich.org 70 i-ip-address-string Err bitreich.org 70 i-socket-stream-address Err bitreich.org 70 i-socket-stream-peer-address Err bitreich.org 70 i-start-up-server Err bitreich.org 70 i-start-up-server-and-mp Err bitreich.org 70 i-string-ip-address Err bitreich.org 70 i-with-noticed-socket-stream Err bitreich.org 70 i- Err bitreich.org 70 i-Needed components for usocket: Err bitreich.org 70 i- Err bitreich.org 70 i-comm::get-fd-from-socket socket-fd Err bitreich.org 70 i- => socket-fd Err bitreich.org 70 i- Err bitreich.org 70 i-comm::accept-connection-to-socket socket-fd Err bitreich.org 70 i- => socket-fd Err bitreich.org 70 i- Err bitreich.org 70 i-comm::close-socket Err bitreich.org 70 i-comm::create-tcp-socket-for-service Err bitreich.org 70 i- => socket-fd Err bitreich.org 70 i- Err bitreich.org 70 i-open-tcp-stream peer-host peer-port &key direction element-type Err bitreich.org 70 i- => socket-stream Err bitreich.org 70 i- Err bitreich.org 70 i-get-host-entry (see http://www.lispworks.com/documentation/lw445/LWRM/html/lwref-30.htm#pgfId-897837) Err bitreich.org 70 i-get-socket-address Err bitreich.org 70 i- Err bitreich.org 70 i-get-socket-peer-address Err bitreich.org 70 i- => address, port Err bitreich.org 70 i- Err bitreich.org 70 i-socket-stream socket-fd Err bitreich.org 70 i- => stream Err bitreich.org 70 i- Err bitreich.org 70 i-socket socket-stream (guessed from http://www.lispworks.com/documentation/lw445/LWRM/html/lwref-43.htm) Err bitreich.org 70 i- => socket-fd Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/notes/openmcl-sockets.txt b/3rdparties/software/usocket-0.7.1/notes/openmcl-sockets.txt /scm/clic/file/3rdparties/software/usocket-0.7.1/notes/openmcl-sockets.txt.gph bitreich.org 70 i@@ -1,27 +0,0 @@ Err bitreich.org 70 i-http://openmcl.clozure.com/Doc/sockets.html Err bitreich.org 70 i- Err bitreich.org 70 i- make-socket [Function] Err bitreich.org 70 i- accept-connection [Function] Err bitreich.org 70 i- dotted-to-ipaddr [Function] Err bitreich.org 70 i- ipaddr-to-dotted [Function] Err bitreich.org 70 i- ipaddr-to-hostname [Function] Err bitreich.org 70 i- lookup-hostname [Function] Err bitreich.org 70 i- lookup-port [Function] Err bitreich.org 70 i- receive-from [Function] Err bitreich.org 70 i- send-to [Function] Err bitreich.org 70 i- shutdown [Function] Err bitreich.org 70 i- socket-os-fd [Function] Err bitreich.org 70 i- remote-port [Function] Err bitreich.org 70 i- local-host [Function] Err bitreich.org 70 i- local-port [Function] Err bitreich.org 70 i- Err bitreich.org 70 i- socket-address-family [Function] Err bitreich.org 70 i- Err bitreich.org 70 i- socket-connect [Function] Err bitreich.org 70 i- socket-format [Function] Err bitreich.org 70 i- socket-type [Function] Err bitreich.org 70 i- socket-error [Class] Err bitreich.org 70 i- socket-error-code [Function] Err bitreich.org 70 i- socket-error-identifier [Function] Err bitreich.org 70 i- socket-error-situation [Function] Err bitreich.org 70 i- close [method] Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/notes/sb-bsd-sockets.txt b/3rdparties/software/usocket-0.7.1/notes/sb-bsd-sockets.txt /scm/clic/file/3rdparties/software/usocket-0.7.1/notes/sb-bsd-sockets.txt.gph bitreich.org 70 i@@ -1,114 +0,0 @@ Err bitreich.org 70 i-http://www.xach.com/sbcl/sb-bsd-sockets.html Err bitreich.org 70 i- Err bitreich.org 70 i-$Id$ Err bitreich.org 70 i- Err bitreich.org 70 i-package: sb-bsd-sockets Err bitreich.org 70 i- Err bitreich.org 70 i-class: socket Err bitreich.org 70 i- Err bitreich.org 70 i-slots: Err bitreich.org 70 i- Err bitreich.org 70 i- * file-descriptor : Err bitreich.org 70 i- * family : Err bitreich.org 70 i- * protocol : Err bitreich.org 70 i- * type : Err bitreich.org 70 i- * stream : Err bitreich.org 70 i- Err bitreich.org 70 i-operators: Err bitreich.org 70 i- Err bitreich.org 70 i- (socket-bind (s socket) &rest address) Generic Function Err bitreich.org 70 i- (socket-accept (socket socket)) Method Err bitreich.org 70 i- (socket-connect (s socket) &rest address) Generic Function Err bitreich.org 70 i- (socket-peername (socket socket)) Method Err bitreich.org 70 i- (socket-name (socket socket)) Method Err bitreich.org 70 i- (socket-receive (socket socket) buffer length &key oob peek waitall (element-type 'character)) Method Err bitreich.org 70 i- (socket-listen (socket socket) backlog) Method Err bitreich.org 70 i- (socket-close (socket socket)) Method Err bitreich.org 70 i- (socket-make-stream (socket socket) &rest args) Method Err bitreich.org 70 i- Err bitreich.org 70 i- (sockopt-reuse-address (socket socket) argument) Accessor Err bitreich.org 70 i- (sockopt-keep-alive (socket socket) argument) Accessor Err bitreich.org 70 i- (sockopt-oob-inline (socket socket) argument) Accessor Err bitreich.org 70 i- (sockopt-bsd-compatible (socket socket) argument) Accessor Err bitreich.org 70 i- (sockopt-pass-credentials (socket socket) argument) Accessor Err bitreich.org 70 i- (sockopt-debug (socket socket) argument) Accessor Err bitreich.org 70 i- (sockopt-dont-route (socket socket) argument) Accessor Err bitreich.org 70 i- (sockopt-broadcast (socket socket) argument) Accessor Err bitreich.org 70 i- (sockopt-tcp-nodelay (socket socket) argument) Accessor Err bitreich.org 70 i- Err bitreich.org 70 i-inet-domain sockets Err bitreich.org 70 i- Err bitreich.org 70 i-class: inet-socket Err bitreich.org 70 i- Err bitreich.org 70 i-slots: Err bitreich.org 70 i- Err bitreich.org 70 i- * family : Err bitreich.org 70 i- Err bitreich.org 70 i-operators: Err bitreich.org 70 i- Err bitreich.org 70 i- (make-inet-address dotted-quads) Function Err bitreich.org 70 i- (get-protocol-by-name name) Function Err bitreich.org 70 i- (make-inet-socket type protocol) Function Err bitreich.org 70 i- Err bitreich.org 70 i-file-domain sockets Err bitreich.org 70 i- Err bitreich.org 70 i-class: unix-socket Err bitreich.org 70 i- Err bitreich.org 70 i-slots: Err bitreich.org 70 i- Err bitreich.org 70 i- * family : Err bitreich.org 70 i- Err bitreich.org 70 i-class: host-ent Err bitreich.org 70 i- Err bitreich.org 70 i-Slots: Err bitreich.org 70 i- Err bitreich.org 70 i- * name : Err bitreich.org 70 i- * aliases : Err bitreich.org 70 i- * address-type : Err bitreich.org 70 i- * addresses : Err bitreich.org 70 i- Err bitreich.org 70 i- (host-ent-address (host-ent host-ent)) Method Err bitreich.org 70 i- (get-host-by-name host-name) Function Err bitreich.org 70 i- (get-host-by-address address) Function Err bitreich.org 70 i- (name-service-error where) Function Err bitreich.org 70 i- (non-blocking-mode (socket socket)) Method Err bitreich.org 70 i- Err bitreich.org 70 i-(define-socket-condition sockint::EADDRINUSE address-in-use-error) Err bitreich.org 70 i-(define-socket-condition sockint::EAGAIN interrupted-error) Err bitreich.org 70 i-(define-socket-condition sockint::EBADF bad-file-descriptor-error) Err bitreich.org 70 i-(define-socket-condition sockint::ECONNREFUSED connection-refused-error) Err bitreich.org 70 i-(define-socket-condition sockint::EINTR interrupted-error) Err bitreich.org 70 i-(define-socket-condition sockint::EINVAL invalid-argument-error) Err bitreich.org 70 i-(define-socket-condition sockint::ENOBUFS no-buffers-error) Err bitreich.org 70 i-(define-socket-condition sockint::ENOMEM out-of-memory-error) Err bitreich.org 70 i-(define-socket-condition sockint::EOPNOTSUPP operation-not-supported-error) Err bitreich.org 70 i-(define-socket-condition sockint::EPERM operation-not-permitted-error) Err bitreich.org 70 i-(define-socket-condition sockint::EPROTONOSUPPORT protocol-not-supported-error) Err bitreich.org 70 i-(define-socket-condition sockint::ESOCKTNOSUPPORT socket-type-not-supported-error) Err bitreich.org 70 i-(define-socket-condition sockint::ENETUNREACH network-unreachable-error) Err bitreich.org 70 i- Err bitreich.org 70 i-Exported errors: Err bitreich.org 70 i-* (apropos "ERROR" :sb-bsd-sockets) Err bitreich.org 70 i- Err bitreich.org 70 i-SB-BSD-SOCKETS:INTERRUPTED-ERROR Err bitreich.org 70 i-SB-BSD-SOCKETS:TRY-AGAIN-ERROR Err bitreich.org 70 i-* SB-BSD-SOCKETS:NO-RECOVERY-ERROR (EFAIL?) Err bitreich.org 70 i-SB-BSD-SOCKETS:CONNECTION-REFUSED-ERROR Err bitreich.org 70 i-SB-BSD-SOCKETS:INVALID-ARGUMENT-ERROR Err bitreich.org 70 i-* SB-BSD-SOCKETS:HOST-NOT-FOUND-ERROR Err bitreich.org 70 i-SB-BSD-SOCKETS:OPERATION-NOT-PERMITTED-ERROR Err bitreich.org 70 i-SB-BSD-SOCKETS:OPERATION-NOT-SUPPORTED-ERROR Err bitreich.org 70 i-SB-BSD-SOCKETS:PROTOCOL-NOT-SUPPORTED-ERROR Err bitreich.org 70 i-SB-BSD-SOCKETS:OPERATION-TIMEOUT-ERROR Err bitreich.org 70 i-SB-BSD-SOCKETS:SOCKET-TYPE-NOT-SUPPORTED-ERROR Err bitreich.org 70 i-SB-BSD-SOCKETS:NO-BUFFERS-ERROR Err bitreich.org 70 i-SB-BSD-SOCKETS:NETWORK-UNREACHABLE-ERROR Err bitreich.org 70 i-SB-BSD-SOCKETS:BAD-FILE-DESCRIPTOR-ERROR Err bitreich.org 70 i-SB-BSD-SOCKETS:ADDRESS-IN-USE-ERROR Err bitreich.org 70 i-SB-BSD-SOCKETS:OUT-OF-MEMORY-ERROR Err bitreich.org 70 i- Err bitreich.org 70 i-And 1 non-exported error: Err bitreich.org 70 i- Err bitreich.org 70 i-SB-BSD-SOCKETS::NO-ADDRESS-ERROR Err bitreich.org 70 i- Err bitreich.org 70 i-*-ed errors aren't yet addressed in the errorlist supported by usocket Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/notes/usock-sockets.txt b/3rdparties/software/usocket-0.7.1/notes/usock-sockets.txt /scm/clic/file/3rdparties/software/usocket-0.7.1/notes/usock-sockets.txt.gph bitreich.org 70 i@@ -1,28 +0,0 @@ Err bitreich.org 70 i-Package: Err bitreich.org 70 i- Err bitreich.org 70 i- clisp : socket Err bitreich.org 70 i- cmucl : extensions Err bitreich.org 70 i- sbcl : sb-bsd-sockets Err bitreich.org 70 i- lw : comm Err bitreich.org 70 i- openmcl: openmcl-socket Err bitreich.org 70 i- allegro: sock Err bitreich.org 70 i- Err bitreich.org 70 i-Connecting (TCP/inet only) Err bitreich.org 70 i- Err bitreich.org 70 i- clisp : socket-connect port &optional [host] &key :element-type :external-format :buffered :timeout = > socket-stream Err bitreich.org 70 i- cmucl : connect-to-inet-socket host port &optional kind => file descriptor Err bitreich.org 70 i- sbcl : sb-socket-connect socket &rest address => socket Err bitreich.org 70 i- lw : open-tcp-stream hostname service &key direction element-type buffered => stream-object Err bitreich.org 70 i- openmcl: socket-connect socket => :active, :passive or nil Err bitreich.org 70 i- allegro: make-socket (&rest args &key type format connect address-family eol) => socket Err bitreich.org 70 i- Err bitreich.org 70 i-Closing Err bitreich.org 70 i- Err bitreich.org 70 i- clisp : close socket Err bitreich.org 70 i- cmucl : close-socket socket Err bitreich.org 70 i- sbcl : socket-close socket Err bitreich.org 70 i- lw : close socket Err bitreich.org 70 i- openmcl: close socket Err bitreich.org 70 i- allegro: close socket Err bitreich.org 70 i- Err bitreich.org 70 i-Errors Err bitreich.org 70 i-\ No newline at end of file Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/option.lisp b/3rdparties/software/usocket-0.7.1/option.lisp /scm/clic/file/3rdparties/software/usocket-0.7.1/option.lisp.gph bitreich.org 70 i@@ -1,347 +0,0 @@ Err bitreich.org 70 i-;;;; SOCKET-OPTION, a high-level socket option get/set framework Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; See LICENSE for licensing information. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :usocket) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Interface definition Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric socket-option (socket option &key) Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "Get a socket's internal options")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric (setf socket-option) (new-value socket option &key) Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "Set a socket's internal options")) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Handling of wrong type of arguments Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-option ((socket usocket) (option t) &key) Err bitreich.org 70 i- (error 'type-error :datum option :expected-type 'keyword)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod (setf socket-option) (new-value (socket usocket) (option t) &key) Err bitreich.org 70 i- (declare (ignore new-value)) Err bitreich.org 70 i- (socket-option socket option)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-option ((socket usocket) (option symbol) &key) Err bitreich.org 70 i- (if (keywordp option) Err bitreich.org 70 i- (error 'unimplemented :feature option :context 'socket-option) Err bitreich.org 70 i- (error 'type-error :datum option :expected-type 'keyword))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod (setf socket-option) (new-value (socket usocket) (option symbol) &key) Err bitreich.org 70 i- (declare (ignore new-value)) Err bitreich.org 70 i- (socket-option socket option)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Socket option: RECEIVE-TIMEOUT (SO_RCVTIMEO) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-option ((usocket stream-usocket) Err bitreich.org 70 i- (option (eql :receive-timeout)) &key) Err bitreich.org 70 i- (declare (ignorable option)) Err bitreich.org 70 i- (let ((socket (socket usocket))) Err bitreich.org 70 i- (declare (ignorable socket)) Err bitreich.org 70 i- #+abcl Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+allegro Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+clisp Err bitreich.org 70 i- (socket:socket-options socket :so-rcvtimeo) Err bitreich.org 70 i- #+clozure Err bitreich.org 70 i- (ccl:stream-input-timeout socket) Err bitreich.org 70 i- #+cmu Err bitreich.org 70 i- (lisp::fd-stream-timeout (socket-stream usocket)) Err bitreich.org 70 i- #+ecl Err bitreich.org 70 i- (sb-bsd-sockets:sockopt-receive-timeout socket) Err bitreich.org 70 i- #+lispworks Err bitreich.org 70 i- (get-socket-receive-timeout socket) Err bitreich.org 70 i- #+mcl Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+mocl Err bitreich.org 70 i- () ; unknown Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- (sb-impl::fd-stream-timeout (socket-stream usocket)) Err bitreich.org 70 i- #+scl Err bitreich.org 70 i- ())) ; TODO Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod (setf socket-option) (new-value (usocket stream-usocket) Err bitreich.org 70 i- (option (eql :receive-timeout)) &key) Err bitreich.org 70 i- (declare (type number new-value) (ignorable new-value option)) Err bitreich.org 70 i- (let ((socket (socket usocket)) Err bitreich.org 70 i- (timeout new-value)) Err bitreich.org 70 i- (declare (ignorable socket timeout)) Err bitreich.org 70 i- #+abcl Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+allegro Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+clisp Err bitreich.org 70 i- (socket:socket-options socket :so-rcvtimeo timeout) Err bitreich.org 70 i- #+clozure Err bitreich.org 70 i- (setf (ccl:stream-input-timeout socket) timeout) Err bitreich.org 70 i- #+cmu Err bitreich.org 70 i- (setf (lisp::fd-stream-timeout (socket-stream usocket)) Err bitreich.org 70 i- (coerce timeout 'integer)) Err bitreich.org 70 i- #+ecl Err bitreich.org 70 i- (setf (sb-bsd-sockets:sockopt-receive-timeout socket) timeout) Err bitreich.org 70 i- #+lispworks Err bitreich.org 70 i- (set-socket-receive-timeout socket timeout) Err bitreich.org 70 i- #+mcl Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+mocl Err bitreich.org 70 i- () ; unknown Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- (setf (sb-impl::fd-stream-timeout (socket-stream usocket)) Err bitreich.org 70 i- (coerce timeout 'single-float)) Err bitreich.org 70 i- #+scl Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- new-value)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Socket option: SEND-TIMEOUT (SO_SNDTIMEO) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-option ((usocket stream-usocket) Err bitreich.org 70 i- (option (eql :send-timeout)) &key) Err bitreich.org 70 i- (declare (ignorable option)) Err bitreich.org 70 i- (let ((socket (socket usocket))) Err bitreich.org 70 i- (declare (ignorable socket)) Err bitreich.org 70 i- #+abcl Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+allegro Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+clisp Err bitreich.org 70 i- (socket:socket-options socket :so-sndtimeo) Err bitreich.org 70 i- #+clozure Err bitreich.org 70 i- (ccl:stream-output-timeout socket) Err bitreich.org 70 i- #+cmu Err bitreich.org 70 i- (lisp::fd-stream-timeout (socket-stream usocket)) Err bitreich.org 70 i- #+ecl Err bitreich.org 70 i- (sb-bsd-sockets:sockopt-send-timeout socket) Err bitreich.org 70 i- #+lispworks Err bitreich.org 70 i- (get-socket-send-timeout socket) Err bitreich.org 70 i- #+mcl Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+mocl Err bitreich.org 70 i- () ; unknown Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- (sb-impl::fd-stream-timeout (socket-stream usocket)) Err bitreich.org 70 i- #+scl Err bitreich.org 70 i- ())) ; TODO Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod (setf socket-option) (new-value (usocket stream-usocket) Err bitreich.org 70 i- (option (eql :send-timeout)) &key) Err bitreich.org 70 i- (declare (type number new-value) (ignorable new-value option)) Err bitreich.org 70 i- (let ((socket (socket usocket)) Err bitreich.org 70 i- (timeout new-value)) Err bitreich.org 70 i- (declare (ignorable socket timeout)) Err bitreich.org 70 i- #+abcl Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+allegro Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+clisp Err bitreich.org 70 i- (socket:socket-options socket :so-sndtimeo timeout) Err bitreich.org 70 i- #+clozure Err bitreich.org 70 i- (setf (ccl:stream-output-timeout socket) timeout) Err bitreich.org 70 i- #+cmu Err bitreich.org 70 i- (setf (lisp::fd-stream-timeout (socket-stream usocket)) Err bitreich.org 70 i- (coerce timeout 'integer)) Err bitreich.org 70 i- #+ecl Err bitreich.org 70 i- (setf (sb-bsd-sockets:sockopt-send-timeout socket) timeout) Err bitreich.org 70 i- #+lispworks Err bitreich.org 70 i- (set-socket-send-timeout socket timeout) Err bitreich.org 70 i- #+mcl Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+mocl Err bitreich.org 70 i- () ; unknown Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- (setf (sb-impl::fd-stream-timeout (socket-stream usocket)) Err bitreich.org 70 i- (coerce timeout 'single-float)) Err bitreich.org 70 i- #+scl Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- new-value)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Socket option: REUSE-ADDRESS (SO_REUSEADDR), for TCP server Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-option ((usocket stream-server-usocket) Err bitreich.org 70 i- (option (eql :reuse-address)) &key) Err bitreich.org 70 i- (declare (ignorable option)) Err bitreich.org 70 i- (let ((socket (socket usocket))) Err bitreich.org 70 i- (declare (ignorable socket)) Err bitreich.org 70 i- #+abcl Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+allegro Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+clisp Err bitreich.org 70 i- (int->bool (socket:socket-options socket :so-reuseaddr)) Err bitreich.org 70 i- #+clozure Err bitreich.org 70 i- (int->bool (get-socket-option-reuseaddr socket)) Err bitreich.org 70 i- #+cmu Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+lispworks Err bitreich.org 70 i- (get-socket-reuse-address socket) Err bitreich.org 70 i- #+mcl Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+mocl Err bitreich.org 70 i- () ; unknown Err bitreich.org 70 i- #+(or ecl sbcl) Err bitreich.org 70 i- (sb-bsd-sockets:sockopt-reuse-address socket) Err bitreich.org 70 i- #+scl Err bitreich.org 70 i- ())) ; TODO Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod (setf socket-option) (new-value (usocket stream-server-usocket) Err bitreich.org 70 i- (option (eql :reuse-address)) &key) Err bitreich.org 70 i- (declare (type boolean new-value) (ignorable new-value option)) Err bitreich.org 70 i- (let ((socket (socket usocket))) Err bitreich.org 70 i- (declare (ignorable socket)) Err bitreich.org 70 i- #+abcl Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+allegro Err bitreich.org 70 i- (socket:set-socket-options socket option new-value) Err bitreich.org 70 i- #+clisp Err bitreich.org 70 i- (socket:socket-options socket :so-reuseaddr (bool->int new-value)) Err bitreich.org 70 i- #+clozure Err bitreich.org 70 i- (set-socket-option-reuseaddr socket (bool->int new-value)) Err bitreich.org 70 i- #+cmu Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+lispworks Err bitreich.org 70 i- (set-socket-reuse-address socket new-value) Err bitreich.org 70 i- #+mcl Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+mocl Err bitreich.org 70 i- () ; unknown Err bitreich.org 70 i- #+(or ecl sbcl) Err bitreich.org 70 i- (setf (sb-bsd-sockets:sockopt-reuse-address socket) new-value) Err bitreich.org 70 i- #+scl Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- new-value)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Socket option: BROADCAST (SO_BROADCAST), for UDP client Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-option ((usocket datagram-usocket) Err bitreich.org 70 i- (option (eql :broadcast)) &key) Err bitreich.org 70 i- (declare (ignorable option)) Err bitreich.org 70 i- (let ((socket (socket usocket))) Err bitreich.org 70 i- (declare (ignorable socket)) Err bitreich.org 70 i- #+abcl Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+allegro Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+clisp Err bitreich.org 70 i- (int->bool (socket:socket-options socket :so-broadcast)) Err bitreich.org 70 i- #+clozure Err bitreich.org 70 i- (int->bool (get-socket-option-broadcast socket)) Err bitreich.org 70 i- #+cmu Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+ecl Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+lispworks Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+mcl Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+mocl Err bitreich.org 70 i- () ; unknown Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- (sb-bsd-sockets:sockopt-broadcast socket) Err bitreich.org 70 i- #+scl Err bitreich.org 70 i- ())) ; TODO Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod (setf socket-option) (new-value (usocket datagram-usocket) Err bitreich.org 70 i- (option (eql :broadcast)) &key) Err bitreich.org 70 i- (declare (type boolean new-value) (ignorable new-value option)) Err bitreich.org 70 i- (let ((socket (socket usocket))) Err bitreich.org 70 i- (declare (ignorable socket)) Err bitreich.org 70 i- #+abcl Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+allegro Err bitreich.org 70 i- (socket:set-socket-options socket option new-value) Err bitreich.org 70 i- #+clisp Err bitreich.org 70 i- (socket:socket-options socket :so-broadcast (bool->int new-value)) Err bitreich.org 70 i- #+clozure Err bitreich.org 70 i- (set-socket-option-broadcast socket (bool->int new-value)) Err bitreich.org 70 i- #+cmu Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+ecl Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+lispworks Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+mcl Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+mocl Err bitreich.org 70 i- () ; unknown Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- (setf (sb-bsd-sockets:sockopt-broadcast socket) new-value) Err bitreich.org 70 i- #+scl Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- new-value)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Socket option: TCP-NODELAY (TCP_NODELAY), for TCP client Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-option ((usocket stream-usocket) Err bitreich.org 70 i- (option (eql :tcp-no-delay)) &key) Err bitreich.org 70 i- (declare (ignore option)) Err bitreich.org 70 i- (socket-option usocket :tcp-nodelay)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-option ((usocket stream-usocket) Err bitreich.org 70 i- (option (eql :tcp-nodelay)) &key) Err bitreich.org 70 i- (declare (ignorable option)) Err bitreich.org 70 i- (let ((socket (socket usocket))) Err bitreich.org 70 i- (declare (ignorable socket)) Err bitreich.org 70 i- #+abcl Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+allegro Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+clisp Err bitreich.org 70 i- (int->bool (socket:socket-options socket :tcp-nodelay)) Err bitreich.org 70 i- #+clozure Err bitreich.org 70 i- (int->bool (get-socket-option-tcp-nodelay socket)) Err bitreich.org 70 i- #+cmu Err bitreich.org 70 i- () Err bitreich.org 70 i- #+ecl Err bitreich.org 70 i- (sb-bsd-sockets::sockopt-tcp-nodelay socket) Err bitreich.org 70 i- #+lispworks Err bitreich.org 70 i- (int->bool (get-socket-tcp-nodelay socket)) Err bitreich.org 70 i- #+mcl Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+mocl Err bitreich.org 70 i- () ; unknown Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- (sb-bsd-sockets::sockopt-tcp-nodelay socket) Err bitreich.org 70 i- #+scl Err bitreich.org 70 i- ())) ; TODO Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod (setf socket-option) (new-value (usocket stream-usocket) Err bitreich.org 70 i- (option (eql :tcp-no-delay)) &key) Err bitreich.org 70 i- (declare (ignore option)) Err bitreich.org 70 i- (setf (socket-option usocket :tcp-nodelay) new-value)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod (setf socket-option) (new-value (usocket stream-usocket) Err bitreich.org 70 i- (option (eql :tcp-nodelay)) &key) Err bitreich.org 70 i- (declare (type boolean new-value) (ignorable new-value option)) Err bitreich.org 70 i- (let ((socket (socket usocket))) Err bitreich.org 70 i- (declare (ignorable socket)) Err bitreich.org 70 i- #+abcl Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+allegro Err bitreich.org 70 i- (socket:set-socket-options socket :no-delay new-value) Err bitreich.org 70 i- #+clisp Err bitreich.org 70 i- (socket:socket-options socket :tcp-nodelay (bool->int new-value)) Err bitreich.org 70 i- #+clozure Err bitreich.org 70 i- (set-socket-option-tcp-nodelay socket (bool->int new-value)) Err bitreich.org 70 i- #+cmu Err bitreich.org 70 i- () Err bitreich.org 70 i- #+ecl Err bitreich.org 70 i- (setf (sb-bsd-sockets::sockopt-tcp-nodelay socket) new-value) Err bitreich.org 70 i- #+lispworks Err bitreich.org 70 i- (progn Err bitreich.org 70 i- #-(or lispworks4 lispworks5.0) Err bitreich.org 70 i- (comm::set-socket-tcp-nodelay socket new-value) Err bitreich.org 70 i- #+(or lispworks4 lispworks5.0) Err bitreich.org 70 i- (set-socket-tcp-nodelay socket (bool->int new-value))) Err bitreich.org 70 i- #+mcl Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- #+mocl Err bitreich.org 70 i- () ; unknown Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- (setf (sb-bsd-sockets::sockopt-tcp-nodelay socket) new-value) Err bitreich.org 70 i- #+scl Err bitreich.org 70 i- () ; TODO Err bitreich.org 70 i- new-value)) Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:load-toplevel :execute) Err bitreich.org 70 i- (export 'socket-option)) Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/package.lisp b/3rdparties/software/usocket-0.7.1/package.lisp /scm/clic/file/3rdparties/software/usocket-0.7.1/package.lisp.gph bitreich.org 70 i@@ -1,103 +0,0 @@ Err bitreich.org 70 i-;;;; See the LICENSE file for licensing information. Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage :usocket Err bitreich.org 70 i- (:use #-genera :common-lisp Err bitreich.org 70 i- #+genera :future-common-lisp Err bitreich.org 70 i- #+abcl :java Err bitreich.org 70 i- :split-sequence) Err bitreich.org 70 i- (:export #:*version* Err bitreich.org 70 i- #:*wildcard-host* Err bitreich.org 70 i- #:*auto-port* Err bitreich.org 70 i- Err bitreich.org 70 i- #:+max-datagram-packet-size+ Err bitreich.org 70 i- Err bitreich.org 70 i- #:socket-connect ; socket constructors and methods Err bitreich.org 70 i- #:socket-listen Err bitreich.org 70 i- #:socket-accept Err bitreich.org 70 i- #:socket-close Err bitreich.org 70 i- #:socket-shutdown Err bitreich.org 70 i- #:get-local-address Err bitreich.org 70 i- #:get-peer-address Err bitreich.org 70 i- #:get-local-port Err bitreich.org 70 i- #:get-peer-port Err bitreich.org 70 i- #:get-local-name Err bitreich.org 70 i- #:get-peer-name Err bitreich.org 70 i- Err bitreich.org 70 i- #:socket-send ; udp function (send) Err bitreich.org 70 i- #:socket-receive ; udp function (receive) Err bitreich.org 70 i- Err bitreich.org 70 i- #:wait-for-input ; waiting for input-ready state (select() like) Err bitreich.org 70 i- #:make-wait-list Err bitreich.org 70 i- #:add-waiter Err bitreich.org 70 i- #:remove-waiter Err bitreich.org 70 i- #:remove-all-waiters Err bitreich.org 70 i- Err bitreich.org 70 i- #:with-connected-socket ; convenience macros Err bitreich.org 70 i- #:with-server-socket Err bitreich.org 70 i- #:with-client-socket Err bitreich.org 70 i- #:with-socket-listener Err bitreich.org 70 i- Err bitreich.org 70 i- #:usocket ; socket object and accessors Err bitreich.org 70 i- #:stream-usocket Err bitreich.org 70 i- #:stream-server-usocket Err bitreich.org 70 i- #:socket Err bitreich.org 70 i- #:socket-stream Err bitreich.org 70 i- #:datagram-usocket Err bitreich.org 70 i- #:socket-state ; 0.6.4 Err bitreich.org 70 i- Err bitreich.org 70 i- ;; predicates (for version 0.6 or 1.0 ?) Err bitreich.org 70 i- #:usocket-p Err bitreich.org 70 i- #:stream-usocket-p Err bitreich.org 70 i- #:stream-server-usocket-p Err bitreich.org 70 i- #:datagram-usocket-p Err bitreich.org 70 i- Err bitreich.org 70 i- #:host-byte-order ; IPv4 utility functions Err bitreich.org 70 i- #:hbo-to-dotted-quad Err bitreich.org 70 i- #:hbo-to-vector-quad Err bitreich.org 70 i- #:vector-quad-to-dotted-quad Err bitreich.org 70 i- #:dotted-quad-to-vector-quad Err bitreich.org 70 i- Err bitreich.org 70 i- #:vector-to-ipv6-host ; IPv6 utility functions Err bitreich.org 70 i- #:ipv6-host-to-vector Err bitreich.org 70 i- Err bitreich.org 70 i- #:ip= ; IPv4+IPv6 utility function Err bitreich.org 70 i- #:ip/= Err bitreich.org 70 i- Err bitreich.org 70 i- #:integer-to-octet-buffer ; Network utility functions Err bitreich.org 70 i- #:octet-buffer-to-integer Err bitreich.org 70 i- #:port-to-octet-buffer Err bitreich.org 70 i- #:port-from-octet-buffer Err bitreich.org 70 i- #:ip-to-octet-buffer Err bitreich.org 70 i- #:ip-from-octet-buffer Err bitreich.org 70 i- Err bitreich.org 70 i- #:with-mapped-conditions Err bitreich.org 70 i- Err bitreich.org 70 i- #:socket-condition ; conditions Err bitreich.org 70 i- #:ns-condition Err bitreich.org 70 i- #:socket-error ; errors Err bitreich.org 70 i- #:ns-error Err bitreich.org 70 i- #:unknown-condition Err bitreich.org 70 i- #:ns-unknown-condition Err bitreich.org 70 i- #:unknown-error Err bitreich.org 70 i- #:ns-unknown-error Err bitreich.org 70 i- #:socket-warning ; warnings (udp) Err bitreich.org 70 i- Err bitreich.org 70 i- #:insufficient-implementation ; conditions regarding usocket support level Err bitreich.org 70 i- #:unsupported Err bitreich.org 70 i- #:unimplemented Err bitreich.org 70 i- Err bitreich.org 70 i- #:socket-server Err bitreich.org 70 i- #:*remote-host* Err bitreich.org 70 i- #:*remote-port* Err bitreich.org 70 i- Err bitreich.org 70 i- ;; added in 0.7.1 Err bitreich.org 70 i- #:get-host-by-name Err bitreich.org 70 i- #:get-hosts-by-name Err bitreich.org 70 i- #:get-random-host-by-name Err bitreich.org 70 i- #:ns-host-not-found-error Err bitreich.org 70 i- #:ns-no-recovery-error Err bitreich.org 70 i- #:ns-try-again-condition Err bitreich.org 70 i- #:default-udp-handler Err bitreich.org 70 i- #:default-tcp-handler Err bitreich.org 70 i- #:echo-tcp-handler ;; server handlers Err bitreich.org 70 i- )) Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/server.lisp b/3rdparties/software/usocket-0.7.1/server.lisp /scm/clic/file/3rdparties/software/usocket-0.7.1/server.lisp.gph bitreich.org 70 i@@ -1,111 +0,0 @@ Err bitreich.org 70 i-;;;; See LICENSE for licensing information. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :usocket) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *server*) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun socket-server (host port function &optional arguments Err bitreich.org 70 i- &key in-new-thread (protocol :stream) Err bitreich.org 70 i- ;; for udp Err bitreich.org 70 i- (timeout 1) (max-buffer-size +max-datagram-packet-size+) Err bitreich.org 70 i- ;; for tcp Err bitreich.org 70 i- element-type (reuse-address t) multi-threading Err bitreich.org 70 i- name) Err bitreich.org 70 i- (let* ((real-host (or host *wildcard-host*)) Err bitreich.org 70 i- (socket (ecase protocol Err bitreich.org 70 i- (:stream Err bitreich.org 70 i- (apply #'socket-listen Err bitreich.org 70 i- `(,real-host ,port Err bitreich.org 70 i- ,@(when element-type `(:element-type ,element-type)) Err bitreich.org 70 i- ,@(when reuse-address `(:reuse-address ,reuse-address))))) Err bitreich.org 70 i- (:datagram Err bitreich.org 70 i- (socket-connect nil nil :protocol :datagram Err bitreich.org 70 i- :local-host real-host Err bitreich.org 70 i- :local-port port))))) Err bitreich.org 70 i- (labels ((real-call () Err bitreich.org 70 i- (ecase protocol Err bitreich.org 70 i- (:stream Err bitreich.org 70 i- (tcp-event-loop socket function arguments Err bitreich.org 70 i- :element-type element-type Err bitreich.org 70 i- :multi-threading multi-threading)) Err bitreich.org 70 i- (:datagram Err bitreich.org 70 i- (udp-event-loop socket function arguments Err bitreich.org 70 i- :timeout timeout Err bitreich.org 70 i- :max-buffer-size max-buffer-size))))) Err bitreich.org 70 i- (if in-new-thread Err bitreich.org 70 i- (values (portable-threads:spawn-thread (or name "USOCKET Server") #'real-call) socket) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (setq *server* socket) Err bitreich.org 70 i- (real-call)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *remote-host*) Err bitreich.org 70 i-(defvar *remote-port*) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun default-udp-handler (buffer) ; echo Err bitreich.org 70 i- (declare (type (simple-array (unsigned-byte 8) *) buffer)) Err bitreich.org 70 i- buffer) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun udp-event-loop (socket function &optional arguments Err bitreich.org 70 i- &key timeout max-buffer-size) Err bitreich.org 70 i- (let ((buffer (make-array max-buffer-size :element-type '(unsigned-byte 8) :initial-element 0)) Err bitreich.org 70 i- (sockets (list socket))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (loop do Err bitreich.org 70 i- (multiple-value-bind (return-sockets real-time) Err bitreich.org 70 i- (wait-for-input sockets :timeout timeout) Err bitreich.org 70 i- (declare (ignore return-sockets)) Err bitreich.org 70 i- (when real-time Err bitreich.org 70 i- (multiple-value-bind (recv n *remote-host* *remote-port*) Err bitreich.org 70 i- (socket-receive socket buffer max-buffer-size) Err bitreich.org 70 i- (declare (ignore recv)) Err bitreich.org 70 i- (if (plusp n) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (let ((reply Err bitreich.org 70 i- (apply function (subseq buffer 0 n) arguments))) Err bitreich.org 70 i- (when reply Err bitreich.org 70 i- (replace buffer reply) Err bitreich.org 70 i- (let ((n (socket-send socket buffer (length reply) Err bitreich.org 70 i- :host *remote-host* Err bitreich.org 70 i- :port *remote-port*))) Err bitreich.org 70 i- (when (minusp n) Err bitreich.org 70 i- (error "send error: ~A~%" n)))))) Err bitreich.org 70 i- (error "receive error: ~A" n)))) Err bitreich.org 70 i- #+scl (when thread:*quitting-lisp* (return)) Err bitreich.org 70 i- #+(and cmu mp) (mp:process-yield))) Err bitreich.org 70 i- (socket-close socket) Err bitreich.org 70 i- (values)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun default-tcp-handler (stream) ; null Err bitreich.org 70 i- (declare (type stream stream)) Err bitreich.org 70 i- (format stream "Hello world!~%")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun echo-tcp-handler (stream) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- (when (listen stream) Err bitreich.org 70 i- (let ((line (read-line stream nil))) Err bitreich.org 70 i- (write-line line stream) Err bitreich.org 70 i- (force-output stream))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun tcp-event-loop (socket function &optional arguments Err bitreich.org 70 i- &key element-type multi-threading) Err bitreich.org 70 i- (let ((real-function #'(lambda (client-socket &rest arguments) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (multiple-value-bind (*remote-host* *remote-port*) (get-peer-name client-socket) Err bitreich.org 70 i- (apply function (socket-stream client-socket) arguments)) Err bitreich.org 70 i- (close (socket-stream client-socket)) Err bitreich.org 70 i- (socket-close client-socket) Err bitreich.org 70 i- nil)))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (loop do Err bitreich.org 70 i- (let* ((client-socket (apply #'socket-accept Err bitreich.org 70 i- `(,socket ,@(when element-type `(:element-type ,element-type))))) Err bitreich.org 70 i- (client-stream (socket-stream client-socket))) Err bitreich.org 70 i- (if multi-threading Err bitreich.org 70 i- (apply #'portable-threads:spawn-thread "USOCKET Client" real-function client-socket arguments) Err bitreich.org 70 i- (prog1 (apply real-function client-socket arguments) Err bitreich.org 70 i- (close client-stream) Err bitreich.org 70 i- (socket-close client-socket))) Err bitreich.org 70 i- #+scl (when thread:*quitting-lisp* (return)) Err bitreich.org 70 i- #+(and cmu mp) (mp:process-yield))) Err bitreich.org 70 i- (socket-close socket) Err bitreich.org 70 i- (values)))) Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/test/package.lisp b/3rdparties/software/usocket-0.7.1/test/package.lisp /scm/clic/file/3rdparties/software/usocket-0.7.1/test/package.lisp.gph bitreich.org 70 i@@ -1,10 +0,0 @@ Err bitreich.org 70 i-;;;; See the LICENSE file for licensing information. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :cl-user) Err bitreich.org 70 i- Err bitreich.org 70 i-(defpackage :usocket-test Err bitreich.org 70 i- (:use :common-lisp Err bitreich.org 70 i- :usocket Err bitreich.org 70 i- :regression-test) Err bitreich.org 70 i- (:export #:do-tests Err bitreich.org 70 i- #:run-usocket-tests)) Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/test/test-condition.lisp b/3rdparties/software/usocket-0.7.1/test/test-condition.lisp /scm/clic/file/3rdparties/software/usocket-0.7.1/test/test-condition.lisp.gph bitreich.org 70 i@@ -1,27 +0,0 @@ Err bitreich.org 70 i-;;;; See LICENSE for licensing information. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :usocket-test) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest ns-host-not-found-error.1 Err bitreich.org 70 i- (with-caught-conditions (usocket:ns-host-not-found-error nil) Err bitreich.org 70 i- (usocket:socket-connect "xxx" 123) Err bitreich.org 70 i- t) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest timeout-error.1 Err bitreich.org 70 i- (with-caught-conditions (usocket:timeout-error nil) Err bitreich.org 70 i- (usocket:socket-connect "common-lisp.net" 81 :timeout 0) Err bitreich.org 70 i- t) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest connection-refused-error.1 Err bitreich.org 70 i- (with-caught-conditions (usocket:connection-refused-error nil) Err bitreich.org 70 i- (usocket:socket-connect "common-lisp.net" 81) Err bitreich.org 70 i- t) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest operation-not-permitted-error.1 Err bitreich.org 70 i- (with-caught-conditions (usocket:operation-not-permitted-error nil) Err bitreich.org 70 i- (usocket:socket-listen "0.0.0.0" 81) Err bitreich.org 70 i- t) Err bitreich.org 70 i- nil) Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/test/test-datagram.lisp b/3rdparties/software/usocket-0.7.1/test/test-datagram.lisp /scm/clic/file/3rdparties/software/usocket-0.7.1/test/test-datagram.lisp.gph bitreich.org 70 i@@ -1,123 +0,0 @@ Err bitreich.org 70 i-;;;; See LICENSE for licensing information. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :usocket-test) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *echo-server*) Err bitreich.org 70 i-(defvar *echo-server-port*) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun start-server () Err bitreich.org 70 i- (multiple-value-bind (thread socket) Err bitreich.org 70 i- (socket-server "127.0.0.1" 0 #'identity nil Err bitreich.org 70 i- :in-new-thread t Err bitreich.org 70 i- :protocol :datagram) Err bitreich.org 70 i- (setq *echo-server* thread Err bitreich.org 70 i- *echo-server-port* (get-local-port socket)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *max-buffer-size* 32) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *send-buffer* Err bitreich.org 70 i- (make-array *max-buffer-size* :element-type '(unsigned-byte 8) :initial-element 0)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *receive-buffer* Err bitreich.org 70 i- (make-array *max-buffer-size* :element-type '(unsigned-byte 8) :initial-element 0)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun clean-buffers () Err bitreich.org 70 i- (fill *send-buffer* 0) Err bitreich.org 70 i- (fill *receive-buffer* 0)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; UDP Send Test #1: connected socket Err bitreich.org 70 i-(deftest udp-send.1 Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (unless (and *echo-server* *echo-server-port*) Err bitreich.org 70 i- (start-server)) Err bitreich.org 70 i- (let ((s (socket-connect "127.0.0.1" *echo-server-port* :protocol :datagram))) Err bitreich.org 70 i- (clean-buffers) Err bitreich.org 70 i- (replace *send-buffer* #(1 2 3 4 5)) Err bitreich.org 70 i- (socket-send s *send-buffer* 5) Err bitreich.org 70 i- (wait-for-input s :timeout 3) Err bitreich.org 70 i- (multiple-value-bind (buffer size host port) Err bitreich.org 70 i- (socket-receive s *receive-buffer* *max-buffer-size*) Err bitreich.org 70 i- (declare (ignore buffer size host port)) Err bitreich.org 70 i- (reduce #'+ *receive-buffer* :start 0 :end 5)))) Err bitreich.org 70 i- 15) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; UDP Send Test #2: unconnected socket Err bitreich.org 70 i-(deftest udp-send.2 Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (unless (and *echo-server* *echo-server-port*) Err bitreich.org 70 i- (start-server)) Err bitreich.org 70 i- (let ((s (socket-connect nil nil :protocol :datagram))) Err bitreich.org 70 i- (clean-buffers) Err bitreich.org 70 i- (replace *send-buffer* #(1 2 3 4 5)) Err bitreich.org 70 i- (socket-send s *send-buffer* 5 :host "127.0.0.1" :port *echo-server-port*) Err bitreich.org 70 i- (wait-for-input s :timeout 3) Err bitreich.org 70 i- (multiple-value-bind (buffer size host port) Err bitreich.org 70 i- (socket-receive s *receive-buffer* *max-buffer-size*) Err bitreich.org 70 i- (declare (ignore buffer size host port)) Err bitreich.org 70 i- (reduce #'+ *receive-buffer* :start 0 :end 5)))) Err bitreich.org 70 i- 15) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest mark-h-david ; Mark H. David's remarkable UDP test code Err bitreich.org 70 i- (let* ((host "localhost") Err bitreich.org 70 i- (port 1111) Err bitreich.org 70 i- (server-sock Err bitreich.org 70 i- (socket-connect nil nil :protocol ':datagram :local-host host :local-port port)) Err bitreich.org 70 i- (client-sock Err bitreich.org 70 i- (socket-connect host port :protocol ':datagram)) Err bitreich.org 70 i- (octet-vector Err bitreich.org 70 i- (make-array 2 :element-type '(unsigned-byte 8) :initial-contents `(,(char-code #\O) ,(char-code #\K)))) Err bitreich.org 70 i- (recv-octet-vector Err bitreich.org 70 i- (make-array 2 :element-type '(unsigned-byte 8)))) Err bitreich.org 70 i- (socket-send client-sock octet-vector 2) Err bitreich.org 70 i- (socket-receive server-sock recv-octet-vector 2) Err bitreich.org 70 i- (prog1 (and (equalp octet-vector recv-octet-vector) Err bitreich.org 70 i- recv-octet-vector) Err bitreich.org 70 i- (socket-close server-sock) Err bitreich.org 70 i- (socket-close client-sock))) Err bitreich.org 70 i- #(79 75)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest frank-james ; Frank James' test code for LispWorks/UDP Err bitreich.org 70 i- (with-caught-conditions (#+win32 CONNECTION-RESET-ERROR Err bitreich.org 70 i- #-win32 CONNECTION-REFUSED-ERROR Err bitreich.org 70 i- nil) Err bitreich.org 70 i- (let ((sock (socket-connect "localhost" 1234 Err bitreich.org 70 i- :protocol ':datagram :element-type '(unsigned-byte 8)))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (socket-send sock (make-array 16 :element-type '(unsigned-byte 8) :initial-element 0) 16) Err bitreich.org 70 i- (let ((buffer (make-array 16 :element-type '(unsigned-byte 8) :initial-element 0))) Err bitreich.org 70 i- (socket-receive sock buffer 16))) Err bitreich.org 70 i- (socket-close sock)))) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun frank-wfi-test () Err bitreich.org 70 i- (let ((s (socket-connect nil nil :protocol :datagram Err bitreich.org 70 i- :element-type '(unsigned-byte 8) Err bitreich.org 70 i- :local-port 8001))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (do ((i 0 (1+ i)) Err bitreich.org 70 i- (buffer (make-array 1024 :element-type '(unsigned-byte 8) Err bitreich.org 70 i- :initial-element 0)) Err bitreich.org 70 i- (now (get-universal-time)) Err bitreich.org 70 i- (done nil)) Err bitreich.org 70 i- ((or done (= i 4)) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- (format t "~Ds ~D Waiting state ~S~%" (- (get-universal-time) now) i (usocket::state s)) Err bitreich.org 70 i- (when (wait-for-input s :ready-only t :timeout 5) Err bitreich.org 70 i- (format t "~D state ~S~%" i (usocket::state s)) Err bitreich.org 70 i- (handler-bind Err bitreich.org 70 i- ((error (lambda (c) Err bitreich.org 70 i- (format t "socket-receive error: ~A~%" c) Err bitreich.org 70 i- (break) Err bitreich.org 70 i- nil))) Err bitreich.org 70 i- (multiple-value-bind (buffer count remote-host remote-port) Err bitreich.org 70 i- (socket-receive s buffer 1024) Err bitreich.org 70 i- (handler-bind Err bitreich.org 70 i- ((error (lambda (c) Err bitreich.org 70 i- (format t "socket-send error: ~A~%" c) Err bitreich.org 70 i- (break)))) Err bitreich.org 70 i- (when buffer Err bitreich.org 70 i- (socket-send s (subseq buffer 0 count) count Err bitreich.org 70 i- :host remote-host Err bitreich.org 70 i- :port remote-port))))))) Err bitreich.org 70 i- (socket-close s)))) Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/test/test-usocket.lisp b/3rdparties/software/usocket-0.7.1/test/test-usocket.lisp /scm/clic/file/3rdparties/software/usocket-0.7.1/test/test-usocket.lisp.gph bitreich.org 70 i@@ -1,178 +0,0 @@ Err bitreich.org 70 i-;;;; See LICENSE for licensing information. Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; Usage: (usoct:run-usocket-tests) or (usoct:do-tests) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :usocket-test) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter +non-existing-host+ "1.2.3.4") Err bitreich.org 70 i-(defparameter +unused-local-port+ 15213) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *fake-usocket* Err bitreich.org 70 i- (usocket::make-stream-socket :socket :my-socket Err bitreich.org 70 i- :stream :my-stream)) Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (defvar *common-lisp-net* Err bitreich.org 70 i- (get-host-by-name "common-lisp.net"))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *local-ip*) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-caught-conditions ((expect throw) &body body) Err bitreich.org 70 i- `(catch 'caught-error Err bitreich.org 70 i- (handler-case Err bitreich.org 70 i- (handler-bind ((unsupported Err bitreich.org 70 i- #'(lambda (c) Err bitreich.org 70 i- (declare (ignore c)) (continue)))) Err bitreich.org 70 i- (progn ,@body)) Err bitreich.org 70 i- (unknown-error (c) (if (typep c ',expect) Err bitreich.org 70 i- (throw 'caught-error ,throw) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (describe c) Err bitreich.org 70 i- (describe Err bitreich.org 70 i- (usocket::usocket-real-error c)) Err bitreich.org 70 i- c))) Err bitreich.org 70 i- (error (c) (if (typep c ',expect) Err bitreich.org 70 i- (throw 'caught-error ,throw) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (describe c) Err bitreich.org 70 i- c))) Err bitreich.org 70 i- (unknown-condition (c) (if (typep c ',expect) Err bitreich.org 70 i- (throw 'caught-error ,throw) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (describe c) Err bitreich.org 70 i- (describe Err bitreich.org 70 i- (usocket::usocket-real-condition c)) Err bitreich.org 70 i- c))) Err bitreich.org 70 i- (condition (c) (if (typep c ',expect) Err bitreich.org 70 i- (throw 'caught-error ,throw) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (describe c) Err bitreich.org 70 i- c)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest make-socket.1 (socket *fake-usocket*) :my-socket) Err bitreich.org 70 i-(deftest make-socket.2 (socket-stream *fake-usocket*) :my-stream) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest socket-no-connect.1 Err bitreich.org 70 i- (with-caught-conditions (socket-error nil) Err bitreich.org 70 i- (socket-connect "127.0.0.1" +unused-local-port+ :timeout 1) Err bitreich.org 70 i- t) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest socket-no-connect.2 Err bitreich.org 70 i- (with-caught-conditions (socket-error nil) Err bitreich.org 70 i- (socket-connect #(127 0 0 1) +unused-local-port+ :timeout 1) Err bitreich.org 70 i- t) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest socket-no-connect.3 Err bitreich.org 70 i- (with-caught-conditions (socket-error nil) Err bitreich.org 70 i- (socket-connect 2130706433 +unused-local-port+ :timeout 1) ;; == #(127 0 0 1) Err bitreich.org 70 i- t) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest socket-failure.1 Err bitreich.org 70 i- (with-caught-conditions (timeout-error nil) Err bitreich.org 70 i- (socket-connect 2130706433 +unused-local-port+ :timeout 1) ;; == #(127 0 0 1) Err bitreich.org 70 i- :unreach) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest socket-failure.2 Err bitreich.org 70 i- (with-caught-conditions (timeout-error nil) Err bitreich.org 70 i- (socket-connect +non-existing-host+ 80 :timeout 1) ;; 80 = just a port Err bitreich.org 70 i- :unreach) Err bitreich.org 70 i- nil) Err bitreich.org 70 i- Err bitreich.org 70 i-;; let's hope c-l.net doesn't move soon, or that people start to Err bitreich.org 70 i-;; test usocket like crazy.. Err bitreich.org 70 i-(deftest socket-connect.1 Err bitreich.org 70 i- (with-caught-conditions (nil nil) Err bitreich.org 70 i- (let ((sock (socket-connect "common-lisp.net" 80))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (when (typep sock 'usocket) t) Err bitreich.org 70 i- (socket-close sock)))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest socket-connect.2 Err bitreich.org 70 i- (with-caught-conditions (nil nil) Err bitreich.org 70 i- (let ((sock (socket-connect *common-lisp-net* 80))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (when (typep sock 'usocket) t) Err bitreich.org 70 i- (socket-close sock)))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest socket-connect.3 Err bitreich.org 70 i- (with-caught-conditions (nil nil) Err bitreich.org 70 i- (let ((sock (socket-connect (usocket::host-byte-order *common-lisp-net*) 80))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (when (typep sock 'usocket) t) Err bitreich.org 70 i- (socket-close sock)))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-;; let's hope c-l.net doesn't change its software any time soon Err bitreich.org 70 i-(deftest socket-stream.1 Err bitreich.org 70 i- (with-caught-conditions (nil nil) Err bitreich.org 70 i- (let ((sock (socket-connect "common-lisp.net" 80))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (format (socket-stream sock) Err bitreich.org 70 i- "GET / HTTP/1.0~2%") Err bitreich.org 70 i- (force-output (socket-stream sock)) Err bitreich.org 70 i- (subseq (read-line (socket-stream sock)) 0 4)) Err bitreich.org 70 i- (socket-close sock)))) Err bitreich.org 70 i- "HTTP") Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest socket-name.1 Err bitreich.org 70 i- (with-caught-conditions (nil nil) Err bitreich.org 70 i- (let ((sock (socket-connect *common-lisp-net* 80))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (get-peer-address sock) Err bitreich.org 70 i- (socket-close sock)))) Err bitreich.org 70 i- #.*common-lisp-net*) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest socket-name.2 Err bitreich.org 70 i- (with-caught-conditions (nil nil) Err bitreich.org 70 i- (let ((sock (socket-connect *common-lisp-net* 80))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (get-peer-port sock) Err bitreich.org 70 i- (socket-close sock)))) Err bitreich.org 70 i- 80) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest socket-name.3 Err bitreich.org 70 i- (with-caught-conditions (nil nil) Err bitreich.org 70 i- (let ((sock (socket-connect *common-lisp-net* 80))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (get-peer-name sock) Err bitreich.org 70 i- (socket-close sock)))) Err bitreich.org 70 i- #.*common-lisp-net* 80) Err bitreich.org 70 i- Err bitreich.org 70 i-#+ignore Err bitreich.org 70 i-(deftest socket-name.4 Err bitreich.org 70 i- (with-caught-conditions (nil nil) Err bitreich.org 70 i- (let ((sock (socket-connect *common-lisp-net* 80))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (equal (get-local-address sock) *local-ip*) Err bitreich.org 70 i- (socket-close sock)))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest socket-shutdown.1 Err bitreich.org 70 i- (with-caught-conditions (nil nil) Err bitreich.org 70 i- (let ((sock (socket-connect *common-lisp-net* 80))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (usocket::ignore-unsupported-warnings Err bitreich.org 70 i- (socket-shutdown sock :input)) Err bitreich.org 70 i- (socket-close sock)) Err bitreich.org 70 i- t)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest socket-shutdown.2 Err bitreich.org 70 i- (with-caught-conditions (nil nil) Err bitreich.org 70 i- (let ((sock (socket-connect *common-lisp-net* 80))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (usocket::ignore-unsupported-warnings Err bitreich.org 70 i- (socket-shutdown sock :output)) Err bitreich.org 70 i- (socket-close sock)) Err bitreich.org 70 i- t)) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun run-usocket-tests () Err bitreich.org 70 i- (do-tests)) Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/test/wait-for-input.lisp b/3rdparties/software/usocket-0.7.1/test/wait-for-input.lisp /scm/clic/file/3rdparties/software/usocket-0.7.1/test/wait-for-input.lisp.gph bitreich.org 70 i@@ -1,139 +0,0 @@ Err bitreich.org 70 i-;;;; See LICENSE for licensing information. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :usocket-test) Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (defparameter *wait-for-input-timeout* 2)) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest wait-for-input.1 Err bitreich.org 70 i- (with-caught-conditions (nil nil) Err bitreich.org 70 i- (let ((sock (usocket:socket-connect *common-lisp-net* 80)) Err bitreich.org 70 i- (time (get-universal-time))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn (usocket:wait-for-input sock :timeout *wait-for-input-timeout*) Err bitreich.org 70 i- (- (get-universal-time) time)) Err bitreich.org 70 i- (usocket:socket-close sock)))) Err bitreich.org 70 i- #.*wait-for-input-timeout*) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest wait-for-input.2 Err bitreich.org 70 i- (with-caught-conditions (nil nil) Err bitreich.org 70 i- (let ((sock (usocket:socket-connect *common-lisp-net* 80)) Err bitreich.org 70 i- (time (get-universal-time))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn (usocket:wait-for-input sock :timeout *wait-for-input-timeout* :ready-only t) Err bitreich.org 70 i- (- (get-universal-time) time)) Err bitreich.org 70 i- (usocket:socket-close sock)))) Err bitreich.org 70 i- #.*wait-for-input-timeout*) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest wait-for-input.3 Err bitreich.org 70 i- (with-caught-conditions (nil nil) Err bitreich.org 70 i- (let ((sock (usocket:socket-connect *common-lisp-net* 80))) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (format (usocket:socket-stream sock) Err bitreich.org 70 i- "GET / HTTP/1.0~2%") Err bitreich.org 70 i- (force-output (usocket:socket-stream sock)) Err bitreich.org 70 i- (usocket:wait-for-input sock :timeout *wait-for-input-timeout*) Err bitreich.org 70 i- (subseq (read-line (usocket:socket-stream sock)) 0 4)) Err bitreich.org 70 i- (usocket:socket-close sock)))) Err bitreich.org 70 i- "HTTP") Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Advanced W-F-I tests by Elliott Slaughter Err bitreich.org 70 i- Err bitreich.org 70 i-(defvar *socket-server-port* 0) Err bitreich.org 70 i-(defvar *socket-server-listen* nil) Err bitreich.org 70 i-(defvar *socket-server-connection*) Err bitreich.org 70 i-(defvar *socket-client-connection*) Err bitreich.org 70 i-(defvar *output-p* t) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun stage-1 () Err bitreich.org 70 i- (unless *socket-server-listen* Err bitreich.org 70 i- (setf *socket-server-listen* Err bitreich.org 70 i- (socket-listen *wildcard-host* 0 :element-type '(unsigned-byte 8))) Err bitreich.org 70 i- (setf *socket-server-port* (get-local-port *socket-server-listen*))) Err bitreich.org 70 i- Err bitreich.org 70 i- (setf *socket-server-connection* Err bitreich.org 70 i- (when (wait-for-input *socket-server-listen* :timeout 0 :ready-only t) Err bitreich.org 70 i- (socket-accept *socket-server-listen*))) Err bitreich.org 70 i- Err bitreich.org 70 i- (when *output-p* ; should be NIL Err bitreich.org 70 i- (format t "First time (before client connects) is ~s.~%" Err bitreich.org 70 i- *socket-server-connection*)) Err bitreich.org 70 i- Err bitreich.org 70 i- *socket-server-connection*) Err bitreich.org 70 i- Err bitreich.org 70 i-;; TODO: original test code have addition (:TIMEOUT 0) when doing the SOCKET-CONNECT, Err bitreich.org 70 i-;; it seems cannot work on SBCL/Windows, need to investigate, but here we ignore it. Err bitreich.org 70 i- Err bitreich.org 70 i-(defun stage-2 () Err bitreich.org 70 i- (setf *socket-client-connection* Err bitreich.org 70 i- (socket-connect "localhost" *socket-server-port* :protocol :stream Err bitreich.org 70 i- :element-type '(unsigned-byte 8))) Err bitreich.org 70 i- (setf *socket-server-connection* Err bitreich.org 70 i- (when (wait-for-input *socket-server-listen* :timeout 0 :ready-only t) Err bitreich.org 70 i- #+(and win32 (or lispworks ecl sbcl)) Err bitreich.org 70 i- (when *output-p* Err bitreich.org 70 i- (format t "%READY-P: ~D~%" (usocket::%ready-p *socket-server-listen*))) Err bitreich.org 70 i- (socket-accept *socket-server-listen*))) Err bitreich.org 70 i- Err bitreich.org 70 i- (when *output-p* ; should be a usocket object Err bitreich.org 70 i- (format t "Second time (after client connects) is ~s.~%" Err bitreich.org 70 i- *socket-server-connection*)) Err bitreich.org 70 i- Err bitreich.org 70 i- *socket-server-connection*) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun stage-3 () Err bitreich.org 70 i- (setf *socket-server-connection* Err bitreich.org 70 i- (when (wait-for-input *socket-server-listen* :timeout 0 :ready-only t) Err bitreich.org 70 i- #+(and win32 (or lispworks ecl sbcl)) Err bitreich.org 70 i- (when *output-p* Err bitreich.org 70 i- (format t "%READY-P: ~D~%" (usocket::%ready-p *socket-server-listen*))) Err bitreich.org 70 i- (socket-accept *socket-server-listen*))) Err bitreich.org 70 i- Err bitreich.org 70 i- (when *output-p* ; should be NIL again Err bitreich.org 70 i- (format t "Third time (before second client) is ~s.~%" Err bitreich.org 70 i- *socket-server-connection*)) Err bitreich.org 70 i- Err bitreich.org 70 i- *socket-server-connection*) Err bitreich.org 70 i- Err bitreich.org 70 i-(deftest elliott-slaughter.1 Err bitreich.org 70 i- (let ((*output-p* nil)) Err bitreich.org 70 i- (let* ((s-1 (stage-1)) (s-2 (stage-2)) (s-3 (stage-3))) Err bitreich.org 70 i- (prog1 (and (null s-1) (usocket::usocket-p s-2) (null s-3)) Err bitreich.org 70 i- (socket-close *socket-server-listen*) Err bitreich.org 70 i- (setf *socket-server-listen* nil)))) Err bitreich.org 70 i- t) Err bitreich.org 70 i- Err bitreich.org 70 i-#| Err bitreich.org 70 i- Err bitreich.org 70 i-Issue elliott-slaughter.2 (WAIT-FOR-INPUT/win32 on TCP socket) Err bitreich.org 70 i- Err bitreich.org 70 i-W-F-I correctly found the inputs, but :READY-ONLY didn't work. Err bitreich.org 70 i- Err bitreich.org 70 i-|# Err bitreich.org 70 i-(defun receive-each (connections) Err bitreich.org 70 i- (let ((ready (usocket:wait-for-input connections :timeout 0 :ready-only t))) Err bitreich.org 70 i- (loop for connection in ready Err bitreich.org 70 i- collect (read-line (usocket:socket-stream connection))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun receive-all (connections) Err bitreich.org 70 i- (loop for messages = (receive-each connections) Err bitreich.org 70 i- then (receive-each connections) Err bitreich.org 70 i- while messages append messages)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun send (connection message) Err bitreich.org 70 i- (format (usocket:socket-stream connection) "~a~%" message) Err bitreich.org 70 i- (force-output (usocket:socket-stream connection))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun server () Err bitreich.org 70 i- (let* ((listen (usocket:socket-listen usocket:*wildcard-host* 12345)) Err bitreich.org 70 i- (connection (usocket:socket-accept listen))) Err bitreich.org 70 i- (loop for messages = (receive-all connection) then (receive-all connection) Err bitreich.org 70 i- do (format t "Got messages:~%~s~%" messages) Err bitreich.org 70 i- do (sleep 1/50)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun client () Err bitreich.org 70 i- (let ((connection (usocket:socket-connect "localhost" 12345))) Err bitreich.org 70 i- (loop for i from 0 Err bitreich.org 70 i- do (send connection (format nil "This is message ~a." i)) Err bitreich.org 70 i- do (sleep 1/100)))) Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/usocket-server.asd b/3rdparties/software/usocket-0.7.1/usocket-server.asd /scm/clic/file/3rdparties/software/usocket-0.7.1/usocket-server.asd.gph bitreich.org 70 i@@ -1,14 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: Lisp -*- Err bitreich.org 70 i-;;;; Err bitreich.org 70 i-;;;; See the LICENSE file for licensing information. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :asdf) Err bitreich.org 70 i- Err bitreich.org 70 i-(defsystem #:usocket-server Err bitreich.org 70 i- :name "usocket (server)" Err bitreich.org 70 i- :author "Chun Tian (binghe)" Err bitreich.org 70 i- :version (:read-file-form "version.sexp") Err bitreich.org 70 i- :licence "MIT" Err bitreich.org 70 i- :description "Universal socket library for Common Lisp (server side)" Err bitreich.org 70 i- :depends-on (:usocket :portable-threads) Err bitreich.org 70 i- :components ((:file "server"))) Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/usocket-test.asd b/3rdparties/software/usocket-0.7.1/usocket-test.asd /scm/clic/file/3rdparties/software/usocket-0.7.1/usocket-test.asd.gph bitreich.org 70 i@@ -1,25 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: Lisp -*- Err bitreich.org 70 i-;;;; $Id: usocket-test.asd 46 2006-02-06 20:50:07Z ehuelsmann $ Err bitreich.org 70 i-;;;; $URL: svn+ssh://common-lisp.net/project/usocket/svn/usocket/trunk/test/usocket-test.asd $ Err bitreich.org 70 i- Err bitreich.org 70 i-;;;; See the LICENSE file for licensing information. Err bitreich.org 70 i- Err bitreich.org 70 i-(defsystem usocket-test Err bitreich.org 70 i- :name "usocket test" Err bitreich.org 70 i- :author "Erik Enge" Err bitreich.org 70 i- :maintainer "Chun Tian (binghe)" Err bitreich.org 70 i- :version (:read-file-form "version.sexp") Err bitreich.org 70 i- :licence "MIT" Err bitreich.org 70 i- :description "Tests for usocket" Err bitreich.org 70 i- :depends-on (:usocket-server Err bitreich.org 70 i- :rt) Err bitreich.org 70 i- :components ((:module "test" Err bitreich.org 70 i- :serial t Err bitreich.org 70 i- :components ((:file "package") Err bitreich.org 70 i- (:file "test-usocket") Err bitreich.org 70 i- (:file "test-condition") Err bitreich.org 70 i- (:file "test-datagram") Err bitreich.org 70 i- (:file "wait-for-input"))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod perform ((op test-op) (c (eql (find-system :usocket-test)))) Err bitreich.org 70 i- (funcall (intern "DO-TESTS" "USOCKET-TEST"))) Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/usocket.asd b/3rdparties/software/usocket-0.7.1/usocket.asd /scm/clic/file/3rdparties/software/usocket-0.7.1/usocket.asd.gph bitreich.org 70 i@@ -1,45 +0,0 @@ Err bitreich.org 70 i-;;;; -*- Mode: Lisp -*- Err bitreich.org 70 i-;;;; Err bitreich.org 70 i-;;;; See the LICENSE file for licensing information. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :asdf) Err bitreich.org 70 i- Err bitreich.org 70 i-(defsystem #:usocket Err bitreich.org 70 i- :name "usocket (client, with server symbols)" Err bitreich.org 70 i- :author "Erik Enge & Erik Huelsmann" Err bitreich.org 70 i- :maintainer "Chun Tian (binghe) & Hans Huebner" Err bitreich.org 70 i- :version (:read-file-form "version.sexp") Err bitreich.org 70 i- :licence "MIT" Err bitreich.org 70 i- :description "Universal socket library for Common Lisp" Err bitreich.org 70 i- :depends-on (:split-sequence Err bitreich.org 70 i- #+(or sbcl ecl) :sb-bsd-sockets Err bitreich.org 70 i- ) Err bitreich.org 70 i- :components ((:file "package") Err bitreich.org 70 i- (:module "vendor" :depends-on ("package") Err bitreich.org 70 i- :components (#+mcl (:file "kqueue") Err bitreich.org 70 i- #+mcl (:file "OpenTransportUDP"))) Err bitreich.org 70 i- (:file "usocket" :depends-on ("vendor")) Err bitreich.org 70 i- (:file "condition" :depends-on ("usocket")) Err bitreich.org 70 i- (:module "backend" :depends-on ("condition") Err bitreich.org 70 i- :components (#+abcl (:file "abcl") Err bitreich.org 70 i- #+(or allegro cormanlisp) Err bitreich.org 70 i- (:file "allegro") Err bitreich.org 70 i- #+clisp (:file "clisp") Err bitreich.org 70 i- #+(or openmcl clozure) Err bitreich.org 70 i- (:file "openmcl") Err bitreich.org 70 i- #+clozure (:file "clozure" :depends-on ("openmcl")) Err bitreich.org 70 i- #+cmu (:file "cmucl") Err bitreich.org 70 i- #+(or sbcl ecl) (:file "sbcl") Err bitreich.org 70 i- #+ecl (:file "ecl" :depends-on ("sbcl")) Err bitreich.org 70 i- #+lispworks (:file "lispworks") Err bitreich.org 70 i- #+mcl (:file "mcl") Err bitreich.org 70 i- #+mocl (:file "mocl") Err bitreich.org 70 i- #+scl (:file "scl") Err bitreich.org 70 i- #+genera (:file "genera"))) Err bitreich.org 70 i- (:file "option" :depends-on ("backend")) Err bitreich.org 70 i- )) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod perform ((op test-op) (c (eql (find-system :usocket)))) Err bitreich.org 70 i- (oos 'load-op :usocket-server) Err bitreich.org 70 i- (oos 'load-op :usocket-test) Err bitreich.org 70 i- (oos 'test-op :usocket-test)) Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/usocket.lisp b/3rdparties/software/usocket-0.7.1/usocket.lisp /scm/clic/file/3rdparties/software/usocket-0.7.1/usocket.lisp.gph bitreich.org 70 i@@ -1,705 +0,0 @@ Err bitreich.org 70 i-;;;; See LICENSE for licensing information. Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :usocket) Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *wildcard-host* #(0 0 0 0) Err bitreich.org 70 i- "Hostname to pass when all interfaces in the current system are to Err bitreich.org 70 i- be bound. If this variable is passed to socket-listen, IPv6 capable Err bitreich.org 70 i- systems will also listen for IPv6 connections.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *auto-port* 0 Err bitreich.org 70 i- "Port number to pass when an auto-assigned port number is wanted.") Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *version* #.(asdf:component-version (asdf:find-system :usocket)) Err bitreich.org 70 i- "usocket version string") Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant +max-datagram-packet-size+ 65507 Err bitreich.org 70 i- "The theoretical maximum amount of data in a UDP datagram. Err bitreich.org 70 i- Err bitreich.org 70 i-The IPv4 UDP packets have a 16-bit length constraint, and IP+UDP header has 28-byte. Err bitreich.org 70 i- Err bitreich.org 70 i-IP_MAXPACKET = 65535, /* netinet/ip.h */ Err bitreich.org 70 i-sizeof(struct ip) = 20, /* netinet/ip.h */ Err bitreich.org 70 i-sizeof(struct udphdr) = 8, /* netinet/udp.h */ Err bitreich.org 70 i- Err bitreich.org 70 i-65535 - 20 - 8 = 65507 Err bitreich.org 70 i- Err bitreich.org 70 i-(But for UDP broadcast, the maximum message size is limited by the MTU size of the underlying link)") Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass usocket () Err bitreich.org 70 i- ((socket Err bitreich.org 70 i- :initarg :socket Err bitreich.org 70 i- :accessor socket Err bitreich.org 70 i- :documentation "Implementation specific socket object instance.'") Err bitreich.org 70 i- (wait-list Err bitreich.org 70 i- :initform nil Err bitreich.org 70 i- :accessor wait-list Err bitreich.org 70 i- :documentation "WAIT-LIST the object is associated with.") Err bitreich.org 70 i- (state Err bitreich.org 70 i- :initform nil Err bitreich.org 70 i- :accessor state Err bitreich.org 70 i- :documentation "Per-socket return value for the `wait-for-input' function. Err bitreich.org 70 i- Err bitreich.org 70 i-The value stored in this slot can be any of Err bitreich.org 70 i- NIL - not ready Err bitreich.org 70 i- :READ - ready to read Err bitreich.org 70 i- :READ-WRITE - ready to read and write Err bitreich.org 70 i- :WRITE - ready to write Err bitreich.org 70 i- Err bitreich.org 70 i-The last two remain unused in the current version. Err bitreich.org 70 i-") Err bitreich.org 70 i- #+(and win32 (or sbcl ecl lispworks)) Err bitreich.org 70 i- (%ready-p Err bitreich.org 70 i- :initform nil Err bitreich.org 70 i- :accessor %ready-p Err bitreich.org 70 i- :documentation "Indicates whether the socket has been signalled Err bitreich.org 70 i-as ready for reading a new connection. Err bitreich.org 70 i- Err bitreich.org 70 i-The value will be set to T by `wait-for-input-internal' (given the Err bitreich.org 70 i-right conditions) and reset to NIL by `socket-accept'. Err bitreich.org 70 i- Err bitreich.org 70 i-Don't modify this slot or depend on it as it is really intended Err bitreich.org 70 i-to be internal only. Err bitreich.org 70 i- Err bitreich.org 70 i-Note: Accessed, but not used for 'stream-usocket'. Err bitreich.org 70 i-" Err bitreich.org 70 i- )) Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i-"The main socket class. Err bitreich.org 70 i- Err bitreich.org 70 i-Sockets should be closed using the `socket-close' method.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric socket-state (socket) Err bitreich.org 70 i- (:documentation "NIL - not ready Err bitreich.org 70 i-:READ - ready to read Err bitreich.org 70 i-:READ-WRITE - ready to read and write Err bitreich.org 70 i-:WRITE - ready to write")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod socket-state ((socket usocket)) Err bitreich.org 70 i- (state socket)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass stream-usocket (usocket) Err bitreich.org 70 i- ((stream Err bitreich.org 70 i- :initarg :stream Err bitreich.org 70 i- :accessor socket-stream Err bitreich.org 70 i- :documentation "Stream instance associated with the socket." Err bitreich.org 70 i-;; Err bitreich.org 70 i-;;Iff an external-format was passed to `socket-connect' or `socket-listen' Err bitreich.org 70 i-;;the stream is a flexi-stream. Otherwise the stream is implementation Err bitreich.org 70 i-;;specific." Err bitreich.org 70 i-)) Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i-"Stream socket class. Err bitreich.org 70 i-' Err bitreich.org 70 i-Contrary to other sockets, these sockets may be closed either Err bitreich.org 70 i-with the `socket-close' method or by closing the associated stream Err bitreich.org 70 i-(which can be retrieved with the `socket-stream' accessor).")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass stream-server-usocket (usocket) Err bitreich.org 70 i- ((element-type Err bitreich.org 70 i- :initarg :element-type Err bitreich.org 70 i- :initform #-lispworks 'character Err bitreich.org 70 i- #+lispworks 'base-char Err bitreich.org 70 i- :reader element-type Err bitreich.org 70 i- :documentation "Default element type for streams created by Err bitreich.org 70 i-`socket-accept'.")) Err bitreich.org 70 i- (:documentation "Socket which listens for stream connections to Err bitreich.org 70 i-be initiated from remote sockets.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass datagram-usocket (usocket) Err bitreich.org 70 i- ((connected-p :type boolean Err bitreich.org 70 i- :accessor connected-p Err bitreich.org 70 i- :initarg :connected-p) Err bitreich.org 70 i- #+(or cmu scl lispworks mcl Err bitreich.org 70 i- (and clisp ffi (not rawsock))) Err bitreich.org 70 i- (%open-p :type boolean Err bitreich.org 70 i- :accessor %open-p Err bitreich.org 70 i- :initform t Err bitreich.org 70 i- :documentation "Flag to indicate if usocket is open, Err bitreich.org 70 i-for GC on implementions operate on raw socket fd.") Err bitreich.org 70 i- #+(or lispworks mcl Err bitreich.org 70 i- (and clisp ffi (not rawsock))) Err bitreich.org 70 i- (recv-buffer :documentation "Private RECV buffer.") Err bitreich.org 70 i- #+(or lispworks mcl) Err bitreich.org 70 i- (send-buffer :documentation "Private SEND buffer.")) Err bitreich.org 70 i- (:documentation "UDP (inet-datagram) socket")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun usocket-p (socket) Err bitreich.org 70 i- (typep socket 'usocket)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun stream-usocket-p (socket) Err bitreich.org 70 i- (typep socket 'stream-usocket)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun stream-server-usocket-p (socket) Err bitreich.org 70 i- (typep socket 'stream-server-usocket)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun datagram-usocket-p (socket) Err bitreich.org 70 i- (typep socket 'datagram-usocket)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-socket (&key socket) Err bitreich.org 70 i- "Create a usocket socket type from implementation specific socket." Err bitreich.org 70 i- (unless socket Err bitreich.org 70 i- (error 'invalid-socket-error)) Err bitreich.org 70 i- (make-stream-socket :socket socket)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-stream-socket (&key socket stream) Err bitreich.org 70 i- "Create a usocket socket type from implementation specific socket Err bitreich.org 70 i-and stream objects. Err bitreich.org 70 i- Err bitreich.org 70 i-Sockets returned should be closed using the `socket-close' method or Err bitreich.org 70 i-by closing the stream associated with the socket. Err bitreich.org 70 i-" Err bitreich.org 70 i- (unless socket Err bitreich.org 70 i- (error 'invalid-socket-error)) Err bitreich.org 70 i- (unless stream Err bitreich.org 70 i- (error 'invalid-socket-stream-error)) Err bitreich.org 70 i- (make-instance 'stream-usocket Err bitreich.org 70 i- :socket socket Err bitreich.org 70 i- :stream stream)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-stream-server-socket (socket &key (element-type Err bitreich.org 70 i- #-lispworks 'character Err bitreich.org 70 i- #+lispworks 'base-char)) Err bitreich.org 70 i- "Create a usocket-server socket type from an Err bitreich.org 70 i-implementation-specific socket object. Err bitreich.org 70 i- Err bitreich.org 70 i-The returned value is a subtype of `stream-server-usocket'. Err bitreich.org 70 i-" Err bitreich.org 70 i- (unless socket Err bitreich.org 70 i- (error 'invalid-socket-error)) Err bitreich.org 70 i- (make-instance 'stream-server-usocket Err bitreich.org 70 i- :socket socket Err bitreich.org 70 i- :element-type element-type)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-datagram-socket (socket &key connected-p) Err bitreich.org 70 i- (unless socket Err bitreich.org 70 i- (error 'invalid-socket-error)) Err bitreich.org 70 i- (make-instance 'datagram-usocket Err bitreich.org 70 i- :socket socket Err bitreich.org 70 i- :connected-p connected-p)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric socket-accept (socket &key element-type) Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "Accepts a connection from `socket', returning a `stream-socket'. Err bitreich.org 70 i- Err bitreich.org 70 i-The stream associated with the socket returned has `element-type' when Err bitreich.org 70 i-explicitly specified, or the element-type passed to `socket-listen' otherwise.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric socket-close (usocket) Err bitreich.org 70 i- (:documentation "Close a previously opened `usocket'.")) Err bitreich.org 70 i- Err bitreich.org 70 i-;; also see http://stackoverflow.com/questions/4160347/close-vs-shutdown-socket Err bitreich.org 70 i-(defgeneric socket-shutdown (usocket direction) Err bitreich.org 70 i- (:documentation "Shutdown communication on the socket in DIRECTION. Err bitreich.org 70 i- Err bitreich.org 70 i-After a shutdown no input and/or output of the indicated DIRECTION Err bitreich.org 70 i-can be performed on the `usocket'. Err bitreich.org 70 i- Err bitreich.org 70 i-DIRECTION should be either :INPUT or :OUTPUT or :IO")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric socket-send (usocket buffer length &key host port) Err bitreich.org 70 i- (:documentation "Send packets through a previously opend `usocket'.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric socket-receive (usocket buffer length &key) Err bitreich.org 70 i- (:documentation "Receive packets from a previously opend `usocket'. Err bitreich.org 70 i- Err bitreich.org 70 i-Returns 4 values: (values buffer size host port)")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric get-local-address (socket) Err bitreich.org 70 i- (:documentation "Returns the IP address of the socket.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric get-peer-address (socket) Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "Returns the IP address of the peer the socket is connected to.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric get-local-port (socket) Err bitreich.org 70 i- (:documentation "Returns the IP port of the socket. Err bitreich.org 70 i- Err bitreich.org 70 i-This function applies to both `stream-usocket' and `server-stream-usocket' Err bitreich.org 70 i-type objects.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric get-peer-port (socket) Err bitreich.org 70 i- (:documentation "Returns the IP port of the peer the socket to.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric get-local-name (socket) Err bitreich.org 70 i- (:documentation "Returns the IP address and port of the socket as values. Err bitreich.org 70 i- Err bitreich.org 70 i-This function applies to both `stream-usocket' and `server-stream-usocket' Err bitreich.org 70 i-type objects.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric get-peer-name (socket) Err bitreich.org 70 i- (:documentation Err bitreich.org 70 i- "Returns the IP address and port of the peer Err bitreich.org 70 i-the socket is connected to as values.")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-connected-socket ((var socket) &body body) Err bitreich.org 70 i- "Bind `socket' to `var', ensuring socket destruction on exit. Err bitreich.org 70 i- Err bitreich.org 70 i-`body' is only evaluated when `var' is bound to a non-null value. Err bitreich.org 70 i- Err bitreich.org 70 i-The `body' is an implied progn form." Err bitreich.org 70 i- `(let ((,var ,socket)) Err bitreich.org 70 i- (unwind-protect Err bitreich.org 70 i- (when ,var Err bitreich.org 70 i- (with-mapped-conditions (,var) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- (when ,var Err bitreich.org 70 i- (socket-close ,var))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-client-socket ((socket-var stream-var &rest socket-connect-args) Err bitreich.org 70 i- &body body) Err bitreich.org 70 i- "Bind the socket resulting from a call to `socket-connect' with Err bitreich.org 70 i-the arguments `socket-connect-args' to `socket-var' and if `stream-var' is Err bitreich.org 70 i-non-nil, bind the associated socket stream to it." Err bitreich.org 70 i- `(with-connected-socket (,socket-var (socket-connect ,@socket-connect-args)) Err bitreich.org 70 i- ,(if (null stream-var) Err bitreich.org 70 i- `(progn ,@body) Err bitreich.org 70 i- `(let ((,stream-var (socket-stream ,socket-var))) Err bitreich.org 70 i- ,@body)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-server-socket ((var server-socket) &body body) Err bitreich.org 70 i- "Bind `server-socket' to `var', ensuring socket destruction on exit. Err bitreich.org 70 i- Err bitreich.org 70 i-`body' is only evaluated when `var' is bound to a non-null value. Err bitreich.org 70 i- Err bitreich.org 70 i-The `body' is an implied progn form." Err bitreich.org 70 i- `(with-connected-socket (,var ,server-socket) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro with-socket-listener ((socket-var &rest socket-listen-args) Err bitreich.org 70 i- &body body) Err bitreich.org 70 i- "Bind the socket resulting from a call to `socket-listen' with arguments Err bitreich.org 70 i-`socket-listen-args' to `socket-var'." Err bitreich.org 70 i- `(with-server-socket (,socket-var (socket-listen ,@socket-listen-args)) Err bitreich.org 70 i- ,@body)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defstruct (wait-list (:constructor %make-wait-list)) Err bitreich.org 70 i- %wait ;; implementation specific Err bitreich.org 70 i- waiters ;; the list of all usockets Err bitreich.org 70 i- map) ;; maps implementation sockets to usockets Err bitreich.org 70 i- Err bitreich.org 70 i-;; Implementation specific: Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; %setup-wait-list Err bitreich.org 70 i-;; %add-waiter Err bitreich.org 70 i-;; %remove-waiter Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-wait-list (waiters) Err bitreich.org 70 i- (let ((wl (%make-wait-list))) Err bitreich.org 70 i- (setf (wait-list-map wl) (make-hash-table)) Err bitreich.org 70 i- (%setup-wait-list wl) Err bitreich.org 70 i- (dolist (x waiters wl) Err bitreich.org 70 i- (add-waiter wl x)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun add-waiter (wait-list input) Err bitreich.org 70 i- (setf (gethash (socket input) (wait-list-map wait-list)) input Err bitreich.org 70 i- (wait-list input) wait-list) Err bitreich.org 70 i- (pushnew input (wait-list-waiters wait-list)) Err bitreich.org 70 i- (%add-waiter wait-list input)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun remove-waiter (wait-list input) Err bitreich.org 70 i- (%remove-waiter wait-list input) Err bitreich.org 70 i- (setf (wait-list-waiters wait-list) Err bitreich.org 70 i- (remove input (wait-list-waiters wait-list)) Err bitreich.org 70 i- (wait-list input) nil) Err bitreich.org 70 i- (remhash (socket input) (wait-list-map wait-list))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun remove-all-waiters (wait-list) Err bitreich.org 70 i- (dolist (waiter (wait-list-waiters wait-list)) Err bitreich.org 70 i- (%remove-waiter wait-list waiter)) Err bitreich.org 70 i- (setf (wait-list-waiters wait-list) nil) Err bitreich.org 70 i- (clrhash (wait-list-map wait-list))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun wait-for-input (socket-or-sockets &key timeout ready-only) Err bitreich.org 70 i- "Waits for one or more streams to become ready for reading from Err bitreich.org 70 i-the socket. When `timeout' (a non-negative real number) is Err bitreich.org 70 i-specified, wait `timeout' seconds, or wait indefinitely when Err bitreich.org 70 i-it isn't specified. A `timeout' value of 0 (zero) means polling. Err bitreich.org 70 i- Err bitreich.org 70 i-Returns two values: the first value is the list of streams which Err bitreich.org 70 i-are readable (or in case of server streams acceptable). NIL may Err bitreich.org 70 i-be returned for this value either when waiting timed out or when Err bitreich.org 70 i-it was interrupted (EINTR). The second value is a real number Err bitreich.org 70 i-indicating the time remaining within the timeout period or NIL if Err bitreich.org 70 i-none. Err bitreich.org 70 i- Err bitreich.org 70 i-Without the READY-ONLY arg, WAIT-FOR-INPUT will return all sockets in Err bitreich.org 70 i-the original list you passed it. This prevents a new list from being Err bitreich.org 70 i-consed up. Some users of USOCKET were reluctant to use it if it Err bitreich.org 70 i-wouldn't behave that way, expecting it to cost significant performance Err bitreich.org 70 i-to do the associated garbage collection. Err bitreich.org 70 i- Err bitreich.org 70 i-Without the READY-ONLY arg, you need to check the socket STATE slot for Err bitreich.org 70 i-the values documented in usocket.lisp in the usocket class." Err bitreich.org 70 i- Err bitreich.org 70 i- ;; for NULL sockets, return NIL with respect of TIMEOUT. Err bitreich.org 70 i- (when (null socket-or-sockets) Err bitreich.org 70 i- (when timeout Err bitreich.org 70 i- (sleep timeout)) Err bitreich.org 70 i- (return-from wait-for-input nil)) Err bitreich.org 70 i- Err bitreich.org 70 i- (unless (wait-list-p socket-or-sockets) Err bitreich.org 70 i- (let ((wl (make-wait-list (if (listp socket-or-sockets) Err bitreich.org 70 i- socket-or-sockets (list socket-or-sockets))))) Err bitreich.org 70 i- (multiple-value-bind Err bitreich.org 70 i- (socks to) Err bitreich.org 70 i- (wait-for-input wl :timeout timeout :ready-only ready-only) Err bitreich.org 70 i- ;; NOTE: in case waiter is not created by the user, it should be removed here. Err bitreich.org 70 i- (remove-all-waiters wl) Err bitreich.org 70 i- (return-from wait-for-input Err bitreich.org 70 i- (values (if ready-only socks socket-or-sockets) to))))) Err bitreich.org 70 i- (let* ((start (get-internal-real-time)) Err bitreich.org 70 i- (sockets-ready 0)) Err bitreich.org 70 i- (dolist (x (wait-list-waiters socket-or-sockets)) Err bitreich.org 70 i- (when (setf (state x) Err bitreich.org 70 i- #+(and win32 (or sbcl ecl)) nil ; they cannot rely on LISTEN Err bitreich.org 70 i- #-(and win32 (or sbcl ecl)) Err bitreich.org 70 i- (if (and (stream-usocket-p x) Err bitreich.org 70 i- (listen (socket-stream x))) Err bitreich.org 70 i- :read Err bitreich.org 70 i- nil)) Err bitreich.org 70 i- (incf sockets-ready))) Err bitreich.org 70 i- ;; the internal routine is responsibe for Err bitreich.org 70 i- ;; making sure the wait doesn't block on socket-streams of Err bitreich.org 70 i- ;; which theready- socket isn't ready, but there's space left in the Err bitreich.org 70 i- ;; buffer Err bitreich.org 70 i- (wait-for-input-internal socket-or-sockets Err bitreich.org 70 i- :timeout (if (zerop sockets-ready) timeout 0)) Err bitreich.org 70 i- (let ((to-result (when timeout Err bitreich.org 70 i- (let ((elapsed (/ (- (get-internal-real-time) start) Err bitreich.org 70 i- internal-time-units-per-second))) Err bitreich.org 70 i- (when (< elapsed timeout) Err bitreich.org 70 i- (- timeout elapsed)))))) Err bitreich.org 70 i- (values (if ready-only Err bitreich.org 70 i- (remove-if #'null (wait-list-waiters socket-or-sockets) :key #'state) Err bitreich.org 70 i- socket-or-sockets) Err bitreich.org 70 i- to-result)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; Data utility functions Err bitreich.org 70 i-;; Err bitreich.org 70 i- Err bitreich.org 70 i-(defun integer-to-octet-buffer (integer buffer octets &key (start 0)) Err bitreich.org 70 i- (do ((b start (1+ b)) Err bitreich.org 70 i- (i (ash (1- octets) 3) ;; * 8 Err bitreich.org 70 i- (- i 8))) Err bitreich.org 70 i- ((> 0 i) buffer) Err bitreich.org 70 i- (setf (aref buffer b) Err bitreich.org 70 i- (ldb (byte 8 i) integer)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun octet-buffer-to-integer (buffer octets &key (start 0)) Err bitreich.org 70 i- (let ((integer 0)) Err bitreich.org 70 i- (do ((b start (1+ b)) Err bitreich.org 70 i- (i (ash (1- octets) 3) ;; * 8 Err bitreich.org 70 i- (- i 8))) Err bitreich.org 70 i- ((> 0 i) Err bitreich.org 70 i- integer) Err bitreich.org 70 i- (setf (ldb (byte 8 i) integer) Err bitreich.org 70 i- (aref buffer b))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro port-to-octet-buffer (port buffer &key (start 0)) Err bitreich.org 70 i- `(integer-to-octet-buffer ,port ,buffer 2 :start ,start)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro ip-to-octet-buffer (ip buffer &key (start 0)) Err bitreich.org 70 i- `(integer-to-octet-buffer (host-byte-order ,ip) ,buffer 4 :start ,start)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro port-from-octet-buffer (buffer &key (start 0)) Err bitreich.org 70 i- `(octet-buffer-to-integer ,buffer 2 :start ,start)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro ip-from-octet-buffer (buffer &key (start 0)) Err bitreich.org 70 i- `(octet-buffer-to-integer ,buffer 4 :start ,start)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; IPv4 utility functions Err bitreich.org 70 i-;; Err bitreich.org 70 i- Err bitreich.org 70 i-(defun list-of-strings-to-integers (list) Err bitreich.org 70 i- "Take a list of strings and return a new list of integers (from Err bitreich.org 70 i-parse-integer) on each of the string elements." Err bitreich.org 70 i- (let ((new-list nil)) Err bitreich.org 70 i- (dolist (element (reverse list)) Err bitreich.org 70 i- (push (parse-integer element) new-list)) Err bitreich.org 70 i- new-list)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ip-address-string-p (string) Err bitreich.org 70 i- "Return a true value if the given string could be an IP address." Err bitreich.org 70 i- (every (lambda (char) Err bitreich.org 70 i- (or (digit-char-p char) Err bitreich.org 70 i- (eql char #\.))) Err bitreich.org 70 i- string)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun hbo-to-dotted-quad (integer) ; exported Err bitreich.org 70 i- "Host-byte-order integer to dotted-quad string conversion utility." Err bitreich.org 70 i- (let ((first (ldb (byte 8 24) integer)) Err bitreich.org 70 i- (second (ldb (byte 8 16) integer)) Err bitreich.org 70 i- (third (ldb (byte 8 8) integer)) Err bitreich.org 70 i- (fourth (ldb (byte 8 0) integer))) Err bitreich.org 70 i- (format nil "~A.~A.~A.~A" first second third fourth))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun hbo-to-vector-quad (integer) ; exported Err bitreich.org 70 i- "Host-byte-order integer to dotted-quad string conversion utility." Err bitreich.org 70 i- (let ((first (ldb (byte 8 24) integer)) Err bitreich.org 70 i- (second (ldb (byte 8 16) integer)) Err bitreich.org 70 i- (third (ldb (byte 8 8) integer)) Err bitreich.org 70 i- (fourth (ldb (byte 8 0) integer))) Err bitreich.org 70 i- (vector first second third fourth))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun vector-quad-to-dotted-quad (vector) ; exported Err bitreich.org 70 i- (format nil "~A.~A.~A.~A" Err bitreich.org 70 i- (aref vector 0) Err bitreich.org 70 i- (aref vector 1) Err bitreich.org 70 i- (aref vector 2) Err bitreich.org 70 i- (aref vector 3))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun dotted-quad-to-vector-quad (string) ; exported Err bitreich.org 70 i- (let ((list (list-of-strings-to-integers (split-sequence #\. string)))) Err bitreich.org 70 i- (vector (first list) (second list) (third list) (fourth list)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defgeneric host-byte-order (address)) ; exported Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod host-byte-order ((string string)) Err bitreich.org 70 i- "Convert a string, such as 192.168.1.1, to host-byte-order, Err bitreich.org 70 i-such as 3232235777." Err bitreich.org 70 i- (let ((list (list-of-strings-to-integers (split-sequence #\. string)))) Err bitreich.org 70 i- (+ (* (first list) 256 256 256) (* (second list) 256 256) Err bitreich.org 70 i- (* (third list) 256) (fourth list)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod host-byte-order ((vector vector)) ; IPv4 only Err bitreich.org 70 i- "Convert a vector, such as #(192 168 1 1), to host-byte-order, such as Err bitreich.org 70 i-3232235777." Err bitreich.org 70 i- (+ (* (aref vector 0) 256 256 256) (* (aref vector 1) 256 256) Err bitreich.org 70 i- (* (aref vector 2) 256) (aref vector 3))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod host-byte-order ((int integer)) Err bitreich.org 70 i- int) ; this assume input integer is already host-byte-order Err bitreich.org 70 i- Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; IPv6 utility functions Err bitreich.org 70 i-;; Err bitreich.org 70 i- Err bitreich.org 70 i-(defun vector-to-ipv6-host (vector) ; exported Err bitreich.org 70 i- (with-output-to-string (*standard-output*) Err bitreich.org 70 i- (loop with zeros-collapsed-p Err bitreich.org 70 i- with collapsing-zeros-p Err bitreich.org 70 i- for i below 16 by 2 Err bitreich.org 70 i- for word = (+ (ash (aref vector i) 8) Err bitreich.org 70 i- (aref vector (1+ i))) Err bitreich.org 70 i- do (cond Err bitreich.org 70 i- ((and (zerop word) Err bitreich.org 70 i- (not collapsing-zeros-p) Err bitreich.org 70 i- (not zeros-collapsed-p)) Err bitreich.org 70 i- (setf collapsing-zeros-p t)) Err bitreich.org 70 i- ((or (not (zerop word)) Err bitreich.org 70 i- zeros-collapsed-p) Err bitreich.org 70 i- (when collapsing-zeros-p Err bitreich.org 70 i- (write-string ":") Err bitreich.org 70 i- (setf collapsing-zeros-p nil Err bitreich.org 70 i- zeros-collapsed-p t)) Err bitreich.org 70 i- (format t "~:[~;:~]~X" (plusp i) word))) Err bitreich.org 70 i- finally (when collapsing-zeros-p Err bitreich.org 70 i- (write-string "::"))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun split-ipv6-address (string) Err bitreich.org 70 i- (let ((pos 0) Err bitreich.org 70 i- word Err bitreich.org 70 i- double-colon-seen-p Err bitreich.org 70 i- words-before-double-colon Err bitreich.org 70 i- words-after-double-colon) Err bitreich.org 70 i- (loop Err bitreich.org 70 i- (multiple-value-setq (word pos) (parse-integer string :radix 16 :junk-allowed t :start pos)) Err bitreich.org 70 i- (labels ((at-end-p () Err bitreich.org 70 i- (= pos (length string))) Err bitreich.org 70 i- (looking-at-colon-p () Err bitreich.org 70 i- (char= (char string pos) #\:)) Err bitreich.org 70 i- (ensure-colon () Err bitreich.org 70 i- (unless (looking-at-colon-p) Err bitreich.org 70 i- (error "unsyntactic IPv6 address string ~S, expected a colon at position ~D" Err bitreich.org 70 i- string pos)) Err bitreich.org 70 i- (incf pos))) Err bitreich.org 70 i- (cond Err bitreich.org 70 i- ((null word) Err bitreich.org 70 i- (when double-colon-seen-p Err bitreich.org 70 i- (error "unsyntactic IPv6 address string ~S, can only have one double-colon filler mark" Err bitreich.org 70 i- string)) Err bitreich.org 70 i- (setf double-colon-seen-p t)) Err bitreich.org 70 i- (double-colon-seen-p Err bitreich.org 70 i- (push word words-after-double-colon)) Err bitreich.org 70 i- (t Err bitreich.org 70 i- (push word words-before-double-colon))) Err bitreich.org 70 i- (if (at-end-p) Err bitreich.org 70 i- (return (list (nreverse words-before-double-colon) (nreverse words-after-double-colon))) Err bitreich.org 70 i- (ensure-colon)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ipv6-host-to-vector (string) ; exported Err bitreich.org 70 i- (assert (> (length string) 2) () Err bitreich.org 70 i- "Unsyntactic IPv6 address literal ~S, expected at least three characters" string) Err bitreich.org 70 i- (destructuring-bind (words-before-double-colon words-after-double-colon) Err bitreich.org 70 i- (split-ipv6-address (concatenate 'string Err bitreich.org 70 i- (when (eql (char string 0) #\:) Err bitreich.org 70 i- "0") Err bitreich.org 70 i- string Err bitreich.org 70 i- (when (eql (char string (1- (length string))) #\:) Err bitreich.org 70 i- "0"))) Err bitreich.org 70 i- (let ((number-of-words-specified (+ (length words-before-double-colon) (length words-after-double-colon)))) Err bitreich.org 70 i- (assert (<= number-of-words-specified 8) () Err bitreich.org 70 i- "Unsyntactic IPv6 address literal ~S, too many colon separated address components" string) Err bitreich.org 70 i- (assert (or (= number-of-words-specified 8) words-after-double-colon) () Err bitreich.org 70 i- "Unsyntactic IPv6 address literal ~S, too few address components and no double-colon filler found" string) Err bitreich.org 70 i- (loop with vector = (make-array 16 :element-type '(unsigned-byte 8)) Err bitreich.org 70 i- for i below 16 by 2 Err bitreich.org 70 i- for word in (append words-before-double-colon Err bitreich.org 70 i- (make-list (- 8 number-of-words-specified) :initial-element 0) Err bitreich.org 70 i- words-after-double-colon) Err bitreich.org 70 i- do (setf (aref vector i) (ldb (byte 8 8) word) Err bitreich.org 70 i- (aref vector (1+ i)) (ldb (byte 8 0) word)) Err bitreich.org 70 i- finally (return vector))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun host-to-hostname (host) ; host -> string Err bitreich.org 70 i- "Translate a string, vector quad or 16 byte IPv6 address to a Err bitreich.org 70 i-stringified hostname." Err bitreich.org 70 i- (etypecase host Err bitreich.org 70 i- (string host) ; IPv4 or IPv6 Err bitreich.org 70 i- ((or (vector t 4) ; IPv4 Err bitreich.org 70 i- (array (unsigned-byte 8) (4))) Err bitreich.org 70 i- (vector-quad-to-dotted-quad host)) Err bitreich.org 70 i- ((or (vector t 16) ; IPv6 Err bitreich.org 70 i- (array (unsigned-byte 8) (16))) Err bitreich.org 70 i- (vector-to-ipv6-host host)) Err bitreich.org 70 i- (integer (hbo-to-dotted-quad host)) ; integer input is IPv4 only Err bitreich.org 70 i- (null "0.0.0.0"))) ; null is IPv4 Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ip= (ip1 ip2) ; exported Err bitreich.org 70 i- (etypecase ip1 Err bitreich.org 70 i- (string (string= ip1 ; IPv4 or IPv6 Err bitreich.org 70 i- (host-to-hostname ip2))) Err bitreich.org 70 i- ((or (vector t 4) ; IPv4 Err bitreich.org 70 i- (array (unsigned-byte 8) (4)) ; IPv4 Err bitreich.org 70 i- (vector t 16) ; IPv6 Err bitreich.org 70 i- (array (unsigned-byte 8) (16))) ; IPv6 Err bitreich.org 70 i- (equalp ip1 ip2)) Err bitreich.org 70 i- (integer (= ip1 ; IPv4 only Err bitreich.org 70 i- (host-byte-order ip2))))) ; convert ip2 to integer (hbo) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun ip/= (ip1 ip2) ; exported Err bitreich.org 70 i- (not (ip= ip1 ip2))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; DNS helper functions Err bitreich.org 70 i-;; Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-host-by-name (name) Err bitreich.org 70 i- "0.7.1+: if there're IPv4 addresses, return the first IPv4 address." Err bitreich.org 70 i- (let* ((hosts (get-hosts-by-name name)) Err bitreich.org 70 i- (pos (position-if #'(lambda (ip) (= 4 (length ip))) hosts))) Err bitreich.org 70 i- (if pos (elt hosts pos) Err bitreich.org 70 i- (car hosts)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun get-random-host-by-name (name) Err bitreich.org 70 i- "0.7.1+: if there're IPv4 addresses, only return a random IPv4 address." Err bitreich.org 70 i- (let* ((hosts (get-hosts-by-name name)) Err bitreich.org 70 i- (ipv4-hosts (remove-if-not #'(lambda (ip) (= 4 (length ip))) hosts))) Err bitreich.org 70 i- (cond (ipv4-hosts Err bitreich.org 70 i- (elt ipv4-hosts (random (length ipv4-hosts)))) Err bitreich.org 70 i- (hosts Err bitreich.org 70 i- (elt hosts (random (length hosts))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun host-to-vector-quad (host) ; internal Err bitreich.org 70 i- "Translate a host specification (vector quad, dotted quad or domain name) Err bitreich.org 70 i-to a vector quad." Err bitreich.org 70 i- (etypecase host Err bitreich.org 70 i- (string (let* ((ip (when (ip-address-string-p host) Err bitreich.org 70 i- (dotted-quad-to-vector-quad host)))) Err bitreich.org 70 i- (if (and ip (= 4 (length ip))) Err bitreich.org 70 i- ;; valid IP dotted quad? not sure Err bitreich.org 70 i- ip Err bitreich.org 70 i- (get-random-host-by-name host)))) Err bitreich.org 70 i- ((or (vector t 4) Err bitreich.org 70 i- (array (unsigned-byte 8) (4))) Err bitreich.org 70 i- host) Err bitreich.org 70 i- (integer (hbo-to-vector-quad host)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun host-to-hbo (host) ; internal Err bitreich.org 70 i- (etypecase host Err bitreich.org 70 i- (string (let ((ip (when (ip-address-string-p host) Err bitreich.org 70 i- (dotted-quad-to-vector-quad host)))) Err bitreich.org 70 i- (if (and ip (= 4 (length ip))) Err bitreich.org 70 i- (host-byte-order ip) Err bitreich.org 70 i- (host-to-hbo (get-host-by-name host))))) Err bitreich.org 70 i- ((or (vector t 4) Err bitreich.org 70 i- (array (unsigned-byte 8) (4))) Err bitreich.org 70 i- (host-byte-order host)) Err bitreich.org 70 i- (integer host))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; Other utility functions Err bitreich.org 70 i-;; Err bitreich.org 70 i- Err bitreich.org 70 i-(defun split-timeout (timeout &optional (fractional 1000000)) Err bitreich.org 70 i- "Split real value timeout into seconds and microseconds. Err bitreich.org 70 i-Optionally, a different fractional part can be specified." Err bitreich.org 70 i- (multiple-value-bind Err bitreich.org 70 i- (secs sec-frac) Err bitreich.org 70 i- (truncate timeout 1) Err bitreich.org 70 i- (values secs Err bitreich.org 70 i- (truncate (* fractional sec-frac) 1)))) Err bitreich.org 70 i- Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; Setting of documentation for backend defined functions Err bitreich.org 70 i-;; Err bitreich.org 70 i- Err bitreich.org 70 i-;; Documentation for the function Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; (defun SOCKET-CONNECT (host port &key element-type nodelay some-other-keys...) ..) Err bitreich.org 70 i-;; Err bitreich.org 70 i-(setf (documentation 'socket-connect 'function) Err bitreich.org 70 i- "Connect to `host' on `port'. `host' is assumed to be a string or Err bitreich.org 70 i-an IP address represented in vector notation, such as #(192 168 1 1). Err bitreich.org 70 i-`port' is assumed to be an integer. Err bitreich.org 70 i- Err bitreich.org 70 i-`element-type' specifies the element type to use when constructing the Err bitreich.org 70 i-stream associated with the socket. The default is 'character. Err bitreich.org 70 i- Err bitreich.org 70 i-`nodelay' Allows to disable/enable Nagle's algorithm (http://en.wikipedia.org/wiki/Nagle%27s_algorithm). Err bitreich.org 70 i-If this parameter is omitted, the behaviour is inherited from the Err bitreich.org 70 i-CL implementation (in most cases, Nagle's algorithm is Err bitreich.org 70 i-enabled by default, but for example in ACL it is disabled). Err bitreich.org 70 i-If the parameter is specified, one of these three values is possible: Err bitreich.org 70 i- T - Disable Nagle's algorithm; signals an UNSUPPORTED Err bitreich.org 70 i- condition if the implementation does not support explicit Err bitreich.org 70 i- manipulation with that option. Err bitreich.org 70 i- NIL - Leave Nagle's algorithm enabled on the socket; Err bitreich.org 70 i- signals an UNSUPPORTED condition if the implementation does Err bitreich.org 70 i- not support explicit manipulation with that option. Err bitreich.org 70 i- :IF-SUPPORTED - Disables Nagle's algorithm if the implementation Err bitreich.org 70 i- allows this, otherwises just ignore this option. Err bitreich.org 70 i- Err bitreich.org 70 i-Returns a usocket object.") Err bitreich.org 70 i- Err bitreich.org 70 i-;; Documentation for the function Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; (defun SOCKET-LISTEN (host port &key reuseaddress backlog element-type) ..) Err bitreich.org 70 i-;;###FIXME: extend with default-element-type Err bitreich.org 70 i-(setf (documentation 'socket-listen 'function) Err bitreich.org 70 i- "Bind to interface `host' on `port'. `host' should be the Err bitreich.org 70 i-representation of an ready-interface address. The implementation is Err bitreich.org 70 i-not required to do an address lookup, making no guarantees that Err bitreich.org 70 i-hostnames will be correctly resolved. If `*wildcard-host*' or NIL is Err bitreich.org 70 i-passed for `host', the socket will be bound to all available Err bitreich.org 70 i-interfaces for the system. `port' can be selected by the IP stack by Err bitreich.org 70 i-passing `*auto-port*'. Err bitreich.org 70 i- Err bitreich.org 70 i-Returns an object of type `stream-server-usocket'. Err bitreich.org 70 i- Err bitreich.org 70 i-`reuse-address' and `backlog' are advisory parameters for setting socket Err bitreich.org 70 i-options at creation time. `element-type' is the element type of the Err bitreich.org 70 i-streams to be created by `socket-accept'. `reuseaddress' is supported for Err bitreich.org 70 i-backward compatibility (but deprecated); when both `reuseaddress' and Err bitreich.org 70 i-`reuse-address' have been specified, the latter takes precedence. Err bitreich.org 70 i-") Err bitreich.org 70 i- Err bitreich.org 70 i-;;; Small utility functions mapping true/false to 1/0, moved here from option.lisp Err bitreich.org 70 i- Err bitreich.org 70 i-(proclaim '(inline bool->int int->bool)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun bool->int (bool) (if bool 1 0)) Err bitreich.org 70 i-(defun int->bool (int) (= 1 int)) Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/vendor/OpenTransportUDP.lisp b/3rdparties/software/usocket-0.7.1/vendor/OpenTransportUDP.lisp /scm/clic/file/3rdparties/software/usocket-0.7.1/vendor/OpenTransportUDP.lisp.gph bitreich.org 70 i@@ -1,146 +0,0 @@ Err bitreich.org 70 i-;;;-*-Mode: LISP; Package: CCL -*- Err bitreich.org 70 i-;; Err bitreich.org 70 i-;;; OpenTransportUDP.lisp Err bitreich.org 70 i-;;; Copyright 2012 Chun Tian (binghe) Err bitreich.org 70 i- Err bitreich.org 70 i-;;; UDP extension to OpenTransport.lisp (with some TCP patches) Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package "CCL") Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) Err bitreich.org 70 i- (require :opentransport)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; MCL Issue 28: Passive TCP streams should be able to listen to the loopback interface Err bitreich.org 70 i-;; see http://code.google.com/p/mcl/issues/detail?id=28 for details Err bitreich.org 70 i- Err bitreich.org 70 i-(defparameter *passive-interface-address* NIL Err bitreich.org 70 i- "Address to use for passive connections - optionally bind to loopback address while opening a tcp stream") Err bitreich.org 70 i- Err bitreich.org 70 i-(advise local-interface-ip-address Err bitreich.org 70 i- (or *passive-interface-address* (:do-it)) Err bitreich.org 70 i- :when :around :name 'override-local-interface-ip-address) Err bitreich.org 70 i- Err bitreich.org 70 i-;; MCL Issue 29: Passive TCP connections on OS assigned ports Err bitreich.org 70 i-;; see http://code.google.com/p/mcl/issues/detail?id=29 for details Err bitreich.org 70 i-(advise ot-conn-tcp-passive-connect Err bitreich.org 70 i- (destructuring-bind (conn port &optional (allow-reuse t)) arglist Err bitreich.org 70 i- (declare (ignore allow-reuse)) Err bitreich.org 70 i- (if (eql port #$kOTAnyInetAddress) Err bitreich.org 70 i- ;; Avoids registering a proxy for port 0 but instead registers one for the true port: Err bitreich.org 70 i- (multiple-value-bind (proxy result) Err bitreich.org 70 i- (let* ((*opentransport-class-proxies* NIL) ; makes ot-find-proxy return NIL Err bitreich.org 70 i- (result (:do-it)) ;; pushes onto *opentransport-class-proxies* Err bitreich.org 70 i- (proxy (prog1 Err bitreich.org 70 i- (pop *opentransport-class-proxies*) Err bitreich.org 70 i- (assert (not *opentransport-class-proxies*)))) Err bitreich.org 70 i- (context (cdr proxy)) Err bitreich.org 70 i- (tmpconn (make-ot-conn :context context Err bitreich.org 70 i- :endpoint (pref context :ot-context.ref))) Err bitreich.org 70 i- (localaddress (ot-conn-tcp-get-addresses tmpconn))) Err bitreich.org 70 i- (declare (dynamic-extent tmpconn)) Err bitreich.org 70 i- ;; replace original set in body of function Err bitreich.org 70 i- (setf (ot-conn-local-address conn) localaddress) Err bitreich.org 70 i- (values Err bitreich.org 70 i- (cons localaddress context) Err bitreich.org 70 i- result)) Err bitreich.org 70 i- ;; need to be outside local binding of *opentransport-class-proxies* Err bitreich.org 70 i- (without-interrupts Err bitreich.org 70 i- (push proxy *opentransport-class-proxies*)) Err bitreich.org 70 i- result) Err bitreich.org 70 i- (:do-it))) Err bitreich.org 70 i- :when :around :name 'ot-conn-tcp-passive-connect-any-address) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun open-udp-socket (&key local-address local-port) Err bitreich.org 70 i- (init-opentransport) Err bitreich.org 70 i- (let (endpoint ; TODO: opentransport-alloc-endpoint-from-freelist Err bitreich.org 70 i- (err #$kOTNoError) Err bitreich.org 70 i- (configptr (ot-cloned-configuration traps::$kUDPName))) Err bitreich.org 70 i- (rlet ((errP :osstatus)) Err bitreich.org 70 i- (setq endpoint #+carbon-compat (#_OTOpenEndpointInContext configptr 0 (%null-ptr) errP *null-ptr*) Err bitreich.org 70 i- #-carbon-compat (#_OTOpenEndpoint configptr 0 (%null-ptr) errP) Err bitreich.org 70 i- err (pref errP :osstatus)) Err bitreich.org 70 i- (if (eql err #$kOTNoError) Err bitreich.org 70 i- (let* ((context (ot-make-endpoint-context endpoint nil nil)) ; no notifier, not minimal Err bitreich.org 70 i- (conn (make-ot-conn :context context :endpoint endpoint))) Err bitreich.org 70 i- (macrolet ((check-ot-error-return (error-context) Err bitreich.org 70 i- `(unless (eql (setq err (pref errP :osstatus)) #$kOTNoError) Err bitreich.org 70 i- (values (ot-error err ,error-context))))) Err bitreich.org 70 i- (setf (ot-conn-bindreq conn) Err bitreich.org 70 i- #-carbon-compat (#_OTAlloc endpoint #$T_BIND #$T_ADDR errP) Err bitreich.org 70 i- #+carbon-compat (#_OTAllocInContext endpoint #$T_BIND #$T_ADDR errP *null-ptr*) Err bitreich.org 70 i- ) Err bitreich.org 70 i- (check-ot-error-return :alloc) Err bitreich.org 70 i- (setf (ot-conn-bindret conn) Err bitreich.org 70 i- #-carbon-compat (#_OTAlloc endpoint #$T_BIND #$T_ADDR errP) Err bitreich.org 70 i- #+carbon-compat (#_OTAllocInContext endpoint #$T_BIND #$T_ADDR errP *null-ptr*) Err bitreich.org 70 i- ) Err bitreich.org 70 i- (check-ot-error-return :alloc) Err bitreich.org 70 i- (setf (ot-conn-options conn) Err bitreich.org 70 i- #-carbon-compat (#_OTAlloc endpoint #$T_OPTMGMT #$T_OPT errP) Err bitreich.org 70 i- #+carbon-compat (#_OTAllocInContext endpoint #$T_OPTMGMT #$T_OPT errP *null-ptr*) Err bitreich.org 70 i- ) Err bitreich.org 70 i- (check-ot-error-return :alloc)) Err bitreich.org 70 i- ;; BIND to local address (for UDP server) Err bitreich.org 70 i- (when local-port ; local-address Err bitreich.org 70 i- (let* ((host (or local-address (local-interface-ip-address))) Err bitreich.org 70 i- (port (tcp-service-port-number local-port)) Err bitreich.org 70 i- (localaddress `(:tcp ,host ,port)) Err bitreich.org 70 i- (bindreq (ot-conn-bindreq conn)) Err bitreich.org 70 i- (bindret (ot-conn-bindret conn))) Err bitreich.org 70 i- (let* ((netbuf (pref bindreq :tbind.addr))) Err bitreich.org 70 i- (declare (dynamic-extent netbuf)) Err bitreich.org 70 i- (setf (pref netbuf :tnetbuf.len) (record-length :inetaddress) Err bitreich.org 70 i- (pref bindreq :tbind.qlen) 5) ; arbitrary qlen Err bitreich.org 70 i- (#_OTInitInetAddress (pref netbuf :tnetbuf.buf) port host) Err bitreich.org 70 i- (setf (pref context :ot-context.completed) nil) Err bitreich.org 70 i- (unless (= (setq err (#_OTBind endpoint bindreq bindret)) #$kOTNoError) Err bitreich.org 70 i- (ot-error err :bind))) Err bitreich.org 70 i- (setf (ot-conn-local-address conn) localaddress))) Err bitreich.org 70 i- conn) Err bitreich.org 70 i- (ot-error err :create))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-TUnitData (endpoint) Err bitreich.org 70 i- "create the send/recv buffer for UDP sockets" Err bitreich.org 70 i- (let ((err #$kOTNoError)) Err bitreich.org 70 i- (rlet ((errP :osstatus)) Err bitreich.org 70 i- (macrolet ((check-ot-error-return (error-context) Err bitreich.org 70 i- `(unless (eql (setq err (pref errP :osstatus)) #$kOTNoError) Err bitreich.org 70 i- (values (ot-error err ,error-context))))) Err bitreich.org 70 i- (let ((udata #-carbon-compat (#_OTAlloc endpoint #$T_UNITDATA #$T_ALL errP) Err bitreich.org 70 i- #+carbon-compat (#_OTAllocInContext endpoint #$T_UNITDATA #$T_ALL errP *null-ptr*))) Err bitreich.org 70 i- (check-ot-error-return :alloc) Err bitreich.org 70 i- udata))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun send-message (conn data buffer size host port &optional (offset 0)) Err bitreich.org 70 i- ;; prepare dest address Err bitreich.org 70 i- (let ((addr (pref data :tunitdata.addr))) Err bitreich.org 70 i- (declare (dynamic-extent addr)) Err bitreich.org 70 i- (setf (pref addr :tnetbuf.len) (record-length :inetaddress)) Err bitreich.org 70 i- (#_OTInitInetAddress (pref addr :tnetbuf.buf) port host)) Err bitreich.org 70 i- ;; prepare data buffer Err bitreich.org 70 i- (let* ((udata (pref data :tunitdata.udata)) Err bitreich.org 70 i- (outptr (pref udata :tnetbuf.buf))) Err bitreich.org 70 i- (declare (dynamic-extent udata)) Err bitreich.org 70 i- (%copy-ivector-to-ptr buffer offset outptr 0 size) Err bitreich.org 70 i- (setf (pref udata :tnetbuf.len) size)) Err bitreich.org 70 i- ;; send the packet Err bitreich.org 70 i- (let* ((endpoint (ot-conn-endpoint conn)) Err bitreich.org 70 i- (result (#_OTSndUData endpoint data))) Err bitreich.org 70 i- (the fixnum result))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun receive-message (conn data buffer length) Err bitreich.org 70 i- (let* ((endpoint (ot-conn-endpoint conn)) Err bitreich.org 70 i- (err (#_OTRcvUData endpoint data *null-ptr*))) Err bitreich.org 70 i- (if (eql err #$kOTNoError) Err bitreich.org 70 i- (let* (;(addr (pref data :tunitdata.addr)) Err bitreich.org 70 i- (udata (pref data :tunitdata.udata)) Err bitreich.org 70 i- (inptr (pref udata :tnetbuf.buf)) Err bitreich.org 70 i- (read-bytes (pref udata :tnetbuf.len)) Err bitreich.org 70 i- (buffer (or buffer (make-array read-bytes :element-type '(unsigned-byte 8)))) Err bitreich.org 70 i- (length (or length (length buffer))) Err bitreich.org 70 i- (actual-size (min read-bytes length))) Err bitreich.org 70 i- (%copy-ptr-to-ivector inptr 0 buffer 0 actual-size) Err bitreich.org 70 i- (values buffer Err bitreich.org 70 i- actual-size Err bitreich.org 70 i- 0 0)) ; TODO: retrieve address and port Err bitreich.org 70 i- (ot-error err :receive)))) ; TODO: use OTRcvUDErr instead Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/vendor/kqueue.lisp b/3rdparties/software/usocket-0.7.1/vendor/kqueue.lisp /scm/clic/file/3rdparties/software/usocket-0.7.1/vendor/kqueue.lisp.gph bitreich.org 70 i@@ -1,506 +0,0 @@ Err bitreich.org 70 i-;;;-*-Mode: LISP; Package: CCL -*- Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; KQUEUE.LISP Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; KQUEUE - BSD kernel event notification mechanism support for Common LISP. Err bitreich.org 70 i-;; Copyright (C) 2007 Terje Norderhaug Err bitreich.org 70 i-;; Released under LGPL - see . Err bitreich.org 70 i-;; Alternative licensing available upon request. Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; DISCLAIMER: The user of this module should understand that executing code is a potentially hazardous Err bitreich.org 70 i-;; activity, and that many dangers and obstacles, marked or unmarked, may exist within this code. Err bitreich.org 70 i-;; As a condition of your use of the module, you assume all risk of personal injury, death, or property Err bitreich.org 70 i-;; loss, and all other bad things that may happen, even if caused by negligence, ignorance or stupidity. Err bitreich.org 70 i-;; The author is is no way responsible, and besides, does not have "deep pockets" nor any spare change. Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; Version: 0.20 alpha (July 26, 2009) - subject to major revisions, so consider yourself warned. Err bitreich.org 70 i-;; Tested with Macintosh Common LISP 5.1 and 5.2, but is intended to be platform and system independent in the future. Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; Email feedback and improvements to . Err bitreich.org 70 i-;; Updated versions will be available from . Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; RELATED IMPLEMENTATIONS Err bitreich.org 70 i-;; There is another kevent.lisp for other platforms by Risto Laakso (merge?). Err bitreich.org 70 i-;; Also a Scheme kevent.ss by Jose Antonio Ortega. Err bitreich.org 70 i-;; Err bitreich.org 70 i-;; SEE ALSO: Err bitreich.org 70 i-;; http://people.freebsd.org/~jlemon/papers/kqueue.pdf Err bitreich.org 70 i-;; http://developer.apple.com/samplecode/FileNotification/index.html Err bitreich.org 70 i-;; The Man page for kqueue() or kevent(). Err bitreich.org 70 i-;; PyKQueue - Python OO interface to KQueue. Err bitreich.org 70 i-;; LibEvent - an event notification library in C by Niels Provos. Err bitreich.org 70 i-;; Liboop - another abstract library in C on top of kevent or other kernel notification. Err bitreich.org 70 i- Err bitreich.org 70 i-#| HISTORY: Err bitreich.org 70 i- Err bitreich.org 70 i-2007-Oct-18 terje version 0.1 released on the Info-MCL mailing list. Err bitreich.org 70 i-2008-Aug-21 terje load-framework-bundle is not needed under MCL 5.2 Err bitreich.org 70 i-2008-Aug-21 terje rename get-addr to lookup-function-in-bundle (only for pre MCL 5.2) Err bitreich.org 70 i-2009-Jul-19 terje uses kevent-error condition and strerror. Err bitreich.org 70 i-2009-Jul-24 terje reports errors unless nil-if-not-found in lookup-function-in-bundle. Err bitreich.org 70 i-2009-Jul-24 terje kevent :variant for C's intptr_t type for 64bit (and osx 10.5) compatibility. Err bitreich.org 70 i-2009-Jul-25 terje 64bit support, dynamically determined for PPC. Kudos to Glen Foy for helping out. Err bitreich.org 70 i-2009-Jul-25 terje make-kevent function. Err bitreich.org 70 i-|# Err bitreich.org 70 i- Err bitreich.org 70 i-#| IMPLEMENTATION NOTES: Err bitreich.org 70 i- Err bitreich.org 70 i-kevents are copied into and from the kernel, so the records don't have to be kept in the app! Err bitreich.org 70 i-kevents does not work in OSX before 10.3. Err bitreich.org 70 i-*kevent-record* has to be explcitly set to :kevent64 to work on 64bit intel macs. Err bitreich.org 70 i-Consider using sysctlbyname() to test for 64bit, Err bitreich.org 70 i- combining hw.cpu64bit_capable, hw.optional.x86_64 and hw.optional.64bitops Err bitreich.org 70 i-|# Err bitreich.org 70 i- Err bitreich.org 70 i-(in-package :ccl) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Err bitreich.org 70 i- Err bitreich.org 70 i-#-ccl-5.2 ; has been added to MCL 5.2 Err bitreich.org 70 i-(defmethod load-framework-bundle ((framework-name string) &key (load-executable t)) Err bitreich.org 70 i- ;; FRAMWORK CALL FUNCTIONALITY FROM BSD.LISP Err bitreich.org 70 i- ;; (C) 2003 Brendan Burns Err bitreich.org 70 i- ;; Released under LGPL. Err bitreich.org 70 i- (with-cfstrs ((framework framework-name)) Err bitreich.org 70 i- (let ((err 0) Err bitreich.org 70 i- (baseURL nil) Err bitreich.org 70 i- (bundleURL nil) Err bitreich.org 70 i- (result nil)) Err bitreich.org 70 i- (rlet ((folder :fsref)) Err bitreich.org 70 i- ;; Find the folder holding the bundle Err bitreich.org 70 i- (setf err (#_FSFindFolder #$kOnAppropriateDisk #$kFrameworksFolderType Err bitreich.org 70 i- t folder)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; if everything's cool, make a URL for it Err bitreich.org 70 i- (when (zerop err) Err bitreich.org 70 i- (setf baseURL (#_CFURLCreateFromFSRef (%null-ptr) folder)) Err bitreich.org 70 i- (if (%null-ptr-p baseURL) Err bitreich.org 70 i- (setf err #$coreFoundationUnknownErr))) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; if everything's cool, make a URL for the bundle Err bitreich.org 70 i- (when (zerop err) Err bitreich.org 70 i- (setf bundleURL (#_CFURLCreateCopyAppendingPathComponent (%null-ptr) Err bitreich.org 70 i- baseURL framework nil)) Err bitreich.org 70 i- (if (%null-ptr-p bundleURL) Err bitreich.org 70 i- (setf err #$coreFoundationUnknownErr))) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; if everything's cool, load it Err bitreich.org 70 i- (when (zerop err) Err bitreich.org 70 i- (setf result (#_CFBundleCreate (%null-ptr) bundleURL)) Err bitreich.org 70 i- (if (%null-ptr-p result) Err bitreich.org 70 i- (setf err #$coreFoundationUnknownErr))) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; if everything's cool, and the user wants it loaded, load it Err bitreich.org 70 i- (when (and load-executable (zerop err)) Err bitreich.org 70 i- (if (not (#_CFBundleLoadExecutable result)) Err bitreich.org 70 i- (setf err #$coreFoundationUnknownErr))) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; if there's an error, but we've got a pointer, free it and clear result Err bitreich.org 70 i- (when (and (not (zerop err)) (not (%null-ptr-p result))) Err bitreich.org 70 i- (#_CFRelease result) Err bitreich.org 70 i- (setf result nil)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; free the URLs if there non-null Err bitreich.org 70 i- (when (not (%null-ptr-p bundleURL)) Err bitreich.org 70 i- (#_CFRelease bundleURL)) Err bitreich.org 70 i- (when (not (%null-ptr-p baseURL)) Err bitreich.org 70 i- (#_CFRelease baseURL)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; return pointer + error value Err bitreich.org 70 i- (values result err))))) Err bitreich.org 70 i- Err bitreich.org 70 i-#+ignore Err bitreich.org 70 i-(defun get-addr (bundle name) Err bitreich.org 70 i- (let* ((addr (#_CFBundleGetFunctionPointerForName bundle name))) Err bitreich.org 70 i- (rlet ((buf :long)) Err bitreich.org 70 i- (setf (%get-ptr buf) addr) Err bitreich.org 70 i- (ash (%get-signed-long buf) -2)))) Err bitreich.org 70 i- Err bitreich.org 70 i-#-ccl-5.2 Err bitreich.org 70 i-(defun lookup-function-in-bundle (name bundle &optional nil-if-not-found) Err bitreich.org 70 i- (with-cfstrs ((str name)) Err bitreich.org 70 i- (let* ((addr (#_CFBundleGetFunctionPointerForName bundle str))) Err bitreich.org 70 i- (if (%null-ptr-p addr) Err bitreich.org 70 i- (unless nil-if-not-found Err bitreich.org 70 i- (error "Couldn't resolve address of foreign function ~s" name)) Err bitreich.org 70 i- (rlet ((buf :long)) ;; mcl 5.2 uses %fixnum-from-macptr here Err bitreich.org 70 i- (setf (%get-ptr buf) addr) Err bitreich.org 70 i- (ash (%get-signed-long buf) -2)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Err bitreich.org 70 i-;; Convenient way to declare BSD system calls Err bitreich.org 70 i- Err bitreich.org 70 i-#+ignore Err bitreich.org 70 i-(defparameter *system-bundle* Err bitreich.org 70 i- #+ccl-5.2 (get-bundle-for-framework-name "System.framework") Err bitreich.org 70 i- #-ccl-5.2 Err bitreich.org 70 i- (let ((bundle (load-framework-bundle "System.framework"))) Err bitreich.org 70 i- (terminate-when-unreachable bundle (lambda (b)(#_CFRelease b))) Err bitreich.org 70 i- bundle)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmacro declare-bundle-ff (name name-string &rest arglist &aux (fn (gensym (format nil "ff_~A_" (string name))))) Err bitreich.org 70 i- ;; Is there an existing define-trap like macro for this? or could one be modified for use with bundles? Err bitreich.org 70 i- `(progn Err bitreich.org 70 i- (defloadvar ,fn Err bitreich.org 70 i- (let* ((bundle #+ccl-5.2 (get-bundle-for-framework-name "System.framework") Err bitreich.org 70 i- #-ccl-5.2 Err bitreich.org 70 i- (let ((bundle (load-framework-bundle "System.framework"))) Err bitreich.org 70 i- (terminate-when-unreachable bundle (lambda (b)(#_CFRelease b))) Err bitreich.org 70 i- bundle))) Err bitreich.org 70 i- (lookup-function-in-bundle ,name-string bundle))) Err bitreich.org 70 i- ,(let ((args (do ((arglist arglist (cddr arglist)) Err bitreich.org 70 i- (result)) Err bitreich.org 70 i- ((not (cdr arglist)) (nreverse result)) Err bitreich.org 70 i- (push (second arglist) result)))) Err bitreich.org 70 i- `(defun ,name ,args Err bitreich.org 70 i- (ppc-ff-call ,fn ,@arglist))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Err bitreich.org 70 i- Err bitreich.org 70 i-(declare-bundle-ff %system-kqueue "kqueue" Err bitreich.org 70 i- :signed-fullword) ;; returns a file descriptor no! Err bitreich.org 70 i- Err bitreich.org 70 i-(defun system-kqueue () Err bitreich.org 70 i- (let ((kq (%system-kqueue))) Err bitreich.org 70 i- (if (= kq -1) Err bitreich.org 70 i- (ecase (%system-errno) Err bitreich.org 70 i- (12 (error "The kernel failed to allocate enough memory for the kernel queue")) ; ENOMEM Err bitreich.org 70 i- (24 (error "The per-process descriptor table is full")) ; EMFILE Err bitreich.org 70 i- (23 (error "The system file table is full"))) ; ENFILE Err bitreich.org 70 i- kq))) Err bitreich.org 70 i- Err bitreich.org 70 i-(declare-bundle-ff %system-kevent "kevent" Err bitreich.org 70 i- :unsigned-fullword kq Err bitreich.org 70 i- :address ke Err bitreich.org 70 i- :unsigned-fullword nke Err bitreich.org 70 i- :address ko Err bitreich.org 70 i- :unsigned-fullword nko Err bitreich.org 70 i- :address timeout Err bitreich.org 70 i- :signed-fullword) Err bitreich.org 70 i- Err bitreich.org 70 i-(declare-bundle-ff %system-open "open" Err bitreich.org 70 i- :address name Err bitreich.org 70 i- :unsigned-fullword mode Err bitreich.org 70 i- :unsigned-fullword arg Err bitreich.org 70 i- :signed-fullword) Err bitreich.org 70 i- Err bitreich.org 70 i-(declare-bundle-ff %system-close "close" Err bitreich.org 70 i- :unsigned-fullword fd Err bitreich.org 70 i- :signed-fullword) Err bitreich.org 70 i- Err bitreich.org 70 i-(declare-bundle-ff %system-errno* "__error" Err bitreich.org 70 i- :signed-fullword) Err bitreich.org 70 i- Err bitreich.org 70 i-(declare-bundle-ff %system-strerror "strerror" Err bitreich.org 70 i- :signed-fullword errno Err bitreich.org 70 i- :address) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %system-errno () Err bitreich.org 70 i- (%get-fixnum (%int-to-ptr (%system-errno*)))) Err bitreich.org 70 i- Err bitreich.org 70 i-; (%system-errno) Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant $O-EVTONLY #x8000) Err bitreich.org 70 i-; (defconstant $O-NONBLOCK #x800 "Non blocking mode") Err bitreich.org 70 i- Err bitreich.org 70 i-(defun system-open (posix-namestring) Err bitreich.org 70 i- "Low level open function, as in C, returns an fd number" Err bitreich.org 70 i- (with-cstrs ((name posix-namestring)) Err bitreich.org 70 i- (%system-open name $O-EVTONLY 0))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun system-close (fd) Err bitreich.org 70 i- (%system-close fd)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defrecord timespec Err bitreich.org 70 i- (sec :unsigned-long) Err bitreich.org 70 i- (usec :unsigned-long)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defVar *kevent-record* nil) Err bitreich.org 70 i- Err bitreich.org 70 i-(def-ccl-pointers determine-64bit-kevents () Err bitreich.org 70 i- (setf *kevent-record* Err bitreich.org 70 i- (if (ccl::gestalt #$gestaltPowerPCProcessorFeatures Err bitreich.org 70 i- #+ccl-5.2 #$gestaltPowerPCHas64BitSupport #-ccl-5.2 6) Err bitreich.org 70 i- :kevent32 Err bitreich.org 70 i- :kevent64))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defrecord :kevent32 Err bitreich.org 70 i- (ident :unsigned-long) ; uintptr_t Err bitreich.org 70 i- (filter :short) Err bitreich.org 70 i- (flags :unsigned-short) Err bitreich.org 70 i- (fflags :unsigned-long) Err bitreich.org 70 i- (data :long) ; intptr_t Err bitreich.org 70 i- (udata :pointer)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defrecord :kevent64 Err bitreich.org 70 i- (:variant ; uintptr_t Err bitreich.org 70 i- ((ident64 :uint64)) Err bitreich.org 70 i- ((ident :unsigned-long))) Err bitreich.org 70 i- (filter :short) Err bitreich.org 70 i- (flags :unsigned-short) Err bitreich.org 70 i- (fflags :unsigned-long) Err bitreich.org 70 i- (:variant ; intptr_t Err bitreich.org 70 i- ((data64 :sint64)) Err bitreich.org 70 i- ((data :long))) Err bitreich.org 70 i- (:variant ; RMCL :pointer is 32bit Err bitreich.org 70 i- ((udata64 :uint64)) Err bitreich.org 70 i- ((udata :pointer)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun make-kevent (&key (ident 0) (filter 0) (flags 0) (fflags 0) (data 0) (udata *null-ptr*)) Err bitreich.org 70 i- (ecase *kevent-record* Err bitreich.org 70 i- (:kevent64 Err bitreich.org 70 i- (make-record kevent64 Err bitreich.org 70 i- :ident ident Err bitreich.org 70 i- :filter filter Err bitreich.org 70 i- :flags flags Err bitreich.org 70 i- :fflags fflags Err bitreich.org 70 i- :data data Err bitreich.org 70 i- :udata udata)) Err bitreich.org 70 i- (:kevent32 Err bitreich.org 70 i- (make-record kevent32 Err bitreich.org 70 i- :ident ident Err bitreich.org 70 i- :filter filter Err bitreich.org 70 i- :flags flags Err bitreich.org 70 i- :fflags fflags Err bitreich.org 70 i- :data data Err bitreich.org 70 i- :udata udata)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun kevent-rref (ke field) Err bitreich.org 70 i- (ecase *kevent-record* Err bitreich.org 70 i- (:kevent32 Err bitreich.org 70 i- (ecase field Err bitreich.org 70 i- (:ident (rref ke :kevent32.ident)) Err bitreich.org 70 i- (:filter (rref ke :kevent32.filter)) Err bitreich.org 70 i- (:flags (rref ke :kevent32.flags)) Err bitreich.org 70 i- (:fflags (rref ke :kevent32.fflags)) Err bitreich.org 70 i- (:data (rref ke :kevent32.data)) Err bitreich.org 70 i- (:udata (rref ke :kevent32.udata)))) Err bitreich.org 70 i- (:kevent64 Err bitreich.org 70 i- (ecase field Err bitreich.org 70 i- (:ident (rref ke :kevent64.ident)) Err bitreich.org 70 i- (:filter (rref ke :kevent64.filter)) Err bitreich.org 70 i- (:flags (rref ke :kevent64.flags)) Err bitreich.org 70 i- (:fflags (rref ke :kevent64.fflags)) Err bitreich.org 70 i- (:data (rref ke :kevent64.data)) Err bitreich.org 70 i- (:udata (rref ke :kevent64.udata)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun kevent-filter (ke) Err bitreich.org 70 i- (kevent-rref ke :filter)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun kevent-flags (ke) Err bitreich.org 70 i- (kevent-rref ke :flags)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun kevent-data (ke) Err bitreich.org 70 i- (kevent-rref ke :data)) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-;; FILTER TYPES: Err bitreich.org 70 i- Err bitreich.org 70 i-(eval-when (:compile-toplevel :load-toplevel :execute) ; added by binghe Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant $kevent-read-filter -1 "Data available to read") Err bitreich.org 70 i-(defconstant $kevent-write-filter -2 "Writing is possible") Err bitreich.org 70 i-(defconstant $kevent-aio-filter -3 "AIO system call has been made") Err bitreich.org 70 i-(defconstant $kevent-vnode-filter -4 "Event occured on a file descriptor") Err bitreich.org 70 i-(defconstant $kevent-proc-filter -5 "Process performed one or more of the requested events") Err bitreich.org 70 i-(defconstant $kevent-signal-filter -6 "Attempted to deliver a signal to a process") Err bitreich.org 70 i-(defconstant $kevent-timer-filter -7 "Establishes an arbitrary timer") Err bitreich.org 70 i-(defconstant $kevent-netdev-filter -8 "Event occured on a network device") Err bitreich.org 70 i-(defconstant $kevent-filesystem-filter -9) Err bitreich.org 70 i- Err bitreich.org 70 i-) ; eval-when Err bitreich.org 70 i- Err bitreich.org 70 i-; FLAGS: Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant $kevent-add #x01) Err bitreich.org 70 i-(defconstant $kevent-delete #x02) Err bitreich.org 70 i-(defconstant $kevent-enable #x04) Err bitreich.org 70 i-(defconstant $kevent-disable #x08) Err bitreich.org 70 i-(defconstant $kevent-oneshot #x10) Err bitreich.org 70 i-(defconstant $kevent-clear #x20) Err bitreich.org 70 i-(defconstant $kevent-error #x4000) Err bitreich.org 70 i-(defconstant $kevent-eof #x8000 "EV_EOF") Err bitreich.org 70 i- Err bitreich.org 70 i-;; FFLAGS: Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant $kevent-file-delete #x01 "The file was unlinked from the file system") Err bitreich.org 70 i-(defconstant $kevent-file-write #x02 "A write occurred on the file") Err bitreich.org 70 i-(defconstant $kevent-file-extend #x04 "The file was extended") Err bitreich.org 70 i-(defconstant $kevent-file-attrib #x08 "The file had its attributes changed") Err bitreich.org 70 i-(defconstant $kevent-file-link #x10 "The link count on the file changed") Err bitreich.org 70 i-(defconstant $kevent-file-rename #x20 "The file was renamed") Err bitreich.org 70 i-(defconstant $kevent-file-revoke #x40 "Access to the file was revoked or the file system was unmounted") Err bitreich.org 70 i-(defconstant $kevent-file-all (logior $kevent-file-delete $kevent-file-write $kevent-file-extend Err bitreich.org 70 i- $kevent-file-attrib $kevent-file-link $kevent-file-rename $kevent-file-revoke)) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(defconstant $kevent-net-linkup #x01 "Link is up") Err bitreich.org 70 i-(defconstant $kevent-net-linkdown #x02 "Link is down") Err bitreich.org 70 i-(defconstant $kevent-net-linkinvalid #x04 "Link state is invalid") Err bitreich.org 70 i-(defconstant $kevent-net-added #x08 "IP adress added") Err bitreich.org 70 i-(defconstant $kevent-net-deleted #x10 "IP adress deleted") Err bitreich.org 70 i- Err bitreich.org 70 i-(define-condition kevent-error (simple-error) Err bitreich.org 70 i- ((errno :initform NIL :initarg :errno) Err bitreich.org 70 i- (ko :initform nil :type (or null kevent) :initarg :ko) Err bitreich.org 70 i- (syserr :initform (%system-errno))) Err bitreich.org 70 i- (:report Err bitreich.org 70 i- (lambda (c s) Err bitreich.org 70 i- (with-slots (errno ko syserr) c Err bitreich.org 70 i- (format s "kevent system call error ~A [~A]" errno syserr) Err bitreich.org 70 i- (when errno Err bitreich.org 70 i- (format s "(~A)" (%get-cstring (%system-strerror errno)))) Err bitreich.org 70 i- (when ko Err bitreich.org 70 i- (format s " for ") Err bitreich.org 70 i- (let ((*standard-output* s)) Err bitreich.org 70 i- (print-record ko *kevent-record*))))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun %kevent (kq &optional ke ko (timeout 0)) Err bitreich.org 70 i- (check-type kq integer) Err bitreich.org 70 i- (rlet ((&timeout :timespec :sec timeout :usec 1)) Err bitreich.org 70 i- (let ((num (with-timer ;; does not seem to make a difference... Err bitreich.org 70 i- (%system-kevent kq (or ke (%null-ptr))(if ke 1 0)(or ko (%null-ptr))(if ko 1 0) &timeout)))) Err bitreich.org 70 i- ; "If an error occurs while processing an element of the changelist and there Err bitreich.org 70 i- ; is enough room in the eventlist, then the event will be placed in the eventlist with Err bitreich.org 70 i- ; EV_ERROR set in flags and the system error in data." Err bitreich.org 70 i- (when (and ko (plusp (logand $kevent-error (kevent-flags ko)))) Err bitreich.org 70 i- (error 'kevent-error Err bitreich.org 70 i- :errno (kevent-data ko) Err bitreich.org 70 i- :ko ko)) Err bitreich.org 70 i- ; "Otherwise, -1 will be returned, and errno will be set to indicate the error condition." Err bitreich.org 70 i- (when (= num -1) Err bitreich.org 70 i- ;; hack - opentransport provides the constants for the errors documented for the call Err bitreich.org 70 i- (case (%system-errno) Err bitreich.org 70 i- (0 (error "kevent system call failed with an unspecified error")) ;; should not happen! Err bitreich.org 70 i- (13 (error "The process does not have permission to register a filter")) Err bitreich.org 70 i- (14 (error "There was an error reading or writing the kevent structure")) ; EFAULT Err bitreich.org 70 i- (9 (error "The specified descriptor is invalid")) ; EBADF Err bitreich.org 70 i- (4 (error "A signal was delivered before the timeout expired and before any events were placed on the kqueue for return.")) ; EINTR Err bitreich.org 70 i- (22 (error "The specified time limit or filter is invalid")) ; EINVAL Err bitreich.org 70 i- (2 (error "The event could not be found to be modified or deleted")) ; ENOENT Err bitreich.org 70 i- (12 (error "No memory was available to register the event")) ; ENOMEM Err bitreich.org 70 i- (78 (error "The specified process to attach to does not exist"))) ; ESRCH Err bitreich.org 70 i- ;; shouldn't get here... Err bitreich.org 70 i- (errchk (%system-errno)) Err bitreich.org 70 i- (error "error ~A" (%system-errno))) Err bitreich.org 70 i- (unless (zerop num) Err bitreich.org 70 i- (values ko num))))) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Err bitreich.org 70 i-;; CLOS INTERFACE Err bitreich.org 70 i- Err bitreich.org 70 i-(defclass kqueue () Err bitreich.org 70 i- ((kq :initform (system-kqueue) Err bitreich.org 70 i- :documentation "file descriptor referencing the kqueue") Err bitreich.org 70 i- (fds :initform NIL)) ;; ## better if kept on top level, perhaps as a hash table... Err bitreich.org 70 i- (:documentation "A kernal event notification channel")) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod initialize-instance :after ((q kqueue) &rest rest) Err bitreich.org 70 i- (declare (ignore rest)) Err bitreich.org 70 i- (terminate-when-unreachable q 'kqueue-close)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod kqueue-close ((q kqueue)) Err bitreich.org 70 i- (with-slots (kq fds) q Err bitreich.org 70 i- (when (or kq fds) ;; allow repeated close Err bitreich.org 70 i- (system-close kq) Err bitreich.org 70 i- (setf fds NIL) Err bitreich.org 70 i- (setf kq NIL)))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod kqueue-poll ((q kqueue)) Err bitreich.org 70 i- "Polls a kqueue for kevents" Err bitreich.org 70 i- ;; may not have to be cleared, but just in case: Err bitreich.org 70 i- (flet ((kqueue-poll2 (ko) Err bitreich.org 70 i- (let ((result (with-slots (kq) q Err bitreich.org 70 i- (without-interrupts Err bitreich.org 70 i- (%kevent kq NIL ko))))) Err bitreich.org 70 i- (when result Err bitreich.org 70 i- (let ((type (kevent-filter result))) Err bitreich.org 70 i- (ecase type Err bitreich.org 70 i- (0 (values)) Err bitreich.org 70 i- (#.$kevent-read-filter Err bitreich.org 70 i- (values Err bitreich.org 70 i- :read Err bitreich.org 70 i- (kevent-rref result :ident) Err bitreich.org 70 i- (kevent-rref result :flags) Err bitreich.org 70 i- (kevent-rref result :fflags) Err bitreich.org 70 i- (kevent-rref result :data) Err bitreich.org 70 i- (kevent-rref result :udata))) Err bitreich.org 70 i- (#.$kevent-write-filter :write) Err bitreich.org 70 i- (#.$kevent-aio-filter :aio) Err bitreich.org 70 i- (#.$kevent-vnode-filter Err bitreich.org 70 i- (values Err bitreich.org 70 i- :vnode Err bitreich.org 70 i- (cdr (assoc (kevent-rref result :ident) (slot-value q 'fds))) Err bitreich.org 70 i- (kevent-rref result :flags) Err bitreich.org 70 i- (kevent-rref result :fflags) Err bitreich.org 70 i- (kevent-rref result :data) Err bitreich.org 70 i- (kevent-rref result :udata))) Err bitreich.org 70 i- (#.$kevent-filesystem-filter :filesystem))))))) Err bitreich.org 70 i- (ecase *kevent-record* Err bitreich.org 70 i- (:kevent64 Err bitreich.org 70 i- (rlet ((ko :kevent64 :ident 0 :filter 0 :flags 0 :fflags 0 :data 0 :udata (%null-ptr))) Err bitreich.org 70 i- (kqueue-poll2 ko))) Err bitreich.org 70 i- (:kevent32 Err bitreich.org 70 i- (rlet ((ko :kevent32 :ident 0 :filter 0 :flags 0 :fflags 0 :data 0 :udata (%null-ptr))) Err bitreich.org 70 i- (kqueue-poll2 ko)))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod kqueue-subscribe ((q kqueue) &key ident filter (flags 0) (fflags 0) (data 0) (udata (%null-ptr))) Err bitreich.org 70 i- (let ((ke (make-kevent :ident ident Err bitreich.org 70 i- :filter filter Err bitreich.org 70 i- :flags flags Err bitreich.org 70 i- :fflags fflags Err bitreich.org 70 i- :data data Err bitreich.org 70 i- :udata udata))) Err bitreich.org 70 i- (with-slots (kq) q Err bitreich.org 70 i- (without-interrupts Err bitreich.org 70 i- (%kevent kq ke))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defmethod kqueue-vnode-subscribe ((q kqueue) pathname) Err bitreich.org 70 i- "Makes the queue report an event when there is a change to a directory or file" Err bitreich.org 70 i- (let* ((namestring (posix-namestring (full-pathname pathname))) Err bitreich.org 70 i- (fd (system-open namestring))) Err bitreich.org 70 i- (with-slots (fds) q Err bitreich.org 70 i- (push (cons fd pathname) fds)) Err bitreich.org 70 i- (kqueue-subscribe q Err bitreich.org 70 i- :ident fd Err bitreich.org 70 i- :filter $kevent-vnode-filter Err bitreich.org 70 i- :flags (logior $kevent-add $kevent-clear) Err bitreich.org 70 i- :fflags $kevent-file-all) Err bitreich.org 70 i- namestring)) Err bitreich.org 70 i- Err bitreich.org 70 i-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Err bitreich.org 70 i- Err bitreich.org 70 i-#+test Err bitreich.org 70 i-(defun kevent-d (pathname &optional (*standard-output* (fred))) Err bitreich.org 70 i- "Report changes to a file or directory" Err bitreich.org 70 i- (loop Err bitreich.org 70 i- with kqueue = (make-instance 'kqueue) Err bitreich.org 70 i- with sub = (kqueue-vnode-subscribe kqueue pathname) Err bitreich.org 70 i- for i from 1 to 60 Err bitreich.org 70 i- for result = (multiple-value-list (kqueue-poll kqueue)) Err bitreich.org 70 i- unless (equal result '(NIL)) Err bitreich.org 70 i- do (progn Err bitreich.org 70 i- (format T "~A~%" result) Err bitreich.org 70 i- (force-output)) Err bitreich.org 70 i- ; do (process-allow-schedule) Err bitreich.org 70 i- do (sleep 1) Err bitreich.org 70 i- finally (write-line "Done") Err bitreich.org 70 i- )) Err bitreich.org 70 i- Err bitreich.org 70 i-#| Err bitreich.org 70 i- Err bitreich.org 70 i-; Report changes to this file in a fred window (save this document to see what happens): Err bitreich.org 70 i- Err bitreich.org 70 i-(process-run-function "kevent-d" #'kevent-d *loading-file-source-file* Err bitreich.org 70 i- (fred)) Err bitreich.org 70 i- Err bitreich.org 70 i-; Reports files added or removed from the directory of this file: Err bitreich.org 70 i- Err bitreich.org 70 i-(process-run-function "kevent-d" #'kevent-d Err bitreich.org 70 i- (make-pathname :directory (pathname-directory *loading-file-source-file*)) Err bitreich.org 70 i- (fred)) Err bitreich.org 70 i-|# Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/3rdparties/software/usocket-0.7.1/version.sexp b/3rdparties/software/usocket-0.7.1/version.sexp /scm/clic/file/3rdparties/software/usocket-0.7.1/version.sexp.gph bitreich.org 70 i@@ -1 +0,0 @@ Err bitreich.org 70 i-"0.7.1" Err bitreich.org 70 1diff --git a/3rdparties/system-index.txt b/3rdparties/system-index.txt /scm/clic/file/3rdparties/system-index.txt.gph bitreich.org 70 i@@ -1,27 +1,27 @@ Err bitreich.org 70 i-software/alexandria-20181210-git/alexandria-tests.asd Err bitreich.org 70 i-software/alexandria-20181210-git/alexandria.asd Err bitreich.org 70 i-software/babel-20171227-git/babel-streams.asd Err bitreich.org 70 i-software/babel-20171227-git/babel-tests.asd Err bitreich.org 70 i-software/babel-20171227-git/babel.asd Err bitreich.org 70 i-software/bordeaux-threads-v0.8.6/bordeaux-threads.asd Err bitreich.org 70 i-software/cffi_0.20.0/cffi-examples.asd Err bitreich.org 70 i-software/cffi_0.20.0/cffi-grovel.asd Err bitreich.org 70 i-software/cffi_0.20.0/cffi-libffi.asd Err bitreich.org 70 i-software/cffi_0.20.0/cffi-tests.asd Err bitreich.org 70 i-software/cffi_0.20.0/cffi-toolchain.asd Err bitreich.org 70 i-software/cffi_0.20.0/cffi-uffi-compat.asd Err bitreich.org 70 i-software/cffi_0.20.0/cffi.asd Err bitreich.org 70 i-software/cl+ssl-20190202-git/cl+ssl.asd Err bitreich.org 70 i-software/cl+ssl-20190202-git/cl+ssl.test.asd Err bitreich.org 70 i-software/flexi-streams-20190107-git/flexi-streams.asd Err bitreich.org 70 i-software/split-sequence-v1.5.0/split-sequence.asd Err bitreich.org 70 i-software/trivial-features-20161204-git/trivial-features-tests.asd Err bitreich.org 70 i-software/trivial-features-20161204-git/trivial-features.asd Err bitreich.org 70 i-software/trivial-garbage-20181018-git/trivial-garbage.asd Err bitreich.org 70 i+software/alexandria-20200427-git/alexandria-tests.asd Err bitreich.org 70 i+software/alexandria-20200427-git/alexandria.asd Err bitreich.org 70 i+software/babel-20200218-git/babel-streams.asd Err bitreich.org 70 i+software/babel-20200218-git/babel-tests.asd Err bitreich.org 70 i+software/babel-20200218-git/babel.asd Err bitreich.org 70 i+software/bordeaux-threads-v0.8.7/bordeaux-threads.asd Err bitreich.org 70 i+software/cffi_0.21.0/cffi-examples.asd Err bitreich.org 70 i+software/cffi_0.21.0/cffi-grovel.asd Err bitreich.org 70 i+software/cffi_0.21.0/cffi-libffi.asd Err bitreich.org 70 i+software/cffi_0.21.0/cffi-tests.asd Err bitreich.org 70 i+software/cffi_0.21.0/cffi-toolchain.asd Err bitreich.org 70 i+software/cffi_0.21.0/cffi-uffi-compat.asd Err bitreich.org 70 i+software/cffi_0.21.0/cffi.asd Err bitreich.org 70 i+software/cl+ssl-20200427-git/cl+ssl.asd Err bitreich.org 70 i+software/cl+ssl-20200427-git/cl+ssl.test.asd Err bitreich.org 70 i+software/flexi-streams-20200427-git/flexi-streams.asd Err bitreich.org 70 i+software/split-sequence-v2.0.0/split-sequence.asd Err bitreich.org 70 i+software/trivial-features-20200427-git/trivial-features-tests.asd Err bitreich.org 70 i+software/trivial-features-20200427-git/trivial-features.asd Err bitreich.org 70 i+software/trivial-garbage-20200325-git/trivial-garbage.asd Err bitreich.org 70 i software/trivial-gray-streams-20181018-git/trivial-gray-streams-test.asd Err bitreich.org 70 i software/trivial-gray-streams-20181018-git/trivial-gray-streams.asd Err bitreich.org 70 i-software/uiop-3.3.2/asdf-driver.asd Err bitreich.org 70 i-software/uiop-3.3.2/uiop.asd Err bitreich.org 70 i-software/usocket-0.7.1/usocket-server.asd Err bitreich.org 70 i-software/usocket-0.7.1/usocket-test.asd Err bitreich.org 70 i-software/usocket-0.7.1/usocket.asd Err bitreich.org 70 i+software/uiop-3.3.4/asdf-driver.asd Err bitreich.org 70 i+software/uiop-3.3.4/uiop.asd Err bitreich.org 70 i+software/usocket-0.8.3/usocket-server.asd Err bitreich.org 70 i+software/usocket-0.8.3/usocket-test.asd Err bitreich.org 70 i+software/usocket-0.8.3/usocket.asd Err bitreich.org 70 .