VirtualDictionary.st
author Claus Gittinger <cg@exept.de>
Tue, 18 Dec 2018 12:52:15 +0100
changeset 4777 b22943151ce0
parent 4549 a9d2d65fda08
child 5387 64a6ef96c06f
permissions -rw-r--r--
#DOCUMENTATION by cg class: ZipStream class comment/format in: #compress:into: #uncompress:into:

"{ Encoding: utf8 }"

"{ Package: 'stx:libbasic2' }"

"{ NameSpace: Smalltalk }"

Collection subclass:#VirtualDictionary
	instanceVariableNames:'fetchBlock'
	classVariableNames:''
	poolDictionaries:''
	category:'Collections-Unordered'
!

!VirtualDictionary class methodsFor:'documentation'!

documentation
"
    a collection which looks like a (read-only) dictionary to the outside,
    but invokes a pluggable fetchBlock to retrieve keys.

    [author:]
        cg

    [instance variables:]

    [class variables:]

    [see also:]

"
! !

!VirtualDictionary methodsFor:'accessing'!

at:aKey
    ^ self at:aKey ifAbsent:nil
!

at:aKey ifAbsent:exceptionValue
    |value|

    value := fetchBlock value:aKey.
    value isNil ifTrue:[
        ^ exceptionValue value
    ].
    ^ value
!

fetchBlock:something
    fetchBlock := something.
! !

!VirtualDictionary methodsFor:'queries'!

includesKey:aKey
    ^ (fetchBlock value:aKey) notNil
! !

!VirtualDictionary class methodsFor:'documentation'!

version
    ^ '$Header$'
!

version_CVS
    ^ '$Header$'
! !