一些有效的IDL文件,构建为IDL项目并安装,但其部分或全部内容未出现在SCA Explorer / Target SDR / IDL存储库中。我相信用于在IDL存储库中构建树的IDL解析器与构建期间omniORB idl2cpp(omniidl)使用的ID不同,它拒绝一些有效的IDL。我发现的案例都使用了之前定义的const值。例如,
const算法ALG_NONE = 0 const算法ALG_LPC = ALG_NONE + 3
第二行可以出现在同一文件中,也可以出现在包含第一行文件的文件中。
如果第二行不在同一文件中,则接受包含第一行的文件,但拒绝包含第二行的文件,并且其内容不会出现在IDL存储库树中。它似乎拒绝在赋值语句的右侧显示为const的const。但是这些文件是有效的,并且omniidl认为它们是有效的。但它们不能在RedHawk中使用,因为它们不能被选择用于组件接口。
我不熟悉RedHawk IDE源代码或Eclipse插件,因此无法找到指定解析器语法的位置。我看到" eclipsecorba"出现在插件列表中,所以我假设RedHawk正在使用Eclipse CORBA插件(又名ECP),并且它的解析器是用于构建树的解析器。所以我怀疑解析器错误在该包中,而不是在RedHawk添加的代码中。
任何人都可以确认这一点并建议我在ECP代码中查看这个吗?我应该将此作为ECP错误报告给SourceForge上的ECP组吗?我不确定它是多么活跃,因为最新版本似乎是从2008年开始的。
答案 0 :(得分:2)
这似乎是IDL编辑器中的一个错误,你拥有的IDL是合法的。建议你向ECP报告,但鉴于该项目长期不活动,可能不会很快修复。我知道我们的Remedy IT工程师之一为Eclipse创建了一个更现代的IDL编辑器,但由于缺乏资金,这项工作无法公开发布。