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