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