Tools__GenericToolbox.st
author Stefan Vogel <sv@exept.de>
Fri, 09 May 2014 14:38:32 +0200
changeset 14336 7cd19b453fb3
parent 14025 9214f9d6bf5a
child 15950 23be8cf85415
child 17250 8691e91d072c
permissions -rw-r--r--
Mark program icons with resource
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
13996
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'stx:libtool' }"
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
"{ NameSpace: Tools }"
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
Toolbox subclass:#GenericToolbox
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	instanceVariableNames:''
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	classVariableNames:''
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	poolDictionaries:''
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
	category:'Interface-Tools'
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
!
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
!GenericToolbox class methodsFor:'documentation'!
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
documentation
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
"
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
    A generic toolbox for languages that compiles into Smalltalk/X bytecode.
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
    Although it's a good idea to provide specialized toolbox each of those
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
    languages, GenericToolbox is a good basis.
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
    A GenericToolbox is also a default toolbox if ProgrammingLanguage does
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
    not specify one.
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
    [author:]
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
        Jan Vrany <jan.vrany@fit.cvut.cz>
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
    [instance variables:]
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
    [class variables:]
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
    [see also:]
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
        Tools::Toolbox
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
        Tools::SmalltalkToolbox
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
        Tools::JavaToolbox
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
        ProgrammingLanguage
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
"
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
! !
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
14025
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    38
!GenericToolbox methodsFor:'accessing-methods'!
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    39
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    40
globalsReferencedByMethods: methods
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    41
    "Returns a list of globals (classes) referenced by given methods"
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    42
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    43
    | detector globals |
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    44
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    45
    detector := [ :literal :method :recurse | 
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    46
        literal isSymbol ifTrue:[
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    47
            | cls ns |
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    48
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    49
            ns := method mclass nameSpace.
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    50
            (ns notNil and:[ (cls := environment at: literal) notNil]) ifTrue:[ 
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    51
                globals add: cls.
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    52
            ] ifFalse:[ 
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    53
                (cls := environment at: literal) notNil ifTrue:[ 
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    54
                    globals add: cls.
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    55
                ].
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    56
            ].
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    57
        ] ifFalse:[ 
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    58
            (recurse and:[ literal isArray ]) ifTrue:[ 
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    59
                literal do:[:each | detector value: each value: method value: recurse ].
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    60
            ].
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    61
        ].
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    62
    ].
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    63
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    64
    globals := Set new.
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    65
    methods do:[:m |  
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    66
        | recurse |
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    67
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    68
        "/ If the method is method spec, the do recurse into
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    69
        "/ literal array when searching for globals, otherwise
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    70
        "/ do not.
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    71
        recurse := m resourceType == #canvas.
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    72
        m literalsDo:[:each | detector value: each value: m value: recurse ].
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    73
    ].
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    74
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    75
    ^ globals.
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    76
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    77
    "Created: / 24-02-2014 / 16:25:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    78
! !
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    79
13996
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
!GenericToolbox class methodsFor:'documentation'!
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
version
14025
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    83
    ^ '$Header: /cvs/stx/stx/libtool/Tools__GenericToolbox.st,v 1.2 2014-02-25 10:41:28 vrany Exp $'
13996
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
!
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
version_CVS
14025
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    87
    ^ '$Header: /cvs/stx/stx/libtool/Tools__GenericToolbox.st,v 1.2 2014-02-25 10:41:28 vrany Exp $'
13996
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
! !
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89