SystemEnvironment.st
author Claus Gittinger <cg@exept.de>
Mon, 20 Aug 2018 10:11:25 +0200
changeset 4346 6604af2f1554
parent 4246 7642b8209662
child 4476 f146c4358780
permissions -rw-r--r--
#OTHER by cg class: FileBasedSourceCodeManager class removed: #version_FileRepository
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3552
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
 New code and modifications done at SWING Research Group [1]:
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
                            SWING Research Group, Czech Technical University in Prague
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
 This software is furnished under a license and may be used
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
 only in accordance with the terms of that license and with the
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
 inclusion of the above copyright notice.   This software may not
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
 be provided or otherwise made available to, or used by, any
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
 other person.  No title to or ownership of the software is
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
 hereby transferred.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
 [1] Code written at SWING Research Group contains a signature
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
     of one of the above copright owners. For exact set of such code,
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
     see the differences between this version and version stx:libjava
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
     as of 1.9.2010
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
"{ Package: 'stx:libbasic3' }"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
3743
c22e2f7e445f class: SystemEnvironment
Claus Gittinger <cg@exept.de>
parents: 3552
diff changeset
    23
"{ NameSpace: Smalltalk }"
c22e2f7e445f class: SystemEnvironment
Claus Gittinger <cg@exept.de>
parents: 3552
diff changeset
    24
3552
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
Object subclass:#SystemEnvironment
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
	instanceVariableNames:''
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
	classVariableNames:''
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
	poolDictionaries:''
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
	category:'Kernel-Classes'
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
!SystemEnvironment class methodsFor:'documentation'!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
copyright
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
 New code and modifications done at SWING Research Group [1]:
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
                            SWING Research Group, Czech Technical University in Prague
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
 This software is furnished under a license and may be used
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
 only in accordance with the terms of that license and with the
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
 inclusion of the above copyright notice.   This software may not
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
 be provided or otherwise made available to, or used by, any
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
 other person.  No title to or ownership of the software is
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
 hereby transferred.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
 [1] Code written at SWING Research Group contains a signature
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
     of one of the above copright owners. For exact set of such code,
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
     see the differences between this version and version stx:libjava
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
     as of 1.9.2010
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
documentation
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
    SystemEnvironment is an abstract base class for 'environments'
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
    An 'environment' is an object that keeps track of classes and
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
    methods and can be asked for those.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
    Its protocol is polymorph with protocol of Smalltalk and NameSpace
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
    classes. I.e., wherever s code uses Smalltalk or NameSpace subclass to
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
    get list of classes and/or methods ic can be interchanged with an 
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
    custom instance SystemEnvironment.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
    To open a browser on given environment do
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
    Tools::NewSystemBrowser new
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
        allButOpen;
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
        environment: customEnvironment;
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
        open.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
    [author:]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
        Jan Vrany <jan.vrany@fit.cvut.cz>
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
    [instance variables:]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
    [class variables:]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
    [see also:]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
        Smalltalk
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
        NameSpace
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
! !
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
3963
e195020d787b #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 3743
diff changeset
    90
!SystemEnvironment class methodsFor:'queries'!
3552
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
isAbstract
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
    ^ self == SystemEnvironment
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
    "Modified: / 13-05-2014 / 10:36:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
! !
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
!SystemEnvironment methodsFor:'accessing'!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
at: key 
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
    ^ self at: key ifAbsent:[nil]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
    "Created: / 03-09-2013 / 17:02:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
at:aString ifAbsent:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
    self allClassesDo:[:cls|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
        cls name = aString ifTrue:[ ^ cls ].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
    ].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
    ^ aBlock value
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
    "Created: / 03-09-2013 / 17:02:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
    "Modified: / 04-09-2013 / 12:53:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
at: key put: value
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
    ^ self shouldNotImplement
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
    "Created: / 03-09-2013 / 17:02:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
    "Modified: / 04-09-2013 / 12:20:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
keys
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
    ^ Iterator on:[ :whatToDo | self allClassesDo: [:cls | whatToDo value: cls name  ] ]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
    "Created: / 22-04-2014 / 12:22:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
! !
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
!SystemEnvironment methodsFor:'enumerating'!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
allBehaviorsDo:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
    "evaluate the argument, aBlock for all classes and metaclasses in the system"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
    self allClassesAndMetaclassesDo:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
     Smalltalk allBehaviorsDo:[:aClass | aClass name printCR]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
allClassCategories
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
    "return a set of all class categories in the system"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
    |allCategories|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
    allCategories := Set new.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
    self allClassesDo:[:cls |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
        |category|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
        category := cls category.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
        category notNil ifTrue:[
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
            allCategories add:category.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
        ].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
    ].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
    ^ allCategories.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
     Smalltalk allClassCategories
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
    "Created: / 17-11-2001 / 12:13:09 / cg"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
    "Modified: / 13-05-2014 / 10:33:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
