File:  [local] / rpl / modules / motif / motif.rplc
Revision 1.3: download - view: text, annotated - select for diffs - revision graph
Wed Jul 5 13:53:40 2017 UTC (6 years, 10 months ago) by bertrand
Branches: MAIN
CVS tags: HEAD
Premiers bouts de code pour la bibliothèque d'interface Xm.

    1: #define __RPLC_MAIN
    2: #include "src/rplexternals.h"
    3: #include "motif.h"
    4: 
    5: libraryName(motif);
    6: 
    7: exportExternalFunctions(
    8:         XtAppExitMainLoop,
    9:         XtAppInitialize,
   10:         XtAppMainLoop,
   11:         XtCreateWidget);
   12: 
   13: declareSubroutine(onLoading)
   14:     notice(stdout, "\nMotif library V2R1 for RPL/2 (C) 2017 BERTRAND Joel\n");
   15:     notice(stdout, "Motif library loaded.\n\n");
   16: 
   17:     // Création des variables spécifiques
   18: 
   19:     declareObject(variable);
   20:     declareObject(value);
   21: 
   22: #define createVariable(var) createVariable2(var, var)
   23: #define createVariable2(var, val) \
   24:         do { \
   25:             createNameObject(variable); \
   26:             setSymbolicName(variable, #var); \
   27:             createIntegerObject(value); \
   28:             setInteger(value, val); \
   29:             pushOnStack(variable); \
   30:             pushOnStack(value); \
   31:             intrinsic(over); \
   32:             intrinsic(save); \
   33:             intrinsic(parameter); \
   34:         } while(0)
   35: 
   36:     createVariable2(XmFalse, 0);
   37:     createVariable2(XmTrue, 1);
   38: 
   39:     createVariable(XmATTACH_NONE);
   40:     createVariable(XmATTACH_FORM);
   41:     createVariable(XmATTACH_OPPOSITE_FORM);
   42:     createVariable(XmATTACH_WIDGET);
   43:     createVariable(XmATTACH_OPPOSITE_WIDGET);
   44:     createVariable(XmATTACH_POSITION);
   45:     createVariable(XmATTACH_SELF);
   46: 
   47:     createVariable(XmALIGNMENT_BEGINNING);
   48:     createVariable(XmALIGNMENT_CENTER);
   49:     createVariable(XmALIGNMENT_END);
   50: 
   51:     createVariable(XmHORIZONTAL);
   52:     createVariable(XmVERTICAL);
   53: 
   54:     createVariable(XtGrabNone);
   55:     createVariable(XtGrabNonexclusive);
   56:     createVariable(XtGrabExclusive);
   57: 
   58:     createVariable(XmSTRING);
   59: endSubroutine
   60: 
   61: declareSubroutine(onClosing)
   62:     // Destruction des variables spécifiques
   63:     declareObject(variable);
   64: 
   65: #define purgeVariable(var) \
   66:         do { \
   67:             createNameObject(variable); \
   68:             setName(variable, #var); \
   69:             pushOnStack(variable); \
   70:             intrinsic(dup); \
   71:             intrinsic(variable); \
   72:             intrinsic(purge); \
   73:         } while(0)
   74: 
   75:     purgeVariable(XmFalse);
   76:     purgeVariable(XmTrue);
   77: 
   78:     purgeVariable(XmATTACH_NONE);
   79:     purgeVariable(XmATTACH_FORM);
   80:     purgeVariable(XmATTACH_OPPOSITE_FORM);
   81:     purgeVariable(XmATTACH_WIDGET);
   82:     purgeVariable(XmATTACH_OPPOSITE_WIDGET);
   83:     purgeVariable(XmATTACH_POSITION);
   84:     purgeVariable(XmATTACH_SELF);
   85: 
   86:     purgeVariable(XmALIGNMENT_BEGINNING);
   87:     purgeVariable(XmALIGNMENT_CENTER);
   88:     purgeVariable(XmALIGNMENT_END);
   89: 
   90:     purgeVariable(XmHORIZONTAL);
   91:     purgeVariable(XmVERTICAL);
   92: 
   93:     purgeVariable(XtGrabNone);
   94:     purgeVariable(XtGrabNonexclusive);
   95:     purgeVariable(XtGrabExclusive);
   96: 
   97:     purgeVariable(XmSTRING);
   98: 
   99:     notice(stdout, "Motif library unloaded.\n\n");
  100: endSubroutine
  101: 
  102: // vim: ts=4

CVSweb interface <joel.bertrand@systella.fr>