File:  [local] / rpl / modules / motif / motif.rplc
Revision 1.9: download - view: text, annotated - select for diffs - revision graph
Tue Aug 22 11:37:31 2017 UTC (6 years, 9 months ago) by bertrand
Branches: MAIN
CVS tags: HEAD
Ajout de XStoreName.

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

CVSweb interface <joel.bertrand@systella.fr>