s/BenchmarkParameter.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 21 Mar 2016 13:15:35 +0100
changeset 314 9ac0be200068
parent 285 0cf54ee76de5
permissions -rw-r--r--
CI: Added CI scripts for Pharo ...to make Jenkins setup easier. To run CalipeL/S tests on Pharo, simply execute: wget -O "ci-pharo-common.sh" https://bitbucket.org/janvrany/jv-calipel/raw/tip/s/pharo/ci/ci-pharo-tests.sh | bash -x To run standard set ob benchmarks on Pharo, run wget -O "ci-pharo-common.sh" https://bitbucket.org/janvrany/jv-calipel/raw/tip/s/pharo/ci/ci-pharo-benchmarks.sh | bash -x

"{ 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!