SystemEnvironment.st
author Claus Gittinger <cg@exept.de>
Thu, 05 Mar 2020 11:17:28 +0100
changeset 4561 eace75531554
parent 4476 f146c4358780
permissions -rw-r--r--
#UI_ENHANCEMENT by cg class: SourceCodeManagerUtilities changed: #compareClassWithRepository:askForRevision: typos: genitive of class is class's - not classes.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4476
f146c4358780 #QUALITY by exept
Claus Gittinger <cg@exept.de>
parents: 4246
diff changeset
     1
"{ Encoding: utf8 }"
f146c4358780 #QUALITY by exept
Claus Gittinger <cg@exept.de>
parents: 4246
diff changeset
     2
3552
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
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
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
 New code and modifications done at SWING Research Group [1]:
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
 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
     9
                            SWING Research Group, Czech Technical University in Prague
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
 This software is furnished under a license and may be used
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
 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
    13
 inclusion of the above copyright notice.   This software may not
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
 be provided or otherwise made available to, or used by, any
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
 other person.  No title to or ownership of the software is
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
 hereby transferred.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
 [1] Code written at SWING Research Group contains a signature
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
     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
    20
     see the differences between this version and version stx:libjava
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
     as of 1.9.2010
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
"{ Package: 'stx:libbasic3' }"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
3743
c22e2f7e445f class: SystemEnvironment
Claus Gittinger <cg@exept.de>
parents: 3552
diff changeset
    25
"{ NameSpace: Smalltalk }"
c22e2f7e445f class: SystemEnvironment
Claus Gittinger <cg@exept.de>
parents: 3552
diff changeset
    26