allClassesAndMetaclassesDo:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
    "evaluate the argument, aBlock for all classes and metaclasses in the system."
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
    |already|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   171
    already := IdentitySet new:NumberOfClassesHint*2.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
    self allClassesDo:[:eachClass |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
	|cls|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
	cls := eachClass theNonMetaclass.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   176
	(already includes:cls) ifFalse:[
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   177
	    aBlock value:cls.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
	    already add:cls.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   179
	].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   180
	cls := cls class.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   181
	(already includes:cls) ifFalse:[
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   182
	    aBlock value:cls.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   183
	    already add:cls.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   184
	].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
    ].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   188
allClassesDo:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   189
    "evaluate the argument, aBlock for all classes in the system."
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   190
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
    self subclassResponsibility
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   193
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   194
     Smalltalk allClassesDo:[:aClass | aClass name printCR]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   196
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   197
    "Modified: / 04-09-2013 / 12:19:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   198
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   199
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   200
allClassesForWhich:filter
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   201
    "return a collection with all classes in the system,
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   202
     for which filter evaluates to true."
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   203
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   204
    |collectedClasses|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   205
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   206
    collectedClasses := OrderedCollection new.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   207
    self allClassesForWhich:filter do:[:cls |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   208
	collectedClasses add:cls
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   209
    ].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   210
    ^ collectedClasses
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   211
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   212
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   213
     Smalltalk
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   214
	allClassesForWhich:[:cls | cls name startsWith:'Po']
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   215
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   216
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   217
    "Created: / 10-08-2006 / 12:11:31 / cg"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   218
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   219
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   220
allClassesForWhich:filter do:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   221
    "evaluate the argument, aBlock for all classes in the system, for which filter evaluates to true."
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   222
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   223
    self allClassesDo:[:cls |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   224
	(filter value:cls) ifTrue:[ aBlock value:cls ].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   225
    ].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   226
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   227
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   228
     Smalltalk
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   229
	allClassesForWhich:[:cls | cls name startsWith:'Po']
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   230
	do:[:aClass | Transcript showCR:aClass name]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   231
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   232
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   233
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   234
allClassesInCategory:aCategory
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   235
    "return a collection of for all classes in aCategory;
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   236
     The order of the classes is not defined."
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   237
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   238
    ^ self allClassesForWhich:[:cls | cls category = aCategory]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   239
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   240
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   241
     Smalltalk allClassesInCategory:'Views-Basic'
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   242
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
    "Modified: / 10-08-2006 / 12:13:32 / cg"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   245
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   246
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
allClassesInCategory:aCategory do:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   248
    "evaluate the argument, aBlock for all classes in the aCategory;
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
     The order of the classes is not defined."
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   250
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   251
    aCategory notNil ifTrue:[
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   252
	self allClassesForWhich:[:cls | cls category = aCategory] do:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   253
    ]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   254
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   255
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   256
     Smalltalk allClassesInCategory:'Views-Basic' do:[:aClass | Transcript showCR:aClass]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   257
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   258
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   259
    "Modified: / 09-08-2006 / 17:18:50 / fm"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   260
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   261
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   262
allClassesInCategory:aCategory inOrderDo:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   263
    "evaluate the argument, aBlock for all classes in aCategory;
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   264
     superclasses come first - then subclasses"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   265
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   266
    |classes|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   267
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   268
    aCategory notNil ifTrue:[
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   269
	classes := OrderedCollection new.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   270
	self allClassesInCategory:aCategory do:[:aClass |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   271
	    classes add:aClass
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   272
	].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   273
	classes topologicalSort:[:a :b | b isSubclassOf:a].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   274
	classes do:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   275
    ]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   276
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   277
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   278
     Smalltalk allClassesInCategory:'Views-Basic' inOrderDo:[:aClass | aClass name printCR]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   279
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   280
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   281
    "Modified: / 17.11.2001 / 12:18:15 / cg"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   282
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   283
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   284
allClassesInOrderDo:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   285
    "evaluate the argument, aBlock for all classes in the system;
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   286
     Evaluation order is by inheritance: superclasses come first."
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   287
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   288
    |already|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   289
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   290
    already := IdentitySet new:NumberOfClassesHint.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   291
    self allClassesDo:[:eachClass |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   292
	(already includes:eachClass) ifFalse:[
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   293
	    eachClass allSuperclasses reverseDo:[:eachSuperClass |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   294
		(already includes:eachSuperClass) ifFalse:[
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   295
		    already add:eachSuperClass.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   296
		    aBlock value:eachSuperClass.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   297
		].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   298
	    ].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   299
	    already add:eachClass.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   300
	    aBlock value:eachClass.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   301
	]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   302
    ].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   303
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   304
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   305
     Smalltalk allClassesInOrderDo:[:aClass | Transcript showCR:aClass name]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   306
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   307
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   308
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   309
allClassesInPackage:aPackageID
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   310
    "evaluate the argument, aBlock for all classes a package;
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   311
     The order of the classes is not defined.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   312
     The returned collection may include private classes"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   313
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   314
    ^ self allClassesForWhich:[:cls | cls package = aPackageID]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   315
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   316
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   317
     Smalltalk allClassesInPackage:'bosch:dapasx'
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   318
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   319
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   320
    "Created: / 10-08-2006 / 12:14:10 / cg"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   321
    "Modified: / 12-10-2006 / 23:48:43 / cg"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   322
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   323
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   324
allClassesInPackage:aPackageID do:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   325
    "evaluate the argument, aBlock for all classes a package;
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   326
     The order of the classes is not defined."
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   327
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   328
    ^ self allClassesForWhich:[:cls | cls package = aPackageID] do:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   329
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   330
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   331
     Smalltalk allClassesInPackage:'bosch:dapasx' do:[:aClass | Transcript showCR:aClass]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   332
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   333
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   334
    "Created: / 09-08-2006 / 17:14:17 / fm"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   335
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   336
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   337
allKeysDo:aBlock
4139
cc16c864a5f6 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 4062
diff changeset
   338
    <resource: #obsolete>
