Annotation of rpl/modules/motif/motif.rplc, revision 1.11

1.1       bertrand    1: #define __RPLC_MAIN
                      2: #include "src/rplexternals.h"
                      3: #include "motif.h"
                      4: 
                      5: libraryName(motif);
                      6: 
                      7: exportExternalFunctions(
1.4       bertrand    8:        XSynchronize,
1.9       bertrand    9:        XStoreName,
1.11    ! bertrand   10:        XmSetIcon,
1.4       bertrand   11:        XtAddCallback,
1.3       bertrand   12:        XtAppExitMainLoop,
1.1       bertrand   13:        XtAppInitialize,
                     14:        XtAppMainLoop,
1.4       bertrand   15:        XtCreatePopupShell,
1.8       bertrand   16:        XtCreateManagedWidget,
1.4       bertrand   17:        XtCreateWidget,
                     18:        XtDestroyWidget,
1.10      bertrand   19:        XtOpenApplication,
1.4       bertrand   20:        XtPopdown,
                     21:        XtPopup,
1.6       bertrand   22:        XtRealizeWidget,
                     23:        XtRemoveCallback);
1.1       bertrand   24: 
                     25: declareSubroutine(onLoading)
1.2       bertrand   26:    notice(stdout, "\nMotif library V2R1 for RPL/2 (C) 2017 BERTRAND Joel\n");
1.1       bertrand   27:    notice(stdout, "Motif library loaded.\n\n");
                     28: 
                     29:    // Création des variables spécifiques
                     30: 
                     31:    declareObject(variable);
                     32:    declareObject(value);
                     33: 
                     34: #define createVariable(var) createVariable2(var, var)
                     35: #define createVariable2(var, val) \
                     36:        do { \
                     37:            createNameObject(variable); \
                     38:            setSymbolicName(variable, #var); \
                     39:            createIntegerObject(value); \
                     40:            setInteger(value, val); \
                     41:            pushOnStack(variable); \
                     42:            pushOnStack(value); \
                     43:            intrinsic(over); \
                     44:            intrinsic(save); \
                     45:            intrinsic(parameter); \
                     46:        } while(0)
                     47: 
                     48:    createVariable2(XmFalse, 0);
                     49:    createVariable2(XmTrue, 1);
                     50: 
                     51:    createVariable(XmATTACH_NONE);
                     52:    createVariable(XmATTACH_FORM);
                     53:    createVariable(XmATTACH_OPPOSITE_FORM);
                     54:    createVariable(XmATTACH_WIDGET);
                     55:    createVariable(XmATTACH_OPPOSITE_WIDGET);
                     56:    createVariable(XmATTACH_POSITION);
                     57:    createVariable(XmATTACH_SELF);
                     58: 
                     59:    createVariable(XmALIGNMENT_BEGINNING);
                     60:    createVariable(XmALIGNMENT_CENTER);
                     61:    createVariable(XmALIGNMENT_END);
                     62: 
                     63:    createVariable(XmHORIZONTAL);
                     64:    createVariable(XmVERTICAL);
                     65: 
                     66:    createVariable(XtGrabNone);
                     67:    createVariable(XtGrabNonexclusive);
                     68:    createVariable(XtGrabExclusive);
                     69: 
                     70:    createVariable(XmSTRING);
1.4       bertrand   71: 
                     72:    setFalse(initializationDone);
1.6       bertrand   73:    nullify(lCallbacks);
1.1       bertrand   74: endSubroutine
                     75: 
                     76: declareSubroutine(onClosing)
1.7       bertrand   77:    // Destruction des variables spécifiques et des callbacks
1.1       bertrand   78:    declareObject(variable);
1.6       bertrand   79:    declareDaisyChain(current);
                     80:    declareDaisyChain(next);
                     81: 
                     82:    current = lCallbacks;
                     83: 
                     84:    repeatWhile(not nullified(current))
1.7       bertrand   85:        next = nextElementOfDaisyChain(current);
1.6       bertrand   86:        variable = fetchElementFromDaisyChain(current);
                     87:        freeObject(variable);
                     88:        free(current);
                     89:        current = next;
                     90:    endWhile
                     91: 
                     92:    nullify(lCallbacks);
1.1       bertrand   93: 
                     94: #define purgeVariable(var) \
                     95:        do { \
                     96:            createNameObject(variable); \
                     97:            setName(variable, #var); \
                     98:            pushOnStack(variable); \
                     99:            intrinsic(dup); \
                    100:            intrinsic(variable); \
                    101:            intrinsic(purge); \
                    102:        } while(0)
                    103: 
                    104:    purgeVariable(XmFalse);
                    105:    purgeVariable(XmTrue);
                    106: 
                    107:    purgeVariable(XmATTACH_NONE);
                    108:    purgeVariable(XmATTACH_FORM);
                    109:    purgeVariable(XmATTACH_OPPOSITE_FORM);
                    110:    purgeVariable(XmATTACH_WIDGET);
                    111:    purgeVariable(XmATTACH_OPPOSITE_WIDGET);
                    112:    purgeVariable(XmATTACH_POSITION);
                    113:    purgeVariable(XmATTACH_SELF);
                    114: 
                    115:    purgeVariable(XmALIGNMENT_BEGINNING);
                    116:    purgeVariable(XmALIGNMENT_CENTER);
                    117:    purgeVariable(XmALIGNMENT_END);
                    118: 
                    119:    purgeVariable(XmHORIZONTAL);
                    120:    purgeVariable(XmVERTICAL);
                    121: 
                    122:    purgeVariable(XtGrabNone);
                    123:    purgeVariable(XtGrabNonexclusive);
                    124:    purgeVariable(XtGrabExclusive);
                    125: 
                    126:    purgeVariable(XmSTRING);
                    127: 
                    128:    notice(stdout, "Motif library unloaded.\n\n");
                    129: endSubroutine
                    130: 
                    131: // vim: ts=4

CVSweb interface <joel.bertrand@systella.fr>