Metaclass.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sun, 16 Aug 2009 18:14:23 +0100
branchjv
changeset 17727 3945dfe4659c
parent 17711 39faaaf888b4
child 17732 a1892eeca6c0
permissions -rw-r--r--
multilanguage improvements mainly for loading projects with non-smalltalk classes
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
     1
"
5
67342904af11 *** empty log message ***
claus
parents: 3
diff changeset
     2
 COPYRIGHT (c) 1988 by Claus Gittinger
159
514c749165c3 *** empty log message ***
claus
parents: 93
diff changeset
     3
	      All Rights Reserved
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
     4
a27a279701f8 Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
a27a279701f8 Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
a27a279701f8 Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
a27a279701f8 Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
a27a279701f8 Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
a27a279701f8 Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
a27a279701f8 Initial revision
claus
parents:
diff changeset
    11
"
5341
e7465ebd9126 change notification for new classes
Claus Gittinger <cg@exept.de>
parents: 5328
diff changeset
    12
"{ Package: 'stx:libbasic' }"
e7465ebd9126 change notification for new classes
Claus Gittinger <cg@exept.de>
parents: 5328
diff changeset
    13
2666
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
    14
ClassDescription subclass:#Metaclass
1047
5d4d1c7411ab dont clobber the binaryRevision from a nonBinary-one
ca
parents: 986
diff changeset
    15
	instanceVariableNames:'myClass'
2822
64829ed8f8c6 allow for conventions-dialog to be suppressed (offer a querySignal)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
    16
	classVariableNames:'ConfirmationQuerySignal'
1047
5d4d1c7411ab dont clobber the binaryRevision from a nonBinary-one
ca
parents: 986
diff changeset
    17
	poolDictionaries:''
5d4d1c7411ab dont clobber the binaryRevision from a nonBinary-one
ca
parents: 986
diff changeset
    18
	category:'Kernel-Classes'
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    19
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    20
1742
e1ee359969f5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1733
diff changeset
    21
!Metaclass class methodsFor:'documentation'!
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
    22
88
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
    23
copyright
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
    24
"
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
    25
 COPYRIGHT (c) 1988 by Claus Gittinger
159
514c749165c3 *** empty log message ***
claus
parents: 93
diff changeset
    26
	      All Rights Reserved
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    27
88
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
    28
 This software is furnished under a license and may be used
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
    29
 only in accordance with the terms of that license and with the
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
    30
 inclusion of the above copyright notice.   This software may not
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
    31
 be provided or otherwise made available to, or used by, any
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
    32
 other person.  No title to or ownership of the software is
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
    33
 hereby transferred.
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
    34
"
621
87602c9d071c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 566
diff changeset
    35
!
87602c9d071c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 566
diff changeset
    36
87602c9d071c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 566
diff changeset
    37
documentation
87602c9d071c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 566
diff changeset
    38
"
87602c9d071c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 566
diff changeset
    39
    every classes class is a subclass of Metaclass.
87602c9d071c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 566
diff changeset
    40
    (i.e. every class is the sole instance of its Metaclass)
87602c9d071c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 566
diff changeset
    41
    Metaclass provides support for creating new (sub)classes and/or 
87602c9d071c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 566
diff changeset
    42
    changing the definition of an already existing class.
1292
89497fff7f87 documentation
Claus Gittinger <cg@exept.de>
parents: 1266
diff changeset
    43
89497fff7f87 documentation
Claus Gittinger <cg@exept.de>
parents: 1266
diff changeset
    44
    [author:]
2666
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
    45
	Claus Gittinger
1669
4951596746f7 comments & code cleanup
Claus Gittinger <cg@exept.de>
parents: 1655
diff changeset
    46
4951596746f7 comments & code cleanup
Claus Gittinger <cg@exept.de>
parents: 1655
diff changeset
    47
    [see also:]
4951596746f7 comments & code cleanup
Claus Gittinger <cg@exept.de>
parents: 1655
diff changeset
    48
	Behavior ClassDescription Class
621
87602c9d071c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 566
diff changeset
    49
"
88
81dacba7a63a *** empty log message ***
claus
parents: 85
diff changeset
    50
! !
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    51
2822
64829ed8f8c6 allow for conventions-dialog to be suppressed (offer a querySignal)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
    52
!Metaclass class methodsFor:'Signal constants'!
64829ed8f8c6 allow for conventions-dialog to be suppressed (offer a querySignal)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
    53
64829ed8f8c6 allow for conventions-dialog to be suppressed (offer a querySignal)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
    54
confirmationQuerySignal
64829ed8f8c6 allow for conventions-dialog to be suppressed (offer a querySignal)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
    55
    "return the query signal which is raised to ask if user
64829ed8f8c6 allow for conventions-dialog to be suppressed (offer a querySignal)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
    56
     confirmation dialogs should be opened.
64829ed8f8c6 allow for conventions-dialog to be suppressed (offer a querySignal)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
    57
     If unhandled, they are."
64829ed8f8c6 allow for conventions-dialog to be suppressed (offer a querySignal)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
    58
64829ed8f8c6 allow for conventions-dialog to be suppressed (offer a querySignal)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
    59
    ^ ConfirmationQuerySignal
64829ed8f8c6 allow for conventions-dialog to be suppressed (offer a querySignal)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
    60
64829ed8f8c6 allow for conventions-dialog to be suppressed (offer a querySignal)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
    61
    "Created: 31.7.1997 / 21:55:39 / cg"
64829ed8f8c6 allow for conventions-dialog to be suppressed (offer a querySignal)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
    62
! !
64829ed8f8c6 allow for conventions-dialog to be suppressed (offer a querySignal)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
    63
64829ed8f8c6 allow for conventions-dialog to be suppressed (offer a querySignal)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
    64
!Metaclass class methodsFor:'class initialization'!
64829ed8f8c6 allow for conventions-dialog to be suppressed (offer a querySignal)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
    65
64829ed8f8c6 allow for conventions-dialog to be suppressed (offer a querySignal)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
    66
initialize
64829ed8f8c6 allow for conventions-dialog to be suppressed (offer a querySignal)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
    67
    ConfirmationQuerySignal := QuerySignal new defaultAnswer:true
64829ed8f8c6 allow for conventions-dialog to be suppressed (offer a querySignal)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
    68
64829ed8f8c6 allow for conventions-dialog to be suppressed (offer a querySignal)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
    69
    "Modified: 31.7.1997 / 21:54:44 / cg"
64829ed8f8c6 allow for conventions-dialog to be suppressed (offer a querySignal)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
    70
! !
64829ed8f8c6 allow for conventions-dialog to be suppressed (offer a querySignal)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
    71
1742
e1ee359969f5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1733
diff changeset
    72
!Metaclass class methodsFor:'creating metaclasses'!
356
claus
parents: 328
diff changeset
    73
claus
parents: 328
diff changeset
    74
new
claus
parents: 328
diff changeset
    75
    "creating a new metaclass - have to set the new classes
claus
parents: 328
diff changeset
    76
     flags correctly to have it behave like a metaclass ...
claus
parents: 328
diff changeset
    77
     Not for normal applications - creating new metaclasses is a very
claus
parents: 328
diff changeset
    78
     tricky thing; should be left to the gurus ;-)"
claus
parents: 328
diff changeset
    79
claus
parents: 328
diff changeset
    80
    |newMetaclass|
claus
parents: 328
diff changeset
    81
claus
parents: 328
diff changeset
    82
    newMetaclass := super new.
claus
parents: 328
diff changeset
    83
    newMetaclass instSize:(Class instSize).
claus
parents: 328
diff changeset
    84
    newMetaclass setSuperclass:Class.
claus
parents: 328
diff changeset
    85
claus
parents: 328
diff changeset
    86
    ^ newMetaclass
claus
parents: 328
diff changeset
    87
claus
parents: 328
diff changeset
    88
    "
claus
parents: 328
diff changeset
    89
     Metaclass new           <- new metaclass
claus
parents: 328
diff changeset
    90
     Metaclass new new       <- new class
claus
parents: 328
diff changeset
    91
     Metaclass new new new   <- new instance
claus
parents: 328
diff changeset
    92
    "
claus
parents: 328
diff changeset
    93
! !
claus
parents: 328
diff changeset
    94
1742
e1ee359969f5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1733
diff changeset
    95
!Metaclass class methodsFor:'queries'!
1179
3e0f32177af4 allow subclasses of Class to be changed
Claus Gittinger <cg@exept.de>
parents: 1087
diff changeset
    96
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
    97
asPrivate
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
    98
    ^ PrivateMetaclass 
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
    99
!
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   100
1179
3e0f32177af4 allow subclasses of Class to be changed
Claus Gittinger <cg@exept.de>
parents: 1087
diff changeset
   101
isBuiltInClass
1266
cef9b3cd49df commentary
Claus Gittinger <cg@exept.de>
parents: 1179
diff changeset
   102
    "return true if this class is known by the run-time-system.
cef9b3cd49df commentary
Claus Gittinger <cg@exept.de>
parents: 1179
diff changeset
   103
     Here, true is returned for myself, false for subclasses."
cef9b3cd49df commentary
Claus Gittinger <cg@exept.de>
parents: 1179
diff changeset
   104
