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

Diff for /OpenXM/src/ox_toolkit/ox.c between version 1.35 and 1.37

version 1.35, 2013/10/20 14:58:20 version 1.37, 2014/04/07 04:00:10
Line 1 
Line 1 
 /* -*- mode: C; coding: euc-japan -*- */  /* -*- mode: C; coding: euc-japan -*- */
 /* $OpenXM: OpenXM/src/ox_toolkit/ox.c,v 1.34 2007/03/14 10:30:54 ohara Exp $ */  /* $OpenXM: OpenXM/src/ox_toolkit/ox.c,v 1.36 2013/10/20 15:29:12 iwane Exp $ */
   
 /*  /*
    This module includes functions for sending/receiveng CMO's.     This module includes functions for sending/receiveng CMO's.
Line 387  cmo *receive_cmo_tag(OXFILE *oxfp, int tag)
Line 387  cmo *receive_cmo_tag(OXFILE *oxfp, int tag)
 static void receive_mpz(OXFILE *oxfp, mpz_ptr mpz)  static void receive_mpz(OXFILE *oxfp, mpz_ptr mpz)
 {  {
     int i;      int i;
         int n = sizeof(mpz->_mp_d[0]) / sizeof(int);      int n = sizeof(mpz->_mp_d[0]) / sizeof(int);
     int size  = receive_int32(oxfp);      int size  = receive_int32(oxfp);
     int len   = abs(size);      int len   = abs(size);
         int *ptr;      int *ptr;
         if (n == 1) {      if (n == 1) {
             resize_mpz(mpz, size);          resize_mpz(mpz, size);
         } else {      } else if (size >= 0) {
             resize_mpz(mpz, (size+1) / n);          resize_mpz(mpz, (size+1) / n);
         }      } else {
           resize_mpz(mpz, (size-1) / n);
       }
   
         ptr = (int *)mpz->_mp_d;      ptr = (int *)mpz->_mp_d;
         for(i= len-1; i>=0; i--) {      for(i=0; i<len; i++) {
                 ptr[i] = receive_int32(oxfp);          ptr[i] = receive_int32(oxfp);
         }      }
 }  }
   
 void send_ox_command(OXFILE *oxfp, int sm_command)  void send_ox_command(OXFILE *oxfp, int sm_command)
Line 715  static int send_mpz(OXFILE *oxfp, mpz_ptr mpz)
Line 717  static int send_mpz(OXFILE *oxfp, mpz_ptr mpz)
         int n = sizeof(mpz->_mp_d[0]) / sizeof(int);          int n = sizeof(mpz->_mp_d[0]) / sizeof(int);
     int len = abs(mpz->_mp_size) * n;      int len = abs(mpz->_mp_size) * n;
         int *ptr = (int *)mpz->_mp_d;          int *ptr = (int *)mpz->_mp_d;
       int size;
     send_int32(oxfp, mpz->_mp_size * n);      send_int32(oxfp, mpz->_mp_size * n);
       if (len > 0 && ptr[len-1] == 0) {
           len--;
       }
       size = mpz->_mp_size < 0 ? -len : len;
       send_int32(oxfp, size);
     for(i=0; i<len; i++) {      for(i=0; i<len; i++) {
         send_int32(oxfp, ptr[i]);          send_int32(oxfp, ptr[i]);
     }      }

Legend:
Removed from v.1.35  
changed lines
  Added in v.1.37

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