PsySystemDict.java

  1. package coneforest.psylla.core;

  2. import coneforest.psylla.runtime.*;
  3. import java.io.InputStreamReader;
  4. import java.io.OutputStreamWriter;

  5. @Type("systemdict")
  6. public final class PsySystemDict
  7.     extends PsyModule
  8. {
  9.     public PsySystemDict()
  10.         throws PsyUndefinedException
  11.     {
  12.         importOperators(
  13.                 PsyAdditive.class,
  14.                 PsyAppendable.class,
  15.                 PsyArray.class,
  16.                 PsyBitArray.class,
  17.                 PsyBitSet.class,
  18.                 PsyBitwise.class,
  19.                 PsyBlockingQueue.class,
  20.                 PsyBounded.class,
  21.                 PsyClearable.class,
  22.                 PsyCloseable.class,
  23.                 PsyComplex.class,
  24.                 PsyConcatenable.class,
  25.                 PsyCondition.class,
  26.                 PsyContext.class,
  27.                 PsyConvertableToInteger.class,
  28.                 PsyConvertableToIntegral.class,
  29.                 PsyConvertableToReal.class,
  30.                 PsyDict.class,
  31.                 PsyEvaluable.class,
  32.                 PsyFileReader.class,
  33.                 PsyFileSystem.class,
  34.                 PsyFileWriter.class,
  35.                 PsyFlushable.class,
  36.                 PsyFormalArray.class,
  37.                 PsyFormalDict.class,
  38.                 PsyFormalQueue.class,
  39.                 PsyFormalSet.class,
  40.                 PsyFormalStream.class,
  41.                 PsyIndexed.class,
  42.                 PsyIntegral.class,
  43.                 PsyLengthy.class,
  44.                 PsyLock.class,
  45.                 PsyLogical.class,
  46.                 PsyMatcher.class,
  47.                 PsyMultiplicative.class,
  48.                 PsyNumeric.class,
  49.                 PsyObject.class,
  50.                 PsyProc.class,
  51.                 PsyProcess.class,
  52.                 PsyRandom.class,
  53.                 PsyRange.class,
  54.                 PsyRational.class,
  55.                 PsyReadable.class,
  56.                 PsyReady.class,
  57.                 PsyRealNumeric.class,
  58.                 PsyRegExp.class,
  59.                 PsyResetable.class,
  60.                 PsyScalar.class,
  61.                 PsySequential.class,
  62.                 PsySet.class,
  63.                 PsyStream.class,
  64.                 PsyStreamable.class,
  65.                 PsyStringBuffer.class,
  66.                 PsyStringReader.class,
  67.                 PsyStringWriter.class,
  68.                 PsyTextual.class,
  69.                 PsyTime.class,
  70.                 PsyWritable.class
  71.             );

  72.         put("]", get("arraytomark"));
  73.         put(">", get("dicttomark"));
  74.         put(")", get("settomark"));
  75.         put("?", get("prettyprint"));
  76.         put("$error", new PsyDict());
  77.         put("(", PsyMark.MARK);
  78.         put("<", PsyMark.MARK);
  79.         put("[", PsyMark.MARK);
  80.         put("arguments", new PsyArray());
  81.         put("classpath", new PsyArray());
  82.         put("configdict", new PsyConfigDict());
  83.         put("eol", new PsyString(System.getProperty("line.separator")));
  84.         //put("errordict", new PsyErrorDict());
  85.         put("false", PsyBoolean.FALSE);
  86.         put("librarypath", new PsyArray());
  87.         put("mark", PsyMark.MARK);
  88.         put("mathE", PsyReal.E);
  89.         put("mathPI", PsyReal.PI);
  90.         put("mathI", PsyComplex.I);
  91.         put("maxinteger", PsyInteger.MAX_VALUE);
  92.         put("maxreal", PsyReal.MAX_VALUE);
  93.         put("mininteger", PsyInteger.MIN_VALUE);
  94.         put("minreal", PsyReal.MIN_VALUE);
  95.         put("nan", PsyReal.NAN);
  96.         put("null", PsyNull.NULL);
  97.         put("osarch", new PsyString(System.getProperty("os.arch")));
  98.         put("osname", new PsyString(System.getProperty("os.name")));
  99.         put("osversion", new PsyString(System.getProperty("os.version")));
  100.         put("processors", PsyInteger.of(Runtime.getRuntime().availableProcessors()));
  101.         put("product", new PsyString("Psylla"));
  102.         put("stderr", new PsyWriter(new OutputStreamWriter(System.err)));
  103.         put("stdin", new PsyReader(new InputStreamReader(System.in)));
  104.         put("stdout", new PsyWriter(new OutputStreamWriter(System.out)));
  105.         put("stdrandom", new PsyRandom());
  106.         put("true", PsyBoolean.TRUE);
  107.         put("username", new PsyString(System.getProperty("user.name")));
  108.         put("version", new PsyString(Version.getVersion()));
  109.     }
  110. }