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

1.1       bertrand    1: #define __RPLC_MAIN
                      2: #include "src/rplexternals.h"
                      3: #include "motif.h"
                      4: 
                      5: libraryName(motif);
                      6: 
                      7: exportExternalFunctions(
                      8:        XSynchronize,
                      9:        XtAddCallback,
                     10:        XtAppInitialize,
                     11:        XtAppMainLoop,
                     12:        XtAppExitMainLoop,
                     13:        XtCreatePopupShell,
                     14:        XtCreateWidget,
                     15:        XtDestroyWidget,
                     16:        XtPopdown,
                     17:        XtPopup,
                     18:        XtRealizeWidget,
                     19:        XtRemoveAllCallbacks,
                     20:        XtRemoveCallback);
                     21: 
                     22: declareSubroutine(onLoading)
                     23:    declareInteger(i);
                     24: 
1.2     ! bertrand   25:    notice(stdout, "\nMotif library V2R1 for RPL/2 (C) 2017 BERTRAND Joel\n");
1.1       bertrand   26:    notice(stdout, "Motif library loaded.\n\n");
                     27: 
                     28:    nombre_widgets = 256;
                     29:    widgets = sys_malloc(nombre_widgets * size(Widget));
                     30:    presence_widget = sys_malloc(nombre_widgets * size(char));
                     31: 
                     32:    loop(i = 0, i < nombre_widgets, i++)
                     33:        presence_widget[i] = 0;
                     34:    endLoop
                     35: 
                     36:    nombre_callbacks = 256;
                     37:    callbacks = sys_malloc(nombre_callbacks * size(callbackArg));
                     38:    presence_callback = sys_malloc(nombre_callbacks * size(char));
                     39:    
                     40:    loop(i = 0, i < nombre_callbacks, i++)
                     41:        presence_callback[i] = 0;
                     42:    endLoop
                     43: 
                     44:    // Création des variables spécifiques
                     45: 
                     46:    declareObject(variable);
                     47:    declareObject(value);
                     48: 
                     49: #define createVariable(var) createVariable2(var, var)
                     50: #define createVariable2(var, val) \
                     51:        do { \
                     52:            createNameObject(variable); \
                     53:            setSymbolicName(variable, #var); \
                     54:            createIntegerObject(value); \
                     55:            setInteger(value, val); \
                     56:            pushOnStack(variable); \
                     57:            pushOnStack(value); \
                     58:            intrinsic(over); \
                     59:            intrinsic(save); \
                     60:            intrinsic(parameter); \
                     61:        } while(0)
                     62: 
                     63:    createVariable2(XmFalse, 0);
                     64:    createVariable2(XmTrue, 1);
                     65: 
                     66:    createVariable(XmATTACH_NONE);
                     67:    createVariable(XmATTACH_FORM);
                     68:    createVariable(XmATTACH_OPPOSITE_FORM);
                     69:    createVariable(XmATTACH_WIDGET);
                     70:    createVariable(XmATTACH_OPPOSITE_WIDGET);
                     71:    createVariable(XmATTACH_POSITION);
                     72:    createVariable(XmATTACH_SELF);
                     73: 
                     74:    createVariable(XmALIGNMENT_BEGINNING);
                     75:    createVariable(XmALIGNMENT_CENTER);
                     76:    createVariable(XmALIGNMENT_END);
                     77: 
                     78:    createVariable(XmHORIZONTAL);
                     79:    createVariable(XmVERTICAL);
                     80: 
                     81:    createVariable(XtGrabNone);
                     82:    createVariable(XtGrabNonexclusive);
                     83:    createVariable(XtGrabExclusive);
                     84: 
                     85:    createVariable(XmSTRING);
                     86: endSubroutine
                     87: 
                     88: declareSubroutine(onClosing)
                     89:    // Destruction des variables spécifiques
                     90:    declareInteger(i);
                     91: 
                     92:    declareObject(variable);
                     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:    sys_free(widgets);
                    129:    sys_free(presence_widget);
                    130: 
                    131:    loop(i = 0, i < nombre_callbacks, i++)
                    132:        if (presence_callback[i] ne 0) then
                    133:            freeObject(callbacks[i].s_objet);
                    134:        endIf
                    135:    endLoop
                    136:    
                    137:    sys_free(callbacks);
                    138:    sys_free(presence_callback);
                    139: 
                    140:    notice(stdout, "Motif library unloaded.\n\n");
                    141: endSubroutine
                    142: 
                    143: declareExternalFunction(XtDestroyWidget)
                    144:    HEADER
                    145:    FUNCTION
                    146:    END
                    147: endExternalFunction
                    148: 
                    149: declareExternalFunction(XtRemoveCallback)
                    150:    HEADER
                    151:    FUNCTION
                    152:    END
                    153: endExternalFunction
                    154: 
                    155: declareExternalFunction(XtRemoveAllCallbacks)
                    156:    HEADER
                    157:    FUNCTION
                    158:    END
                    159: endExternalFunction
                    160: 
                    161: /*
                    162: XmStringCreateLtoR
                    163: XmCreateRadioBox
                    164: XtVaSetValues
                    165: XmStringFree
                    166: XmTextFieldSetString
                    167: XtManageChild
                    168: XtSetSensitive
                    169: XtVaGetValues
                    170: XtAncetre
                    171: */
                    172: 
                    173: // vim: ts=4

CVSweb interface <joel.bertrand@systella.fr>