GDBPropertyDescriptor.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 18 Jun 2014 10:50:49 +0100
changeset 16 a5a8c0454395
permissions -rw-r--r--
Work in progress - object descriptors

"{ Package: 'jv:libgdbs' }"

Object subclass:#GDBPropertyDescriptor
	instanceVariableNames:'name klass'
	classVariableNames:''
	poolDictionaries:''
	category:'GDB-Core-Descriptors'
!

!GDBPropertyDescriptor class methodsFor:'instance creation'!

name: aString class: aClass

    (aClass inheritsFrom: CharacterArray) ifTrue:[ 
        ^ GDBStringPropertyDescriptor new initializeWithName: aString class: aClass.
    ].
    (aClass inheritsFrom: Integer) ifTrue:[ 
        ^ GDBIntegerPropertyDescriptor new initializeWithName: aString class: aClass.
    ].
    (aClass inheritsFrom: Boolean) ifTrue:[ 
        ^ GDBBooleanPropertyDescriptor new initializeWithName: aString class: aClass.
    ].
    (aClass inheritsFrom: GDBObject) ifTrue:[ 
        ^ GDBObjectPropertyDescriptor new initializeWithName: aString class: aClass.
    ].
    (aClass inheritsFrom: GDBEvent) ifTrue:[ 
        ^ GDBObjectPropertyDescriptor new initializeWithName: aString class: aClass.
    ].
    ^ GDBPrimitivePropertyDescriptor new initializeWithName: aString class: aClass.

    "Created: / 18-06-2014 / 10:03:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!GDBPropertyDescriptor class methodsFor:'queries'!

isAbstract
    "Return if this class is an abstract class.
     True is returned here for myself only; false for subclasses.
     Abstract subclasses must redefine again."

    ^ self == GDBPropertyDescriptor.
! !

!GDBPropertyDescriptor methodsFor:'accessing'!

get: object
    ^ object perform: name asSymbol

    "Created: / 17-06-2014 / 22:02:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

set: object to: value
    ^ object perform: (name asSymbol , ':') asSymbol with: value

    "Created: / 17-06-2014 / 22:08:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!GDBPropertyDescriptor methodsFor:'initialization'!

initializeWithName: aString class: aClass
    name := aString.
    klass := aClass.

    "Created: / 18-06-2014 / 10:04:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!GDBPropertyDescriptor methodsFor:'parsing'!

parseUsingParser: aGDBParser
    self subclassResponsibility

    "Created: / 18-06-2014 / 10:36:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !