eXept Software AG Logo

Smalltalk/X Webserver

Documentation of class 'ClassChange':

Home

Documentation
www.exept.de
Everywhere
for:
[back]

Class: ClassChange


Inheritance:

   Object
   |
   +--Change
      |
      +--ClassChange
         |
         +--ClassCategoryChange
         |
         +--ClassClassVariableChange
         |
         +--ClassCommentChange
         |
         +--ClassDefinitionChange
         |
         +--ClassInitializeChange
         |
         +--ClassInstVarDefinitionChange
         |
         +--ClassOtherChange
         |
         +--ClassPrimitiveChange
         |
         +--ClassRemoveChange
         |
         +--ClassRenameChange
         |
         +--MethodCategoryRenameChange
         |
         +--MethodChange

Package:
stx:libbasic3
Category:
System-Changes
Version:
rev: 1.81 date: 2018/05/24 12:56:23
user: cg
file: ClassChange.st directory: libbasic3
module: stx stc-classLibrary: libbasic3
Author:
Claus Gittinger
Jan Vrany

Description:


Abstract superclass for class related changes
They are typically held in a ChangeSet.


[:instvars] incomplete
    className <String> ............ the class name *without* namespace, 
                                    but including all owners (if the class
                                    is private)
    owningClassName <String|nil> .. class name of the owning class if any
    nameSpaceName <String|nil> .... namespace name of the change or nil, if
                                    class is in no namespace.
    nameSpaceOverride <NameSpace|nil>  enforced namespace in which the class will 
                                    should be installed.


Class protocol:

instance creation
o  class: aClass

o  class: aClass source: source

o  className: aClassName

o  className: aClassName source: source


Instance protocol:

accessing
o  changeClass
the class of the change (nil if not present).
Take care for changes from foreign Smalltalks having
a different Namespace definition syntax

o  changeClass: aClass
set the class of the change

o  class: aClass
set the class of the change

o  class: aClass source: newSource
set both class and source of the change

o  classBaseName
return the className of the change.
This is without *any* prefix (namespace or private-owner)

o  className
Returns class name of the class as it was present in the original change.
For changes from a file with namespace override, this will be the
className *without* toplevel namespace, but with all owning classes
(if the change class is a private class).
For changes generated internally (by the browser), this will be the full name,
and the namespace override will be nil.

cg: this is all very confusing and needs some cleanup.
However it will be done, any change here needs checks in all users of this code.

o  className: aString
set the className of the change

o  className: newClassName source: newSource
set both className and source of the change

o  classNameForWellKnownVisualWorksNamespaceClass: className

o  classNameWithoutNamespace
return the className of the change

o  fullClassName
Returns the fully qualified class name, i.e., including namespace in which the
class should be installed
(i.e., the override namespace (if any) rather than original namespace (of any))

o  fullOwningClassName
Returns fully qualified owner's class name, i.e., including namespace in which the
class should be found (i.e., the override namespace (if any) rather than
original namespace (of any))

o  localClassName
for private classes, this returns the name relative to its owner;
for non-private ones, this is the regular name.
Notice that className always returns the full name (incl. any owner prefix)
but *without* any namespace prefix

o  nameSpace

o  nameSpace: aNameSpace

o  nameSpaceName
Return the namespace in which the class should be installed.

If the user enforces a namespace using nameSpaceOverride or
using query signal, then the enforced namespace is returned.
Otherwise, changes's original namespace is returned, if any.

o  nameSpaceName: aString

o  nameSpaceOverride
Return namespace enforced by the caller.

NOTE: This code used to use `Class nameSpaceQuerySignal` to
allow enforcing namespace by query. This made the code more
complicated and was used only by Tools::ChangeSetBrowser2 so
it was removed.

To apply change in particular namespace, use nameSpaceOverride:.
You may use applyWithNameSpaceOverride: for your convenience.

o  nameSpaceOverride: aNamespaceOrString

o  nonMetaClassName

o  owningClassName

o  owningClassName: aStringOrSymbol

o  package
return the value of the instance variable 'package' (automatically generated)

o  package: something
set the value of the instance variable 'package' (automatically generated)

applying
o  apply
apply the change

o  applyWithNameSpaceOverride: nameSpaceOrNameSpaceName
Apply the change, overriding a namespace to given one

printing & storing
o  printOn: aStream
append a user printed representation of the receiver to aStream.
The format is suitable for a human - not meant to be read back.

queries
o  cutMyNameSpaceOf: aString

o  cutNameSpaceOf: aString

o  isForMeta

o  nameSpaceForVWNamespace: ns class: className ifAbsent: default
map the namespace for a given class - hack; only works for some

testing
o  isClassChange



ST/X 7.2.0.0; WebServer 1.670 at bd0aa1f87cdd.unknown:8081; Thu, 28 Mar 2024 08:12:14 GMT