I still think the code refactoring I suggested is a good idea, which will make things a bit cleaner. However, I just realized that the original problem could have been fixed by just adding
enum TracePrefix; where the class definitions at the top of Activity.cpp are located. Rick On Thu, Jul 11, 2024 at 12:29 PM Rony G. Flatscher <rony.flatsc...@wu.ac.at> wrote: > On 11.07.2024 18:26, Rick McGuire wrote: > > > > On Thu, Jul 11, 2024 at 12:20 PM Rony G. Flatscher < > rony.flatsc...@wu.ac.at> wrote: > >> On 11.07.2024 17:52, Rick McGuire wrote: >> >> I'm going to answer this out of line because I want to answer the last >> question first. >> >> Thank you! >> >> >> The problem with the compile error results in how RexxActivation is >> defined in Activity.hpp. It's declaration is just "class RexxActivation", >> which tells the compiler that RexxActivation is a class...and nothing else. >> This allows RexxActivation * to be used in prototypes since there is enough >> information available for that purpose. To get the full definition of >> RexxActivation, you would need to replace "class RexxActivation" with >> "#include "RexxActivation.hpp". However, I suspect doing that will result >> in some circular dependencies between the two header files. >> >> Indeed. >> >> >> Any you would probably need to define Activity as friend to the >> RexxActivation class to make that enum visible. >> >> Given the relationship between RexxActivation and Activity, and that both >> classes need the information, having the enum defined in RexxActivation >> feels like the wrong place to for that to be located. It feels like it >> should belong in Activity. However, those values are really only used for >> things created for RexxActivation. >> >> A better solution would be to refactor the code a bit. >> Activity::traceOutput() . The first two lines of TraceOutput deal with the >> creation of the TraceObject, which really should be something that the >> RexxActivation is responsible for. Move the stuff involved with that to >> RexxActivation and then only pass the constructed TraceObject to the >> traceOutput() method which is now just responsible for handling the output. >> Now there's no need for TracePrefix to be visible outside of >> RexxActivation. >> >> There are the following places in Activity that cause the use of >> traceOutput() directly and indirectly: >> >> - >> >> wholenumber_t Activity::error() >> >> /** Force error termination on an activity, returning the resulting REXX >> error code. >> * @return The resulting Rexx error code. */ >> >> - >> >> wholenumber_t Activity::error(ActivationBase *activation, DirectoryClass >> *errorInfo) >> >> /** Force error termination on an activity, returning the resulting REXX >> error code. >> * @param activation The activation raising the error. >> * @param errorInfo The directory containing the error condition >> information. >> * @return The Rexx error code. */ >> >> - >> >> wholenumber_t Activity::displayCondition(DirectoryClass *errorInfo) >> >> /** Display error information and traceback lines for a Syntax condition. >> * @param errorInfo The condition object with the error information >> * @return The major error code for the syntax error, if this is indeed >> a syntax conditon. */ >> >> - >> >> void Activity::display(DirectoryClass *exobj) ... >> >> /** Display information from an exception object. *@param exobj The >> exception object. */ >> >> - >> >> void Activity::displayDebug(DirectoryClass *exobj) >> >> /** Display information about an error in interactive debug. @param exobj >> The exception */+ >> >> >> > Only the last two of these are relevant, since the others just call those. > If the creation of the trace object is a method of RexxActivation(), that > method is just called to get the information needed by traceOutput(). > > ah, ok, thank you! > > ---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