3552
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
Object subclass:#SystemEnvironment
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
	instanceVariableNames:''
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
	classVariableNames:''
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
	poolDictionaries:''
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
	category:'Kernel-Classes'
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
!
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
!SystemEnvironment class methodsFor:'documentation'!
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
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
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
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
 New code and modifications done at SWING Research Group [1]:
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
 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
    43
                            SWING Research Group, Czech Technical University in Prague
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
 This software is furnished under a license and may be used
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
 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
    47
 inclusion of the above copyright notice.   This software may not
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
 be provided or otherwise made available to, or used by, any
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
 other person.  No title to or ownership of the software is
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
 hereby transferred.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
 [1] Code written at SWING Research Group contains a signature
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
     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
    54
     see the differences between this version and version stx:libjava
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
     as of 1.9.2010
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
!
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
documentation
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
    SystemEnvironment is an abstract base class for 'environments'
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
    An 'environment' is an object that keeps track of classes and
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
    methods and can be asked for those.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
    Its protocol is polymorph with protocol of Smalltalk and NameSpace
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
    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
    68
    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
    69
    custom instance SystemEnvironment.
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
    To open a browser on given environment do
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
    Tools::NewSystemBrowser new
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
        allButOpen;
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
        environment: customEnvironment;
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
        open.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
    [author:]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
        Jan Vrany <jan.vrany@fit.cvut.cz>
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
    [instance 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
    [class variables:]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
    [see also:]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
        Smalltalk
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
        NameSpace
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
"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
! !
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
3963
e195020d787b #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 3743
diff changeset
    92
!SystemEnvironment class methodsFor:'queries'!
3552
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
isAbstract
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
    ^ self == SystemEnvironment
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
    "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
    98
! !
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
!SystemEnvironment methodsFor:'accessing'!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
at: key 
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
    ^ self at: key ifAbsent:[nil]
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
    "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
   106
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
at:aString ifAbsent:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
    self allClassesDo:[:cls|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
        cls name = aString ifTrue:[ ^ cls ].
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
    ^ aBlock value
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
    "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
   115
    "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
   116
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
at: key put: value
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
    ^ self shouldNotImplement
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
    "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
   122
    "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
   123
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
keys
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
    ^ Iterator on:[ :whatToDo | self allClassesDo: [:cls | whatToDo value: cls name  ] ]
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
    "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
   129
! !
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
!SystemEnvironment methodsFor:'enumerating'!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
allBehaviorsDo:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
    "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
   135
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
    self allClassesAndMetaclassesDo:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
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
     Smalltalk allBehaviorsDo:[:aClass | aClass name printCR]
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
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
allClassCategories
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
    "return a set of all class categories in the system"
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|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
    allCategories := Set new.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
    self allClassesDo:[:cls |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
        |category|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
        category := cls category.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
        category notNil ifTrue:[
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
            allCategories add:category.
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
    ].
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
    ^ allCategories.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
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
     Smalltalk allClassCategories
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
    "Created: / 17-11-2001 / 12:13:09 / cg"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
    "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
   166
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
allClassesAndMetaclassesDo:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
    "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
   170
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   171
    |already|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
    already := IdentitySet new:NumberOfClassesHint*2.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
    self allClassesDo:[:eachClass |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
	|cls|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   176
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   177
	cls := eachClass theNonMetaclass.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
	(already includes:cls) ifFalse:[
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   179
	    aBlock value:cls.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   180
	    already add:cls.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   181
	].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   182
	cls := cls class.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   183
	(already includes:cls) ifFalse:[
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   184
	    aBlock value:cls.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
	    already add:cls.
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
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   189
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   190
allClassesDo:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
    "evaluate the argument, aBlock for all classes in the system."
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
    self subclassResponsibility
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   194
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
     Smalltalk allClassesDo:[:aClass | aClass name printCR]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   197
    "
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
    "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
   200
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   201
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   202
allClassesForWhich:filter
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   203
    "return a collection with all classes in the system,
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   204
     for which filter evaluates to true."
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|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   207
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   208
    collectedClasses := OrderedCollection new.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   209
    self allClassesForWhich:filter do:[:cls |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   210
	collectedClasses add:cls
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
    ^ collectedClasses
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   213
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   214
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   215
     Smalltalk
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   216
	allClassesForWhich:[:cls | cls name startsWith:'Po']
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   217
    "
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
    "Created: / 10-08-2006 / 12:11:31 / cg"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   220
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   221
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   222
allClassesForWhich:filter do:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   223
    "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
   224
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   225
    self allClassesDo:[:cls |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   226
	(filter value:cls) ifTrue:[ aBlock value:cls ].
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
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   229
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   230
     Smalltalk
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   231
	allClassesForWhich:[:cls | cls name startsWith:'Po']
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   232
	do:[:aClass | Transcript showCR:aClass name]
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
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   235
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   236
allClassesInCategory:aCategory
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   237
    "return a collection of for all classes in aCategory;
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   238
     The order of the classes is not defined."
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
    ^ self allClassesForWhich:[:cls | cls category = aCategory]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   241
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
     Smalltalk allClassesInCategory:'Views-Basic'
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
    "
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
    "Modified: / 10-08-2006 / 12:13:32 / cg"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   248
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
allClassesInCategory:aCategory do:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   250
    "evaluate the argument, aBlock for all classes in the aCategory;
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   251
     The order of the classes is not defined."
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   252
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   253
    aCategory notNil ifTrue:[
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   254
	self allClassesForWhich:[:cls | cls category = aCategory] do:aBlock
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
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
     Smalltalk allClassesInCategory:'Views-Basic' do:[:aClass | Transcript showCR:aClass]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   259
    "
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
    "Modified: / 09-08-2006 / 17:18:50 / fm"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   262
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   263
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   264
allClassesInCategory:aCategory inOrderDo:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   265
    "evaluate the argument, aBlock for all classes in aCategory;
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   266
     superclasses come first - then subclasses"
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
    |classes|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   269
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   270
    aCategory notNil ifTrue:[
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   271
	classes := OrderedCollection new.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   272
	self allClassesInCategory:aCategory do:[:aClass |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   273
	    classes add:aClass
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   274
	].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   275
	classes topologicalSort:[:a :b | b isSubclassOf:a].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   276
	classes do:aBlock
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
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
     Smalltalk allClassesInCategory:'Views-Basic' inOrderDo:[:aClass | aClass name printCR]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   281
    "
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
    "Modified: / 17.11.2001 / 12:18:15 / cg"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   284
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   285
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   286
allClassesInOrderDo:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   287
    "evaluate the argument, aBlock for all classes in the system;
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   288
     Evaluation order is by inheritance: superclasses come first."
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|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   291
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   292
    already := IdentitySet new:NumberOfClassesHint.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   293
    self allClassesDo:[:eachClass |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   294
	(already includes:eachClass) ifFalse:[
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   295
	    eachClass allSuperclasses reverseDo:[:eachSuperClass |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   296
		(already includes:eachSuperClass) ifFalse:[
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   297
		    already add:eachSuperClass.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   298
		    aBlock value:eachSuperClass.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   299
		].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   300
	    ].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   301
	    already add:eachClass.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   302
	    aBlock value:eachClass.
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
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
     Smalltalk allClassesInOrderDo:[:aClass | Transcript showCR:aClass name]
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
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   310
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   311
allClassesInPackage:aPackageID
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   312
    "evaluate the argument, aBlock for all classes a package;
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   313
     The order of the classes is not defined.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   314
     The returned collection may include private classes"
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
    ^ self allClassesForWhich:[:cls | cls package = aPackageID]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   317
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
     Smalltalk allClassesInPackage:'bosch:dapasx'
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   320
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   321
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   322
    "Created: / 10-08-2006 / 12:14:10 / cg"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   323
    "Modified: / 12-10-2006 / 23:48:43 / cg"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   324
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   325
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   326
allClassesInPackage:aPackageID do:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   327
    "evaluate the argument, aBlock for all classes a package;
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   328
     The order of the classes is not defined."
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   329
4476
f146c4358780 #QUALITY by exept
Claus Gittinger <cg@exept.de>
parents: 4246
diff changeset
   330
    self allClassesForWhich:[:cls | cls package = aPackageID] do:aBlock
3552
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   331
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
     Smalltalk allClassesInPackage:'bosch:dapasx' do:[:aClass | Transcript showCR:aClass]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   334
    "
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
    "Created: / 09-08-2006 / 17:14:17 / fm"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   337
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   338
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   339
allKeysDo:aBlock
4139
cc16c864a5f6 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 4062
diff changeset
   340
    <resource: #obsolete>
3552
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   341
    "evaluate the argument, aBlock for all keys in the Smalltalk dictionary"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   342
4187
817351b466fd #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 4139
diff changeset
   343
    self obsoleteMethodWarning:'please use #keysDo:'.
3743
c22e2f7e445f class: SystemEnvironment
Claus Gittinger <cg@exept.de>
parents: 3552
diff changeset
   344
    self keysDo:aBlock
4187
817351b466fd #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 4139
diff changeset
   345
817351b466fd #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 4139
diff changeset
   346
    "Modified: / 20-01-2017 / 17:52:47 / stefan"
3552
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   347
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   348
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   349
allMethodCategories
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   350
    "return a set of all method-categories (protocols) in the system"
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|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   353
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   354
    allCategories := Set new.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   355
    self allClassesDo:[:cls |
4246
7642b8209662 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 4187
diff changeset
   356
        allCategories addAll:cls methodCategories.
3552
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   357
    ].
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
    ^ allCategories.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   360
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
     Smalltalk allMethodCategories
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   363
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   364
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   365
    "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
   366
    "Modified: / 05-07-2017 / 10:52:12 / cg"
3552
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   367
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   368
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   369
allMethodsDo:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   370
    "enumerate all methods in all classes"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   371
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   372
    self allClassesDo:[:eachClass |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   373
        eachClass instAndClassSelectorsAndMethodsDo:[:sel :mthd |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   374
            aBlock value:mthd
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
    ].
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
    "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
   379
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   380
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   381
allMethodsForWhich:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   382
    "return a collection of methods for which aBlock returns true"
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|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   385
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   386
    coll := OrderedCollection new.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   387
    self allClassesDo:[:eachClass |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   388
        eachClass instAndClassSelectorsAndMethodsDo:[:sel :mthd |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   389
            (aBlock value:mthd) ifTrue:[
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   390
                coll add:mthd
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
        ]
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
    ^ coll
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
    "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
   397
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   398
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   399
allMethodsWithSelectorDo:aTwoArgBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   400
    "enumerate all methods in all classes and evaluate aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   401
     with method and selector as arguments."
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   402
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   403
    self allClassesDo:[:eachClass |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   404
        eachClass instAndClassSelectorsAndMethodsDo:[:sel :mthd |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   405
            aTwoArgBlock value:mthd value:sel
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
    ].
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
    "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
   410
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   411
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   412
associationsDo:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   413
    "evaluate the argument, aBlock for all key/value pairs
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   414
     in the Smalltalk dictionary"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   415
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   416
    self keysDo:[:aKey |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   417
	aBlock value:(aKey -> (self at:aKey))
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   418
    ]
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
    "Smalltalk associationsDo:[:assoc | assoc printCR]"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   421
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   422
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   423
keysAndValuesDo: block
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   424
    self allClassesDo:[:cls|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   425
        block value: cls name value: cls
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   426
    ].
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
    "Smalltalk associationsDo:[:assoc | assoc printCR]"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   429
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   430
    "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
   431
    "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
   432
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   433
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   434
keysAndValuesSelect:selectBlockWith2Args thenCollect:collectBlockWith2Args
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   435
    |collected|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   436
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   437
    collected := OrderedCollection new.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   438
    self keysAndValuesDo:[:eachKey :eachValue |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   439
	(selectBlockWith2Args value:eachKey value:eachValue) ifTrue:[
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   440
	    collected add:(collectBlockWith2Args value:eachKey value:eachValue)
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   441
	].
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
    ^ collected
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   444
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   445
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   446
     Smalltalk
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   447
	keysAndValuesSelect:[:nm :val | (nm startsWith:'Ab') and:[val notNil]]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   448
	thenCollect:[:nm :val | nm]
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
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   451
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   452
keysDo:aBlock
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   453
    "evaluate the argument, aBlock for all keys in the Smalltalk dictionary"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   454
4476
f146c4358780 #QUALITY by exept
Claus Gittinger <cg@exept.de>
parents: 4246
diff changeset
   455
    self keysAndValuesDo:[:key :value|
3552
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   456
        aBlock value: key
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   457
    ]
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
    "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
   460
! !
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
!SystemEnvironment methodsFor:'queries'!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   463
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   464
allClasses
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   465
    "return an unordered collection of all classes in the system.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   466
     Only globally anchored classes are returned
4062
77f6072228f2 #OTHER by mawalch
mawalch
parents: 3963
diff changeset
   467
     (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
   468
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   469
    |classes|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   470
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   471
    classes := IdentitySet new:100.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   472
    self allClassesDo:[:cls | classes add: cls ].
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   473
    ^ classes
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   474
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   475
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   476
     CachedClasses := nil.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   477
     Smalltalk allClasses
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
    to get the list sorted by 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
     Smalltalk allClasses asSortedCollection:[:a :b | a name < b name]
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   482
    "
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   483
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   484
    "Modified: / 06-12-2011 / 12:41:42 / cg"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   485
    "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
   486
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   487
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   488
allClassesAndMetaclasses
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   489
    "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
   490
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   491
    |classes|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   492
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   493
    classes := IdentitySet new:100.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   494
    self allClassesDo:[:eachClass |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   495
        classes add:(eachClass theNonMetaclass).
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   496
        classes add:(eachClass theMetaclass).
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
    ^ classes
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
    "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
   501
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   502
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   503
allNameSpaces
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   504
    "return a list of all namespaces"
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
    ^ self allNameSpacesIn:Smalltalk
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   507
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   508
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   509
allNameSpacesIn:anEnvironment
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   510
    "return a list of all namespaces"
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|
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   513
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   514
    set := IdentitySet with:anEnvironment.
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   515
    anEnvironment allClassesDo:[:aClass |
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   516
        (aClass isRealNameSpace 
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   517
        and:[aClass ~~ anEnvironment]) ifTrue:[
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   518
            set add:aClass
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   519
        ]
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
    ^ set
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
    "Modified: / 10-11-2006 / 17:12:02 / cg"
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   524
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   525
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   526
allNamespaces
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   527
    "return a list of all namespaces"
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
    <resource: #obsolete>
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
    ^ self allNameSpaces
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   532
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   533
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   534
allNamespacesIn:anEnvironment
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   535
    "return a list of all namespaces"
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
    <resource: #obsolete>
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
    ^ self allNameSpacesIn:anEnvironment
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   540
! !
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
!SystemEnvironment class methodsFor:'documentation'!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   543
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   544
version
3963
e195020d787b #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 3743
diff changeset
   545
    ^ '$Header$'
3552
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   546
!
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   547
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   548
version_CVS
3963
e195020d787b #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 3743
diff changeset
   549
    ^ '$Header$'
3552
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   550
! !
91e7920fc1ad initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   551