Tools__GenericToolbox.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 14 Jun 2018 22:19:39 +0100
branchjv
changeset 18227 d25a407ba86d
parent 17304 3eea1002b141
permissions -rw-r--r--
Mini testrunner: show "green" if there's at least one pass and rest is pass or skip This is more meaningfull result then showing "gray" if there's at least one skip.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
17250
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
     1
"
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
     2
 COPYRIGHT (c) 2014 by eXept Software AG
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
     3
              All Rights Reserved
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
     4
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
     5
 This software is furnished under a license and may be used
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
     6
 only in accordance with the terms of that license and with the
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
     7
 inclusion of the above copyright notice. This software may not
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
     8
 be provided or otherwise made available to, or used by, any
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
     9
 other person. No title to or ownership of the software is
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    10
 hereby transferred.
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    11
"
13996
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
"{ Package: 'stx:libtool' }"
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
"{ NameSpace: Tools }"
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
Toolbox subclass:#GenericToolbox
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
	instanceVariableNames:''
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
	classVariableNames:''
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
	poolDictionaries:''
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
	category:'Interface-Tools'
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
!
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
!GenericToolbox class methodsFor:'documentation'!
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
17250
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    25
copyright
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    26
"
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    27
 COPYRIGHT (c) 2014 by eXept Software AG
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    28
              All Rights Reserved
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    29
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    30
 This software is furnished under a license and may be used
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    31
 only in accordance with the terms of that license and with the
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    32
 inclusion of the above copyright notice. This software may not
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    33
 be provided or otherwise made available to, or used by, any
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    34
 other person. No title to or ownership of the software is
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    35
 hereby transferred.
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    36
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    37
"
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    38
!
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    39
13996
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
documentation
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
"
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
    A generic toolbox for languages that compiles into Smalltalk/X bytecode.
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
    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
    44
    languages, GenericToolbox is a good basis.
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
    A GenericToolbox is also a default toolbox if ProgrammingLanguage does
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
    not specify one.
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
    [author:]
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
        Jan Vrany <jan.vrany@fit.cvut.cz>
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
    [instance variables:]
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
    [class variables:]
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
    [see also:]
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
        Tools::Toolbox
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
        Tools::SmalltalkToolbox
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
        Tools::JavaToolbox
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
        ProgrammingLanguage
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
"
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
! !
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
14025
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    64
!GenericToolbox methodsFor:'accessing-methods'!
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    65
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    66
globalsReferencedByMethods: methods
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    67
    "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
    68
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    69
    | detector globals |
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    70
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    71
    detector := [ :literal :method :recurse | 
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    72
        literal isSymbol ifTrue:[
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    73
            | cls ns |
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
            ns := method mclass nameSpace.
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    76
            (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
    77
                globals add: cls.
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    78
            ] ifFalse:[ 
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    79
                (cls := environment at: literal) notNil ifTrue:[ 
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    80
                    globals add: cls.
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    81
                ].
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    82
            ].
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    83
        ] ifFalse:[ 
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    84
            (recurse and:[ literal isArray ]) ifTrue:[ 
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    85
                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
    86
            ].
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    87
        ].
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    88
    ].
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    89
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    90
    globals := Set new.
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    91
    methods do:[:m |  
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    92
        | recurse |
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    93
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    94
        "/ 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
    95
        "/ literal array when searching for globals, otherwise
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    96
        "/ do not.
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    97
        recurse := m resourceType == #canvas.
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    98
        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
    99
    ].
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
   100
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
   101
    ^ globals.
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
   102
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
   103
    "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
   104
! !
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
   105
13996
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
!GenericToolbox class methodsFor:'documentation'!
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
version
17250
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
   109
    ^ '$Header$'
13996
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
!
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
version_CVS
17250
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
   113
    ^ '$Header$'
13996
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
! !
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115