)abbrev category OM OpenMath
++ Author: Mike Dewar & Vilya Harvey
++ Basic Functions: OMwrite
++ Related Constructors:
++ Also See:
++ AMS Classifications:
++ Keywords:
++ References:
++ Description:
++ \spadtype{OpenMath} provides operations for exporting an object
++ in OpenMath format.

OpenMath() : Category == with
  OMwrite  : % -> String
  ++ OMwrite(u) returns the OpenMath XML encoding of \spad{u} as a
  ++ complete OpenMath object.
  OMwrite  : (%, Boolean) -> String
  ++ OMwrite(u, true) returns the OpenMath XML encoding of \spad{u}
  ++ as a complete OpenMath object; OMwrite(u, false) returns the
  ++ OpenMath XML encoding of \spad{u} as an OpenMath fragment.
  OMwrite  : (OpenMathDevice, %) -> Void
  ++ OMwrite(dev, u) writes the OpenMath form of \spad{u} to the
  ++ OpenMath device \spad{dev} as a complete OpenMath object.
  OMwrite  : (OpenMathDevice, %, Boolean) -> Void
  ++ OMwrite(dev, u, true) writes the OpenMath form of \spad{u} to
  ++ the OpenMath device \spad{dev} as a complete OpenMath object;
  ++ OMwrite(dev, u, false) writes the object as an OpenMath fragment.
 add

    OMwrite(x : %) : String == OMwrite(x, true)

    OMwrite(dev : OpenMathDevice, x : %) : Void == OMwrite(dev, x, true)

    import from OpenMathEncoding

    OMwrite(x : %, wholeObj : Boolean) : String ==
        s : String := ""
        sp : None := OM_-STRINGTOSTRINGPTR(s)$Lisp
        dev : OpenMathDevice := OMopenString(sp pretend String,
                                             OMencodingXML())
        OMwrite(dev, x, wholeObj)
        OMclose(dev)
        s := OM_-STRINGPTRTOSTRING(sp)$Lisp pretend String
        s

--Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
--All rights reserved.
--
--Redistribution and use in source and binary forms, with or without
--modification, are permitted provided that the following conditions are
--met:
--
--    - Redistributions of source code must retain the above copyright
--      notice, this list of conditions and the following disclaimer.
--
--    - Redistributions in binary form must reproduce the above copyright
--      notice, this list of conditions and the following disclaimer in
--      the documentation and/or other materials provided with the
--      distribution.
--
--    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
--      names of its contributors may be used to endorse or promote products
--      derived from this software without specific prior written permission.
--
--THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
--IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
--TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
--PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
--OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
--EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
--PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
--PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
--LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
--NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
--SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