3552
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   339
    "evaluate the argument, aBlock for all keys in the Smalltalk dictionary"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   340
4187
817351b466fd #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 4139
diff changeset
   341
    self obsoleteMethodWarning:'please use #keysDo:'.
3743
c22e2f7e445f class: SystemEnvironment
Claus Gittinger <cg@exept.de>
parents: 3552
diff changeset
   342
    self keysDo:aBlock
4187
817351b466fd #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 4139
diff changeset
   343
817351b466fd #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 4139
diff changeset
   344
    "Modified: / 20-01-2017 / 17:52:47 / stefan"
3552
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   345
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   346
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   347
allMethodCategories
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   348
    "return a set of all method-categories (protocols) in the system"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   349
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   350
    |allCategories|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   351
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   352
    allCategories := Set new.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   353
    self allClassesDo:[:cls |
4246
7642b8209662 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 4187
diff changeset
   354
        allCategories addAll:cls methodCategories.
3552
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   355
    ].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   356
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   357
    ^ allCategories.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   358
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   359
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   360
     Smalltalk allMethodCategories
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   361
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   362
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   363
    "Modified: / 13-05-2014 / 10:34:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4246
7642b8209662 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 4187
diff changeset
   364
    "Modified: / 05-07-2017 / 10:52:12 / cg"
3552
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   365
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   366
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   367
allMethodsDo:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   368
    "enumerate all methods in all classes"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   369
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   370
    self allClassesDo:[:eachClass |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   371
        eachClass instAndClassSelectorsAndMethodsDo:[:sel :mthd |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   372
            aBlock value:mthd
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   373
        ]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   374
    ].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   375
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   376
    "Modified: / 13-05-2014 / 10:34:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   377
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   378
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   379
allMethodsForWhich:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   380
    "return a collection of methods for which aBlock returns true"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   381
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   382
    |coll|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   383
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   384
    coll := OrderedCollection new.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   385
    self allClassesDo:[:eachClass |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   386
        eachClass instAndClassSelectorsAndMethodsDo:[:sel :mthd |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   387
            (aBlock value:mthd) ifTrue:[
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   388
                coll add:mthd
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   389
            ].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   390
        ]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   391
    ].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   392
    ^ coll
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   393
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   394
    "Modified: / 13-05-2014 / 10:35:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   395
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   396
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   397
allMethodsWithSelectorDo:aTwoArgBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   398
    "enumerate all methods in all classes and evaluate aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   399
     with method and selector as arguments."
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   400
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   401
    self allClassesDo:[:eachClass |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   402
        eachClass instAndClassSelectorsAndMethodsDo:[:sel :mthd |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   403
            aTwoArgBlock value:mthd value:sel
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   404
        ]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   405
    ].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   406
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   407
    "Modified: / 13-05-2014 / 10:35:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   408
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   409
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   410
associationsDo:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   411
    "evaluate the argument, aBlock for all key/value pairs
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   412
     in the Smalltalk dictionary"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   413
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   414
    self keysDo:[:aKey |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   415
	aBlock value:(aKey -> (self at:aKey))
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   416
    ]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   417
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   418
    "Smalltalk associationsDo:[:assoc | assoc printCR]"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   419
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   420
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   421
keysAndValuesDo: block
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   422
    self allClassesDo:[:cls|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   423
        block value: cls name value: cls
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   424
    ].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   425
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   426
    "Smalltalk associationsDo:[:assoc | assoc printCR]"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   427
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   428
    "Created: / 03-09-2013 / 16:54:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   429
    "Modified: / 04-09-2013 / 12:19:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   430
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   431
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   432
keysAndValuesSelect:selectBlockWith2Args thenCollect:collectBlockWith2Args
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   433
    |collected|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   434
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   435
    collected := OrderedCollection new.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   436
    self keysAndValuesDo:[:eachKey :eachValue |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   437
	(selectBlockWith2Args value:eachKey value:eachValue) ifTrue:[
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   438
	    collected add:(collectBlockWith2Args value:eachKey value:eachValue)
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   439
	].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   440
    ].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   441
    ^ collected
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   442
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   443
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   444
     Smalltalk
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   445
	keysAndValuesSelect:[:nm :val | (nm startsWith:'Ab') and:[val notNil]]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   446
	thenCollect:[:nm :val | nm]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   447
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   448
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   449
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   450
keysDo:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   451
    "evaluate the argument, aBlock for all keys in the Smalltalk dictionary"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   452
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   453
    ^self keysAndValuesDo:[:key :value|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   454
        aBlock value: key
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   455
    ]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   456
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   457
    "Created: / 03-09-2013 / 16:55:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   458
