JavascriptのオブジェクトとC++のオブジェクトをつなげてみる。
まともに使うとなるとやることはたくさんあるが、
最低限必要なものはわかった。
SetInternalFieldでJavascriptからは見えない、C++ポインタを設定するのがみそ。
main内で明示的に初期化と終了をしているのは、
main前後に持ってくると不都合な場合があるから。
listが自動開放になっているのは手抜きです。
メモリリークチェックしてないや。
コメントがないのは、わざとです。
2009年5月24日日曜日
2009年2月2日月曜日
DoxyComment
自分用のDLLを作成して、コメント生成をカスタマイズしました。
ICommentProviderを実装していけばよいです。
PropertyGridで設定できるようにしておけば、
IDEからのカスタマイズが可能です。
EnvDTEやVCCodeModelのドキュメントが少なかったり、
無いに等しいドキュメントだったりなのが辛いです。
namespace MyDoxyComment
{
[CommentProviderFriendlyName("My Provider")]
public class MyProvider : ICommentProvider
{
//VisualStudioのオプションで設定できるメンバ
//PropertyGridが使用される
private int _property1;
public int Property1
{
get;
set;
}
public string[] CreateFunctionComment(
Microsoft.VisualStudio.VCCodeModel.VCCodeFunction codeElem)
{
return new string[]{"hoge"};
}
}
}
ICommentProviderを実装していけばよいです。
PropertyGridで設定できるようにしておけば、
IDEからのカスタマイズが可能です。
EnvDTEやVCCodeModelのドキュメントが少なかったり、
無いに等しいドキュメントだったりなのが辛いです。
namespace MyDoxyComment
{
[CommentProviderFriendlyName("My Provider")]
public class MyProvider : ICommentProvider
{
//VisualStudioのオプションで設定できるメンバ
//PropertyGridが使用される
private int _property1;
public int Property1
{
get;
set;
}
public string[] CreateFunctionComment(
Microsoft.VisualStudio.VCCodeModel.VCCodeFunction codeElem)
{
return new string[]{"hoge"};
}
}
}
2009年1月13日火曜日
VisualStudioにDoxygenコメントを自動挿入
Doxygenなど、コメントの書式化とドキュメント生成ができるツールがないと
仕事も趣味もやっていられません。
少しでも作業能率を上げようと、今更ながら
Doxygenのページにも紹介されているDoxyCommentを導入します。
http://doxycomment.sourceforge.net/#introduction
やはり自分の書式とは違うため、デフォルトでは使いにくいです。
軽いオプション設定はVisualStudioのオプションに統合されるのですが、
コメントの位置やインデントの有無ぐらいでした。
コメント生成部はDLLになっており、自分用のコメント生成部を作成して
拡張してもらう作りになっていました。
手が空き次第、自分用のものを作成しないと
プログラマ用のツールなので、こういう拡張部分の公開の仕方は素敵です。
仕事も趣味もやっていられません。
少しでも作業能率を上げようと、今更ながら
Doxygenのページにも紹介されているDoxyCommentを導入します。
http://doxycomment.sourceforge.net/#introduction
やはり自分の書式とは違うため、デフォルトでは使いにくいです。
軽いオプション設定はVisualStudioのオプションに統合されるのですが、
コメントの位置やインデントの有無ぐらいでした。
コメント生成部はDLLになっており、自分用のコメント生成部を作成して
拡張してもらう作りになっていました。
手が空き次第、自分用のものを作成しないと
プログラマ用のツールなので、こういう拡張部分の公開の仕方は素敵です。
2009年1月3日土曜日
引数と渡し方
新年、初出社日用のネタのため、古い記憶を整理するため。
昔のノート等を引っ張り出すのが億劫ですので、
Wikipediaや他サイトを多分に参考にします。本来のBlogっぽい。
手続き型言語についてまとめます。関数型言語はもっとややこしいので
ここでは考えないことにします。
[仮引数と実引数]
仮引数は、サブルーチンの定義において、渡されるであろう値に
名前を付けたもの。
実引数は、サブルーチンの呼び出しにおいて、実際に渡される値。
[値渡し]
別の場所に変数値のコピーを作り、コピーをサブルーチンに渡す。
サブルーチン内で値を変更してもコピー元を持つサブルーチン
呼び出し側には影響がない。
採用している言語:C言語、Java
Javaについて参考:
http://java-house.jp/ml/archive/j-h-b/026214.html#body
参照型という”型”と参照渡しという”渡し方”を一緒にしてはいけない
というお話しともとれる。
[参照渡し]
変数への参照をサブルーチンに渡す。サブルーチンで引数の値を
変更すると呼び出し側の変数の値も変わる。
採用している言語:Fortran
サポートしている言語:Pascal、C++、C#
Pascalで、仮引数名の前にvarを付けると参照になります。
inとかoutとか付けていたように思っていたのは完全に記憶違いでした。
つまり、私が仮引数名にinとかoutとか付けていたのでした。
恥ずかしいですね。
C++では計算コストに成り得るコピーを削減するため参照渡しが使われる
ことが多い。その際、呼び出し側に影響を与えないことを宣言するため
constと併用されることもある。
[名前渡し]
ALGOLを知らないのでわからないです。
名前そのものを渡す。仮引数が参照されるたびに名前が評価され、
仮引数名と実引数名が置換される。
採用している言語:ALGOL
昔のノート等を引っ張り出すのが億劫ですので、
Wikipediaや他サイトを多分に参考にします。本来のBlogっぽい。
手続き型言語についてまとめます。関数型言語はもっとややこしいので
ここでは考えないことにします。
[仮引数と実引数]
仮引数は、サブルーチンの定義において、渡されるであろう値に
名前を付けたもの。
実引数は、サブルーチンの呼び出しにおいて、実際に渡される値。
[値渡し]
別の場所に変数値のコピーを作り、コピーをサブルーチンに渡す。
サブルーチン内で値を変更してもコピー元を持つサブルーチン
呼び出し側には影響がない。
採用している言語:C言語、Java
Javaについて参考:
http://java-house.jp/ml/archive/j-h-b/026214.html#body
参照型という”型”と参照渡しという”渡し方”を一緒にしてはいけない
というお話しともとれる。
[参照渡し]
変数への参照をサブルーチンに渡す。サブルーチンで引数の値を
変更すると呼び出し側の変数の値も変わる。
採用している言語:Fortran
サポートしている言語:Pascal、C++、C#
Pascalで、仮引数名の前にvarを付けると参照になります。
inとかoutとか付けていたように思っていたのは完全に記憶違いでした。
つまり、私が仮引数名にinとかoutとか付けていたのでした。
恥ずかしいですね。
C++では計算コストに成り得るコピーを削減するため参照渡しが使われる
ことが多い。その際、呼び出し側に影響を与えないことを宣言するため
constと併用されることもある。
[名前渡し]
ALGOLを知らないのでわからないです。
名前そのものを渡す。仮引数が参照されるたびに名前が評価され、
仮引数名と実引数名が置換される。
採用している言語:ALGOL
登録:
投稿 (Atom)