PrivateMetaclass.st
author Claus Gittinger <cg@exept.de>
Wed, 23 Oct 1996 00:08:45 +0200
changeset 1807 202f0af2c2e1
parent 1757 c153e56cbcad
child 1920 6178e0048794
permissions -rw-r--r--
commentary

Metaclass subclass:#PrivateMetaclass
	instanceVariableNames:'owningClass'
	classVariableNames:''
	poolDictionaries:''
	category:'Kernel-Classes'
!

!PrivateMetaclass class methodsFor:'documentation'!

documentation
"
    A PrivateMetaclass is much like a regular Metaclass, but it is only visible (known)
    to some owningClass (which is also true for the PrivateMetaclasses sole instance).

    Its sourceCode, package and revision is forced to be the same as the owning classes'.
    Therefore, privateClasses delegate some queries to their owning class.

    Caution: support for private classes is an ST/X special feature.
             This mechanism may not be provided by other smalltalk systems,
             making your code unportable.
             (However, private classes can be simulated pretty easily, using classVariables
              or classInstance variables ...)

    [author:]
        Claus Gittinger

    [see also:]
        Behavior ClassDescription Class Metaclass
"
! !

!PrivateMetaclass methodsFor:'accessing'!

owningClass
    "return my owningClass"

    ^ owningClass

    "Created: 11.10.1996 / 16:55:43 / cg"
    "Modified: 11.10.1996 / 17:35:13 / cg"
!

setOwningClass:something
    "set my owningClass - this is not a public entry"

    owningClass := something.

    "Created: 11.10.1996 / 17:11:05 / cg"
    "Modified: 11.10.1996 / 17:35:24 / cg"
! !

!PrivateMetaclass methodsFor:'queries'!

isBuiltInClass
     ^ self == PrivateMetaclass
!

package
    "return my package-id"

    ^ owningClass package

    "Created: 15.10.1996 / 19:45:04 / cg"
! !

!PrivateMetaclass class methodsFor:'documentation'!

version
    ^ '$Header: /cvs/stx/stx/libbasic/PrivateMetaclass.st,v 1.8 1996-10-22 22:08:10 cg Exp $'
! !