On 16.07.2026 21:46, Jean Louis Faucher wrote:


On 16 Jul 2026, at 21:33, Jean Louis Faucher <[email protected]> wrote:


*Bonus*

I made a list of protected methods, and compared it with rexxref.
Only 4 methods are documented as "protected" in rexxref (see the idented 
methods).
Not sure we need to update rexxref for each method.
It would be more easy to list all the protected methods in the chapter "The Security 
Manager".

It's not clear to me why METACLASS, SUBCLASSES, and SUPERCLASS are protected.
That was already like that in ooRexx 4.2.

rexxref says these method are protected, but they are not:
- class~inherit .class~method("inherit")~isprotected=   -- 0
- object~run      .object~method("run")~isprotected=  -- 0


ooRexx 5.3
ooRexx[sh]> ?m == /^......P
P. PCGP.   'BASECLASS'                     : 'Class' (REXX)
P. P.GP.   'BASECLASS'                     : 'Class' (REXX)
P. PCGP.   'DEFAULTOPTIONS'                      : 'Package' (REXX)
    P. P.GP.   'DEFINE'                          : 'Class' (REXX)
P. PCGP.   'DEFINE'                      : 'Class' (REXX)
P. P.GP.   'DEFINEMETHODS'                     : 'Class' (REXX)
P. PCGP.   'DEFINEMETHODS'                     : 'Class' (REXX)
P. PCGP.   'DELETE'                      : 'Class' (REXX)
    P. P.GP.   'DELETE'                          : 'Class' (REXX)
P. PCGP.   'METACLASS'                     : 'Class' (REXX)
P. P.GP.   'METACLASS'                     : 'Class' (REXX)
P. P.GP.   'OPTIONS'                     : 'Package' (REXX)
P. P.GP.   'PROCESS'                     : 'system' (pipe.cls)
    P. P.GP.   'SETMETHOD'                         : 'Directory' (REXX)
P. P.GP.   'SETPROTECTED'                      : 'Method' (REXX)
P. P.GP.   'SETSECURITYMANAGER'                      : 'Method' (REXX)
P. P.GP.   'SETSECURITYMANAGER'                      : 'Package' (REXX)
P. P.GP.   'SETSECURITYMANAGER'                      : 'Routine' (REXX)
P. P.GP.   'SUBCLASSES'                      : 'Class' (REXX)
P. PCGP.   'SUBCLASSES'                      : 'Class' (REXX)
P. PCGP.   'SUPERCLASS'                      : 'Class' (REXX)
P. P.GP.   'SUPERCLASS'                      : 'Class' (REXX)
P. PCGP.   'SUPERCLASSES'                      : 'Class' (REXX)
P. P.GP.   'SUPERCLASSES'                      : 'Class' (REXX)
P. PCGP.   'UNINHERIT'                     : 'Class' (REXX)
P. P.GP.   'UNINHERIT'                     : 'Class' (REXX)
    P. P.GP.   'UNSETMETHOD'                         : 'Directory' (REXX)


I made an error in the review above:
Directory~setMethod and Directory~unsetMethod are not documented as protected 
in rexxref.

rexxref documents object~setMethod and object~unsetMethod as protected.
But they are not ('P' in col 7 is missing):

ooRexx[sh]> ?m setMethod

P. P.GP.   'SETMETHOD' : 'Directory' (REXX)

P. ..G..   'SETMETHOD' : 'Object' (REXX)

P. .CG..   'SETMETHOD' : 'Object' (REXX)


ooRexx[sh]> ?m unsetMethod

P. ..G..   'UNSETMETHOD' : 'Object' (REXX)

P. P.GP.   'UNSETMETHOD' : 'Directory' (REXX)

P. .CG..   'UNSETMETHOD' : 'Object' (REXX)


Confirmation in Setup.cpp

        AddPrivateMethod("SetMethod", RexxObject::setMethod, 3);
AddPrivateMethod("UnsetMethod", RexxObject::unsetMethod, 1);

AddProtectedMethod("SetMethod", DirectoryClass::setMethodRexx, 2);
AddProtectedMethod("UnsetMethod", DirectoryClass::unsetMethodRexx, 1);

I vaguely remember that originally setMethod and unsetMethod on .Object were not private. Then later (not sure when exactly) they were made private. Speculation: originally they may have been protected, but then got changed to be private (no one outside of the class can access a private method via a message sent) for security reasons, but the documentation was not updated accordingly (the private note got added, but the protected note was not removed).

---rony


_______________________________________________
Oorexx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to