add s:dedup, use it for user loaded extensions; begin using it in system extensions
FossilOrigin-Name: 0dbd909ec255a66290c0b0813addeebe61626aac2b43f62d9c00c6fa5a3aae61
This commit is contained in:
parent
f8fe4b98a6
commit
b3ba2ba20f
5 changed files with 721 additions and 688 deletions
|
@ -5,4 +5,24 @@ String deduplication for RetroForth.
|
|||
(c) Arland Childers
|
||||
|
||||
~~~
|
||||
'init s:keep fll:create 's:dedup.data var-n
|
||||
|
||||
{{
|
||||
't1 var
|
||||
't2 var
|
||||
---reveal---
|
||||
:s:dedup.register (s-)
|
||||
s:keep @s:dedup.data swap &fll:append/value sip ;
|
||||
:s:dedup.defined? (s-f)
|
||||
!t1 #0 !t2
|
||||
@s:dedup.data [ @t1 s:eq? @t2 or !t2 ] fll:for-each @t2 ;
|
||||
:s:dedup.find (s-s)
|
||||
!t1 #0 !t2
|
||||
@s:dedup.data [ dup @t1 s:eq? [ !t2 ] [ drop ] choose ]
|
||||
fll:for-each @t2 ;
|
||||
:s:dedup (s-s)
|
||||
dup s:dedup.defined? [ s:dedup.find ] [ s:dedup.register ]
|
||||
choose ;
|
||||
:s:unique? (s-f) s:dedup.defined? ;
|
||||
}}
|
||||
~~~
|
||||
|
|
|
@ -29,8 +29,9 @@
|
|||
:ffi:invoke (n-)
|
||||
#2 ffi:operation ;
|
||||
|
||||
'interface/ffi.retro s:keep
|
||||
'interface/ffi.retro s:dedup
|
||||
dup 'ffi:operation d:lookup d:source store
|
||||
dup 'ffi:open d:lookup d:source store
|
||||
dup 'ffi:map-sym d:lookup d:source store
|
||||
dup 'ffi:invoke d:lookup d:source store
|
||||
drop
|
||||
|
|
|
@ -167,7 +167,7 @@ once for each line in a file. This makes some things trivial. E.g., a simple
|
|||
## d:source
|
||||
|
||||
~~~
|
||||
'interface/filesystem.retro s:keep
|
||||
'interface/filesystem.retro s:dedup
|
||||
dup 'file:spew d:lookup d:source store
|
||||
dup 'file:slurp d:lookup d:source store
|
||||
dup 'file:for-each-line d:lookup d:source store
|
||||
|
|
|
@ -10,5 +10,5 @@ best approach on their host system.
|
|||
dup n:negative? [ drop 'Error:_device_(0010)_not_found s:put nl ] if;
|
||||
io:invoke ;
|
||||
|
||||
'interface/rng.retro s:keep d:last d:source store
|
||||
'interface/rng.retro s:dedup d:last d:source store
|
||||
~~~
|
||||
|
|
1382
vm/nga-c/image.c
1382
vm/nga-c/image.c
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue