version 1.10, 2007/10/17 15:50:01
|
version 1.16, 2011/09/01 20:09:23
|
Line 1
|
Line 1
|
\ extended characters (either 8bit or UTF-8, possibly other encodings) |
\ extended characters (either 8bit or UTF-8, possibly other encodings) |
\ and their fixed-size variant |
\ and their fixed-size variant |
|
|
\ Copyright (C) 2005,2006 Free Software Foundation, Inc. |
\ Copyright (C) 2005,2006,2007,2008 Free Software Foundation, Inc. |
|
|
\ This file is part of Gforth. |
\ This file is part of Gforth. |
|
|
\ Gforth is free software; you can redistribute it and/or |
\ Gforth is free software; you can redistribute it and/or |
\ modify it under the terms of the GNU General Public License |
\ modify it under the terms of the GNU General Public License |
\ as published by the Free Software Foundation; either version 2 |
\ as published by the Free Software Foundation, either version 3 |
\ of the License, or (at your option) any later version. |
\ of the License, or (at your option) any later version. |
|
|
\ This program is distributed in the hope that it will be useful, |
\ This program is distributed in the hope that it will be useful, |
Line 16
|
Line 16
|
\ GNU General Public License for more details. |
\ GNU General Public License for more details. |
|
|
\ You should have received a copy of the GNU General Public License |
\ You should have received a copy of the GNU General Public License |
\ along with this program; if not, write to the Free Software |
\ along with this program. If not, see http://www.gnu.org/licenses/. |
\ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. |
|
|
|
\ We can do some of these (and possibly faster) by just using the |
\ We can do some of these (and possibly faster) by just using the |
\ utf-8 words with an appropriate setting of max-single-byte, but I |
\ utf-8 words with an appropriate setting of max-single-byte, but I |
Line 48 Defer x\string- ( xc-addr1 u1 -- xc-addr
|
Line 47 Defer x\string- ( xc-addr1 u1 -- xc-addr
|
\G last xchar in the buffer. |
\G last xchar in the buffer. |
Defer xc@ ( xc-addr -- xc ) \ xchar-ext xc-fetch |
Defer xc@ ( xc-addr -- xc ) \ xchar-ext xc-fetch |
\G Fetchs the xchar @var{xc} at @var{xc-addr1}. |
\G Fetchs the xchar @var{xc} at @var{xc-addr1}. |
|
Defer xc!+ ( xc xc-addr1 -- xc-addr2 ) \ xchar-ext xc-store |
|
\G Stores the xchar @var{xc} at @var{xc-addr1}. @var{xc-addr2} is the next |
|
\G unused address in the buffer. |
Defer xc!+? ( xc xc-addr1 u1 -- xc-addr2 u2 f ) \ xchar-ext xc-store-plus-query |
Defer xc!+? ( xc xc-addr1 u1 -- xc-addr2 u2 f ) \ xchar-ext xc-store-plus-query |
\G Stores the xchar @var{xc} into the buffer starting at address |
\G Stores the xchar @var{xc} into the buffer starting at address |
\G @var{xc-addr1}, @var{u1} pchars large. @var{xc-addr2} points to the |
\G @var{xc-addr1}, @var{u1} pchars large. @var{xc-addr2} points to the |
Line 83 Defer -trailing-garbage ( xc-addr u1 --
|
Line 85 Defer -trailing-garbage ( xc-addr u1 --
|
over >r +x/string |
over >r +x/string |
r> xc@ ; |
r> xc@ ; |
|
|
Create xholdbuf 8 allot |
|
: xhold ( xc -- ) |
: xhold ( xc -- ) |
\G Put xc into the pictured numeric output |
\G Put xc into the pictured numeric output |
xholdbuf 8 xc!+? 2drop |
dup xc-size negate chars holdptr +! |
BEGIN 1- dup xholdbuf u>= WHILE dup c@ hold REPEAT drop ; |
holdptr @ dup holdbuf u< -&17 and throw |
|
8 xc!+? 2drop drop ; |
|
|
|
: xc, ( xchar -- ) here unused xc!+? 2drop dp ! ; |
|
|
\ fixed-size versions of these words |
\ fixed-size versions of these words |
|
|