(in-package :xmlisp2)

;; deserialization
(defgeneric handle-attribute-value (serializer attribute-name xml-value))
(defgeneric handle-subobject (serializer tag-name subobject))
(defgeneric handle-character-data (serializer character-data cdatap))
(defgeneric handle-processing-instruction (serializer target data))
(defgeneric handle-comment (serializer comment-data))

;; parsing (not generally needed)
(defgeneric parse-instance (source parent-object ns lname))
(defgeneric make-xml-tag-instance (parent uri lname)
  (:method (parent uri lname)
    (make-instance (find-xml-class uri lname))))
(defgeneric finished-parsing (serializer))

;;; serialization
(defgeneric serialize-slot-p (object slot-name))
(defgeneric serialize-as-attribute-p (object slot-name slot-type))
(defgeneric serialize-as-subelement-p (object slot-name slot-type))
(defgeneric serialize-xml-object (object sink))