#include "src/rplexternals.h" #include "motif.h" declareExternalFunction(XtOpenApplication) int argc; String *argv; string name; string widgetClass; declareObject(appObject); declareObject(widgetClassObject); declareObject(nameObject); declareObject(widgetObject); WidgetClass wc; HEADER declareHelpString("Initialize application context\n" " 2: \"application name\"\n" " 1: \"shell widget class\"\n" " -> 2: AppContext\n" " 1: Widget\n"); numberOfArguments(1); FUNCTION pullFromStack(widgetClassObject, string); returnOnError(freeObject(widgetClassObject)); getString(widgetClassObject, widgetClass); pullFromStack(nameObject, string); returnOnError(freeObject(widgetClassObject); freeObject(nameObject)); getString(nameObject, name); argc = 0; nullify(argv); createExternalObject(appObject, APPCONTEXT); createExternalObject(widgetObject, WIDGET); objectOf(appObject) = allocate(size(sXtAppContext)); objectOf(widgetObject) = allocate(size(Widget)); XtSetLanguageProc(NULL, NULL, NULL); Xm_widgets_classes(widgetClass, wc); target(objectContainer(Widget, widgetObject)) = XtVaOpenApplication(address(target( objectContainer(sXtAppContext, appObject)).context), name, NULL, 0, address(argc), argv, NULL, wc, NULL); target(objectContainer(sXtAppContext, appObject)).widget = target(objectContainer(Widget, widgetObject)); XtVaSetValues(target(objectContainer(Widget, widgetObject)), XmNtitle, name, NULL); freeObject(nameObject); freeObject(widgetClassObject); if (nullified(objectOf(appObject))) then executionError("Nullified XtAppContext"); freeObject(appObject); freeObject(widgetObject); returnOnError(); endIf pushOnStack(appObject); pushOnStack(widgetObject); setFalse(exitMainLoop); setTrue(initializationDone); END endExternalFunction // vim: ts=4