/*cmo.h : Dont edit this file. */
/* cmotag.h */
/* #define CMO 1024 It is defined in stackm.h. */
#define LARGEID 0x7f000000
#define CMO_ERROR (LARGEID+1)
#define CMO_ERROR2 (LARGEID+2)
#define CMO_NULL 1
#define CMO_INT32 2
#define CMO_DATUM 3
#define CMO_STRING 4
#define CMO_ARRAYOFINT32 5
#define CMO_START_SIGNATURE 0x7fabcd03
#define CMO_LOCAL_OBJECT 0x7fcdef03
#define CMO_TAG 16
#define CMO_LIST 17
#define CMO_ATOM 18
#define CMO_MONOMIAL32 19
#define CMO_ZZ 20 /* CMO_GMPCOEF */
#define CMO_QQ 21
#define CMO_ZERO 22
#define CMO_DMS 23 /* Distributed monomial system */
#define CMO_DMS_GENERIC 24
#define CMO_DMS_OF_N_VARIABLES 25
#define CMO_RING_BY_NAME 26
#define CMO_INT32COEFF 30 /* it should be thrown a way. */
/* end of cmotag.h */
/* cmo0.h */
typedef enum {CMOINIT,CMOPUT,CMOGET,CMOFLUSH,
CMOINITSTREAM,CMOGETBYTE} cmoAction;
typedef unsigned long int cmoint;
struct cmoBuffer {
int size;
int pos;
int rpos;
int isStream;
FILE2 *fp;
void *buf;
};
/* ------------------------------------------- */
struct object cmoObjectToCmo(struct object ob);
void cmoPrintCmo(struct object ob);
struct object cmoCmoToObject(struct object ob);
/* ----------------------- */
int errorCmo(char *s);
struct cmoBuffer *cmoOutputToBuf(cmoAction a,void *data, int size);
int dumpCmoBuf(struct cmoBuffer *cb);
int cmoOutInt32(int k);
int cmoOutString(char *s,int size);
int cmoOutInt32Coeff(int k);
int cmoGetIntFromBuf(cmoAction a,struct cmoBuffer *cb);
int cmoOutMonomial32(POLY cell);
int cmoOutDMS() ;
int cmoOutPolynomial(POLY f) ;
int cmoOutRingDefinition(struct ring * rp,int option);
void *cmoGetString(struct cmoBuffer *cb, int size);
struct coeff * cmoGetInt32Coeff(struct cmoBuffer *cb);
POLY cmoGetMonomial32(struct cmoBuffer *cb);
POLY cmoListToPOLY(struct object ob); /* Assumes [CMO_ADD, ....] */
struct object streamToCmo(struct object of);
int cmoToStream(struct object cmoObj, struct object of);
struct object cmoListToPoly(struct object ob);
struct object cmoObjectToStream(struct object ob, struct object obStream);
struct object cmoObjectFromStream(struct object obStream);
struct object cmoObjectFromStream2(FILE2 *fp2);
struct object cmoObjectToStream2(struct object ob,FILE2 *fp2);
int Kan_PushBinary(int size,void *data);
void *Kan_PopBinary(int *sizep);
int Kan_pushCMOFromStream(FILE2 *fp);
int Kan_popCMOToStream(FILE2 *fp);
int cmoOutRawInt(int k);
/* ---------------- end of cmo.h ---------------------*/