Changeset 277


Ignore:
Timestamp:
Jan 13, 2004, 4:54:00 PM (21 years ago)
Author:
Gary Byers
Message:

TYPE-OF's a little closer to being right (checks for PROPERly-named classes.)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ccl/level-1/sysutils.lisp

    r239 r277  
    216216  (cond ((null form) 'null)
    217217        ((arrayp form) (describe-array form))
    218         (t (let ((class (class-of form)))
    219              (if (eq class *istruct-class*)
    220                (uvref form 0)
    221                (let ((name (class-name class)))
    222                  (if name
    223                    (if (eq name 'complex)
    224                      (cond ((floatp (realpart form)) '(complex float))
    225                            (t '(complex rational)))
    226                      name)
    227                    (%type-of form))))))))
     218        (t (let* ((class (class-of form))
     219                  (metaclass (class-of class)))
     220             (if (eq metaclass *istruct-class*)
     221               (uvref form 0)
     222               (if (or (typep metaclass 'standard-class)
     223                       (typep metaclass 'structure-class))
     224                 (let* ((class-name (class-name class)))
     225                   (if (eq class (find-class class-name nil))
     226                     class-name
     227                     class))
     228                 (%type-of form)))))))
    228229
    229230
Note: See TracChangeset for help on using the changeset viewer.