Ignore:
Timestamp:
07/28/10 22:13:15 (13 years ago)
Author:
astalla
Message:

First stab at Java collections integration with the sequences protocol.

File:
1 edited

Legend:

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

    r12774 r12831  
    149149        method implementation)))))
    150150    lisp-this))
     151
     152(defun jequal (obj1 obj2)
     153  "Compares obj1 with obj2 using java.lang.Object.equals()"
     154  (jcall (jmethod "java.lang.Object" "equals" "java.lang.Object")
     155   obj1 obj2))
    151156
    152157(defun jobject-class (obj)
     
    364369             :java-class +java-lang-object+)))
    365370
     371(defun jclass-additional-superclasses (jclass)
     372  "Extension point to put additional CLOS classes on the CPL of a CLOS Java class."
     373  (let ((supers nil))
     374    (when (jclass-interface-p jclass)
     375      (push (find-class 'java-object) supers))
     376    (when (jequal jclass (jclass "java.util.List"))
     377      (push (find-class 'sequence) supers))
     378    supers))
     379
    366380(defun ensure-java-class (jclass)
    367381  (let ((class (%find-java-class jclass)))
     
    379393                 (list (jclass-superclass jclass))
    380394                 (jclass-interfaces jclass))))))
    381        (if (jclass-interface-p jclass)
    382            (append supers (list (find-class 'java-object)))
    383            supers))
     395       (append supers (jclass-additional-superclasses jclass)))
    384396     :java-class jclass)))))
    385397
Note: See TracChangeset for help on using the changeset viewer.