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

View File

@ -133,7 +133,16 @@ public class ExternalFactor extends VocabularyLookup
int responseLength = in.readInt(); int responseLength = in.readInt();
byte[] response = new byte[responseLength]; 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"); String responseStr = new String(response,"ASCII");
return responseStr; return responseStr;

View File

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

View File

@ -1,10 +1,5 @@
IN: temporary IN: temporary
USE: namespaces USING: math parser stdio streams strings test ;
USE: parser
USE: streams
USE: test
USE: stdio
USE: math
[ 4 ] [ "/library/test/io/no-trailing-eol.factor" run-resource ] unit-test [ 4 ] [ "/library/test/io/no-trailing-eol.factor" run-resource ] unit-test
@ -52,3 +47,5 @@ USE: math
[ -1 read ] unit-test-fails [ -1 read ] unit-test-fails
[ "" ] [ 0 read ] unit-test [ "" ] [ 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 drop
] ifte ; ] ifte ;
: eof? ( buffer -- ? ) buffer-fill 0 = ;
TUPLE: read-line-task ; TUPLE: read-line-task ;
C: read-line-task ( port -- 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, #! If the buffer is empty and the string is too long,
#! extend the buffer. #! extend the buffer.
dup pending-error dup pending-error
dup eof? >r 2dup buffer-capacity > r> and [ dup eof? [
buffer-extend t 2drop t
] [ ] [
[ buffer-fill + ] keep buffer-capacity <= [ buffer-fill + ] keep buffer-capacity <=
] ifte ; ] ifte ;