From 3e1ab6ebfcf56e76edffaff284aca937e8152408 Mon Sep 17 00:00:00 2001 From: "Kevin M. Rosenberg" Date: Tue, 18 May 2004 22:38:52 +0000 Subject: [PATCH] r9396: add ensure-char-storage function, new tests --- debian/changelog | 6 + doc/catalog-suse.xml | 8 +- doc/catalog-suse90.xml | 43 +++ doc/html.tar.gz | Bin 22233 -> 23499 bytes doc/uffi.pdf | 660 ++++++++++++++++++++--------------------- src/objects.lisp | 24 +- src/package.lisp | 1 + src/strings.lisp | 9 +- tests/pointers.lisp | 33 ++- tests/union.lisp | 14 +- 10 files changed, 433 insertions(+), 365 deletions(-) create mode 100644 doc/catalog-suse90.xml diff --git a/debian/changelog b/debian/changelog index e3eea13..3145630 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cl-uffi (1.4.18-1) unstable; urgency=low + + * New upstream + + -- Kevin M. Rosenberg Tue, 18 May 2004 15:40:58 -0600 + cl-uffi (1.4.17-1) unstable; urgency=low * New upstream diff --git a/doc/catalog-suse.xml b/doc/catalog-suse.xml index 9c772d6..80005a3 100644 --- a/doc/catalog-suse.xml +++ b/doc/catalog-suse.xml @@ -6,7 +6,7 @@ - + + uri="docbook/stylesheet/nwalsh/current/xhtml/docbook.xsl" /> + uri="docbook/stylesheet/nwalsh/current/xhtml/chunk.xsl" /> + uri="docbook/stylesheet/nwalsh/current/fo/docbook.xsl" /> diff --git a/doc/catalog-suse90.xml b/doc/catalog-suse90.xml new file mode 100644 index 0000000..9c772d6 --- /dev/null +++ b/doc/catalog-suse90.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/html.tar.gz b/doc/html.tar.gz index 5716b4d34c823d9b7bc2e93d85ffa19e5c4ec3aa..81a45b7c9bd5b2b83e3efa6833975790ffe7625f 100644 GIT binary patch literal 23499 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 literal 22233 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 endobj 7 0 obj -<< /Length 971 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 967 /Filter [ /ASCII85Decode /FlateDecode ] >> stream -Gau0B95iQ=%)1n+kh#rrlA'1'fW"8(U0G6"kACCQ*>D^tKKe#oo"8+.QT>BMS7t&b)i'2H1\Z*c&Qe"o:L8PZ8i'[<-EoNI9%u@8eA-(@_B9KFH!D+X'B(u4EKmWJ!TC@0]<=F_f]kj9BDHD6!*0=Eh9t7*gL3p`*JSOG@lko/P+!G169hQu!bo&C9WTDu;gaKc9)so/JW=9X:3nO;\e\3cX%97JE0lH%k[`3pYk(Ho3P#^r@XO#eGVZQ1Y0o2L;UN%J;;o:-"Y$#FVI7jL;3_!a42$$p`::QQBFbb-,=UfL^`9M4ZXhIB/gf2ZN-*<6^(oZ!YP\&r+\(fd-A9D]>Tg0-dHnHRj6fS0W0)L[Y#LbIToP5*59Sn\5,_`Hn]XlYB4RT?f)c;\`a49XA +Gau0B95iQ=%)1n+kh#rrlA'1'fW"8(U0G6"kACCQ*>D^tKKe#oo"8+.QT>BMS7t&b)i'2H1\Z*c&Qe"o:L8PZ8i'[<-EoNI9%u@8eA-(@_B9KFH!D+X'B(u4EKmWJ!TC@0]<=F_f]kj9BDHD6!*0=Eh9t7*gL3p`*JSOG@lko/P+!G169hQu!bo&C9WTDu;gaKc9)so/JW=9X:3nO;\e\3cX%97JE0lH%k[`3pYk(Ho3P#^r@XO#eGVZQ1Y0o2L;UN%J;;o:-"Y$#FVI7jL;3_!a42$$p`::QQBFbb-,=UfL^`9M4ZXhIB/gf2ZN-*<6^(oZ!YP\&r+\(fd-A9D]>Tg0-dHnHRj6fS0W0)L[Y#LbIToP5*59Sn\5,_`Hn]XmL5'H9o26H@SoP#\q'3%#(bT"5f1kX"glW&H9n:,Nse]gMdbb2nA9-i"YerkJr/>PUK4-E).NhU,#9W>j1AI&AOYRod_B,?fTJ;.=.h6.V\#4geI*.\(tJf$[IcI$Ik)(g[cc*b"_udmZdMPMOVIfA/?]_@@`UeU1P)@HY;Q08eP)nh(s\DEcI::G\ebRr6/:p9Z(NQjpb<0%7^tZ$mSepAG(dk$Vs~> endstream endobj 8 0 obj @@ -2636,337 +2636,337 @@ endobj xref 0 332 0000000000 65535 f -0000086193 00000 n -0000086736 00000 n -0000086829 00000 n +0000086189 00000 n +0000086732 00000 n +0000086825 00000 n 0000000015 00000 n 0000000071 00000 n 0000000352 00000 n 0000000458 00000 n -0000001520 00000 n -0000001626 00000 n -0000001787 00000 n -0000001894 00000 n -0000003922 00000 n -0000004045 00000 n -0000004446 00000 n -0000086982 00000 n -0000004582 00000 n -0000087048 00000 n -0000004718 00000 n -0000087114 00000 n -0000004854 00000 n -0000087182 00000 n -0000004990 00000 n -0000087250 00000 n -0000005126 00000 n -0000087318 00000 n -0000005262 00000 n -0000087386 00000 n -0000005398 00000 n -0000087454 00000 n -0000005534 00000 n -0000087520 00000 n -0000005670 00000 n -0000087586 00000 n -0000005806 00000 n -0000087654 00000 n -0000005942 00000 n -0000087722 00000 n -0000006078 00000 n -0000087790 00000 n -0000006214 00000 n -0000087858 00000 n -0000006350 00000 n -0000087926 00000 n -0000006486 00000 n -0000087993 00000 n -0000006622 00000 n -0000088061 00000 n -0000006758 00000 n -0000088129 00000 n -0000006894 00000 n -0000088188 00000 n -0000007030 00000 n -0000088254 00000 n -0000007166 00000 n -0000088322 00000 n -0000007302 00000 n -0000088388 00000 n -0000007438 00000 n -0000088454 00000 n -0000007574 00000 n -0000088520 00000 n -0000007710 00000 n -0000088588 00000 n -0000007846 00000 n -0000088654 00000 n -0000007982 00000 n -0000088720 00000 n -0000008118 00000 n -0000088786 00000 n -0000008254 00000 n -0000088852 00000 n -0000008389 00000 n -0000088918 00000 n -0000008525 00000 n -0000088984 00000 n -0000008661 00000 n -0000089050 00000 n -0000008796 00000 n -0000089118 00000 n -0000008932 00000 n -0000089184 00000 n -0000009068 00000 n -0000089250 00000 n -0000009204 00000 n -0000089316 00000 n -0000009340 00000 n -0000089382 00000 n -0000009476 00000 n -0000089448 00000 n -0000009611 00000 n -0000089514 00000 n -0000009747 00000 n -0000089580 00000 n -0000009883 00000 n -0000089646 00000 n -0000010019 00000 n -0000089712 00000 n -0000010155 00000 n -0000089778 00000 n -0000010291 00000 n -0000089844 00000 n -0000010429 00000 n -0000089911 00000 n -0000010567 00000 n -0000089978 00000 n -0000010705 00000 n -0000090047 00000 n -0000010843 00000 n -0000090114 00000 n -0000010981 00000 n -0000090181 00000 n -0000011119 00000 n -0000090248 00000 n -0000011257 00000 n -0000090315 00000 n -0000011394 00000 n -0000090382 00000 n -0000011530 00000 n -0000090449 00000 n -0000011666 00000 n -0000012265 00000 n -0000012391 00000 n -0000012476 00000 n -0000090516 00000 n -0000012610 00000 n -0000090583 00000 n -0000012744 00000 n -0000090650 00000 n -0000012878 00000 n -0000090717 00000 n -0000013012 00000 n -0000090784 00000 n -0000013146 00000 n -0000090851 00000 n -0000013280 00000 n -0000090920 00000 n -0000013414 00000 n -0000090989 00000 n -0000013548 00000 n -0000014206 00000 n -0000014316 00000 n -0000016365 00000 n -0000016475 00000 n -0000017651 00000 n -0000017761 00000 n -0000020167 00000 n -0000020277 00000 n -0000020735 00000 n -0000020845 00000 n -0000021401 00000 n -0000021511 00000 n -0000022407 00000 n -0000022517 00000 n -0000023799 00000 n -0000023909 00000 n -0000024957 00000 n -0000025067 00000 n -0000025887 00000 n -0000025997 00000 n -0000027186 00000 n -0000027296 00000 n -0000027676 00000 n -0000027786 00000 n -0000029576 00000 n -0000029686 00000 n -0000030007 00000 n -0000030117 00000 n -0000031252 00000 n -0000031362 00000 n -0000032303 00000 n -0000032413 00000 n -0000033318 00000 n -0000033428 00000 n -0000034188 00000 n -0000034298 00000 n -0000035499 00000 n -0000035609 00000 n -0000035934 00000 n -0000036044 00000 n -0000037022 00000 n -0000037132 00000 n -0000037526 00000 n -0000037636 00000 n -0000038685 00000 n -0000038795 00000 n -0000039479 00000 n -0000039589 00000 n -0000040941 00000 n -0000041051 00000 n -0000041967 00000 n -0000042077 00000 n -0000042775 00000 n -0000042885 00000 n -0000044005 00000 n -0000044115 00000 n -0000044440 00000 n -0000044550 00000 n -0000045719 00000 n -0000045829 00000 n -0000046928 00000 n -0000047038 00000 n -0000047818 00000 n -0000047928 00000 n -0000048672 00000 n -0000048782 00000 n -0000049297 00000 n -0000049407 00000 n -0000051049 00000 n -0000051159 00000 n -0000051500 00000 n -0000051610 00000 n -0000053046 00000 n -0000053156 00000 n -0000053847 00000 n -0000053957 00000 n -0000056049 00000 n -0000056159 00000 n -0000056528 00000 n -0000056638 00000 n -0000057442 00000 n -0000057552 00000 n -0000058360 00000 n -0000058470 00000 n -0000059211 00000 n -0000059321 00000 n -0000060450 00000 n -0000060560 00000 n -0000060828 00000 n -0000060938 00000 n -0000062017 00000 n -0000062127 00000 n -0000062857 00000 n -0000062967 00000 n -0000063948 00000 n -0000064058 00000 n -0000064349 00000 n -0000064459 00000 n -0000065924 00000 n -0000066034 00000 n -0000066359 00000 n -0000066469 00000 n -0000068078 00000 n -0000068188 00000 n -0000068521 00000 n -0000068631 00000 n -0000070017 00000 n -0000070127 00000 n -0000070402 00000 n -0000070512 00000 n -0000071628 00000 n -0000071754 00000 n -0000071799 00000 n -0000071970 00000 n -0000072164 00000 n -0000072384 00000 n -0000072763 00000 n -0000091056 00000 n -0000091110 00000 n -0000072873 00000 n -0000091176 00000 n -0000073077 00000 n -0000073278 00000 n -0000073420 00000 n -0000073698 00000 n -0000073825 00000 n -0000073985 00000 n -0000074234 00000 n -0000074397 00000 n -0000074530 00000 n -0000074675 00000 n -0000074982 00000 n -0000075281 00000 n -0000075420 00000 n -0000075574 00000 n -0000075689 00000 n -0000076025 00000 n -0000076305 00000 n -0000076450 00000 n -0000076731 00000 n -0000091242 00000 n -0000076945 00000 n -0000077079 00000 n -0000077211 00000 n -0000077442 00000 n -0000077598 00000 n -0000077792 00000 n -0000077941 00000 n -0000078172 00000 n -0000078304 00000 n -0000078463 00000 n -0000078645 00000 n -0000078839 00000 n -0000079039 00000 n -0000079204 00000 n -0000079342 00000 n -0000079527 00000 n -0000079748 00000 n -0000079960 00000 n -0000080172 00000 n -0000080389 00000 n -0000080578 00000 n -0000080755 00000 n -0000080979 00000 n -0000081191 00000 n -0000081391 00000 n -0000081573 00000 n -0000081801 00000 n -0000082002 00000 n -0000082176 00000 n -0000082361 00000 n -0000082565 00000 n -0000082772 00000 n -0000082944 00000 n -0000083116 00000 n -0000083376 00000 n -0000083624 00000 n -0000083846 00000 n -0000084112 00000 n -0000084269 00000 n -0000084488 00000 n -0000084692 00000 n -0000084978 00000 n -0000085141 00000 n -0000085269 00000 n -0000085403 00000 n -0000085517 00000 n -0000085628 00000 n -0000085744 00000 n -0000085853 00000 n -0000085965 00000 n -0000086086 00000 n +0000001516 00000 n +0000001622 00000 n +0000001783 00000 n +0000001890 00000 n +0000003918 00000 n +0000004041 00000 n +0000004442 00000 n +0000086978 00000 n +0000004578 00000 n +0000087044 00000 n +0000004714 00000 n +0000087110 00000 n +0000004850 00000 n +0000087178 00000 n +0000004986 00000 n +0000087246 00000 n +0000005122 00000 n +0000087314 00000 n +0000005258 00000 n +0000087382 00000 n +0000005394 00000 n +0000087450 00000 n +0000005530 00000 n +0000087516 00000 n +0000005666 00000 n +0000087582 00000 n +0000005802 00000 n +0000087650 00000 n +0000005938 00000 n +0000087718 00000 n +0000006074 00000 n +0000087786 00000 n +0000006210 00000 n +0000087854 00000 n +0000006346 00000 n +0000087922 00000 n +0000006482 00000 n +0000087989 00000 n +0000006618 00000 n +0000088057 00000 n +0000006754 00000 n +0000088125 00000 n +0000006890 00000 n +0000088184 00000 n +0000007026 00000 n +0000088250 00000 n +0000007162 00000 n +0000088318 00000 n +0000007298 00000 n +0000088384 00000 n +0000007434 00000 n +0000088450 00000 n +0000007570 00000 n +0000088516 00000 n +0000007706 00000 n +0000088584 00000 n +0000007842 00000 n +0000088650 00000 n +0000007978 00000 n +0000088716 00000 n +0000008114 00000 n +0000088782 00000 n +0000008250 00000 n +0000088848 00000 n +0000008385 00000 n +0000088914 00000 n +0000008521 00000 n +0000088980 00000 n +0000008657 00000 n +0000089046 00000 n +0000008792 00000 n +0000089114 00000 n +0000008928 00000 n +0000089180 00000 n +0000009064 00000 n +0000089246 00000 n +0000009200 00000 n +0000089312 00000 n +0000009336 00000 n +0000089378 00000 n +0000009472 00000 n +0000089444 00000 n +0000009607 00000 n +0000089510 00000 n +0000009743 00000 n +0000089576 00000 n +0000009879 00000 n +0000089642 00000 n +0000010015 00000 n +0000089708 00000 n +0000010151 00000 n +0000089774 00000 n +0000010287 00000 n +0000089840 00000 n +0000010425 00000 n +0000089907 00000 n +0000010563 00000 n +0000089974 00000 n +0000010701 00000 n +0000090043 00000 n +0000010839 00000 n +0000090110 00000 n +0000010977 00000 n +0000090177 00000 n +0000011115 00000 n +0000090244 00000 n +0000011253 00000 n +0000090311 00000 n +0000011390 00000 n +0000090378 00000 n +0000011526 00000 n +0000090445 00000 n +0000011662 00000 n +0000012261 00000 n +0000012387 00000 n +0000012472 00000 n +0000090512 00000 n +0000012606 00000 n +0000090579 00000 n +0000012740 00000 n +0000090646 00000 n +0000012874 00000 n +0000090713 00000 n +0000013008 00000 n +0000090780 00000 n +0000013142 00000 n +0000090847 00000 n +0000013276 00000 n +0000090916 00000 n +0000013410 00000 n +0000090985 00000 n +0000013544 00000 n +0000014202 00000 n +0000014312 00000 n +0000016361 00000 n +0000016471 00000 n +0000017647 00000 n +0000017757 00000 n +0000020163 00000 n +0000020273 00000 n +0000020731 00000 n +0000020841 00000 n +0000021397 00000 n +0000021507 00000 n +0000022403 00000 n +0000022513 00000 n +0000023795 00000 n +0000023905 00000 n +0000024953 00000 n +0000025063 00000 n +0000025883 00000 n +0000025993 00000 n +0000027182 00000 n +0000027292 00000 n +0000027672 00000 n +0000027782 00000 n +0000029572 00000 n +0000029682 00000 n +0000030003 00000 n +0000030113 00000 n +0000031248 00000 n +0000031358 00000 n +0000032299 00000 n +0000032409 00000 n +0000033314 00000 n +0000033424 00000 n +0000034184 00000 n +0000034294 00000 n +0000035495 00000 n +0000035605 00000 n +0000035930 00000 n +0000036040 00000 n +0000037018 00000 n +0000037128 00000 n +0000037522 00000 n +0000037632 00000 n +0000038681 00000 n +0000038791 00000 n +0000039475 00000 n +0000039585 00000 n +0000040937 00000 n +0000041047 00000 n +0000041963 00000 n +0000042073 00000 n +0000042771 00000 n +0000042881 00000 n +0000044001 00000 n +0000044111 00000 n +0000044436 00000 n +0000044546 00000 n +0000045715 00000 n +0000045825 00000 n +0000046924 00000 n +0000047034 00000 n +0000047814 00000 n +0000047924 00000 n +0000048668 00000 n +0000048778 00000 n +0000049293 00000 n +0000049403 00000 n +0000051045 00000 n +0000051155 00000 n +0000051496 00000 n +0000051606 00000 n +0000053042 00000 n +0000053152 00000 n +0000053843 00000 n +0000053953 00000 n +0000056045 00000 n +0000056155 00000 n +0000056524 00000 n +0000056634 00000 n +0000057438 00000 n +0000057548 00000 n +0000058356 00000 n +0000058466 00000 n +0000059207 00000 n +0000059317 00000 n +0000060446 00000 n +0000060556 00000 n +0000060824 00000 n +0000060934 00000 n +0000062013 00000 n +0000062123 00000 n +0000062853 00000 n +0000062963 00000 n +0000063944 00000 n +0000064054 00000 n +0000064345 00000 n +0000064455 00000 n +0000065920 00000 n +0000066030 00000 n +0000066355 00000 n +0000066465 00000 n +0000068074 00000 n +0000068184 00000 n +0000068517 00000 n +0000068627 00000 n +0000070013 00000 n +0000070123 00000 n +0000070398 00000 n +0000070508 00000 n +0000071624 00000 n +0000071750 00000 n +0000071795 00000 n +0000071966 00000 n +0000072160 00000 n +0000072380 00000 n +0000072759 00000 n +0000091052 00000 n +0000091106 00000 n +0000072869 00000 n +0000091172 00000 n +0000073073 00000 n +0000073274 00000 n +0000073416 00000 n +0000073694 00000 n +0000073821 00000 n +0000073981 00000 n +0000074230 00000 n +0000074393 00000 n +0000074526 00000 n +0000074671 00000 n +0000074978 00000 n +0000075277 00000 n +0000075416 00000 n +0000075570 00000 n +0000075685 00000 n +0000076021 00000 n +0000076301 00000 n +0000076446 00000 n +0000076727 00000 n +0000091238 00000 n +0000076941 00000 n +0000077075 00000 n +0000077207 00000 n +0000077438 00000 n +0000077594 00000 n +0000077788 00000 n +0000077937 00000 n +0000078168 00000 n +0000078300 00000 n +0000078459 00000 n +0000078641 00000 n +0000078835 00000 n +0000079035 00000 n +0000079200 00000 n +0000079338 00000 n +0000079523 00000 n +0000079744 00000 n +0000079956 00000 n +0000080168 00000 n +0000080385 00000 n +0000080574 00000 n +0000080751 00000 n +0000080975 00000 n +0000081187 00000 n +0000081387 00000 n +0000081569 00000 n +0000081797 00000 n +0000081998 00000 n +0000082172 00000 n +0000082357 00000 n +0000082561 00000 n +0000082768 00000 n +0000082940 00000 n +0000083112 00000 n +0000083372 00000 n +0000083620 00000 n +0000083842 00000 n +0000084108 00000 n +0000084265 00000 n +0000084484 00000 n +0000084688 00000 n +0000084974 00000 n +0000085137 00000 n +0000085265 00000 n +0000085399 00000 n +0000085513 00000 n +0000085624 00000 n +0000085740 00000 n +0000085849 00000 n +0000085961 00000 n +0000086082 00000 n trailer << /Size 332 @@ -2974,5 +2974,5 @@ trailer /Info 4 0 R >> startxref -91311 +91307 %%EOF diff --git a/src/objects.lisp b/src/objects.lisp index f154990..940c941 100644 --- a/src/objects.lisp +++ b/src/objects.lisp @@ -128,25 +128,21 @@ an array of TYPE with size SIZE. The TYPE parameter is evaluated." #+mcl (defsetf deref-pointer deref-pointer-set) -#+lispworks (defmacro ensure-char-character (obj) + #+(or (and mcl (not openmcl))) obj + #+(or allegro cmu sbcl scl openmcl) `(code-char ,obj) + ;; lispworks varies whether deref'ing array vs. slot access of a char + #+lispworks `(if (characterp ,obj) ,obj (code-char ,obj))) - -#+(and mcl (not openmcl)) -(defmacro ensure-char-character (obj) - obj) - -#+(or allegro cmu sbcl scl openmcl) -(defmacro ensure-char-character (obj) - `(code-char ,obj)) -#+(or lispworks (and mcl (not openmcl))) (defmacro ensure-char-integer (obj) - `(char-code ,obj)) + #+(or (and mcl (not openmcl))) `(char-code ,obj) + #+(or allegro cmu sbcl scl openmcl) obj + `(if (characterp ,obj) (char-code ,obj) ,obj)) -#+(or allegro cmu sbcl scl openmcl) -(defmacro ensure-char-integer (obj) - obj) +(defmacro ensure-char-storable (obj) + #+(or lispworks (and mcl (not openmcl))) obj + #+(or allegro cmu sbcl scl openmcl) `(char-code ,obj)) (defmacro pointer-address (obj) #+(or cmu scl) diff --git a/src/package.lisp b/src/package.lisp index 4744635..3c22730 100644 --- a/src/package.lisp +++ b/src/package.lisp @@ -45,6 +45,7 @@ #:deref-pointer #:ensure-char-character #:ensure-char-integer + #:ensure-char-storable #:null-pointer-p #:make-null-pointer #:make-pointer diff --git a/src/strings.lisp b/src/strings.lisp index 0f01e97..89c41b2 100644 --- a/src/strings.lisp +++ b/src/strings.lisp @@ -157,10 +157,11 @@ that LW/CMU automatically converts strings from c-calls." nil (if (eq ,locale :none) (fast-native-to-string ,obj ,length) - (excl:native-to-string - ,obj - ,@(when length (list :length length)) - :truncate (not ,null-terminated-p)))) + (values + (excl:native-to-string + ,obj + ,@(when length (list :length length)) + :truncate (not ,null-terminated-p))))) #+lispworks `(if (fli:null-pointer-p ,obj) nil diff --git a/tests/pointers.lisp b/tests/pointers.lisp index 6af7f79..495fdcd 100644 --- a/tests/pointers.lisp +++ b/tests/pointers.lisp @@ -18,24 +18,39 @@ (deftest chptr.1 (let ((native-string "test string")) (uffi:with-foreign-string (fs native-string) - (characterp - (ensure-char-character - (deref-pointer fs :char))))) - t) + (ensure-char-character + (deref-pointer fs :char)))) + #\t) (deftest chptr.2 (let ((native-string "test string")) (uffi:with-foreign-string (fs native-string) - (characterp - (ensure-char-character - (deref-pointer fs :unsigned-char))))) - t) + (ensure-char-character + (deref-pointer fs :unsigned-char)))) + #\t) (deftest chptr.3 + (let ((native-string "test string")) + (uffi:with-foreign-string (fs native-string) + (ensure-char-integer + (deref-pointer fs :unsigned-char)))) + 116) + +(deftest chptr.4 (let ((native-string "test string")) (uffi:with-foreign-string (fs native-string) (numberp (deref-pointer fs :byte)))) t) - +(deftest chptr.5 + (let ((fs (uffi:allocate-foreign-object :unsigned-char 128))) + (setf (uffi:deref-array fs '(:array :unsigned-char) 0) + (uffi:ensure-char-storable #\a)) + (setf (uffi:deref-array fs '(:array :unsigned-char) 1) + (uffi:ensure-char-storable (code-char 0))) + (uffi:convert-from-foreign-string fs)) + "a") + + + diff --git a/tests/union.lisp b/tests/union.lisp index 4268b91..86e8627 100644 --- a/tests/union.lisp +++ b/tests/union.lisp @@ -35,12 +35,18 @@ (* 256 (char-code #\C)) (* 1 128))) -(deftest union.1 (uffi:ensure-char-character - (uffi:get-slot-value *u* 'tunion1 'char)) #\A) +(deftest union.1 + (uffi:ensure-char-character + (uffi:get-slot-value *u* 'tunion1 'char)) + #\A) + +(deftest union.2 + (uffi:ensure-char-integer + (uffi:get-slot-value *u* 'tunion1 'char)) + 65) #-(or sparc sparc-v9 mcl) -(deftest union.2 (plusp (uffi:get-slot-value *u* 'tunion1 'uint)) t) +(deftest union.3 (plusp (uffi:get-slot-value *u* 'tunion1 'uint)) t) -;; (uffi:free-foreign-object u)) -- 2.34.1