Changeset 8626


Ignore:
Timestamp:
02/23/05 14:31:54 (16 years ago)
Author:
piso
Message:

EXT:CHAR-TO-UTF8

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/j/src/org/armedbear/lisp/Primitives.java

    r8620 r8626  
    33 *
    44 * Copyright (C) 2002-2005 Peter Graves
    5  * $Id: Primitives.java,v 1.737 2005-02-21 18:08:55 piso Exp $
     5 * $Id: Primitives.java,v 1.738 2005-02-23 14:31:54 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    52265226    };
    52275227
     5228    // ### char-to-utf8 char => octets
     5229    private static final Primitive CHAR_TO_UTF8 =
     5230        new Primitive("char-to-utf8", PACKAGE_EXT, true)
     5231    {
     5232        public LispObject execute(LispObject arg) throws ConditionThrowable
     5233        {
     5234            final LispCharacter c;
     5235            try {
     5236                c = (LispCharacter) arg;
     5237            }
     5238            catch (ClassCastException e) {
     5239                return signal(new TypeError(arg, Symbol.CHARACTER));
     5240            }
     5241            char[] chars = new char[1];
     5242            chars[0] = c.value;
     5243            String s = new String(chars);
     5244            final byte[] bytes;
     5245            try {
     5246                bytes = s.getBytes("UTF8");
     5247            }
     5248            catch (java.io.UnsupportedEncodingException e) {
     5249                return signal(new LispError("UTF8 is not a supported encoding."));
     5250            }
     5251            LispObject[] objects = new LispObject[bytes.length];
     5252            for (int i = bytes.length; i-- > 0;) {
     5253                int n = bytes[i];
     5254                if (n < 0)
     5255                    n += 256;
     5256                objects[i] = new Fixnum(n);
     5257            }
     5258            return new SimpleVector(objects);
     5259        }
     5260    };
     5261
    52285262    static {
    52295263        new Primitives();
Note: See TracChangeset for help on using the changeset viewer.