この記事は2年以上前に書いたものです。
そのため情報が古い可能性があります。ご了承ください。m(_ _)m
そのため情報が古い可能性があります。ご了承ください。m(_ _)m
ソースコード整形ツールが欲しくて探してみたところ、いくつか発見。
| 名称 | 対象 | 備考 |
| indent | C | 説明サイト |
| astyle | C, C++, C#, Java | |
| GreatCode | C, C++, Java | バイナリが見つからなかったので、VC6でコンパイルしてみました。 GC.lzh(対象ソースコード) |
C++のソースが整形できるからastyleかGreatCodeのどっちかを使おうかなと。
shとかcshとかperlとかpythonとかも整形してくれるツールがあれば良いんだけどな。。。
GreatCodeを試してみたところ相当良さそう。
だけど、デストラクタの宣言が上手く認識してくれない。
(設定が不足しているだけかもしれないけど。)
class Base{
public:
Base();
~Base();
private:
int m;
};
↑このソースをGC.exeに食わせると・・・
class Base{ ←classとBaseの間が広い
{
public:
Base(void);
~ Base(void); ← チルダ(~)とBaseの間にスペースが・・・
private:
int m;
};
このままじゃC++のソースに使えないので、いろいろ試してみたところ、
どうも”-code_align_max_blanks-30″が影響しているらしい。
このオプションを無効にすることは出来なかったため、
-code_align_max_blanksをオフにすることが無理な(気がする)ので、
-code_align_max_blanks-1で試してみると
class Base{
{
public:
Base(void);
~ Base(void); ← チルダ(~)とBaseの間に1文字スペースが・・・
private:
int m;
};
結局チルダ(~)とBaseの間にはスペースが入ってしまう結果に。。。
ちゃんとGC.txtには書いてあるかもしれないけど、英語だし面倒なので、
ソース見て、それっぽいところを弄ってみました。
% diff grammar_decl.c.org grammar_decl.c
707c707,711
< pcur->IsType = 1;
---
>
> if(*pcur->pc_Value != '~')
> {
> pcur->IsType = 1;
> }
これでちゃんと行くようになったけど、他に影響がないかどうかは、ちゃんと試験(ry
class Base{
{
public:
Base(void);
~Base(void);
private:
int m;
};
一応、弄ったソースとバイナリを置いておきます。
grammar_decl.c
GC_20060902.lzh