Annotation of rpl/modules/motif/XtAddCallback.rplc, revision 1.1

1.1     ! bertrand    1: #include "src/rplexternals.h"
        !             2: #include "motif.h"
        !             3: 
        !             4: declareExternalFunction(XtAddCallback)
        !             5:    declareObject(widget);
        !             6:    declareObject(callbackName);
        !             7:    declareObject(callbackProc);
        !             8:    declareObject(subList);
        !             9:    declareObject(procStatus);
        !            10: 
        !            11:    string              type;
        !            12: 
        !            13:    String              callback;
        !            14: 
        !            15:    HEADER
        !            16:        declareHelpString("Add callback to a widget\n"
        !            17:                "    3: widget\n"
        !            18:                "    2: callback name (XmNactivateCallback)\n"
        !            19:                "    1: expression\n");
        !            20:        numberOfArguments(3);
        !            21:    FUNCTION
        !            22:        if (initializationDone eq true) then
        !            23:            pullFromStack(callbackProc, unknown);
        !            24:            returnOnError(freeObject(callbackProc));
        !            25: 
        !            26:            pullFromStack(callbackName, string);
        !            27:            returnOnError(freeObject(callbackProc); freeObject(callbackName));
        !            28: 
        !            29:            pullFromStack(widget, external);
        !            30:            returnOnError(freeObject(callbackProc); freeObject(callbackName);
        !            31:                    freeObject(widget));
        !            32: 
        !            33:            ifIsExternal(widget, WIDGET) then
        !            34:            orElse
        !            35:                executionError("Type mismatch error");
        !            36:                returnOnError(freeObject(callbackProc);
        !            37:                        freeObject(callbackName); freeObject(widget));
        !            38:            endIf
        !            39: 
        !            40:            getString(callbackName, type);
        !            41: 
        !            42:            if (strcmp(type, "XmNactivateCallback") eq 0) then
        !            43:                callback = XmNactivateCallback;
        !            44:            orElse
        !            45:                executionError("Unknown callback type");
        !            46:                returnOnError(freeObject(callbackProc);
        !            47:                        freeObject(callbackName); freeObject(widget));
        !            48:            endIf
        !            49: 
        !            50:            // Adding a copy of expression in a list.
        !            51: 
        !            52:            dupObject(callbackProc);
        !            53: 
        !            54:            createListObject(subList);
        !            55:            createObject(procStatus);
        !            56: 
        !            57:            objectContainer(procStatus) = address(procStatus(rpl_arguments));
        !            58: 
        !            59:            insertObjectIntoList(subList, callbackProc);
        !            60:            insertObjectIntoList(subList, procStatus);
        !            61:            insertObjectIntoList(callbacksList, subList);
        !            62: 
        !            63:            XtAddCallback(target((Widget *) objectContainer(widget)),
        !            64:                    callback, rplCallback, (XtPointer) subList);
        !            65:        orElse
        !            66:            executionError("Application not initialized");
        !            67:            returnOnError();
        !            68:        endIf
        !            69:    END
        !            70: endExternalFunction
        !            71: 
        !            72: // vim: ts=4

CVSweb interface <joel.bertrand@systella.fr>