[BACK]Return to ox.c CVS log [TXT][DIR] Up to [local] / OpenXM / src / ox_math

Diff for /OpenXM/src/ox_math/Attic/ox.c between version 1.13 and 1.16

version 1.13, 1999/11/11 09:08:52 version 1.16, 1999/11/28 16:43:21
Line 1 
Line 1 
 /* -*- mode: C; coding: euc-japan -*- */  /* -*- mode: C; coding: euc-japan -*- */
 /* $OpenXM: OpenXM/src/ox_math/ox.c,v 1.12 1999/11/07 12:12:55 ohara Exp $ */  /* $OpenXM: OpenXM/src/ox_math/ox.c,v 1.15 1999/11/18 21:57:56 ohara Exp $ */
   
 /*  /*
 関数の名前付け規約(その2):  関数の名前付け規約(その2):
Line 57  static int          dump_string(char *s, int len);
Line 57  static int          dump_string(char *s, int len);
 static int          dump_integer(int x);  static int          dump_integer(int x);
 static int          dump_mpz(mpz_ptr mpz);  static int          dump_mpz(mpz_ptr mpz);
   
 static int          funcs(int cmo_type);  
   
 static int          login_with_otp(int fd, char* passwd);  static int          login_with_otp(int fd, char* passwd);
 static char         *create_otp();  static char         *create_otp();
   
Line 270  static cmo_distributed_polynomial* receive_cmo_distrib
Line 268  static cmo_distributed_polynomial* receive_cmo_distrib
   
     while (len>0) {      while (len>0) {
         ob = receive_cmo(fd);          ob = receive_cmo(fd);
         append_cmo_list(c, ob);          append_cmo_list((cmo_list *)c, ob);
         len--;          len--;
     }      }
     return c;      return c;
Line 332  cmo* receive_cmo(int fd)
Line 330  cmo* receive_cmo(int fd)
     case CMO_DATUM:      case CMO_DATUM:
     case CMO_QQ:      case CMO_QQ:
     default:      default:
         fprintf(stderr, "unknown cmo-type: tag = (%d)\n", m->tag);          fprintf(stderr, "the CMO (%d) is not implemented.\n", m->tag);
     }      }
     return m;      return m;
 }  }
Line 513  int print_cmo(cmo* c)
Line 511  int print_cmo(cmo* c)
 {  {
     int tag = c->tag;      int tag = c->tag;
   
 #ifdef DEBUG  
     symbol* symp = lookup_by_tag(tag);      symbol* symp = lookup_by_tag(tag);
     if (symp != NULL) {      if (symp != NULL) {
         fprintf(stderr, "local::tag = %s: ", symp->key);          fprintf(stderr, "(%s", symp->key);
     }else {      }else {
         fprintf(stderr, "local::tag = %d: ", tag);          fprintf(stderr, "(%d", tag);
     }      }
 #endif  
   
     switch(tag) {      switch(tag) {
     case CMO_LIST:      case CMO_LIST:
Line 530  int print_cmo(cmo* c)
Line 526  int print_cmo(cmo* c)
         print_cmo_int32((cmo_int32 *)c);          print_cmo_int32((cmo_int32 *)c);
         break;          break;
     case CMO_MATHCAP:      case CMO_MATHCAP:
       case CMO_INDETERMINATE:
       case CMO_RING_BY_NAME:
       case CMO_ERROR2:
         print_cmo_mathcap((cmo_mathcap *)c);          print_cmo_mathcap((cmo_mathcap *)c);
         break;          break;
     case CMO_STRING:      case CMO_STRING:
         print_cmo_string((cmo_string *)c);          print_cmo_string((cmo_string *)c);
         break;          break;
     case CMO_NULL:      case CMO_NULL:
         fprintf(stderr, "\n");      case CMO_ZERO:
       case CMO_DMS_GENERIC:
           fprintf(stderr, ")");
         break;          break;
     default:      default:
         fprintf(stderr, "print_cmo() does not know how to print.\n");          fprintf(stderr, "print_cmo() does not know how to print.\n");
Line 545  int print_cmo(cmo* c)
Line 546  int print_cmo(cmo* c)
   
 int print_cmo_int32(cmo_int32* c)  int print_cmo_int32(cmo_int32* c)
 {  {
     fprintf(stderr, "cmo_int32 = (%d)\n", c->i);      fprintf(stderr, ", %d)", c->i);
 }  }
   
 int print_cmo_list(cmo_list* li)  int print_cmo_list(cmo_list* li)
 {  {
     cell* cp = li->head;      cell* cp = li->head;
     fprintf(stderr, "length = (%d)\nlist:\n", li->length);      while(cp->next != NULL) {
     while(cp != NULL) {          fprintf(stderr, ", ");
         print_cmo(cp->cmo);          print_cmo(cp->cmo);
         cp=cp->next;          cp=cp->next;
     }      }
     fprintf(stderr, "end of list\n");      fprintf(stderr, ")");
 }  }
   
 int print_cmo_mathcap(cmo_mathcap* c)  int print_cmo_mathcap(cmo_mathcap* c)
 {  {
     fprintf(stderr, "\n");      fprintf(stderr, ", ");
     print_cmo(c->ob);      print_cmo(c->ob);
       fprintf(stderr, ")");
 }  }
   
 int print_cmo_string(cmo_string* c)  int print_cmo_string(cmo_string* c)
 {  {
     fprintf(stderr, "cmo_string = (%s)\n", c->s);      fprintf(stderr, ", \"%s\")", c->s);
 }  }
   
 void ox_close(ox_file_t sv)  void ox_close(ox_file_t sv)
Line 1189  ox_command* new_ox_command(int sm_code)
Line 1191  ox_command* new_ox_command(int sm_code)
     return m;      return m;
 }  }
   
 #define  MAX_TYPES  8  ox_sync_ball* new_ox_sync_ball()
 static int known_types[] = {  {
     -1,   /* gate keeper */      ox_sync_ball *m = malloc(sizeof(ox_sync_ball));
     CMO_NULL,      m->tag = OX_SYNC_BALL;
     CMO_INT32,      return m;
     CMO_STRING,  }
     CMO_MATHCAP,  
     CMO_LIST,  
     CMO_ZZ,  
     CMO_ERROR2,  
 };  
   
 #define ID_TEMP   "(CMO_LIST, (CMO_INT32, %d), (CMO_STRING, \"%s\"), (CMO_STRING, \"%s\"), (CMO_STRING, \"%s\"))"  #define ID_TEMP   "(CMO_LIST, (CMO_INT32, %d), (CMO_STRING, \"%s\"), (CMO_STRING, \"%s\"), (CMO_STRING, \"%s\"))"
   
   
 static cmo_list* make_list_of_id(int ver, char* ver_s, char* sysname)  static cmo_list* make_list_of_id(int ver, char* ver_s, char* sysname)
 {  {
     cmo_list *cap;      cmo_list *cap;
Line 1233  static cmo_list *make_list_of_tag(int type)
Line 1229  static cmo_list *make_list_of_tag(int type)
   
 cmo* make_mathcap_object(int version, char *id_string)  cmo* make_mathcap_object(int version, char *id_string)
 {  {
     char sysname[]   = "ox_math";      char *sysname    = "ox_math";
     cmo_list *li     = new_cmo_list();      cmo_list *li     = new_cmo_list();
     cmo_list *li_1st = make_list_of_id(version, id_string, sysname);      cmo_list *li_1st = make_list_of_id(version, id_string, sysname);
     cmo_list *li_2nd = make_list_of_tag(IS_SM);      cmo_list *li_2nd = make_list_of_tag(IS_SM);
         cmo_list *li_3rd = new_cmo_list();      cmo_list *li_3rd = new_cmo_list();
     cmo_list *li_cmo = make_list_of_tag(IS_CMO);      cmo_list *li_cmo = make_list_of_tag(IS_CMO);
   
     cmo_list *li_ox  = new_cmo_list();      cmo_list *li_ox_data  = new_cmo_list();
         append_cmo_list(li_ox,  (cmo *)new_cmo_int32(OX_DATA));      append_cmo_list(li_ox_data,  (cmo *)new_cmo_int32(OX_DATA));
     append_cmo_list(li_3rd, (cmo *)li_ox);      append_cmo_list(li_ox_data,  (cmo *)li_cmo);
     append_cmo_list(li_3rd, (cmo *)li_cmo);      append_cmo_list(li_3rd, (cmo *)li_ox_data);
   
     append_cmo_list(li, (cmo *)li_1st);      append_cmo_list(li, (cmo *)li_1st);
     append_cmo_list(li, (cmo *)li_2nd);      append_cmo_list(li, (cmo *)li_2nd);
Line 1252  cmo* make_mathcap_object(int version, char *id_string)
Line 1248  cmo* make_mathcap_object(int version, char *id_string)
     return (cmo *)new_cmo_mathcap((cmo *)li);      return (cmo *)new_cmo_mathcap((cmo *)li);
 }  }
   
 static int funcs(int cmo_type)  
 {  
     int i;  
     for(i=0; i<MAX_TYPES; i++) {  
         if (known_types[i] == cmo_type) {  
             return i;  
         }  
     }  
     return 0;  
 }  
   
 void setCmotypeDisable(int type)  
 {  
     int i = funcs(type);  
     known_types[i] = -1;  
 }  
   
 #if 0  
 cmo* (*received_funcs[])(int fd) = {  
     NULL,  /* gate keeper */  
     receive_cmo_null,  
     receive_cmo_int32,  
     receive_cmo_string,  
     receive_cmo_mathcap,  
     receive_cmo_list,  
     receive_cmo_zz,  
     receive_cmo_error2  
 };  
   
 cmo* receive_cmo2(int fd)  
 {  
     int tag;  
     cmo* (*foo)() = received_funcs[funcs(tag)];  
     if (foo != NULL) {  
         return foo(fd);  
     }  
 }  
 #endif  
   
 /* ファイルディスクリプタ fd の通信路での integer の byte order を決定する */  /* ファイルディスクリプタ fd の通信路での integer の byte order を決定する */
 /* 実際には order (0,1,or 0xFF)をみてはいない */  /* 実際には order (0,1,or 0xFF)をみてはいない */
 int decideByteOrderClient(oxfd fd, int order)  int decideByteOrderClient(oxfd fd, int order)
Line 1319  char *convert_zz_to_string(cmo_zz *c)
Line 1276  char *convert_zz_to_string(cmo_zz *c)
     return mpz_get_str(NULL, 10, c->mpz);      return mpz_get_str(NULL, 10, c->mpz);
 }  }
   
   char *convert_null_to_string()
   {
       static char* null_string = "";
       return null_string;
   }
   
   char *convert_int_to_string(int integer)
   {
       char buff[1024];
       char *s;
   
       sprintf(buff, "%d", integer);
       s = malloc(strlen(buff)+1);
       strcpy(s, buff);
   
       return s;
   }
   
   char *convert_cmo_list_to_string(cmo_list *m)
   {
       char *s;
       int i;
       int size = 0;
       int len = length_cmo_list(m);
       char **sp = malloc(len*sizeof(cmo *));
   
       cell *cp = m->head;
       for(i = 0; i < len; i++) {
           sp[i] = convert_cmo_to_string(cp->cmo);
           size += strlen(sp[i]) + 3;
           cp = cp->next;
       }
       s = malloc(size+2);
       strcpy(s, "[ ");
       for(i = 0; i < len - 1; i++) {
           strcat(s, sp[i]);
           strcat(s, " , ");
       }
       strcat(s, sp[len-1]);
       strcat(s, " ]");
       free(sp);
       return s;
   }
   
 char *convert_cmo_to_string(cmo *m)  char *convert_cmo_to_string(cmo *m)
 {  {
     symbol *symp;      symbol *symp;
Line 1331  char *convert_cmo_to_string(cmo *m)
Line 1332  char *convert_cmo_to_string(cmo *m)
         return ((cmo_string *)m)->s;          return ((cmo_string *)m)->s;
     case CMO_NULL:      case CMO_NULL:
         return convert_null_to_string();          return convert_null_to_string();
       case CMO_LIST:
           return convert_cmo_list_to_string((cmo_list *)m);
     default:      default:
 #ifdef DEBUG  #ifdef DEBUG
         symp = lookup_by_tag(m->tag);          symp = lookup_by_tag(m->tag);
Line 1339  char *convert_cmo_to_string(cmo *m)
Line 1342  char *convert_cmo_to_string(cmo *m)
         /* まだ実装していません. */          /* まだ実装していません. */
         return NULL;          return NULL;
     }      }
 }  
   
 char *convert_null_to_string()  
 {  
     static char* null_string = "";  
     return null_string;  
 }  
   
 char *convert_int_to_string(int integer)  
 {  
     char buff[1024];  
     char *s;  
   
     sprintf(buff, "%d", integer);  
     s = malloc(strlen(buff)+1);  
     strcpy(s, buff);  
   
     return s;  
 }  }

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.16

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