ぬぉぉぉ、もう3時間経ってしまったのか! 時間の流れは早い…。 誰か咲夜さん呼んできてぇ〜
enum の値で switch したいことが時々あると思います。こんな感じ。
enum EHoge { HOGE_VALUE1, HOGE_VALUE2, HOGE_VALUE3, HOGE_MAX }; switch(eHoge) { case HOGE_VALUE1: 〜; break; case HOGE_VALUE2: 〜; break; case HOGE_VALUE3: 〜; break; }
こういうコードを描くとき、私は enum の要素をコピり、とりあえず switch の中に貼り付けます。 で、あとは、case HOGE_VALUE1: に展開できれば良いわけですが、手動でやるのはメンドクサイ。というわけで、マクロ書きました。こんなの。
Sub EnumToSwitch() DTE.ExecuteCommand("Edit.Replace") With DTE.Find .FindWhat = "^[\t ]*{:i},*{[\t ]*.*}" .ReplaceWith = "\tcase \1:\2;" .Target = vsFindTarget.vsFindTargetCurrentDocumentSelection .MatchCase = True .MatchWholeWord = True .MatchInHiddenText = False .PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxRegExpr .ResultsLocation = vsFindResultsLocation.vsFindResultsNone .Action = vsFindAction.vsFindActionReplaceAll .Execute() .PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxLiteral End With DTE.Windows.Item(Constants.vsWindowKindFindReplace).Close() End Sub
switch(eHoge) { HOGE_VALUE1, HOGE_VALUE2, HOGE_VALUE3, }
↑こんな switch 文の状態から置換えで来ます。 但し、実行するときは、選択範囲で囲う必要がありますので、ちょっと注意。
つか、その前に誰か使ってくれるんでしょーか?(ぉ