1179
3e0f32177af4 allow subclasses of Class to be changed
Claus Gittinger <cg@exept.de>
parents: 1087
diff changeset
   105
    ^ self == Metaclass class or:[self == Metaclass]
3e0f32177af4 allow subclasses of Class to be changed
Claus Gittinger <cg@exept.de>
parents: 1087
diff changeset
   106
1266
cef9b3cd49df commentary
Claus Gittinger <cg@exept.de>
parents: 1179
diff changeset
   107
    "Modified: 23.4.1996 / 15:59:44 / cg"
1179
3e0f32177af4 allow subclasses of Class to be changed
Claus Gittinger <cg@exept.de>
parents: 1087
diff changeset
   108
! !
3e0f32177af4 allow subclasses of Class to be changed
Claus Gittinger <cg@exept.de>
parents: 1087
diff changeset
   109
7261
f35fc9cee675 method category rename
Claus Gittinger <cg@exept.de>
parents: 6824
diff changeset
   110
!Metaclass methodsFor:'Compatibility-ST80'!
3012
25d64e4f2a4d added #comment:
Claus Gittinger <cg@exept.de>
parents: 2822
diff changeset
   111
25d64e4f2a4d added #comment:
Claus Gittinger <cg@exept.de>
parents: 2822
diff changeset
   112
comment:aString
25d64e4f2a4d added #comment:
Claus Gittinger <cg@exept.de>
parents: 2822
diff changeset
   113
    "ignored - sometimes found in ST-80 fileOut files.
25d64e4f2a4d added #comment:
Claus Gittinger <cg@exept.de>
parents: 2822
diff changeset
   114
     Comments are supposed to be defined via class messages."
25d64e4f2a4d added #comment:
Claus Gittinger <cg@exept.de>
parents: 2822
diff changeset
   115
25d64e4f2a4d added #comment:
Claus Gittinger <cg@exept.de>
parents: 2822
diff changeset
   116
    "Created: 9.10.1997 / 18:14:34 / cg"
3079
f177f98675c2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3049
diff changeset
   117
!
f177f98675c2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3049
diff changeset
   118
f177f98675c2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3049
diff changeset
   119
sourceCodeTemplate
f177f98675c2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3049
diff changeset
   120
    "ST80 compatibility - return a definition message for myself.
f177f98675c2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3049
diff changeset
   121
     Same as #definition"
f177f98675c2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3049
diff changeset
   122
f177f98675c2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3049
diff changeset
   123
    ^ self soleInstance definition
f177f98675c2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3049
diff changeset
   124
f177f98675c2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3049
diff changeset
   125
    "Created: / 1.11.1997 / 13:16:45 / cg"
3012
25d64e4f2a4d added #comment:
Claus Gittinger <cg@exept.de>
parents: 2822
diff changeset
   126
! !
25d64e4f2a4d added #comment:
Claus Gittinger <cg@exept.de>
parents: 2822
diff changeset
   127
5578
16bfff464b2f added #isLoaded
Claus Gittinger <cg@exept.de>
parents: 5574
diff changeset
   128
!Metaclass methodsFor:'autoload check'!
16bfff464b2f added #isLoaded
Claus Gittinger <cg@exept.de>
parents: 5574
diff changeset
   129
16bfff464b2f added #isLoaded
Claus Gittinger <cg@exept.de>
parents: 5574
diff changeset
   130
isLoaded
16bfff464b2f added #isLoaded
Claus Gittinger <cg@exept.de>
parents: 5574
diff changeset
   131
    "return true, if the class has been loaded; 
16bfff464b2f added #isLoaded
Claus Gittinger <cg@exept.de>
parents: 5574
diff changeset
   132
     redefined in Autoload; see comment there"
16bfff464b2f added #isLoaded
Claus Gittinger <cg@exept.de>
parents: 5574
diff changeset
   133
16bfff464b2f added #isLoaded
Claus Gittinger <cg@exept.de>
parents: 5574
diff changeset
   134
    ^ myClass isLoaded
16bfff464b2f added #isLoaded
Claus Gittinger <cg@exept.de>
parents: 5574
diff changeset
   135
16bfff464b2f added #isLoaded
Claus Gittinger <cg@exept.de>
parents: 5574
diff changeset
   136
16bfff464b2f added #isLoaded
Claus Gittinger <cg@exept.de>
parents: 5574
diff changeset
   137
! !
16bfff464b2f added #isLoaded
Claus Gittinger <cg@exept.de>
parents: 5574
diff changeset
   138
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   139
!Metaclass methodsFor:'class instance variables'!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   140
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   141
instanceVariableNames:aString
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   142
    "changing / adding class-inst vars -
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   143
     this actually creates a new metaclass and class, leaving the original
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   144
     classes around as obsolete classes. This may also be true for all subclasses,
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   145
     if class instance variables are added/removed.
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   146
     Existing instances continue to be defined by their original classes.
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   147
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   148
     Time will show, if this is an acceptable behavior or if we should migrate
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   149
     instances to become insts. of the new classes."
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   150
6021
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   151
    |builder|
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   152
7518
298576c9de5a care for no real change in instanceVariableString.
Claus Gittinger <cg@exept.de>
parents: 7435
diff changeset
   153
    self instanceVariableString asStringCollection = aString asStringCollection ifTrue:[^ self].
298576c9de5a care for no real change in instanceVariableString.
Claus Gittinger <cg@exept.de>
parents: 7435
diff changeset
   154
6021
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   155
    builder := ClassBuilder new.
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   156
    builder oldMetaclass:self instanceVariableNames:aString.
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   157
    builder rebuildForChangedInstanceVariables.
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   158
! !
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   159
5994
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   160
!Metaclass methodsFor:'compiler interface'!
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   161
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   162
browserClass
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   163
    "return the browser to use for this class - 
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   164
     this can be redefined in special classes, to get different browsers"
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   165
6021
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   166
    ^ UserPreferences systemBrowserClass.
5994
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   167
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   168
    "Created: 3.5.1996 / 12:36:40 / cg"
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   169
!
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   170
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   171
compilerClass
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   172
    "return the compiler to use for this class - 
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   173
     this can be redefined in special classes, to compile classes with
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   174
     Lisp, Prolog, ASN1, Basic :-) or whatever syntax."
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   175
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   176
    ^ Compiler
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   177
!
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   178
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   179
evaluatorClass
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   180
    "return the compiler to use for expression evaluation for this class - 
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   181
     this can be redefined in special classes, to evaluate expressions with
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   182
     Lisp, Prolog, ASN1, Basic :-) or whatever syntax."
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   183
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   184
    ^ Compiler
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   185
!
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   186
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   187
formatterClass
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   188
    "return the parser to use for formatting (prettyPrinting) this class - 
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   189
     this can be redefined in special classes, to format classes with
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   190
     Lisp, Prolog, ASN1, Basic :-) or whatever syntax."
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   191
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   192
    ^ Parser
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   193
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   194
    "Created: / 27.4.1998 / 15:33:34 / cg"
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   195
!
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   196
17727
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   197
language
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   198
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   199
    ^SmalltalkLanguage instance
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   200
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   201
    "Created: / 15-08-2009 / 09:06:25 / Jan Vrany <vranyj1@fel.cvut.cz>"
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   202
    "Modified: / 16-08-2009 / 10:37:08 / Jan Vrany <vranyj1@fel.cvut.cz>"
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   203
!
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   204
5994
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   205
parserClass
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   206
    "return the parser to use for parsing this class - 
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   207
     this can be redefined in special classes, to parse classes with
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   208
     Lisp, Prolog, ASN1, Basic :-) or whatever syntax."
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   209
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   210
    ^ Parser
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   211
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   212
    "Created: 18.4.1997 / 21:02:41 / cg"
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   213
!
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   214
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   215
realSubclassDefinerClass
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   216
    ^ self evaluatorClass
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   217
!
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   218
5994
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   219
subclassDefinerClass
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   220
    "Answer an evaluator class appropriate for evaluating definitions of new 
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   221
     subclasses of this class."
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   222
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   223
    ^ self evaluatorClass
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   224
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   225
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   226
!
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   227
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   228
syntaxHighlighterClass
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   229
    "return the class to use for syntaxHighlighting (prettyPrinting) this class - 
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   230
     this can be redefined in special classes, to highlight classes with
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   231
     Lisp, Prolog, ASN1, Basic :-) or whatever syntax."
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   232
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   233
    ^ SyntaxHighlighter
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   234
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   235
    "Created: / 27.4.1998 / 15:34:08 / cg"
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   236
! !
554530710162 allow metaclass to specify compiler, parser, evaluator etc.
Claus Gittinger <cg@exept.de>
parents: 5891
diff changeset
   237
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   238
!Metaclass methodsFor:'copying'!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   239
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   240
postCopy
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   241
    "redefined - a copy may have a new instance"
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   242
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   243
    myClass := nil
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   244
! !
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   245
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   246
!Metaclass methodsFor:'creating classes'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   247
10475
acc087c36c83 documentation only
Claus Gittinger <cg@exept.de>
parents: 9712
diff changeset
   248
name:newName inEnvironment:aNameSpaceOrOwningClass
6824
6fbe85d05646 ...in:... -> ...inEnvironment:...
Claus Gittinger <cg@exept.de>
parents: 6516
diff changeset
   249
             subclassOf:aClass
