我正在为Free Pascal开发SWIG模块。 Pascal是不区分大小写的语言。符号名称不区分大小写。 两个不同的C名称(如AName和aName)将与Pascal中的ANAME相同。 我知道SWIG支持重载。但是,不区分大小写不会真正超负荷。 (顺便说一下Pascal支持自然重载。不需要重命名Pascal中的重载函数。)
我需要的是,对于C AName和aName,SWIG应该自动在Pascal中创建AName和aName_SWIG_1。
我目前的做法:
有更好的方法吗?
感谢?
答案 0 :(得分:0)
我修改了方法。它不是在相同的节点级别上扫描,而是扫描不区分大小写的cisymtab List,它是从symtab开始编写的。 cisymtab列表中包含同一symtab中的节点。 每个节点也通过以下属性添加: "帕斯卡:ciname" (大写的syn:名字); "帕斯卡:cinumber" (1,2 ......等)," pascal:cisuffix" (即" __ SWIG_1")
我知道它不是100%可靠。例如,可以在后代类中错误地命名被重写的虚拟方法。 可能是我将从这种自动CI解析中排除虚拟方法....
还有其他想法吗?