+@node Entity, Content-Type, How to use, Top
+@chapter Message \e$B$H\e(B Entity
+@cindex mime-entity
+@cindex entity
+
+RFC 2045 (@ref{RFC 2045}) \e$B$K$h$l$P!"!V\e(BEntity \e$B$H$$$&8l$O!"\e(Bmessage, \e$B$b$7$/\e(B
+\e$B$O!"\e(Bmultipart entity \e$B$N\e(B body \e$BCf$N#1$D$NItJ,$N!"\e(BMIME \e$B$GDj5A$5$l$?\e(B header
+field \e$B$HFbMF$r;X$9!W$H$J$C$F$$$^$9!#$3$3$G$O!"\e(BMIME \e$B$GDj5A$5$l$?\e(B header
+field \e$B0J30$NA4$F$N\e(B header \e$B$H\e(B body \e$B$r;X$98l$H$7$F\e(B @strong{entity}\e$B$rMQ$$$k\e(B
+\e$B$3$H$K$7$^$9!#\e(B@refill
+
+RFC 2045 \e$B$NDj5A$O!"\e(BMIME message \e$B$,\e(B entity \e$B$r@a$H$9$kLZ9=B$$G$"$k$3$H$r<(\e(B
+\e$B$7$F$$$^$9!#$D$^$j!"\e(BMIME \e$B$O\e(B message \e$B$rLZ9=B$$K3HD%$7$?Lu$G$9!#\e(B@refill
+
+FLIM \e$B$O\e(B entity \e$B$N>pJs$rI=8=$9$k$?$a$K\e(B@strong{mime-entity} \e$B9=\e(B
+\e$BB$BN$rMQ$$$^$9!#0J2<$G$OC1$K\e(B mime-entity \e$B$H8F$V$3$H$K$7$^$9!#\e(B
+
+
+@menu
+* Entity creation:: Entity \e$B$N@8@.\e(B
+* Entity hierarchy:: Entity \e$B3,AX\e(B
+* Entity Search:: Entity \e$B$N8!:w\e(B
+* Entity Attributes:: Entity \e$B$NB0@-\e(B
+* Entity-header:: Entity header \e$B$N>pJs\e(B
+* entity formatting:: Entity \e$B$NJ8;zI=8=\e(B
+* Entity-content:: Entity \e$B$NFbMF\e(B
+* Entity-network-representation:: Entity \e$B$N%M%C%H%o!<%/I=8=\e(B
+* Entity buffer:: Entity \e$B$N\e(B buffer \e$B$K$h$kI=8=\e(B
+* mm-backend:: Entity \e$B$NI=8=$H<B8=\e(B
+@end menu
+
+@node Entity creation, Entity hierarchy, Entity, Entity
+@section Entity \e$B$N@8@.\e(B
+
+@defun mime-open-entity &optional type location
+
+Open an entity and return it.@refill
+
+@var{type} is representation-type. (cf. @ref{mm-backend}) @refill
+
+@var{location} is location of entity. Specification of it is depended
+on representation-type.
+@end defun
+
+
+@defun mime-parse-buffer &optional buffer type
+
+@var{buffer} \e$B$r\e(B message \e$B$H$7$F9=J82r@O$7!"$=$N7k2L$N\e(B mime-entity \e$B$r\e(B
+@var{buffer} \e$B$N\e(B@code{mime-message-structure} \e$B$K3JG<$9$k!#\e(B@refill
+
+@var{buffer} \e$B$,>JN,$5$l$?>l9g!"8=:_$N\e(B buffer \e$B$r9=J82r@O$9$k!#\e(B@refill
+
+@var{type} \e$B$,;XDj$5$l$?>l9g!"$=$NCM$r@8@.$5$l$k\e(B mime-entity \e$B$NI=>]7?$H$7\e(B
+\e$B$FMQ$$$k!#>JN,$5$l$?>l9g$O\e(B @var{buffer} \e$B$H$J$k!#\e(B(cf. @ref{mm-backend})
+@end defun
+
+
+
+@node Entity hierarchy, Entity Search, Entity creation, Entity
+@section Entity \e$B3,AX\e(B
+@cindex node-id
+@cindex entity-number
+@cindex message
+@cindex root-entity
+
+MIME message \e$B$O\e(B entity \e$B$rC10L$H$9$kLZ9=B$$K$J$C$F$$$^$9!#\e(B@refill
+
+\e$B$3$NLZ$K$*$$$F:,$H$J$k@a$O\e(B message \e$BA4BN$rI=$9\e(B entity \e$B$G$9!#$3$3$G$O!"$3\e(B
+\e$B$l$r\e(B @strong{root-entity} \e$B$b$7$/$O\e(B@strong{message} \e$B$H8F$S$^$9!#\e(B@refill
+
+root-entity \e$B0J30$N\e(B entity \e$B$O?F$r;}$A$^$9!#$^$?!"\e(Bentity \e$B$O;R6!$r;}$D$+$b\e(B
+\e$BCN$l$^$;$s!#$3$N?F;R4X78$r9M$($k$3$H$G\e(B entity \e$B$NAjBP4X78$r07$&$3$H$,$G$-\e(B
+\e$B$^$9!#\e(B@refill
+
+\e$B0lJ}!"\e(Bentity \e$B$N\e(B message \e$B$K$*$1$k0LCV$r9M$($k$3$H$b$G$-$^$9!#\e(B@refill
+
+entity \e$B$O$3$NLZ$K$*$1$k@a$H$J$j$^$9$,!"$3$NLZ$K$O?<$5$HF1$8?<$5$NCf$N\e(B
+\e$B=gHV$K=>$C$FHV9f$,IU$1$k$3$H$,$G$-$^$9!#B($A!"\e(B
+@example
+
+ \e$B(#(!(!(!($\e(B
+ \e$B("\e(B nil \e$B("\e(B
+ \e$B(&(!(((!(%\e(B
+ \e$B(#(!(!(!(!(!(!(!(!(!(+(!(!(!(!(!(!(!(!(!($\e(B
+ \e$B(#(*($\e(B \e$B(#(*($\e(B \e$B(#(*($\e(B
+ \e$B("#0("\e(B \e$B("#1("\e(B \e$B("#2("\e(B
+ \e$B(&(((%\e(B \e$B(&(((%\e(B \e$B(&(((%\e(B
+ \e$B("\e(B \e$B(#(!(!(!(!(+(!(!(!(!($\e(B \e$B("\e(B
+ \e$B(#(!(*(!($(#(!(*(!($(#(!(*(!($(#(!(*(!($(#(!(*(!($\e(B
+ \e$B("\e(B \e$B#0\e(B.\e$B#0("("\e(B \e$B#1\e(B.\e$B#0("("\e(B \e$B#1\e(B.\e$B#1("("\e(B \e$B#1\e(B.\e$B#2("("\e(B \e$B#2\e(B.\e$B#0("\e(B
+ \e$B(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%\e(B
+@end example
+
+@noindent
+\e$B$N$h$&$K?<$5\e(B n \e$B$N@a$K$OD9$5\e(B n \e$B$N@0?tNs$N@aHV9f$,?6$l$^$9!#$3$l\e(B
+\e$B$r\e(B @strong{entity-number} \e$B$H8F$S$^$9!#\e(Bentity-number \e$B$O\e(B S \e$B<0$H\e(B
+\e$B$7$F$O\e(B @code{(1 2 3)} \e$B$N$h$&$J@0?t$N%j%9%H$H$7$FI=8=$5$l$^$9!#\e(B
+
+mime-entity \e$B$G$O!"$3$l$HF1MM$N\e(B @strong{node-id} \e$B$rMQ$$$^$9!#\e(Bnode-id \e$B$O$A$g\e(B
+\e$B$&$I\e(B entity-number \e$B$r5U$K$7$?%j%9%H$G!"\e(Bentity-number 1.2.3 \e$B$KBP1~$9$k\e(B
+node-id \e$B$O\e(B @code{(3 2 1)} \e$B$G$9!#\e(B@refill
+
+\e$BA0=R$N$h$&$K!"\e(BMIME message \e$B$O\e(B entity \e$B$rC10L$H$7$?LZ9=B$$K$J$C$F$$$k$N$G!"\e(B
+\e$B$3$N:,$G$"$k\e(B message \e$BA4BN$b\e(B mime-entity \e$B$GI=8=$9$k$3$H$,$G$-!"\e(Bbuffer
+local \e$BJQ?t\e(B @code{mime-message-structure} \e$B$K3JG<$9$k$3$H$K$7$^$9!#\e(B@refill
+
+@code{mime-message-structure} \e$B$r5/E@$K\e(B entity-number \e$B$d\e(B node-id
+\e$B$G<($5$l$k\e(B entity \e$B$r<h$j=P$9$3$H$,$G$-$^$9!#\e(B
+
+@defvar mime-message-structure
+
+\e$B8=:_$N\e(B buffer \e$B$K$*$1$k\e(B message \e$BA4BN$N\e(B mime-entity \e$B9=B$BN$r3JG<$9$k\e(Bbuffer
+local \e$BJQ?t!#\e(B
+@end defvar
+
+
+@defun mime-entity-children entity
+
+@var{entity} \e$B$K4^$^$l$k\e(B entity \e$B$N\e(B list \e$B$rJV$9!#\e(B
+@end defun
+
+
+@defun mime-entity-parent entity &optional message
+
+@var{entity} \e$B$N?F$N\e(B entity \e$B$rJV$9!#\e(B@refill
+
+@var{message} \e$B$,;XDj$5$l$?>l9g!"$3$l$r:,$H8+Jo$9!#\e(B
+@end defun
+
+
+@defun mime-root-entity-p entity
+
+@var{entity} \e$B$,:,!JB($A!"\e(Bmessage \e$BA4BN!K$G$"$k>l9g$K!"Hs\e(B-@code{nil} \e$B$rJV\e(B
+\e$B$9!#\e(B
+@end defun
+
+
+@defun mime-entity-node-id entity
+
+@var{entity} \e$B$N\e(B node-id \e$B$rJV$9!#\e(B
+@end defun
+
+
+@defun mime-entity-number entity
+
+@var{entity} \e$B$N\e(B entity-number \e$B$rJV$9!#\e(B
+@end defun
+
+
+
+@node Entity Search, Entity Attributes, Entity hierarchy, Entity
+@section Entity \e$B$N8!:w\e(B
+
+@defun mime-find-entity-from-number entity-number &optional message
+
+Return entity from @var{entity-number} in @var{message}.@refill
+
+If @var{message} is not specified, @code{mime-message-structure} is
+used.
+@end defun
+
+
+@defun mime-find-entity-from-node-id entity-node-id &optional message
+
+Return entity from @var{entity-node-id} in @var{message}.@refill
+
+If @var{message} is not specified, @code{mime-message-structure} is
+used.
+@end defun
+
+
+@defun mime-find-entity-from-content-id cid &optional message
+
+Return entity from @var{cid} in @var{message}.@refill
+
+If @var{message} is not specified, @code{mime-message-structure} is
+used.
+@end defun
+
+
+
+@node Entity Attributes, Entity-header, Entity Search, Entity
+@section Entity \e$B$NB0@-\e(B
+
+@defun mime-entity-content-type entity
+
+@var{entity} \e$B$N\e(B content-type \e$B$rJV$9!#\e(B(cf. @ref{mime-content-type})
+@end defun
+
+
+@defun mime-entity-content-disposition entity
+
+@var{entity} \e$B$N\e(B content-disposition \e$B$rJV$9!#\e(B
+(cf. @ref{mime-content-disposition})
+@end defun
+
+
+@defun mime-entity-filename entity
+
+@var{entity} \e$B$N\e(B file \e$BL>$rJV$9!#\e(B
+@end defun
+
+
+@defun mime-entity-encoding entity &optional default-encoding
+
+@var{entity} \e$B$N\e(B content-transfer-encoding \e$B$rJV$9!#\e(B
+(cf. @ref{Content-Transfer-Encoding}) @refill
+
+\e$B$b$7!"\e(B@var{entity} \e$B$K\e(B Content-Transfer-Encoding \e$BMs$,B8:_$7$J$$>l9g$O!"\e(B
+@var{default-encoding} \e$B$rJV$9!#$3$l$,;XDj$5$l$J$$>l9g$O!"\e(B@code{"7bit"}
+\e$B$rMQ$$$k!#\e(B
+@end defun
+
+
+@defun mime-entity-cooked-p entity
+
+Return non-nil if contents of @var{entity} has been already
+code-converted.
+@end defun
+
+
+
+@node Entity-header, entity formatting, Entity Attributes, Entity
+@section Entity header \e$B$N>pJs\e(B
+
+@defun mime-fetch-field field-name &optional entity
+
+@var{entity} \e$B$N\e(B header \e$BCf$N\e(B @var{field-name} \e$BMs$N\e(B body \e$B$rJV$9!#\e(B@refill
+
+\e$B7k2L$NJ8;zNs$O\e(B network \e$BI=8=$N$^$^$G$"$k!#\e(B@refill
+
+@var{entity} \e$B$,>JN,$5$l$?>l9g$O!"\e(B@code{mime-message-structure} \e$B$NCM$rMQ\e(B
+\e$B$$$k!#\e(B@refill
+
+@var{field-name} \e$BMs$,B8:_$7$J$$>l9g$O\e(B @code{nil} \e$B$rJV$9!#\e(B
+@end defun
+
+
+@defun mime-read-field field-name &optional entity
+
+@var{entity} \e$B$N\e(B header \e$BCf$N\e(B @var{field-name} \e$BMs$r9=J82r@O$7$?7k2L$rJV$9!#\e(B
+@refill
+
+\e$B7k2L$N7A<0$OMsKh$K0[$J$k!#Hs9=B$2=Ms$N>l9g$OJ8;zNs$rJV$7!"9=B$2=Ms$N>l9g\e(B
+\e$B$O$=$N7A<0$K=>$C$?\e(B list \e$B$rJV$9!#\e(B@refill
+
+\e$B7k2LCf$NJ8;zNs$O\e(B Emacs \e$B$NFbItI=8=$KJQ49$5$l$k!#\e(B@refill
+
+@var{entity} \e$B$,>JN,$5$l$?>l9g$O!"\e(B@code{mime-message-structure} \e$B$NCM$rMQ\e(B
+\e$B$$$k!#\e(B@refill
+
+@var{field-name} \e$BMs$,B8:_$7$J$$>l9g$O\e(B nil \e$B$rJV$9!#\e(B
+@end defun
+
+
+
+@node entity formatting, Entity-content, Entity-header, Entity
+@section Entity \e$B$NJ8;zI=8=\e(B
+
+@defun mime-insert-header entity &optional invisible-fields visible-fields
+
+\e$B8=:_0LCV$K\e(B @var{entity} \e$B$NI|9f$7$?\e(B header \e$B$rA^F~$9$k!#\e(B@refill
+
+@var{invisible-fields} \e$B$H\e(B @var{visible-fields} \e$B$O@55,I=8=$N\e(Blist \e$B$G!"$=$l\e(B
+\e$B$>$l!"I=<($7$?$/$J$$\e(B field \e$BL>$HI=<($7$?$$MsL>$rI=8=$7$?$b$N$G$"$k!#\e(B
+@refill
+
+@var{invisible-fields} \e$B$NMWAG$N$I$l$+$K\e(B match \e$B$7!"$+$D!"\e(B
+@var{visible-fields} \e$B$NMWAG$N$I$l$K$b\e(B match \e$B$7$J$$Ms$OI=<($5$l$J$$!#\e(B
+@refill
+
+encoded-word (@ref{encoded-word}) \e$B$OI|9f$5$l$k!#!X@8$NHs\e(B us-ascii \e$BJ8;z!Y\e(B
+\e$B$O\e(B @code{default-mime-charset} \e$B$H$7$F2r<a$5$l$k!#\e(B
+@end defun
+
+
+@defun mime-insert-text-content entity
+
+Insert before point a contents of @var{entity} as text entity.@refill
+
+Contents of the @var{entity} are decoded as MIME charset (@ref{MIME charset}). If the @var{entity} does not have charset parameter of
+Content-Type field, @code{default-mime-charset} is used as default
+value.
+@end defun
+
+
+@defvar default-mime-charset
+
+\e$BE,@Z$J\e(B MIME charset (@ref{MIME charset}) \e$B$,8+$D$+$i$J$+$C$?>l9g$KMQ$$$i\e(B
+\e$B$l$k\e(BMIME charset.@refill
+
+\e$BK\Mh$O\e(B APEL \e$B$NJQ?t$G$"$k!#\e(B
+@end defvar
+
+
+
+@node Entity-content, Entity-network-representation, entity formatting, Entity
+@section Entity \e$B$NFbMF\e(B
+
+@defun mime-entity-content entity
+
+@var{entity} \e$B$NFbMF$N\e(B byte \e$BNs$rJV$9!#\e(B
+@end defun
+
+
+@defun mime-insert-entity-content entity
+
+Insert content of @var{entity} at point.
+@end defun
+
+
+@defun mime-write-entity-content entity filename
+
+Write content of @var{entity} into @var{filename}.
+@end defun
+
+
+
+@node Entity-network-representation, Entity buffer, Entity-content, Entity
+@section Entity \e$B$N%M%C%H%o!<%/I=8=\e(B
+
+@defun mime-insert-entity entity
+
+Insert header and body of @var{entity} at point.
+@end defun
+
+
+@defun mime-write-entity entity filename
+
+Write representation of @var{entity} into @var{filename}.
+@end defun
+
+
+@defun mime-write-entity-body entity filename
+
+Write body of @var{entity} into @var{filename}.
+@end defun
+
+
+
+@node Entity buffer, mm-backend, Entity-network-representation, Entity
+@section Entity \e$B$N\e(B buffer \e$B$K$h$kI=8=\e(B
+
+@defun mime-entity-buffer entity
+
+@var{entity} \e$B$,B8:_$9$k\e(B buffer \e$B$rJV$9!#\e(B
+@end defun
+
+
+@defun mime-entity-point-min entity
+
+@var{entity} \e$B$,B8:_$9$k\e(B buffer \e$B$K$*$1$k!"\e(B@var{entity} \e$B$,@j$a$kNN0h$N@hF,\e(B
+\e$B0LCV$rJV$9!#\e(B
+@end defun
+
+
+@defun mime-entity-point-max entity
+
+@var{entity} \e$B$,B8:_$9$k\e(B buffer \e$B$K$*$1$k!"\e(B@var{entity} \e$B$,@j$a$kNN0h$NKvHx\e(B
+\e$B0LCV$rJV$9!#\e(B
+@end defun
+
+
+@defun mime-entity-header-start entity
+
+@var{entity} \e$B$,B8:_$9$k\e(B buffer \e$B$K$*$1$k!"\e(Bheader \e$B$,@j$a$kNN0h$N@hF,0LCV$r\e(B
+\e$BJV$9!#\e(B
+@end defun
+
+
+@defun mime-entity-header-end entity
+
+@var{entity} \e$B$,B8:_$9$k\e(B buffer \e$B$K$*$1$k!"\e(Bheader \e$B$,@j$a$kNN0h$NKvHx0LCV$r\e(B
+\e$BJV$9!#\e(B
+@end defun
+
+
+@defun mime-entity-body-start entity
+
+@var{entity} \e$B$,B8:_$9$k\e(B buffer \e$B$K$*$1$k!"\e(Bbody \e$B$,@j$a$kNN0h$N@hF,0LCV$rJV\e(B
+\e$B$9!#\e(B
+@end defun
+
+
+@defun mime-entity-body-end entity
+
+@var{entity} \e$B$,B8:_$9$k\e(B buffer \e$B$K$*$1$k!"\e(Bbody \e$B$,@j$a$kNN0h$NKvHx0LCV$rJV\e(B
+\e$B$9!#\e(B
+@end defun
+
+
+
+@node mm-backend, , Entity buffer, Entity
+@section Entity \e$B$NI=8=$H<B8=\e(B
+@cindex mm-backend
+@cindex entity \e$B=hM}\e(B method
+@cindex representation-type
+
+Entity \e$B$OCj>]2=$5$l$?%G!<%?I=8=$G!"<B:]$N%G!<%?I=8=$H$7$F$OMQES$K1~$8$F\e(B
+\e$B$5$^$6$^$J$b$N$,MxMQ$G$-$k$h$&$K@_7W$5$l$F$$$^$9!#\e(B@refill
+
+\e$B$3$3$G!"\e(Bentity \e$B$,$I$&$$$&<oN`$NI=8=$r9T$C$F$$$k$+$r<($9$N$,\e(B
+@strong{representation-type} \e$B$G!"\e(Bentity \e$B$r@8@.$9$k;~$K$O$3$l$r;XDj$7$^$9!#\e(B
+(cf. @ref{Entity Creation}) @refill
+
+\e$BA0@a$^$G$K=R$Y$FMh$?\e(B entity \e$B$KBP$9$k=hM}$O!"\e(Bentity \e$B$KBP$7$F$=$N=hM}$r0M\e(B
+\e$BMj$9$k$3$H$K$h$C$F<B8=$5$l$F$$$^$9!#\e(BEntity \e$B$O<+J,$N\e(B representation-type
+\e$B$rCN$C$F$*$j!"$=$N\e(B representation-type \e$B$K1~$8$F<B:]$N=hM}$r9T$&4X?t$r8F\e(B
+\e$B$S=P$7$^$9!#$3$N$h$&$J4X?t$r\e(B @strong{entity \e$B=hM}\e(Bmethod} \e$B$H8F$S$^$9!#$^$?!"\e(B
+representation-type \e$BKh$K$3$N$h$&$J4X?t$r$^$H$a$?$b$N$r\e(B
+@strong{mm-backend} \e$B$H8F$S$^$9!#\e(B@refill
+
+mm-backend \e$B$O\e(B representation-type \e$B$NL>A0$N@hF,$K\e(B @code{mm} \e$B$H$$$&\e(B
+\e$B@\F,<-$rIU$1$?4X?tL>$+$i$J$k\e(B module \e$B$G!"$=$N\e(B module \e$BL>$OF1MM$K\e(B
+representation-type \e$B$NL>A0$N@hF,$K\e(B @code{mm} \e$B$rIU$1$?$b$N$K$J$C$F\e(B
+\e$B$$$^$9!#$3$N\e(B module \e$B$O\e(B representation-type \e$B$N\e(B entity \e$B$,:G=i$K@8@.$5$l$k\e(B
+\e$B;~$K<+F0E*$K\e(B require \e$B$5$l$^$9!#\e(B
+
+
+@menu
+* Request for entity:: Entity \e$B$X$NJX$j\e(B
+* mm-backend module:: mm-backend \e$B$N:n$jJ}\e(B
+@end menu
+
+@node Request for entity, mm-backend module, mm-backend, mm-backend
+@subsection Entity \e$B$X$NJX$j\e(B
+
+@defun mime-entity-send entity message &rest args
+
+@var{entity} \e$B$K\e(B @var{message} \e$B$rAw$k!#\e(B@refill
+
+@var{args} \e$B$O\e(B @var{message} \e$B$N0z?t$G$"$k!#\e(B
+@end defun
+
+
+
+@node mm-backend module, , Request for entity, mm-backend
+@subsection mm-backend \e$B$N:n$jJ}\e(B
+
+@defmac mm-define-backend type &optional parents
+
+Define @var{type} as a mm-backend.@refill
+
+If @var{PARENTS} is specified, @var{type} inherits parents. Each parent
+must be representation-type.@refill
+
+Example:@refill
+
+@lisp
+(mm-define-backend chao (generic))
+@end lisp
+@end defmac
+
+
+@defmac mm-define-method name args &rest body
+
+Define @var{name} as a method function of (nth 1 (car @var{args}))
+backend.@refill
+
+@var{args} is like an argument list of lambda, but (car @var{args}) must
+be specialized parameter. (car (car @var{args})) is name of variable
+and (nth 1 (car @var{args})) is name of backend
+(representation-type).@refill
+
+Example:@refill
+
+@lisp
+(mm-define-method entity-cooked-p ((entity chao)) nil)
+@end lisp
+@end defmac
+
+
+
+@node Content-Type, Content-Disposition, Entity, Top