Next: Object Internals, Previous: Memory Usage, Up: GNU Emacs Internals [Contents][Index]
Lisp´ðËÜ´Ø¿ô¤Ï¡¢C¤Ç¼ÂÁõ¤·¤¿Lisp´Ø¿ô¤Ç¤¹¡£ Lisp¤«¤é¸Æ¤Ó½Ð¤¹¤¿¤á¤ÎC¤Î´Ø¿ô¤È¤Î¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤Î¾ÜºÙ¤Ï¡¢ ¿ô¸Ä¤ÎC¤Î¥Þ¥¯¥í¤Ç½èÍý¤·¤Æ¤¤¤Þ¤¹¡£ ¿·¤¿¤ËC¤Î¥³¡¼¥É¤ò½ñ¤¯ÊýË¡¤ò¤Û¤ó¤È¤¦¤ËÍý²ò¤¹¤ëÍ£°ì¤ÎÊýË¡¤Ï¡¢ ¥½¡¼¥¹¤òÆÉ¤à¤³¤È¤Ç¤¹¤¬¡¢¤³¤³¤Ç¤Ï¤½¤Î°ìÉô¤òÀâÌÀ¤·¤Þ¤¹¡£
¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥à¤ÎÎã¤Ï¡¢eval.c¤«¤é°úÍѤ·¤¿or
¤ÎÄêµÁ¤Ç¤¹¡£
¡ÊÉáÄ̤δؿô¤âƱ¤¸¤è¤¦¤Ë¸«¤¨¤ë¡£¡Ë
DEFUN ("or", For, Sor, 0, UNEVALLED, 0, "Eval args until one of them yields non-nil; return that value.\n\ The remaining args are not evalled at all.\n\
If all args return nil, return nil.") (args) Lisp_Object args; { register Lisp_Object val; Lisp_Object args_left; struct gcpro gcpro1;
if (NULL (args)) return Qnil; args_left = args; GCPRO1 (args_left);
do { val = Feval (Fcar (args_left)); if (!NULL (val)) break; args_left = Fcdr (args_left); } while (!NULL (args_left));
UNGCPRO; return val; }
¥Þ¥¯¥íDEFUN
¤Î°ú¿ô¤Î¾Ü¤·¤¤ÀâÌÀ¤«¤é»Ï¤á¤Þ¤¹¡£
¤½¤Î¿÷·¿¤Ï¤Ä¤®¤Î¤È¤ª¤ê¤Ç¤¹¡£
DEFUN (lname, fname, sname, min, max, interactive, doc)
´Ø¿ô̾¤È¤·¤ÆÄêµÁ¤¹¤ëLisp¥·¥ó¥Ü¥ë¤Î̾Á°¤Ç¤¢¤ë¡£
¾å¤ÎÎã¤Ç¤Ï¡¢or
¤Ç¤¢¤ë¡£
¤³¤Î´Ø¿ô¤ÎC¤Î´Ø¿ô¤È¤·¤Æ¤Î̾Á°¤Ç¤¢¤ë¡£
¤³¤Î´Ø¿ô¤òC¤Î¥³¡¼¥É¤«¤é¸Æ¤Ó½Ð¤¹¤È¤¤Ë»È¤¦Ì¾Á°¤Ç¤¢¤ë¡£
´·½¬¤Ë¤è¤ê¡¢Lisp¤Ç¤Î̾Á°¤Î¤Þ¤¨¤Ë‘F’¤òÉÕ¤±¤ë¤¬¡¢
Lisp¤Ç¤Î̾Á°¤Î¥À¥Ã¥·¥å¡Ê‘-’¡Ë¤Ï¤¹¤Ù¤Æ²¼Àþ¤ËÃÖ¤´¹¤¨¤ë¡£
¤·¤¿¤¬¤Ã¤Æ¡¢C¤Î¥³¡¼¥É¤«¤é¤³¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤Ë¤Ï¡¢For
¤ò¸Æ¤Ó½Ð¤¹¡£
°ú¿ô¤ÏLisp_Object
·¿¤Ç¤¢¤ëɬÍפ¬¤¢¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤Û¤·¤¤¡£
¥Õ¥¡¥¤¥ëlisp.h¤Ç¤Ï¡¢
Lisp_Object
·¿¤ÎÃͤòºîÀ®¤¹¤ë¤¿¤á¤Î¤µ¤Þ¤¶¤Þ¤Ê¥Þ¥¯¥í¤ä´Ø¿ô¤òÀë¸À¤·¤Æ¤¢¤ë¡£
¤³¤ì¤Ï¡¢Lisp¤Ç¤Î´Ø¿ô¤òɽ¸½¤¹¤ësubr¥ª¥Ö¥¸¥§¥¯¥È¸þ¤±¤Î¥Ç¡¼¥¿¤òÊÝ»ý¤¹¤ë ¹½Â¤ÂΤ˻Ȥ¦C¤ÎÊÑ¿ô̾¤Ç¤¢¤ë¡£ ¤³¤Î¹½Â¤ÂΤϡ¢¥·¥ó¥Ü¥ë¤òºîÀ®¤·¤½¤ÎÄêµÁ¤È¤·¤Æsubr¥ª¥Ö¥¸¥§¥¯¥È¤òÊݸ¤¹¤ë ½é´ü²½¥ë¡¼¥Æ¥£¥ó¤ØLisp¤Î¥·¥ó¥Ü¥ë̾¤ò±¿¤Ö¹½Â¤ÂΤǤ¢¤ë¡£ ´·½¬¤Ë¤è¤ê¡¢¤³¤Î̾Á°¤Ï¤Ä¤Í¤Ë fname¤Î‘F’¤ò‘S’¤ËÃÖ¤´¹¤¨¤¿¤â¤Î¤Ç¤¢¤ë¡£
´Ø¿ô¤¬É¬ÍפȤ¹¤ë°ú¿ô¤ÎºÇ¾®¤Î¸Ä¿ô¤Ç¤¢¤ë¡£
´Ø¿ôor
¤ÏºÇ¾®0¸Ä¤Î°ú¿ô¤òµö¤¹¡£
´Ø¿ô¤¬µö¤¹°ú¿ô¤ÎºÇÂç¤Î¸Ä¿ô¤ËÀ©¸Â¤¬¤¢¤ë¤È¤¤Î°ú¿ô¤ÎºÇÂç¤Î¸Ä¿ô¤Ç¤¢¤ë¡£
¤¢¤ë¤¤¤Ï¡¢É¾²Á¤·¤Æ¤¤¤Ê¤¤°ú¿ô¤ò¼õ¤±¼è¤ë¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥à¤Ç¤¢¤ë¤³¤È¤ò
ɽ¤¹UNEVALLED
¡¢
ɾ²ÁºÑ¤ß¤Î°ú¿ô¤ò²¿¸Ä¤Ç¤â¼õ¤±¼è¤ë¤³¤È¤òɽ¤¹MANY
¡Ê&rest
¤ËÅù²Á¡Ë¤Ç¤â¤è¤¤¡£
UNEVALLED
¤âMANY
¤â¥Þ¥¯¥í¤Ç¤¢¤ë¡£
max¤¬¿ô¤Ç¤¢¤ë¤È¤¤Ë¤Ï¡¢
¤½¤ì¤Ïmin¤è¤ê¾®¤µ¤¯¤Ê¤¯¡¢¤«¤Ä¡¢7¤è¤êÂ礤¯¤Ê¤¤¤³¤È¡£
¤³¤Î´Ø¿ô¤ÎÂÐÏûØÄê¤Ç¤¢¤ê¡¢
Lisp´Ø¿ô¤Ë¤ª¤¤¤Æinteractive
¤Î°ú¿ô¤Ë»È¤¦Ê¸»úÎó¤Ç¤¢¤ë¡£
or
¤Î¾ì¹ç¤Ë¤Ï0¡Ê¶õ¥Ý¥¤¥ó¥¿¡Ë¤Ç¤¢¤ê¡¢
or
¤ÏÂÐÏÃŪ¤Ë¸Æ¤Ó½Ð¤»¤Ê¤¤¤³¤È¤òɽ¤¹¡£
ÃÍ""
¤Ï¡¢ÂÐÏÃŪ¤Ë¸Æ¤Ó½Ð¤µ¤ì¤ë¤È
¤³¤Î´Ø¿ô¤Ï°ú¿ô¤ò¼õ¤±¼è¤é¤Ê¤¤¤³¤È¤òɽ¤¹¡£
ÀâÌÀʸ»úÎó¤Ç¤¢¤ë¡£ ³Æ¹ÔËö¤Ë‘\n\’¤È½ñ¤¯É¬Íפ¬¤¢¤ë¤³¤È¤ò½ü¤±¤Ð¡¢ Lisp¤ÇÄêµÁ¤¹¤ë´Ø¿ô¤ÎÀâÌÀʸ»úÎó¤Î¤è¤¦¤Ë½ñ¤¯¡£ ÆÃ¤Ë¡¢ºÇ½é¤Î¹Ô¤Ï1¤Ä¤Îʸ¤Ç¤¢¤ë¤³¤È¡£
¥Þ¥¯¥íDEFUN
¤Î¸Æ¤Ó½Ð¤·¤Î¤¢¤È¤Ë¤Ï¡¢
C¤Î´Ø¿ô¤Ëɬ¿Ü¤Ê°ú¿ô̾¤ÎʤӤò½ñ¤¡¢°ú¿ô¤ËÂФ¹¤ëÉáÄ̤ÎC¤ÎÀë¸À¤ò³¤±¤Þ¤¹¡£
°ú¿ô¤ÎºÇÂç¸Ä¿ô¤¬¸ÇÄꤵ¤ì¤Æ¤¤¤ë´Ø¿ô¤Ç¤Ï¡¢
³ÆLisp°ú¿ô¸þ¤±¤ËC¤Î°ú¿ôÀë¸À¤ò½ñ¤¡¢
¤½¤ì¤é¤ò¤¹¤Ù¤ÆLisp_Object
·¿¤Ë¤·¤Þ¤¹¡£
Lisp´Ø¿ô¤Ë°ú¿ô¤Î¸Ä¿ô¤Ë¾å¸Â¤¬¤Ê¤¤¤È¤¡¢
¤½¤ì¤ò¼ÂÁõ¤¹¤ëC¤Î´Ø¿ô¤Ï¼ÂºÝ¤Ë¤Ï2¤Ä¤Î°ú¿ô¤ò¼õ¤±¼è¤ê¤Þ¤¹¡£
Âè1°ú¿ô¤ÏLisp°ú¿ô¤Î¸Ä¿ô¤Ç¤¢¤ê¡¢
Âè2°ú¿ô¤Ï¤½¤ì¤é¤ÎÃͤò¼ý¤á¤¿¥Ö¥í¥Ã¥¯¤Î¥¢¥É¥ì¥¹¤Ç¤¹¡£
°ú¿ô¤Î·¿¤Ïint
¤ÈLisp_Object *
¤Ç¤¹¡£
´Ø¿ôFor
¼«¿È¤ÎÆâ¦¤Ç¤Ï¡¢
¥Þ¥¯¥íGCPRO1
¤ÈUNGCPRO
¤ò»È¤Ã¤Æ¤¤¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£
GCPRO1
¤Ï¡¢¥¬¥Ù¥Ã¥¸¥³¥ì¥¯¥·¥ç¥ó¤«¤éÊÑ¿ô¤ò¡ØÊݸî¡Ù¤¹¤ë¤¿¤á¤Ë»È¤¤¤Þ¤¹¡£
¤Ä¤Þ¤ê¡¢¥¬¥Ù¥Ã¥¸¥³¥ì¥¯¥¿¤ËÂФ·¤Æ¤³¤ÎÊÑ¿ô¤òÄ´¤Ù¤Æ¤½¤ÎÆâÍÆ¤ò
»²¾È²Äǽ¤Ê¥ª¥Ö¥¸¥§¥¯¥È¤È¤ß¤Ê¤¹¤è¤¦¤Ë»Ø¼¨¤·¤Þ¤¹¡£
Feval
¤äFeval
¤òľÀÜ¡¿´ÖÀÜŪ¤Ë¸Æ¤Ó½Ð¤¹¤â¤Î¤ò¸Æ¤Ö¤È¤¤Ë¤Ï¡¢
¤³¤Î¤è¤¦¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
¤½¤Î¤è¤¦¤Ê¾ìÌ̤Ǥϡ¢ºÆÅÙ»²¾È¤¹¤ë°Õ¿Þ¤¬¤¢¤ëǤ°Õ¤ÎLisp¥ª¥Ö¥¸¥§¥¯¥È¤Ï
Êݸ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
UNGCPRO
¤Ï¡¢¤³¤Î´Ø¿ô¤Ç¤ÎÊÑ¿ô¤ÎÊݸî¤ò¼è¤ê¾Ã¤·¤Þ¤¹¡£
¤³¤ì¤ÏÌÀ¼¨Åª¤Ë¹Ô¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
¤Û¤È¤ó¤É¤Î¥Ç¡¼¥¿·¿¤Ç¤Ï¡¢¾¯¤Ê¤¯¤È¤â¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î1¤Ä¤Î¥Ý¥¤¥ó¥¿¤ò Êݸ¤ì¤Ð½½Ê¬¤Ç¤¢¤ê¡¢¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ë½Û´Ä¤¬¤Ê¤¤¸Â¤ê¡¢ ¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î¤¹¤Ù¤Æ¤Î¥Ý¥¤¥ó¥¿¤ÏÀµ¤·¤¯Êݤ¿¤ì¤Þ¤¹¡£ ʸ»úÎó¤Ë¤Ï¤³¤ì¤Ï¤¢¤Æ¤Ï¤Þ¤ê¤Þ¤»¤ó¡£ ¥¬¥Ù¥Ã¥¸¥³¥ì¥¯¥¿¤¬¤½¤ì¤é¤ò°Üư¤¹¤ë¤«¤é¤Ç¤¹¡£ ¥¬¥Ù¥Ã¥¸¥³¥ì¥¯¥¿¤¬Ê¸»úÎó¤ò°Üư¤¹¤ë¤È¡¢ ¤½¤ì¤ËÂФ¹¤ë´ûÃΤΥݥ¤¥ó¥¿¤ò¤¹¤Ù¤ÆºÆÇÛÃÖ¤·¡¢ ¤½¤ì°Ê³°¤Î¥Ý¥¤¥ó¥¿¤ÏÉÔÀµ¤Ë¤Ê¤ê¤Þ¤¹¡£ ¤·¤¿¤¬¤Ã¤Æ¡¢¥¬¥Ù¥Ã¥¸¥³¥ì¥¯¥¿¤¬Æ°¤¯²ÄǽÀ¤Î¤¢¤ëǤ°Õ¤ÎÉôʬ¤Ç¤Ï¡¢ ʸ»úÎó¤Ø¤Î¤¹¤Ù¤Æ¤Î¥Ý¥¤¥ó¥¿¤òÊݸ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
¥Þ¥¯¥íGCPRO1
¤Ï1¤Ä¤Î¥í¡¼¥«¥ëÊÑ¿ô¤Î¤ß¤òÊݸ¤Þ¤¹¡£
2¤ÄÊݸ¤¿¤¤¾ì¹ç¤Ë¤Ï¤«¤ï¤ê¤ËGCPRO2
¤ò»È¤¤¤Þ¤¹¡£
GCPRO1
¤ò·«¤êÊÖ¤·¤Æ¤âƯ¤¤Þ¤»¤ó¡£
GCPRO3
¤äGCPRO4
¤Î¥Þ¥¯¥í¤â¤¢¤ê¤Þ¤¹¡£
¤³¤ì¤é¤Î¥Þ¥¯¥í¤Ïgcpro1
¤Ê¤É¤Î¥í¡¼¥«¥ëÊÑ¿ô¤ò°ÅÌۤΤ¦¤Á¤Ë»È¤¤¤Þ¤¹¤¬¡¢
ÆÉ¼Ô¤Ï¤³¤ì¤é¤ò·¿struct gcpro
¤ÇÌÀ¼¨Åª¤ËÀë¸À¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
¤·¤¿¤¬¤Ã¤Æ¡¢GCPRO2
¤ò»È¤¦¾ì¹ç¤Ë¤Ï¡¢
gcpro1
¤Ègcpro2
¤òÀë¸À¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
»Äǰ¤Ç¤¹¤¬¡¢¤³¤³¤Ç¤Ï¤¹¤Ù¤Æ¤Î¾ÜºÙ¤ÏÀâÌÀ¤·¤¤ì¤Þ¤»¤ó¡£
Emacs¤ò¤¤¤Ã¤¿¤ó¥À¥ó¥×¤·¤¿¤¢¤È¤Ç¤âÀÅۤ䥰¥í¡¼¥Ð¥ë¤ÊÊÑ¿ô¤Ë½ñ¤¹þ¤à¤Î¤Ç¤¢¤ì¤Ð¡¢ ¤½¤ì¤é¤ÎÊÑ¿ô¤Ë¤ÏC¤Î½é´ü²½¹½Ê¸¤ò»È¤Ã¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£ ½é´ü²½¹½Ê¸¤òȼ¤¦¤½¤ì¤é¤ÎÊÑ¿ô¤Ï¡¢Emacs¤ò¥À¥ó¥×¤¹¤ë¤È ¡Ê¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Ë¤è¤Ã¤Æ¤Ï¡Ë¤½¤Î·ë²Ì¤È¤·¤Æ ÆÉ¤ß½Ð¤·ÀìÍѤΥá¥â¥êÎΰè¤Ë³ä¤êÅö¤Æ¤é¤ì¤Þ¤¹¡£ See Pure Storage¡£
´Ø¿ô¤ÎÆâ¦¤Ç¤ÏÀÅŪÊÑ¿ô¤ò»È¤ï¤º¤Ë¡¢
¤¹¤Ù¤Æ¤ÎÀÅŪÊÑ¿ô¤Ï¥Õ¥¡¥¤¥ë¤Î¥È¥Ã¥×¥ì¥Ù¥ë¤ËÃÖ¤¤Þ¤¹¡£
¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Ë¤è¤Ã¤Æ¤Ï
Emacs¤Ï¥¡¼¥ï¡¼¥Éstatic
¤ò¶õ¤Î¥Þ¥¯¥í¤ÈÄêµÁ¤¹¤ë¤³¤È¤â¤¢¤ë¤Î¤Ç¡¢
¤³¤ì¤ÏɬÍפʤ³¤È¤Ê¤Î¤Ç¤¹¡£
¡Ê¤³¤Î¤è¤¦¤ÊÄêµÁ¤ò»È¤¦¤Î¤Ï¡¢¤½¤Î¤è¤¦¤Ê¥·¥¹¥Æ¥à¤Ï¡¢
½é´ü²½¹½Ê¸¤¬¤¢¤í¤¦¤È¤Ê¤«¤í¤¦¤ÈÀÅŪ¤ÈÀë¸À¤·¤¿ÊÑ¿ô¤ò
¥À¥ó¥×¸å¤Ë¤ÏÆÉ¤ß½Ð¤·ÀìÍѤˤ·¤Æ¤·¤Þ¤¦¤«¤é¤Ç¤¢¤ë¡£¡Ë
C¤Î´Ø¿ô¤òÄêµÁ¤·¤¿¤À¤±¤Ç¤ÏLisp´ðËÜ´Ø¿ô¤È¤·¤Æ¤Ï»È¤¨¤Þ¤»¤ó¡£ ´ðËÜ´Ø¿ô¤ËÂФ¹¤ëLisp¥·¥ó¥Ü¥ë¤òºîÀ®¤·¡¢ ¤½¤Î´Ø¿ô¥»¥ë¤ËŬÀÚ¤Êsubr¥ª¥Ö¥¸¥§¥¯¥È¤òÊݸ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ ¤½¤Î¥³¡¼¥É¤Ï¤Ä¤®¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
defsubr (&subr-structure-name);
¤³¤³¤Ç¡¢subr-structure-name¤ÏDEFUN
¤ÎÂè3°ú¿ô¤Ë»È¤Ã¤¿Ì¾Á°¤Ç¤¹¡£
¤¹¤Ç¤ËLisp´ðËÜ´Ø¿ô¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤Ë¿·¤¿¤Ê´ðËÜ´Ø¿ô¤òÄɲ乤ë¤È¤¤Ë¤Ï¡¢
¡Ê¥Õ¥¡¥¤¥ë¤ÎËöÈø¶á¤¯¤Ç¡Ësyms_of_something
¤È¤¤¤¦Ì¾Á°¤Î´Ø¿ô¤òõ¤·¡¢
¤½¤ì¤Ëdefsubr
¤Î¸Æ¤Ó½Ð¤·¤òÄɲä·¤Þ¤¹¡£
¥Õ¥¡¥¤¥ë¤Ë¤³¤Î´Ø¿ô¤¬¤Ê¤«¤Ã¤¿¤ê¡¢¿·¤¿¤Ê¥Õ¥¡¥¤¥ë¤òºîÀ®¤·¤¿¾ì¹ç¤Ë¤Ï¡¢
syms_of_filename
¡Ê¤¿¤È¤¨¤Ðsyms_of_myfile
¡Ë¤òÄɲä·¤Þ¤¹¡£
¤½¤·¤Æ¡¢¥Õ¥¡¥¤¥ëemacs.c¤Ç¤³¤ì¤é¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Æ¤¤¤ë²Õ½ê¤òõ¤·¤Æ¡¢
¤½¤³¤Ësyms_of_filename
¤Î¸Æ¤Ó½Ð¤·¤òÄɲä·¤Þ¤¹¡£
´Ø¿ôsyms_of_filename
¤Ï¡¢
LispÊÑ¿ô¤È¤·¤Æ¸«¤¨¤ëǤ°Õ¤ÎC¤ÎÊÑ¿ô¤òÄêµÁ¤¹¤ë¾ì½ê¤Ç¤â¤¢¤ê¤Þ¤¹¡£
DEFVAR_LISP
¤Ï¡¢Lisp¤«¤é¸«¤¨¤ëLisp_Object
·¿¤ÎC¤ÎÊÑ¿ô¤òºî¤ê¤Þ¤¹¡£
DEFVAR_INT
¤Ï¡¢Lisp¤«¤é¤Ï¤Ä¤Í¤ËÀ°¿ô¤òÃͤȤ·¤Æ¸«¤¨¤ë
int
·¿¤ÎC¤ÎÊÑ¿ô¤òºî¤ê¤Þ¤¹¡£
DEFVAR_BOOL
¤Ï¡¢Lisp¤«¤é¤Ït
¤«nil
¤òÃͤȤ·¤Æ¸«¤¨¤ë
int
·¿¤ÎC¤ÎÊÑ¿ô¤òºî¤ê¤Þ¤¹¡£
¥Õ¥¡¥¤¥ë¤À¤±¤Ë͸ú¤ÊLisp_Object
·¿¤ÎC¤ÎÊÑ¿ô¤òÄêµÁ¤·¤¿¾ì¹ç¤Ë¤Ï¡¢
¤Ä¤®¤Î¤è¤¦¤Ë¤·¤Æ¡¢syms_of_filename
¤ÎÃæ¤Çstaticpro
¤ò
¸Æ¤Ó½Ð¤·¤Æ¤½¤ÎÊÑ¿ô¤ò¥¬¥Ù¥Ã¥¸¥³¥ì¥¯¥·¥ç¥ó¤«¤éÊݸ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
staticpro (&variable);
¤Ä¤®¤Ï¡¢¾¯¡¹Ê£»¨¤Ê°ú¿ô¤ò¼è¤ëÊ̤δؿô¤ÎÎã¤Ç¤¹¡£ ¤³¤ì¤Ïwindow.c¤«¤é¼è¤Ã¤¿¤â¤Î¤Ç¡¢ ¥Þ¥¯¥í¤ÈLisp¥ª¥Ö¥¸¥§¥¯¥È¤òÁàºî¤¹¤ë´Ø¿ô¤Î»È¤¤Êý¤òÎ㼨¤·¤Þ¤¹¡£
DEFUN ("coordinates-in-window-p", Fcoordinates_in_window_p, Scoordinates_in_window_p, 2, 2, "xSpecify coordinate pair: \nXExpression which evals to window: ", "Return non-nil if COORDINATES is in WINDOW.\n\ COORDINATES is a cons of the form (X . Y), X and Y being distances\n\ ...
If they are on the border between WINDOW and its right sibling,\n\ `vertical-line' is returned.") (coordinates, window) register Lisp_Object coordinates, window; { int x, y;
CHECK_LIVE_WINDOW (window, 0); CHECK_CONS (coordinates, 1); x = XINT (Fcar (coordinates)); y = XINT (Fcdr (coordinates));
switch (coordinates_in_window (XWINDOW (window), &x, &y)) { case 0: /* NOT in window at all. */ return Qnil;
case 1: /* In text part of window. */ return Fcons (make_number (x), make_number (y));
case 2: /* In mode line of window. */ return Qmode_line;
case 3: /* On right border of window. */ return Qvertical_line;
default: abort (); } }
C¤Î¥³¡¼¥É¤Ç¤Ï¡¢´Ø¿ô¤¬C¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤¤¸Â¤ê¡¢
´Ø¿ô¤ò¤½¤Î̾Á°¤Ç¸Æ¤Ó½Ð¤»¤Ê¤¤¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£
Lisp¤Ç½ñ¤«¤ì¤¿´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹ÊýË¡¤Ï¡¢Lisp¤Î´Ø¿ôfuncall
¤ò
Æâ¢¤¹¤ëFfuncall
¤ò»È¤¦¤³¤È¤Ç¤¹¡£
Lisp´Ø¿ôfuncall
¤ÏǤ°Õ¸Ä¿ô¤Î°ú¿ô¤ò¼õ¤±ÉÕ¤±¤ë¤Î¤Ç¡¢
C¤Ç¤Ï2¤Ä¤Î°ú¿ô¡¢Lisp¥ì¥Ù¥ë¤Î°ú¿ô¤Î¸Ä¿ô¤È
¤½¤ì¤é¤ÎÃͤò¼ý¤á¤¿°ì¼¡¸µ¤ÎÇÛÎó¤ò¼õ¤±¼è¤ê¤Þ¤¹¡£
Lisp¥ì¥Ù¥ë¤ÎºÇ½é¤Î°ú¿ô¤Ï¸Æ¤Ó½Ð¤¹¤Ù¤Lisp´Ø¿ô¤Ç¤¢¤ê¡¢
»Ä¤ê¤Ï¤½¤ì¤ËÅϤ¹°ú¿ô¤Ç¤¹¡£
Ffuncall
¤Ï¥¨¥Ð¥ê¥å¥¨¡¼¥¿¤ò¸Æ¤Ó½Ð¤¹¤Î¤Ç¡¢
Ffuncall
¤ò¸Æ¤Ó½Ð¤¹¼þ¤ê¤Ç¤Ï¡¢
¥¬¥Ù¥Ã¥¸¥³¥ì¥¯¥·¥ç¥ó¤«¤é¥Ý¥¤¥ó¥¿¤òÊݸ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
C¤Î´Ø¿ô¡¢call0
¡¢call1
¡¢call2
¤Ê¤É¤Ï¡¢
¸ÇÄê¸Ä¿ô¤Î°ú¿ô¤ò¼õ¤±¼è¤ëLisp´Ø¿ô¤ò´ÊÊØ¤Ë¸Æ¤Ó½Ð¤¹¼ê·Ú¤ÊÊýË¡¤Ç¤¹¡£
¤³¤ì¤é¤ÏFfuncall
¤ò¸Æ¤Ó½Ð¤·¤ÆÆ°ºî¤·¤Þ¤¹¡£
eval.c¤ÏÎã¤òÄ´¤Ù¤ë¤Ë¤Ï¤È¤Æ¤â¤è¤¤¥Õ¥¡¥¤¥ë¤Ç¤¹¡£ lisp.h¤Ë¤Ï½ÅÍפʥޥ¯¥í¤ä´Ø¿ô¤ÎÄêµÁ¤¬Æþ¤Ã¤Æ¤¤¤Þ¤¹¡£
Next: Object Internals, Previous: Memory Usage, Up: GNU Emacs Internals [Contents][Index]