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