! !
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   459
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   460
!SystemEnvironment methodsFor:'queries'!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   461
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   462
allClasses
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   463
    "return an unordered collection of all classes in the system.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   464
     Only globally anchored classes are returned
4062
77f6072228f2 #OTHER by mawalch
mawalch
parents: 3963
diff changeset
   465
     (i.e. anonymous ones have to be acquired by Behavior allSubInstances)"
3552
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   466
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   467
    |classes|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   468
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   469
    classes := IdentitySet new:100.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   470
    self allClassesDo:[:cls | classes add: cls ].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   471
    ^ classes
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   472
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   473
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   474
     CachedClasses := nil.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   475
     Smalltalk allClasses
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   476
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   477
    to get the list sorted by name:
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   478
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   479
     Smalltalk allClasses asSortedCollection:[:a :b | a name < b name]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   480
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   481
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   482
    "Modified: / 06-12-2011 / 12:41:42 / cg"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   483
    "Modified: / 04-09-2013 / 12:18:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   484
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   485
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   486
allClassesAndMetaclasses
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   487
    "return an unordered collection of all classes with their metaclasses in the system."
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   488
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   489
    |classes|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   490
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   491
    classes := IdentitySet new:100.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   492
    self allClassesDo:[:eachClass |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   493
        classes add:(eachClass theNonMetaclass).
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   494
        classes add:(eachClass theMetaclass).
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   495
    ].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   496
    ^ classes
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   497
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   498
    "Modified: / 04-09-2013 / 12:18:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   499
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   500
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   501
allNameSpaces
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   502
    "return a list of all namespaces"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   503
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   504
    ^ self allNameSpacesIn:Smalltalk
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   505
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   506
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   507
allNameSpacesIn:anEnvironment
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   508
    "return a list of all namespaces"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   509
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   510
    |set|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   511
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   512
    set := IdentitySet with:anEnvironment.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   513
    anEnvironment allClassesDo:[:aClass |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   514
        (aClass isRealNameSpace 
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   515
        and:[aClass ~~ anEnvironment]) ifTrue:[
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   516
            set add:aClass
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   517
        ]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   518
    ].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   519
    ^ set
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   520
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   521
    "Modified: / 10-11-2006 / 17:12:02 / cg"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   522
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   523
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   524
allNamespaces
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   525
    "return a list of all namespaces"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   526
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   527
    <resource: #obsolete>
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   528
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   529
    ^ self allNameSpaces
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   530
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   531
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   532
allNamespacesIn:anEnvironment
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   533
    "return a list of all namespaces"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   534
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   535
    <resource: #obsolete>
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   536
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   537
    ^ self allNameSpacesIn:anEnvironment
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   538
! !
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   539
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   540
!SystemEnvironment class methodsFor:'documentation'!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   541
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   542
version
3963
e195020d787b #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 3743
diff changeset
   543
    ^ '$Header$'
3552
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   544
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   545
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   546
version_CVS
3963
e195020d787b #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 3743
diff changeset
   547
    ^ '$Header$'
3552
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   548
! !
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   549