gpt4 book ai didi

java - 痛饮 : How to rename generated Java code according to a regex?

转载 作者:行者123 更新时间:2023-11-28 02:56:51 26 4
gpt4 key购买 nike

我使用 Swig 从 C/C++ 代码生成 Java 代码。

我得到了很多非人类可读的类,有点像“SWIG_p_f_p_......”,等等。

但是,我需要我最终生成的类遵守一些命名规则。

例如:

SWIG_p_f_p_ 应该被删除并替换为某种PointerOn...

此外,在 C++ 代码中有一个后缀(不是由 SWIG 生成),它是 FFE_ 用于许多方法,我需要将其删除。

我在 SWIG 的文档中发现有这个重命名和使用正则表达式的例子:

%rename("%(regex:/^([A-Z][a-z]+)+_(.*)/\\2/)s", %$isenumitem) "";

但我真的不知道如何适应我的情况。

此外,我的界面 (*.i) 的内容是这样的:

%module FfeFooJava
%{
#include "foo.h"
}
// some typemaps here that use some C++ classes and C structures having suffix FFE
//.....

%include "foo.h"

我在哪里可以添加重命名指令??

备注:

我试过这条指令:

%rename("%(regex:/^(FFE_)(.*)/\\2/)s") "";

它甚至改变了一些字符串值。例如字符串 "FFE_OK" 变成了 "OK"。所以我想知道是否可以在 C++ 类或结构或其他方面应用命名规则,这有助于我排除字符串修改。

非常感谢!

最佳答案

我不精通 SWIG,但我对正则表达式有一些了解。

试试这个正则表达式:

%(regex:/SWIG_p_f_p_([A-Za-z\\d_]+)/PointerOn\\1/)

描述

     SWIG_p_f_p_([A-Za-z\\d_]+)
^ ^
| |
| |
| |
Generated prefix |
|
Character class allowing upper/lower cased letters,
underscores, and digits inside class names.

关于java - 痛饮 : How to rename generated Java code according to a regex?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21783689/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com