SmallSense__ClassInfo.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 09 Jul 2014 12:06:40 +0100
changeset 249 8bc64027b189
parent 174 3e08d765d86f
child 252 feba6ee5c814
permissions -rw-r--r--
Package renamed to stx:goodies/smallsense

"{ Package: 'stx:goodies/smallsense' }"

"{ NameSpace: SmallSense }"

Info subclass:#ClassInfo
	instanceVariableNames:'className methods instvars seqno'
	classVariableNames:''
	poolDictionaries:''
	category:'SmallSense-Smalltalk-Types-Info'
!


!ClassInfo class methodsFor:'instance creation'!

new
    "return an initialized instance"

    ^ self basicNew initialize.
! !

!ClassInfo methodsFor:'accessing'!

className
    ^ className
!

infoForInstvar: ivarName

    ^instvars at: ivarName ifAbsentPut:[
        Type default.
    ]

    "Created: / 27-11-2011 / 16:44:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

infoForInstvarOrNil: ivarName

    ^instvars at: ivarName ifAbsent: nil

    "Created: / 27-11-2011 / 17:15:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

infoForSelector: selector

    ^methods at: selector ifAbsentPut:[
        MethodInfo new setManager: manager classInfo: self selector: selector.

    ]

    "Created: / 27-11-2011 / 16:26:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

infoForSelectorOrNil: selector

    ^methods at: selector ifAbsent:nil

    "Created: / 27-11-2011 / 17:15:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

seqno
    ^ seqno
!

seqno:anInteger
    seqno := anInteger.
!

superclassInfo

    | nm meta cls |

    (className endsWith:' class') ifTrue:[
        nm := (className copyTo: className size - 6) asSymbol.
        meta := true.
    ] ifFalse:[
        nm := className asSymbol.
        meta := false.
    ].
    cls := Smalltalk at: nm.
    cls isNil ifTrue:[ ^ nil ].
    meta ifTrue:[cls := cls theMetaclass].

    ^ manager infoForClass: cls superclass

    "Modified: / 29-11-2011 / 16:02:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!ClassInfo methodsFor:'initialization'!

initialize
    "Invoked when a new instance is created."

    "/ please change as required (and remove this comment)
    "/ superclassInfo := nil.
    "/ className := nil.
    methods := Dictionary new.
    instvars := Dictionary new.

    "/ super initialize.   -- commented since inherited method does nothing

    "Modified: / 27-11-2011 / 16:53:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

setManager: mgr className: nm

    manager := mgr.
    className := nm

    "Created: / 29-11-2011 / 15:57:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!ClassInfo class methodsFor:'documentation'!

version_HG

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

version_SVN
    ^ '$Id: SmallSense__ClassInfo.st,v 1.2 2014/02/12 14:49:29 sr Exp $'
! !