new accessors

db4
Doug Coleman 2008-08-30 20:38:07 -05:00
parent 6fe6475cce
commit 6bd16d7f9f
4 changed files with 23 additions and 23 deletions

View File

@ -3,7 +3,7 @@
USING: arrays asn1.ldap assocs byte-arrays combinators USING: arrays asn1.ldap assocs byte-arrays combinators
continuations io io.binary io.streams.string kernel math continuations io io.binary io.streams.string kernel math
math.parser namespaces pack strings sequences ; math.parser namespaces pack strings sequences accessors ;
IN: asn1 IN: asn1
@ -48,16 +48,12 @@ SYMBOL: elements
TUPLE: element syntax id tag tagclass encoding contentlength newobj objtype ; TUPLE: element syntax id tag tagclass encoding contentlength newobj objtype ;
: <element> ( -- element ) element new ;
: set-id ( -- boolean )
read1 dup elements get set-element-id ;
: get-id ( -- id ) : get-id ( -- id )
elements get element-id ; elements get id>> ;
: (set-tag) ( -- ) : (set-tag) ( -- )
elements get element-id 31 bitand elements get id>> 31 bitand
dup elements get set-element-tag dup elements get set-element-tag
31 < [ 31 < [
[ "unsupported tag encoding: #{" % [ "unsupported tag encoding: #{" %
@ -81,14 +77,14 @@ TUPLE: element syntax id tag tagclass encoding contentlength newobj objtype ;
] unless elements get set-element-contentlength ; ] unless elements get set-element-contentlength ;
: set-newobj ( -- ) : set-newobj ( -- )
elements get element-contentlength read elements get contentlength>> read
elements get set-element-newobj ; elements get set-element-newobj ;
: set-objtype ( syntax -- ) : set-objtype ( syntax -- )
builtin-syntax 2array [ builtin-syntax 2array [
elements get element-tagclass swap at elements get tagclass>> swap at
elements get element-encoding swap at elements get encoding>> swap at
elements get element-tag elements get tag>>
swap at [ swap at [
elements get set-element-objtype elements get set-element-objtype
] when* ] when*
@ -99,7 +95,7 @@ DEFER: read-ber
SYMBOL: end SYMBOL: end
: (read-array) ( -- ) : (read-array) ( -- )
elements get element-id [ elements get id>> [
elements get element-syntax read-ber elements get element-syntax read-ber
dup end = [ drop ] [ , (read-array) ] if dup end = [ drop ] [ , (read-array) ] if
] when ; ] when ;
@ -115,9 +111,13 @@ SYMBOL: end
{ "array" [ "" or [ read-array ] with-string-reader ] } { "array" [ "" or [ read-array ] with-string-reader ] }
} case ; } case ;
: set-id ( -- boolean )
read1 dup elements get set-element-id ;
: read-ber ( syntax -- object ) : read-ber ( syntax -- object )
<element> elements set element new
elements get set-element-syntax swap >>syntax
elements set
set-id [ set-id [
(set-tag) (set-tag)
set-tagclass set-tagclass

View File

@ -1,4 +1,4 @@
USING: math kernel debugger ; USING: accessors math kernel debugger ;
IN: benchmark.fib4 IN: benchmark.fib4
TUPLE: box i ; TUPLE: box i ;
@ -6,15 +6,15 @@ TUPLE: box i ;
C: <box> box C: <box> box
: tuple-fib ( m -- n ) : tuple-fib ( m -- n )
dup box-i 1 <= [ dup i>> 1 <= [
drop 1 <box> drop 1 <box>
] [ ] [
box-i 1- <box> i>> 1- <box>
dup tuple-fib dup tuple-fib
swap swap
box-i 1- <box> i>> 1- <box>
tuple-fib tuple-fib
swap box-i swap box-i + <box> swap i>> swap i>> + <box>
] if ; ] if ;
: fib-main ( -- ) T{ box f 34 } tuple-fib T{ box f 9227465 } assert= ; : fib-main ( -- ) T{ box f 34 } tuple-fib T{ box f 9227465 } assert= ;

View File

@ -1,9 +1,9 @@
USING: math kernel ; USING: math kernel accessors ;
IN: benchmark.typecheck1 IN: benchmark.typecheck1
TUPLE: hello n ; TUPLE: hello n ;
: foo ( obj -- obj n ) 0 100000000 [ over hello-n + ] times ; : foo ( obj -- obj n ) 0 100000000 [ over n>> + ] times ;
: typecheck-main ( -- ) 0 hello boa foo 2drop ; : typecheck-main ( -- ) 0 hello boa foo 2drop ;

View File

@ -2,7 +2,7 @@ USING: arrays combinators kernel lists math math.parser
namespaces parser lexer parser-combinators parser-combinators.simple namespaces parser lexer parser-combinators parser-combinators.simple
promises quotations sequences combinators.lib strings math.order promises quotations sequences combinators.lib strings math.order
assocs prettyprint.backend memoize unicode.case unicode.categories assocs prettyprint.backend memoize unicode.case unicode.categories
combinators.short-circuit ; combinators.short-circuit accessors ;
USE: io USE: io
IN: regexp IN: regexp
@ -277,7 +277,7 @@ TUPLE: regexp source parser ignore-case? ;
: match-head ( string regexp -- end ) : match-head ( string regexp -- end )
do-ignore-case regexp-parser parse dup nil? do-ignore-case regexp-parser parse dup nil?
[ drop f ] [ car parse-result-unparsed slice-from ] if ; [ drop f ] [ car parse-result-unparsed from>> ] if ;
! Literal syntax for regexps ! Literal syntax for regexps
: parse-options ( string -- ? ) : parse-options ( string -- ? )