操作
バグ #572
完了CompositeComponentView でポート状態(公開/非公開)を設定できないことがある。
ステータス:
終了
優先度:
通常
担当者:
-
対象バージョン:
-
開始日:
2009/04/24
期日:
進捗率:
100%
予定工数:
説明
- 現象
CompositeComponentView でポート状態(公開/非公開)を設定できないことがある。 - 再現手順
以下に再現手順を示します。(以下では controllerComponent と MotorComponent を使用します。)
手順 1:SensorComponent と MotorComponent を SystemDiagramEditor ドラッグ&ドロップします。
手順 2:SensorComponent をクリックし、ctrl を押しながら MotorComponent をクリックして複合化します。
( ポートは全て非公開。)
CompositeComponentView には 上から Sensor in,Sensor out,Motor in,Motor out と並びます。
手順 3:CompositeComponentView から Sensor in,Motor in,Motor out をチェックして「適用」ボタンをクリックします。
手順 4:SystemDiagramEditor でポートが公開されたことを確認して、CompositeComponentView から Sensor out をチェックして「適用」をおします。
手順 5: 複合コンポーネントの SystemDiagramEditor を開くと公開されていないポートが存在します。
匿名ユーザー さんが15年以上前に更新
- 原因:
periodicECOrganization::updateDelegatedPorts()で現在ポート状態とユーザが設定したポートを比較して非公開するポートと公開するポートを選定している。
ポート状態を比較する処理(std::set_difference) へ入力する現在ポート情報とユーザの設定値がそれぞれ vectorで定義されている。(oldPorts,newPorts)
それらが、sort されていなかったために、非公開するポートと公開するポートが正常に選定できず、また、_DEBUG_ ORDERが発生していた。
http://www.sgi.com/tech/stl/set_difference.html
- 対策:
oldPorts,newPorts をそれぞれ sort をしてから std::set_difference へ渡すように変更した。
操作