src/Pure/System/isabelle_charset.scala
changeset 43517 87ec9a1c0f98
child 44778 18b1ba7cfcfe
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Pure/System/isabelle_charset.scala	Thu Jun 23 10:58:29 2011 +0200
@@ -0,0 +1,50 @@
+/*  Title:      Pure/System/isabelle_charset.scala
+    Author:     Makarius
+
+Charset for Isabelle symbols.
+*/
+
+package isabelle
+
+import java.nio.Buffer
+import java.nio.{ByteBuffer, CharBuffer}
+import java.nio.charset.{Charset, CharsetDecoder, CharsetEncoder, CoderResult}
+import java.nio.charset.spi.CharsetProvider
+
+
+object Isabelle_Charset
+{
+  val name: String = "UTF-8-Isabelle-test"  // FIXME
+  lazy val charset: Charset = new Isabelle_Charset
+}
+
+
+class Isabelle_Charset extends Charset(Isabelle_Charset.name, null)
+{
+  override def contains(cs: Charset): Boolean =
+    cs.name.equalsIgnoreCase(Standard_System.charset_name) ||
+    Standard_System.charset.contains(cs)
+
+  override def newDecoder(): CharsetDecoder =
+    Standard_System.charset.newDecoder
+
+  override def newEncoder(): CharsetEncoder =
+    Standard_System.charset.newEncoder
+}
+
+
+class Isabelle_Charset_Provider extends CharsetProvider
+{
+  override def charsetForName(name: String): Charset =
+  {
+    if (name.equalsIgnoreCase(Isabelle_Charset.name)) Isabelle_Charset.charset
+    else null
+  }
+
+  override def charsets(): java.util.Iterator[Charset] =
+  {
+    import scala.collection.JavaConversions._
+    Iterator(Isabelle_Charset.charset)
+  }
+}
+