AutoloadMetaclass.st
author Claus Gittinger <cg@exept.de>
Thu, 02 Dec 1999 12:22:55 +0100
changeset 5049 d8279f59df21
parent 4577 c249aeceef0f
child 5271 63e66f4da9fe
permissions -rw-r--r--
added #includesIdentical:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4509
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     1
Metaclass subclass:#AutoloadMetaclass
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     2
	instanceVariableNames:''
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     3
	classVariableNames:''
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     4
	poolDictionaries:''
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     5
	category:'Kernel-Classes'
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     6
!
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     7
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     8
!AutoloadMetaclass class methodsFor:'documentation'!
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     9
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    10
documentation
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    11
"
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    12
    AutoloadMetaclass catches unhandled class methods, files in 
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    13
    the corresponding code when first used and resends the catched
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    14
    message to the now existing class.
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    15
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    16
    Autoload installs AutoloadMetaclass as its metaclass in #initialize. 
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    17
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    18
    [author:]
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    19
        Stefan Vogel
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    20
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    21
    [see also:]
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    22
        Autoload
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    23
"
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    24
! !
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    25
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    26
!AutoloadMetaclass methodsFor:'message catching'!
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    27
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    28
doesNotUnderstand:aMessage
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    29
    "caught a message; load the class and retry the message"
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    30
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    31
    |newClass|
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    32
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    33
    self ~~ AutoloadMetaclass ifTrue:[
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    34
        newClass := myClass autoload.
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    35
        newClass notNil ifTrue:[
4577
c249aeceef0f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4509
diff changeset
    36
            ^ aMessage sendTo:newClass class 
4509
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    37
        ]
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    38
    ].
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    39
    ^ super doesNotUnderstand:aMessage
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    40
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    41
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    42
    "
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    43
     Autoload xxx
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    44
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    45
     VisualPart unload.
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    46
     VisualPart xxx
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    47
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    48
     VisualPart unload.
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    49
     VisualPart defaultFont
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    50
    "
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    51
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    52
    "Modified: / 3.8.1999 / 13:57:05 / stefan"
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    53
! !
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    54
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    55
!AutoloadMetaclass class methodsFor:'documentation'!
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    56
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    57
version
4577
c249aeceef0f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4509
diff changeset
    58
    ^ '$Header: /cvs/stx/stx/libbasic/AutoloadMetaclass.st,v 1.2 1999-08-05 13:22:40 cg Exp $'
4509
a9cb45aa42b7 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    59
! !