6fbe85d05646 ...in:... -> ...inEnvironment:...
Claus Gittinger <cg@exept.de>
parents: 6516
diff changeset
   250
             instanceVariableNames:stringOfInstVarNames
6fbe85d05646 ...in:... -> ...inEnvironment:...
Claus Gittinger <cg@exept.de>
parents: 6516
diff changeset
   251
             variable:variableBoolean
6fbe85d05646 ...in:... -> ...inEnvironment:...
Claus Gittinger <cg@exept.de>
parents: 6516
diff changeset
   252
             words:wordsBoolean
6fbe85d05646 ...in:... -> ...inEnvironment:...
Claus Gittinger <cg@exept.de>
parents: 6516
diff changeset
   253
             pointers:pointersBoolean
6fbe85d05646 ...in:... -> ...inEnvironment:...
Claus Gittinger <cg@exept.de>
parents: 6516
diff changeset
   254
             classVariableNames:stringOfClassVarNames
6fbe85d05646 ...in:... -> ...inEnvironment:...
Claus Gittinger <cg@exept.de>
parents: 6516
diff changeset
   255
             poolDictionaries:stringOfPoolNames
6fbe85d05646 ...in:... -> ...inEnvironment:...
Claus Gittinger <cg@exept.de>
parents: 6516
diff changeset
   256
             category:categoryString
6fbe85d05646 ...in:... -> ...inEnvironment:...
Claus Gittinger <cg@exept.de>
parents: 6516
diff changeset
   257
             comment:commentString
6fbe85d05646 ...in:... -> ...inEnvironment:...
Claus Gittinger <cg@exept.de>
parents: 6516
diff changeset
   258
             changed:changed
6fbe85d05646 ...in:... -> ...inEnvironment:...
Claus Gittinger <cg@exept.de>
parents: 6516
diff changeset
   259
6fbe85d05646 ...in:... -> ...inEnvironment:...
Claus Gittinger <cg@exept.de>
parents: 6516
diff changeset
   260
    ^ self
6fbe85d05646 ...in:... -> ...inEnvironment:...
Claus Gittinger <cg@exept.de>
parents: 6516
diff changeset
   261
        name:newName 
10475
acc087c36c83 documentation only
Claus Gittinger <cg@exept.de>
parents: 9712
diff changeset
   262
        inEnvironment:aNameSpaceOrOwningClass
6824
6fbe85d05646 ...in:... -> ...inEnvironment:...
Claus Gittinger <cg@exept.de>
parents: 6516
diff changeset
   263
        subclassOf:aClass
6fbe85d05646 ...in:... -> ...inEnvironment:...
Claus Gittinger <cg@exept.de>
parents: 6516
diff changeset
   264
        instanceVariableNames:stringOfInstVarNames
6fbe85d05646 ...in:... -> ...inEnvironment:...
Claus Gittinger <cg@exept.de>
parents: 6516
diff changeset
   265
        variable:variableBoolean
6fbe85d05646 ...in:... -> ...inEnvironment:...
Claus Gittinger <cg@exept.de>
parents: 6516
diff changeset
   266
        words:wordsBoolean
6fbe85d05646 ...in:... -> ...inEnvironment:...
Claus Gittinger <cg@exept.de>
parents: 6516
diff changeset
   267
        pointers:pointersBoolean
6fbe85d05646 ...in:... -> ...inEnvironment:...
Claus Gittinger <cg@exept.de>
parents: 6516
diff changeset
   268
        classVariableNames:stringOfClassVarNames
6fbe85d05646 ...in:... -> ...inEnvironment:...
Claus Gittinger <cg@exept.de>
parents: 6516
diff changeset
   269
        poolDictionaries:stringOfPoolNames
6fbe85d05646 ...in:... -> ...inEnvironment:...
Claus Gittinger <cg@exept.de>
parents: 6516
diff changeset
   270
        category:categoryString
6fbe85d05646 ...in:... -> ...inEnvironment:...
Claus Gittinger <cg@exept.de>
parents: 6516
diff changeset
   271
        comment:commentString
6fbe85d05646 ...in:... -> ...inEnvironment:...
Claus Gittinger <cg@exept.de>
parents: 6516
diff changeset
   272
        changed:changed
6fbe85d05646 ...in:... -> ...inEnvironment:...
Claus Gittinger <cg@exept.de>
parents: 6516
diff changeset
   273
        classInstanceVariableNames:nil
6fbe85d05646 ...in:... -> ...inEnvironment:...
Claus Gittinger <cg@exept.de>
parents: 6516
diff changeset
   274
6fbe85d05646 ...in:... -> ...inEnvironment:...
Claus Gittinger <cg@exept.de>
parents: 6516
diff changeset
   275
    "Modified: 16.6.1997 / 11:53:58 / cg"
6fbe85d05646 ...in:... -> ...inEnvironment:...
Claus Gittinger <cg@exept.de>
parents: 6516
diff changeset
   276
!
6fbe85d05646 ...in:... -> ...inEnvironment:...
Claus Gittinger <cg@exept.de>
parents: 6516
diff changeset
   277
10475
acc087c36c83 documentation only
Claus Gittinger <cg@exept.de>
parents: 9712
diff changeset
   278
name:newName inEnvironment:aNameSpaceOrOwningClass
2668
fb4a2e42a60d Metaclass no longer responds to #category:
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
   279
             subclassOf:aClass
fb4a2e42a60d Metaclass no longer responds to #category:
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
   280
             instanceVariableNames:stringOfInstVarNames
fb4a2e42a60d Metaclass no longer responds to #category:
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
   281
             variable:variableBoolean
fb4a2e42a60d Metaclass no longer responds to #category:
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
   282
             words:wordsBoolean
fb4a2e42a60d Metaclass no longer responds to #category:
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
   283
             pointers:pointersBoolean
fb4a2e42a60d Metaclass no longer responds to #category:
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
   284
             classVariableNames:stringOfClassVarNames
fb4a2e42a60d Metaclass no longer responds to #category:
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
   285
             poolDictionaries:stringOfPoolNames
fb4a2e42a60d Metaclass no longer responds to #category:
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
   286
             category:categoryString
fb4a2e42a60d Metaclass no longer responds to #category:
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
   287
             comment:commentString
fb4a2e42a60d Metaclass no longer responds to #category:
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
   288
             changed:changed
2688
a7777c381e7e care for classInstVars when redefining superclass
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   289
             classInstanceVariableNames:stringOfClassInstVarNamesOrNil
1439
d8a58d20a93c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1416
diff changeset
   290
d8a58d20a93c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1416
diff changeset
   291
    "this is the main workhorse for installing new classes - special care
d8a58d20a93c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1416
diff changeset
   292
     has to be taken, when changing an existing classes definition. In this
d8a58d20a93c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1416
diff changeset
   293
     case, some or all of the methods and subclasses methods have to be
d8a58d20a93c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1416
diff changeset
   294
     recompiled.
d8a58d20a93c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1416
diff changeset
   295
     Also, the old class(es) are still kept (but not accessable as a global),
d8a58d20a93c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1416
diff changeset
   296
     to allow existing instances some life. 
d8a58d20a93c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1416
diff changeset
   297
     This might change in the future.
d8a58d20a93c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1416
diff changeset
   298
    "
6021
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   299
    |builder|
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   300
6516
68fdff63c92b allow for classBuilder to be provided by subclasses
Claus Gittinger <cg@exept.de>
parents: 6082
diff changeset
   301
    builder := self newClassBuilder.
6021
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   302
    builder name:newName 
10475
acc087c36c83 documentation only
Claus Gittinger <cg@exept.de>
parents: 9712
diff changeset
   303
        inEnvironment:aNameSpaceOrOwningClass
