/* openmath.h Copyright (C) 1998 NAG Ltd. */
#ifndef header_openmath_h
#define header_openmath_h
/*
* This code may be used and modified, and redistributed in binary
* or source form, subject to the "CCL Public License", which should
* accompany it. This license is a variant on the BSD license, and thus
* permits use of code derived from this in either open and commercial
* projects: but it does require that updates to this code be made
* available back to the originators of the package.
* Before merging other code in with this or linking this code
* with other packages or libraries please check that the license terms
* of the other material are compatible with those of this.
*/
/* Signature: 5537ffe6 08-Apr-2002 */
/*
* OpenMath primitives map to Lisp objects in the following way:
*
* OpenMath Lisp
* -------- ----
* 32 bit integer integer
* big integer integer
* 64 bit float real
* byte array vector of bytes
* variable symbol
* string string
* symbol OMS cd:="cdname" name:="symbolname" (Lisp properties).
*
* <OMA> (OMA ...)
* ...
* </OMA>
*
* <OMATTR> (OMATTR ...)
* <OMATP> (OMATP ...)
* ...
* </OMATP>
* obj
* </OMATTR>
*
* <OMBIND> (OMBIND ...)
* binder
* <OMBVAR> (OMBVAR ...)
* bvars
* </OMBVAR>
* obj
* </OMBIND>
*
* <OME> (OME ...)
* ...
* </OME>
*
* <OMOBJ> (OMOBJ ...)
* ...
* </OMOBJ>
*/
/*
* OpenMath / Lisp conversion functions.
*/
extern OMdev om_toDev(Lisp_Object obj);
extern Lisp_Object om_fromDev(OMdev dev);
extern OMstatus om_toStatus(Lisp_Object obj);
extern Lisp_Object om_fromStatus(OMstatus status);
extern OMencodingType om_toEncodingType(Lisp_Object obj);
extern Lisp_Object om_fromEncodingType(OMencodingType enc);
extern char * om_toBigNumStr(Lisp_Object obj);
extern Lisp_Object om_fromBigNumStr(char *data, int len, int sign, OMbigIntType fmt);
extern OMconn om_toConn(Lisp_Object obj);
extern Lisp_Object om_fromConn(OMconn conn);
extern char ** om_toCString(Lisp_Object obj);
extern Lisp_Object om_fromCString(char **str);
extern Lisp_Object om_lispStringFromCString(Lisp_Object cstr);
extern Lisp_Object om_cStringFromLispString(Lisp_Object lstr);
/*
* OpenMath Device manipulation functions.
*/
extern Lisp_Object MS_CDECL om_openFileDev(Lisp_Object env, int nargs, ...);
extern Lisp_Object om_openStrDev(Lisp_Object env, Lisp_Object lstr, Lisp_Object lenc);
extern Lisp_Object om_closeDev(Lisp_Object env, Lisp_Object dev);
/*
* OpenMath Connection manipulation functions.
*/
extern Lisp_Object om_makeConn(Lisp_Object nil, Lisp_Object ltimeout);
extern Lisp_Object om_closeConn(Lisp_Object nil, Lisp_Object lconn);
extern Lisp_Object om_getConnInDev(Lisp_Object nil, Lisp_Object lconn);
extern Lisp_Object om_getConnOutDev(Lisp_Object nil, Lisp_Object lconn);
/*
* OpenMath client/server functions.
*/
extern Lisp_Object MS_CDECL om_connectTCP(Lisp_Object nil, int nargs, ...);
extern Lisp_Object om_bindTCP(Lisp_Object nil, Lisp_Object lconn, Lisp_Object lport);
/* TODO: prototypes for the other functions from OMconn.h */
/*
* OpenMath Device input / output functions.
*/
extern Lisp_Object om_putApp(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_putEndApp(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_putAtp(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_putEndAtp(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_putAttr(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_putEndAttr(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_putBind(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_putEndBind(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_putBVar(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_putEndBVar(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_putError(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_putEndError(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_putObject(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_putEndObject(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_putInt(Lisp_Object nil, Lisp_Object ldev, Lisp_Object val);
extern Lisp_Object om_putFloat(Lisp_Object nil, Lisp_Object ldev, Lisp_Object val);
extern Lisp_Object om_putByteArray(Lisp_Object nil, Lisp_Object ldev, Lisp_Object val);
extern Lisp_Object om_putVar(Lisp_Object nil, Lisp_Object ldev, Lisp_Object val);
extern Lisp_Object om_putString(Lisp_Object nil, Lisp_Object ldev, Lisp_Object val);
extern Lisp_Object om_putSymbol(Lisp_Object nil, Lisp_Object ldev, Lisp_Object val);
extern Lisp_Object MS_CDECL om_putSymbol2(Lisp_Object nil, int nargs, ...);
extern Lisp_Object om_getApp(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_getEndApp(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_getAtp(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_getEndAtp(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_getAttr(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_getEndAttr(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_getBind(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_getEndBind(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_getBVar(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_getEndBVar(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_getError(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_getEndError(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_getObject(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_getEndObject(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_getInt(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_getFloat(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_getByteArray(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_getVar(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_getString(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_getSymbol(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_getType(Lisp_Object nil, Lisp_Object ldev);
extern Lisp_Object om_stringToStringPtr(Lisp_Object nil, Lisp_Object lstr);
extern Lisp_Object om_stringPtrToString(Lisp_Object nil, Lisp_Object lpstr);
#endif /* header_openmath_h */
/* end of openmath.h */