=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/io/ox.c,v retrieving revision 1.8 retrieving revision 1.11 diff -u -p -r1.8 -r1.11 --- OpenXM_contrib2/asir2000/io/ox.c 2000/09/12 06:05:30 1.8 +++ OpenXM_contrib2/asir2000/io/ox.c 2001/08/03 08:50:19 1.11 @@ -44,7 +44,7 @@ * 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/ox.c,v 1.7 2000/09/07 23:59:55 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/io/ox.c,v 1.10 2000/11/08 08:02:51 noro Exp $ */ #include "ca.h" #include "parse.h" @@ -94,9 +94,25 @@ static struct mathcap my_mc; static struct mathcap *remote_mc; static int remote_mc_len; +#if defined(VISUAL) +/* XXX : mainly used in engine2000/io.c, but declared here */ +HANDLE hStreamNotify,hStreamNotify_Ack; + +void cleanup_events() +{ + /* ox_watch_stream may be waiting for hStreamNotify_Ack to be set */ + + ResetEvent(hStreamNotify); + SetEvent(hStreamNotify_Ack); +} +#endif + void ox_resetenv(s) char *s; { +#if defined(VISUAL) + cleanup_events(); +#endif fprintf(stderr,"%s\n",s); longjmp(ox_env,1); } @@ -109,6 +125,7 @@ static int available_cmo[] = { CMO_RING_BY_NAME, CMO_DISTRIBUTED_POLYNOMIAL, CMO_RECURSIVE_POLYNOMIAL, CMO_UNIVARIATE_POLYNOMIAL, CMO_INDETERMINATE, + CMO_TREE, 0 }; @@ -602,6 +619,7 @@ int ox_check_cmo(int s, Obj obj) return 1; switch ( OID(obj) ) { case O_MATHCAP: case O_STR: case O_ERR: case O_USINT: case O_VOID: + case O_BYTEARRAY: return 1; case O_P: if ( !check_by_mc(s,OX_DATA,CMO_RECURSIVE_POLYNOMIAL) ) @@ -634,6 +652,8 @@ int ox_check_cmo(int s, Obj obj) for ( m = BDY((LIST)obj); m; m = NEXT(m) ) if ( !ox_check_cmo(s,(BDY(m))) ) return 0; + return 1; + case O_QUOTE: /* XXX */ return 1; default: return 0;