Experimenting a little more, here is a rendering that only lists mixin 
subclasses if the subclasses
directly specialize the mixin. This way e.g. the Array class only appears once 
and as a subclass to
Object. Here the representation, which is more compact, yet complete:

    Object
        Alarm
        AlarmNotification (mixin)
        ArgUtil
        Array (inherit OrderedCollection)
        Bag (inherit MapCollection, SetCollection)
        BagMixin
        Buffer
        Class
        Collection (mixin)
            MapCollection (mixin)
            OrderedCollection (mixin)
            SetCollection (mixin)
        Comparable (mixin)
        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)
        List (inherit OrderedCollection)
        LocalServer ManyItemMixin
        Message (inherit MessageNotification, AlarmNotification)
        MessageNotification (mixin)
        Method
        Monitor
        MutableBuffer
        MutexSemaphore
        OLEObject OLEVariant
        Orderable (mixin)
        OutputStream (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

Here the questions again:

Questions:

 1. What is the purpose of the classes: BagMixin, ManyItemsMixin, SetMixin and 
SupplierMixin?
     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.
     2. If LocalServer should get documented, where could I find the respective 
information?

 3. 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.)

 4. Should the short or the long form be used, which informs about multiple 
inheritance related classes?

 5. Should this "more compact, yet complete" class hierarchy be used?

---rony


On 09.03.2020 18:11, Rony G. Flatscher 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?
>      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.
>      2. If LocalServer should get documented, where could I find the 
> respective information?
>
>  3. 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.)
>
>  4. Should the short or the long form be usedj, which informs about multiple 
> inheritance related
>     classes?
>
> ---rony
>

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

Reply via email to