+(luna-define-method elmo-msgdb-message-number ((msgdb modb-standard)
+ message-id)
+ (let ((ret (elmo-get-hash-val
+ message-id
+ (modb-standard-entity-map-internal msgdb))))
+ (if (eq 'autoload (car-safe ret))
+ ;; Not loaded yet but can return number.
+ (nth 1 ret)
+ (elmo-message-entity-number ret))))
+
+(luna-define-method elmo-msgdb-message-field ((msgdb modb-standard)
+ number field)
+ (let ((ret (elmo-get-hash-val
+ (modb-standard-key number)
+ (modb-standard-entity-map-internal msgdb))))
+ (if (and (eq 'autoload (car-safe ret)) (eq field 'message-id))
+ ;; Not loaded yet but can return message-id
+ (cdr (cdr ret))
+ (elmo-message-entity-field (elmo-msgdb-message-entity
+ msgdb (modb-standard-key number))
+ field))))
+
+(luna-define-method elmo-msgdb-message-entity ((msgdb modb-standard) key)
+ (when key
+ (modb-standard-message-entity
+ msgdb
+ (cond ((stringp key) key)
+ ((numberp key) (modb-standard-key key)))
+ 'autoload)))
+