0.74 ready for release

cvs 0.74
Slava Pestov 2005-05-04 05:14:45 +00:00
parent b442096677
commit a24ce9a88c
5 changed files with 43 additions and 30 deletions

View File

@ -2,7 +2,6 @@
- if external factor is down, don't add tons of random shit to the
dictionary
- plugin: type "re" in edit word dialog --> hang
- word preview for parsing words
+ ui:

View File

@ -133,8 +133,17 @@ public class ExternalFactor extends VocabularyLookup
int responseLength = in.readInt();
byte[] response = new byte[responseLength];
in.readFully(response);
int n = 0;
while (n < response.length)
{
int count = in.read(response,n,response.length - n);
if (count < 0)
throw new EOFException();
System.err.println(new String(response,n,count));
n += count;
}
String responseStr = new String(response,"ASCII");
return responseStr;
}

View File

@ -6,27 +6,30 @@ strings ;
TUPLE: buffer size ptr fill pos ;
: imalloc ( size -- address )
"int" "libc" "malloc" [ "ulong" ] alien-invoke ;
: malloc ( size -- address )
"ulong" "libc" "malloc" [ "ulong" ] alien-invoke ;
: ifree ( address -- )
: free ( address -- )
"void" "libc" "free" [ "ulong" ] alien-invoke ;
: irealloc ( address size -- address )
"int" "libc" "realloc" [ "ulong" "ulong" ] alien-invoke ;
: realloc ( address size -- address )
"ulong" "libc" "realloc" [ "ulong" "ulong" ] alien-invoke ;
: imemcpy ( dst src size -- )
: memcpy ( dst src size -- )
"void" "libc" "memcpy" [ "ulong" "ulong" "ulong" ] alien-invoke ;
: check-ptr ( ptr -- ptr )
dup 0 = [ "Out of memory" throw ] when ;
C: buffer ( size -- buffer )
2dup set-buffer-size
swap imalloc swap [ set-buffer-ptr ] keep
swap malloc check-ptr swap [ set-buffer-ptr ] keep
0 swap [ set-buffer-fill ] keep
0 swap [ set-buffer-pos ] keep ;
: buffer-free ( buffer -- )
#! Frees the C memory associated with the buffer.
dup buffer-ptr ifree 0 swap set-buffer-ptr ;
dup buffer-ptr free 0 swap set-buffer-ptr ;
: buffer-contents ( buffer -- string )
#! Returns the current contents of the buffer.
@ -67,22 +70,29 @@ C: buffer ( size -- buffer )
#! Returns the amount of data that may be added to the buffer.
dup buffer-size swap buffer-fill - ;
: eof? ( buffer -- ? ) buffer-fill 0 = ;
: buffer-extend ( length buffer -- )
#! Increases the size of the buffer by length.
2dup buffer-ptr swap realloc check-ptr
over set-buffer-ptr set-buffer-size ;
: check-overflow ( string buffer -- )
buffer-capacity swap length < [
"Buffer overflow" throw
] when ;
over length over buffer-capacity > [
dup eof? [
>r length r> buffer-extend
] [
"Buffer overflow" throw
] ifte
] [
2drop
] ifte ;
: >buffer ( string buffer -- )
2dup check-overflow
[ dup buffer-ptr swap buffer-fill + string>memory ] 2keep
[ buffer-fill swap length + ] keep set-buffer-fill ;
: buffer-extend ( length buffer -- )
#! Increases the size of the buffer by length.
[ buffer-size + dup ] keep [ buffer-ptr swap ] keep
>r irealloc r>
[ set-buffer-ptr ] keep set-buffer-size ;
: n>buffer ( count buffer -- )
#! Increases the fill pointer by count.
[ buffer-fill + ] keep set-buffer-fill ;
@ -97,7 +107,7 @@ C: buffer ( size -- buffer )
: buffer-append ( buffer buffer -- )
#! Append first buffer to second buffer.
2dup buffer-end over buffer-ptr rot buffer-fill imemcpy
2dup buffer-end over buffer-ptr rot buffer-fill memcpy
>r buffer-fill r> n>buffer ;
: buffer-set ( string buffer -- )

View File

@ -1,10 +1,5 @@
IN: temporary
USE: namespaces
USE: parser
USE: streams
USE: test
USE: stdio
USE: math
USING: math parser stdio streams strings test ;
[ 4 ] [ "/library/test/io/no-trailing-eol.factor" run-resource ] unit-test
@ -52,3 +47,5 @@ USE: math
[ -1 read ] unit-test-fails
[ "" ] [ 0 read ] unit-test
[ ] [ "123" write 9000 CHAR: x fill write flush ] unit-test

View File

@ -185,8 +185,6 @@ C: reader ( handle -- reader )
drop
] ifte ;
: eof? ( buffer -- ? ) buffer-fill 0 = ;
TUPLE: read-line-task ;
C: read-line-task ( port -- task )
@ -295,8 +293,8 @@ C: writer ( fd -- writer )
#! If the buffer is empty and the string is too long,
#! extend the buffer.
dup pending-error
dup eof? >r 2dup buffer-capacity > r> and [
buffer-extend t
dup eof? [
2drop t
] [
[ buffer-fill + ] keep buffer-capacity <=
] ifte ;