[BACK]Return to oxmisc2.c CVS log [TXT][DIR] Up to [local] / OpenXM / src / kan96xx / plugin

Diff for /OpenXM/src/kan96xx/plugin/oxmisc2.c between version 1.3 and 1.4

version 1.3, 1999/11/18 00:54:17 version 1.4, 1999/11/27 01:41:11
Line 1 
Line 1 
 /* $OpenXM: OpenXM/src/kan96xx/plugin/oxmisc2.c,v 1.2 1999/11/09 09:57:32 takayama Exp $ */  /* $OpenXM: OpenXM/src/kan96xx/plugin/oxmisc2.c,v 1.3 1999/11/18 00:54:17 takayama Exp $ */
 #include <stdio.h>  #include <stdio.h>
 #include "ox_kan.h"  #include "ox_kan.h"
 #include "oxmisc2.h"   /* This file requires sm1 object description. */  #include "oxmisc2.h"   /* This file requires sm1 object description. */
Line 129  int oxReq(oxclientp client,int func,struct object ob)
Line 129  int oxReq(oxclientp client,int func,struct object ob)
   case SM_setMathCap:    case SM_setMathCap:
     /* ob = [(mathcap-obj) [[version num, system name] [sm tags]      /* ob = [(mathcap-obj) [[version num, system name] [sm tags]
                              ob1                        smtags                               ob1                        smtags
                                                 [[ox numbers] [cmo numbers]]]                                      oxtags      [[ox numbers, [cmo numbers]]]
                                                     ob3         ob2 */                                                      ob3         ob2 */
      /*     oxtags      [[OX_DATA, [cmo numbers]],[OX_DATA_LOCAL,[opt]],...]*/
     {      {
       struct object ob1;        struct object ob1;
       struct object ob2;        struct object ob2;
       struct object ob3;        struct object ob3;
         struct object obm;
       struct object smtags;        struct object smtags;
         struct object oxtags;
         struct object ox;
     int n,i;      int n,i;
     struct mathCap mathcap;      struct mathCap mathcap;
   
Line 144  int oxReq(oxclientp client,int func,struct object ob)
Line 148  int oxReq(oxclientp client,int func,struct object ob)
       client->dstate = DSTATE_ANY;        client->dstate = DSTATE_ANY;
       break;        break;
     }      }
       ob1 = getoa(getoa(ob,1),0);        obm = getoa(ob,1);
       smtags = getoa(getoa(ob,1),1);        ob1 = getoa(obm,0);
       ob2 = getoa(getoa(getoa(ob,1),2),1);        smtags = getoa(obm,1);
       ob3 = getoa(getoa(getoa(ob,1),2),0);        oxtags = getoa(obm,2);
         if (smtags.tag != Sarray || oxtags.tag != Sarray) {
           errorOxmisc2("data format error in oxReqSetMathCap");
         }
       ob1p = (struct object *) sGC_malloc(sizeof(struct object));        ob1p = (struct object *) sGC_malloc(sizeof(struct object));
       *ob1p = ob1;        *ob1p = ob1;
       mathcap.infop = ob1p;        mathcap.infop = ob1p;
       n = getoaSize(ob2);  
       mathcap.n = n;        n = getoaSize(oxtags);
       if (n >= MATHCAP_SIZE) errorOxmisc2("Too big mathcap of your peer.");        if (n >= MATHCAP_SIZE) errorOxmisc2("Too big mathcap of your peer.");
       for (i=0; i<n; i++) {  
         mathcap.cmo[i] = KopInteger(getoa(ob2,i));  
       }  
       n = getoaSize(ob3);  
       if (n >= MATHCAP_SIZE) errorOxmisc2("Too big mathcap of your peer.");  
       mathcap.oxSize = n;        mathcap.oxSize = n;
       for (i=0; i<n; i++) {        for (i=0; i<n; i++) {
         mathcap.ox[i] = KopInteger(getoa(ob3,i));          ox = getoa(oxtags,i);
           if (ox.tag != Sarray) {
             errorOxmisc2("Data format error of the third argument of mathcap.");
           }
           mathcap.ox[i] = KopInteger(getoa(ox,0));
           if (mathcap.ox[i] == OX_DATA) {
             if (getoaSize(ox) < 2) {
               errorOxmisc2("Data format error in an entry of the third argument of mathcap.");
             }
             ob2 = getoa(ox,1);
             if (ob2.tag != Sarray) {
               errorOxmisc2("Data format error in an entry of the third argument of mathcap.");
             }
             mathcap.n = getoaSize(ob2);
             if (n >= MATHCAP_SIZE) errorOxmisc2("Too big mathcap of your peer.");
             for (i=0; i<mathcap.n; i++) {
               mathcap.cmo[i] = KopInteger(getoa(ob2,i));
             }
           }
       }        }
   
       n = getoaSize(smtags);        n = getoaSize(smtags);
