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