Diff for /rpl/modules/motif/XtCreateWidget.rplc between versions 1.1 and 1.5

version 1.1, 2017/07/05 13:53:40 version 1.5, 2017/07/10 14:47:59
Line 8  declareExternalFunction(XtCreateWidget) Line 8  declareExternalFunction(XtCreateWidget)
     declareObject(parametersObject);      declareObject(parametersObject);
     declareObject(list);      declareObject(list);
     declareObject(directive);      declareObject(directive);
       declareObject(widget);
   
       declareInteger(value);
   
     declareDaisyChain(current);      declareDaisyChain(current);
     declareDaisyChain(current2);      declareDaisyChain(current2);
   
     char            target(name);      char            target(name);
     char            target(class);      char            target(class);
       char            target(cvalue);
       char            target(command);
   
       ArgList         args;
     Cardinal        argNum;      Cardinal        argNum;
       String          argument;
     WidgetClass     wc;      WidgetClass     wc;
       XmString        x_string;
   
     HEADER      HEADER
         declareHelpString("Create a Motif widget\n"          declareHelpString("Create a Motif widget\n"
Line 35  declareExternalFunction(XtCreateWidget) Line 43  declareExternalFunction(XtCreateWidget)
             returnOnError(freeObject(parametersObject);              returnOnError(freeObject(parametersObject);
                     freeObject(parentObject));                      freeObject(parentObject));
   
               ifIsExternal(parentObject, WIDGET) then
               orElse
                   executionError("Type mismatch error");
                   returnOnError(freeObject(parametersObject);
                           freeObject(parentObject));
               endIf
   
             pullFromStack(classObject, string);              pullFromStack(classObject, string);
             returnOnError(freeObject(parametersObject);              returnOnError(freeObject(parametersObject);
                     freeObject(parentObject);                      freeObject(parentObject);
Line 129  declareExternalFunction(XtCreateWidget) Line 144  declareExternalFunction(XtCreateWidget)
                 current = nextElementOfDaisyChain(current);                  current = nextElementOfDaisyChain(current);
                 postIncr(argNum);                  postIncr(argNum);
             endWhile              endWhile
   
   uprintf("%d\n", argNum);
               args = allocate(size(Arg) * argNum);
               argNum = 0;
               getDaisyChainFromList(parametersObject, current);
   
               repeatWhile(not nullified(current))
                   list = fetchElementFromDaisyChain(current);
                   getDaisyChainFromList(list, current2);
                   getString(fetchElementFromDaisyChain(current2), command);
                   current2 = nextElementOfDaisyChain(current2);
   
                   XmN_constants(command, argument);
   
                   returnOnError(freeObject(parametersObject);
                           freeObject(parentObject);
                           freeObject(classObject);
                           freeObject(nameObject));
   
                   ifIsExternal(fetchElementFromDaisyChain(current2), WIDGET) then
                       if ((strcmp(command, "XmNtopWidget") eq 0) or
                               (strcmp(command, "XmNbottomWidget") eq 0) or
                               (strcmp(command, "XmNleftWidget") eq 0) or
                               (strcmp(command, "XmNrightWidget") eq 0)) then
   /*
                           XtSetArg(args[argNum], argument,
                                   (XtArgVal) (*((sXtAppContext *)
                                   objectContainer(fetchElementFromDaisyChain(
                                   current2)))).widget);
   */
                           XtSetArg(args[argNum], argument,
                                   (XtArgVal) target((Widget *) objectContainer(
                                   fetchElementFromDaisyChain(current2))));
                       orElse
                           executionError("Wait for XmN*Widget");
                           deallocate(args);
                           returnOnError(freeObject(parametersObject);
                                   freeObject(parentObject);
                                   freeObject(classObject);
                                   freeObject(nameObject));
                       endIf
                   elseIfIsName(fetchElementFromDaisyChain(current2)) then
                       directive = fetchElementFromDaisyChain(current2);
                       dupObject(directive);
                       intrinsic(pshcntxt);
                       pushOnStack(directive);
                       intrinsic(eval);
                       pullFromStack(directive, unknown);
                       intrinsic(pulcntxt);
   
                       ifIsInteger(directive) then
                           getInteger(directive, value);
                           XtSetArg(args[argNum], argument, (XtArgVal) value);
                       elseIfIsExternal(directive, WIDGET) then
                           if ((strcmp(command, "XmNtopWidget") eq 0) or
                                   (strcmp(command, "XmNbottomWidget") eq 0) or
                                   (strcmp(command, "XmNleftWidget") eq 0) or
                                   (strcmp(command, "XmNrightWidget") eq 0)) then
                           XtSetArg(args[argNum], argument,
                                   (XtArgVal) target((Widget *) objectContainer(
                                   directive)));
                           orElse
                               executionError("Wait for XmN*Widget");
                               deallocate(args);
                               returnOnError(freeObject(parametersObject);
                                       freeObject(parentObject);
                                       freeObject(classObject);
                                       freeObject(nameObject));
                           endIf
                       endIf
                   elseIfIsInteger(fetchElementFromDaisyChain(current2)) then
                       getInteger(fetchElementFromDaisyChain(current2), value);
                       XtSetArg(args[argNum], argument, (XtArgVal) value);
                   orElse // Allowed types are integer, name, widget or string
                       getString(fetchElementFromDaisyChain(current2), cvalue);
                       x_string = XmStringCreate(cvalue, XmFONTLIST_DEFAULT_TAG);
                       XtSetArg(args[argNum], argument, (XtArgVal) x_string);
                   endIf
   
                   current = nextElementOfDaisyChain(current);
                   postIncr(argNum);
               endWhile
   
               createExternalObject(widget, WIDGET);
               objectContainer(widget) = allocate(size(Widget));
   
               target((Widget *) objectContainer(widget)) =
                       XtCreateWidget(name, wc, target((Widget *)
                       objectContainer(parentObject)), args, argNum);
               XtManageChild(target((Widget *) objectContainer(widget)));
   
               pushOnStack(widget);
               deallocate(args);
         orElse          orElse
             executionError("Application not initialized");              executionError("Application not initialized");
             returnOnError();              returnOnError();
         endIf          endIf
   
         setFalse(initializationDone);          freeObject(parametersObject);
           freeObject(parentObject);
           freeObject(classObject);
           freeObject(nameObject);
     END      END
 endExternalFunction  endExternalFunction
   
   // vim: ts=4

Removed from v.1.1  
changed lines
  Added in v.1.5


CVSweb interface <joel.bertrand@systella.fr>