=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/io/cio.c,v retrieving revision 1.14 retrieving revision 1.16 diff -u -p -r1.14 -r1.16 --- OpenXM_contrib2/asir2000/io/cio.c 2015/08/04 10:19:31 1.14 +++ OpenXM_contrib2/asir2000/io/cio.c 2015/08/06 10:01:52 1.16 @@ -44,12 +44,12 @@ * OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. - * $OpenXM: OpenXM_contrib2/asir2000/io/cio.c,v 1.13 2015/08/04 06:20:45 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/io/cio.c,v 1.15 2015/08/06 09:12:29 noro Exp $ */ #include "ca.h" #include "parse.h" #include "ox.h" -#if !defined(VISUAL) +#if !defined(VISUAL) && !defined(__MINGW32__) && !defined(__MINGW64__) #include #endif @@ -147,6 +147,9 @@ void write_cmo(FILE *s,Obj obj) fnodetotree(BDY((QUOTE)obj),&l); write_cmo_tree(s,l); break; + case O_MAT: + write_cmo_matrix_as_list(s,(MAT)obj); + break; default: sprintf(errmsg, "write_cmo : id=%d not implemented.",OID(obj)); error(errmsg); @@ -457,6 +460,23 @@ void write_cmo_tree(FILE *s,LIST l) write_cmo_tree(s,BDY(n)); n = NEXT(n); } + } +} + +void write_cmo_matrix_as_list(FILE *s,MAT a) +{ + int i,j,r,row,col; + + /* CMO_LIST row (CMO_LIST col a[0][0] ... a[0][col-1]) ... (CMO_LIST col a[row-1][0] ... a[row-1][col-1] */ + row = a->row; col = a->col; + r = CMO_LIST; + write_int(s,&r); + write_int(s,&row); + for ( i = 0; i < row; i++ ) { + write_int(s,&r); + write_int(s,&col); + for ( j = 0; j < col; j++ ) + write_cmo(s,a->body[i][j]); } }