6021
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   304
        subclassOf:aClass
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   305
        instanceVariableNames:stringOfInstVarNames
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   306
        variable:variableBoolean
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   307
        words:wordsBoolean
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   308
        pointers:pointersBoolean
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   309
        classVariableNames:stringOfClassVarNames
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   310
        poolDictionaries:stringOfPoolNames
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   311
        category:categoryString
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   312
        comment:commentString
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   313
        changed:changed
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   314
        classInstanceVariableNames:stringOfClassInstVarNamesOrNil.
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   315
    ^ builder buildClass.
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   316
!
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   317
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   318
new
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   319
    "create & return a new metaclass (a classes class).
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   320
     Since metaclasses only have one instance (the class),
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   321
     complain if there is already one.
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   322
     You get a new class by sending #new to the returned metaclass
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   323
     (confusing - isn't it ?)"
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   324
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   325
    |newClass|
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   326
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   327
    myClass notNil ifTrue:[
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   328
        self error:'Each metaclass may only have one instance'.
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   329
    ].
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   330
    newClass := self basicNew.
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   331
    newClass 
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   332
        setSuperclass:Object
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   333
        methodDictionary:(MethodDictionary new)
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   334
        instSize:0 
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   335
        flags:(Behavior flagBehavior).
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   336
    myClass := newClass.
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   337
    ^ newClass
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   338
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   339
    "Modified: 1.4.1997 / 15:44:50 / stefan"
6516
68fdff63c92b allow for classBuilder to be provided by subclasses
Claus Gittinger <cg@exept.de>
parents: 6082
diff changeset
   340
!
68fdff63c92b allow for classBuilder to be provided by subclasses
Claus Gittinger <cg@exept.de>
parents: 6082
diff changeset
   341
68fdff63c92b allow for classBuilder to be provided by subclasses
Claus Gittinger <cg@exept.de>
parents: 6082
diff changeset
   342
newClassBuilder
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   343
    ^ ClassBuilder new metaclass:self class.
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   344
! !
a27a279701f8 Initial revision
claus
parents:
diff changeset
   345
5562
76675d5a0da9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5515
diff changeset
   346
!Metaclass methodsFor:'enumerating'!
76675d5a0da9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5515
diff changeset
   347
6078
13d651d69246 renamed: #allSelectorsAndMethodsDo: into: #instAndClassSelectorsAndMethodsDo:
Claus Gittinger <cg@exept.de>
parents: 6021
diff changeset
   348
instAndClassSelectorsAndMethodsDo:aTwoArgBlock
13d651d69246 renamed: #allSelectorsAndMethodsDo: into: #instAndClassSelectorsAndMethodsDo:
Claus Gittinger <cg@exept.de>
parents: 6021
diff changeset
   349
    myClass instAndClassSelectorsAndMethodsDo:aTwoArgBlock
7435
c5afb1b0fd1b Prepare for moving of SubclassInfo to subclass instcar in Class
Stefan Vogel <sv@exept.de>
parents: 7261
diff changeset
   350
!
c5afb1b0fd1b Prepare for moving of SubclassInfo to subclass instcar in Class
Stefan Vogel <sv@exept.de>
parents: 7261
diff changeset
   351
c5afb1b0fd1b Prepare for moving of SubclassInfo to subclass instcar in Class
Stefan Vogel <sv@exept.de>
parents: 7261
diff changeset
   352
subclassesDo:aBlock
c5afb1b0fd1b Prepare for moving of SubclassInfo to subclass instcar in Class
Stefan Vogel <sv@exept.de>
parents: 7261
diff changeset
   353
    "evaluate the argument, aBlock for all immediate subclasses.
c5afb1b0fd1b Prepare for moving of SubclassInfo to subclass instcar in Class
Stefan Vogel <sv@exept.de>
parents: 7261
diff changeset
   354
     This will only enumerate globally known classes - for anonymous
c5afb1b0fd1b Prepare for moving of SubclassInfo to subclass instcar in Class
Stefan Vogel <sv@exept.de>
parents: 7261
diff changeset
   355
     behaviors, you have to walk over all instances of Behavior."
c5afb1b0fd1b Prepare for moving of SubclassInfo to subclass instcar in Class
Stefan Vogel <sv@exept.de>
parents: 7261
diff changeset
   356
c5afb1b0fd1b Prepare for moving of SubclassInfo to subclass instcar in Class
Stefan Vogel <sv@exept.de>
parents: 7261
diff changeset
   357
    "metaclasses are not found via Smalltalk allClassesDo:
c5afb1b0fd1b Prepare for moving of SubclassInfo to subclass instcar in Class
Stefan Vogel <sv@exept.de>
parents: 7261
diff changeset
   358
     here, walk over classes and enumerate corresponding metas"
c5afb1b0fd1b Prepare for moving of SubclassInfo to subclass instcar in Class
Stefan Vogel <sv@exept.de>
parents: 7261
diff changeset
   359
c5afb1b0fd1b Prepare for moving of SubclassInfo to subclass instcar in Class
Stefan Vogel <sv@exept.de>
parents: 7261
diff changeset
   360
    self soleInstance subclassesDo:[:aSubClass |
c5afb1b0fd1b Prepare for moving of SubclassInfo to subclass instcar in Class
Stefan Vogel <sv@exept.de>
parents: 7261
diff changeset
   361
        aBlock value:aSubClass class
c5afb1b0fd1b Prepare for moving of SubclassInfo to subclass instcar in Class
Stefan Vogel <sv@exept.de>
parents: 7261
diff changeset
   362
    ].
5562
76675d5a0da9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5515
diff changeset
   363
! !
76675d5a0da9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5515
diff changeset
   364
3640
523d80dfc3ac added #fileOutDefinitionOn: (show c-instVars) for ST80 compatibility
Claus Gittinger <cg@exept.de>
parents: 3629
diff changeset
   365
!Metaclass methodsFor:'fileOut'!
523d80dfc3ac added #fileOutDefinitionOn: (show c-instVars) for ST80 compatibility
Claus Gittinger <cg@exept.de>
parents: 3629
diff changeset
   366
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   367
basicFileOutDefinitionOf:aClass on:aStream withNameSpace:forceNameSpace withPackage:showPackage 
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   368
    "append an expression on aStream, which defines myself."
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   369
8716
9fe96eaed619 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
   370
    |syntaxHilighting|
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   371
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   372
    UserPreferences isNil ifTrue:[
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   373
        syntaxHilighting := false
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   374
    ] ifFalse:[
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   375
        syntaxHilighting := UserPreferences current syntaxColoring.
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   376
    ].
8716
9fe96eaed619 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
   377
    self
9fe96eaed619 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
   378
        basicFileOutDefinitionOf:aClass 
9fe96eaed619 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
   379
        on:aStream 
9fe96eaed619 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
   380
        withNameSpace:forceNameSpace 
9fe96eaed619 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
   381
        withPackage:showPackage 
9fe96eaed619 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
   382
        syntaxHilighting:syntaxHilighting
9fe96eaed619 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
   383
!
9fe96eaed619 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
   384
9fe96eaed619 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
   385
basicFileOutDefinitionOf:aClass on:aStream withNameSpace:forceNameSpace withPackage:showPackage syntaxHilighting:syntaxHilighting
9fe96eaed619 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
   386
    "append an expression on aStream, which defines myself."
9fe96eaed619 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
   387
9fe96eaed619 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8551
diff changeset
   388
    |s owner ns nsName fullName forceNoNameSpace superNameWithoutNameSpacePrefix cls topOwner
9689
6213791d1760 do not store NoProject-classes (leave them unspecified in the source)
Claus Gittinger <cg@exept.de>
parents: 9197
diff changeset
   389
     superclass superclassNamespace nm useStoreString boldOn boldOff pkg|
8765
97227ad9480c care for non-valid classnames (spaces in name)
Claus Gittinger <cg@exept.de>
parents: 8716
diff changeset
   390
97227ad9480c care for non-valid classnames (spaces in name)
Claus Gittinger <cg@exept.de>
parents: 8716
diff changeset
   391
    syntaxHilighting ifTrue:[
9175
2d009bbc418b care for definition of a class, where the superclass
Claus Gittinger <cg@exept.de>
parents: 8765
diff changeset
   392
        boldOn := [aStream bold].
2d009bbc418b care for definition of a class, where the superclass
Claus Gittinger <cg@exept.de>
parents: 8765
diff changeset
   393
        boldOff := [aStream normal].
8765
97227ad9480c care for non-valid classnames (spaces in name)
Claus Gittinger <cg@exept.de>
parents: 8716
diff changeset
   394
    ].
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   395
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   396
    fullName := FileOutNameSpaceQuerySignal query == true.
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   397
    owner := aClass owningClass.
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   398
    ns := aClass topNameSpace.
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   399
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   400
    (showPackage and:[owner isNil]) ifTrue:[
9689
6213791d1760 do not store NoProject-classes (leave them unspecified in the source)
Claus Gittinger <cg@exept.de>
parents: 9197
diff changeset
   401
        pkg := aClass getPackage.
6213791d1760 do not store NoProject-classes (leave them unspecified in the source)
Claus Gittinger <cg@exept.de>
parents: 9197
diff changeset
   402
        (pkg notNil and:[pkg ~= Project noProjectID]) ifTrue:[
6213791d1760 do not store NoProject-classes (leave them unspecified in the source)
Claus Gittinger <cg@exept.de>
parents: 9197
diff changeset
   403
            aStream nextPutAll:'"{ Package: '''.
6213791d1760 do not store NoProject-classes (leave them unspecified in the source)
Claus Gittinger <cg@exept.de>
parents: 9197
diff changeset
   404
            aStream nextPutAll:aClass package asString.
6213791d1760 do not store NoProject-classes (leave them unspecified in the source)
Claus Gittinger <cg@exept.de>
parents: 9197
diff changeset
   405
            aStream nextPutAll:''' }"'; cr; cr.
6213791d1760 do not store NoProject-classes (leave them unspecified in the source)
Claus Gittinger <cg@exept.de>
parents: 9197
diff changeset
   406
        ]
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   407
    ].
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   408
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   409
    "/ the backward compatible namespace directive is only used
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   410
    "/ for non-private classes.
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   411
    "/ Private classes cannot be filed into another smalltalk anyway,
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   412
    "/ and there is no need to complicate global lookup in stc...
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   413
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   414
    owner notNil ifTrue:[
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   415
        forceNoNameSpace := ForceNoNameSpaceQuerySignal query == true.
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   416
        forceNoNameSpace ifFalse:[
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   417
            fullName := true.    
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   418
        ]
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   419
    ].
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   420
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   421
    fullName ifFalse:[
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   422
        (owner isNil or:[forceNameSpace]) ifTrue:[
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   423
            (ns notNil and:[ns ~~ Smalltalk]) ifTrue:[
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   424
                nsName := ns name.
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   425
                (nsName includes:$:) ifTrue:[
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   426
                    nsName := '''' , nsName , ''''
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   427
                ].
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   428
                aStream nextPutAll:'"{ NameSpace: '.
9175
2d009bbc418b care for definition of a class, where the superclass
Claus Gittinger <cg@exept.de>
parents: 8765
diff changeset
   429
                boldOn value.
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   430
                aStream nextPutAll:nsName.
9175
2d009bbc418b care for definition of a class, where the superclass
Claus Gittinger <cg@exept.de>
parents: 8765
diff changeset
   431
                boldOff value.
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   432
                aStream nextPutAll:' }"'; cr; cr.
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   433
            ]
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   434
        ].
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   435
    ].
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   436
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   437
    "take care of nil-superclass"
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   438
    superclass := aClass superclass.
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   439
    superclass isNil ifTrue:[
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   440
        s := 'nil'
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   441
    ] ifFalse:[
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   442
        superclassNamespace := superclass nameSpace.
9197
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   443
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   444
        "/ be careful: if the superclasses ns is Smalltalk,
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   445
        "/ AND this is the definition of a private class,
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   446
        "/ AND a private class with the same name as my superclas
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   447
        "/ exists in my owning class,
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   448
        "/ THEN we MUST add the smalltalk-prefix.
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   449
        "/ (otherwise, we get the private class as superclass when accepting the
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   450
        "/  next time)
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   451
        (owner notNil
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   452
        and:[ superclassNamespace == Smalltalk 
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   453
        and:[ (owner privateClassesAt:superclass name) notNil ]]) ifTrue:[
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   454
            s := superclass nameWithNameSpacePrefix.
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   455
        ] ifFalse:[
9197
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   456
            fullName ifTrue:[
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   457
                s := superclass name.
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   458
            ] ifFalse:[
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   459
                (ns == superclassNamespace 
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   460
                and:[superclass owningClass isNil]) ifTrue:[
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   461
                    "/ superclass is in the same namespace and not private;
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   462
                    "/ still prepend namespace prefix for private classes,
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   463
                    "/  to avoid confusing stc, which needs that information.
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   464
                    "/ LATE note (AUG2002) - no longer; stc was fixed.
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   465
"/                owner notNil ifTrue:[
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   466
"/                    s := superclass name
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   467
"/                ] ifFalse:[
9197
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   468
                        s := superclass nameWithoutPrefix
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   469
"/                ]
9197
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   470
                ] ifFalse:[
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   471
                    "/ a very special (rare) situation:
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   472
                    "/ my superclass resides in another nameSpace,
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   473
                    "/ but there is something else named like this
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   474
                    "/ to be found in my nameSpace (or a private class)
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   475
9197
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   476
                    superNameWithoutNameSpacePrefix := superclass nameWithoutNameSpacePrefix asSymbol.
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   477
                    cls := aClass privateClassesAt:superNameWithoutNameSpacePrefix.
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   478
                    cls isNil ifTrue:[
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   479
                        (topOwner := aClass topOwningClass) isNil ifTrue:[
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   480
                            ns := aClass nameSpace.
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   481
                            ns notNil ifTrue:[
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   482
                                cls := ns privateClassesAt:superNameWithoutNameSpacePrefix
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   483
                            ] ifFalse:[
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   484
                                "/ aClass error:'unexpected nil namespace'
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   485
                            ]
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   486
                        ] ifFalse:[
9197
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   487
                            cls := topOwner nameSpace at:superNameWithoutNameSpacePrefix.
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   488
                        ]
9197
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   489
                    ].
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   490
                    (cls notNil and:[cls ~~ superclass]) ifTrue:[
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   491
                        s := superclassNamespace name , '::' , superNameWithoutNameSpacePrefix
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   492
                    ] ifFalse:[
9197
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   493
                        "/ no class with that name found in my namespace ...
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   494
                        "/ if the superclass resides in Smalltalk,
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   495
                        "/ suppress prefix; otherwise, use full prefix.
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   496
                        (superclassNamespace notNil 
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   497
                         and:[superclassNamespace ~~ Smalltalk]) ifTrue:[
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   498
                            (owner notNil
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   499
                             and:[(topOwner := owner topOwningClass) notNil
10740
Claus Gittinger <cg@exept.de>
parents: 10739
diff changeset
   500
                             and:[superclass topOwningClass notNil
Claus Gittinger <cg@exept.de>
parents: 10739
diff changeset
   501
                             and:[topOwner nameSpace == superclass topOwningClass "owningClass" nameSpace]
9197
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   502
                            ]]) ifTrue:[
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   503
                                s := superNameWithoutNameSpacePrefix
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   504
                            ] ifFalse:[
9197
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   505
                                ns == superclass topNameSpace ifTrue:[
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   506
                                    s := superNameWithoutNameSpacePrefix
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   507
                                ] ifFalse:[
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   508
                                    s := superclass name
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   509
                                ]
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   510
                            ]
9197
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   511
                        ] ifFalse:[
e900514c8065 superclass name again
Claus Gittinger <cg@exept.de>
parents: 9175
diff changeset
   512
                            s := superNameWithoutNameSpacePrefix
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   513
                        ]
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   514
                    ]
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   515
                ]
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   516
            ]
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   517
        ]
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   518
    ].
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   519
9175
2d009bbc418b care for definition of a class, where the superclass
Claus Gittinger <cg@exept.de>
parents: 8765
diff changeset
   520
    boldOn value.
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   521
    aStream nextPutAll:s.   "/ superclass
9175
2d009bbc418b care for definition of a class, where the superclass
Claus Gittinger <cg@exept.de>
parents: 8765
diff changeset
   522
    boldOff value.
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   523
    aStream space.
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   524
    aClass basicFileOutInstvarTypeKeywordOn:aStream.
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   525
8765
97227ad9480c care for non-valid classnames (spaces in name)
Claus Gittinger <cg@exept.de>
parents: 8716
diff changeset
   526
    useStoreString := false.
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   527
    (fullName and:[owner isNil]) ifTrue:[
8765
97227ad9480c care for non-valid classnames (spaces in name)
Claus Gittinger <cg@exept.de>
parents: 8716
diff changeset
   528
        nm := aClass name.
97227ad9480c care for non-valid classnames (spaces in name)
Claus Gittinger <cg@exept.de>
parents: 8716
diff changeset
   529
        useStoreString := true.
97227ad9480c care for non-valid classnames (spaces in name)
Claus Gittinger <cg@exept.de>
parents: 8716
diff changeset
   530
    ] ifFalse:[
97227ad9480c care for non-valid classnames (spaces in name)
Claus Gittinger <cg@exept.de>
parents: 8716
diff changeset
   531
        nm := aClass nameWithoutPrefix.
97227ad9480c care for non-valid classnames (spaces in name)
Claus Gittinger <cg@exept.de>
parents: 8716
diff changeset
   532
        nm isValidSmalltalkIdentifier ifFalse:[
97227ad9480c care for non-valid classnames (spaces in name)
Claus Gittinger <cg@exept.de>
parents: 8716
diff changeset
   533
            useStoreString := true.
97227ad9480c care for non-valid classnames (spaces in name)
Claus Gittinger <cg@exept.de>
parents: 8716
diff changeset
   534
        ].
97227ad9480c care for non-valid classnames (spaces in name)
Claus Gittinger <cg@exept.de>
parents: 8716
diff changeset
   535
    ].
97227ad9480c care for non-valid classnames (spaces in name)
Claus Gittinger <cg@exept.de>
parents: 8716
diff changeset
   536
    aStream nextPut:$#.
97227ad9480c care for non-valid classnames (spaces in name)
Claus Gittinger <cg@exept.de>
parents: 8716
diff changeset
   537
    useStoreString ifTrue:[
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   538
        aStream nextPutAll:''''.
8765
97227ad9480c care for non-valid classnames (spaces in name)
Claus Gittinger <cg@exept.de>
parents: 8716
diff changeset
   539
    ].
9175
2d009bbc418b care for definition of a class, where the superclass
Claus Gittinger <cg@exept.de>
parents: 8765
diff changeset
   540
    boldOn value.
8765
97227ad9480c care for non-valid classnames (spaces in name)
Claus Gittinger <cg@exept.de>
parents: 8716
diff changeset
   541
    aStream nextPutAll:nm.
9175
2d009bbc418b care for definition of a class, where the superclass
Claus Gittinger <cg@exept.de>
parents: 8765
diff changeset
   542
    boldOff value.
8765
97227ad9480c care for non-valid classnames (spaces in name)
Claus Gittinger <cg@exept.de>
parents: 8716
diff changeset
   543
    useStoreString ifTrue:[
97227ad9480c care for non-valid classnames (spaces in name)
Claus Gittinger <cg@exept.de>
parents: 8716
diff changeset
   544
        aStream nextPutAll:''''.
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   545
    ].
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   546
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   547
    aStream crtab. 
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   548
    aStream nextPutAll:'instanceVariableNames:'''.
9175
2d009bbc418b care for definition of a class, where the superclass
Claus Gittinger <cg@exept.de>
parents: 8765
diff changeset
   549
    boldOn value.
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   550
    aClass printInstVarNamesOn:aStream indent:16.
9175
2d009bbc418b care for definition of a class, where the superclass
Claus Gittinger <cg@exept.de>
parents: 8765
diff changeset
   551
    boldOff value.
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   552
    aStream nextPutAll:''''.
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   553
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   554
    aStream crtab.
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   555
    aStream nextPutAll:'classVariableNames:'''.
9175
2d009bbc418b care for definition of a class, where the superclass
Claus Gittinger <cg@exept.de>
parents: 8765
diff changeset
   556
    boldOn value.
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   557
    aClass printClassVarNamesOn:aStream indent:16.
9175
2d009bbc418b care for definition of a class, where the superclass
Claus Gittinger <cg@exept.de>
parents: 8765
diff changeset
   558
    boldOff value.
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   559
    aStream nextPutAll:''''.
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   560
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   561
    aStream crtab.
8551
de314b9f8fa3 sharedPools
ca
parents: 8277
diff changeset
   562
    aStream nextPutAll:'poolDictionaries:'''.
9175
2d009bbc418b care for definition of a class, where the superclass
Claus Gittinger <cg@exept.de>
parents: 8765
diff changeset
   563
    boldOn value.
8551
de314b9f8fa3 sharedPools
ca
parents: 8277
diff changeset
   564
    aClass printSharedPoolNamesOn:aStream indent:16.
9175
2d009bbc418b care for definition of a class, where the superclass
Claus Gittinger <cg@exept.de>
parents: 8765
diff changeset
   565
    boldOff value.
8551
de314b9f8fa3 sharedPools
ca
parents: 8277
diff changeset
   566
    aStream nextPutAll:''''.
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   567
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   568
    aStream crtab.
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   569
    owner isNil ifTrue:[
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   570
        "/ a public class
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   571
        aStream nextPutAll:'category:'.
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   572
        aClass category isNil ifTrue:[
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   573
            s := ''''''
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   574
        ] ifFalse:[
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   575
            s := aClass category asString storeString
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   576
        ].
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   577
        aStream nextPutAll:s.
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   578
    ] ifFalse:[
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   579
        "/ a private class
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   580
        aStream nextPutAll:'privateIn:'.
9175
2d009bbc418b care for definition of a class, where the superclass
Claus Gittinger <cg@exept.de>
parents: 8765
diff changeset
   581
        boldOn value.
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   582
        fullName ifTrue:[
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   583
            s := owner name.
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   584
        ] ifFalse:[
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   585
            s := owner nameWithoutNameSpacePrefix.
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   586
        ].
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   587
        aStream nextPutAll:s.
9175
2d009bbc418b care for definition of a class, where the superclass
Claus Gittinger <cg@exept.de>
parents: 8765
diff changeset
   588
        boldOff value.
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   589
    ].
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   590
    aStream cr
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   591
10739
9602cd5ad8a0 changed #basicFileOutDefinitionOf:on:withNameSpace:withPackage:syntaxHilighting:
Claus Gittinger <cg@exept.de>
parents: 10475
diff changeset
   592
    "Created: / 04-01-1997 / 20:38:16 / cg"
9602cd5ad8a0 changed #basicFileOutDefinitionOf:on:withNameSpace:withPackage:syntaxHilighting:
Claus Gittinger <cg@exept.de>
parents: 10475
diff changeset
   593
    "Modified: / 18-03-1999 / 18:15:46 / stefan"
10740
Claus Gittinger <cg@exept.de>
parents: 10739
diff changeset
   594
    "Modified: / 08-10-2007 / 13:28:59 / cg"
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   595
!
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   596
8277
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   597
fileOutClassInstVarDefinitionOn:aStream withNameSpace:withNameSpace
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   598
    "append an expression to define my classInstanceVariables on aStream"
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   599
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   600
    |anySuperClassInstVar|
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   601
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   602
    myClass isLoaded ifFalse:[
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   603
        ^ myClass basicFileOutDefinitionOn:aStream withNameSpace:withNameSpace
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   604
    ].
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   605
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   606
    withNameSpace ifTrue:[
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   607
        myClass name printOn:aStream.
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   608
    ] ifFalse:[
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   609
        myClass printClassNameOn:aStream.
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   610
    ].
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   611
    aStream nextPutAll:' class instanceVariableNames:'''.
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   612
    self printInstVarNamesOn:aStream indent:8.
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   613
    aStream nextPutAll:''''.
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   614
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   615
    "mhmh - good idea; saw this in SmallDraw sourcecode ..."
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   616
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   617
    anySuperClassInstVar := false.
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   618
    myClass allSuperclassesDo:[:aSuperClass |
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   619
        aSuperClass class instVarNames do:[:ignored | anySuperClassInstVar := true].
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   620
    ].
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   621
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   622
    aStream cr; cr; nextPut:(Character doubleQuote); cr; space.
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   623
    anySuperClassInstVar ifFalse:[
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   624
        aStream  
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   625
            nextPutLine:'No other class instance variables are inherited by this class.'.
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   626
    ] ifTrue:[
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   627
        aStream  
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   628
            nextPutLine:'The following class instance variables are inherited by this class:'.
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   629
        aStream cr.
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   630
        myClass allSuperclassesDo:[:aSuperClass |
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   631
            aStream tab; nextPutAll:aSuperClass name; nextPutAll:' - '.
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   632
            aStream nextPutLine:(aSuperClass class instanceVariableString).
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   633
        ].
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   634
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   635
    ].
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   636
    aStream nextPut:(Character doubleQuote); cr.
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   637
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   638
    "Created: / 10.12.1995 / 16:31:25 / cg"
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   639
    "Modified: / 1.4.1997 / 16:00:33 / stefan"
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   640
    "Modified: / 3.2.2000 / 23:05:28 / cg"
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   641
!
357428ca03c5 classInstVar definition string (for non-ST metaclasses)
Claus Gittinger <cg@exept.de>
parents: 8228
diff changeset
   642
3640
523d80dfc3ac added #fileOutDefinitionOn: (show c-instVars) for ST80 compatibility
Claus Gittinger <cg@exept.de>
parents: 3629
diff changeset
   643
fileOutDefinitionOn:aStream
523d80dfc3ac added #fileOutDefinitionOn: (show c-instVars) for ST80 compatibility
Claus Gittinger <cg@exept.de>
parents: 3629
diff changeset
   644
    myClass fileOutClassInstVarDefinitionOn:aStream
523d80dfc3ac added #fileOutDefinitionOn: (show c-instVars) for ST80 compatibility
Claus Gittinger <cg@exept.de>
parents: 3629
diff changeset
   645
523d80dfc3ac added #fileOutDefinitionOn: (show c-instVars) for ST80 compatibility
Claus Gittinger <cg@exept.de>
parents: 3629
diff changeset
   646
    "Modified: / 21.6.1998 / 04:10:02 / cg"
8228
cd5c696619a3 use chunkfilewriter for fileOut
ca
parents: 7617
diff changeset
   647
!
cd5c696619a3 use chunkfilewriter for fileOut
ca
parents: 7617
diff changeset
   648
cd5c696619a3 use chunkfilewriter for fileOut
ca
parents: 7617
diff changeset
   649
fileOutOn:outStreamArg withTimeStamp:stampIt withInitialize:initIt withDefinition:withDefinition methodFilter:methodFilter encoder:encoderOrNil
cd5c696619a3 use chunkfilewriter for fileOut
ca
parents: 7617
diff changeset
   650
    "file out my definition and all methods onto aStream.
cd5c696619a3 use chunkfilewriter for fileOut
ca
parents: 7617
diff changeset
   651
     If stampIt is true, a timeStamp comment is prepended.
cd5c696619a3 use chunkfilewriter for fileOut
ca
parents: 7617
diff changeset
   652
     If initIt is true, and the class implements a class-initialize method,
cd5c696619a3 use chunkfilewriter for fileOut
ca
parents: 7617
diff changeset
   653
     append a corresponding doIt expression for initialization.
cd5c696619a3 use chunkfilewriter for fileOut
ca
parents: 7617
diff changeset
   654
     The order by which the fileOut is done is used to put the version string at the end.
cd5c696619a3 use chunkfilewriter for fileOut
ca
parents: 7617
diff changeset
   655
     Thus, if the version string is expanded (by CVS), the characterPositions of methods should not move"
cd5c696619a3 use chunkfilewriter for fileOut
ca
parents: 7617
diff changeset
   656
17727
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   657
    self language sourceFileWriterClass new
8228
cd5c696619a3 use chunkfilewriter for fileOut
ca
parents: 7617
diff changeset
   658
        fileOut:myClass on:outStreamArg withTimeStamp:stampIt 
cd5c696619a3 use chunkfilewriter for fileOut
ca
parents: 7617
diff changeset
   659
        withInitialize:initIt withDefinition:withDefinition 
cd5c696619a3 use chunkfilewriter for fileOut
ca
parents: 7617
diff changeset
   660
        methodFilter:methodFilter encoder:encoderOrNil
17727
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   661
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   662
    "Modified: / 16-08-2009 / 09:52:41 / Jan Vrany <vranyj1@fel.cvut.cz>"
3640
523d80dfc3ac added #fileOutDefinitionOn: (show c-instVars) for ST80 compatibility
Claus Gittinger <cg@exept.de>
parents: 3629
diff changeset
   663
! !
523d80dfc3ac added #fileOutDefinitionOn: (show c-instVars) for ST80 compatibility
Claus Gittinger <cg@exept.de>
parents: 3629
diff changeset
   664
17727
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   665
1875
215b61efaae9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1835
diff changeset
   666
!Metaclass methodsFor:'private'!
68
59faa75185ba *** empty log message ***
claus
parents: 49
diff changeset
   667
6021
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   668
setSoleInstance:aClass 
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   669
    myClass := aClass
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   670
3fe69dd0d081 Use ClassBuilder
Claus Gittinger <cg@exept.de>
parents: 5994
diff changeset
   671
    "Created: 12.12.1995 / 13:46:22 / cg"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   672
! !
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   673
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   674
!Metaclass methodsFor:'queries'!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   675
2666
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   676
category
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   677
    "return my category"
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   678
7617
a557bbe96ef1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7518
diff changeset
   679
    myClass isNil ifTrue:[^ nil].    
2666
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   680
    ^ myClass category
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   681
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   682
    "Created: 2.4.1997 / 00:46:11 / stefan"
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   683
!
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   684
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   685
comment
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   686
    "return my comment"
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   687
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   688
    ^ myClass comment
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   689
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   690
    "Created: 2.4.1997 / 00:51:35 / stefan"
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   691
!
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   692
9712
02d0e21d6c67 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9695
diff changeset
   693
getPackage
02d0e21d6c67 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9695
diff changeset
   694
    "return my package-id"
02d0e21d6c67 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9695
diff changeset
   695
02d0e21d6c67 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9695
diff changeset
   696
    ^ myClass getPackage
02d0e21d6c67 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9695
diff changeset
   697
02d0e21d6c67 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9695
diff changeset
   698
    "Created: 15.10.1996 / 19:44:51 / cg"
02d0e21d6c67 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9695
diff changeset
   699
!
02d0e21d6c67 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9695
diff changeset
   700
5574
0fa555d3a5a9 #hasExtensions query
Claus Gittinger <cg@exept.de>
parents: 5562
diff changeset
   701
hasExtensions
0fa555d3a5a9 #hasExtensions query
Claus Gittinger <cg@exept.de>
parents: 5562
diff changeset
   702
    "return true if I have extensions"
0fa555d3a5a9 #hasExtensions query
Claus Gittinger <cg@exept.de>
parents: 5562
diff changeset
   703
0fa555d3a5a9 #hasExtensions query
Claus Gittinger <cg@exept.de>
parents: 5562
diff changeset
   704
    ^ myClass hasExtensions
0fa555d3a5a9 #hasExtensions query
Claus Gittinger <cg@exept.de>
parents: 5562
diff changeset
   705
0fa555d3a5a9 #hasExtensions query
Claus Gittinger <cg@exept.de>
parents: 5562
diff changeset
   706
!
0fa555d3a5a9 #hasExtensions query
Claus Gittinger <cg@exept.de>
parents: 5562
diff changeset
   707
5659
58a0b506f1e1 added #hasExtensionsFrom:
Claus Gittinger <cg@exept.de>
parents: 5630
diff changeset
   708
hasExtensionsFrom:aPackageID
58a0b506f1e1 added #hasExtensionsFrom:
Claus Gittinger <cg@exept.de>
parents: 5630
diff changeset
   709
    "return true if I have extensions from a package"
58a0b506f1e1 added #hasExtensionsFrom:
Claus Gittinger <cg@exept.de>
parents: 5630
diff changeset
   710
58a0b506f1e1 added #hasExtensionsFrom:
Claus Gittinger <cg@exept.de>
parents: 5630
diff changeset
   711
    ^ myClass hasExtensionsFrom:aPackageID
58a0b506f1e1 added #hasExtensionsFrom:
Claus Gittinger <cg@exept.de>
parents: 5630
diff changeset
   712
!
58a0b506f1e1 added #hasExtensionsFrom:
Claus Gittinger <cg@exept.de>
parents: 5630
diff changeset
   713
1179
3e0f32177af4 allow subclasses of Class to be changed
Claus Gittinger <cg@exept.de>
parents: 1087
diff changeset
   714
isBuiltInClass
1266
cef9b3cd49df commentary
Claus Gittinger <cg@exept.de>
parents: 1179
diff changeset
   715
    "return true if this class is known by the run-time-system.
cef9b3cd49df commentary
Claus Gittinger <cg@exept.de>
parents: 1179
diff changeset
   716
     Here, true is returned for myself, false for subclasses."
cef9b3cd49df commentary
Claus Gittinger <cg@exept.de>
parents: 1179
diff changeset
   717
1179
3e0f32177af4 allow subclasses of Class to be changed
Claus Gittinger <cg@exept.de>
parents: 1087
diff changeset
   718
    ^ self == Metaclass class or:[self == Metaclass]
3e0f32177af4 allow subclasses of Class to be changed
Claus Gittinger <cg@exept.de>
parents: 1087
diff changeset
   719
3e0f32177af4 allow subclasses of Class to be changed
Claus Gittinger <cg@exept.de>
parents: 1087
diff changeset
   720
    "Created: 15.4.1996 / 17:17:34 / cg"
1266
cef9b3cd49df commentary
Claus Gittinger <cg@exept.de>
parents: 1179
diff changeset
   721
    "Modified: 23.4.1996 / 15:59:37 / cg"
1179
3e0f32177af4 allow subclasses of Class to be changed
Claus Gittinger <cg@exept.de>
parents: 1087
diff changeset
   722
!
3e0f32177af4 allow subclasses of Class to be changed
Claus Gittinger <cg@exept.de>
parents: 1087
diff changeset
   723
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   724
isMeta
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   725
    "return true, if the receiver is some kind of metaclass;
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   726
     true is returned here. Redefines isMeta in Object"
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   727
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   728
    ^ true
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   729
!
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   730
2666
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   731
name
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   732
    "return my name - that is the name of my sole class, with ' class'
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   733
     appended."
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   734
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   735
    |nm|
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   736
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   737
    myClass isNil ifTrue:[
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   738
        ^ #someMetaclass
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   739
    ].
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   740
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   741
    (nm := myClass name) isNil ifTrue:[
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   742
        'Metaclass [warning]: no name in my class' errorPrintCR.
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   743
        ^ #'unnamed class'
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   744
    ].
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   745
    ^ nm , ' class'
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   746
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   747
    "Modified: 10.1.1997 / 17:55:08 / cg"
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   748
    "Modified: 1.4.1997 / 15:53:11 / stefan"
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   749
!
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   750
1920
6178e0048794 added namespace query
Claus Gittinger <cg@exept.de>
parents: 1916
diff changeset
   751
nameSpace
6178e0048794 added namespace query
Claus Gittinger <cg@exept.de>
parents: 1916
diff changeset
   752
    "return the nameSpace I am contained in.
6178e0048794 added namespace query
Claus Gittinger <cg@exept.de>
parents: 1916
diff changeset
   753
     Due to the implementation of nameSpaces (as classVariables),
6178e0048794 added namespace query
Claus Gittinger <cg@exept.de>
parents: 1916
diff changeset
   754
     a class can only be contained in one nameSpace (which is the desired)"
6178e0048794 added namespace query
Claus Gittinger <cg@exept.de>
parents: 1916
diff changeset
   755
6178e0048794 added namespace query
Claus Gittinger <cg@exept.de>
parents: 1916
diff changeset
   756
    "/ this information is in the class
6178e0048794 added namespace query
Claus Gittinger <cg@exept.de>
parents: 1916
diff changeset
   757
6178e0048794 added namespace query
Claus Gittinger <cg@exept.de>
parents: 1916
diff changeset
   758
    ^ myClass nameSpace
6178e0048794 added namespace query
Claus Gittinger <cg@exept.de>
parents: 1916
diff changeset
   759
6178e0048794 added namespace query
Claus Gittinger <cg@exept.de>
parents: 1916
diff changeset
   760
    "Created: 7.11.1996 / 13:18:52 / cg"
6178e0048794 added namespace query
Claus Gittinger <cg@exept.de>
parents: 1916
diff changeset
   761
!
6178e0048794 added namespace query
Claus Gittinger <cg@exept.de>
parents: 1916
diff changeset
   762
1724
ef3f680996db support for private classes
Claus Gittinger <cg@exept.de>
parents: 1698
diff changeset
   763
owningClass
ef3f680996db support for private classes
Claus Gittinger <cg@exept.de>
parents: 1698
diff changeset
   764
    "return nil here - regular metaclasses are never private"
ef3f680996db support for private classes
Claus Gittinger <cg@exept.de>
parents: 1698
diff changeset
   765
ef3f680996db support for private classes
Claus Gittinger <cg@exept.de>
parents: 1698
diff changeset
   766
    ^ nil
ef3f680996db support for private classes
Claus Gittinger <cg@exept.de>
parents: 1698
diff changeset
   767
ef3f680996db support for private classes
Claus Gittinger <cg@exept.de>
parents: 1698
diff changeset
   768
    "Created: 12.10.1996 / 20:12:16 / cg"
ef3f680996db support for private classes
Claus Gittinger <cg@exept.de>
parents: 1698
diff changeset
   769
!
ef3f680996db support for private classes
Claus Gittinger <cg@exept.de>
parents: 1698
diff changeset
   770
1757
c153e56cbcad *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   771
package
c153e56cbcad *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   772
    "return my package-id"
c153e56cbcad *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   773
c153e56cbcad *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   774
    ^ myClass package
c153e56cbcad *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   775
c153e56cbcad *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   776
    "Created: 15.10.1996 / 19:44:51 / cg"
c153e56cbcad *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   777
!
c153e56cbcad *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1752
diff changeset
   778
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   779
soleInstance 
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   780
    "return my sole class."
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   781
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   782
    ^ myClass
2047
8150a3ae6fa0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2039
diff changeset
   783
!
8150a3ae6fa0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2039
diff changeset
   784
7435
c5afb1b0fd1b Prepare for moving of SubclassInfo to subclass instcar in Class
Stefan Vogel <sv@exept.de>
parents: 7261
diff changeset
   785
subclasses
c5afb1b0fd1b Prepare for moving of SubclassInfo to subclass instcar in Class
Stefan Vogel <sv@exept.de>
parents: 7261
diff changeset
   786
c5afb1b0fd1b Prepare for moving of SubclassInfo to subclass instcar in Class
Stefan Vogel <sv@exept.de>
parents: 7261
diff changeset
   787
    ^ myClass subclasses collect:[:theNonMetaClass| theNonMetaClass class].
c5afb1b0fd1b Prepare for moving of SubclassInfo to subclass instcar in Class
Stefan Vogel <sv@exept.de>
parents: 7261
diff changeset
   788
c5afb1b0fd1b Prepare for moving of SubclassInfo to subclass instcar in Class
Stefan Vogel <sv@exept.de>
parents: 7261
diff changeset
   789
    "
c5afb1b0fd1b Prepare for moving of SubclassInfo to subclass instcar in Class
Stefan Vogel <sv@exept.de>
parents: 7261
diff changeset
   790
       Integer class subclasses
c5afb1b0fd1b Prepare for moving of SubclassInfo to subclass instcar in Class
Stefan Vogel <sv@exept.de>
parents: 7261
diff changeset
   791
    "
c5afb1b0fd1b Prepare for moving of SubclassInfo to subclass instcar in Class
Stefan Vogel <sv@exept.de>
parents: 7261
diff changeset
   792
!
c5afb1b0fd1b Prepare for moving of SubclassInfo to subclass instcar in Class
Stefan Vogel <sv@exept.de>
parents: 7261
diff changeset
   793
5217
3f9682e47725 added #theNonMetaclass & #theMetaclass,
Claus Gittinger <cg@exept.de>
parents: 5191
diff changeset
   794
theMetaclass
9695
50d764d178d1 comment
Claus Gittinger <cg@exept.de>
parents: 9689
diff changeset
   795
    "return the metaClass of the class-meta pair.
50d764d178d1 comment
Claus Gittinger <cg@exept.de>
parents: 9689
diff changeset
   796
     Here, return myself, because I am the metaclass.
50d764d178d1 comment
Claus Gittinger <cg@exept.de>
parents: 9689
diff changeset
   797
     Also implemented in my class, which also returns me."
5217
3f9682e47725 added #theNonMetaclass & #theMetaclass,
Claus Gittinger <cg@exept.de>
parents: 5191
diff changeset
   798
3f9682e47725 added #theNonMetaclass & #theMetaclass,
Claus Gittinger <cg@exept.de>
parents: 5191
diff changeset
   799
    ^ self
3f9682e47725 added #theNonMetaclass & #theMetaclass,
Claus Gittinger <cg@exept.de>
parents: 5191
diff changeset
   800
3f9682e47725 added #theNonMetaclass & #theMetaclass,
Claus Gittinger <cg@exept.de>
parents: 5191
diff changeset
   801
    "Created: / 30.1.2000 / 23:08:15 / cg"
3f9682e47725 added #theNonMetaclass & #theMetaclass,
Claus Gittinger <cg@exept.de>
parents: 5191
diff changeset
   802
    "Modified: / 31.1.2000 / 16:15:00 / cg"
3f9682e47725 added #theNonMetaclass & #theMetaclass,
Claus Gittinger <cg@exept.de>
parents: 5191
diff changeset
   803
!
3f9682e47725 added #theNonMetaclass & #theMetaclass,
Claus Gittinger <cg@exept.de>
parents: 5191
diff changeset
   804
3f9682e47725 added #theNonMetaclass & #theMetaclass,
Claus Gittinger <cg@exept.de>
parents: 5191
diff changeset
   805
theNonMetaclass
9695
50d764d178d1 comment
Claus Gittinger <cg@exept.de>
parents: 9689
diff changeset
   806
    "return the nonMetaClass of the class-meta pair.
50d764d178d1 comment
Claus Gittinger <cg@exept.de>
parents: 9689
diff changeset
   807
     Here, return my class object, because I am the metaclass.
50d764d178d1 comment
Claus Gittinger <cg@exept.de>
parents: 9689
diff changeset
   808
     Also implemented in my class, which returns itself."
5217
3f9682e47725 added #theNonMetaclass & #theMetaclass,
Claus Gittinger <cg@exept.de>
parents: 5191
diff changeset
   809
3f9682e47725 added #theNonMetaclass & #theMetaclass,
Claus Gittinger <cg@exept.de>
parents: 5191
diff changeset
   810
    ^ self soleInstance
3f9682e47725 added #theNonMetaclass & #theMetaclass,
Claus Gittinger <cg@exept.de>
parents: 5191
diff changeset
   811
3f9682e47725 added #theNonMetaclass & #theMetaclass,
Claus Gittinger <cg@exept.de>
parents: 5191
diff changeset
   812
    "Created: / 30.1.2000 / 23:08:11 / cg"
5218
603197cdcfe9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 5217
diff changeset
   813
    "Modified: / 31.1.2000 / 16:17:02 / cg"
5217
3f9682e47725 added #theNonMetaclass & #theMetaclass,
Claus Gittinger <cg@exept.de>
parents: 5191
diff changeset
   814
!
3f9682e47725 added #theNonMetaclass & #theMetaclass,
Claus Gittinger <cg@exept.de>
parents: 5191
diff changeset
   815
2047
8150a3ae6fa0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2039
diff changeset
   816
topOwningClass
8150a3ae6fa0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2039
diff changeset
   817
    "return nil here - regular metaclasses are never private"
8150a3ae6fa0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2039
diff changeset
   818
8150a3ae6fa0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2039
diff changeset
   819
    ^ nil
8150a3ae6fa0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2039
diff changeset
   820
8150a3ae6fa0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2039
diff changeset
   821
    "Created: 3.1.1997 / 19:18:06 / cg"
457
41c73cbee305 change classes versionString when class changes (prepare for sourceCode system)
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   822
! !
621
87602c9d071c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 566
diff changeset
   823
2666
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   824
!Metaclass methodsFor:'source management'!
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   825
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   826
binaryRevision
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   827
    ^ myClass binaryRevision
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   828
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   829
    "
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   830
     Object binaryRevision
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   831
     Object class binaryRevision
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   832
    "
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   833
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   834
    "Modified: 2.4.1997 / 01:17:04 / stefan"
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   835
!
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   836
8228
cd5c696619a3 use chunkfilewriter for fileOut
ca
parents: 7617
diff changeset
   837
sourceFileSuffix
17727
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   838
    ^ self language sourceFileSuffix
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   839
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   840
    "Modified: / 15-08-2009 / 22:46:44 / Jan Vrany <vranyj1@fel.cvut.cz>"
8228
cd5c696619a3 use chunkfilewriter for fileOut
ca
parents: 7617
diff changeset
   841
!
cd5c696619a3 use chunkfilewriter for fileOut
ca
parents: 7617
diff changeset
   842
2666
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   843
sourceStream
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   844
    "return the classes source stream"
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   845
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   846
    ^ myClass sourceStream
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   847
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   848
    "Modified: 1.4.1997 / 14:36:31 / stefan"
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   849
!
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   850
4780
35deaaafd9b1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4774
diff changeset
   851
sourceStreamFor:sourceFileName
35deaaafd9b1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4774
diff changeset
   852
    "return the sourceStream for a sourceFileName"
2666
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   853
4780
35deaaafd9b1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4774
diff changeset
   854
    ^ myClass sourceStreamFor:sourceFileName
2666
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   855
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   856
    "Modified: 1.4.1997 / 14:36:38 / stefan"
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   857
! !
7981b615b48a Make Metaclass a subclass of ClassDescription instead of Class.
Stefan Vogel <sv@exept.de>
parents: 2584
diff changeset
   858
1742
e1ee359969f5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1733
diff changeset
   859
!Metaclass class methodsFor:'documentation'!
639
9ff94fa31be6 version at the end
Claus Gittinger <cg@exept.de>
parents: 621
diff changeset
   860
9ff94fa31be6 version at the end
Claus Gittinger <cg@exept.de>
parents: 621
diff changeset
   861
version
17727
3945dfe4659c multilanguage improvements mainly for loading projects with
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   862
    ^ '$Id: Metaclass.st 10465 2009-08-16 17:14:23Z vranyj1 $'
639
9ff94fa31be6 version at the end
Claus Gittinger <cg@exept.de>
parents: 621
diff changeset
   863
! !
6824
6fbe85d05646 ...in:... -> ...inEnvironment:...
Claus Gittinger <cg@exept.de>
parents: 6516
diff changeset
   864
2822
64829ed8f8c6 allow for conventions-dialog to be suppressed (offer a querySignal)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
   865
Metaclass initialize!