[xyzzy:01854] 関数名の修飾について質問
- Subject: [xyzzy:01854] 関数名の修飾について質問
- From: "Hiroyasu Ohasi" <hohasi@xxxxxxxxxxxxxxxx>
- X-mailer: Microsoft Outlook Express 4.72.2106.4
xyzzy-MLのみなさん、こんにちわ。
vector.co.jpにftpをしてくれるフリーのDLLを見つけたのと、xyzzyからDLLを呼び出
す方法に興味があったので、コネクトしてディスコネクトするだけならすぐできるだ
ろうと思い、仕事中にもかかわらず、マクロしはじめてしまいました。今思えば、や
めておけばよかったです。
使用したDLLは「同期型FTPクライアントDLL Ver1.0」というsuekane@xxxxxxxxxxxx様
が公開されたものです。わたしが今日呼んでみたのはその内の3つの関数です。
INT WINAPI FtpConnect( LPCSTR lpcIpAddr, LPCSTR lpcUser, LPCSTR
lpcPass );
INT WINAPI FtpDisconnect( VOID );
INT WINAPI FtpGetCDURL( LPSTR lpDir );
下記は、わたしがちょっとだけと思って書いたソースです。ホントにちょっとだけで
おはずかしいのですが、根がにぶいせいか半日ぐらいつぶしてしまいました。
(eval-when (:compile-toplevel :load-toplevel :execute)
(require "foreign"))
(c:define-dll-entry c:int FtpConnect ((c:char *)(c:char *)(c:char *))
"FtpCnt")
(c:define-dll-entry c:int FtpDisconnect () "FtpCnt")
(c:define-dll-entry c:int FtpGetCDURL ((char *)) "FtpCnt")
(defun go-ftp ()
(let ((ip-addr-cstring (si:make-string-chunk "<サーバーのアドレス>"))
(user-cstring (si:make-string-chunk "<ユーザー名>"))
(pass-cstring (si:make-string-chunk "<パスワード>"))
(my-dir-cstring (si:make-chunk nil 256)))
(if (FtpConnect ip-addr-cstring user-cstring pass-cstring)
(progn
(msgbox "OK")
(if (FtpGetCDURL my-dir-cstring)
(msgbox (si:unpack-string my-dir-cstring 0))
)
(FtpDisconnect)
)
(msgbox "NG")
)
)
)
Pascal感覚でカッコだけの行が多い上に、前置きが長くなってすいません。やっと質
問にたどりつけました。
さて質問です。
●特定の関数名の前についている「si:」とか「c:」とかいう修飾子は何でしょう
か。
●パッケージという概念に関係があるんだと思いますが、どの関数の頭に何がつくの
かというのはどこを見ればわかるんでしょうか。
これだけわかったらLispの基礎から勉強しますので、(開いたことはありませんが、
ELispの本は2,3冊持っています。)、教えて下さい。よろしくお願いします。
大橋弘靖 <hohasi@xxxxxxxxxxxxxxxx>