s/BenchmarkParameter.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 12 Feb 2020 15:09:57 +0000
changeset 318 1b735d3747d8
parent 285 0cf54ee76de5
permissions -rw-r--r--
Use launcher script to run smalltalk ...rather than binary. This makes it work in both, in-tree builds and (new) out-of-tree builds.

"{ Package: 'jv:calipel/s' }"

"{ NameSpace: Smalltalk }"

Object subclass:#BenchmarkParameter
	instanceVariableNames:'name type default values'
	classVariableNames:'UndefinedValue'
	poolDictionaries:''
	category:'CalipeL-S-Core'
!


!BenchmarkParameter class methodsFor:'initialization'!

initialize
    "Invoked at system start or when the class is dynamically loaded."

    UndefinedValue := Object new.

    "Modified: / 30-07-2013 / 23:31:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    "Modified (comment): / 01-08-2013 / 18:39:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!BenchmarkParameter class methodsFor:'instance creation'!

name:nameArg type:typeArg default:defaultArg values:valuesArg
    ^ self new name:nameArg type:typeArg default:defaultArg values:valuesArg
! !

!BenchmarkParameter class methodsFor:'accessing'!

undefinedValue
    ^ UndefinedValue

    "Created: / 30-07-2013 / 23:31:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!BenchmarkParameter methodsFor:'accessing'!

default
    ^ default
!

default:anObject
    default := anObject.
!

getter
    ^ self name

    "Created: / 27-07-2013 / 11:32:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

name
    ^ name
!

name:aString
    name := aString.
!

name:nameArg type:typeArg default:defaultArg values:valuesArg 
    name := nameArg.
    type := typeArg.
    default := defaultArg.
    values := valuesArg.
!

setter
    ^ (self name , ':') asSymbol

    "Created: / 27-07-2013 / 11:32:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

type
    ^ type
!

type:aClass
    type := aClass.
!

values
    ^ values
!

values:anArray
    values := anArray.
! !

!BenchmarkParameter methodsFor:'get / set'!

set: value in: instance
    | setter |

    values notNil ifTrue:[
        (values includes: value) ifFalse:[
            "JV: Note for Smalltalk/X: #signal: is actually an ANSI 1.9 protocol!!"
            BenchmarkParameterError new signal:'Invalid parameter value for ', name , ' (' , value storeString ,')'.
        ].
    ].
    setter := self setter.
    (instance respondsTo: setter) ifFalse:[
        BenchmarkParameterError new signal:'Cannot set parameter ', name , ' (' ,instance class name , ' does not respond to ', setter storeString , ')'.
    ].
    [
        instance perform: setter with: value
    ] on: Error do:[:ex|
        BenchmarkParameterError new signal:'Cannot set parameter ', name , ' (', ex description , ')'
    ]

    "Created: / 27-07-2013 / 11:43:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!BenchmarkParameter methodsFor:'printing & storing'!

printOn:aStream
    "append a printed representation if the receiver to the argument, aStream"

    name printOn: aStream.
    aStream nextPutAll:' ['.
    type printOn: aStream.
    aStream nextPutAll:']'.

    "Modified: / 01-08-2013 / 18:52:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!BenchmarkParameter class methodsFor:'documentation'!

version_HG

    ^ '$Changeset: <not expanded> $'
! !


BenchmarkParameter initialize!