On Mon, Mar 9, 2020 at 1:12 PM Rony G. Flatscher <rony.flatsc...@wu.ac.at>
wrote:

> The rexxpg book lists in "Chapter 4. The Basics of Classes" all ooRexx
> classes. The listing is not correctly indented as the root class Object is
> not shown as the topmost class.
>
> Before correcting anything I also created a little program that would
> create the ooRexx class tree automatically.
>
> While doing so, it would become possible to add additional information to
> the listed classes, e.g. whether a class is a mixin and for classes using
> multiple inheritance which classes they inherit (maybe in parentheses and
> in italic). The motivation would be to have
>
> So here are both renderings (there classes for which questions are
> formulated at the bottom are highlighted in red):
>
> Object
>     Alarm
>     AlarmNotification
>         Message
>     ArgUtil
>     Array
>     Bag
>     BagMixin
>     Buffer
>     Class
>     Collection
>         MapCollection
>             Bag
>             Directory
>                 Properties
>             IdentityTable
>             Relation
>             Set
>             Stem
>             StringTable
>             Table
>         OrderedCollection
>             Array
>             List
>             Queue
>                 CircularQueue
>         SetCollection
>             Bag
>             Set
>     Comparable
>         DateTime
>         File
>         String
>         TimeSpan
>     Comparator
>         CaselessColumnComparator
>         CaselessComparator
>         CaselessDescendingComparator
>         ColumnComparator
>         DescendingComparator
>         InvertingComparator
>         NumericComparator
>     DateTime
>     Directory
>         Properties
>     EventSemaphore
>     File
>     IdentityTable
>     InputOutputStream
>         Stream
>     InputStream
>         InputOutputStream
>             Stream
>     List
>     LocalServer
>     ManyItemMixin
>     Message
>     MessageNotification
>         Message
>     Method
>     Monitor
>     MutableBuffer
>     MutexSemaphore
>     OLEObject
>     OLEVariant
>     Orderable
>         DateTime
>         File
>         TimeSpan
>     OutputStream
>         InputOutputStream
>             Stream
>     Package
>     Pointer
>     Queue
>         CircularQueue
>     Relation
>     RexxContext
>     RexxInfo
>     RexxQueue
>     Routine
>     Set
>     SetMixin
>     StackFrame
>     Stem
>     String
>     StringTable
>     Supplier
>         StreamSupplier
>     SupplierMixin
>     Table
>     Ticker
>     TimeSpan
>     Validate
>     VariableReference
>     WeakReference
>
> And here with the additional information:
>
> Object
>     Alarm
>     AlarmNotification *(mixin)*
>         Message *(inherit MessageNotification, AlarmNotification)*
>     ArgUtil
>     Array *(inherit OrderedCollection)*
>     Bag *(inherit MapCollection, SetCollection)*
>     BagMixin
>     Buffer
>     Class
>     Collection *(mixin)*
>         MapCollection *(mixin)*
>             Bag *(inherit MapCollection, SetCollection)*
>             Directory *(inherit MapCollection)*
>                 Properties
>             IdentityTable *(inherit MapCollection)*
>             Relation *(inherit MapCollection)*
>             Set *(inherit MapCollection, SetCollection)*
>             Stem *(inherit MapCollection)*
>             StringTable *(inherit MapCollection)*
>             Table *(inherit MapCollection)*
>         OrderedCollection *(mixin)*
>             Array *(inherit OrderedCollection)*
>             List *(inherit OrderedCollection)*
>             Queue *(inherit OrderedCollection)*
>                 CircularQueue
>         SetCollection *(mixin)*
>             Bag *(inherit MapCollection, SetCollection)*
>             Set *(inherit MapCollection, SetCollection)*
>     Comparable *(mixin)*
>         DateTime *(inherit Comparable, Orderable)*
>         File *(inherit Comparable, Orderable)*
>         String *(inherit Comparable)*
>         TimeSpan *(inherit Comparable, Orderable)*
>     Comparator *(mixin)*
>         CaselessColumnComparator *(mixin)*
>         CaselessComparator *(mixin)*
>         CaselessDescendingComparator *(mixin)*
>         ColumnComparator *(mixin)*
>         DescendingComparator *(mixin)*
>         InvertingComparator *(mixin)*
>         NumericComparator *(mixin)*
>     DateTime *(inherit Comparable, Orderable)*
>     Directory *(inherit MapCollection)*
>         Properties
>     EventSemaphore
>     File *(inherit Comparable, Orderable)*
>     IdentityTable *(inherit MapCollection)*
>     InputOutputStream *(mixin) (inherit InputStream, OutputStream)*
>         Stream *(mixin)*
>     InputStream *(mixin)*
>         InputOutputStream *(mixin) (inherit InputStream, OutputStream)*
>             Stream *(mixin)*
>     List *(inherit OrderedCollection)*
>     LocalServer
>     ManyItemMixin
>     Message *(inherit MessageNotification, AlarmNotification)*
>     MessageNotification *(mixin)*
>         *Message (inherit MessageNotification, AlarmNotification)*
>     Method
>     Monitor
>     MutableBuffer
>     MutexSemaphore
>     OLEObject
>     OLEVariant
>     Orderable *(mixin)*
>         DateTime *(inherit Comparable, Orderable)*
>         File *(inherit Comparable, Orderable)*
>         TimeSpan *(inherit Comparable, Orderable)*
>     OutputStream *(mixin)*
>         InputOutputStream *(mixin) (inherit InputStream, OutputStream)*
>             Stream *(mixin)*
>     Package
>     Pointer
>     Queue *(inherit OrderedCollection)*
>         CircularQueue
>     Relation *(inherit MapCollection)*
>     RexxContext
>     RexxInfo
>     RexxQueue
>     Routine
>     Set *(inherit MapCollection, SetCollection)*    SetMixin
>     StackFrame
>     Stem *(inherit MapCollection)*
>     String *(inherit Comparable)*
>     StringTable *(inherit MapCollection)*
>     Supplier
>         StreamSupplier
>     SupplierMixin
>     Table *(inherit MapCollection)*
>     Ticker
>     TimeSpan *(inherit Comparable, Orderable)*
>     Validate
>     VariableReference
>     WeakReference
>
> Questions:
>
>    1. What is the purpose of the classes: BagMixin, ManyItemsMixin,
>    SetMixin and SupplierMixin?
>
> They are special classes used during creation of the rexx.img saved image.
They are private classes of the special REXX package. They are not publicly
visible, but they are still subclasses of Object, so yes, they should be
there. subclasses makes no distinction between public and private.


>
>    1.
>       1. They carry the name "mixin" but are not inherited by the exposed
>       Rexx classes.
>       2. They cannot be fetched via their environment name like .BagMixin.
>       3. Should they be listed in the class object's SUBCLASSES array at
>       all?
>
>       2. Should the classes ArgUtil and LocalServer be documented or left
>    out?
>    1. ArgUtil was never documented and supposedly Validate is the
>       successor and should be used instead.
>
> ArgUtil should not be documented. It has been kept just in case somebody
had figured out it was there and had also used it.

>
>    1.
>       2. If LocalServer should get documented, where could I find the
>       respective information?
>
> It also should not get documented. That is a special class that is part of
the interpreter internals.

>
>    1.
>       1. Should the classes OLEObject and OLEVariant be documented or
>    left out? (They only exist in the Windows version and are documented
>    separately in the Windows reference book.)
>
>
> I would leave them out from the general information

>
>    1.
>    2. Should the short or the long form be usedj, which informs about
>    multiple inheritance related classes?
>
>
I think the long form would be good.

>
>
> ---rony
>
>
> _______________________________________________
> Oorexx-devel mailing list
> Oorexx-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/oorexx-devel
>
_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to