掲示板一覧   -   トピック一覧
   EA ソースコード生成・コード生成テンプレート
     VBのfriend


スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
sugimoto
投稿日時: 2007-4-6 18:12
EA Administrator
投稿: 1895

VBのfriend

○ご質問

VBのクラス/フォームメソッドに適用できるfriendキーワードをソースコード生成するには、
EA上でどのような設定をすればよいのでしょうか?

○回答

現状、EA にはfriendキーワードをソースコードに出力する設定はありません。

ステレオタイプやタグ付き値に、friend を示す独自の名前を設定し、
その名前が設定されている場合は、friend を出力するようにコード
生成テンプレートを編集する必要があります。

こちらは、機能追加要望として検討いたします。


○ご質問2

EAのダイアログの可視性に"Protected"が用意されているのですが、
これがFriendになるとちょうど良いように思います。

VBのFriendはPublic/Privateと同列に定義されており、可視性のひとつになっています。
逆にProtectedはVBではサポートされていないために、選択してコードを生成すると
コード表示したときにエラーが報告されます。

EAは既にVBのためのFriendを受け入れるスペースがあるがその表現が
間違っているだけ、のようにも思えます。


○回答2

現状は、可視性にPublic/Private/Protected が指定された場合は、
その表記のまま出力されるようになっています。

ご指摘いただいたように、VBでProtectedを出力しても、VBでサポート
されていないのですが、表示と出力が異なることによる混乱を防いで
いる面もございます。

先ほどの回答と似たような方法になりますが、可視性にProtectedが
指定された場合は、friendを出力するようにコード生成テンプレート
(VBのOperation Declarationテンプレート)を書き換えるという方法も
あります。



→ご質問いただいたユーザーの方が、以下のコード生成テンプレートを
 作成してくださいました。


0. 方針
・FriendがVBでは可視性として考えられている点と指定するときの手間が簡単に
 なるように可視性でProtectedが選択されている場合に"Friend"キーワードを
 可視性として生成する。
・一度生成してしまえば同期をとっても"Friend"キーワードは
 「その他の可視性」として"で表現され、データベース中には"Friend"
 キーワードがそのまま残るので以後の更新も問題なし。
 ただし、更新後の操作ダイアログの可視性は"Public"になってしまうので注意が必要。

1. %CONVERT_SCOPE(opScope)% を置き換えるために新しいテンプレートを作成。
 今回はOperation__ExtScopeとした。

2. Operation__ExtScopeの内容として以下のものを採用

$tmpScope=%CONVERT_SCOPE(opScope)%
%if classLanguage=="Visual Basic"%
%if $tmpScope=="Protected"%
Friend
%else%
$tmpScope
%endIf%
%else%
$tmpScope
%endIf%

3. Operation Declarationおよびステレオタイプの上書きテンプレートの必要なものに対して
 %CONVERT_SCOPE(opScope)%を%Operation__ExtScope%に置き換える作業を行う。

例: Operation Declaratoinのproperty letの新しい内容

%opTag:"Attribute"%
%PI=" "%

%Operation__ExtScope%

Property Let
%opName%(%list="Parameter" @separator=", "%)


何かのお役に立てれば幸いです。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