自动将通过值更改为通过引用

| 我有数百种功能,从手动Java到C ++端口。在结果c ++代码中,我希望将按值传递的参数更改为按引用传递的参数:
from:
void funcName1( Type1 t1, Type2 t2, int i);
to:
void funcName2( Type1& t1, Type2& t2, int i);
最好保留原始类型(例如int,float)不变。 是否有任何重构工具可以自动执行此过程?一些正则表达式的技巧吗? 或任何将可移植Java代码转换为C ++的工具?     
已邀请:
尝试创建2个正则表达式:
void\\s+\\w+\\(([^\\)]+))
([A-Z]\\w+)\\s+\\w+
从第一个匹配组1将为您提供:
 Type1 t1, Type2 t2, int i
针对此输出运行第二个,组1将是:
 Type
如果您使用的是Java,则可以使用以下方法快速进行转换:
Pattern p = Pattern.compile(\"(void\\\\s+\\\\w+\\\\s+\\)(([^\\\\)]+))\");
Pattern p2 = Pattern.compile(\"([A-Z]\\\\w+)(\\\\s+\\\\w+)\");
Matcher m = p.matcher(\"input.....\");

StringBuffer sb = new StringBuffer();
while(m.find()) {
   Matcher m2 = p2.matcher(m.group(0));

   StringBuffer sb2 = new StringBuffer();
   while(m2.find()) {
      m2.appendReplacement(sb2, \"$1&$2\")
   }
   m2.appendTail(sb2);

   m.appendReplacement(sb, \"$1(\"+sb2.toString()+\")\")
}
m.appendTail(sb);
    

要回复问题请先登录注册