Line 724  int cmoCheckMathCap(struct object obj, struct object *
Line 743  int cmoCheckMathCap(struct object obj, struct object *
   struct object mathcap;    struct object mathcap;
   struct object cmolist;    struct object cmolist;
   struct object mathcapMain;    struct object mathcapMain;
     struct object mathcapThird;
     struct object ox;
     struct object oxtag;
   struct object ob0;    struct object ob0;
     int oxsize;
   int n;    int n;
   int i;    int i;
 #define CMO_CHECK_MATH_CAP_LIST_SIZE 1024  #define CMO_CHECK_MATH_CAP_LIST_SIZE 1024
Line 744  int cmoCheckMathCap(struct object obj, struct object *
Line 767  int cmoCheckMathCap(struct object obj, struct object *
                  $HOSTTYPE=i386$ ]  ,                   $HOSTTYPE=i386$ ]  ,
             [    262 , 263 , 264 , 265 , 266 , 268 , 269 , 272 , 273 , 275 ,              [    262 , 263 , 264 , 265 , 266 , 268 , 269 , 272 , 273 , 275 ,
                  276 ]  ,                   276 ]  ,
             [    [    514 ]  , [    2130706434 , 1 , 2 , 4 , 5 , 17 , 19 , 20 , 22 , 23 , 24 , 25 , 26 , 30 , 31 , 60 , 61 , 27 , 33 , 40 , 16 , 34 ]  ]  ]  ]              [    [    514  , [    2130706434 , 1 , 2 , 4 , 5 , 17 , 19 , 20 , 22 , 23 , 24 , 25 , 26 , 30 , 31 , 60 , 61 , 27 , 33 , 40 , 16 , 34 ] ] ]  ]  ]
   */    */
   
   n = getoaSize(mathcap);    n = getoaSize(mathcap);
Line 786  int cmoCheckMathCap(struct object obj, struct object *
Line 809  int cmoCheckMathCap(struct object obj, struct object *
     fprintf(stderr,"\n");      fprintf(stderr,"\n");
     errorOxmisc2("cmoCheckMathCap: format error in the (client->mathcapObjp)[1] field. It should be an array of which length is more than 2.\n");      errorOxmisc2("cmoCheckMathCap: format error in the (client->mathcapObjp)[1] field. It should be an array of which length is more than 2.\n");
   }    }
   mathcap = getoa(mathcapMain,2);    mathcapThird = getoa(mathcapMain,2);
   n = getoaSize(mathcap);    oxsize = getoaSize(mathcapThird);
   if (n < 2) {    for (i=0; i<oxsize; i++) {
     fprintf(stderr,"cmoCheckMathCap: the mathcap obj is \n");      ox = getoa(mathcapThird,i);
     printObject(*obp,0,stderr);      if (ox.tag != Sarray) {
     fprintf(stderr,"\n");        fprintf(stderr,"cmoCheckMathCap: the mathcap obj is \n");
     errorOxmisc2("cmoCheckMathCap: length of mathcap is wrong in the client->mathcapObjp field.\n");        printObject(*obp,0,stderr);
   }        fprintf(stderr,"\n");
   cmolist = getoa(mathcap,1);        errorOxmisc2("cmoCheckMathCap: the third element of mathcap is a list of lists.");
   if (cmolist.tag != Sarray) {      }
     fprintf(stderr,"cmoCheckMathCap: the mathcap obj is \n");      if (getoaSize(ox) != 0) {
     printObject(*obp,0,stderr);        oxtag = getoa(ox,0);
     fprintf(stderr,"\n");        if (oxtag.tag != Sinteger) {
     errorOxmisc2("cmoCheckMathCap: mathcap[1] must be an array of integers.\n");          fprintf(stderr,"cmoCheckMathCap: the mathcap obj is \n");
   }          printObject(*obp,0,stderr);
   n = getoaSize(cmolist);          fprintf(stderr,"\n");
   if (n > CMO_CHECK_MATH_CAP_LIST_SIZE) {          errorOxmisc2("cmoCheckMathCap: the third element of mathcap must be [OX_DATA_xxx, [  ]].");
     errorOxmisc2("cmoCheckMathCap: Too big cmo list.\n");        }
   }        if (KopInteger(oxtag) == OX_DATA) {
   for (i=0; i<n; i++) {          if (getoaSize(ox) > 1) {
     cmo[i] = KopInteger(getoa(cmolist,i));            cmolist = getoa(ox,1);
             if (cmolist.tag != Sarray) {
               fprintf(stderr,"cmoCheckMathCap: the mathcap obj is \n");
               printObject(*obp,0,stderr);
               fprintf(stderr,"\n");
               errorOxmisc2("cmoCheckMathCap: mathcap[1] must be an array of integers.\n");
             }
             n = getoaSize(cmolist);
             if (n > CMO_CHECK_MATH_CAP_LIST_SIZE) {
               errorOxmisc2("cmoCheckMathCap: Too big cmo list.\n");
             }
             for (i=0; i<n; i++) {
               cmo[i] = KopInteger(getoa(cmolist,i));
             }
           }else{
             fprintf(stderr,"cmoCheckMathCap: the mathcap obj is \n");
             printObject(*obp,0,stderr);
             fprintf(stderr,"\nox=");
             printObject(ox,0,stderr);
             errorOxmisc2("cmoCheckMathCap: [OX_DATA, cmolist]");
           }
         }
       }
   }    }
   return(cmoCheck00(obj,cmo,n));    return(cmoCheck00(obj,cmo,n));
 }  }

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>