-(mm-define-method entity-body-start ((entity generic))
- (mime-entity-set-body-start-internal
- entity
- (save-excursion
- (set-buffer (mime-entity-buffer entity))
- (mime-entity-body-start-internal entity)
- )))
-
-(mm-define-method entity-body-end ((entity generic))
- (mime-entity-set-body-end-internal
- entity
- (save-excursion
- (set-buffer (mime-entity-buffer entity))
- (point-max)
- )))
-
-(mm-define-method entity-point-min ((entity generic))
- (or (mime-entity-header-start-internal entity)
- (mime-entity-send entity 'entity-header-start)))
-
-(mm-define-method entity-point-max ((entity generic))
- (or (mime-entity-body-end-internal entity)
- (mime-entity-send entity 'entity-body-end)))
-
-(mm-define-method fetch-field ((entity generic) field-name)
- (save-excursion
- (set-buffer (mime-entity-buffer entity))
- (save-restriction
- (narrow-to-region (mime-entity-header-start-internal entity)
- (mime-entity-header-end-internal entity))
- (std11-fetch-field field-name)
- )))
-
-(mm-define-method entity-cooked-p ((entity generic)) nil)
-
-(mm-define-method entity-children ((entity generic))
- (let* ((content-type (mime-entity-content-type entity))
- (primary-type (mime-content-type-primary-type content-type)))
- (cond ((eq primary-type 'multipart)
- (mime-parse-multipart entity)
- )
- ((and (eq primary-type 'message)
- (memq (mime-content-type-subtype content-type)
- '(rfc822 news external-body)
- ))
- (mime-parse-encapsulated entity)
- ))
- ))
+(autoload 'mime-entity-content-type "mime")
+(autoload 'mime-parse-multipart "mime-parse")
+(autoload 'mime-parse-message "mime-parse")
+;; (autoload 'mime-parse-encapsulated "mime-parse")
+;; (autoload 'mime-parse-external "mime-parse")
+(autoload 'mime-entity-content "mime")
+
+(eval-and-compile
+ (luna-define-class mime-entity ()
+ (location
+ content-type children parent
+ node-id
+ content-disposition encoding
+ ;; for other fields
+ original-header parsed-header))
+
+ (luna-define-internal-accessors 'mime-entity)
+ )