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

1.1     ! bertrand    1: #include "src/rplexternals.h"
        !             2: #include "motif.h"
        !             3: 
        !             4: declareExternalFunction(XtCreateWidget)
        !             5:    declareObject(nameObject);
        !             6:    declareObject(classObject);
        !             7:    declareObject(parentObject);
        !             8:    declareObject(parametersObject);
        !             9:    declareObject(list);
        !            10:    declareObject(directive);
        !            11: 
        !            12:    declareDaisyChain(current);
        !            13:    declareDaisyChain(current2);
        !            14: 
        !            15:    char            target(name);
        !            16:    char            target(class);
        !            17: 
        !            18:    Cardinal        argNum;
        !            19:    WidgetClass     wc;
        !            20: 
        !            21:    HEADER
        !            22:        declareHelpString("Create a Motif widget\n"
        !            23:                "    4: name\n"
        !            24:                "    3: class\n"
        !            25:                "    2: parent\n"
        !            26:                 "    1: { parameters }\n"
        !            27:                 " -> 1: widget\n");
        !            28:        numberOfArguments(4);
        !            29:    FUNCTION
        !            30:        if (initializationDone eq true) then
        !            31:            pullFromStack(parametersObject, list);
        !            32:            returnOnError(freeObject(parametersObject));
        !            33: 
        !            34:            pullFromStack(parentObject, external);
        !            35:            returnOnError(freeObject(parametersObject);
        !            36:                    freeObject(parentObject));
        !            37: 
        !            38:            pullFromStack(classObject, string);
        !            39:            returnOnError(freeObject(parametersObject);
        !            40:                    freeObject(parentObject);
        !            41:                    freeObject(classObject));
        !            42: 
        !            43:            pullFromStack(nameObject, string);
        !            44:            returnOnError(freeObject(parametersObject);
        !            45:                    freeObject(parentObject);
        !            46:                    freeObject(classObject);
        !            47:                    freeObject(nameObject));
        !            48: 
        !            49:            getString(classObject, class);
        !            50:            getString(nameObject, name);
        !            51: 
        !            52:            Xm_widgets_classes(class, wc);
        !            53: 
        !            54:            returnOnError(freeObject(parametersObject);
        !            55:                    freeObject(parentObject);
        !            56:                    freeObject(classObject);
        !            57:                    freeObject(nameObject));
        !            58: 
        !            59:            getDaisyChainFromList(parametersObject, current);
        !            60:            argNum = 0;
        !            61: 
        !            62:            repeatWhile(not nullified(current))
        !            63:                list = fetchElementFromDaisyChain(current);
        !            64: 
        !            65:                ifIsList(list) then
        !            66:                    getDaisyChainFromList(list, current2);
        !            67: 
        !            68:                    if (nullified(current2)) then
        !            69:                        executionError("Too few arguments");
        !            70:                        returnOnError(freeObject(parametersObject);
        !            71:                                freeObject(parentObject);
        !            72:                                freeObject(classObject);
        !            73:                                freeObject(nameObject));
        !            74:                    endIf
        !            75: 
        !            76:                    ifIsString(fetchElementFromDaisyChain(current2)) then
        !            77:                    orElse
        !            78:                        executionError("Type mismatch error");
        !            79:                        returnOnError(freeObject(parametersObject);
        !            80:                                freeObject(parentObject);
        !            81:                                freeObject(classObject);
        !            82:                                freeObject(nameObject));
        !            83:                    endIf
        !            84: 
        !            85:                    current2 = nextElementOfDaisyChain(current2);
        !            86: 
        !            87:                    if (nullified(current2)) then
        !            88:                        executionError("Too few arguments");
        !            89:                        returnOnError(freeObject(parametersObject);
        !            90:                                freeObject(parentObject);
        !            91:                                freeObject(classObject);
        !            92:                                freeObject(nameObject));
        !            93:                    endIf
        !            94: 
        !            95:                    directive = fetchElementFromDaisyChain(current2);
        !            96: 
        !            97:                    ifIsInteger(directive) then
        !            98:                    orElse
        !            99:                        ifIsString(directive) then
        !           100:                        orElse
        !           101:                            ifIsName(directive) then
        !           102:                            orElse
        !           103:                                executionError("Type mismatch error");
        !           104:                                returnOnError(freeObject(parametersObject);
        !           105:                                        freeObject(parentObject);
        !           106:                                        freeObject(classObject);
        !           107:                                        freeObject(nameObject));
        !           108:                            endIf
        !           109:                        endIf
        !           110:                    endIf
        !           111: 
        !           112:                    current2 = nextElementOfDaisyChain(current2);
        !           113: 
        !           114:                    if (not nullified(current2)) then
        !           115:                        executionError("Type mismatch error");
        !           116:                        returnOnError(freeObject(parametersObject);
        !           117:                                freeObject(parentObject);
        !           118:                                freeObject(classObject);
        !           119:                                freeObject(nameObject));
        !           120:                    endIf
        !           121:                orElse
        !           122:                    executionError("Type mismatch error");
        !           123:                    returnOnError(freeObject(parametersObject);
        !           124:                            freeObject(parentObject);
        !           125:                            freeObject(classObject);
        !           126:                            freeObject(nameObject));
        !           127:                endIf
        !           128: 
        !           129:                current = nextElementOfDaisyChain(current);
        !           130:                postIncr(argNum);
        !           131:            endWhile
        !           132:        orElse
        !           133:            executionError("Application not initialized");
        !           134:            returnOnError();
        !           135:        endIf
        !           136: 
        !           137:        setFalse(initializationDone);
        !           138:    END
        !           139: endExternalFunction

CVSweb interface <joel.bertrand@systella.fr>