openmath.h 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. /* openmath.h Copyright (C) 1998 NAG Ltd. */
  2. #ifndef header_openmath_h
  3. #define header_openmath_h
  4. /*
  5. * This code may be used and modified, and redistributed in binary
  6. * or source form, subject to the "CCL Public License", which should
  7. * accompany it. This license is a variant on the BSD license, and thus
  8. * permits use of code derived from this in either open and commercial
  9. * projects: but it does require that updates to this code be made
  10. * available back to the originators of the package.
  11. * Before merging other code in with this or linking this code
  12. * with other packages or libraries please check that the license terms
  13. * of the other material are compatible with those of this.
  14. */
  15. /* Signature: 5537ffe6 08-Apr-2002 */
  16. /*
  17. * OpenMath primitives map to Lisp objects in the following way:
  18. *
  19. * OpenMath Lisp
  20. * -------- ----
  21. * 32 bit integer integer
  22. * big integer integer
  23. * 64 bit float real
  24. * byte array vector of bytes
  25. * variable symbol
  26. * string string
  27. * symbol OMS cd:="cdname" name:="symbolname" (Lisp properties).
  28. *
  29. * <OMA> (OMA ...)
  30. * ...
  31. * </OMA>
  32. *
  33. * <OMATTR> (OMATTR ...)
  34. * <OMATP> (OMATP ...)
  35. * ...
  36. * </OMATP>
  37. * obj
  38. * </OMATTR>
  39. *
  40. * <OMBIND> (OMBIND ...)
  41. * binder
  42. * <OMBVAR> (OMBVAR ...)
  43. * bvars
  44. * </OMBVAR>
  45. * obj
  46. * </OMBIND>
  47. *
  48. * <OME> (OME ...)
  49. * ...
  50. * </OME>
  51. *
  52. * <OMOBJ> (OMOBJ ...)
  53. * ...
  54. * </OMOBJ>
  55. */
  56. /*
  57. * OpenMath / Lisp conversion functions.
  58. */
  59. extern OMdev om_toDev(Lisp_Object obj);
  60. extern Lisp_Object om_fromDev(OMdev dev);
  61. extern OMstatus om_toStatus(Lisp_Object obj);
  62. extern Lisp_Object om_fromStatus(OMstatus status);
  63. extern OMencodingType om_toEncodingType(Lisp_Object obj);
  64. extern Lisp_Object om_fromEncodingType(OMencodingType enc);
  65. extern char * om_toBigNumStr(Lisp_Object obj);
  66. extern Lisp_Object om_fromBigNumStr(char *data, int len, int sign, OMbigIntType fmt);
  67. extern OMconn om_toConn(Lisp_Object obj);
  68. extern Lisp_Object om_fromConn(OMconn conn);
  69. extern char ** om_toCString(Lisp_Object obj);
  70. extern Lisp_Object om_fromCString(char **str);
  71. extern Lisp_Object om_lispStringFromCString(Lisp_Object cstr);
  72. extern Lisp_Object om_cStringFromLispString(Lisp_Object lstr);
  73. /*
  74. * OpenMath Device manipulation functions.
  75. */
  76. extern Lisp_Object MS_CDECL om_openFileDev(Lisp_Object env, int nargs, ...);
  77. extern Lisp_Object om_openStrDev(Lisp_Object env, Lisp_Object lstr, Lisp_Object lenc);
  78. extern Lisp_Object om_closeDev(Lisp_Object env, Lisp_Object dev);
  79. /*
  80. * OpenMath Connection manipulation functions.
  81. */
  82. extern Lisp_Object om_makeConn(Lisp_Object nil, Lisp_Object ltimeout);
  83. extern Lisp_Object om_closeConn(Lisp_Object nil, Lisp_Object lconn);
  84. extern Lisp_Object om_getConnInDev(Lisp_Object nil, Lisp_Object lconn);
  85. extern Lisp_Object om_getConnOutDev(Lisp_Object nil, Lisp_Object lconn);
  86. /*
  87. * OpenMath client/server functions.
  88. */
  89. extern Lisp_Object MS_CDECL om_connectTCP(Lisp_Object nil, int nargs, ...);
  90. extern Lisp_Object om_bindTCP(Lisp_Object nil, Lisp_Object lconn, Lisp_Object lport);
  91. /* TODO: prototypes for the other functions from OMconn.h */
  92. /*
  93. * OpenMath Device input / output functions.
  94. */
  95. extern Lisp_Object om_putApp(Lisp_Object nil, Lisp_Object ldev);
  96. extern Lisp_Object om_putEndApp(Lisp_Object nil, Lisp_Object ldev);
  97. extern Lisp_Object om_putAtp(Lisp_Object nil, Lisp_Object ldev);
  98. extern Lisp_Object om_putEndAtp(Lisp_Object nil, Lisp_Object ldev);
  99. extern Lisp_Object om_putAttr(Lisp_Object nil, Lisp_Object ldev);
  100. extern Lisp_Object om_putEndAttr(Lisp_Object nil, Lisp_Object ldev);
  101. extern Lisp_Object om_putBind(Lisp_Object nil, Lisp_Object ldev);
  102. extern Lisp_Object om_putEndBind(Lisp_Object nil, Lisp_Object ldev);
  103. extern Lisp_Object om_putBVar(Lisp_Object nil, Lisp_Object ldev);
  104. extern Lisp_Object om_putEndBVar(Lisp_Object nil, Lisp_Object ldev);
  105. extern Lisp_Object om_putError(Lisp_Object nil, Lisp_Object ldev);
  106. extern Lisp_Object om_putEndError(Lisp_Object nil, Lisp_Object ldev);
  107. extern Lisp_Object om_putObject(Lisp_Object nil, Lisp_Object ldev);
  108. extern Lisp_Object om_putEndObject(Lisp_Object nil, Lisp_Object ldev);
  109. extern Lisp_Object om_putInt(Lisp_Object nil, Lisp_Object ldev, Lisp_Object val);
  110. extern Lisp_Object om_putFloat(Lisp_Object nil, Lisp_Object ldev, Lisp_Object val);
  111. extern Lisp_Object om_putByteArray(Lisp_Object nil, Lisp_Object ldev, Lisp_Object val);
  112. extern Lisp_Object om_putVar(Lisp_Object nil, Lisp_Object ldev, Lisp_Object val);
  113. extern Lisp_Object om_putString(Lisp_Object nil, Lisp_Object ldev, Lisp_Object val);
  114. extern Lisp_Object om_putSymbol(Lisp_Object nil, Lisp_Object ldev, Lisp_Object val);
  115. extern Lisp_Object MS_CDECL om_putSymbol2(Lisp_Object nil, int nargs, ...);
  116. extern Lisp_Object om_getApp(Lisp_Object nil, Lisp_Object ldev);
  117. extern Lisp_Object om_getEndApp(Lisp_Object nil, Lisp_Object ldev);
  118. extern Lisp_Object om_getAtp(Lisp_Object nil, Lisp_Object ldev);
  119. extern Lisp_Object om_getEndAtp(Lisp_Object nil, Lisp_Object ldev);
  120. extern Lisp_Object om_getAttr(Lisp_Object nil, Lisp_Object ldev);
  121. extern Lisp_Object om_getEndAttr(Lisp_Object nil, Lisp_Object ldev);
  122. extern Lisp_Object om_getBind(Lisp_Object nil, Lisp_Object ldev);
  123. extern Lisp_Object om_getEndBind(Lisp_Object nil, Lisp_Object ldev);
  124. extern Lisp_Object om_getBVar(Lisp_Object nil, Lisp_Object ldev);
  125. extern Lisp_Object om_getEndBVar(Lisp_Object nil, Lisp_Object ldev);
  126. extern Lisp_Object om_getError(Lisp_Object nil, Lisp_Object ldev);
  127. extern Lisp_Object om_getEndError(Lisp_Object nil, Lisp_Object ldev);
  128. extern Lisp_Object om_getObject(Lisp_Object nil, Lisp_Object ldev);
  129. extern Lisp_Object om_getEndObject(Lisp_Object nil, Lisp_Object ldev);
  130. extern Lisp_Object om_getInt(Lisp_Object nil, Lisp_Object ldev);
  131. extern Lisp_Object om_getFloat(Lisp_Object nil, Lisp_Object ldev);
  132. extern Lisp_Object om_getByteArray(Lisp_Object nil, Lisp_Object ldev);
  133. extern Lisp_Object om_getVar(Lisp_Object nil, Lisp_Object ldev);
  134. extern Lisp_Object om_getString(Lisp_Object nil, Lisp_Object ldev);
  135. extern Lisp_Object om_getSymbol(Lisp_Object nil, Lisp_Object ldev);
  136. extern Lisp_Object om_getType(Lisp_Object nil, Lisp_Object ldev);
  137. extern Lisp_Object om_stringToStringPtr(Lisp_Object nil, Lisp_Object lstr);
  138. extern Lisp_Object om_stringPtrToString(Lisp_Object nil, Lisp_Object lpstr);
  139. #endif /* header_openmath_h */
  140. /* end of openmath.h */